[PATCH] Enable passing arguments to the inferior in debugglibc.sh
Arjun Shankar
arjun.is@lostca.se
Mon Sep 30 15:04:00 GMT 2019
This patch adds the ability to run debugglibc.sh's inferior program with
arguments specified on the command line. This enables convenient debugging
of non-testcase programs such as iconv/iconv_prog or other dynamically
linked programs. Program arguments may be passed using `--' as a separator.
For example:
$ ./debugglibc.sh -b iconv -- iconv/iconv_prog -f ASCII -t UTF-8 input.txt
2019-09-30 Arjun Shankar <arjun@redhat.com>
debugglibc.sh: Implement program arguments
* Makefile (debugglibc): Change variable definition.
--
Discussion Notes:
Initial version: https://sourceware.org/ml/libc-alpha/2019-09/msg00502.html
As per Gabriel's suggestions:
* Changed the patch to only handle program arguments when `--' is used
* Documented this in --help (with minor changes: testcase -> program)
Also:
* It made sense to disable using --direct when program arguments are given
---
Makefile | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/Makefile b/Makefile
index a50fb64dc2..a736c3afcc 100644
--- a/Makefile
+++ b/Makefile
@@ -202,9 +202,12 @@ unset ENVVARS
usage()
{
cat << EOF
-Usage: $$0 [OPTIONS] <testcase>
+Usage: $$0 [OPTIONS] <program>
- where <testcase> is the path to the program being tested.
+ Or: $$0 [OPTIONS] -- <program> [<args>]...
+
+ where <program> is the path to the program being tested,
+ and <args> are the arguments to be passed to it.
Options:
@@ -224,11 +227,13 @@ Options:
The following options do not take arguments:
-i, --no-direct
- Selects whether to pass the flag --direct to gdb.
- Required for glibc test cases and not allowed for non-glibc tests.
- Default behaviour is to pass the flag --direct to gdb.
+ Selects whether to pass the --direct flag to the program.
+ --direct is useful when debugging glibc test cases. It inhibits the
+ tests from forking and executing in a subprocess.
+ Default behaviour is to pass the --direct flag, except when the
+ program is run with user specified arguments using the "--" separator.
-s, --no-symbols-file
- Do not tell GDB to load debug symbols from the testcase.
+ Do not tell GDB to load debug symbols from the program.
EOF
}
@@ -255,8 +260,17 @@ do
-s|--no-symbols-file)
SYMBOLSFILE=false
;;
+ --)
+ shift
+ TESTCASE=$$1
+ COMMANDLINE="$$@"
+ # Don't add --direct when user specifies program arguments
+ DIRECT=false
+ break
+ ;;
*)
TESTCASE=$$1
+ COMMANDLINE=$$TESTCASE
;;
esac
shift
@@ -302,7 +316,7 @@ __ENVVARS__
__SYMBOLSFILE__
break _dl_start_user
run --library-path $(rpath-link):$${BUILD_DIR}/nptl_db \
-__TESTCASE__ __DIRECT__
+__COMMANDLINE__ __DIRECT__
__BREAKPOINTS__
EOF
}
@@ -311,7 +325,7 @@ EOF
template | sed \
-e "s|__ENVVARS__|$$ENVVARSCMD|" \
-e "s|__SYMBOLSFILE__|$$SYMBOLSFILE|" \
- -e "s|__TESTCASE__|$$TESTCASE|" \
+ -e "s|__COMMANDLINE__|$$COMMANDLINE|" \
-e "s|__DIRECT__|$$DIRECT|" \
-e "s|__BREAKPOINTS__|$$BREAKPOINTS|" \
> $$CMD_FILE
--
2.21.0
More information about the Libc-alpha
mailing list