about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2022-11-08 20:56:59 -0800
committerFangrui Song <maskray@google.com>2022-11-08 20:56:59 -0800
commit2ae7990542e1955097aa21943e416dec70f867fa (patch)
treeed8363027c718acb05e3bb148e81da794ac821a3
parent52cf11004eb10f8ebbc193fbdf4094cfecb3dbff (diff)
downloadglibc-2ae7990542e1955097aa21943e416dec70f867fa.tar.gz
glibc-2ae7990542e1955097aa21943e416dec70f867fa.tar.xz
glibc-2ae7990542e1955097aa21943e416dec70f867fa.zip
Makerules: Generate shlib.lds with -fuse-ld=bfd
lld does not dump a linker script with --verbose (it does not use a
linker script driven design and lots of linker processing is not
serializable as a linker script anyway).  With the default
--with-default-link=no build, $@T is empty and makes `test -s $@T` fail.

Just dump the linker script with -fuse-ld=bfd.  lld since 15
(https://reviews.llvm.org/D124656) supports custom RELRO sections in the
GNU ld dumped linker script.

Reviewed-by: Sam James <sam@gentoo.org>
-rw-r--r--Makerules4
1 files changed, 3 insertions, 1 deletions
diff --git a/Makerules b/Makerules
index 09c0cf8357..a41491429e 100644
--- a/Makerules
+++ b/Makerules
@@ -546,14 +546,16 @@ endef
 
 ifeq (yes,$(use-default-link))
 # If the linker is good enough, we can let it use its default linker script.
+# In the long term the custom linker script will be removed.
 shlib-lds =
 shlib-lds-flags =
 else
 # binutils only position loadable notes into the first page for binaries,
 # not for shared objects
+# lld --verbose does not dump a linker script.  Use -fuse-ld=bfd.
 $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
 	$(LINK.o) -shared -Wl,-O1 \
-		  -nostdlib -nostartfiles \
+		  -nostdlib -nostartfiles -fuse-ld=bfd \
 		  $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \
 		  -Wl,--verbose 2>/dev/null | \
 	  sed > $@T \