diff options
author | Alexey Gladkov <gladkov.alexey@gmail.com> | 2010-10-28 01:11:38 +0400 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2010-10-28 13:25:38 +0300 |
commit | d874afb5cde620c6f409b0c1a0ee31ccf6f30ce8 (patch) | |
tree | 17d6a472310f34c7b49e87502ed6df0b4436ad44 /tools | |
parent | 94ea5ee25f0d341274d204907d35233117e0f671 (diff) | |
download | rpm-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.c | 1 |
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; |