summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAlexey Gladkov <gladkov.alexey@gmail.com>2010-10-28 01:11:38 +0400
committerPanu Matilainen <pmatilai@redhat.com>2010-10-28 13:25:38 +0300
commitd874afb5cde620c6f409b0c1a0ee31ccf6f30ce8 (patch)
tree17d6a472310f34c7b49e87502ed6df0b4436ad44 /tools
parent94ea5ee25f0d341274d204907d35233117e0f671 (diff)
downloadrpm-d874afb5cde620c6f409b0c1a0ee31ccf6f30ce8.tar.gz
elfdeps: Fix version definitions processing
The elfdeps doesn't parse the whole .gnu.version_d section. For example: $ readelf -V /lib/libbz2.so.1 | grep -A3 .gnu.version_d Version definition section '.gnu.version_d' contains 2 entries: Addr: 0x0000000000000884 Offset: 0x000884 Link: 4 (.dynstr) 000000: Rev: 1 Flags: BASE Index: 1 Cnt: 1 Name: libbz2.so.1 0x001c: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: BZLIB_1.0 Before changes: $ echo /lib/libbz2.so.1.0.6 | /usr/lib/rpm/elfdeps -P libbz2.so.1 After changes: $ echo /lib/libbz2.so.1.0.6 | /usr/lib/rpm/elfdeps -P libbz2.so.1(BZLIB_1.0) libbz2.so.1 Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/elfdeps.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/elfdeps.c b/tools/elfdeps.c
index b4451093a..7482a5e76 100644
--- a/tools/elfdeps.c
+++ b/tools/elfdeps.c
@@ -49,6 +49,7 @@ static void processVerDef(Elf_Scn *scn, GElf_Shdr *shdr, elfInfo *ei)
if (def == NULL)
break;
auxoffset = offset + def->vd_aux;
+ offset += def->vd_next;
for (int j = def->vd_cnt; --j >= 0; ) {
GElf_Verdaux aux_mem, * aux;