Another Fortran problem...
François-Xavier Coudert
fxcoudert@gmail.com
Fri Oct 26 10:39:00 GMT 2007
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.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: gfortran.txt
URL: <http://sourceware.org/pipermail/gdb/attachments/20071026/77a126ef/attachment.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: intel.txt
URL: <http://sourceware.org/pipermail/gdb/attachments/20071026/77a126ef/attachment-0001.txt>
More information about the Gdb
mailing list