This fixes the -static option when using lang/gcc for linking, at least on amd64 (I'm not sure about other platforms).
Before, gcc would emit both "-Bstatic" and "-dynamic-linker /usr/libexec/ld.so" to the linker, and llvm linker 8 would adopt static and ignore the -dynamic-linker option. llvm10 does both, and the resulting program fails with coredump and emitting a syslog message about bogus syscall. This fix changes the resulting link command to avoid the dynamic-linker option for static linking. Thanks also to [email protected] for help on the issue. John Index: Makefile =================================================================== RCS file: /cvs/ports/lang/gcc/8/Makefile,v retrieving revision 1.32 diff -u -p -r1.32 Makefile --- Makefile 8 Aug 2020 16:48:48 -0000 1.32 +++ Makefile 29 Aug 2020 18:22:39 -0000 @@ -16,7 +16,7 @@ USE_LLD = No DPB_PROPERTIES = parallel V = 8.3.0 -REVISION = 6 +REVISION = 7 FULL_VERSION = $V FULL_PKGVERSION = $V Index: patches/patch-gcc_config_i386_openbsdelf_h =================================================================== RCS file: /cvs/ports/lang/gcc/8/patches/patch-gcc_config_i386_openbsdelf_h,v retrieving revision 1.3 diff -u -p -r1.3 patch-gcc_config_i386_openbsdelf_h --- patches/patch-gcc_config_i386_openbsdelf_h 8 Aug 2020 16:48:48 -0000 1.3 +++ patches/patch-gcc_config_i386_openbsdelf_h 29 Aug 2020 18:22:39 -0000 @@ -1,5 +1,7 @@ $OpenBSD: patch-gcc_config_i386_openbsdelf_h,v 1.3 2020/08/08 16:48:48 sthen Exp $ +Test shared and static before adopting dynamic. + Index: gcc/config/i386/openbsdelf.h --- gcc/config/i386/openbsdelf.h.orig +++ gcc/config/i386/openbsdelf.h @@ -10,7 +12,7 @@ Index: gcc/config/i386/openbsdelf.h + %{rdynamic:-export-dynamic} \ %{assert*} \ - -dynamic-linker /usr/libexec/ld.so" -+ %{!shared:%{!-dynamic-linker:-dynamic-linker /usr/libexec/ld.so}} \ ++ %{!shared:%{!static:%{!-dynamic-linker:-dynamic-linker /usr/libexec/ld.so}}} \ + -L/usr/lib" #undef STARTFILE_SPEC
