From 68511cecac53d805c72e65d0f31abeca17098f0e Mon Sep 17 00:00:00 2001 From: Carlos Eduardo Seo Date: Thu, 25 Oct 2007 20:54:27 +0000 Subject: [PATCH] * dwarf2read.c (read_partial_die): check the value of DW_AT_calling_convention in Fortran programs. --- gdb/ChangeLog | 7 +++++++ gdb/dwarf2read.c | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f86576c61e8..4995dc2fd33 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2007-10-25 Wu Zhou + Carlos Eduardo Seo + Jim Blandy + + * dwarf2read.c (read_partial_die): check the value + of DW_AT_calling_convention in Fortran programs. + 2007-10-25 Wu Zhou Thiago Jung Bauermann diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 5d855195675..1498d1ff7eb 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -5619,6 +5619,25 @@ read_partial_die (struct partial_die_info *part_die, case DW_AT_byte_size: part_die->has_byte_size = 1; break; + case DW_AT_calling_convention: + /* DWARF doesn't provide a way to identify a program's source-level + entry point. DW_AT_calling_convention attributes are only meant + to describe functions' calling conventions. + + However, because it's a necessary piece of information in + Fortran, and because DW_CC_program is the only piece of debugging + information whose definition refers to a 'main program' at all, + several compilers have begun marking Fortran main programs with + DW_CC_program --- even when those functions use the standard + calling conventions. + + So until DWARF specifies a way to provide this information and + compilers pick up the new representation, we'll support this + practice. */ + if (DW_UNSND (&attr) == DW_CC_program + && cu->language == language_fortran) + set_main_name (part_die->name); + break; default: break; } -- 2.30.2