old-cross-binutils/ld/testsuite/ld-plugin/pr12365a.c
H.J. Lu 60f7927512 Mark the plugin symbol undefined
LTO may optimize out a plugin symbol, which is also referenced by a
non-IR file.  When that happens, we should mark the plugin symbol
undefined.  It isn't the problem since LTO already determined the
symbols in the non-IR file aren't used.

bfd/

	PR ld/12365
	PR ld/14272
	* elflink.c (_bfd_elf_fix_symbol_flags): Mark the plugin symbol
	undefined if it is referenced from a non-IR file.

ld/testsuite/

	PR ld/12365
	* ld-plugin/pr12365a.c: New file.
	* ld-plugin/pr12365b.c: Likewise.
	* ld-plugin/pr12365c.c: Likewise.

	* ld-plugin/lto.exp (lto_link_tests): Prepare for the PR ld/12365
	test.
	Run the PR ld/12365 test.
2015-02-03 09:03:23 -08:00

25 lines
424 B
C

extern void abort(void);
extern void main_test (void);
extern void abort (void);
int inside_main;
int
main ()
{
inside_main = 1;
main_test ();
inside_main = 0;
return 0;
}
/* When optimizing, all the constant cases should have been
constant folded, so no calls to link_error should remain.
In any case, link_error should not be called. */
#ifndef __OPTIMIZE__
void
link_error (void)
{
abort ();
}
#endif