svn commit: r218984 - head/lib/librt

Bruce Evans brde at optusnet.com.au
Wed Feb 23 22:04:33 UTC 2011


On Wed, 23 Feb 2011, Dimitry Andric wrote:

> Log:
>  Fix the 32-bit build stage on amd64 when WITH_CTF is enabled.  It seems
>  ctfconvert will corrupt object files that are compiled with -g, if it is
>  not run with -g itself.
>
>  To fix it, remove -g from CFLAGS in lib/librt/Makefile.  If you need to
>  compile this library with debug info, use DEBUG_FLAGS=-g instead, which
>  will work correctly, even when using WITH_CTF.

Hard-coded -g is a style bug, but I wonder if this works even with -g in
DEBUG_FLAGS.

This may be related to the bug that -g is broken if the compilation is
via an intermediate asm file:

 	"cc -g -o foo foo.c"  != "cc -g -S foo.c; cc -g -o foo foo.s"

The former works, but the latter gives:

% Script started on Wed Feb 23 21:47:19 2011
% 
% pts/0:bde at ref9-i386:~/r> gdb foo
% GNU gdb 6.1.1 [FreeBSD]
% Copyright 2004 Free Software Foundation, Inc.
% GDB is free software, covered by the GNU General Public License, and you are
% welcome to change it and/or distribute copies of it under certain conditions.
% Type "show copying" to see the conditions.
% There is absolutely no warranty for GDB.  Type "show warranty" for details.
% This GDB was configured as "i386-marcel-freebsd"...Dwarf Error: Could not find abbrev number 47 [in module /dumpster/home/bde/r/foo]
% 
% (gdb) q
% pts/0:bde at ref9-i386:~/r> exit
% 
% Script done on Wed Feb 23 21:47:24 2011

gdb also cannot find `main'.  But if everything is compiled without -g,
gdb can find `main'.

Similarly with multiple files, some compiled via asm and some via
(implicit) .o's.

I haven't found an incantantion that works.  The asm file contains lots
of debugging info, but the info is apparently incomplete or invalid.
The object file produced from the asm file differs from the one produced
directly from the C file.

Perhaps you already fixed this by importing newer binutils.

Bruce


More information about the svn-src-all mailing list