+2014-11-14 Yao Qi <yao@codesourcery.com>
+
+ * gdb.dwarf2/dwz.exp: Remove the code to compile main.c to
+ object and get function length.
+ (Dwarf::assemble): Replace name, low_pc and high_pc attributes
+ with MACRO_AT_func.
+ (top-level): Replace gdb_compile and clean_restart with
+ prepare_for_testing.
+ * gdb.dwarf2/main.c (main): Add label main_label.
+
2014-11-14 Yao Qi <yao@codesourcery.com>
* lib/dwarf.exp (function_range): New procedure.
standard_testfile main.c dwz.S
-if {[gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile}1.o \
- object {nodebug}] != ""} {
- return -1
-}
-
-# Start GDB and load object file, compute the function length which is
-# needed in the Dwarf Assembler below.
-clean_restart ${testfile}1.o
-
-set main_length ""
-set test "disassemble main"
-gdb_test_multiple $test $test {
- -re ".*$hex <\\+($decimal)>:\[^\r\n\]+\r\nEnd of assembler dump\.\r\n$gdb_prompt $" {
- set main_length $expect_out(1,string)
- pass $test
- }
-}
-
-if { $main_length == "" } {
- # Bail out here, because we can't do the following tests if
- # $main_length is unknown.
- return -1
-}
-
-# Compute the size of the last instruction.
-
-set test "x/2i main+$main_length"
-gdb_test_multiple $test $test {
- -re ".*($hex) <main\\+$main_length>:\[^\r\n\]+\r\n\[ \]+($hex).*\.\r\n$gdb_prompt $" {
- set start $expect_out(1,string)
- set end $expect_out(2,string)
-
- set main_length [expr $main_length + $end - $start]
- pass $test
- }
-}
-
-if { $main_length == "" } {
- # Bail out here, because we can't do the following tests if
- # $main_length is unknown.
- return -1
-}
-
-gdb_exit
-
# Create the DWARF.
set asm_file [standard_output_file $srcfile2]
Dwarf::assemble $asm_file {
declare_labels partial_label int_label int_label2
- global main_length
+ global srcdir subdir srcfile
extern main
cu {} {
partial_label: partial_unit {} {
subprogram {
- {name main}
- {low_pc main addr}
- {high_pc "main + $main_length" addr}
+ {MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
}
}
}
}
}
-if {[gdb_compile $asm_file ${binfile}2.o object {nodebug}] != ""} {
+if [prepare_for_testing ${testfile}.exp $testfile "${asm_file} ${srcfile}" {}] {
return -1
}
-if {[gdb_compile [list ${binfile}1.o ${binfile}2.o] \
- "${binfile}" executable {}] != ""} {
- return -1
-}
-
-clean_restart ${testfile}
-
if ![runto_main] {
return -1
}