From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29793 invoked by alias); 26 Jul 2011 17:19:11 -0000 Received: (qmail 29774 invoked by uid 22791); 26 Jul 2011 17:19:09 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,MSGID_FROM_MTA_HEADER,RP_MATCHES_RCVD,TW_CX X-Spam-Check-By: sourceware.org Received: from mtagate1.uk.ibm.com (HELO mtagate1.uk.ibm.com) (194.196.100.161) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 26 Jul 2011 17:18:52 +0000 Received: from d06nrmr1707.portsmouth.uk.ibm.com (d06nrmr1707.portsmouth.uk.ibm.com [9.149.39.225]) by mtagate1.uk.ibm.com (8.13.1/8.13.1) with ESMTP id p6QHIlNx000635 for ; Tue, 26 Jul 2011 17:18:47 GMT Received: from d06av02.portsmouth.uk.ibm.com (d06av02.portsmouth.uk.ibm.com [9.149.37.228]) by d06nrmr1707.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p6QHIlL82076806 for ; Tue, 26 Jul 2011 18:18:47 +0100 Received: from d06av02.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p6QHIlhn017450 for ; Tue, 26 Jul 2011 11:18:47 -0600 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with SMTP id p6QHIjd5017432; Tue, 26 Jul 2011 11:18:45 -0600 Message-Id: <201107261718.p6QHIjd5017432@d06av02.portsmouth.uk.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Tue, 26 Jul 2011 19:18:45 +0200 Subject: [rfc] Avoid '+' in file names (Re: [rfc] Re: Remote testsuite problem: invalid executable cache) To: stanshebs@earthlink.net (Stan Shebs), mark.kettenis@xs4all.nl, tromey@redhat.com Date: Tue, 26 Jul 2011 17:31:00 -0000 From: "Ulrich Weigand" Cc: gdb-patches@sourceware.org In-Reply-To: <4E2DE2EB.6020402@earthlink.net> from "Stan Shebs" at Jul 25, 2011 02:40:59 PM MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-07/txt/msg00728.txt.bz2 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