Update copyright year range in header of all files managed by GDB
[binutils-gdb.git] / gdb / testsuite / gdb.dwarf2 / struct-with-sig.exp
bloba229697c3c52928b0440501395587864472a235d
1 # Copyright 2020-2023 Free Software Foundation, Inc.
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15 load_lib dwarf.exp
17 # This test can only be run on targets which support DWARF-2 and use gas.
18 if {![dwarf2_support]} {
19     return 0
22 standard_testfile main-foo.c .S
24 # Make some DWARF for the test.
25 set asm_file [standard_output_file $srcfile2]
26 Dwarf::assemble $asm_file {
27     cu {} {
28         compile_unit {
29             {DW_AT_language @DW_LANG_C}
30             {DW_AT_name main.c}
31         } {
32             structure_type {
33                 {name s}
34                 {signature 0x0000000000000001 ref_sig8}
35                 {declaration 1 flag}
36             }
37             DW_TAG_subprogram {
38                 {MACRO_AT_func {main}}
39             }
40         }
41     }
43     cu {} {
44         compile_unit {
45             {DW_AT_language @DW_LANG_C}
46             {DW_AT_name     foo.c}
47         } {
48             structure_type {
49                 {name s}
50                 {signature 0x0000000000000002 ref_sig8}
51                 {declaration 1 flag}
52             }
53             DW_TAG_subprogram {
54                 {MACRO_AT_func {foo}}
55             }
56         }
57     }
59     tu {} 0x0000000000000001 the_type_i {
60         type_unit {} {
61             declare_labels int_type
63             the_type_i: structure_type {
64                 {name s}
65                 {byte_size 4 sdata}
66             } {
67                 member {
68                     {name i}
69                     {type :$int_type}
70                 }
71             }
72             int_type: base_type {
73                 {name int}
74                 {encoding @DW_ATE_signed}
75                 {byte_size 4 sdata}
76             }
77         }
78     }
80     tu {} 0x0000000000000002 the_type_j {
81         type_unit {} {
82             declare_labels int_type
84             the_type_j: structure_type {
85                 {name s}
86                 {byte_size 4 sdata}
87             } {
88                 member {
89                     {name j}
90                     {type :$int_type}
91                 }
92             }
93             int_type: base_type {
94                 {name int}
95                 {encoding @DW_ATE_signed}
96                 {byte_size 4 sdata}
97             }
98         }
99     }
102 if { [prepare_for_testing "failed to prepare" ${testfile} \
103           [list $srcfile $asm_file] {nodebug}] } {
104     return -1
107 set struct_s_i_re \
108     [multi_line \
109          "type = struct s {" \
110          "    int i;" \
111          "}"]
112 set struct_s_j_re \
113     [multi_line \
114          "type = struct s {" \
115          "    int j;" \
116          "}"]
118 if ![runto_main] {
119     return -1
122 gdb_test "ptype struct s" $struct_s_i_re \
123     "struct s with int i"
125 gdb_breakpoint "foo"
126 gdb_continue_to_breakpoint "foo"
128 gdb_test "ptype struct s" $struct_s_j_re \
129     "struct s with int j"