Rocco Rutte <pdmef(at)gmx.net> wrote:
> ich habe ein komisches Problem mit der ABI in ELF-Dateien. Ich habe mir
> einen Ersatz für sysutils/libchk gebaut (sucht nach unreferenzierten und
> unbenutzen Libraries). Über e_ident[EI_OSABI] des ELF-Headers bekomme
> ich die ABI des Files heraus. Nur: es wird nirgends genutzt.
>
> Wegen der Linux-Binary-Kompatibilität will ich auf FreeBSD auch Linux
> Binaries/Libraries testen können, wo der Wert manchmal 0 und manchmal
> korrekt ist. Auf Solaris zum Beispiel habe ich nur 0 gesehen (also
> 'unused').
Nö, 0 steht für SVR4. Ist also durchaus nicht ungewöhnlich,
daß das unter Solaris auf 0 steht.
> Deshalb meine Frage: gibt es einen anderen Weg als über
> e_ident[EI_OSABI], um die ABI herauszubekommen?
Ja, es gibt für genau diesen Zweck eine Standard-ELF-section
namens ".note-ABI-tag". Kannst Du Dir z.B. mit objdump(1)
anzeigen lassen:
$ objdump -sj .note.ABI-tag /usr/bin/bzip2
/usr/bin/bzip2: file format elf32-i386
Contents of section .note.ABI-tag:
8048094 08000000 04000000 01000000 46726565 ............Free
80480a4 42534400 44820700 BSD.D...
$ objdump -sj .note.ABI-tag /compat/linux/usr/bin/bzip2
/compat/linux/usr/bin/bzip2: file format elf32-i386
Contents of section .note.ABI-tag:
8048108 04000000 10000000 01000000 474e5500 ............GNU.
8048118 00000000 02000000 02000000 05000000 ................
$
FreeBSD verwendet ihn allerdings nicht (im Gegensatz z.B.
zu DragonFly), jedenfalls nicht mit Prirität über die ELF-
ABI-Nummer. FreeBSD 4 ignoriert den ABI-tag völlig, bei
späteren Versionen weiß ich es nicht genau. FreeBSD 6
scheint auch in die ".interp"-Section zu gucken, um die
ABI-Entscheidung zu treffen, aber das ist nur eine Ver-
mutung.
> Wenn nicht, gibt es genau deshalb brandelf(1)?
Eigentlich ist brandelf(1) nur ein übler Hack, der idealer-
weise nicht existieren sollte. Ich kann Dir leider auch
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "What is this talk of 'release'? We do not make software 'releases'. Our software 'escapes', leaving a bloody trail of designers and quality assurance people in its wake." To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Thu 16 Mar 2006 - 15:46:24 CET