PERFORCE change 152067 for review
Peter Wemm
peter at FreeBSD.org
Mon Oct 27 23:25:15 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=152067
Change 152067 by peter at peter_overcee on 2008/10/27 23:25:11
Sigh. That serves me right for trying to be too smart. gcc tries to execute
this nested function on the stack and valgrind has done funky things with signal
handlers at this point that causes recursion.
Affected files ...
.. //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr-freebsd.c#7 edit
Differences ...
==== //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr-freebsd.c#7 (text+ko) ====
@@ -352,24 +352,33 @@
/* Given a memory address, attempt to deduce its filename. To do
this, we use /proc/curproc/map. If this fails, return false. */
+static Addr search_addr;
+static HChar *search_buf;
+static Int search_nbuf;
+
+/* Callback function for parsing map */
+static void get_name_for_addr_callback(Addr addr, SizeT len, UInt prot,
+ ULong dev, ULong ino, ULong offset,
+ const UChar* filename )
+{
+ if (search_buf[0] == '/')
+ return;
+ if (search_addr < addr)
+ return;
+ if (search_addr > (addr + len - 1))
+ return;
+ VG_(strncpy)( search_buf, filename, search_nbuf - 1);
+}
+
static
-Bool get_name_for_addr ( Addr search_addr, HChar* buf, Int nbuf )
+Bool get_name_for_addr ( Addr addr, HChar* buf, Int nbuf )
{
Int i;
- /* Callback function for parsing map */
- void get_name_for_addr_callback(Addr addr, SizeT len, UInt prot,
- ULong dev, ULong ino, ULong offset,
- const UChar* filename )
- {
- if (search_addr < addr)
- return;
- if (search_addr > (addr + len - 1))
- return;
- VG_(strncpy)( buf, filename, nbuf - 1);
- }
-
for (i = 0; i < nbuf; i++) buf[i] = 0;
+ search_addr = addr;
+ search_buf = buf;
+ search_nbuf = nbuf;
parse_procselfmaps( get_name_for_addr_callback, 0);
if (buf[0] == '/')
return True;
More information about the p4-projects
mailing list