All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: lkml <linux-kernel@vger.kernel.org>
Cc: Sam Ravnborg <sam@mars.ravnborg.org>, Sam Ravnborg <sam@ravnborg.org>
Subject: [PATCH 32/46] kbuild: in the section mismatch check try harder to find symbols
Date: Tue, 21 Mar 2006 17:20:56 +0100	[thread overview]
Message-ID: <11429580562919-git-send-email-sam@ravnborg.org> (raw)
In-Reply-To: <11429580562973-git-send-email-sam@ravnborg.org>

When searching for symbols the only check performed was if
offset equals st_value. Adding an additional check to see if st_name
points t a valid name made us sort out a few more false positives and
let us report more correct names in warnings.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/mod/modpost.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

43c74d179596ba1f8eceb8c6a5c7e11afe233662
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 3b570b1..3648683 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -558,7 +558,10 @@ static Elf_Sym *find_elf_symbol(struct e
 }
 
 /*
- * Find symbols before or equal addr and after addr - in the section sec
+ * Find symbols before or equal addr and after addr - in the section sec.
+ * If we find two symbols with equal offset prefer one with a valid name.
+ * The ELF format may have a better way to detect what type of symbol
+ * it is, but this works for now.
  **/
 static void find_symbols_between(struct elf_info *elf, Elf_Addr addr,
 				 const char *sec,
@@ -587,6 +590,12 @@ static void find_symbols_between(struct 
 				beforediff = addr - sym->st_value;
 				*before = sym;
 			}
+			else if ((addr - sym->st_value) == beforediff) {
+				/* equal offset, valid name? */
+				const char *name = elf->strtab + sym->st_name;
+				if (name && strlen(name))
+					*before = sym;
+			}
 		}
 		else
 		{
@@ -594,6 +603,12 @@ static void find_symbols_between(struct 
 				afterdiff = sym->st_value - addr;
 				*after = sym;
 			}
+			else if ((sym->st_value - addr) == afterdiff) {
+				/* equal offset, valid name? */
+				const char *name = elf->strtab + sym->st_name;
+				if (name && strlen(name))
+					*after = sym;
+			}
 		}
 	}
 }
-- 
1.0.GIT



  reply	other threads:[~2006-03-21 16:31 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <11429580554104-git-send-email-sam@ravnborg.org>
2006-03-21 16:20 ` [PATCH 22/46] kbuild: do not warn when unwind sections references .init/.exit sections Sam Ravnborg
2006-03-21 16:20   ` [PATCH 23/46] kbuild: version.h should depend on .kernelrelease Sam Ravnborg
2006-03-21 16:20     ` [PATCH 24/46] kbuild: Add copyright to modpost.c Sam Ravnborg
2006-03-21 16:20       ` [PATCH 25/46] kbuild: ignore all generated files for make allmodconfig (x86_64) Sam Ravnborg
2006-03-21 16:20         ` [PATCH 26/46] kbuild: whitelist false section mismatch warnings Sam Ravnborg
2006-03-21 16:20           ` [PATCH 27/46] kbuild: make namespace.pl CROSS_COMPILE happy Sam Ravnborg
2006-03-21 16:20             ` [PATCH 28/46] kbuild: small update of allnoconfig description Sam Ravnborg
2006-03-21 16:20               ` [PATCH 29/46] kbuild: kill trailing whitespace in modpost & friends Sam Ravnborg
2006-03-21 16:20                 ` [PATCH 30/46] kbuild: kill false positives from section mismatch warnings for powerpc Sam Ravnborg
2006-03-21 16:20                   ` [PATCH 31/46] kbuild: fix section mismatch check for unwind on IA64 Sam Ravnborg
2006-03-21 16:20                     ` Sam Ravnborg [this message]
2006-03-21 16:20                       ` [PATCH 33/46] kbuild: fix make dir/file.xx when asm symlink is missing Sam Ravnborg
2006-03-21 16:20                         ` [PATCH 34/46] kbuild: when warning symbols exported twice now tell user this is the problem Sam Ravnborg
2006-03-21 16:20                           ` [PATCH 35/46] kbuild: change kbuild to not rely on incorrect GNU make behavior Sam Ravnborg
2006-03-21 16:20                             ` [PATCH 36/46] kbuild: Fix bug in crc symbol generating of kernel and modules Sam Ravnborg
2006-03-21 16:20                               ` [PATCH 37/46] kbuild: replace PHONY with FORCE Sam Ravnborg
2006-03-21 16:20                                 ` [PATCH 38/46] kbuild: in makefile.txt note that Makefile is preferred name for kbuild files Sam Ravnborg
2006-03-21 16:20                                   ` [PATCH 39/46] kbuild: fix genksyms build error Sam Ravnborg
2006-03-21 16:20                                     ` [PATCH 40/46] kbuild: Lindent genksyms.c Sam Ravnborg
2006-03-21 16:20                                       ` [PATCH 41/46] kbuild: clean-up genksyms Sam Ravnborg
2006-03-21 16:20                                         ` [PATCH 42/46] kbuild: add -fverbose-asm to i386 Makefile Sam Ravnborg
2006-03-21 16:20                                           ` [PATCH 43/46] Kconfig: remove the CONFIG_CC_ALIGN_* options Sam Ravnborg
2006-03-21 16:20                                             ` [PATCH 44/46] kconfig: fix time ordering of writes to .kconfig.d and include/linux/autoconf.h Sam Ravnborg
2006-03-21 16:20                                               ` [PATCH 45/46] kbuild: fix make help & make *pkg Sam Ravnborg
2006-03-21 16:20                                                 ` [PATCH 46/46] kbuild: remove obsoleted scripts/reference_* files Sam Ravnborg
2006-03-21 17:28                             ` [PATCH 35/46] kbuild: change kbuild to not rely on incorrect GNU make behavior Jan-Benedict Glaw
2006-03-21 17:37                               ` Paul D. Smith
2006-03-21 17:53                               ` Sam Ravnborg

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=11429580562919-git-send-email-sam@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam@mars.ravnborg.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.