diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rust/simple.exp | 13 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rust/simple.rs | 12 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rust/union.exp | 45 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rust/union.rs | 35 |
5 files changed, 88 insertions, 25 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7819e39..cc17eba 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,13 @@ 2020-04-01 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. + +2020-04-01 Tom Tromey <tromey@adacore.com> + * gdb.rust/simple.rs (main): Remove "y0". 2020-04-01 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp index b4fcf27..92b3666 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 f44e4af..78c3b21 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 0000000..c7864a2 --- /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 0000000..ef30696 --- /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 +} |