X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Ftestsuite%2Fgdb.cp%2Ftemplates.exp;h=85f86ee0e1b0bb6af3171f7dfe270fa7096a0e8c;hb=1cc75e929ff4e99b3bef4ca0e93250d5b1b126c9;hp=cc78422483ea8e68dca32e39fb2744904a7c1329;hpb=3b7962f9540aac669d97751e7568ac91f909ec3f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/gdb.cp/templates.exp b/gdb/testsuite/gdb.cp/templates.exp index cc78422483..85f86ee0e1 100644 --- a/gdb/testsuite/gdb.cp/templates.exp +++ b/gdb/testsuite/gdb.cp/templates.exp @@ -1,5 +1,4 @@ -# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2007, -# 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright 1992-2017 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 @@ -18,25 +17,18 @@ set ws "\[\r\n\t \]+" -if $tracelevel then { - strace $tracelevel -} - if { [skip_cplus_tests] } { continue } -set testfile "templates" -set srcfile ${testfile}.cc -set binfile ${objdir}/${subdir}/${testfile} +standard_testfile .cc # Create and source the file that provides information about the compiler # used to compile the test case. -if [get_compiler_info ${binfile} "c++"] { +if [get_compiler_info "c++"] { return -1 } -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { - untested templates.exp - return -1 +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} { + return -1 } # @@ -47,40 +39,51 @@ proc test_ptype_of_templates {} { global gdb_prompt global ws - gdb_test_multiple "ptype T5" "ptype T5" { + gdb_test_multiple "ptype/r T5" "ptype T5" { -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5 & operator=\\(T5 const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { xfail "ptype T5 -- new without size_t" } -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5 & operator=\\(T5 const ?&\\);${ws}\}\r\n$gdb_prompt $" { xfail "ptype T5 -- new without size_t" } - -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { + -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(()\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { xfail "ptype T5 -- new with unsigned int" } - -re "type = class T5 \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5 &\\);.*void ~T5 \\(int\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" { + -re "type = class T5 \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5 &\\);.*void ~T5 \\(\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" { xfail "ptype T5 -- new with unsigned long" } -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5 & operator=\\(T5 const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\((T5 const|const T5) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" { xfail "ptype T5 (obsolescent gcc or gdb)" } - -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { # This also triggers gdb/1113... kfail "gdb/1111" "ptype T5" # Add here a PASS case when PR gdb/1111 gets fixed. + # These are really: + # http://sourceware.org/bugzilla/show_bug.cgi?id=8216 + # http://sourceware.org/bugzilla/show_bug.cgi?id=8218 + } + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { + # http://sourceware.org/bugzilla/show_bug.cgi?id=8218 + # The destructor has an argument type. + kfail "gdb/8218" "ptype T5" + } + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { + pass "ptype T5" } } - gdb_test_multiple "ptype t5i" "ptype t5i" { + gdb_test_multiple "ptype/r t5i" "ptype t5i" { -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5\\(int\\);${ws}T5\\(T5 const ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { xfail "ptype T5 -- with several fixes from 4.17 -- without size_t" } - -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { + -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { xfail "ptype t5i -- new with unsigned int -- without size_t" } - -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { + -re "type = class T5 \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5 &\\);${ws}void ~T5 \\(\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { xfail "ptype t5i -- new with unsigned long -- without size_t" } - -re "type = class T5 \{.*public:.*static int X;.*int x;.*int val;.*.*T5 \\(int\\);.*.*void ~T5 \\(int\\).*.*.*int value \\((void|)\\);.*\}.*$gdb_prompt $" { + -re "type = class T5 \{.*public:.*static int X;.*int x;.*int val;.*.*T5 \\(int\\);.*.*void ~T5 \\(\\).*.*.*int value \\((void|)\\);.*\}.*$gdb_prompt $" { xfail "ptype t5i -- without size_t" } -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5 & operator=\\(T5 const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { @@ -92,10 +95,21 @@ proc test_ptype_of_templates {} { -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5 & operator=\\(T5 const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\(T5 const ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" { xfail "ptype t5i (obsolescent gcc or gdb) -- without size_t" } - -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { # This also triggers gdb/1113... - kfail "gdb/1111" "ptype T5" + kfail "gdb/1111" "ptype t5i" # Add here a PASS case when PR gdb/1111 gets fixed. + # These are really: + # http://sourceware.org/bugzilla/show_bug.cgi?id=8216 + # http://sourceware.org/bugzilla/show_bug.cgi?id=8218 + } + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { + # http://sourceware.org/bugzilla/show_bug.cgi?id=8218 + # The destructor has an argument type. + kfail "gdb/8218" "ptype t5i" + } + -re "type = class T5 \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5 const|const T5) ?&\\);${ws}~T5\\(\\);${ws}static void \\* operator new\\((size_t|unsigned( int| long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { + pass "ptype t5i" } } } @@ -108,7 +122,6 @@ proc test_template_breakpoints {} { global gdb_prompt global testfile global srcdir - global hp_aCC_compiler gdb_test_multiple "break T5::T5" "constructor breakpoint" { -re "0. cancel.*\[\r\n\]*.1. all.*\[\r\n\]*.2.*templates.cc:T5::T5\\((T5 const|const T5) ?&\\)\[\r\n\]*.3.*templates.cc:T5::T5\\(int\\)\[\r\n\]*> $" { @@ -129,9 +142,6 @@ proc test_template_breakpoints {} { } } -# See CLLbs14792 - if {$hp_aCC_compiler} {setup_xfail hppa*-*-* CLLbs14792} - gdb_test_multiple "break T5::~T5" "destructor_breakpoint" { -re "Breakpoint.*at.* file .*${testfile}.cc, line.*$gdb_prompt $" { @@ -178,15 +188,13 @@ proc test_template_breakpoints {} { proc test_template_calls {} { global gdb_prompt - global hp_aCC_compiler if [target_info exists gdb,cannot_call_functions] { - setup_xfail "*-*-*" 2416 - fail "This target can not call functions" + unsupported "this target can not call functions" return } - if {!$hp_aCC_compiler} {setup_xfail hppa*-*-*} + setup_xfail hppa*-*-* gdb_test_multiple "print t5i.value()" "print t5i.value()" { -re ".* = 2\[\r\n\]*$gdb_prompt $" { pass "print t5i.value()" @@ -202,39 +210,47 @@ proc test_template_calls {} { } proc test_template_typedef {} { + global gdb_prompt gdb_test "print intBazOne::baz" ".*baz\\(int, int\\)>" \ "print method of template typedef" - gdb_test "print intBazOne::~Baz" ".*~Baz(\\(\\))?>" \ - "print destructor of template typedef" + set test "print destructor of template typedef" + gdb_test_multiple "print intBazOne::~Baz" $test { + -re "~Baz(\\(\\))?>\r\n$gdb_prompt $" { + pass $test + } + -re "There is no field named ~Baz\r\n$gdb_prompt $" { + set test2 "verify GCC PR debug/51668" + gdb_test_multiple "whatis intBazOne" $test2 { + -re "type = Baz\r\n$gdb_prompt $" { + setup_xfail gcc/51668 "*-*-*" + xfail $test + pass $test2 + } + -re "\r\n$gdb_prompt $" { + # Some unexpected response. + fail $test + fail $test2 + } + } + } + } } proc test_template_args {} { set empty_re "Empty *\\)>" - gdb_test "ptype empty" \ - "type = (struct|class) $empty_re {.*.*}" + gdb_test "ptype/r empty" \ + "type = (struct|class) $empty_re {.*.*}" \ + "ptype empty" - gdb_test "ptype arg" \ - "type = (struct|class) FunctionArg {.*int method\\($empty_re \\&\\);.*}" + gdb_test "ptype/r arg" \ + "type = (struct|class) FunctionArg {.*int method\\($empty_re \\&\\);.*}" \ + "ptype arg" } proc do_tests {} { - global subdir - global objdir - global srcdir - global binfile - global gdb_prompt - - - # Start with a fresh gdb. - - gdb_exit - gdb_start - gdb_reinitialize_dir $srcdir/$subdir - gdb_load $binfile - # Change multiple-symbols to "ask" in order to get the multiple-choice # menu when breaking on overloaded methods. gdb_test_no_output "set multiple-symbols ask" @@ -277,6 +293,8 @@ gdb_test "c" \ gdb_test "print fint" \ "\\$\[0-9\]* = \\{x = 0, t = 0\\}" +# Prevent symbol on address 0x0 being printed. +gdb_test_no_output "set print symbol off" gdb_test "print fvpchar" \ "\\$\[0-9\]* = \\{x = 0, t = 0x0\\}" @@ -292,7 +310,7 @@ gdb_test "print fvpchar" \ # NOTE: carlton/2003-02-26: However, because of a bug in the way GDB # handles nested types, we don't get this right in the DWARF-2 case. -gdb_test_multiple "ptype Foo" "ptype Foo" { +gdb_test_multiple "ptype/r Foo" "ptype Foo" { -re "type = template <(class |)T> (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Foo\r\n\[ \t\]*(class |)Foo\r\n\[ \t\]*(class |)Foo\r\n$gdb_prompt $" { pass "ptype Foo" } @@ -313,7 +331,7 @@ gdb_test_multiple "ptype Foo" "ptype Foo" { # ptype Foo -gdb_test_multiple "ptype fint" "ptype fint" { +gdb_test_multiple "ptype/r fint" "ptype fint" { -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" } @@ -324,7 +342,7 @@ gdb_test_multiple "ptype fint" "ptype fint" { # ptype Foo -gdb_test_multiple "ptype fchar" "ptype fchar" { +gdb_test_multiple "ptype/r fchar" "ptype fchar" { -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char foo\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" } @@ -335,7 +353,7 @@ gdb_test_multiple "ptype fchar" "ptype fchar" { # ptype Foo -gdb_test_multiple "ptype fvpchar" "ptype fvpchar" { +gdb_test_multiple "ptype/r fvpchar" "ptype fvpchar" { -re "type = (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" } @@ -375,7 +393,7 @@ gdb_test_multiple "print Foo::foo" "print Foo::f # Template Bar # same as Foo for g++ -gdb_test_multiple "ptype Bar" "ptype Bar" { +gdb_test_multiple "ptype/r Bar" "ptype Bar" { -re "type = template <(class |)T, (class |)sz> (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Bar\r\n\[ \t\]*(class |)Bar\r\n$gdb_prompt $" { pass "ptype Bar" } @@ -395,7 +413,7 @@ gdb_test_multiple "ptype Bar" "ptype Bar" { # ptype Bar -gdb_test_multiple "ptype bint" "ptype bint" { +gdb_test_multiple "ptype/r bint" "ptype bint" { -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" } @@ -406,7 +424,7 @@ gdb_test_multiple "ptype bint" "ptype bint" { # ptype Bar3)> -gdb_test_multiple "ptype bint2" "ptype bint2" { +gdb_test_multiple "ptype/r bint2" "ptype bint2" { -re "type = (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" } @@ -418,7 +436,7 @@ gdb_test_multiple "ptype bint2" "ptype bint2" { # Template Baz # Same as Foo, for g++ -gdb_test_multiple "ptype Baz" "ptype Baz" { +gdb_test_multiple "ptype/r Baz" "ptype Baz" { -re "type = template <(class |)T, ?(class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Baz\r\n\[ \t\]*(class |)Baz\r\n$gdb_prompt $" { pass "ptype Baz" } @@ -442,7 +460,7 @@ gdb_test_multiple "ptype Baz" "ptype Baz" { # ptype Baz -gdb_test_multiple "ptype bazint" "ptype bazint" { +gdb_test_multiple "ptype/r bazint" "ptype bazint" { -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" } @@ -453,7 +471,7 @@ gdb_test_multiple "ptype bazint" "ptype bazint" { # ptype Baz -gdb_test_multiple "ptype bazint2" "ptype bazint2" { +gdb_test_multiple "ptype/r bazint2" "ptype bazint2" { -re "type = (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" } @@ -464,7 +482,7 @@ gdb_test_multiple "ptype bazint2" "ptype bazint2" { # Template Qux # Same as Foo for g++ -gdb_test_multiple "ptype Qux" "ptype Qux" { +gdb_test_multiple "ptype/r Qux" "ptype Qux" { -re "type = template <(class |)T, ?(class |)sz> (class |)Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Qux\r\n\[ \t\]*(class |)Qux\r\n$gdb_prompt $" { pass "ptype Qux" } @@ -487,7 +505,7 @@ gdb_test_multiple "ptype Qux" "ptype Qux" { # pt Qux -gdb_test_multiple "ptype quxint" "ptype quxint" { +gdb_test_multiple "ptype/r quxint" "ptype quxint" { -re "type = class Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" } @@ -506,7 +524,7 @@ gdb_test_multiple "ptype quxint" "ptype quxint" { # Template Spec # Same as Foo for g++ -gdb_test_multiple "ptype Spec" "ptype Spec" { +gdb_test_multiple "ptype/r Spec" "ptype Spec" { -re "type = template <(class |)T1, (class |)T2> (class |)Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Spec\r\n\[ \t\]*(class |)Spec\r\n$gdb_prompt $" { pass "ptype Spec" } @@ -525,7 +543,7 @@ gdb_test_multiple "ptype Spec" "ptype Spec" { # pt Spec -gdb_test_multiple "ptype siip" "ptype siip" { +gdb_test_multiple "ptype/r siip" "ptype siip" { -re "type = class Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*.*int spec\\(int ?\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" } @@ -536,7 +554,7 @@ gdb_test_multiple "ptype siip" "ptype siip" { # pt Garply -gdb_test_multiple "ptype Garply" "ptype Garply" { +gdb_test_multiple "ptype/r Garply" "ptype Garply" { -re "type = class Garply \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int garply\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply" } @@ -547,7 +565,7 @@ gdb_test_multiple "ptype Garply" "ptype Garply" { # ptype of nested template name -gdb_test_multiple "ptype Garply >" "ptype Garply >" { +gdb_test_multiple "ptype/r Garply >" "ptype Garply >" { -re "type = (class |)Garply > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply t;\r\n\r\n\[ \t\]*.*(class |)Garply garply\\(int, (class |)Garply\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply >" }