aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2020-02-04 17:50:40 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2020-03-10 22:32:05 +0000
commitcecf854779049c3f491caf23f80d13eabbb90c86 (patch)
treeda5bba4a9c3e64b3a66902642494eae996fbcb69
parenta6a1f5e050c3d4444b8074ba9ba02f547b725892 (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--gdb/testsuite/lib/dwarf.exp8
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}