This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFA] py-value.exp: Use different names for C/C++ .o files.
- From: Doug Evans <dje at google dot com>
- To: gdb-patches at sourceware dot org, jan dot kratochvil at redhat dot com
- Date: Thu, 01 Aug 2013 14:10:10 -0700
- Subject: [RFA] py-value.exp: Use different names for C/C++ .o files.
Hi.
Awhile ago I submitted this patch:
http://sourceware.org/ml/gdb-patches/2012-05/msg00553.html
Jan requested I do things differently:
http://sourceware.org/ml/gdb-patches/2012-05/msg00568.html
This patch implements this request for py-value.exp.
Namely different .o files are used for C and C++ so that the
C++ compilation doesn't clobber the .dwo file of the C compilation.
Also, I noticed that the C++ test wasn't checking skip_cplus_tests.
Adding that made the code more like my original patch, but this
new patch still makes it easier to reproduce results by hand.
While I was at it I renamed py-value.cc which is used by py-value-cc.exp.
It's confusing to have py-value.cc *not* used by py-value.exp.
Regression tested on amd64-linux, with/without Fission.
Ok to check in?
2013-08-01 Doug Evans <dje@google.com>
* gdb.python/py-value-cc.cc: Renamed from py-value.cc.
* gdb.python/py-value-cc.exp: Update.
* gdb.python/py-value.exp: Use different names for .o files for
C and C++. Only perform C++ tests if !skip_cplus_tests.
Index: testsuite/gdb.python/py-value-cc.cc
===================================================================
RCS file: testsuite/gdb.python/py-value-cc.cc
diff -N testsuite/gdb.python/py-value-cc.cc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.python/py-value-cc.cc 1 Aug 2013 20:57:32 -0000
@@ -0,0 +1,39 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2012-2013 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+class A {
+};
+
+typedef int *int_ptr;
+
+int
+func (const A &a)
+{
+ int val = 10;
+ int &int_ref = val;
+ int_ptr ptr = &val;
+ int_ptr &int_ptr_ref = ptr;
+
+ return 0; /* Break here. */
+}
+
+int
+main ()
+{
+ A obj;
+ return func (obj);
+}
Index: testsuite/gdb.python/py-value-cc.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value-cc.exp,v
retrieving revision 1.4
diff -u -p -r1.4 py-value-cc.exp
--- testsuite/gdb.python/py-value-cc.exp 1 Jan 2013 06:41:26 -0000 1.4
+++ testsuite/gdb.python/py-value-cc.exp 1 Aug 2013 20:57:32 -0000
@@ -18,7 +18,7 @@
if { [skip_cplus_tests] } { continue }
-standard_testfile py-value.cc
+standard_testfile .cc
if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
return -1
Index: testsuite/gdb.python/py-value.cc
===================================================================
RCS file: testsuite/gdb.python/py-value.cc
diff -N testsuite/gdb.python/py-value.cc
--- testsuite/gdb.python/py-value.cc 1 Jan 2013 06:41:26 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,39 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
- Copyright 2012-2013 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-class A {
-};
-
-typedef int *int_ptr;
-
-int
-func (const A &a)
-{
- int val = 10;
- int &int_ref = val;
- int_ptr ptr = &val;
- int_ptr &int_ptr_ref = ptr;
-
- return 0; /* Break here. */
-}
-
-int
-main ()
-{
- A obj;
- return func (obj);
-}
Index: testsuite/gdb.python/py-value.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value.exp,v
retrieving revision 1.33
diff -u -p -r1.33 py-value.exp
--- testsuite/gdb.python/py-value.exp 1 Jan 2013 06:41:26 -0000 1.33
+++ testsuite/gdb.python/py-value.exp 1 Aug 2013 20:57:32 -0000
@@ -21,13 +21,26 @@ load_lib gdb-python.exp
standard_testfile
# Build inferior to language specification.
+# LANG is one of "c" or "c++".
proc build_inferior {exefile lang} {
global srcdir subdir srcfile testfile hex
- if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" executable "debug $lang"] != "" } {
+ # Use different names for .o files based on the language.
+ # For Fission, the debug info goes in foo.dwo and we don't want,
+ # for example, a C++ compile to clobber the dwo of a C compile.
+ # ref: http://gcc.gnu.org/wiki/DebugFission
+ switch ${lang} {
+ "c" { set filename ${testfile}.o }
+ "c++" { set filename ${testfile}-cxx.o }
+ }
+ set objfile [standard_output_file $filename]
+
+ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object "debug $lang"] != ""
+ || [gdb_compile "${objfile}" "${exefile}" executable "debug $lang"] != "" } {
untested "Couldn't compile ${srcfile} in $lang mode"
return -1
}
+ return 0
}
proc test_value_creation {} {
@@ -463,9 +476,10 @@ 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++"
+# Build C version of executable. C++ is built later.
+if { [build_inferior "${binfile}" "c"] < 0 } {
+ return -1
+}
# Start with a fresh gdb.
clean_restart ${binfile}
@@ -494,5 +508,12 @@ test_lazy_strings
test_value_after_death
# Test either C or C++ values.
+
test_subscript_regression "${binfile}" "c"
-test_subscript_regression "${binfile}-cxx" "c++"
+
+if ![skip_cplus_tests] {
+ if { [build_inferior "${binfile}-cxx" "c++"] < 0 } {
+ return -1
+ }
+ test_subscript_regression "${binfile}-cxx" "c++"
+}