From 4e1626f5a8d73573d6cf593fabe5bc80f7b3e04e Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 18 Aug 2015 10:43:19 -0700 Subject: [PATCH] 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. --- 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(-) create mode 100644 ld/testsuite/ld-ifunc/pr18841c.c 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 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 + + 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; +} -- 2.7.4