Hi,

I found a small bug in dwfl_module_addrsym. If no symbol with an actual
size was found for an address the sizeless_sym closest to the desired
address could be replaced with a sizeless_sym that was actually further
away. And so no sym would be returned at all. The attached patch fixes
it and adds a check to see if the whole same_section check and the
sizeless_sym update is even needed (it isn't if a full sized symbol has
already been found). Which gives a small speedup and turns up a couple
of extra symbols when inspecting vmlinux debuginfo with eu-readelf -w.

OK, to apply?

Thanks,

Mark
From f9c1da9fbbeda8d18eee901c136d9ea484fa9ee3 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <[email protected]>
Date: Mon, 31 Oct 2011 15:33:49 +0100
Subject: [PATCH] dwfl_module_addrsym update sizeless_sym only if closer to
 desired addr.

---
 libdwfl/ChangeLog             |    5 +++++
 libdwfl/dwfl_module_addrsym.c |    4 +++-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index adf3efa..97caf0b 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,8 @@
+2011-11-31  Mark Wielaard  <[email protected]>
+
+	* dwfl_module_addrsym.c (dwfl_module_addrsym): Only update
+	sizeless_sym if needed and closer to desired addr.
+
 2011-10-20  Mark Wielaard  <[email protected]>
 
 	* derelocate.c (cache_sections): Intern mod->reloc_info check.
diff --git a/libdwfl/dwfl_module_addrsym.c b/libdwfl/dwfl_module_addrsym.c
index a9f98f4..41ff465 100644
--- a/libdwfl/dwfl_module_addrsym.c
+++ b/libdwfl/dwfl_module_addrsym.c
@@ -138,7 +138,9 @@ dwfl_module_addrsym (Dwfl_Module *mod, GElf_Addr addr,
 		      closest_shndx = shndx;
 		      closest_name = name;
 		    }
-		  else if (same_section (&sym, shndx))
+		  else if (closest_name == NULL
+			   && sym.st_value >= min_label
+			   && same_section (&sym, shndx))
 		    {
 		      /* Handwritten assembly symbols sometimes have no
 			 st_size.  If no symbol with proper size includes
-- 
1.7.4.4

_______________________________________________
elfutils-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/elfutils-devel

Reply via email to