Wed May 15 12:22:18 2024 UTC (32d)
lang/gcc12: undefined reference to `__stack_chk_fail_local' errors

* Patch from NetBSD src. Fix -fPIC/-fPIE and -fstack-protector-strong/
  -fstack-protector-all causes undefined reference to `__stack_chk_fail_local'.
* This fixes a build of misc/libreoffice under NetBSD/i386 9 at least.
* Bump PKGREVISION.


(ryoon)
diff -r1.8 -r1.9 pkgsrc/lang/gcc12/Makefile
diff -r1.5 -r1.6 pkgsrc/lang/gcc12/distinfo
diff -r0 -r1.1 pkgsrc/lang/gcc12/patches/patch-gcc_targhooks.cc

cvs diff -r1.8 -r1.9 pkgsrc/lang/gcc12/Makefile (expand / switch to unified diff)

--- pkgsrc/lang/gcc12/Makefile 2023/11/27 14:45:40 1.8
+++ pkgsrc/lang/gcc12/Makefile 2024/05/15 12:22:17 1.9
@@ -1,16 +1,17 @@ @@ -1,16 +1,17 @@
1# $NetBSD: Makefile,v 1.8 2023/11/27 14:45:40 jperkin Exp $ 1# $NetBSD: Makefile,v 1.9 2024/05/15 12:22:17 ryoon Exp $
2 2
3PKGNAME= ${GCC_PKGNAME}-${GCC12_DIST_VERSION} 3PKGNAME= ${GCC_PKGNAME}-${GCC12_DIST_VERSION}
 4PKGREVISION= 1
4## When bumping the PKGREVISION of this package the PKGREVISION of 5## When bumping the PKGREVISION of this package the PKGREVISION of
5## lang/gcc12-libs needs to be bumped to be at least 1 more than the 6## lang/gcc12-libs needs to be bumped to be at least 1 more than the
6## PKGREVISION of this package! 7## PKGREVISION of this package!
7COMMENT= The GNU Compiler Collection (GCC) - 12.0 Release Series 8COMMENT= The GNU Compiler Collection (GCC) - 12.0 Release Series
8 9
9LANGS= c 10LANGS= c
10 11
11.include "Makefile.common" 12.include "Makefile.common"
12 13
13# In some cases LINKER_RPATH_FLAG needs a trailing space. 14# In some cases LINKER_RPATH_FLAG needs a trailing space.
14LINKER_RPATH_FLAG:= ${LINKER_RPATH_FLAG:S/-rpath/& /} 15LINKER_RPATH_FLAG:= ${LINKER_RPATH_FLAG:S/-rpath/& /}
15 16
16LDFLAGS_FOR_TARGET= ${LDFLAGS:M-Wl,-z*} 17LDFLAGS_FOR_TARGET= ${LDFLAGS:M-Wl,-z*}

cvs diff -r1.5 -r1.6 pkgsrc/lang/gcc12/distinfo (expand / switch to unified diff)

--- pkgsrc/lang/gcc12/distinfo 2023/07/06 12:22:14 1.5
+++ pkgsrc/lang/gcc12/distinfo 2024/05/15 12:22:17 1.6
@@ -1,32 +1,33 @@ @@ -1,32 +1,33 @@
1$NetBSD: distinfo,v 1.5 2023/07/06 12:22:14 jperkin Exp $ 1$NetBSD: distinfo,v 1.6 2024/05/15 12:22:17 ryoon Exp $
2 2
3BLAKE2s (gcc-12.3.0.diff) = 0ec7a208da1a1297fb09b7b8cd50855d1fd7cefacc02610cd43525dee2d8b554 3BLAKE2s (gcc-12.3.0.diff) = 0ec7a208da1a1297fb09b7b8cd50855d1fd7cefacc02610cd43525dee2d8b554
4SHA512 (gcc-12.3.0.diff) = 21f9e9f1e9f59385876b1ffdab70fdd4d72d2a6cbbe5e9f68fafa0001d1daca25c6a825210fabd96f5a39a14d6649539b52d789427d64c7a050c3c10525ff054 4SHA512 (gcc-12.3.0.diff) = 21f9e9f1e9f59385876b1ffdab70fdd4d72d2a6cbbe5e9f68fafa0001d1daca25c6a825210fabd96f5a39a14d6649539b52d789427d64c7a050c3c10525ff054
5Size (gcc-12.3.0.diff) = 498388 bytes 5Size (gcc-12.3.0.diff) = 498388 bytes
6BLAKE2s (gcc-12.3.0.tar.xz) = 84d193401e32e82a0aa61bbfb4ddab2ed2e582b74502139dceb8173ea422f098 6BLAKE2s (gcc-12.3.0.tar.xz) = 84d193401e32e82a0aa61bbfb4ddab2ed2e582b74502139dceb8173ea422f098
7SHA512 (gcc-12.3.0.tar.xz) = 8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea783e80f01ec7bfbf912ca508e478bd749b2755c2c14e4055648146c204 7SHA512 (gcc-12.3.0.tar.xz) = 8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea783e80f01ec7bfbf912ca508e478bd749b2755c2c14e4055648146c204
8Size (gcc-12.3.0.tar.xz) = 85491976 bytes 8Size (gcc-12.3.0.tar.xz) = 85491976 bytes
9BLAKE2s (isl-0.16.1.tar.bz2) = 01c3fc657326e81414986eb7ede6f73e540b97009745ced125cdf7f4a8d80f61 9BLAKE2s (isl-0.16.1.tar.bz2) = 01c3fc657326e81414986eb7ede6f73e540b97009745ced125cdf7f4a8d80f61
10SHA512 (isl-0.16.1.tar.bz2) = c188667a84dc5bdddb4ab7c35f89c91bf15a8171f4fcaf41301cf285fb7328846d9a367c096012fec4cc69d244f0bc9e95d84c09ec097394cd4093076f2a041b 10SHA512 (isl-0.16.1.tar.bz2) = c188667a84dc5bdddb4ab7c35f89c91bf15a8171f4fcaf41301cf285fb7328846d9a367c096012fec4cc69d244f0bc9e95d84c09ec097394cd4093076f2a041b
11Size (isl-0.16.1.tar.bz2) = 1626446 bytes 11Size (isl-0.16.1.tar.bz2) = 1626446 bytes
12SHA1 (patch-fixincludes_inclhack.def) = 7b00974d3f52a8364190a607f52a5d7e8a6db41a 12SHA1 (patch-fixincludes_inclhack.def) = 7b00974d3f52a8364190a607f52a5d7e8a6db41a
13SHA1 (patch-gcc_Makefile.in) = c0f97c75ba1d37eae894141edd58bb36b734f651 13SHA1 (patch-gcc_Makefile.in) = c0f97c75ba1d37eae894141edd58bb36b734f651
14SHA1 (patch-gcc_config.gcc) = 260f187048260e539e928bb04594b6394bb03912 14SHA1 (patch-gcc_config.gcc) = 260f187048260e539e928bb04594b6394bb03912
15SHA1 (patch-gcc_config.host) = bf95dd21bfdf79d173e745fbd35c9bb99fdf4087 15SHA1 (patch-gcc_config.host) = bf95dd21bfdf79d173e745fbd35c9bb99fdf4087
16SHA1 (patch-gcc_config_aarch64_aarch64-netbsd.h) = abf19e2445bce1773162bddef16cd7f41eb36827 16SHA1 (patch-gcc_config_aarch64_aarch64-netbsd.h) = abf19e2445bce1773162bddef16cd7f41eb36827
17SHA1 (patch-gcc_config_arm_arm.h) = 9d554349869d67d6393552c33a7824f0dd53cb11 17SHA1 (patch-gcc_config_arm_arm.h) = 9d554349869d67d6393552c33a7824f0dd53cb11
18SHA1 (patch-gcc_config_arm_bpabi.h) = 0b0de5ad95442e34397cb46739ef6e36048d6f45 18SHA1 (patch-gcc_config_arm_bpabi.h) = 0b0de5ad95442e34397cb46739ef6e36048d6f45
19SHA1 (patch-gcc_config_arm_elf.h) = 57748157084319cb92d892f2ea5b2f3355567551 19SHA1 (patch-gcc_config_arm_elf.h) = 57748157084319cb92d892f2ea5b2f3355567551
20SHA1 (patch-gcc_config_arm_netbsd-eabi.h) = 85eb89de6f2e64fac50251f06d7e4eab35903dae 20SHA1 (patch-gcc_config_arm_netbsd-eabi.h) = 85eb89de6f2e64fac50251f06d7e4eab35903dae
21SHA1 (patch-gcc_config_arm_netbsd-elf.h) = 367d83c808fd7b5b1989d0490b532ad06b425b31 21SHA1 (patch-gcc_config_arm_netbsd-elf.h) = 367d83c808fd7b5b1989d0490b532ad06b425b31
22SHA1 (patch-gcc_config_nvptx_gen-opt.sh) = 67b8c84f198561c1d964a50946937a0a9cc26749 22SHA1 (patch-gcc_config_nvptx_gen-opt.sh) = 67b8c84f198561c1d964a50946937a0a9cc26749
23SHA1 (patch-gcc_configure) = f13d23c46315d18fdbc3bbbad26d0763e2b27690 23SHA1 (patch-gcc_configure) = f13d23c46315d18fdbc3bbbad26d0763e2b27690
 24SHA1 (patch-gcc_targhooks.cc) = 3bd54b7c3efc310aa2277f33cbd87b4a877cafea
24SHA1 (patch-isl_configure) = 5523c76d95b229b3cd25461b4c2b7af24bf2534e 25SHA1 (patch-isl_configure) = 5523c76d95b229b3cd25461b4c2b7af24bf2534e
25SHA1 (patch-libffi_configure) = 919bbe094e3ce547a0186eeaddb20a662595f79a 26SHA1 (patch-libffi_configure) = 919bbe094e3ce547a0186eeaddb20a662595f79a
26SHA1 (patch-libffi_testsuite_libffi.call_float2.c) = 89e2dd6aaf2c1f75726f02362d8a8bf7178694ea 27SHA1 (patch-libffi_testsuite_libffi.call_float2.c) = 89e2dd6aaf2c1f75726f02362d8a8bf7178694ea
27SHA1 (patch-libgcc_config.host) = d40d4d08c807eeff98cc246d1ea756b5b2c749b0 28SHA1 (patch-libgcc_config.host) = d40d4d08c807eeff98cc246d1ea756b5b2c749b0
28SHA1 (patch-libgcc_crtstuff.c) = a16d465039de00c195cf0694560140a9c38f3a25 29SHA1 (patch-libgcc_crtstuff.c) = a16d465039de00c195cf0694560140a9c38f3a25
29SHA1 (patch-libgfortran_io_io.h) = d44676239a7f45e42054d24bd5224f43c20055c0 30SHA1 (patch-libgfortran_io_io.h) = d44676239a7f45e42054d24bd5224f43c20055c0
30SHA1 (patch-libquadmath_printf_quadmath-printf.c) = 78e09f1e6d61ee57cee83275093cf46b2335d204 31SHA1 (patch-libquadmath_printf_quadmath-printf.c) = 78e09f1e6d61ee57cee83275093cf46b2335d204
31SHA1 (patch-libquadmath_strtod_strtod__l.c) = 6142c10d34174174cce7f06c37eab04dc431b2dc 32SHA1 (patch-libquadmath_strtod_strtod__l.c) = 6142c10d34174174cce7f06c37eab04dc431b2dc
32SHA1 (patch-libstdc++-v3_libsupc++_new__opa.cc) = 4183b00a5ee6e61524da4755c825a0c08fd01ed6 33SHA1 (patch-libstdc++-v3_libsupc++_new__opa.cc) = 4183b00a5ee6e61524da4755c825a0c08fd01ed6

File Added: pkgsrc/lang/gcc12/patches/patch-gcc_targhooks.cc
$NetBSD: patch-gcc_targhooks.cc,v 1.1 2024/05/15 12:22:18 ryoon Exp $

* Patch from NetBSD src. Fix -fPIC/-fPIE and -fstack-protector-strong/
  -fstack-protector-all causes undefined reference to `__stack_chk_fail_local'
  under NetBSD/i386 9 at least.

--- gcc/targhooks.cc.orig	2024-05-14 16:02:43.062711061 +0000
+++ gcc/targhooks.cc
@@ -961,7 +961,17 @@ default_hidden_stack_protect_fail (void)
       DECL_ARTIFICIAL (t) = 1;
       DECL_IGNORED_P (t) = 1;
       DECL_VISIBILITY_SPECIFIED (t) = 1;
+#if defined(__NetBSD__)
+      /*
+       * This is a hack:
+       * It appears that our gas does not generate @PLT for hidden
+       * symbols. It could be that we need a newer version, or that
+       * this local function is handled differently on linux.
+       */
+      DECL_VISIBILITY (t) = VISIBILITY_DEFAULT;
+#else
       DECL_VISIBILITY (t) = VISIBILITY_HIDDEN;
+#endif
 
       stack_chk_fail_decl = t;
     }