diff options
author | Tom de Vries <tdevries@suse.de> | 2023-03-27 13:58:09 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-03-27 13:58:09 +0200 |
commit | d0498b325e3c5d65372087fde46351b55980f111 (patch) | |
tree | 79382085ab52d9bf6645766b081ff16ebe7058b3 | |
parent | 845d99df89b8eee01de354f49489b2863673122c (diff) | |
download | binutils-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.exp | 17 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp | 18 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 13 |
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. |