]> Git Repo - binutils.git/blame - gdb/testsuite/gdb.base/type-opaque.exp
* infrun.c (handle_inferior_event)
[binutils.git] / gdb / testsuite / gdb.base / type-opaque.exp
CommitLineData
0b302171 1# Copyright 2004, 2007-2012 Free Software Foundation, Inc.
0b49cb80
JK
2
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
e22f8b7c 5# the Free Software Foundation; either version 3 of the License, or
0b49cb80 6# (at your option) any later version.
e22f8b7c 7#
0b49cb80
JK
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.
e22f8b7c 12#
0b49cb80 13# You should have received a copy of the GNU General Public License
e22f8b7c 14# along with this program. If not, see <http://www.gnu.org/licenses/>. */
0b49cb80 15
0b49cb80
JK
16# Test resolving of an opaque type from the loaded shared library.
17
0b49cb80
JK
18set testfile type-opaque-main
19set libfile type-opaque-lib
20set srcfile ${testfile}.c
21set binfile ${objdir}/${subdir}/${testfile}
22
23set libsrc "${srcdir}/${subdir}/${libfile}.c"
24set libobj "${objdir}/${subdir}/${libfile}.so"
25set execsrc "${srcdir}/${subdir}/${srcfile}"
26
27remote_exec build "rm -f ${binfile}"
28
0b49cb80
JK
29# get the value of gcc_compiled
30if [get_compiler_info ${binfile}] {
31 return -1
32}
33
34if { [gdb_compile_shlib $libsrc $libobj {debug}] != ""
35 || [gdb_compile $execsrc ${binfile} executable \
36 [list debug shlib=${libobj}]] != "" } {
37 return -1
38}
39
40gdb_exit
41gdb_start
42gdb_reinitialize_dir $srcdir/$subdir
43gdb_load ${binfile}
ce451573 44gdb_load_shlibs ${libobj}
0b49cb80
JK
45
46if ![runto_main] then {
47 fail "Can't run to main"
48 return 0
49}
50
51
52# DWARF3: An incomplete structure, union or class type is represented by
53# a structure, union or class entry that does not have a byte size attribute
54# and that has a DW_AT_declaration attribute.
55
56
57proc body { struct } {
58 global gdb_prompt
59
60
61 # <1><15f>: Abbrev Number: 8 (DW_TAG_structure_type)
62 # DW_AT_name : libtype_opaque
63 # DW_AT_declaration : 1
64
65 set name "opaque $struct type resolving"
66 gdb_test_multiple "ptype pointer_${struct}_opaque" $name \
67 {
68 -re "libfield_opaque.*$gdb_prompt $" {
69 pass $name
70 }
71 }
72
73
74 # <1><9e>: Abbrev Number: 2 (DW_TAG_structure_type)
75 # DW_AT_name : libtype_empty
76 # DW_AT_byte_size : 0
77 # DW_AT_decl_file : 1
78 # DW_AT_decl_line : 25
79
80 set name "empty $struct type resolving"
81 gdb_test_multiple "ptype pointer_${struct}_empty" $name \
82 {
83 -re "\\{\[ \t\r\n\]*<no data fields>\[ \t\r\n\]*\\}.*$gdb_prompt $" {
84 pass $name
85 }
86 -re "libfield_empty.*$gdb_prompt $" {
87 fail $name
88 }
89 }
90
91
92 # <1><b0>: Abbrev Number: 3 (DW_TAG_structure_type)
93 # DW_AT_sibling : <e3>
94 # DW_AT_name : libtype_filled
95 # DW_AT_byte_size : 4
96 # DW_AT_decl_file : 1
97 # DW_AT_decl_line : 29
98 # <2><c7>: Abbrev Number: 4 (DW_TAG_member)
99 # DW_AT_name : mainfield_filled
100 # DW_AT_decl_file : 1
101 # DW_AT_decl_line : 30
102 # DW_AT_type : <e3>
103 # DW_AT_data_member_location: 2 byte block: 23 0 (DW_OP_plus_uconst: 0)
104
105 set name "filled $struct type resolving"
106 gdb_test_multiple "ptype pointer_${struct}_filled" $name \
107 {
108 -re "mainfield_filled.*$gdb_prompt $" {
109 pass $name
110 }
111 -re "libfield_filled.*$gdb_prompt $" {
112 fail $name
113 }
114 }
115
116
117}
118
119
120body struct
121body union
This page took 1.386868 seconds and 4 git commands to generate.