From: Frank Ch. Eigler Date: Tue, 22 Sep 2009 21:35:31 +0000 (-0400) Subject: PR10574: remove comdat/duplicate functions with entrypc=0 X-Git-Tag: release-1.0~6 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=4ad42007734cc4c12b9addd67542f4f76230434e;p=systemtap.git PR10574: remove comdat/duplicate functions with entrypc=0 * dwflpp.c (die_entrypc): Reject entrypc=0 functions. --- diff --git a/dwflpp.cxx b/dwflpp.cxx index 867fcef23..636cd38d7 100644 --- a/dwflpp.cxx +++ b/dwflpp.cxx @@ -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); }