Issue with LTO/-fwhole-program
Joern Rennecke
amylaar@spamcop.net
Fri Jun 11 17:31:00 GMT 2010
Quoting Jan Hubicka <hubicka@ucw.cz>:
> Perhaps we can somehow poison the object names that are brought
> local with -fwhole-program
> so linking explode, but I am not sure there is way to do so.
The linker will generally emit a diagnostic when the size or alignment
of a symbol increases, or the type changes.
Unfortunately, this makes the warnings dependent on the link order and type
of symbols; I see no way to make it warn about common symbols without
alignment which are linked after poisoned symbols.
[amylaar@meolyon symclash]$ tail a.c b.S c.c
==> a.c <==
int i;
char c;
==> b.S <==
.section .note.poison
.globl i
.type i, @function
i: .size i, 0
.globl c
.type c, @function
c: .size c, 43
==> c.c <==
int main ()
{
return 0;
}
[amylaar@meolyon symclash]$ gcc a.c b.S c.c --save-temps
/usr/bin/ld: Warning: alignment 1 of symbol `i' in b.o is smaller than
4 in a.o
/usr/bin/ld: Warning: type of symbol `i' changed from 1 to 2 in b.o
/usr/bin/ld: Warning: size of symbol `c' changed from 1 in a.o to 43 in b.o
/usr/bin/ld: Warning: type of symbol `c' changed from 1 to 2 in b.o
[amylaar@meolyon symclash]$ gcc b.S a.c c.c -Wall --save-temps
/usr/bin/ld: Warning: alignment 1 of symbol `i' in b.o is smaller than
4 in a.o
More information about the Gcc
mailing list