]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge r6128:
authorJulian Seward <jseward@acm.org>
Tue, 17 Oct 2006 01:36:37 +0000 (01:36 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 17 Oct 2006 01:36:37 +0000 (01:36 +0000)
Interface changes for m_debuginfo:
- new fn VG_(di_aix5_notify_segchange) to notify XCOFF loads/unloads
- new fn VG_(lookup_symbol_SLOW) for looking up the address of a fn
  given its name and soname

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6265

coregrind/pub_core_debuginfo.h
include/pub_tool_debuginfo.h

index 0e39362eb2ed51f3c036675f9bcd5582cc8412d7..86716699d77125f04e158846acdc09be57858d66 100644 (file)
 
 #include "pub_tool_debuginfo.h"
 
-/* Notify the debuginfo system about a new mapping.  This is the way
-   new debug information gets loaded.  If allow_SkFileV is True, it
-   will try load debug info if the mapping at 'a' belongs to Valgrind;
-   whereas normally (False) it will not do that.  This allows us to
-   carefully control when the thing will read symbols from the
-   Valgrind executable itself. */
+/* LINUX: Notify the debuginfo system about a new mapping, or the
+   disappearance of such, or a permissions change on an existing
+   mapping.  This is the way new debug information gets loaded.  If
+   allow_SkFileV is True, it will try load debug info if the mapping
+   at 'a' belongs to Valgrind; whereas normally (False) it will not do
+   that.  This allows us to carefully control when the thing will read
+   symbols from the Valgrind executable itself. */
+#if defined(VGO_linux)
 extern void VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV );
 
 extern void VG_(di_notify_munmap)( Addr a, SizeT len );
 
 extern void VG_(di_notify_mprotect)( Addr a, SizeT len, UInt prot );
+#endif
+
+#if defined(VGO_aix5)
+/* AIX5: Very similar, except packaged more neatly.  The supplied
+   parameters describe a code segment and its associated data segment,
+   that have recently been mapped in -- so we need to read debug info
+   for it -- or conversely, have recently been dumped, in which case
+   the relevant debug info has to be unloaded. */
+extern void VG_(di_aix5_notify_segchange)( 
+               Addr   code_start,
+               Word   code_len,
+               Addr   data_start,
+               Word   data_len,
+               UChar* file_name,
+               UChar* mem_name,
+               Bool   is_mainexe,
+               Bool   acquire
+            );
+#endif
 
 extern Bool VG_(get_fnname_nodemangle)( Addr a, 
                                         Char* fnname, Int n_fnname );
@@ -72,6 +93,16 @@ extern Addr VG_(get_tocptr) ( Addr guest_code_addr );
 extern
 Bool VG_(get_fnname_Z_demangle_only) ( Addr a, Char* buf, Int nbuf );
 
+/* Map a function name to its entry point and toc pointer.  Is done by
+   sequential search of all symbol tables, so is very slow.  To
+   mitigate the worst performance effects, you may specify a soname
+   pattern, and only objects matching that pattern are searched.
+   Therefore specify "*" to search all the objects.  On TOC-afflicted
+   platforms, a symbol is deemed to be found only if it has a nonzero
+   TOC pointer.  */
+extern
+Bool VG_(lookup_symbol_SLOW)(UChar* sopatt, UChar* name, Addr* pEnt, Addr* pToc);
+
 #endif   // __PUB_CORE_DEBUGINFO_H
 
 /*--------------------------------------------------------------------*/
index f06c4f77b1b1d63ceb15b646ba5e56b90a1177d5..6b6dcbaddf59dd553261698d937a4a4a30b40d96 100644 (file)
@@ -119,6 +119,7 @@ extern Int  VG_(seginfo_syms_howmany) ( const SegInfo *si );
 extern void VG_(seginfo_syms_getidx)  ( const SegInfo *si, 
                                         Int idx,
                                         /*OUT*/Addr*   addr,
+                                        /*OUT*/Addr*   tocptr,
                                         /*OUT*/UInt*   size,
                                         /*OUT*/HChar** name );