public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Make Rust tests more "past-proof"
@ 2020-03-11 14:39 Tom Tromey
  2020-03-11 14:39 ` [PATCH 1/2] Remove local variable from simple.rs test case Tom Tromey
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Tom Tromey @ 2020-03-11 14:39 UTC (permalink / raw)
  To: gdb-patches

I'm working on changing how variant parts work in gdb, and I wanted to
make sure that my changes didn't break the existing Rust code.  To do
this, I wanted to test older versions of the Rust compiler -- ones
that did not use DWARF variant parts to represent enums.

It's easy to install old versions of rustc, but unfortunately the gdb
tests would no longer compile.

This short series makes the tests at least compile with rustc 1.12 and
newer (and possibly older, but I didn't check further back, as I had
no need).

In the future I think the rule should be that Rust tests using a new
feature will simply require their own new file.  (Previously I've been
stuffing things in simple.rs, since it was convenient.)

Tom



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] Remove local variable from simple.rs test case
  2020-03-11 14:39 [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey
@ 2020-03-11 14:39 ` Tom Tromey
  2020-03-11 14:39 ` [PATCH 2/2] Move Rust union tests to new file Tom Tromey
  2020-04-01 20:02 ` [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey
  2 siblings, 0 replies; 4+ messages in thread
From: Tom Tromey @ 2020-03-11 14:39 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

This removes the "y0" variable from simple.rs:main.  This variable
isn't needed by the test case, and it uses a form of initialization
that was added in rust 1.17.  Removing this makes it simpler to run
the gdb.rust tests against older versions of rustc.

gdb/testsuite/ChangeLog
2020-03-11  Tom Tromey  <tromey@adacore.com>

	* gdb.rust/simple.rs (main): Remove "y0".
---
 gdb/testsuite/ChangeLog          | 4 ++++
 gdb/testsuite/gdb.rust/simple.rs | 1 -
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/gdb.rust/simple.rs b/gdb/testsuite/gdb.rust/simple.rs
index 36448ec45c6..f44e4affebd 100644
--- a/gdb/testsuite/gdb.rust/simple.rs
+++ b/gdb/testsuite/gdb.rust/simple.rs
@@ -144,7 +144,6 @@ fn main () {
 
     let field1 = 77;
     let field2 = 88;
-    let y0 = HiBob { field1, field2 };
 
     let univariant = Univariant::Foo {a : 1};
     let univariant_anon = UnivariantAnon::Foo(1);
-- 
2.21.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/2] Move Rust union tests to new file
  2020-03-11 14:39 [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey
  2020-03-11 14:39 ` [PATCH 1/2] Remove local variable from simple.rs test case Tom Tromey
@ 2020-03-11 14:39 ` Tom Tromey
  2020-04-01 20:02 ` [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey
  2 siblings, 0 replies; 4+ messages in thread
From: Tom Tromey @ 2020-03-11 14:39 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

I wanted to run the gdb.rust tests against older versions of the Rust
compiler, to ensure that changes I am making don't break debugging
when using older compilers.

However, this did not work because simple.rs now uses unchecked
unions, which were only added in Rust 1.19.

This patch splits the union code into its own file, so that simple.exp
can continue to work.  I tested this with selected rust versions back
to 1.12.

gdb/testsuite/ChangeLog
2020-03-11  Tom Tromey  <tromey@adacore.com>

	* gdb.rust/union.rs: New file.
	* gdb.rust/union.exp: New file.
	* gdb.rust/simple.rs (Union, Union2): Move to union.rs.
	(main): Update.
	* gdb.rust/simple.exp: Move union tests to union.exp.
---
 gdb/testsuite/ChangeLog           |  8 ++++++
 gdb/testsuite/gdb.rust/simple.exp | 13 ---------
 gdb/testsuite/gdb.rust/simple.rs  | 12 ---------
 gdb/testsuite/gdb.rust/union.exp  | 45 +++++++++++++++++++++++++++++++
 gdb/testsuite/gdb.rust/union.rs   | 35 ++++++++++++++++++++++++
 5 files changed, 88 insertions(+), 25 deletions(-)
 create mode 100644 gdb/testsuite/gdb.rust/union.exp
 create mode 100644 gdb/testsuite/gdb.rust/union.rs

diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp
index b4fcf274261..92b3666386b 100644
--- a/gdb/testsuite/gdb.rust/simple.exp
+++ b/gdb/testsuite/gdb.rust/simple.exp
@@ -335,17 +335,6 @@ gdb_test "print parametrized.next.val" \
 gdb_test "print parametrized" \
     " = simple::ParametrizedStruct<i32> \\{next: simple::ParametrizedEnum<\[a-z:\]*Box<simple::ParametrizedStruct<i32>>>::Val\\{val: $hex\\}, value: 0\\}"
 
-gdb_test "print u" " = simple::Union {f1: -1, f2: 255}"
-
-gdb_test_sequence "ptype/o Union" "" {
-    "/\\* offset    |  size \\*/  type = union simple::Union {"
-    "/\\*                 1 \\*/    f1: i8,"
-    "/\\*                 1 \\*/    f2: u8,"
-    ""
-    "                           /\\* total size \\(bytes\\):    1 \\*/"
-    "                         }"
-}
-
 gdb_test_sequence "ptype/o SimpleLayout" "" {
     "/\\* offset    |  size \\*/  type = struct simple::SimpleLayout {"
     "/\\*    0      |     2 \\*/    f1: u16,"
@@ -355,8 +344,6 @@ gdb_test_sequence "ptype/o SimpleLayout" "" {
     "                         }"
 }
 
-gdb_test "print u2" " = simple::Union2 {name: \\\[1\\\]}"
-
 gdb_test "print nonzero_offset" " = simple::EnumWithNonzeroOffset {a: core::option::Option<u8>::Some\\(1\\), b: core::option::Option<u8>::None}"
 
 # PR rust/23626 - this used to crash.  Note that the results are
diff --git a/gdb/testsuite/gdb.rust/simple.rs b/gdb/testsuite/gdb.rust/simple.rs
index f44e4affebd..78c3b217451 100644
--- a/gdb/testsuite/gdb.rust/simple.rs
+++ b/gdb/testsuite/gdb.rust/simple.rs
@@ -80,15 +80,6 @@ struct ParametrizedStruct<T> {
     value: T
 }
 
-union Union {
-    f1: i8,
-    f2: u8,
-}
-
-pub union Union2 {
-    pub name: [u8; 1],
-}
-
 struct StringAtOffset {
     pub field1: &'static str,
     pub field2: i32,
@@ -184,13 +175,10 @@ fn main () {
         value: 0,
     };
 
-    let u = Union { f2: 255 };
     let simplelayout = SimpleLayout { f1: 8, f2: 9 };
 
     let empty_enum_value: EmptyEnum;
 
-    let u2 = Union2 { name: [1] };
-
     let nonzero_offset = EnumWithNonzeroOffset { a: Some(1), b: None };
 
     println!("{}, {}", x.0, x.1);        // set breakpoint here
diff --git a/gdb/testsuite/gdb.rust/union.exp b/gdb/testsuite/gdb.rust/union.exp
new file mode 100644
index 00000000000..c7864a2fc9d
--- /dev/null
+++ b/gdb/testsuite/gdb.rust/union.exp
@@ -0,0 +1,45 @@
+# Copyright (C) 2020 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/>.
+
+# Test of "union" for Rust.
+
+load_lib rust-support.exp
+if {[skip_rust_tests]} {
+    continue
+}
+
+standard_testfile .rs
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug rust}]} {
+    return -1
+}
+
+set line [gdb_get_line_number "set breakpoint here"]
+if {![runto ${srcfile}:$line]} {
+    untested "could not run to breakpoint"
+    return -1
+}
+
+gdb_test "print u" " = union::Union {f1: -1, f2: 255}"
+
+gdb_test_sequence "ptype/o Union" "" {
+    "/\\* offset    |  size \\*/  type = union union::Union {"
+    "/\\*                 1 \\*/    f1: i8,"
+    "/\\*                 1 \\*/    f2: u8,"
+    ""
+    "                           /\\* total size \\(bytes\\):    1 \\*/"
+    "                         }"
+}
+
+gdb_test "print u2" " = union::Union2 {name: \\\[1\\\]}"
diff --git a/gdb/testsuite/gdb.rust/union.rs b/gdb/testsuite/gdb.rust/union.rs
new file mode 100644
index 00000000000..ef3069641bc
--- /dev/null
+++ b/gdb/testsuite/gdb.rust/union.rs
@@ -0,0 +1,35 @@
+// Copyright (C) 2020 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/>.
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_assignments)]
+
+
+union Union {
+    f1: i8,
+    f2: u8,
+}
+
+pub union Union2 {
+    pub name: [u8; 1],
+}
+
+fn main() {
+    let u = Union { f2: 255 };
+    let u2 = Union2 { name: [1] };
+
+    println!("Hi");        // set breakpoint here
+}
-- 
2.21.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] Make Rust tests more "past-proof"
  2020-03-11 14:39 [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey
  2020-03-11 14:39 ` [PATCH 1/2] Remove local variable from simple.rs test case Tom Tromey
  2020-03-11 14:39 ` [PATCH 2/2] Move Rust union tests to new file Tom Tromey
@ 2020-04-01 20:02 ` Tom Tromey
  2 siblings, 0 replies; 4+ messages in thread
From: Tom Tromey @ 2020-04-01 20:02 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches

>>>>> "Tom" == Tom Tromey <tromey@adacore.com> writes:

Tom> This short series makes the tests at least compile with rustc 1.12 and
Tom> newer (and possibly older, but I didn't check further back, as I had
Tom> no need).

I'm pushing this now.

Tom

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-04-01 20:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-11 14:39 [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey
2020-03-11 14:39 ` [PATCH 1/2] Remove local variable from simple.rs test case Tom Tromey
2020-03-11 14:39 ` [PATCH 2/2] Move Rust union tests to new file Tom Tromey
2020-04-01 20:02 ` [PATCH 0/2] Make Rust tests more "past-proof" Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).