aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2024-05-16 09:38:15 +0200
committerTom de Vries <tdevries@suse.de>2024-05-16 09:38:15 +0200
commit9c54f520db35bea9d02d121d4f368a5d196c5a8c (patch)
treef430062e74de35612ce4b712952bfd1f2ed655ea
parent3e61a22ce7bce793db9bc52ef2c30fd9070a1dd8 (diff)
downloadgdb-9c54f520db35bea9d02d121d4f368a5d196c5a8c.zip
gdb-9c54f520db35bea9d02d121d4f368a5d196c5a8c.tar.gz
gdb-9c54f520db35bea9d02d121d4f368a5d196c5a8c.tar.bz2
[gdb/testsuite] Generate DW_MACRO_define_strp in dwarf assembly
Add support for DW_MACRO_define_strp in dwarf assembly, and use it in test-case gdb.dwarf2/macro-source-path.exp. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
-rw-r--r--gdb/testsuite/gdb.dwarf2/macro-source-path.exp2
-rw-r--r--gdb/testsuite/lib/dwarf.exp28
2 files changed, 29 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/macro-source-path.exp b/gdb/testsuite/gdb.dwarf2/macro-source-path.exp
index bcfd2f2..b6b7b0b 100644
--- a/gdb/testsuite/gdb.dwarf2/macro-source-path.exp
+++ b/gdb/testsuite/gdb.dwarf2/macro-source-path.exp
@@ -125,6 +125,7 @@ proc do_test { test_name lines_version DW_AT_name main_file_idx directories
# PR 29034). We're not trying to replicate that here,
# this is not in the scope of this test.
define 0 "ONE 1"
+ define_strp 0 "THREE 3"
start_file 0 $::main_file_idx
# A macro defined at line 1 of the main file.
define 1 "TWO 2"
@@ -144,6 +145,7 @@ proc do_test { test_name lines_version DW_AT_name main_file_idx directories
gdb_test "print ONE" " = 1"
gdb_test "print TWO" " = 2"
+ gdb_test "print THREE" " = 3"
}
}
}
diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp
index 44862db..5b23a60 100644
--- a/gdb/testsuite/lib/dwarf.exp
+++ b/gdb/testsuite/lib/dwarf.exp
@@ -549,6 +549,9 @@ namespace eval Dwarf {
# The current CU's offset size.
variable _cu_offset_size
+ # The current macro unit's offset size.
+ variable _mu_offset_size
+
# Label generation number.
variable _label_num
@@ -2229,6 +2232,8 @@ namespace eval Dwarf {
if { ${is-64} } {
set flags [expr $flags | 0x1]
}
+ variable _mu_offset_size
+ set _mu_offset_size [expr ${is-64} ? 8 : 4]
if { ${debug-line-offset-label} != "" } {
set flags [expr $flags | 0x2]
@@ -2241,11 +2246,12 @@ namespace eval Dwarf {
"debug_line offset"
}
+ with_override Dwarf::define_strp Dwarf::_macro_unit_define_strp {
with_override Dwarf::define Dwarf::_macro_unit_define {
with_override Dwarf::start_file Dwarf::_macro_unit_start_file {
with_override Dwarf::end_file Dwarf::_macro_unit_end_file {
uplevel $body
- }}}
+ }}}}
}
# Emit a DW_MACRO_define entry.
@@ -2256,6 +2262,26 @@ namespace eval Dwarf {
_op .asciz "\"$text\"" "Macro definition"
}
+ # Emit a DW_MACRO_define_strp entry.
+
+ proc _macro_unit_define_strp { lineno text } {
+ _op .byte 0x5 "DW_MACRO_define_strp"
+ _op .uleb128 $lineno "Line number"
+
+ variable _strings
+ variable _mu_offset_size
+
+ if {![info exists _strings($text)]} {
+ set _strings($text) [new_label strp]
+ _defer_output .debug_str {
+ define_label $_strings($text)
+ _op .ascii [_quote $text]
+ }
+ }
+
+ _op_offset $_mu_offset_size "$_strings($text)" "strp: $text"
+ }
+
# Emit a DW_MACRO_start_file entry.
proc _macro_unit_start_file { lineno file_idx } {