diff options
author | Florian Weimer <fweimer@redhat.com> | 2020-02-07 20:06:32 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2020-02-15 11:00:27 +0100 |
commit | abcc039d2e26b3c9c723d6419e086753a791b3d5 (patch) | |
tree | c092b4f52ce6517860f231671f67ade6db976d58 /elf/Makefile | |
parent | 9c7a58347b37065698106561f5c50010591f5194 (diff) | |
download | glibc-abcc039d2e26b3c9c723d6419e086753a791b3d5.tar.gz glibc-abcc039d2e26b3c9c723d6419e086753a791b3d5.tar.xz glibc-abcc039d2e26b3c9c723d6419e086753a791b3d5.zip |
elf: Introduce the rtld-stubbed-symbols makefile variable
This generalizes a mechanism used for stack-protector support, so that it can be applied to other symbols if required. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/elf/Makefile b/elf/Makefile index dfd43fb39b..ffc34a67d4 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -484,21 +484,25 @@ $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os) # are compiled with special flags, and puts these modules into rtld-libc.a # for us. Then we do the real link using rtld-libc.a instead of libc_pic.a. -# If the compiler can do SSP, build the mapfile with dummy __stack_chk_fail -# and __stack_chk_fail_local symbols defined, to prevent the real things -# being dragged into rtld even though rtld is never built with stack- -# protection. +# These symbols need to be stubbed out during symbol discovery because +# their implementation is provided differently in rtld, and the symbol +# discovery mechanism is not compatible with the libc implementation +# when compiled for libc. +rtld-stubbed-symbols = + +# The GCC arguments that implement $(rtld-stubbed-symbols). +rtld-stubbed-symbols-args = \ + $(patsubst %,-Wl$(comma)--defsym=%=0, $(rtld-stubbed-symbols)) ifeq ($(have-ssp),yes) -dummy-stack-chk-fail := -Wl,--defsym='__stack_chk_fail=0' \ - -Wl,--defsym='__stack_chk_fail_local=0' -else -dummy-stack-chk-fail := +# rtld is not built with the stack protector, so these references will +# go away in the rebuilds. +rtld-stubbed-symbols += __stack_chk_fail __stack_chk_fail_local endif $(objpfx)librtld.map: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a @-rm -f $@T - $(reloc-link) -o $@.o $(dummy-stack-chk-fail) \ + $(reloc-link) -o $@.o $(rtld-stubbed-symbols-args) \ '-Wl,-(' $^ -lgcc '-Wl,-)' -Wl,-Map,$@T rm -f $@.o mv -f $@T $@ |