mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
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.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
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>
|
2013-08-22 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* lib/gdb.exp (skip_btrace_tests): Use gdb_caching_proc and
|
* lib/gdb.exp (skip_btrace_tests): Use gdb_caching_proc and
|
||||||
|
@ -684,8 +684,8 @@ namespace eval Dwarf {
|
|||||||
# default = 0 (32-bit)
|
# default = 0 (32-bit)
|
||||||
# version n - DWARF version number to emit
|
# version n - DWARF version number to emit
|
||||||
# default = 4
|
# default = 4
|
||||||
# addr_size n - the size of addresses, 32 or 64
|
# addr_size n - the size of addresses, 32, 64, or default
|
||||||
# default = 64
|
# default = default
|
||||||
# fission 0|1 - boolean indicating if generating Fission debug info
|
# fission 0|1 - boolean indicating if generating Fission debug info
|
||||||
# default = 0
|
# default = 0
|
||||||
# BODY is Tcl code that emits the DIEs which make up the body of
|
# BODY is Tcl code that emits the DIEs which make up the body of
|
||||||
@ -702,7 +702,7 @@ namespace eval Dwarf {
|
|||||||
# Establish the defaults.
|
# Establish the defaults.
|
||||||
set is_64 0
|
set is_64 0
|
||||||
set _cu_version 4
|
set _cu_version 4
|
||||||
set _cu_addr_size 8
|
set _cu_addr_size default
|
||||||
set fission 0
|
set fission 0
|
||||||
set section ".debug_info"
|
set section ".debug_info"
|
||||||
set _abbrev_section ".debug_abbrev"
|
set _abbrev_section ".debug_abbrev"
|
||||||
@ -716,6 +716,13 @@ namespace eval Dwarf {
|
|||||||
default { error "unknown option $name" }
|
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 }]
|
set _cu_offset_size [expr { $is_64 ? 8 : 4 }]
|
||||||
if { $fission } {
|
if { $fission } {
|
||||||
set section ".debug_info.dwo"
|
set section ".debug_info.dwo"
|
||||||
@ -767,8 +774,8 @@ namespace eval Dwarf {
|
|||||||
# default = 0 (32-bit)
|
# default = 0 (32-bit)
|
||||||
# version n - DWARF version number to emit
|
# version n - DWARF version number to emit
|
||||||
# default = 4
|
# default = 4
|
||||||
# addr_size n - the size of addresses, 32 or 64
|
# addr_size n - the size of addresses, 32, 64, or default
|
||||||
# default = 64
|
# default = default
|
||||||
# fission 0|1 - boolean indicating if generating Fission debug info
|
# fission 0|1 - boolean indicating if generating Fission debug info
|
||||||
# default = 0
|
# default = 0
|
||||||
# SIGNATURE is the 64-bit signature of the type.
|
# SIGNATURE is the 64-bit signature of the type.
|
||||||
@ -788,7 +795,7 @@ namespace eval Dwarf {
|
|||||||
# Establish the defaults.
|
# Establish the defaults.
|
||||||
set is_64 0
|
set is_64 0
|
||||||
set _cu_version 4
|
set _cu_version 4
|
||||||
set _cu_addr_size 8
|
set _cu_addr_size default
|
||||||
set fission 0
|
set fission 0
|
||||||
set section ".debug_types"
|
set section ".debug_types"
|
||||||
set _abbrev_section ".debug_abbrev"
|
set _abbrev_section ".debug_abbrev"
|
||||||
@ -802,6 +809,13 @@ namespace eval Dwarf {
|
|||||||
default { error "unknown option $name" }
|
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 }]
|
set _cu_offset_size [expr { $is_64 ? 8 : 4 }]
|
||||||
if { $fission } {
|
if { $fission } {
|
||||||
set section ".debug_types.dwo"
|
set section ".debug_types.dwo"
|
||||||
|
@ -1854,6 +1854,34 @@ gdb_caching_proc is_lp64_target {
|
|||||||
return 1
|
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.
|
# Return 1 if target has x86_64 registers - either amd64 or x32.
|
||||||
# x32 target identifies as x86_64-*-linux*, therefore it cannot be determined
|
# x32 target identifies as x86_64-*-linux*, therefore it cannot be determined
|
||||||
# just from the target string.
|
# just from the target string.
|
||||||
|
Reference in New Issue
Block a user