This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc] Enable passing arguments to the inferior in debugglibc.sh


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=21417aaa88fb0c32bf9af66d0a650f24d3859eec

commit 21417aaa88fb0c32bf9af66d0a650f24d3859eec
Author: Arjun Shankar <arjun@redhat.com>
Date:   Wed Oct 2 13:59:43 2019 +0200

    Enable passing arguments to the inferior in debugglibc.sh
    
    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

Diff:
---
 ChangeLog |  5 +++++
 Makefile  | 30 ++++++++++++++++++++++--------
 2 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 23dc785..4d81d56 100644
--- 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
diff --git a/Makefile b/Makefile
index a50fb64..a736c3a 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]