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

Reply via email to