From: Roland McGrath Date: Wed, 17 Dec 2008 00:21:40 +0000 (-0800) Subject: Bug compatibility wrapper for ELFUTILS_0.130 dwfl_module_build_id behavior. X-Git-Tag: elfutils-0.138~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45d7b29b1bf7b53ab1164ea3b58529c39d32b4b2;p=thirdparty%2Felfutils.git Bug compatibility wrapper for ELFUTILS_0.130 dwfl_module_build_id behavior. --- diff --git a/libdw/libdw.map b/libdw/libdw.map index 8e2f6441b..eb3abc280 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -185,3 +185,12 @@ ELFUTILS_0.136 { local: *; } ELFUTILS_0.130; + +ELFUTILS_0.138 { + global: + # Replaced ELFUTILS_0.130 version, which has bug-compatibility wrapper. + dwfl_module_build_id; + + local: + *; +} ELFUTILS_0.136; diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 9d86f52b4..1ec9cf675 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,10 @@ +2008-12-16 Roland McGrath + + * dwfl_module_build_id.c (dwfl_module_build_id): Define with alias and + symver magic to bind to ELFUTILS_0.138. + (_BUG_COMPAT_dwfl_module_build_id): New function, bug compatible + wrapper for ELFUTILS_0.130 version set. + 2008-12-15 Roland McGrath * derelocate.c (dwfl_module_relocate_address): Apply main.bias, not diff --git a/libdwfl/dwfl_module_build_id.c b/libdwfl/dwfl_module_build_id.c index 8725afbcc..d1e0eb057 100644 --- a/libdwfl/dwfl_module_build_id.c +++ b/libdwfl/dwfl_module_build_id.c @@ -140,8 +140,8 @@ __libdwfl_find_build_id (Dwfl_Module *mod, bool set, Elf *elf) } int -dwfl_module_build_id (Dwfl_Module *mod, - const unsigned char **bits, GElf_Addr *vaddr) +__dwfl_module_build_id (Dwfl_Module *mod, + const unsigned char **bits, GElf_Addr *vaddr) { if (mod == NULL) return -1; @@ -164,4 +164,19 @@ dwfl_module_build_id (Dwfl_Module *mod, *vaddr = mod->build_id_vaddr; return mod->build_id_len; } -INTDEF (dwfl_module_build_id) +extern __typeof__ (dwfl_module_build_id) INTUSE(dwfl_module_build_id) + __attribute__ ((alias ("__dwfl_module_build_id"))); +asm (".symver " + "__dwfl_module_build_id, dwfl_module_build_id@@ELFUTILS_0.138"); + +int +_BUG_COMPAT_dwfl_module_build_id (Dwfl_Module *mod, + const unsigned char **bits, GElf_Addr *vaddr) +{ + int result = INTUSE(dwfl_module_build_id) (mod, bits, vaddr); + if (result > 0) + *vaddr += (result + 3) & -4; + return result; +} +asm (".symver " + "_BUG_COMPAT_dwfl_module_build_id, dwfl_module_build_id@ELFUTILS_0.130");