From 4ad42007734cc4c12b9addd67542f4f76230434e Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 22 Sep 2009 17:35:31 -0400 Subject: [PATCH] PR10574: remove comdat/duplicate functions with entrypc=0 * dwflpp.c (die_entrypc): Reject entrypc=0 functions. --- dwflpp.cxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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); } -- 2.43.5