Elf_X: Fix the search for the build-id
authorJosh Stone <jistone@redhat.com>
Fri, 12 Oct 2012 00:43:28 +0000 (17:43 -0700)
committerAndrew Bernat <bernat@cs.wisc.edu>
Tue, 23 Oct 2012 15:21:54 +0000 (10:21 -0500)
commitf1e9188f337a0b3d8891c0125ae970bdb5de9c1e
treec0e56f7e7c23badf1f72838857bc432c211258d7
parent7eb91c37622055e3a1004ac8d1747abbc8f6d594
Elf_X: Fix the search for the build-id

The code was previously acting as though section .note.gnu.build-id
could be read directly as an ASCII string, but this is incorrect.  There
is at least an Elf_Nhdr first, and the actual build-id is in raw bytes.
It's also not guaranteed that the build-id will be in that named
section, as it could be merged with other SHT_NOTE sections.

This patch first adds an Elf_X_Nhdr type to mirror the other Elf_X
abstractions.  For the build-id it walks over all SHT_NOTE sections
looking for type==NT_GNU_BUILD_ID and name=="GNU", and then converts
that to a hex string for the /usr/lib/debug/.build-id/... path.
elf/h/Elf_X.h
elf/src/Elf_X.C