Saturday, August 29, 2020

lang/gcc: fix -static on amd64

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 didickman@gmail.com 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

No comments:

Post a Comment