aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-08-22 14:01:04 +0000
committerTom Tromey <tromey@redhat.com>2013-08-22 14:01:04 +0000
commite630b97400250f4855a02bc324ad7891c722ea23 (patch)
tree0bd6130d3f9c77ec4289e47f6f666e0b748c6730
parentf3a764545a704c61e2a4f4316a539b43aa0fa6b0 (diff)
downloadgdb-e630b97400250f4855a02bc324ad7891c722ea23.zip
gdb-e630b97400250f4855a02bc324ad7891c722ea23.tar.gz
gdb-e630b97400250f4855a02bc324ad7891c722ea23.tar.bz2
fix dwz.exp on 32-bit targets
This fixes dwz.exp on 32-bit targets. It does so by introducing a new "default" setting for the address size in the DWARF assembler. Built and regtested on x86-64 Fedora 18. I also ran the gdb.dwarf2 tests on an x86 machine (gcc45). * lib/dwarf.exp (cu, tu): Handle addr_size of "default". Change default addr_size. * lib/gdb.exp (is_64_target): New gdb_caching_proc.
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/lib/dwarf.exp26
-rw-r--r--gdb/testsuite/lib/gdb.exp28
3 files changed, 54 insertions, 6 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index fc21eac..8d2605f 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2013-08-22 Tom Tromey <tromey@redhat.com>
+ * lib/dwarf.exp (cu, tu): Handle addr_size of "default". Change
+ default addr_size.
+ * lib/gdb.exp (is_64_target): New gdb_caching_proc.
+
+2013-08-22 Tom Tromey <tromey@redhat.com>
+
* lib/gdb.exp (skip_btrace_tests): Use gdb_caching_proc and
standard_temp_file.
diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp
index 5b19bb8..1d3eb03 100644
--- a/gdb/testsuite/lib/dwarf.exp
+++ b/gdb/testsuite/lib/dwarf.exp
@@ -684,8 +684,8 @@ namespace eval Dwarf {
# default = 0 (32-bit)
# version n - DWARF version number to emit
# default = 4
- # addr_size n - the size of addresses, 32 or 64
- # default = 64
+ # addr_size n - the size of addresses, 32, 64, or default
+ # default = default
# fission 0|1 - boolean indicating if generating Fission debug info
# default = 0
# BODY is Tcl code that emits the DIEs which make up the body of
@@ -702,7 +702,7 @@ namespace eval Dwarf {
# Establish the defaults.
set is_64 0
set _cu_version 4
- set _cu_addr_size 8
+ set _cu_addr_size default
set fission 0
set section ".debug_info"
set _abbrev_section ".debug_abbrev"
@@ -716,6 +716,13 @@ namespace eval Dwarf {
default { error "unknown option $name" }
}
}
+ if {$_cu_addr_size == "default"} {
+ if {[is_64_target]} {
+ set _cu_addr_size 8
+ } else {
+ set _cu_addr_size 4
+ }
+ }
set _cu_offset_size [expr { $is_64 ? 8 : 4 }]
if { $fission } {
set section ".debug_info.dwo"
@@ -767,8 +774,8 @@ namespace eval Dwarf {
# default = 0 (32-bit)
# version n - DWARF version number to emit
# default = 4
- # addr_size n - the size of addresses, 32 or 64
- # default = 64
+ # addr_size n - the size of addresses, 32, 64, or default
+ # default = default
# fission 0|1 - boolean indicating if generating Fission debug info
# default = 0
# SIGNATURE is the 64-bit signature of the type.
@@ -788,7 +795,7 @@ namespace eval Dwarf {
# Establish the defaults.
set is_64 0
set _cu_version 4
- set _cu_addr_size 8
+ set _cu_addr_size default
set fission 0
set section ".debug_types"
set _abbrev_section ".debug_abbrev"
@@ -802,6 +809,13 @@ namespace eval Dwarf {
default { error "unknown option $name" }
}
}
+ if {$_cu_addr_size == "default"} {
+ if {[is_64_target]} {
+ set _cu_addr_size 8
+ } else {
+ set _cu_addr_size 4
+ }
+ }
set _cu_offset_size [expr { $is_64 ? 8 : 4 }]
if { $fission } {
set section ".debug_types.dwo"
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 7be4f9d..f1f56a6 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1854,6 +1854,34 @@ gdb_caching_proc is_lp64_target {
return 1
}
+# Return 1 if target has 64 bit addresses.
+# This cannot be decided simply from looking at the target string,
+# as it might depend on externally passed compiler options like -m64.
+gdb_caching_proc is_64_target {
+ set me "is_64_target"
+
+ set src [standard_temp_file is64[pid].c]
+ set obj [standard_temp_file is64[pid].o]
+
+ set f [open $src "w"]
+ puts $f "int function(void) { return 3; }"
+ puts $f "int dummy\[sizeof (&function) == 8 ? 1 : -1\];"
+ close $f
+
+ verbose "$me: compiling testfile $src" 2
+ set lines [gdb_compile $src $obj object {quiet}]
+ file delete $src
+ file delete $obj
+
+ if ![string match "" $lines] then {
+ verbose "$me: testfile compilation failed, returning 0" 2
+ return 0
+ }
+
+ verbose "$me: returning 1" 2
+ return 1
+}
+
# Return 1 if target has x86_64 registers - either amd64 or x32.
# x32 target identifies as x86_64-*-linux*, therefore it cannot be determined
# just from the target string.