--print-gc-sections + --verbose = mess
Denys Vlasenko
vda@google.com
Wed Sep 5 17:46:00 GMT 2007
ld version 2.18 introduced --print-gc-sections, and it seems
to have problem coexisting with --verbose.
This is what I see in the build log when I redirect both stdout and
stderr to a file:
(arch/x86_64/lib/lib.a)rwlock.o
(arch/x86_64/lib/lib.a)thunk.o
(arch/x86_64/lib/lib.a)usercopy.o
attempt to openx86_64-pc-linux-gnu-ld: Removing unused section
'.bss.Version_132631' in file 'init/built-in.o'
x86_64-pc-linux-gnu-ld: Removing unused section '.text.bad_intr' in
file 'arch/x86_64/kernel/built-in.o'
x86_64-pc-linux-gnu-ld: Removing unused section
'.text.do_device_not_available' in file
'arch/x86_64/kernel/built-in.o'
x86_64-pc-linux-gnu-ld: Removing unused section
'.text.check_tsc_unstable' in file 'arch/x86_64/kernel/built-in.o'
...
...
...
x86_64-pc-linux-gnu-ld: Removing unused section '.bss.tr_table' in
file 'net/built-in.o'
x86_64-pc-linux-gnu-ld: Removing unused section '.eh_frame' in file
'arch/x86_64/lib/lib.a(csum-copy.o)'
lib/built-in.o succeeded
lib/built-in.o
attempt to open arch/x86_64/lib/built-in.o succeeded
"attempt to open lib/built-in.o succeeded" was printed to stdout,
and due to stdout being fully-buffered when redirected to a file,
it got split in mid-line by output to stderr here:
bfd/elflink.c:
if (info->print_gc_sections && o->size != 0)
_bfd_error_handler (_("Removing unused section '%s' in
file '%B'"), sub, o->name);
The fix is to either make _bfd_error_handler() always do
fflush(stdout) internally before printing to stderr,
or to do setlinebuf(stdout) at the very beginning of ld's main().
http://sourceware.org/bugzilla/show_bug.cgi?id=4992
--
vda
More information about the Binutils
mailing list