[Bug lto/86490] New: lto1: fatal error: multiple prevailing defs
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Jul 11 15:57:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86490
Bug ID: 86490
Summary: lto1: fatal error: multiple prevailing defs
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
CC: marxin at gcc dot gnu.org
Target Milestone: ---
[hjl@gnu-cfl-1 pr23350]$ cat foo.c
int foo;
void bar() {}
[hjl@gnu-cfl-1 pr23350]$ cat bar.c
int foo;
void bar() {}
[hjl@gnu-cfl-1 pr23350]$ cat main.c
int foo;
int
main ()
{
return foo;
}
[hjl@gnu-cfl-1 pr23350]$ make CC=gcc
gcc -O2 -flto -c -o main.o main.c
gcc -O2 -flto -c -o foo.o foo.c
ar --plugin `gcc -print-prog-name=liblto_plugin.so` -rusc libfoo.a foo.o
gcc -O2 -flto -c -o bar.o bar.c
ar --plugin `gcc -print-prog-name=liblto_plugin.so` -rusc libbar.a bar.o
gcc -o x main.o libfoo.a libbar.a
lto1: fatal error: multiple prevailing defs for ‘bar’
compilation terminated.
lto-wrapper: fatal error: gcc returned 1 exit status
compilation terminated.
/usr/local/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
make: *** [Makefile:14: x] Error 1
[hjl@gnu-cfl-1 pr23350]$
Linker has:
if (!blhe)
{
/* The plugin is called to claim symbols in an archive element
from plugin_object_p. But those symbols aren't needed to
create output. They are defined and referenced only within
IR. */
switch (syms[n].def)
{
default:
abort ();
case LDPK_UNDEF:
case LDPK_WEAKUNDEF:
res = LDPR_UNDEF;
break;
case LDPK_DEF:
case LDPK_WEAKDEF:
case LDPK_COMMON:
res = LDPR_PREVAILING_DEF_IRONLY;
break;
}
goto report_symbol;
}
lto1 shouldn't issue
lto1: fatal error: multiple prevailing defs for ‘bar’
unless bar will be included in output.
More information about the Gcc-bugs
mailing list