gdb-vel kavarok

 ( NevemTeve | 2014. január 23., csütörtök - 15:31 )

egyik gép (linux; gdb-7.5.1) így írja ki a shared libeket:

From        To          Syms Read   Shared Object Library
0xf7fe1830  0xf7ff7c8f  Yes (*)     /lib/ld-linux.so.2
0xf7fc1a40  0xf7fc2988  Yes (*)     /lib/i686/cmov/libdl.so.2
0xf7e90a80  0xf7f8647c  Yes (*)     /lib/i686/cmov/libc.so.6

Nem rossz, de lehetne jobb: ha kiírná az adatterületeket is.

másik gép (AIX; gdb-7.3):

Text Range              Data Range              Syms    Shared Object Library
0xd052d240-0xd052da3e   0xf0828608-0xf0828730   Yes     /usr/lib/libcrypt.a(shr.o)
0xd0aecc80-0xd0aecdb6   0xf101acc0-0xf101ad30   Yes     /usr/lib/librtl.a(shr.o)
0xd0118680-0xd04ed13b   0xf0759130-0xf0827ba0   Yes     /usr/lib/libc.a(shr.o)
0xd05df21c-0xd05df2d8   0xf02a50f8-0xf02a50f8   Yes     /usr/lib/libdl.a(shr.o)
0xd1ca3150-0xd1ca70d2   0xf117b12d-0xf117b404   Yes     /usr/local/lib/libcpotlas.so

Harmadik gép (AIX; gdb-7.6):
No shared libraries loaded at this time.

Asszem most jön a gdb-7.6.2 fordítás, változatos hibákkal súlyosbítva, feltételezem.

20140123.1436: linuxon nem fordul, a libbfd.a linkelése összeakad a korábbi /usr/local/lib64/libiberty.a -val.
Nem tudom, hogyan lehetne ezt megelőzni, esetleg így:

volt: -L/usr/local/src/gdb-7.6.2/bfd/../libiberty/pic -liberty
lett: /usr/local/src/gdb-7.6.2/bfd/../libiberty/pic/liberty.a

20140123.1532: linuxon lefordult, a kimenet változatlan. (Közben fogtam egy kis hibát a saját aix-libtool programomban (bár azt nem is használtam a fordításnál, épp csak összehasonlításképp kipróbáltam vele valamit): a libiberty.a -t berakta a függőségek közé, mert nem tudhatta, hogy shared-e vagy sem. Nos ebben tévedett, csak AIX-on laknak shared objectek *.a archivumban.

20140123.1600: míg ezt javítottam, észrevettem, hogy ez a geniális gdb a 64-bites shared libjeit a /usr/local/lib-be telepítette, a /usr/local/lib64 helyett... Biztos ennek is van valami ellenszere...

20140123.1605: --libdir=/usr/local/lib64

20140123.1723: jó hír, AIX-on is lefordult a gdb-7.6.2, és az "info sh" kimenet a következő:

(gdb) info sh
No shared libraries loaded at this time.

Hát, voltam már boldogabb.

20140124.1158: Ki kellene próbálni 64-biten is, ehhez persze számos más komponenst is le kell fordítani (readline, expat, libiconv, gettext, libiconv), azután jön az örömhír:

aix5ppc-core.o aix5ppc-core.c -c
aix5ppc-core.c: In function 'xcoff64_core_p':
aix5ppc-core.c:194:13: error: assignment makes integer from pointer without a cast [-Werror]

Akkor most kiszedjük a -Werror -t az összes Makefile-ból...

20140124.1540: Persze így sem fordul, a core.h túl modern (vagy túl régi): nincs benne definálva a 'struct core_dump' és néhány más struktúra. Megpróbálom egy újabb gépről áthozni ezt a headert.

20140124.1609: Ennyire nem egyszerű, minden headernek számtalan függősége van. Közben viszont kipróbáltam a gdb egy másik verzióját az AIX-egy másik verzióján (gdb-7.5, AIX-6.1), ott sem találja a shared libeket.

20140124.1617: Találtam egy régebbi gépet (AIX-5.2, gdb-7.3.1) ahol házilag fordított gdb van, és még jó. Akkor (majd valamikor) innen folytatom a nyomozást.

20140127.1203: Végülis a 7.4.1 és a 7.5 között történhetett valami a gdb-ben. Lásd itt is: http://www.linuxquestions.org/questions/aix-43/aix-gdb-command-info-sh-stopped-working-between-7-4-1-and-7-5-a-4175492709/

20140213: Míg én itt rinyálok, mások dolgoznak: gdb-7.7-ben már megy az "info sh", pont úgy néz ki AIX-on, mint linuxon (vagyis már nem írja ki az adatterületet:(

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Üzenetek a múltból :)
_____________________________
Powered by 1,3,7-trimetilxantin

(gyorsan hozzáadtam egy évet minden dátumhoz)

Note to self: most megint nem megy, mégpedig linuxon, 64-biten. Ez a toldás-foldás nem vált be:

volt: -L/usr/local/src/gdb-7.6.2/bfd/../libiberty/pic -liberty
lett: /usr/local/src/gdb-7.6.2/bfd/../libiberty/pic/liberty.a

Ugyanis abban a *.a-ban át-nem helyezhető elemek vannak, legalábbis a linker szerint...