Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <54089c13-88b2-6b8d-8e4a-b3e6b59075e3@darkkirb.de>
Date: Tue, 29 Dec 2020 12:56:53 +0100
From: Charlotte Delenk <darkkirb@...kkirb.de>
To: musl@...ts.openwall.com
Subject: [PATCH 1/2] Fix LTO shared library build on GCC and Clang

Both GCC and Clang are currently unable to compile the musl dynamic
library with link time optimizations enabled, due to them overzealously
removing certain symbols used on program start which they deem are not
necessary.

This patch adds new link flags to the libc.so link that tell the linker
that a symbol is used externally, so that code for these functions is
always emitted.
---
  Makefile | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/Makefile b/Makefile
index e8cc4436..15190fb9 100644
--- a/Makefile
+++ b/Makefile
@@ -131,6 +131,9 @@ $(CRT_OBJS): CFLAGS_ALL += -DCRT

  $(LOBJS) $(LDSO_OBJS): CFLAGS_ALL += -fPIC

+# Work around LTO compiler bugs
+lib/libc.so: CFLAGS_ALL += -u_dlstart_c -u__dls2 -u__dls2b -u__dls3 
-u__stack_chk_guard -u_start_c
+
  CC_CMD = $(CC) $(CFLAGS_ALL) -c -o $@ $<

  # Choose invocation of assembler to be used
-- 
2.29.2

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.