aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-lines.exp9
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp5
-rw-r--r--gdb/testsuite/lib/dwarf.exp33
3 files changed, 28 insertions, 19 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-lines.exp b/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
index 3cbbd28..b24eec0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
@@ -79,10 +79,15 @@ proc test_1 { _cv _cdw64 _lv _ldw64 {_string_form ""}} {
}
lines [list version $lv is_64 $ldw64 string_form $string_form] Llines {
- include_dir "${srcdir}/${subdir}"
- file_name "$srcfile" 1
+ set diridx [include_dir "${srcdir}/${subdir}"]
+ file_name "$srcfile" $diridx
program {
+ # If using DWARF 5, we want to refer to file 0, but the LNP
+ # state machine is still initialized with file 1. So we need
+ # to set the current file explicitly.
+ DW_LNS_set_file $diridx
+
DW_LNE_set_address bar_label
line [line_for bar_label]
DW_LNS_copy
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp b/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp
index 7fd1bd7..9ce97fc 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-prologue-end.exp
@@ -48,10 +48,11 @@ Dwarf::assemble $asm_file {
}
lines {version 5} lines_label {
- include_dir "${srcdir}/${subdir}"
- file_name "$srcfile" 1
+ set diridx [include_dir "${srcdir}/${subdir}"]
+ file_name "$srcfile" $diridx
program {
+ DW_LNS_set_file $diridx
DW_LNE_set_address $main_start
line [gdb_get_line_number "main prologue"]
DW_LNS_copy
diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp
index 9c92115..55e97c3 100644
--- a/gdb/testsuite/lib/dwarf.exp
+++ b/gdb/testsuite/lib/dwarf.exp
@@ -2277,14 +2277,32 @@ namespace eval Dwarf {
_op .byte 1 "standard opcode 9"
_op .byte 0 "standard opcode 10"
+ # Add a directory entry to the line table header's directory table.
+ #
+ # Return the index by which this entry can be referred to.
proc include_dir {dirname} {
variable _line_include_dirs
lappend _line_include_dirs $dirname
+
+ if { $Dwarf::_line_unit_version >= 5 } {
+ return [expr [llength $_line_include_dirs] - 1]
+ } else {
+ return [llength $_line_include_dirs]
+ }
}
+ # Add a file name entry to the line table header's file names table.
+ #
+ # Return the index by which this entry can be referred to.
proc file_name {filename diridx} {
variable _line_file_names
lappend _line_file_names $filename $diridx
+
+ if { $Dwarf::_line_unit_version >= 5 } {
+ return [expr [llength $_line_file_names] - 1]
+ } else {
+ return [llength $_line_file_names]
+ }
}
proc _line_finalize_header {} {
@@ -2316,15 +2334,8 @@ namespace eval Dwarf {
}
set nr_dirs [llength $_line_include_dirs]
- # For entry 0.
- set nr_dirs [expr $nr_dirs + 1]
_op .byte $nr_dirs "directory_count"
- # Entry 0.
- set dirname [lindex $_line_include_dirs 0]
- set _line_include_dirs \
- [concat [list $dirname] $_line_include_dirs]
-
foreach dirname $_line_include_dirs {
switch $_line_string_form {
string {
@@ -2360,16 +2371,8 @@ namespace eval Dwarf {
"file_name_entry_format (form: DW_FORM_udata)"
set nr_files [expr [llength $_line_file_names] / 2]
- # For entry 0.
- set nr_files [expr $nr_files + 1]
_op .byte $nr_files "file_names_count"
- # Entry 0.
- set filename [lindex $_line_file_names 0]
- set diridx [lindex $_line_file_names 1]
- set _line_file_names \
- [concat [list $filename $diridx] $_line_file_names]
-
foreach { filename diridx } $_line_file_names {
switch $_line_string_form {
string {