> One other issue that I uncovered: DW_AT_MIPS_linkage_name appears to > be necessary for Ada. That's correct. In the cases where the DW_AT_MIPS_linkage_name is used, it provides the exported name of our entity, whereas the DW_AT_name contains the name of the entity as it would have been encoded had the entity not been given a specific exported name. For instance, consider the following declaration: package Pck is procedure Do_Nothing; pragma Export (C, Do_Nothing, "__foo_bar"); end Pck; The associated DWARF looks like this: .uleb128 0x2 # (DIE (0x2d) DW_TAG_subprogram) .byte 0x1 # DW_AT_external .long .LASF3 # DW_AT_name: "pck__do_nothing" .long .LASF4 # DW_AT_MIPS_linkage_name: "__foo_bar" > I have a patch that I used to address this (for one of our internal > releases), but it is probably not complete. [In other words: it's now > just as broken as it was before.] I can submit this as a follow-up, if > so desired. Just to clarify a little bit, it's the compiler that is probably broken, generating incorrect debugging info. I keep pushing internally for us to improve the situation so that others can test Ada too, but we only have few engineers working on this area, and it's hard to get their attention on this :-(. Attached is a patch that fixes all regressions for Ada. Basically, it updates dwarf2_compute_name to handle Ada entities... The function comment will probably need to be updated - something like this: /* Compute the fully qualified name of DIE in CU: . For Ada, this is the DIE exported name; . For C++ and Java, [...]; . For other languages, this is just the DIE name. The result is allocated on the objfile_obstack. */ -- Joel