Makerules: Generate shlib.lds with -fuse-ld=bfd
authorFangrui Song <maskray@google.com>
Wed, 9 Nov 2022 04:56:59 +0000 (20:56 -0800)
committerFangrui Song <maskray@google.com>
Wed, 9 Nov 2022 04:56:59 +0000 (20:56 -0800)
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>
Makerules

index 09c0cf8357310896c050234902025fa7da2566e1..a41491429eed0e4c58eff631b88d1f9df8cc5105 100644 (file)
--- 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 \