aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp')
-rw-r--r--gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp63
1 files changed, 60 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
index 26ca407..226fc5c 100644
--- a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
@@ -19,11 +19,68 @@ if {![dwarf2_support]} {
return 0
}
-standard_testfile .S
-set mainfile main.c
+standard_testfile main.c .S
set executable ${testfile}
-if [prepare_for_testing ${testfile}.exp $executable "${srcfile} ${mainfile}" {}] {
+# Create the DWARF.
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+ cu { version 3 addr_size 4 } {
+ compile_unit {
+ {producer "GNU C 4.4.3"}
+ {language @DW_LANG_C89}
+ {name 1.c}
+ } {
+ declare_labels int_label struct_label pointer_label variable_label
+
+ int_label: base_type {
+ {byte_size 4 sdata}
+ {encoding @DW_ATE_signed}
+ {name int}
+ }
+
+ struct_label: structure_type {
+ {name s}
+ {byte_size 4 sdata}
+ } {
+ member {
+ {name f}
+ {type :$int_label}
+ {data_member_location 0 data1}
+ }
+ }
+
+ subprogram {
+ {name main}
+ {low_pc main addr}
+ {high_pc main+0x100 addr}
+ {type :$int_label}
+ {external 1 flag}
+ } {
+ pointer_label: pointer_type {
+ {byte_size 4 sdata}
+ {type :$struct_label}
+ }
+
+ variable_label: DW_TAG_variable {
+ {name v}
+ {location {} DW_FORM_block1}
+ {type :$struct_label}
+ }
+
+ DW_TAG_variable {
+ {name p}
+ {location {
+ GNU_implicit_pointer $variable_label 0
+ } SPECIAL_expr}
+ {type :$pointer_label}
+ }
+ }
+ }
+ }
+}
+
+if [prepare_for_testing ${testfile}.exp $executable "${asm_file} ${srcfile}" {}] {
return -1
}