diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-02-04 17:50:40 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-03-10 22:32:05 +0000 |
commit | cecf854779049c3f491caf23f80d13eabbb90c86 (patch) | |
tree | da5bba4a9c3e64b3a66902642494eae996fbcb69 | |
parent | a6a1f5e050c3d4444b8074ba9ba02f547b725892 (diff) | |
download | gdb-cecf854779049c3f491caf23f80d13eabbb90c86.zip gdb-cecf854779049c3f491caf23f80d13eabbb90c86.tar.gz gdb-cecf854779049c3f491caf23f80d13eabbb90c86.tar.bz2 |
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
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/lib/dwarf.exp | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f9e0c20..a98e56d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -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. diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp index 6c6ffbe..417b22d 100644 --- a/gdb/testsuite/lib/dwarf.exp +++ b/gdb/testsuite/lib/dwarf.exp @@ -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} |