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 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
"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" \
] \
]
"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" \
] \
]
--- /dev/null
+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;
+}