GP-5667: Fix gdbi and lldb argument passing in bash.

This commit is contained in:
Dan 2025-05-14 14:58:39 +00:00
parent 70820402d7
commit 6ab32ff426
9 changed files with 21 additions and 15 deletions

View file

@ -52,4 +52,4 @@ function launch-gdb() {
"${args[@]}"
}
launch-gdb
launch-gdb "$@"

View file

@ -64,7 +64,7 @@ function do-installation() {
"${sshargs[@]}"
}
launch-gdb-ssh
launch-gdb-ssh "$@"
if check-result-and-prompt-mitigation $? "
It appears ghidragdb is missing from the remote system. This can happen if you
forgot to install the required package. This can also happen if you installed

View file

@ -49,9 +49,11 @@ target_image="$1"
shift
function launch-gdb() {
local qargs
printf -v qargs '%q ' "$@"
local -a args
compute-gdb-remote-args "$target_image" "remote | '$OPT_SSH_PATH' $OPT_EXTRA_SSH_ARGS '$OPT_HOST' '$OPT_GDBSERVER_PATH' $OPT_EXTRA_GDBSERVER_ARGS - '$target_image' $@" "$GHIDRA_TRACE_RMI_ADDR"
compute-gdb-remote-args "$target_image" "remote | '$OPT_SSH_PATH' $OPT_EXTRA_SSH_ARGS '$OPT_HOST' '$OPT_GDBSERVER_PATH' $OPT_EXTRA_GDBSERVER_ARGS - '$target_image' $qargs" "$GHIDRA_TRACE_RMI_ADDR"
"${args[@]}"
}
launch-gdb
launch-gdb "$@"

View file

@ -52,4 +52,4 @@ function launch-gdb() {
"${args[@]}"
}
launch-gdb
launch-gdb "$@"

View file

@ -28,13 +28,15 @@ add-gdb-init-args() {
add-gdb-image-and-args() {
target_image=$1
target_args=$2
shift
if [ -n "$target_image" ]; then
args+=(-ex "file '$target_image'")
fi
if [ -n "$target_args" ]; then
args+=(-ex "set args $target_args")
if [ "$#" -ne 0 ]; then
local qargs
printf -v qargs '%q ' "$@"
args+=(-ex "set args $qargs")
fi
}
@ -104,7 +106,7 @@ compute-gdb-remote-args() {
args+=("$OPT_GDB_PATH")
add-gdb-init-args
add-gdb-image-and-args "$target_image" ""
add-gdb-image-and-args "$target_image"
args+=(-ex "echo Connecting to $target_cx\n")
args+=(-ex "target $target_cx")
add-gdb-connect-and-sync "$rmi_address"

View file

@ -51,4 +51,4 @@ function launch-lldb() {
"${args[@]}"
}
launch-lldb
launch-lldb "$@"

View file

@ -49,4 +49,4 @@ function launch-lldb() {
"${args[@]}"
}
launch-lldb
launch-lldb "$@"

View file

@ -63,7 +63,7 @@ function do-installation() {
"${sshargs[@]}"
}
launch-lldb-ssh
launch-lldb-ssh "$@"
if check-result-and-prompt-mitigation $? "
It appears ghidralldb is missing from the remote system. This can happen if you
forgot to install the required package. This can also happen if you installed

View file

@ -27,7 +27,7 @@ add-lldb-init-args() {
add-lldb-image-and-args() {
target_image=$1
target_args=$2
shift
if [ -n "$target_image" ]; then
if [ -n "$OPT_ARCH" ]; then
@ -36,8 +36,10 @@ add-lldb-image-and-args() {
args+=(-o "target create '$target_image'")
fi
fi
if [ -n "$target_args" ]; then
args+=(-o "settings set target.run-args $target_args")
if [ "$#" -ne 0 ]; then
local qargs
printf -v qargs '%q ' "$@"
args+=(-o "settings set -- target.run-args $qargs")
fi
}