aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2023-03-27 13:58:09 +0200
committerTom de Vries <tdevries@suse.de>2023-03-27 13:58:09 +0200
commitd0498b325e3c5d65372087fde46351b55980f111 (patch)
tree79382085ab52d9bf6645766b081ff16ebe7058b3
parent845d99df89b8eee01de354f49489b2863673122c (diff)
downloadbinutils-d0498b325e3c5d65372087fde46351b55980f111.zip
binutils-d0498b325e3c5d65372087fde46351b55980f111.tar.gz
binutils-d0498b325e3c5d65372087fde46351b55980f111.tar.bz2
[gdb/testsuite] Fix quoting issues in gdb.dwarf2 for remote host
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.
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp17
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp18
-rw-r--r--gdb/testsuite/lib/gdb.exp13
3 files changed, 35 insertions, 13 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp b/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp
index 2ec3d11..0868b69 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp
@@ -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
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp b/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
index d9a552a..09c484a 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
@@ -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" \
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index c0762cb..2cf128f 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -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.