1 # This testcase is part of GDB
, the GNU debugger.
3 # Copyright
2012-2022 Free Software Foundation
, Inc.
5 # This
program is free software
; you can redistribute it and
/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation
; either version
3 of the License
, or
8 #
(at your option
) any later version.
10 # This
program is distributed in the hope that it will be useful
,
11 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License
for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this
program.
If not
, see
<http
://www.gnu.org
/licenses
/>.
18 # Test various aspects of methods.
22 if { [skip_go_tests
] } { continue }
23 if { [support_go_compile
] == 0 } { continue }
27 if { [prepare_for_testing
"failed to prepare" ${testfile} ${srcfile} {debug go}] } {
31 set bp_location1
{main.T.Foo
}
32 set bp_location2
{main.T.Bar
}
34 if { [go_runto_main
] < 0 } {
40 gdb_test_multiple
"maintenance print symbols" "" {
41 -re
"^\r\n void main.Foo.N6_main.T\[^\r\n\]*(?=\r\n)" {
45 -re
"^\r\n void main.Bar.pN6_main.T\[^\r\n\]*(?=\r\n)" {
49 -re
"^\r\n void main.T.Bar\[^\r\n\]*(?=\r\n)" {
52 -re
"^\r\n$gdb_prompt $" {
55 -re
"\r\n\[^\r\n\]*(?=\r\n)" {
60 if { $found_wrong_foo
} {
61 # We have with gccgo
-6/7:
62 #
<1><553>: Abbrev Number
: 21 (DW_TAG_subprogram
)
63 #
<554> DW_AT_name
: main.Foo.N6_main.T
66 # We have with gccgo
-8/9/10:
67 #
<1><1e24
>: Abbrev Number
: 40 (DW_TAG_subprogram
)
68 #
<1e25
> DW_AT_name
: main.Foo.main.T
69 #
<1e2c
> DW_AT_linkage_name
: main.T.Foo
71 #
For reference
: with go1.11
.13:
72 #
<1><6c46b
>: Abbrev Number
: 2 (DW_TAG_subprogram
)
73 #
<6c46c
> DW_AT_name
: main.T.Foo
76 if { [gdb_breakpoint $
{bp_location1
} message
]} {
77 gdb_test
"cont" "Breakpoint .*, ${bp_location1}.*" \
78 "going to first breakpoint"
81 if { $found_wrong_bar
== 1 } {
82 # We have with gccgo
-6/7:
83 #
<1><528>: Abbrev Number
: 19 (DW_TAG_subprogram
)
84 #
<529> DW_AT_name
: main.Bar.pN6_main.T
87 # We have with gccgo
-8/9/10:
88 #
<1><6e4
>: Abbrev Number
: 24 (DW_TAG_subprogram
)
89 #
<6e5
> DW_AT_name
: main.Bar.
.1main.T
90 #
<6ec
> DW_AT_linkage_name
: main.T.Bar
92 #
For reference
: with go1.11
.13:
93 #
<1><6c49a
>: Abbrev Number
: 2 (DW_TAG_subprogram
)
94 #
<6c49b
> DW_AT_name
: main.
(*T
).Bar
96 # It has been clarified in PR gcc
/93866 that it
's ok that symbols names
97 # diverge between gc and gccgo. So, we accept the main.T.Bar as valid.
100 if { [gdb_breakpoint ${bp_location2} message] } {
101 gdb_test "cont" "Breakpoint .*, ${bp_location2}.*" \
102 "going to second breakpoint"