Bug 18926 - FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
Summary: FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
Status: NEW
Alias: None
Product: gdb
Classification: Unclassified
Component: go (show other bugs)
Version: unknown
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-06 18:40 UTC by Doug Evans
Modified: 2020-02-25 07:15 UTC (History)
0 users

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 Doug Evans 2015-09-06 18:40:38 UTC
These two failures still haven't gotten attention.
Filing this for reference sake.

FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
Comment 1 Sourceware Commits 2020-02-21 19:48:08 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=755251522afd2f33de7e64f8a30ddd732f30b2de

commit 755251522afd2f33de7e64f8a30ddd732f30b2de
Author: Tom de Vries <tdevries@suse.de>
Date:   Fri Feb 21 20:47:28 2020 +0100

    [gdb/testsuite] Fix gdb.go/methods.exp
    
    With gccgo-6/7, we have:
    ...
    FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
    XFAIL: gdb.go/methods.exp: going to first breakpoint \
      (the program exited)
    FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
    XFAIL: gdb.go/methods.exp: going to second breakpoint \
      (the program is no longer running)
    ...
    
    And with gccgo-8/9/10, we have:
    ...
    PASS: gdb.go/methods.exp: setting breakpoint 1
    XFAIL: gdb.go/methods.exp: going to first breakpoint
    FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
    XFAIL: gdb.go/methods.exp: going to second breakpoint \
      (the program exited)
    ...
    
    The first test passes and fails with different messages:
    ...
    FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
    ...
    or:
    ...
    PASS: gdb.go/methods.exp: setting breakpoint 1
    ...
    Fix this by removing the explicit pass call and using the message argument for
    gdb_breakpoint, for both breakpoint locations.
    
    The setup of the xfails is non-specific:
    ...
    setup_xfail "*-*-*" ;# mangling issues IIRC
    ...
    so let's start with removing these.
    
    The first FAIL with gccgo-6:
    ...
    FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
    ...
    is due an incorrect DW_AT_name attribute:
    ...
        #    <554>   DW_AT_name        : main.Foo.N6_main.T
    ...
    Fix this by recognizing the incorrect attribute, and xfailing the test.
    
    Furthermore, if setting the breakpoint fails, there's not much point in trying
    to continue to the breakpoint:
    ...
    FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
    FAIL: gdb.go/methods.exp: going to first breakpoint (the program exited)
    ...
    Fix this by skipping the second test if the first one fails, also for the
    second breakpoint.
    
    With gccgo-10, we manage to set the first breakpoint, but continuing to
    breakpoint test fails:
    ...
    PASS: gdb.go/methods.exp: setting breakpoint 1
    FAIL: gdb.go/methods.exp: going to first breakpoint
    ...
    This is due to an incorrect regexp, requiring a colon in front of the
    breakpoint location.  Fix this for both breakpoints.
    
    Setting the second breakpoint fails:
    ...
    FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
    ...
    presumably because the breakpoint location "(*main.T).Bar" does not follow the
    naming convention explained at https://golang.org/doc/gdb#Naming.  Fix this by
    updating the breakpoint location to "main.(*T).Bar".
    
    Still this test fails, for gccgo-6/7 because of an incorrect DW_AT_name
    attribute:
    ...
        # <529>   DW_AT_name        : main.Bar.pN6_main.T
    ...
    and for gccgo-8/9/10 because of incorrect DW_AT_name/DW_AT_linkage_name
    attributes (filed as gcc PR93866):
    ...
        #    <6e5>   DW_AT_name        : main.Bar..1main.T
        #    <6ec>   DW_AT_linkage_name: main.T.Bar
    ..
    Add xfails for both of these.
    
    All in all, now we have with gccgo-6/7:
    ...
    XFAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
    XFAIL: gdb.go/methods.exp: setting breakpoint at main.(*T).Bar
    ...
    and with gccgo-8/9/10, we have:
    ...
    PASS: gdb.go/methods.exp: setting breakpoint at main.T.Foo
    PASS: gdb.go/methods.exp: going to first breakpoint
    XFAIL: gdb.go/methods.exp: setting breakpoint at main.(*T).Bar
    ...
    
    Tested on x86_64-linux with gccgo-6/7/8/9/10.
    
    gdb/testsuite/ChangeLog:
    
    2020-02-21  Tom de Vries  <tdevries@suse.de>
    
    	PR go/18926
    	* lib/gdb.exp (bp_location2/bp_location2_regexp): Fix.
    	Remove blanket xfails.  Use message argument for gdb_breakpoint.
    	Make continuing to breakpoint test conditional on setting breakpoint.
    	Fix continuing to breakpoint regexp.  Add xfails for gccgo-6/7
    	DW_AT_name attribute.  Add xfail for GCC PR93866.
Comment 2 Sourceware Commits 2020-02-25 07:15:22 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=70d497007d097a68cbd5e78104619f4f88a09838

commit 70d497007d097a68cbd5e78104619f4f88a09838
Author: Tom de Vries <tdevries@suse.de>
Date:   Tue Feb 25 08:14:41 2020 +0100

    [gdb/testsuite] Remove gcc/93866 xfail in methods.exp
    
    The test-case gdb.go/methods.exp contains an xfail for PR gcc/93866.
    
    However, that PR has been marked resolved-wontfix, with clarification that the
    gccgo symbol names for methods are correct, even if they're not the same as
    for gc.
    
    Remove the xfail.
    
    Tested on x86_64-linux with gccgo-10.
    
    gdb/testsuite/ChangeLog:
    
    2020-02-25  Tom de Vries  <tdevries@suse.de>
    
    	PR go/18926
    	* gdb.go/methods.exp: Remove gcc/93866 xfail.