Re: Manually checking build id in elf files

Alex Bennee
2009-09-03T13:45:50Z

2009/9/3 Jan Kratochvil <jan.kratochvil@redhat.com>:
> On Thu, 03 Sep 2009 15:03:05 +0200, Alex Bennee wrote:
>> I'd like to manually check it but readelf doesn't show any such notes:
>>
>> vnms@vnms:~$ readelf -n /usr/lib/libcairo.so.2.17.3
>> vnms@vnms:~$ readelf -n /usr/lib/debug/usr/lib/libcairo.so.2.17.3
>
> Try elfutils:

heh, there was me assuming readelf was part of elfutils :-)
>
> # eu-readelf -n /lib64/libc.so.6
> Note section [ 1] '.note.gnu.build-id' of 36 bytes at offset 0x270:
>  Owner          Data size  Type
>  GNU                   20  GNU_BUILD_ID
>    Build ID: ec8dd400904ddfcac8b1c343263a790f977159dc
> [...]
>
> # eu-unstrip -n -e /lib64/libc.so.6
> 0x3979600000+0x36d868 ec8dd400904ddfcac8b1c343263a790f977159dc@0x3979600280 /lib64/libc.so.6 /usr/lib/debug/lib64/libc-2.10.1.so.debug

I do seem to be seeing different output:

vnms@vnms:~$ eu-unstrip -n -e /lib/libc-2.7.so
0+0x361278 - /lib/libc-2.7.so /usr/lib/debug/lib/libc-2.7.so
vnms@vnms:~$ eu-readelf -n /lib/libc-2.7.so

Note section [ 1] '.note.ABI-tag' of 32 bytes at offset 0x270:
Owner Data size Type
GNU 16 VERSION
OS: Linux, ABI: 2.6.8
vnms@vnms:~$ objdump -s -j .note.gnu.build-id /lib/libc.so.6

/lib/libc.so.6: file format elf64-x86-64

vnms@vnms:~$ eu-unstrip -n -e /lib/libc-2.7.so
0+0x361278 - /lib/libc-2.7.so /usr/lib/debug/lib/libc-2.7.so
vnms@vnms:~$ eu-readelf -n /usr/lib/libcairo.so.2.17.3
vnms@vnms:~$ objdump -s -j .note.gnu.build-id /usr/lib/libcairo.so.2.17.3

/usr/lib/libcairo.so.2.17.3: file format elf64-x86-64

My version is:
$ eu-readelf --version
readelf (Red Hat elfutils) 0.131

Which makes me wonder why gdb is allowing the load of the symbol file given:

1. There seems to be no build ID
2. The CRC in the library doesn't match the CRC of the library.debug

The rabbit hole gets deeper :-/

--
Alex, homepage: http://www.bennee.com/~alex/