public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Frysinger (vapier)" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c
Date: Sun, 19 Oct 2014 07:31:20 +0000 (UTC)	[thread overview]
Message-ID: <20141019073120.93DF683A2@oystercatcher.gentoo.org> (raw)

vapier      14/10/19 07:31:20

  Modified:             scanelf.c
  Log:
  scanelf: do not use debug syms with runtime strings or vice versa

Revision  Changes    Path
1.267                pax-utils/scanelf.c

file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?rev=1.267&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?rev=1.267&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/scanelf.c?r1=1.266&r2=1.267

Index: scanelf.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v
retrieving revision 1.266
retrieving revision 1.267
diff -u -r1.266 -r1.267
--- scanelf.c	18 Jun 2014 03:16:52 -0000	1.266
+++ scanelf.c	19 Oct 2014 07:31:20 -0000	1.267
@@ -1,13 +1,13 @@
 /*
  * Copyright 2003-2012 Gentoo Foundation
  * Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.266 2014/06/18 03:16:52 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.267 2014/10/19 07:31:20 vapier Exp $
  *
  * Copyright 2003-2012 Ned Ludd        - <solar@gentoo.org>
  * Copyright 2004-2012 Mike Frysinger  - <vapier@gentoo.org>
  */
 
-static const char rcsid[] = "$Id: scanelf.c,v 1.266 2014/06/18 03:16:52 vapier Exp $";
+static const char rcsid[] = "$Id: scanelf.c,v 1.267 2014/10/19 07:31:20 vapier Exp $";
 const char argv0[] = "scanelf";
 
 #include "paxinc.h"
@@ -178,6 +178,9 @@
 	 * skip them.  This let's us work sanely with splitdebug ELFs (rather
 	 * than spewing a lot of "corrupt ELF" messages later on).  In malformed
 	 * ELFs, the section might be wrongly set to NOBITS, but screw em.
+	 *
+	 * We need to make sure the debug/runtime sym/str sets are used together
+	 * as they are generated in sync.  Trying to mix them won't work.
 	 */
 #define GET_SYMTABS(B) \
 	if (elf->elf_class == ELFCLASS ## B) { \
@@ -190,19 +193,28 @@
 		symtab = NULL; \
 	if (dynsym && EGET(edynsym->sh_type) == SHT_NOBITS) \
 		dynsym = NULL; \
-	if (symtab && dynsym) \
-		*sym = (EGET(esymtab->sh_size) > EGET(edynsym->sh_size)) ? symtab : dynsym; \
-	else \
-		*sym = symtab ? symtab : dynsym; \
-	\
 	if (strtab && EGET(estrtab->sh_type) == SHT_NOBITS) \
 		strtab = NULL; \
 	if (dynstr && EGET(edynstr->sh_type) == SHT_NOBITS) \
 		dynstr = NULL; \
-	if (strtab && dynstr) \
-		*str = (EGET(estrtab->sh_size) > EGET(edynstr->sh_size)) ? strtab : dynstr; \
-	else \
-		*str = strtab ? strtab : dynstr; \
+	\
+	/* Use the set with more symbols if both exist. */ \
+	if (symtab && dynsym && strtab && dynstr) { \
+		if (EGET(esymtab->sh_size) > EGET(edynsym->sh_size)) \
+			goto debug##B; \
+		else \
+			goto runtime##B; \
+	} else if (symtab && strtab) { \
+ debug##B: \
+		*sym = symtab; \
+		*str = strtab; \
+		return; \
+	} else if (dynsym && dynstr) { \
+ runtime##B: \
+		*sym = dynsym; \
+		*str = dynstr; \
+		return; \
+	} \
 	}
 	GET_SYMTABS(32)
 	GET_SYMTABS(64)





             reply	other threads:[~2014-10-19  7:31 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-19  7:31 Mike Frysinger (vapier) [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-02-28 22:59 [gentoo-commits] gentoo-projects commit in pax-utils: scanelf.c Mike Frysinger (vapier)
2015-02-24  6:58 Mike Frysinger (vapier)
2015-02-22  2:27 Mike Frysinger (vapier)
2015-02-22  1:38 Mike Frysinger (vapier)
2015-02-22  0:10 Mike Frysinger (vapier)
2015-02-21 19:30 Mike Frysinger (vapier)
2014-11-20  1:25 Mike Frysinger (vapier)
2014-11-05  2:02 Mike Frysinger (vapier)
2014-03-21  5:33 Mike Frysinger (vapier)
2014-03-21  5:27 Mike Frysinger (vapier)
2014-03-20  8:08 Mike Frysinger (vapier)
2014-03-20  8:06 Mike Frysinger (vapier)
2014-01-11  0:28 Mike Frysinger (vapier)
2013-08-14 21:09 Mike Frysinger (vapier)
2013-04-16 16:22 Mike Frysinger (vapier)
2013-04-10 22:27 Mike Frysinger (vapier)
2013-04-08  6:38 Mike Frysinger (vapier)
2013-04-02 21:15 Mike Frysinger (vapier)
2012-11-30 23:25 Mike Frysinger (vapier)
2012-11-10  9:43 Mike Frysinger (vapier)
2012-11-04  8:25 Mike Frysinger (vapier)
2012-11-04  8:23 Mike Frysinger (vapier)
2012-11-04  7:48 Mike Frysinger (vapier)
2012-11-04  6:55 Mike Frysinger (vapier)
2012-08-04  6:08 Mike Frysinger (vapier)
2012-04-29  6:21 Mike Frysinger (vapier)
2012-04-29  5:41 Mike Frysinger (vapier)
2012-01-25  1:58 Mike Frysinger (vapier)
2012-01-23 23:48 Mike Frysinger (vapier)
2012-01-23 22:28 Mike Frysinger (vapier)
2011-12-21 22:17 Mike Frysinger (vapier)
2011-12-21 22:00 Mike Frysinger (vapier)
2011-12-21 17:34 Mike Frysinger (vapier)
2011-12-13  5:12 Mike Frysinger (vapier)
2011-10-13  4:49 Mike Frysinger (vapier)
2011-09-27 22:20 Mike Frysinger (vapier)
2011-09-27 19:56 Mike Frysinger (vapier)
2011-09-27 19:29 Mike Frysinger (vapier)
2011-09-27 19:21 Mike Frysinger (vapier)
2011-09-27 19:20 Mike Frysinger (vapier)
2011-09-27 17:28 Mike Frysinger (vapier)
2011-08-08  1:56 Mike Frysinger (vapier)
2011-07-30 17:08 Ned Ludd (solar)
2010-12-06 20:43 Mike Frysinger (vapier)
2010-01-15 11:56 Mike Frysinger (vapier)
2009-12-20 20:25 Mike Frysinger (vapier)
2009-12-01 10:18 Mike Frysinger (vapier)
2009-03-15  9:13 Mike Frysinger (vapier)
2009-03-15  9:01 Mike Frysinger (vapier)
2009-03-15  8:53 Mike Frysinger (vapier)
2008-12-30 13:38 Mike Frysinger (vapier)
2008-12-30 12:38 Mike Frysinger (vapier)
2008-12-10 20:06 Fabian Groffen (grobian)
2008-12-10 20:05 Fabian Groffen (grobian)
2008-11-17 18:09 Diego Petteno (flameeyes)
2008-11-17 18:03 Diego Petteno (flameeyes)
2008-10-22 17:03 Diego Petteno (flameeyes)
2008-10-22 15:20 Diego Petteno (flameeyes)
2008-09-29  6:05 Mike Frysinger (vapier)
2008-09-29  6:03 Mike Frysinger (vapier)
2008-09-29  6:01 Mike Frysinger (vapier)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141019073120.93DF683A2@oystercatcher.gentoo.org \
    --to=vapier@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox