Hi Mark, On Thu, Jan 1, 2015 at 4:42 AM, Mark Wielaard <m...@redhat.com> wrote: > On Tue, Dec 30, 2014 at 06:05:33PM +0900, Namhyung Kim wrote: >> And I found a related commit (5704c8c4fa71 "getcfi_scn_eh_frame: Don't >> crash and burn when .eh_frame bits aren't there.") in elfutils that >> can lead to a unexpected crash like this. To safely use the function, >> it needs to check the .eh_frame section is a PROGBITS type. > > Sorry about that bug. It was fixed in elfutils 0.156, released July 2013. > Latest elfutils release is 0.161. > > Checking .eh_frame is SHT_PROGBITS (and not SHT_NOBITS) looks like the > correct workaround if you have to deal with older elfutils releases.
Thanks for confirming this. > > Note that dwarf_getcfi_elf gets the CFI information from the .eh_frame > section associated with the ELF file underlying the Dwarf dbg and needs > to be released with a call to dwarf_cfi_end (). dwarf_getcfi () gets the > CFI information from the .debug_frame section data of the Dwarf dbg > and gets automatically releassed when dwarf_end () is called (you should > not call dwarf_cfi_end () on the result). Ah, it's good to know. I have to check the code.. > > If the Dwarf dbg handle is associated with a separate debuginfo file, > then the .eh_frame section data will not be available (has SHT_NOBITS) > and you can get the .eh_frame section (and call dwarf_getcfi_elf ()) on > the original ELF file from which the Dwarf debuginfo file was split off. > > In your patch you call dwarf_getcfi () as backup to get some CFI > information when you cannot call dwarf_getcfi_elf (). In general it > might make sense to also do this when dwarf_getcfi_elf fails. Or try > to get the CFI through both .eh_frame (from the executable ELF file) > with dwarf_getcfi_elf () and .debug_frame (from the Dwarf dbg file) > with dwarf_getcfi () and try to match an address in both tables > if one or the other fails. Thanks for your advice, I'll make a follow-up patch to address your comments. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/