Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: stanshebs@earthlink.net (Stan Shebs),
	mark.kettenis@xs4all.nl,        tromey@redhat.com
Cc: gdb-patches@sourceware.org
Subject: [rfc] Avoid '+' in file names (Re: [rfc] Re: Remote testsuite problem: invalid executable cache)
Date: Tue, 26 Jul 2011 17:31:00 -0000	[thread overview]
Message-ID: <201107261718.p6QHIjd5017432@d06av02.portsmouth.uk.ibm.com> (raw)
In-Reply-To: <4E2DE2EB.6020402@earthlink.net> from "Stan Shebs" at Jul 25, 2011 02:40:59 PM

Stan Shebs wrote:
> On 7/25/11 10:40 AM, Ulrich Weigand wrote:
> > Mark Kettenis wrote:
> >
> >>> +mi_gdb_load ${binfile}-c++
> >> Using the '+' character in filenames may not be the best idea.
> > Is this really a problem?  I thought '+' was supported just about
> > everywhere ...  (There's filenames containing '+' in the GDB source
> > repository, for example.)
> 
> I would be inclined to avoid '+' myself, not because of the filesystem, 
> but because of potential tcl/dejagnu regexp hell.  (Yes, it can be 
> worked around, but it gets annoying when 54 backslashes in a row is not 
> enough :-) )

OK, so this patch avoids use of '+' in filenames.  The Python test now
always calls the C version of the generated executable file "${binfile}",
and the C++ version "${binfile}-cxx".  As convention, the subroutines
in those tests now receive the filename under test as extra parameter
and do not attempt to reconstruct it from the language argument.

Some tests used to build the C version twice, once as ${binfile} and
once as ${binfile}-c, which seems unnecessary.  The patch removes the
second re-compile as C in those cases.

Tested on arm-linux-gnueabi target from a i386-linux host.

Tom, is this version still OK with you?

Bye,
Ulrich


ChangeLog:

	* gdb.python/py-mi.exp: Avoid '+' in filenames.  Call C version of
	executable file "${binfile}", C++ version "${binfile}-cxx".
	* gdb.python/py-prettyprint.exp: Likewise.
	* gdb.python/py-symbol.exp: Likewise.
	* gdb.python/py-type.exp: Likewise.
	* gdb.python/py-value.exp: Likewise.
	* gdb.python/py-template.exp (test_template_arg): Pass full executable
	file name instead of just suffix.

Index: gdb/testsuite/gdb.python/py-mi.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-mi.exp,v
retrieving revision 1.12
diff -u -p -r1.12 py-mi.exp
--- gdb/testsuite/gdb.python/py-mi.exp	22 Jul 2011 18:01:43 -0000	1.12
+++ gdb/testsuite/gdb.python/py-mi.exp	26 Jul 2011 17:02:01 -0000
@@ -286,7 +286,7 @@ mi_list_varobj_children nstype2 {
 
 # C++ MI tests
 gdb_exit
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-c++" \
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-cxx" \
 	   executable {debug c++ additional_flags=-DMI}] != "" } {
     untested "Couldn't compile ${srcfile} in c++ mode"
     return -1
@@ -297,7 +297,7 @@ if [mi_gdb_start] {
 }
 mi_delete_breakpoints
 mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}-c++
+mi_gdb_load ${binfile}-cxx
 
 if {[lsearch -exact [mi_get_features] python] < 0} {
     unsupported "python support is disabled"
Index: gdb/testsuite/gdb.python/py-prettyprint.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-prettyprint.exp,v
retrieving revision 1.21
diff -u -p -r1.21 py-prettyprint.exp
--- gdb/testsuite/gdb.python/py-prettyprint.exp	22 Jul 2011 18:01:43 -0000	1.21
+++ gdb/testsuite/gdb.python/py-prettyprint.exp	26 Jul 2011 17:02:01 -0000
@@ -33,9 +33,9 @@ gdb_start
 # Skip all tests if Python scripting is not enabled.
 if { [skip_python_tests] } { continue }
 
-proc run_lang_tests {lang} {
-    global srcdir subdir srcfile binfile testfile hex
-    if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-${lang}" executable "debug $lang"] != "" } {
+proc run_lang_tests {exefile lang} {
+    global srcdir subdir srcfile testfile hex
+    if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" executable "debug $lang"] != "" } {
 	untested "Couldn't compile ${srcfile} in $lang mode"
 	return -1
     }
@@ -46,7 +46,7 @@ proc run_lang_tests {lang} {
     gdb_exit
     gdb_start
     gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load ${binfile}-${lang}
+    gdb_load ${exefile}
 
     if ![runto_main ] then {
 	perror "couldn't run to breakpoint"
@@ -113,16 +113,11 @@ proc run_lang_tests {lang} {
     remote_file host delete ${remote_python_file}
 }
 
-run_lang_tests "c"
-run_lang_tests "c++"
+run_lang_tests "${binfile}" "c"
+run_lang_tests "${binfile}-cxx" "c++"
 
 # Run various other tests.
 
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug"] != "" } {
-    untested "Couldn't compile ${srcfile}"
-    return -1
-}
-
 # Start with a fresh gdb.
 gdb_exit
 gdb_start
Index: gdb/testsuite/gdb.python/py-symbol.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-symbol.exp,v
retrieving revision 1.7
diff -u -p -r1.7 py-symbol.exp
--- gdb/testsuite/gdb.python/py-symbol.exp	22 Jul 2011 18:01:43 -0000	1.7
+++ gdb/testsuite/gdb.python/py-symbol.exp	26 Jul 2011 17:02:01 -0000
@@ -99,7 +99,7 @@ gdb_test "python print t\[0\].symtab" "g
 
 # C++ tests
 # Recompile binary.
- if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-c++" executable "debug c++"] != "" } {
+ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-cxx" executable "debug c++"] != "" } {
      untested "Couldn't compile ${srcfile} in c++ mode"
      return -1
  }
@@ -108,7 +108,7 @@ gdb_test "python print t\[0\].symtab" "g
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}-c++
+gdb_load ${binfile}-cxx
 
 if ![runto_main] then {
     fail "Can't run to main"
Index: gdb/testsuite/gdb.python/py-template.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-template.exp,v
retrieving revision 1.8
diff -u -p -r1.8 py-template.exp
--- gdb/testsuite/gdb.python/py-template.exp	22 Jul 2011 18:01:43 -0000	1.8
+++ gdb/testsuite/gdb.python/py-template.exp	26 Jul 2011 17:02:01 -0000
@@ -40,15 +40,15 @@ gdb_reinitialize_dir $srcdir/$subdir
 # Skip all tests if Python scripting is not enabled.
 if { [skip_python_tests] } { continue }
 
-proc test_template_arg {name type} {
-    global testfile srcdir subdir srcfile binfile
-    if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-${name}" \
+proc test_template_arg {exefile type} {
+    global testfile srcdir subdir srcfile
+    if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" \
 		executable \
 	  	[list debug c++ additional_flags="-DTYPE=$type"]] != "" } {
 	untested $type
 	return -1
     }
-    gdb_load ${binfile}-${name}
+    gdb_load ${exefile}
     if ![runto_main ] then {
 	perror "couldn't run to breakpoint"
 	return
@@ -62,11 +62,11 @@ proc test_template_arg {name type} {
     gdb_test "python print foo.type.template_argument(0)" $t $type
 }
 
-test_template_arg "ci" "const int"
-test_template_arg "vi" "volatile int"
-test_template_arg "cir" "const int &"
-test_template_arg "vir" "volatile int &"
-test_template_arg "vipc" "volatile int * const"
-test_template_arg "vipcp" "volatile int * const *"
-test_template_arg "cipv" "const int * volatile"
-test_template_arg "cipvpcpvp" "const int * volatile * const * volatile *"
+test_template_arg "${binfile}-ci" "const int"
+test_template_arg "${binfile}-vi" "volatile int"
+test_template_arg "${binfile}-cir" "const int &"
+test_template_arg "${binfile}-vir" "volatile int &"
+test_template_arg "${binfile}-vipc" "volatile int * const"
+test_template_arg "${binfile}-vipcp" "volatile int * const *"
+test_template_arg "${binfile}-cipv" "const int * volatile"
+test_template_arg "${binfile}-cipvpcpvp" "const int * volatile * const * volatile *"
Index: gdb/testsuite/gdb.python/py-type.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-type.exp,v
retrieving revision 1.12
diff -u -p -r1.12 py-type.exp
--- gdb/testsuite/gdb.python/py-type.exp	22 Jul 2011 18:01:43 -0000	1.12
+++ gdb/testsuite/gdb.python/py-type.exp	26 Jul 2011 17:02:01 -0000
@@ -31,23 +31,23 @@ if [get_compiler_info not-used c++] {
 }
 
 # Build inferior to language specification.
-proc build_inferior {lang} {
-  global srcdir subdir srcfile binfile testfile hex
+proc build_inferior {exefile lang} {
+  global srcdir subdir srcfile testfile hex
 
-  if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-${lang}" executable "debug $lang"] != "" } {
+  if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" executable "debug $lang"] != "" } {
       untested "Couldn't compile ${srcfile} in $lang mode"
       return -1
   }
 }
 
 # Restart GDB.
-proc restart_gdb {lang} { 
-  global srcdir subdir srcfile binfile testfile hex
+proc restart_gdb {exefile} { 
+  global srcdir subdir srcfile testfile hex
 
   gdb_exit
   gdb_start
   gdb_reinitialize_dir $srcdir/$subdir
-  gdb_load ${binfile}-${lang}
+  gdb_load ${exefile}
 
   if ![runto_main ] then {
       perror "couldn't run to breakpoint"
@@ -161,8 +161,8 @@ proc test_template {} {
 }
 
 # Perform C Tests.
-build_inferior "c"
-restart_gdb "c"
+build_inferior "${binfile}" "c"
+restart_gdb "${binfile}"
 
 # Skip all tests if Python scripting is not enabled.
 if { [skip_python_tests] } { continue }
@@ -171,8 +171,8 @@ runto_bp "break to inspect struct and ar
 test_fields "c"
 
 # Perform C++ Tests.
-build_inferior "c++"
-restart_gdb "c++"
+build_inferior "${binfile}-cxx" "c++"
+restart_gdb "${binfile}-cxx"
 runto_bp "break to inspect struct and array."
 test_fields "c++"
 test_base_class
Index: gdb/testsuite/gdb.python/py-value.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value.exp,v
retrieving revision 1.21
diff -u -p -r1.21 py-value.exp
--- gdb/testsuite/gdb.python/py-value.exp	22 Jul 2011 18:01:43 -0000	1.21
+++ gdb/testsuite/gdb.python/py-value.exp	26 Jul 2011 17:02:01 -0000
@@ -25,9 +25,15 @@ load_lib gdb-python.exp
 set testfile "py-value"
 set srcfile ${testfile}.c
 set binfile ${objdir}/${subdir}/${testfile}
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-    untested "Couldn't compile ${srcfile}"
-    return -1
+
+# Build inferior to language specification.
+proc build_inferior {exefile lang} {
+  global srcdir subdir srcfile testfile hex
+
+  if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" executable "debug $lang"] != "" } {
+      untested "Couldn't compile ${srcfile} in $lang mode"
+      return -1
+  }
 }
 
 proc test_value_creation {} {
@@ -323,19 +329,15 @@ proc test_value_after_death {} {
 # the type of the value was not being checked before allowing a
 # subscript operation to proceed.
 
-proc test_subscript_regression {lang} {
+proc test_subscript_regression {exefile lang} {
 
- global srcdir subdir srcfile binfile testfile hex
- if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}-${lang}" executable "debug $lang"] != "" } {
-     untested "Couldn't compile ${srcfile} in $lang mode"
-     return -1
- }
+ global srcdir subdir
 
  # Start with a fresh gdb.
  gdb_exit
  gdb_start
  gdb_reinitialize_dir $srcdir/$subdir
- gdb_load ${binfile}-${lang}
+ gdb_load ${exefile}
 
  if ![runto_main ] then {
      perror "couldn't run to breakpoint"
@@ -426,6 +428,9 @@ proc test_value_hash {} {
     gdb_test "python print one.__hash__() == hash(one)" "True" "Test inbuilt hash"
 }
 
+# Build C and C++ versions of executable
+build_inferior "${binfile}" "c"
+build_inferior "${binfile}-cxx" "c++"
 
 # Start with a fresh gdb.
 
@@ -457,7 +462,6 @@ test_inferior_function_call
 test_lazy_strings
 test_value_after_death
 
-# The following test recompiles the binary to test either C or C++
-# values. 
-test_subscript_regression "c++"
-test_subscript_regression "c"
+# Test either C or C++ values. 
+test_subscript_regression "${binfile}" "c"
+test_subscript_regression "${binfile}-cxx" "c++"

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


  reply	other threads:[~2011-07-26 17:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-22 15:22 Remote testsuite problem: invalid executable cache Ulrich Weigand
2011-07-22 16:35 ` Jan Kratochvil
2011-07-22 16:53 ` Daniel Jacobowitz
2011-07-22 17:53   ` [rfc] " Ulrich Weigand
2011-07-22 18:40     ` Tom Tromey
2011-07-22 18:56       ` Ulrich Weigand
2011-07-24 18:04     ` Mark Kettenis
2011-07-25 18:33       ` Ulrich Weigand
2011-07-26  1:01         ` Stan Shebs
2011-07-26 17:31           ` Ulrich Weigand [this message]
2011-07-26 18:20             ` [rfc] Avoid '+' in file names (Re: [rfc] Re: Remote testsuite problem: invalid executable cache) Tom Tromey
2011-07-26 19:20               ` Ulrich Weigand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201107261718.p6QHIjd5017432@d06av02.portsmouth.uk.ibm.com \
    --to=uweigand@de.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    --cc=stanshebs@earthlink.net \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox