I took a copy of libtcmalloc.so (r190, built unmodified from sources) and named it orig.so. I can do this with it: $ addr2line -e orig.so 0x00000000000247b8 /home/luto/apps/gperftools/src/central_freelist.cc:283 $ cp orig.so dwz.so $ dwz dwz.so $ addr2line -e dwz.so 0x00000000000247b8 BFD: Dwarf Error: Could not find abbrev number 91. BFD: Dwarf Error: Could not find abbrev number 111. BFD: Dwarf Error: Could not find abbrev number 91. BFD: Dwarf Error: Offset (7632208) greater than or equal to .debug_str size (281777). BFD: Dwarf Error: Could not find abbrev number 101. BFD: Dwarf Error: Could not find abbrev number 113. <path>/gperftools/src/central_freelist.cc:283 orig.so and dwz.so are here: http://web.mit.edu/luto/www/binutils_bug/ My version of dwz is dwz-0.8-1.fc18. I've tested this with binutils-2.23.51.0.9 and F18's binutils. I've also tried dwz 0.9 with similar results.
This should be fixed by 2014-01-28 Nick Clifton <nickc@redhat.com> * dwarf2.c (find_abstract_instance_name): For DW_FORM_ref_addr attributes select the CU containing the abbreviation, which may not be the current CU. gitweb link: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=0a9c7b2bf1903322a9b03d76c9c171bcd2ad3cf0 "addr2line -e orig.so 0x00000000000247b8" seems to work for me with this change. Can you please verify that it works for you?
It works for me.
Fixed by previous change as mentioned above in https://sourceware.org/bugzilla/show_bug.cgi?id=15204#c1