From b04a20f77fe3863931de273490d75371561d4e51 Mon Sep 17 00:00:00 2001 From: Thiago Jung Bauermann Date: Thu, 5 Aug 2021 13:19:43 -0300 Subject: gnu: gcc-5: Fix powerpc64le-linux build GCC 5 has a misaligned access to a vector pointer which causes a build failure when using GCC 8 and later. Backport upstream fix that was applied on the GCC 6 branch. * gnu/packages/gcc.scm (gcc-5)[source]: Apply gcc-5-fix-powerpc64le-build.patch. * gnu/packages/patches/gcc-5-fix-powerpc64le-build.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Signed-off-by: Maxim Cournoyer --- gnu/packages/gcc.scm | 4 +- .../patches/gcc-5-fix-powerpc64le-build.patch | 64 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/gcc-5-fix-powerpc64le-build.patch (limited to 'gnu/packages') diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 4a5f8f0886..1dab77d105 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -490,7 +490,9 @@ (define-public gcc-5 "gcc-5-source-date-epoch-2.patch" "gcc-6-libsanitizer-mode-size.patch" "gcc-fix-texi2pod.patch" - "gcc-5-hurd.patch")) + "gcc-5-hurd.patch" + ;; See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86162 + "gcc-5-fix-powerpc64le-build.patch")) (modules '((guix build utils))) (snippet gcc-canadian-cross-objdump-snippet))) (inputs diff --git a/gnu/packages/patches/gcc-5-fix-powerpc64le-build.patch b/gnu/packages/patches/gcc-5-fix-powerpc64le-build.patch new file mode 100644 index 0000000000..289d648875 --- /dev/null +++ b/gnu/packages/patches/gcc-5-fix-powerpc64le-build.patch @@ -0,0 +1,64 @@ +From ee6c0081c03330045b3d4cde8421cd1d3a459609 Mon Sep 17 00:00:00 2001 +From: Martin Liska +Date: Fri, 15 Jun 2018 10:51:28 +0200 +Subject: [PATCH] Partial backport r256656 + +2018-06-15 Martin Liska + + Backport from mainline + 2018-01-10 Kelvin Nilsen + + * lex.c (search_line_fast): Remove illegal coercion of an + unaligned pointer value to vector pointer type and replace with + use of __builtin_vec_vsx_ld () built-in function, which operates + on unaligned pointer values. + +From-SVN: r261621 +--- + +Obtained from: + +https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=ee6c0081c03330045b3d4cde8421cd1d3a459609 + +The libcpp/ChangeLog hunk was modified to apply on top of gcc-5's libcpp/ChangeLog. + + libcpp/ChangeLog | 12 ++++++++++++ + libcpp/lex.c | 2 +- + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog +index c920a05d438..a63abb04f5e 100644 +--- a/libcpp/ChangeLog ++++ b/libcpp/ChangeLog +@@ -1,3 +1,15 @@ ++2018-06-15 Martin Liska ++ ++ PR bootstrap/86162 ++ ++ Backport from mainline ++ 2018-01-10 Kelvin Nilsen ++ ++ * lex.c (search_line_fast): Remove illegal coercion of an ++ unaligned pointer value to vector pointer type and replace with ++ use of __builtin_vec_vsx_ld () built-in function, which operates ++ on unaligned pointer values. ++ + 2017-10-10 Release Manager + + * GCC 5.5.0 released. +diff --git a/libcpp/lex.c b/libcpp/lex.c +index e5a0397f309..b789686f1c4 100644 +--- a/libcpp/lex.c ++++ b/libcpp/lex.c +@@ -568,7 +568,7 @@ search_line_fast (const uchar *s, const uchar *end ATTRIBUTE_UNUSED) + { + vc m_nl, m_cr, m_bs, m_qm; + +- data = *((const vc *)s); ++ data = __builtin_vec_vsx_ld (0, s); + s += 16; + + m_nl = (vc) __builtin_vec_cmpeq(data, repl_nl); +-- +2.27.0 + -- cgit v1.2.3