]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Enable passing arguments to the inferior in debugglibc.sh
authorArjun Shankar <arjun@redhat.com>
Wed, 2 Oct 2019 11:59:43 +0000 (13:59 +0200)
committerArjun Shankar <ashankar@redhat.com>
Wed, 2 Oct 2019 12:01:24 +0000 (14:01 +0200)
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

ChangeLog
Makefile

index 23dc785f30e99ce2338439da21a1bf984191c4d4..4d81d560d790ab1c2b0d7e758686face19ddc8b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-10-02  Arjun Shankar  <arjun@redhat.com>
+
+       debugglibc.sh: Implement program arguments
+       * Makefile (debugglibc): Change variable definition.
+
 2019-10-01  Alistair Francis  <alistair.francis@wdc.com>
 
         * time/bits/types/struct_timespec.h: Add padding for the timespec if
index a50fb64dc2413e393885aa132e4fd946f017c416..a736c3afcc874c7d129677a98e42d11f8b54a3ea 100644 (file)
--- 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