[gdb/testsuite] Add label option to proc cu
We can use current dwarf assembly infrastructure to declare a label that marks the start of the CU header: ... declare_labels header_start_cu_a _section ".debug_info" header_start_cu_a : cu {} { } _section ".debug_info" header_start_cu_b : cu {} { } ... on the condition that we switch to the .debug_info section before, which makes this style of use fragile. Another way to achieve the same is to use the label as generated by the cu proc itself: ... variable _cu_label cu {} { } set header_start_cu_a $_cu_label cu {} { } set header_start_cu_b $_cu_label ... but again that seems fragile given that adding a new CU inbetween will silently result in the wrong value for the label. Add a label option to proc cu such that we can simply do: ... cu { label header_start_cu_a } { } cu { label header_start_cu_b } { } ... Tested on x86_64-linux.
This commit is contained in:
parent
77d63f99d6
commit
698c974ffc
@ -1258,6 +1258,10 @@ namespace eval Dwarf {
|
||||
# default = default
|
||||
# fission 0|1 - boolean indicating if generating Fission debug info
|
||||
# default = 0
|
||||
# label <label>
|
||||
# - string indicating label to be defined at the start
|
||||
# of the CU header.
|
||||
# default = ""
|
||||
# BODY is Tcl code that emits the DIEs which make up the body of
|
||||
# the CU. It is evaluated in the caller's context.
|
||||
proc cu {options body} {
|
||||
@ -1278,6 +1282,7 @@ namespace eval Dwarf {
|
||||
set _cu_is_fission 0
|
||||
set section ".debug_info"
|
||||
set _abbrev_section ".debug_abbrev"
|
||||
set label ""
|
||||
|
||||
foreach { name value } $options {
|
||||
set value [uplevel 1 "subst \"$value\""]
|
||||
@ -1286,6 +1291,7 @@ namespace eval Dwarf {
|
||||
version { set _cu_version $value }
|
||||
addr_size { set _cu_addr_size $value }
|
||||
fission { set _cu_is_fission $value }
|
||||
label { set label $value }
|
||||
default { error "unknown option $name" }
|
||||
}
|
||||
}
|
||||
@ -1318,6 +1324,11 @@ namespace eval Dwarf {
|
||||
set start_label [_compute_label "cu${cu_num}_start"]
|
||||
set end_label [_compute_label "cu${cu_num}_end"]
|
||||
|
||||
if { $label != "" } {
|
||||
upvar $label my_label
|
||||
set my_label $_cu_label
|
||||
}
|
||||
|
||||
define_label $_cu_label
|
||||
if {$is_64} {
|
||||
_op .4byte 0xffffffff
|
||||
|
Loading…
x
Reference in New Issue
Block a user