[gdb/testsuite] Use unique files in gdb.dwarf2/dw2-lines.exp
authorTom de Vries <tdevries@suse.de>
Mon, 29 Nov 2021 08:51:10 +0000 (09:51 +0100)
committerTom de Vries <tdevries@suse.de>
Mon, 29 Nov 2021 08:51:10 +0000 (09:51 +0100)
While debugging a problem in gdb.dwarf2/dw2-lines.exp, I realized that the
test-case generates all executables and associated temporary files using the
same filenames.

Fix this by adding a new proc prefix_id in lib/gdb.exp, and using it in the
test-case.

Tested on x86_64-linux.

gdb/testsuite/gdb.dwarf2/dw2-lines.exp
gdb/testsuite/lib/gdb.exp

index 9cc24955102e06714fe0a128177ea2640db3b818..09b6052764013c5b149c0b6b2dc94cd5210c4f5b 100644 (file)
@@ -20,7 +20,7 @@ load_lib dwarf.exp
 # This test can only be run on targets which support DWARF-2 and use gas.
 require dwarf2_support 1
 
-standard_testfile .c -dw.S
+standard_testfile .c
 
 with_shared_gdb {
     set func_info_vars \
@@ -46,6 +46,8 @@ proc test_1 { _cv _cdw64 _lv _ldw64 {_string_form ""}} {
     set ldw64 $_ldw64
     set string_form $_string_form
 
+    standard_testfile .c [prefix_id]-dw.S
+
     set asm_file [standard_output_file $srcfile2]
     Dwarf::assemble $asm_file {
        declare_labels Llines
@@ -103,7 +105,7 @@ proc test_1 { _cv _cdw64 _lv _ldw64 {_string_form ""}} {
        }
     }
 
-    if { [prepare_for_testing "failed to prepare" ${testfile} \
+    if { [prepare_for_testing "failed to prepare" ${testfile}.[prefix_id] \
              [list $srcfile $asm_file] {nodebug}] } {
        return -1
     }
index 77f889e7404441bca37d0737871262f482aff3c3..b145fe8e2e83fd2434f174dd8ca367a60eb8f898 100644 (file)
@@ -2498,6 +2498,32 @@ proc proc_with_prefix {name arguments body} {
     proc $name $arguments [list with_test_prefix $name $body]
 }
 
+# Return an id corresponding to the test prefix stored in $pf_prefix, which
+# is more suitable for use in a file name.
+# F.i., for a pf_prefix:
+#   gdb.dwarf2/dw2-lines.exp: \
+#     cv=5: cdw=64: lv=5: ldw=64: string_form=line_strp:
+# return an id:
+#   cv-5-cdw-32-lv-5-ldw-64-string_form-line_strp
+
+proc prefix_id {} {
+    global pf_prefix
+    set id $pf_prefix
+
+    # Strip ".exp: " prefix.
+    set id [regsub  {.*\.exp: } $id {}]
+
+    # Strip colon suffix.
+    set id [regsub  {:$} $id {}]
+
+    # Strip spaces.
+    set id [regsub -all { } $id {}]
+
+    # Replace colons, equal signs.
+    set id [regsub -all \[:=\] $id -]
+
+    return $id
+}
 
 # Run BODY in the context of the caller.  After BODY is run, the variables
 # listed in VARS will be reset to the values they had before BODY was run.