diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-09 21:23:31 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-09 21:23:31 +0000 |
commit | 3bce7d2fca357e6a1db9eff4a1c58545a3020f1b (patch) | |
tree | 20e806d15042e772e93336ab9b7c68c6d2e76f06 /lib/sanitizer_common/sanitizer_mac.cc | |
parent | 91d212a4a6c2c87a6e09bc8a5e665b011022aaaf (diff) | |
download | src-3bce7d2fca357e6a1db9eff4a1c58545a3020f1b.tar.gz src-3bce7d2fca357e6a1db9eff4a1c58545a3020f1b.zip |
Vendor import of compiler-rt trunk r291476:vendor/compiler-rt/compiler-rt-trunk-r291476
Notes
Notes:
svn path=/vendor/compiler-rt/dist/; revision=311822
svn path=/vendor/compiler-rt/compiler-rt-trunk-r291476/; revision=311823; tag=vendor/compiler-rt/compiler-rt-trunk-r291476
Diffstat (limited to 'lib/sanitizer_common/sanitizer_mac.cc')
-rw-r--r-- | lib/sanitizer_common/sanitizer_mac.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_mac.cc b/lib/sanitizer_common/sanitizer_mac.cc index 73e018c857e8..b4f8ab5e3a9e 100644 --- a/lib/sanitizer_common/sanitizer_mac.cc +++ b/lib/sanitizer_common/sanitizer_mac.cc @@ -854,6 +854,36 @@ void SignalContext::DumpAllRegisters(void *context) { # undef DUMPREG } +static inline bool CompareBaseAddress(const LoadedModule &a, + const LoadedModule &b) { + return a.base_address() < b.base_address(); +} + +void FormatUUID(char *out, uptr size, const u8 *uuid) { + internal_snprintf(out, size, + "<%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-" + "%02X%02X%02X%02X%02X%02X>", + uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], + uuid[6], uuid[7], uuid[8], uuid[9], uuid[10], uuid[11], + uuid[12], uuid[13], uuid[14], uuid[15]); +} + +void PrintModuleMap() { + Printf("Process module map:\n"); + MemoryMappingLayout memory_mapping(false); + InternalMmapVector<LoadedModule> modules(/*initial_capacity*/ 128); + memory_mapping.DumpListOfModules(&modules); + InternalSort(&modules, modules.size(), CompareBaseAddress); + for (uptr i = 0; i < modules.size(); ++i) { + char uuid_str[128]; + FormatUUID(uuid_str, sizeof(uuid_str), modules[i].uuid()); + Printf("0x%zx-0x%zx %s (%s) %s\n", modules[i].base_address(), + modules[i].max_executable_address(), modules[i].full_name(), + ModuleArchToString(modules[i].arch()), uuid_str); + } + Printf("End of module map.\n"); +} + } // namespace __sanitizer #endif // SANITIZER_MAC |