dns-terror (fastresolve-2.10_5) core dump na FreeBSD 10.x

Dan Lukes dan at obluda.cz
Mon Feb 29 01:40:35 CET 2016


On 02/28/16 23:49, Miroslav Lachman wrote:
> Zkusil jsem to prelozit s GCC, ale dns-terror stejne segfaultuje a ani  mi to nejde debugovat:

> Reading symbols from /usr/local/lib/gcc48/libstdc++.so.6...Error while reading shared library symbols:
> Dwarf Error: wrong version in compilation unit header (is 4, should be  2) [in module /usr/local/lib/gcc48/libstdc++.so.6]

Format debugovacich informaci je na gdb moc novy a neznamy. Jinymi 
slovy, prilis nove gcc48 (a DWARF-4 format) na prilis stare gdb.

Bohuzel, nepomuzes si jednoduse ani tak, ze si pri prekladu explicitne 
vyzadas starsi verzi (option -gdwarf-2 misto prosteho -g). To sice 
zabere na preklady zdrojaku samotnych, ale DWARF-4 debugovaci informace 
se do vysledku stejne dostanou - z prilinkovanych knihoven.

Musel bys knihovny gcc48 nejdriv stripnout, aby debugovaci informace 
neobsahovaly vubec.

A to uz je snad jednodussi misto gcc 4.8 pouzit gcc 4.7 - ten snad jeste 
DWARF-4 neumel.

> Myslim, ze ja uz se dal nedostanu

No,porad's to jeste nezkusil zkompilovat s -O optimalizacema. ;-)

Ja uz bych davno ten prelozenej kod projel disassemblerem (a hledal 
vyskyt "neexistujici instrukce"), ale nemam vubec vyrobeny builder-stroj 
s 10-R v 32bit verzi. A pro 64 bitovej binar zas nemam disassembler.

Taky muzes zkusit ICC misto GCC:
CC= ${LOCALBASE}/intel_cc_80/bin/icc
CXX= ${LOCALBASE}/intel_cc_80/bin/icpc

To ale taky muze byt dost napinava zmena ;-)

> kdyz jsem do Makefile ... pridal USE_GCC=yes
> ... dostane sileny seznam runtime zavislosti:
>
> New packages to be INSTALLED:
>          gcc: 4.8.5_2 [debug]
>          indexinfo: 0.2.4 [debug]
>          mpc: 1.0.3 [codelab]
>          gmp: 5.1.3_3 [debug]
>          mpfr: 3.1.3_1 [debug]
>          binutils: 2.25.1,1 [debug]
>          gcc-ecj: 4.5 [debug]

> Prece tim, ze se na stejny kod pouzije jiny kompilator by se nemel  zmenit seznam runtime zavislosti, ne?

No, tak to samozrejme mel, u dynamicky linkovanejch binaru. Pri behu 
potrebujes knihovny, ktere se budou prilinkovavat. V pripade objektoveho 
prekladu pomoci gcc 4.8 to nejspis bude minimalne libstdc++.6.so. Coz 
znamena zavislost na lang/gcc48

No, a to ostatni jsou uz rekurzivni zavislosti samotneho gcc 4.8. A tech 
je tam, pri defaultnim prekladu gcc, dost.

Dan



More information about the Users-l mailing list