[gdb/testsuite] Add escape_for_host
authorTom de Vries <tdevries@suse.de>
Fri, 17 Mar 2023 12:29:13 +0000 (13:29 +0100)
committerTom de Vries <tdevries@suse.de>
Fri, 17 Mar 2023 12:29:13 +0000 (13:29 +0100)
In gdb_compile we have:
...
           lappend new_options "ldflags=-Wl,-rpath,\\\$ORIGIN"
...
and we could improve readability by using {} rather than "":
...
           lappend new_options {ldflags=-Wl,-rpath,\$ORIGIN}
...

But rather than manually adding escapes in a string, add a new proc
escape_for_host that care of this for us, allowing us to write:
...
           lappend new_options [escape_for_host {ldflags=-Wl,-rpath,$ORIGIN}]
...

Tested on x86_64-linux.

gdb/testsuite/lib/gdb.exp

index 5f32181f60e1ae9069f46323738678311145e7b2..b45c73fcc1aaac33409b723679f095a2eedd2d24 100644 (file)
@@ -4653,6 +4653,16 @@ proc gdb_can_simple_compile {name code {type object} {compile_flags ""}} {
 global gdb_saved_set_unbuffered_mode_obj
 set gdb_saved_set_unbuffered_mode_obj ""
 
+# Escape STR sufficiently for use on host commandline.
+
+proc escape_for_host { str } {
+    set map {
+       {$} {\$}
+    }
+
+    return [string map $map $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.
@@ -4926,7 +4936,7 @@ proc gdb_compile {source dest type options} {
            if { $shlib_load } {
                lappend new_options "libs=-ldl"
            }
-           lappend new_options "ldflags=-Wl,-rpath,\\\$ORIGIN"
+           lappend new_options [escape_for_host {ldflags=-Wl,-rpath,$ORIGIN}]
        }
     }
     set options $new_options