Index: base/third_party/symbolize/symbolize.h |
diff --git a/base/third_party/symbolize/symbolize.h b/base/third_party/symbolize/symbolize.h |
index 441e5436962f7ddd091dd348809a1b9220187561..f617184249ce2f6334dce25c0a2a5cbc29b2c003 100644 |
--- a/base/third_party/symbolize/symbolize.h |
+++ b/base/third_party/symbolize/symbolize.h |
@@ -105,6 +105,10 @@ _END_GOOGLE_NAMESPACE_ |
_START_GOOGLE_NAMESPACE_ |
+// Restrictions on the callbacks that follow: |
+// - The callbacks must not use heaps but only use stacks. |
+// - The callbacks must be async-signal-safe. |
+ |
// Installs a callback function, which will be called right before a symbol name |
// is printed. The callback is intended to be used for showing a file name and a |
// line number preceding a symbol name. |
@@ -116,6 +120,24 @@ typedef int (*SymbolizeCallback)(int fd, void *pc, char *out, size_t out_size, |
uint64 relocation); |
void InstallSymbolizeCallback(SymbolizeCallback callback); |
+// Installs a callback function, which will be called instead of |
+// OpenObjectFileContainingPcAndGetStartAddress. The callback is expected |
+// to searches for the object file (from /proc/self/maps) that contains |
+// the specified pc. If found, sets |start_address| to the start address |
+// of where this object file is mapped in memory, sets the module base |
+// address into |base_address|, copies the object file name into |
+// |out_file_name|, and attempts to open the object file. If the object |
+// file is opened successfully, returns the file descriptor. Otherwise, |
+// returns -1. |out_file_name_size| is the size of the file name buffer |
+// (including the null-terminator). |
+typedef int (*SymbolizeOpenObjectFileCallback)(uint64_t pc, |
+ uint64_t &start_address, |
+ uint64_t &base_address, |
+ char *out_file_name, |
+ int out_file_name_size); |
+void InstallSymbolizeOpenObjectFileCallback( |
+ SymbolizeOpenObjectFileCallback callback); |
+ |
_END_GOOGLE_NAMESPACE_ |
#endif |