This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Add another test for PR ld/18841
- From: H.J.Lu <hjl at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 18 Aug 2015 17:44:09 -0000
- Subject: [binutils-gdb] Add another test for PR ld/18841
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4e1626f5a8d73573d6cf593fabe5bc80f7b3e04e
commit 4e1626f5a8d73573d6cf593fabe5bc80f7b3e04e
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Tue Aug 18 10:43:19 2015 -0700
Add another test for PR ld/18841
PR ld/18841
* ld-ifunc/ifunc.exp: Add another test for PR ld/18841.
* ld-ifunc/pr18841c.c: New file.
Diff:
---
ld/testsuite/ChangeLog | 6 ++++++
ld/testsuite/ld-ifunc/ifunc.exp | 26 +++++++++++++++++++++-----
ld/testsuite/ld-ifunc/pr18841c.c | 17 +++++++++++++++++
3 files changed, 44 insertions(+), 5 deletions(-)
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index b8546d0..ce3b310 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,6 +1,12 @@
2015-08-18 H.J. Lu <hongjiu.lu@intel.com>
PR ld/18841
+ * ld-ifunc/ifunc.exp: Add another test for PR ld/18841.
+ * ld-ifunc/pr18841c.c: New file.
+
+2015-08-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/18841
* ld-ifunc/ifunc.exp: Add a test for PR ld/18841.
* ld-ifunc/pr18841.out: New file.
* ld-ifunc/pr18841a.c: Likewise.
diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
index b0f6de0..d3bebdd 100644
--- a/ld/testsuite/ld-ifunc/ifunc.exp
+++ b/ld/testsuite/ld-ifunc/ifunc.exp
@@ -473,12 +473,20 @@ run_cc_link_tests [list \
"libpr18808.so" \
] \
[list \
- "Build libpr18841.so" \
+ "Build libpr18841b.so" \
"-shared" \
"-fPIC -O0 -g" \
{ pr18841b.c } \
{} \
- "libpr18841.so" \
+ "libpr18841b.so" \
+ ] \
+ [list \
+ "Build libpr18841c.so" \
+ "-shared" \
+ "-fPIC -O0 -g" \
+ { pr18841c.c } \
+ {} \
+ "libpr18841c.so" \
] \
]
@@ -492,11 +500,19 @@ run_ld_link_exec_tests [] [list \
"pr18808.out" \
] \
[list \
- "Run pr18841" \
- "tmpdir/libpr18841.so" \
+ "Run pr18841 with libpr18841b.so" \
+ "tmpdir/libpr18841b.so" \
+ "" \
+ { pr18841a.c } \
+ "pr18841b" \
+ "pr18841.out" \
+ ] \
+ [list \
+ "Run pr18841 with libpr18841c.so" \
+ "tmpdir/libpr18841c.so" \
"" \
{ pr18841a.c } \
- "pr18841" \
+ "pr18841c" \
"pr18841.out" \
] \
]
diff --git a/ld/testsuite/ld-ifunc/pr18841c.c b/ld/testsuite/ld-ifunc/pr18841c.c
new file mode 100644
index 0000000..03a6354
--- /dev/null
+++ b/ld/testsuite/ld-ifunc/pr18841c.c
@@ -0,0 +1,17 @@
+void foo() __attribute__((ifunc("resolve_foo")));
+
+static void foo_impl() {}
+extern void zoo(void);
+void (*pz)(void) = zoo;
+
+void test()
+{
+ void (*pg)(void) = foo;
+ pg();
+}
+
+static void* resolve_foo()
+{
+ pz();
+ return foo_impl;
+}