]> sourceware.org Git - systemtap.git/commitdiff
PR10574: remove comdat/duplicate functions with entrypc=0
authorFrank Ch. Eigler <fche@elastic.org>
Tue, 22 Sep 2009 21:35:31 +0000 (17:35 -0400)
committerFrank Ch. Eigler <fche@elastic.org>
Tue, 22 Sep 2009 21:37:01 +0000 (17:37 -0400)
* dwflpp.c (die_entrypc): Reject entrypc=0 functions.

dwflpp.cxx

index 867fcef2365fd6f8d01809182bbb88110fbcae4a..636cd38d7328892dd6deb39cae1c8b8b1c6bd9c1 100644 (file)
@@ -1467,10 +1467,21 @@ dwflpp::die_entrypc (Dwarf_Die * die, Dwarf_Addr * addr)
         }
     }
 
+  // PR10574: reject subprograms where the entrypc address turns out
+  // to be 0, since they tend to correspond to duplicate-eliminated
+  // COMDAT copies of C++ functions.
+  if (rc == 0 && *addr == 0)
+    {
+      lookup_method += " (skip comdat)";
+      rc = 1;
+    }
+
   if (sess.verbose > 2)
-    clog << "entry-pc lookup (" << lookup_method << ") = 0x" << hex << *addr << dec
+    clog << "entry-pc lookup (" << lookup_method << " dieoffset: " << lex_cast_hex(dwarf_dieoffset (die))
+         << ") = 0x" << hex << *addr << dec
          << " (rc " << rc << ")"
          << endl;
+
   return (rc == 0);
 }
 
This page took 0.028886 seconds and 5 git commands to generate.