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

--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem