From d70bed7f53c5f0524c77f6e630ae7f4b9f9ce7c7 Mon Sep 17 00:00:00 2001 From: Aaron Bauman Date: Sat, 2 Jun 2018 21:07:41 -0400 Subject: dev-libs/libressl: add build fix patch for hppa This patch addresses an issue found by the HPPA team and addressed by Sergei Trofimovich (slyfox). Closes: https://bugs.gentoo.org/656104 Package-Manager: Portage-2.3.40, Repoman-2.3.9 --- .../libressl/files/libressl-2.6.4-hppa-asm.patch | 62 ++++++++++++++++++++++ dev-libs/libressl/libressl-2.6.4.ebuild | 2 + 2 files changed, 64 insertions(+) create mode 100644 dev-libs/libressl/files/libressl-2.6.4-hppa-asm.patch (limited to 'dev-libs/libressl') diff --git a/dev-libs/libressl/files/libressl-2.6.4-hppa-asm.patch b/dev-libs/libressl/files/libressl-2.6.4-hppa-asm.patch new file mode 100644 index 000000000000..a0922af09612 --- /dev/null +++ b/dev-libs/libressl/files/libressl-2.6.4-hppa-asm.patch @@ -0,0 +1,62 @@ +From 787d8d240bbeaa812bcf37deeedb3c467be468a3 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich +Date: Sat, 19 May 2018 17:31:42 +0100 +Subject: [PATCH] __warn_references: tweak assembly for "gnu.warning" section + +On some targets ';' (like hppa) is treated as a comment +in assembly files. This occasionally causes the following +assembly failures: + +``` +Error: can't resolve `.gnu.warning.EVP_DecryptFinal' +{.gnu.warning.EVP_DecryptFinal section} - `.Ltext0' {.text section} +``` + +Note how branch (or other reference) attempts to cross the +boundary across two section types: '.text' and '.gnu.warning'. + +Tobias Ulmer notes that openbsd already uses newlines +for similar macro: + +https://github.com/openbsd/src/blob/master/sys/arch/hppa/include/cdefs.h + +This change switches from ';' to newline as well. +Tested on hppa2.0 and x86_64. + +Reported-by: Jeroen Roovers +Bug: https://bugs.gentoo.org/656104 +Signed-off-by: Sergei Trofimovich +--- + configure.ac | 2 +- + include/compat/sys/types.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b74b8a1..16ed825 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -91,7 +91,7 @@ AM_CONDITIONAL([HOST_CPU_IS_INTEL], [test "x$HOSTARCH" = "xintel"]) + AC_MSG_CHECKING([if .gnu.warning accepts long strings]) + AC_LINK_IFELSE([AC_LANG_SOURCE([[ + extern void SSLv3_method(); +-__asm__(".section .gnu.warning.SSLv3_method; .ascii \"SSLv3_method is insecure\" ; .text"); ++__asm__(".section .gnu.warning.SSLv3_method\n\t.ascii \"SSLv3_method is insecure\"\n\t.text"); + int main() {return 0;} + ]])], [ + AC_DEFINE(HAS_GNU_WARNING_LONG, 1, [Define if .gnu.warning accepts long strings.]) +diff --git a/include/compat/sys/types.h b/include/compat/sys/types.h +index 2107119..dec09e3 100644 +--- a/include/compat/sys/types.h ++++ b/include/compat/sys/types.h +@@ -62,7 +62,7 @@ typedef SSIZE_T ssize_t; + #if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG) + #define __warn_references(sym,msg) \ + __asm__(".section .gnu.warning." __STRING(sym) \ +- " ; .ascii \"" msg "\" ; .text"); ++ "\n\t.ascii \"" msg "\"\n\t.text"); + #else + #define __warn_references(sym,msg) + #endif +-- +2.17.0 + diff --git a/dev-libs/libressl/libressl-2.6.4.ebuild b/dev-libs/libressl/libressl-2.6.4.ebuild index 9aaf4681a71e..bc3550222a71 100644 --- a/dev-libs/libressl/libressl-2.6.4.ebuild +++ b/dev-libs/libressl/libressl-2.6.4.ebuild @@ -22,6 +22,8 @@ RDEPEND="!dev-libs/openssl:0" DEPEND="${RDEPEND}" PDEPEND="app-misc/ca-certificates" +PATCHES=( "${FILESDIR}/libressl-2.6.4-hppa-asm.patch" ) + src_prepare() { touch crypto/Makefile.in -- cgit v1.2.3-65-gdbad