[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