Comment 10 for bug 1570613

Revision history for this message
In , Acrsofter (acrsofter) wrote :

reproduce steps:

[foo.c]

int _umh(int i)
{
  return i+1;
}

int weaks(int i) __attribute__((weak, alias("_umh")));

int main()
{
 return weaks(10);
}

[bar.c]

int weaks(int i)
{
  return i+1;
}

now compile:

gcc -c bar.c

gcc -flto -c foo.c

gcc -flto -o elf bar.o foo.o

note:

bar compiled without flt
but rest with flt

now at linking stage booms
at line

 gcc_assert (c != SYMBOL_EXTERNAL
      && (c == SYMBOL_DUPLICATE || !symbol_partitioned_p (node)));

in lto/lto-partition.c

===============================================================

same code compiled without lto ok

gcc 4.9.3 not affected
but 5.3.0 affected and latest (gcc-6-20160214) affected