diff options
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp | 63 |
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 } |