aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.dwarf2/dwz.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2/dwz.exp')
-rw-r--r--gdb/testsuite/gdb.dwarf2/dwz.exp58
1 files changed, 55 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dwz.exp b/gdb/testsuite/gdb.dwarf2/dwz.exp
index aa0ea7d..9175f9e 100644
--- a/gdb/testsuite/gdb.dwarf2/dwz.exp
+++ b/gdb/testsuite/gdb.dwarf2/dwz.exp
@@ -22,10 +22,56 @@ if {![dwarf2_support]} {
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
extern main
@@ -34,7 +80,7 @@ Dwarf::assemble $asm_file {
subprogram {
{name main}
{low_pc main addr}
- {high_pc "main + 10" addr}
+ {high_pc "main + $main_length" addr}
}
}
}
@@ -82,11 +128,17 @@ Dwarf::assemble $asm_file {
}
}
-if { [prepare_for_testing ${testfile}.exp ${testfile} \
- [list $srcfile $asm_file] {nodebug}] } {
+if {[gdb_compile $asm_file ${binfile}2.o object {nodebug}] != ""} {
return -1
}
+if {[gdb_compile [list ${binfile}1.o ${binfile}2.o] \
+ "${binfile}" executable {}] != ""} {
+ return -1
+}
+
+clean_restart ${testfile}
+
if ![runto_main] {
return -1
}