2013/8/19 Timothy Pearson <kb9vqf@pearsoncomputing.net>
> 2013/8/17 Slávek Banko <slavek.banko@axis.cz>
>
>> On Friday 16 of August 2013 02:38:43 Fat-Zer wrote:
>> > Tim, the code of backtrace_symbols.c is quite complex is it possible
>> to
>> > make it work without demangle.h?
>>
>> I saw similar code, where is used bfd_demangle instead of
>> cplus_demangle.
>> I'm
>> not determine if it can be useful.
>>
>> http://sourcecodebrowser.com/mutrace/0.2.0/backtrace-symbols_8c_source.html
>>
> Yes, thanks, I've already noticed bfd_demangle, but the third argument is
> flags which defined in demangle.h (of coarse it's only flags, but defining
> them manually seems quite ugly for me). I found another alternative:
> abi::__cxx_demangle() witch presents at least in gcc.
>
> Here is completely rewritten implementation of backtrace() functionality.
>
> some reasons why WITH_LIBBFD should be a separate option and should be OFF
> by default:
>  - It's a yet another dependence.
>  - it's provides very specific and minor functionality.
>  - The functionality may be interested only for developers and some
> testers. End users even won't have any ability to see the difference.
>  - Strictly speaking there is only one thing on linux-glibc-gcc system
> (IMO
> the most of trinity systems) which cannot be handled without libbfd: the
> discovery of source code file and library if the binary was build with
> debug info.
>
> the backtrase format is gdb-like :
>
> [WITH_LIBBFD=ON] no matter present demangle.h on system or not
> #0 0x00007f0f16b6efe3 in kdBacktrace(int) in
> /tmp/trinity/tdelibs/tdecore/kdebug.cpp:791
> #1 0x0000000000400f4b in MyNamespace::Foo::doFoo(int) from
> ./a.out:0x00000f4b
> #2 0x0000000000400e7d in MyNamespace::bar() from ./a.out:0x00000e7d
> #3 0x0000000000400e88 in main from ./a.out:0x00000e88
>
> [WITH_LIBBFD=OFF] the demangling is handled by abi::__cxx_demangle()
> #0 0x00007f0f16b6efe3 in kdBacktrace(int) from
> /tmp/tdelibs-build/tdecore/libtdecore.so:0x00139b55
> #1 0x0000000000400f4b in MyNamespace::Foo::doFoo(int) from
> ./a.out:0x00000f4b
> #2 0x0000000000400e7d in MyNamespace::bar() from ./a.out:0x00000e7d
> #3 0x0000000000400e88 in main from ./a.out:0x00000e88

Looks good to me!

Tim


---------------------------------------------------------------------
To unsubscribe, e-mail: trinity-devel-unsubscribe@lists.pearsoncomputing.net
For additional commands, e-mail: trinity-devel-help@lists.pearsoncomputing.net
Read list messages on the web archive: http://trinity-devel.pearsoncomputing.net/
Please remember not to top-post: http://trinity.pearsoncomputing.net/mailing_lists/#top-posting


if there is no objections, please commit it sooner because for now, as I said before, tdelibs FTBFS with following error if compiled on system with binutils >= 2.23.1 (may be also with 2.23) as discribed in upstream bug http://sourceware.org/bugzilla/show_bug.cgi?id=14243.

===========================
In file included from /var/tmp/portage/trinity-base/tdelibs-9999/work/tdelibs/tdeio/tdeio/backtrace_symbols.c:53:0:
/usr/include/bfd.h:37:2: error: #error config.h must be included before this header
===========================