]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix quoting issues in gdb.dwarf2 for remote host
authorTom de Vries <tdevries@suse.de>
Mon, 27 Mar 2023 11:58:09 +0000 (13:58 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 27 Mar 2023 11:58:09 +0000 (13:58 +0200)
A few test-cases in gdb.dwarf2 use something like:
...
  additional_flags=\"-DFOO=BAR + 10\"
...
which doesn't work on remote host.

Fix this by introducing a new proc quote_for_host that also works for remote
host, such that we have:
...
  additional_flags=[quote_for_host -DFOO=BAR + 10]
...

Tested on x86_64-linux.

gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp
gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
gdb/testsuite/lib/gdb.exp

index 2ec3d11d8acefc5b5fda27923a2ecc8896aede6b..0868b69f15e4dc2ca74119c304e47b7f9cc60302 100644 (file)
@@ -37,13 +37,16 @@ set sources \
         ${testfile}-hello.c \
         ${testfile}-world-dbg.S \
         ${testfile}-world.c]
-set flags \
-    [list \
-        "nodebug" \
-        "additional_flags=\"-DHELLO_START=$hello_start\"" \
-        "additional_flags=\"-DHELLO_END=$hello_start + $hello_len\"" \
-        "additional_flags=\"-DWORLD_START=$world_start\"" \
-        "additional_flags=\"-DWORLD_END=$world_start + $world_len\""]
+
+set flags {}
+lappend flags nodebug
+lappend flags additional_flags=[quote_for_host -DHELLO_START=$hello_start]
+lappend flags additional_flags=[quote_for_host -DHELLO_END=$hello_start \
+                                   + $hello_len]
+lappend flags additional_flags=[quote_for_host -DWORLD_START=$world_start]
+lappend flags additional_flags=[quote_for_host -DWORLD_END=$world_start \
+                                   + $world_len]
+
 set executable ${testfile}
 if {[build_executable ${testfile}.exp ${executable} $sources $flags] == -1} {
     return -1
index d9a552a8c9da3196aaddc3c6386ca673cfa1f5c8..09c484a8ebb60d0ea19ea81f54ad934d2708c6f3 100644 (file)
@@ -25,12 +25,18 @@ lassign [function_range func_loopfb \
              "${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3}"] \
     func_loopfb_start func_loopfb_len
 
-set flags \
-    [list \
-         "additional_flags=\"-DFUNC_NOFB_START=$func_nofb_start\"" \
-         "additional_flags=\"-DFUNC_NOFB_END=$func_nofb_start + $func_nofb_len\"" \
-         "additional_flags=\"-DFUNC_LOOPFB_START=$func_loopfb_start\"" \
-         "additional_flags=\"-DFUNC_LOOPFB_END=$func_loopfb_start + $func_loopfb_len\""]
+set flags {}
+lappend flags \
+    additional_flags=[quote_for_host -DFUNC_NOFB_START=$func_nofb_start]
+lappend flags \
+    additional_flags=[quote_for_host -DFUNC_NOFB_END=$func_nofb_start \
+                         + $func_nofb_len]
+lappend flags \
+    additional_flags=[quote_for_host -DFUNC_LOOPFB_START=$func_loopfb_start]
+lappend flags \
+    additional_flags=[quote_for_host -DFUNC_LOOPFB_END=$func_loopfb_start \
+                         + $func_loopfb_len]
+
 set executable ${testfile}
 
 if { [prepare_for_testing_full "failed to prepare" \
index c0762cbb3a869d97ceacbd7973c1bd1aafa37165..2cf128fdd68dbdeb3de577704eb95adcd05df8e6 100644 (file)
@@ -4700,6 +4700,19 @@ proc escape_for_host { str } {
     return [string map $map $str]
 }
 
+# Add double quotes around ARGS, sufficiently escaped for use on host
+# commandline.
+
+proc quote_for_host { args } {
+    set str [join $args]
+    if { [is_remote host] } {
+       set str [join [list {\"} $str {\"}] ""]
+    } else {
+       set str [join [list {"} $str {"}] ""]
+    }
+    return $str
+}
+
 # Compile source files specified by SOURCE into a binary of type TYPE at path
 # DEST.  gdb_compile is implemented using DejaGnu's target_compile, so the type
 # parameter and most options are passed directly to it.