Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c
Date: Tue, 01 Dec 2009 10:19:00
Message-Id: E1NFPow-0008Ri-95@stork.gentoo.org
1 vapier 09/12/01 10:18:58
2
3 Modified: scanelf.c
4 Log:
5 unify some of the scanelf symtabs code paths
6
7 Revision Changes Path
8 1.213 pax-utils/scanelf.c
9
10 file : http://sources.gentoo.org/viewcvs.py/gentoo-projects/pax-utils/scanelf.c?rev=1.213&view=markup
11 plain: http://sources.gentoo.org/viewcvs.py/gentoo-projects/pax-utils/scanelf.c?rev=1.213&content-type=text/plain
12 diff : http://sources.gentoo.org/viewcvs.py/gentoo-projects/pax-utils/scanelf.c?r1=1.212&r2=1.213
13
14 Index: scanelf.c
15 ===================================================================
16 RCS file: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v
17 retrieving revision 1.212
18 retrieving revision 1.213
19 diff -u -r1.212 -r1.213
20 --- scanelf.c 15 Mar 2009 09:13:20 -0000 1.212
21 +++ scanelf.c 1 Dec 2009 10:18:58 -0000 1.213
22 @@ -1,13 +1,13 @@
23 /*
24 * Copyright 2003-2007 Gentoo Foundation
25 * Distributed under the terms of the GNU General Public License v2
26 - * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.212 2009/03/15 09:13:20 vapier Exp $
27 + * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.213 2009/12/01 10:18:58 vapier Exp $
28 *
29 * Copyright 2003-2007 Ned Ludd - <solar@g.o>
30 * Copyright 2004-2007 Mike Frysinger - <vapier@g.o>
31 */
32
33 -static const char *rcsid = "$Id: scanelf.c,v 1.212 2009/03/15 09:13:20 vapier Exp $";
34 +static const char *rcsid = "$Id: scanelf.c,v 1.213 2009/12/01 10:18:58 vapier Exp $";
35 const char * const argv0 = "scanelf";
36
37 #include "paxinc.h"
38 @@ -130,25 +130,28 @@
39 static void scanelf_file_get_symtabs(elfobj *elf, void **sym, void **tab)
40 {
41 /* find the best SHT_DYNSYM and SHT_STRTAB sections */
42 +
43 + /* debug sections */
44 + void *symtab = elf_findsecbyname(elf, ".symtab");
45 + void *strtab = elf_findsecbyname(elf, ".strtab");
46 + /* runtime sections */
47 + void *dynsym = elf_findsecbyname(elf, ".dynsym");
48 + void *dynstr = elf_findsecbyname(elf, ".dynstr");
49 +
50 #define GET_SYMTABS(B) \
51 if (elf->elf_class == ELFCLASS ## B) { \
52 - Elf ## B ## _Shdr *symtab, *strtab, *dynsym, *dynstr; \
53 - /* debug sections */ \
54 - symtab = SHDR ## B (elf_findsecbyname(elf, ".symtab")); \
55 - strtab = SHDR ## B (elf_findsecbyname(elf, ".strtab")); \
56 - /* runtime sections */ \
57 - dynsym = SHDR ## B (elf_findsecbyname(elf, ".dynsym")); \
58 - dynstr = SHDR ## B (elf_findsecbyname(elf, ".dynstr")); \
59 - if (symtab && dynsym) { \
60 - *sym = (void*)((EGET(symtab->sh_size) > EGET(dynsym->sh_size)) ? symtab : dynsym); \
61 - } else { \
62 - *sym = (void*)(symtab ? symtab : dynsym); \
63 - } \
64 - if (strtab && dynstr) { \
65 - *tab = (void*)((EGET(strtab->sh_size) > EGET(dynstr->sh_size)) ? strtab : dynstr); \
66 - } else { \
67 - *tab = (void*)(strtab ? strtab : dynstr); \
68 - } \
69 + if (symtab && dynsym) { \
70 + Elf ## B ## _Shdr *esymtab = symtab; \
71 + Elf ## B ## _Shdr *edynsym = dynsym; \
72 + *sym = (EGET(esymtab->sh_size) > EGET(edynsym->sh_size)) ? symtab : dynsym; \
73 + } else \
74 + *sym = symtab ? symtab : dynsym; \
75 + if (strtab && dynstr) { \
76 + Elf ## B ## _Shdr *estrtab = strtab; \
77 + Elf ## B ## _Shdr *edynstr = dynstr; \
78 + *tab = (EGET(estrtab->sh_size) > EGET(edynstr->sh_size)) ? strtab : dynstr; \
79 + } else \
80 + *tab = strtab ? strtab : dynstr; \
81 }
82 GET_SYMTABS(32)
83 GET_SYMTABS(64)