[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