From: H.J. Lu Date: Tue, 18 Aug 2015 17:43:19 +0000 (-0700) Subject: Add another test for PR ld/18841 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4e1626f5a8d73573d6cf593fabe5bc80f7b3e04e;p=binutils-gdb.git 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 --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index b8546d0b42a..ce3b310d348 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +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 diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp index b0f6de07a16..d3bebdd4072 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 00000000000..03a6354b4f9 --- /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; +}