]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/testsuite/gdb.rust/simple.exp
Update copyright year range in all GDB files.
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.rust / simple.exp
index 91afe85cee7050587fa344512d9fa3631b44a18a..aa64e6b08f1c79f0e1a46e919f1b04d9a60f80c1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+# Copyright (C) 2016-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
@@ -200,7 +200,16 @@ gdb_test "print e2.notexist" \
 gdb_test "print e2.0" \
     "Variant simple::MoreComplicated::Four is not a tuple variant"
 
-gdb_test "print k" " = simple::SpaceSaver::Nothing"
+set pass_pattern " = simple::SpaceSaver::Nothing"
+set xfail_pattern " = simple::SpaceSaver::Thebox\\($decimal, 0x0\\)"
+gdb_test_multiple "print k" "" {
+    -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+       pass $gdb_test_name
+    }
+    -re "\[\r\n\]*(?:$xfail_pattern)\[\r\n\]+$gdb_prompt $" {
+       xfail $gdb_test_name
+    }
+}
 gdb_test "print l" " = simple::SpaceSaver::Thebox\\(9, $hex\\)"
 gdb_test "print *l.1" " = 1729"
 
@@ -228,16 +237,56 @@ gdb_test "print ..=5" " = .*::ops::RangeToInclusive.* \\{end: 5\\}"
 gdb_test "print 5.." " = .*::ops::RangeFrom.* \\{start: 5\\}"
 gdb_test "print .." " = .*::ops::RangeFull"
 
-gdb_test "print str_some" \
+set pass_pattern \
     " = core::option::Option<\[a-z\]+::string::String>::Some\\(\[a-z\]+::string::String .*"
-gdb_test "print str_none" " = core::option::Option<\[a-z\]+::string::String>::None"
+set xfail_pattern " = <error reading variable>"
+gdb_test_multiple "print str_some" "" {
+    -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+       pass $gdb_test_name
+    }
+    -re "\[\r\n\]*(?:$xfail_pattern)\[\r\n\]+$gdb_prompt $" {
+       xfail $gdb_test_name
+    }
+}
+
+set pass_pattern " = core::option::Option<\[a-z\]+::string::String>::None"
+gdb_test_multiple "print str_none" "" {
+    -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+       pass $gdb_test_name
+    }
+    -re "\[\r\n\]*(?:$xfail_pattern)\[\r\n\]+$gdb_prompt $" {
+       xfail $gdb_test_name
+    }
+}
+
 gdb_test "print int_some" " = core::option::Option<u8>::Some\\(1\\)"
 gdb_test "print int_none" " = core::option::Option<u8>::None"
 gdb_test "print box_some" " = core::option::Option<\[a-z:\]*Box<u8>>::Some\\(.*\\)"
 gdb_test "print box_none" " = core::option::Option<\[a-z:\]*Box<u8>>::None"
-gdb_test "print custom_some" \
+
+set pass_pattern \
     " = simple::NonZeroOptimized::Value\\(\[a-z\]+::string::String .*"
-gdb_test "print custom_none" " = simple::NonZeroOptimized::Empty"
+gdb_test_multiple "print custom_some" "" {
+    -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+       pass $gdb_test_name
+    }
+    -re "\[\r\n\]*(?:$xfail_pattern)\[\r\n\]+$gdb_prompt $" {
+       xfail $gdb_test_name
+    }
+}
+
+set pass_pattern " = simple::NonZeroOptimized::Empty"
+gdb_test_multiple "print custom_none" "" {
+    -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+       pass $gdb_test_name
+    }
+    -re "\[\r\n\]*(?:$xfail_pattern)\[\r\n\]+$gdb_prompt $" {
+       xfail $gdb_test_name
+    }
+}
+
+gdb_test "print st" \
+    " = simple::StringAtOffset {field1: \"hello\", field2: 1, field3: \"world\"}"
 
 proc test_one_slice {svar length base range} {
     global hex
@@ -306,6 +355,8 @@ gdb_test_sequence "ptype/o SimpleLayout" "" {
     "                         }"
 }
 
+gdb_test "print u2" " = simple::Union2 {name: \\\[1\\\]}"
+
 # PR rust/23626 - this used to crash.  Note that the results are
 # fairly lax because most existing versions of Rust (those before the
 # DW_TAG_variant patches) do not emit what gdb wants here; and there