diff options
author | Tom de Vries <tdevries@suse.de> | 2024-07-24 14:56:56 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-07-24 14:56:56 +0200 |
commit | 2a215bbf7c0b02cf281aecbc9cb1b56d52ff7fc0 (patch) | |
tree | 2cc8366d42e7a5b602eebcfbd8d724c6ae8179ec /gdb/testsuite | |
parent | d4cea453901b3f1d1e7ea95e8ce0d7860fa9602b (diff) | |
download | gdb-2a215bbf7c0b02cf281aecbc9cb1b56d52ff7fc0.zip gdb-2a215bbf7c0b02cf281aecbc9cb1b56d52ff7fc0.tar.gz gdb-2a215bbf7c0b02cf281aecbc9cb1b56d52ff7fc0.tar.bz2 |
[gdb/testsuite] Handle address class annotation for s390x in some test-cases
On s390x-linux, I ran into:
...
(gdb) ptype crash^M
type = class crash {^M
^M
public:^M
crash(int (class {...}::*)(class {...} * const @mode32));^M
}^M
(gdb) FAIL: gdb.dwarf2/dw2-anon-mptr.exp: ptype crash
...
The problem is that the test-case doesn't expect the address class annotation
@mode32.
The test-case uses a .S file, with the address size hard-coded to 4 bytes, and
that's something that is annotated with @mode32 on s390x (which uses 8 byte
addresses).
Fix this by allowing the annotation in the regexp.
Likewise in two other test-cases.
Tested on s390-linux and x86_64-linux.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp | 16 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp | 17 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp | 16 |
3 files changed, 42 insertions, 7 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp b/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp index 5935ba6..fa98e41 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp @@ -36,5 +36,19 @@ gdb_test "show cp-abi" {The currently selected C\+\+ ABI is "gnu-v3".*} gdb_load $binfile +set re_address_class "@\[^\r\n\]+" + +set re_class_ptr_const \ + [string cat \ + [string_to_regexp "class {...} * const"] "( $re_address_class)?"] + gdb_test "ptype crash" \ - "type = class crash {\[\r\n \t\]*public:\[\r\n \t\]*crash\\(int \\(class {\\.\\.\\.}::\\*\\)\\(class {\\.\\.\\.} \\* const\\)\\);\[\r\n \t\]*}" + [multi_line \ + "type = class crash {" \ + "" \ + " public:" \ + [string cat \ + [string_to_regexp " crash(int (class {...}::*)("] \ + $re_class_ptr_const \ + [string_to_regexp "));"]] \ + "}"] diff --git a/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp b/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp index cebed1d..d73f4a8 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp @@ -126,6 +126,8 @@ proc build_test_program {} { } } +set re_address_class "@\[^\r\n\]+" + # Test access to an optimized-out pointer-to-struct using the # console interpreter. @@ -210,13 +212,18 @@ proc do_mi_test {} { # Test that -var-create for 'ptr' is successful. mi_create_varobj "var1" "ptr" "create varobj for ptr" + + set struct_foo_ptr \ + [string cat \ + [string_to_regexp "struct foo *"] "( $::re_address_class)?"] # Test that -var-list-children of 'ptr' is successful. - mi_list_varobj_children "var1" { \ - {var1.a a 0 integer} \ - {var1.x x 128 foo__array_type} \ - {var1.y y 3 "struct foo \\*"} \ - } "get children of var1 (ptr)" + mi_list_varobj_children "var1" \ + [list \ + {var1.a a 0 integer} \ + {var1.x x 128 foo__array_type} \ + [list "var1.y" "y" "3" $struct_foo_ptr]] \ + "get children of var1 (ptr)" # Test that dereferencing 'ptr' will throw an error. mi_gdb_test "-var-create var2 * &((ptr)->a)" \ diff --git a/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp b/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp index c97c887..21ad111 100644 --- a/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp +++ b/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp @@ -34,5 +34,19 @@ gdb_test "show cp-abi" {The currently selected C\+\+ ABI is "gnu-v3".*} gdb_load ${binfile} +set re_address_class "@\[^\r\n\]+" + +set re_C_ptr \ + [string cat \ + [string_to_regexp "C *"] "( const)?( $re_address_class)?"] + gdb_test_no_output "set language c++" -gdb_test "ptype c" "type = struct C {\[\r\n \t\]*private:\[\r\n \t\]*int \\(C::\\*fp\\)\\(C \\*( const)?\\);\[\r\n \t\]*}" +gdb_test "ptype c" \ + [multi_line \ + "type = struct C {" \ + " private:" \ + [string cat \ + [string_to_regexp " int (C::*fp)("] \ + $re_C_ptr \ + [string_to_regexp ");"]] \ + "}"] |