aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elfxx-x86.c3
-rw-r--r--ld/ChangeLog8
-rw-r--r--ld/testsuite/ld-ifunc/ifunc.exp22
-rw-r--r--ld/testsuite/ld-ifunc/pr23169a.c2
5 files changed, 18 insertions, 23 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ac18a85..dbb240a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2021-01-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/23169
+ * elfxx-x86.c (_bfd_x86_elf_link_fixup_ifunc_symbol): Don't
+ check pointer_equality_needed.
+
2021-01-15 H.J. Lu <hongjiu.lu@intel.com>
* elf-linker-x86.h (elf_linker_x86_params): Add
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 8cda8d2..93ad38c 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -1711,8 +1711,7 @@ _bfd_x86_elf_link_fixup_ifunc_symbol (struct bfd_link_info *info,
&& h->def_regular
&& h->dynindx != -1
&& h->plt.offset != (bfd_vma) -1
- && h->type == STT_GNU_IFUNC
- && h->pointer_equality_needed)
+ && h->type == STT_GNU_IFUNC)
{
asection *plt_s;
bfd_vma plt_offset;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 6e53414..8a20eba 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,11 @@
+2021-01-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/23169
+ * testsuite/ld-ifunc/ifunc.exp: Replace pr23169c.rd with
+ pr23169a.rd for pr23169c and pr23169f. Remove pr23169e tests.
+ * testsuite/ld-ifunc/pr23169a.c (foo): Don't compare function
+ address.
+
2021-01-15 H.J. Lu <hongjiu.lu@intel.com>
* NEWS: Mention -z report-relative-reloc.
diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
index 31666d0..9d3ace6 100644
--- a/ld/testsuite/ld-ifunc/ifunc.exp
+++ b/ld/testsuite/ld-ifunc/ifunc.exp
@@ -640,7 +640,7 @@ run_cc_link_tests [list \
"$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/libpr23169a.so" \
"-fPIE -O2 -g" \
{ pr23169b.c pr23169c.c } \
- {{readelf {--dyn-syms} pr23169c.rd} \
+ {{readelf {--dyn-syms} pr23169a.rd} \
{readelf {-r -W} pr23169b.rd}} \
"pr23169c" \
] \
@@ -654,20 +654,11 @@ run_cc_link_tests [list \
"pr23169d" \
] \
[list \
- "Build pr23169e" \
- "-pie -Wl,--no-as-needed,-z,now tmpdir/libpr23169b.so" \
- "-fPIE -O2 -g" \
- { pr23169b.c pr23169c.c } \
- {{readelf {--dyn-syms} pr23169c.rd} \
- {readelf {-r -W} pr23169b.rd}} \
- "pr23169e" \
- ] \
- [list \
"Build pr23169f" \
"$NOPIE_LDFLAGS -Wl,--no-as-needed,-z,now tmpdir/libpr23169b.so" \
"-fPIE -O2 -g" \
{ pr23169b.c pr23169c.c } \
- {{readelf {--dyn-syms} pr23169c.rd} \
+ {{readelf {--dyn-syms} pr23169a.rd} \
{readelf {-r -W} pr23169b.rd}} \
"pr23169f" \
] \
@@ -775,15 +766,6 @@ run_ld_link_exec_tests [list \
"$NOPIE_CFLAGS -O2 -g" \
] \
[list \
- "Run pr23169e" \
- "-pie -Wl,--no-as-needed,-z,now tmpdir/libpr23169b.so" \
- "" \
- { pr23169b.c pr23169c.c } \
- "pr23169e" \
- "pass.out" \
- "-fPIE -O2 -g" \
- ] \
- [list \
"Run pr23169f" \
"$NOPIE_LDFLAGS -Wl,--no-as-needed,-z,now tmpdir/libpr23169b.so" \
"" \
diff --git a/ld/testsuite/ld-ifunc/pr23169a.c b/ld/testsuite/ld-ifunc/pr23169a.c
index 02bf220..8beed28 100644
--- a/ld/testsuite/ld-ifunc/pr23169a.c
+++ b/ld/testsuite/ld-ifunc/pr23169a.c
@@ -4,6 +4,6 @@ extern int func (void);
void
foo (void)
{
- if (func_p != &func || func_p () != 0xbadbeef)
+ if (func () != 0xbadbeef || func_p () != 0xbadbeef)
__builtin_abort ();
}