Hi all, I take as an example a Fortran source file containing en empty subroutine and an empty program: $ cat a.f90 subroutine foo end subroutine foo program bar end When I compile it with gfortran and load it into gdb, I can't set breakpoints on "foo", but only on "foo_" (which is the mangled name). I was looking into why gfortran doesn't emit the necessary debug info, but I think it actually does. The relevant output from readelf says: <1><19c>: Abbrev Number: 2 (DW_TAG_subprogram) DW_AT_external : 1 DW_AT_name : foo DW_AT_decl_file : 1 DW_AT_decl_line : 1 DW_AT_MIPS_linkage_name: foo_ DW_AT_low_pc : 0x4005fc DW_AT_high_pc : 0x400602 DW_AT_frame_base : 0 (location list) Now, what I don't understand is when I compile it with the Intel compiler, it's possible to set breakpoints on "foo" as well as "foo_", even though the debug info seems similar: <1><187>: Abbrev Number: 3 (DW_TAG_subprogram) DW_AT_decl_line : 1 DW_AT_decl_column : 12 DW_AT_decl_file : 1 DW_AT_inline : 0 (not inlined) DW_AT_accessibility: 1 (public) DW_AT_type : <17f> DW_AT_prototyped : 0 DW_AT_name : foo DW_AT_low_pc : 0x4028f0 DW_AT_high_pc : 0x4028f6 DW_AT_external : 1 Is "DW_AT_MIPS_linkage_name: foo_" the reason for this difference? Should DW_AT_MIPS_linkage_name actually be emitted or is this wrong? Thanks for your help, FX PS: please find attached the complete readelf output for both compilers, I case more information is needed.