[compiler-rt] r181793 - [sanitizer] Fixed a bug in GetListOfModules.
Sergey Matveev
earthdok at google.com
Tue May 14 07:48:58 PDT 2013
Author: smatveev
Date: Tue May 14 09:48:58 2013
New Revision: 181793
URL: http://llvm.org/viewvc/llvm-project?rev=181793&view=rev
Log:
[sanitizer] Fixed a bug in GetListOfModules.
Modified:
compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc?rev=181793&r1=181792&r2=181793&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc Tue May 14 09:48:58 2013
@@ -133,6 +133,7 @@ typedef ElfW(Phdr) Elf_Phdr;
struct DlIteratePhdrData {
LoadedModule *modules;
uptr current_n;
+ bool first;
uptr max_n;
string_predicate_t filter;
};
@@ -145,7 +146,8 @@ static int dl_iterate_phdr_cb(dl_phdr_in
return 0;
InternalScopedBuffer<char> module_name(kMaxPathLength);
module_name.data()[0] = '\0';
- if (data->current_n == 0) {
+ if (data->first) {
+ data->first = false;
// First module is the binary itself.
uptr module_name_len = internal_readlink(
"/proc/self/exe", module_name.data(), module_name.size());
@@ -182,7 +184,7 @@ static int dl_iterate_phdr_cb(dl_phdr_in
uptr GetListOfModules(LoadedModule *modules, uptr max_modules,
string_predicate_t filter) {
CHECK(modules);
- DlIteratePhdrData data = {modules, 0, max_modules, filter};
+ DlIteratePhdrData data = {modules, 0, true, max_modules, filter};
dl_iterate_phdr(dl_iterate_phdr_cb, &data);
return data.current_n;
}
More information about the llvm-commits
mailing list