[1/3] elf: Disable ifuncmain{1,5,5pic,5pie} when using LLD
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
Commit Message
These tests takes the address of a protected symbol (foo_protected)
and lld does not support copy relocations on protected data symbols.
Checked on x86_64-linux-gnu.
---
elf/Makefile | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
Comments
On 2021-10-26, Adhemerval Zanella wrote:
>These tests takes the address of a protected symbol (foo_protected)
>and lld does not support copy relocations on protected data symbols.
>
>Checked on x86_64-linux-gnu.
You may use some information from my previous reply
https://sourceware.org/pipermail/libc-alpha/2021-October/132292.html
to make a better commit message.
ifuncmain1.c and ifuncmain5.c take the address of the function `foo_protected`.
If compiled with -fno-pic, the produced relocation is R_X86_64_PC32.
Nowadays most GCC releases are configured with enable-default-pie and
therefore ifuncmain5.c is compiled with the implicit -fpie.
So I did not catch this issue.
Reviewed-by: Fangrui Song <maskray@google.com>
@@ -427,11 +427,14 @@ ifeq (yes,$(build-shared))
tests += tst-ifunc-fault-lazy tst-ifunc-fault-bindnow
# Note: sysdeps/x86_64/ifuncmain8.c uses ifuncmain8.
tests-internal += \
- ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
+ ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
ifuncmain1staticpic \
ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
- ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
+ ifuncmain5staticpic \
ifuncmain7 ifuncmain7pic
+ifeq (no,$(with-lld))
+tests-internal += ifuncmain1 ifuncmain5 ifuncmain5pic
+endif
ifeq (yes,$(have-gcc-ifunc))
tests-internal += ifuncmain9 ifuncmain9pic
endif
@@ -441,17 +444,23 @@ extra-test-objs += $(ifunc-test-modules:=.o)
test-internal-extras += $(ifunc-test-modules)
ifeq (yes,$(have-fpie))
ifunc-pie-tests = ifuncmain1pie ifuncmain1vispie ifuncmain1staticpie \
- ifuncmain5pie ifuncmain6pie ifuncmain7pie
+ ifuncmain6pie ifuncmain7pie
ifeq (yes,$(have-gcc-ifunc))
ifunc-pie-tests += ifuncmain9pie
endif
+ifeq (no,$(with-lld))
+ifunc-pie-tests += ifuncmain5pie
+endif
ifeq (yes,$(have-textrel_ifunc))
ifunc-pie-tests += tst-ifunc-textrel
endif
tests-internal += $(ifunc-pie-tests)
tests-pie += $(ifunc-pie-tests)
endif
-modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
+modules-names += ifuncmod1 ifuncmod3 ifuncmod6
+ifeq (no,$(with-lld))
+modules-names += ifuncmod5
+endif
endif
endif