load_lib dwarf.exp # This test can only be run on targets which support DWARF-2 and use gas. if {![dwarf2_support]} { return 0 }; standard_testfile main-foo.c .S set executable ${testfile} set asm_file [standard_output_file ${srcfile2}] # We need to know the size of integer and address types in order # to write some of the debugging info we'd like to generate. if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug}] { return -1 } # Create the DWARF. Dwarf::assemble $asm_file { declare_labels cu_label cu2_label int_label int2_label set int_size [get_sizeof "int" 4] # imported CU 1: inty unsigned cu {} { cu_label: compile_unit { {language @DW_LANG_C} {name ""} } { int_label: base_type { {byte_size $int_size sdata} {encoding @DW_ATE_unsigned} {name {unsigned int}} } DW_TAG_typedef { {DW_AT_name inty} {DW_AT_type :$int_label} } } } # imported CU 2: inty signed cu {} { cu2_label: compile_unit { {language @DW_LANG_C} {name ""} } { int2_label: base_type { {byte_size $int_size sdata} {encoding @DW_ATE_signed} {name {int}} } DW_TAG_typedef { {DW_AT_name inty} {DW_AT_type :$int2_label} } } } # main CU cu {} { compile_unit { {language @DW_LANG_C} {name ""} } { imported_unit { {import %$cu2_label} } subprogram { {MACRO_AT_func {main}} {external 1 flag} } } } # foo CU cu {} { compile_unit { {language @DW_LANG_C} {name ""} } { imported_unit { {import %$cu_label} } subprogram { {MACRO_AT_func {foo}} {external 1 flag} } } } } if { [prepare_for_testing "failed to prepare" ${testfile} \ [list $srcfile $asm_file] {nodebug}] } { return -1 } if ![runto_main] { return -1 } gdb_test "ptype inty" "type = int" "ptype in main" gdb_breakpoint "foo" gdb_continue_to_breakpoint "continue to breakpoint for foo" gdb_test "ptype inty" "type = unsigned int" "ptype in foo"