mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
gdb/testsuite: Add is-stmt support to the DWARF compiler
This commit adds the ability to set and toggle the DWARF line table
is-stmt flag.
A DWARF line table can now be created with the attribute
'default_is_stmt' like this:
lines {version 2 default_is_stmt 0} label {
...
}
If 'default_is_stmt' is not specified then the current default is 1,
which matches the existing behaviour.
Inside the DWARF line table program you can now make use of
{DW_LNS_negate_stmt} to toggle the is-stmt flag, for example this
meaningless program:
lines {version 2 default_is_stmt 0} label {
include_dir "some_directory"
file_name "some_filename" 1
program {
{DW_LNS_negate_stmt}
{DW_LNE_end_sequence}
}
}
This new functionality will be used in a later commit.
gdb/testsuite/ChangeLog:
* lib/dwarf.exp (Dwarf::lines) Add support for modifying the
is-stmt flag in the line table.
Change-Id: Ia3f61d523826382dd2333f65b9aae368ad29c4a5
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2020-03-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* lib/dwarf.exp (Dwarf::lines) Add support for modifying the
|
||||
is-stmt flag in the line table.
|
||||
|
||||
2020-03-09 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* lib/gdb.exp (cached_file): Create cache dir.
|
||||
|
||||
@@ -1311,12 +1311,14 @@ namespace eval Dwarf {
|
||||
set _unit_addr_size default
|
||||
set _line_saw_program 0
|
||||
set _line_saw_file 0
|
||||
set _default_is_stmt 1
|
||||
|
||||
foreach { name value } $options {
|
||||
switch -exact -- $name {
|
||||
is_64 { set is_64 $value }
|
||||
version { set _unit_version $value }
|
||||
addr_size { set _unit_addr_size $value }
|
||||
default_is_stmt { set _default_is_stmt $value }
|
||||
default { error "unknown option $name" }
|
||||
}
|
||||
}
|
||||
@@ -1363,7 +1365,7 @@ namespace eval Dwarf {
|
||||
define_label $header_len_label
|
||||
|
||||
_op .byte 1 "minimum_instruction_length"
|
||||
_op .byte 1 "default_is_stmt"
|
||||
_op .byte $_default_is_stmt "default_is_stmt"
|
||||
_op .byte 1 "line_base"
|
||||
_op .byte 1 "line_range"
|
||||
_op .byte 10 "opcode_base"
|
||||
@@ -1438,6 +1440,10 @@ namespace eval Dwarf {
|
||||
_op .byte 1
|
||||
}
|
||||
|
||||
proc DW_LNS_negate_stmt {} {
|
||||
_op .byte 6
|
||||
}
|
||||
|
||||
proc DW_LNS_advance_pc {offset} {
|
||||
_op .byte 2
|
||||
_op .uleb128 ${offset}
|
||||
|
||||
Reference in New Issue
Block a user