gcc-nm behavior with -flto

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, I get some odd symbol types when using gcc-nm on an lto file.

Given the source file
	void text(void) {}
	int data = 1;
	int bss = 0;
	int common;

gcc -c test.c && gcc-nm test.o:
0000000000000000 B bss
0000000000000004 C common
0000000000000000 D data
0000000000000000 T text

gcc -flto -c test.c && gcc-nm test.o:
00000000 T bss
00000000 C common
00000000 T data
00000000 T text

gcc -flto -fno-common -c test.c && gcc-nm test.o:
00000000 T bss
00000000 T common
00000000 T data
00000000 T text

i.e. with LTO, .bss and .data symbols are shown as text symbols instead
by gcc-nm. This causes issues with configure scripts that use libtool
when the CFLAGS contain both -flto and -fno-common. There's a section in
the configure script that tries to figure out how to parse nm's output.
It compiles a source file that contains a common symbol and a function,
then parses nm output to create a second .c file with those
declarations, and tries to check that everything is working by linking
them together. In the -flto -fno-common case, the second file ends up
with both symbols turning into functions which then gives a link-time
error.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux