[Rpm-maint] [PATCH] elfdeps: Fix version definitions processing

Alexey Gladkov gladkov.alexey at gmail.com
Wed Oct 27 21:11:38 UTC 2010


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 at gmail.com>
---
 tools/elfdeps.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/tools/elfdeps.c b/tools/elfdeps.c
index b445109..7482a5e 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;
-- 
1.7.3.2




More information about the Rpm-maint mailing list