Bug 16264 - support DW_AT_main_subprogram
Summary: support DW_AT_main_subprogram
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: symtab (show other bugs)
Version: HEAD
: P2 normal
Target Milestone: 8.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-11-27 15:34 UTC by Tom Tromey
Modified: 2019-06-10 07:29 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Tromey 2013-11-27 15:34:37 UTC
DWARF 4 specifies DW_AT_main_subprogram, and apparently
gcc has emitted it for years: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43414
Comment 2 Sourceware Commits 2016-12-02 16:14:58 UTC
The master branch has been updated by Tom Tromey <tromey@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0c1b455e294c6debb4efedc7f1346f3c43249f15

commit 0c1b455e294c6debb4efedc7f1346f3c43249f15
Author: Tom Tromey <tom@tromey.com>
Date:   Sun Nov 13 20:56:34 2016 -0700

    PR symtab/16264 - support DW_AT_main_subprogram
    
    This patch adds support for DW_AT_main_subprogram.
    This is PR symtab/16264.
    
    DW_AT_main_subprogram is used to mark a program's entry point.  GCC
    can emit this, and I hope to change the Rust compiler to emit it as
    well.
    
    GDB already supports an older, pre-DWARF 4 convention adopted by
    FORTRAN compilers, namely to emit DW_AT_calling_convention for the
    "main" function.  However, I think this support in GDB had a small
    bug, in that it seems to rely on the DW_AT_name being read before
    DW_AT_calling_convention.  This patch fixes this as well.
    
    Built and regtested on x86-64 Fedora 24 and the buildbot.  New test
    case included.
    
    2016-12-02  Tom Tromey  <tom@tromey.com>
    
    	PR symtab/16264:
    	* dwarf2read.c (struct partial_die_info) <main_subprogram>: New
    	member.
    	(add_partial_symbol): Call set_objfile_main_name.
    	(read_partial_die): Handle DW_AT_main_subprogram.
    	<DW_AT_calling_convention>: don't call set_objfile_main_name, but
    	set main_subprogram flag.
    
    2016-12-02  Tom Tromey  <tom@tromey.com>
    
    	* gdb.dwarf2/main-subprogram.c: New file.
    	* gdb.dwarf2/main-subprogram.exp: New file.
Comment 3 Tom Tromey 2016-12-02 16:17:30 UTC
Fixed.
Comment 4 Sourceware Commits 2019-06-10 07:29:12 UTC
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=81873cc81effbd657efe5f525d369e430ce77d7a

commit 81873cc81effbd657efe5f525d369e430ce77d7a
Author: Tom de Vries <tdevries@suse.de>
Date:   Mon Jun 10 09:28:30 2019 +0200

    [gdb/symtab] Support DW_AT_main_subprogram with -readnow.
    
    DW_AT_main_subprogram is supported in normal mode in read_partial_die, but not
    in -readnow mode.
    
    Fix this by adding support for DW_AT_main_subprogram in read_func_scope.
    
    Tested on x86_64-linux with native and RFC target board readnow (
    https://sourceware.org/ml/gdb-patches/2019-05/msg00073.html ).
    
    gdb/ChangeLog:
    
    2019-06-10  Tom de Vries  <tdevries@suse.de>
    
    	PR symtab/16264
    	PR symtab/24517
    	* dwarf2read.c (read_func_scope): Handle DW_AT_main_subprogram.