Re: [RFC] Special casing dtors?

Pedro Alves
2009-03-30T21:25:12Z

[-- Attachment #1: Type: text/plain, Size: 4660 bytes --]

On Saturday 28 March 2009 07:41:53, Keith Seitz wrote:
> Keith Seitz wrote:
>
> > I am building SVN gcc now, and I will retry everything.
>
> I tried this with exactly the same result on both x86_64 and x86. [It
> took long enough!] The "destructor breakpoint" test FAILs without the
> patch, and the patch introduces no new failures. There must be something
> different about our environments.

No, it just means you went in the wrong direction with your
testing. :-)

I mentioned that these tests pass on *4.2*, and that you see them
failing on 4.3. It isn't much of a surprise that they fail on
gcc head.

I just tried the templates.exp test with both the top of the gcc 4.2
branch, and with current gcc head, both on stabs, x86_64. Here's the
result difference:

--- gdb.sum.4.2 2009-03-30 16:50:48.000000000 +0100
+++ gdb.sum.4.5 2009-03-30 16:51:33.000000000 +0100
@@ -1,4 +1,4 @@
-Test Run By pedro on Mon Mar 30 16:50:39 2009
+Test Run By pedro on Mon Mar 30 16:51:25 2009
Native configuration is x86_64-unknown-linux-gnu

=== gdb tests ===
@@ -9,38 +9,39 @@ Schedule of variations:
Running target unix/gdb:debug_flags=-gstabs+
Running ../../../src/gdb/testsuite/gdb.cp/templates.exp ...
PASS: gdb.cp/templates.exp: set multiple-symbols ask
-PASS: gdb.cp/templates.exp: ptype T5<int> (obsolescent gcc or gdb)
-PASS: gdb.cp/templates.exp: ptype t5i (obsolescent gcc or gdb)
-FAIL: gdb.cp/templates.exp: constructor breakpoint (bad menu choices)
+FAIL: gdb.cp/templates.exp: ptype T5<int>
+FAIL: gdb.cp/templates.exp: ptype t5i
+FAIL: gdb.cp/templates.exp: constructor breakpoint
PASS: gdb.cp/templates.exp: destructor breakpoint
PASS: gdb.cp/templates.exp: value method breakpoint
PASS: gdb.cp/templates.exp: print t5i.value()
PASS: gdb.cp/templates.exp: print fint
PASS: gdb.cp/templates.exp: print fvpchar
-PASS: gdb.cp/templates.exp: ptype Foo
-PASS: gdb.cp/templates.exp: ptype fint
-PASS: gdb.cp/templates.exp: ptype fchar
-PASS: gdb.cp/templates.exp: ptype fvpchar
-PASS: gdb.cp/templates.exp: print Foo<volatile char *>::foo
-PASS: gdb.cp/templates.exp: print Foo<volatile char*>::foo
-PASS: gdb.cp/templates.exp: ptype Bar
-PASS: gdb.cp/templates.exp: ptype bint
-PASS: gdb.cp/templates.exp: ptype bint2
-PASS: gdb.cp/templates.exp: ptype Baz
-PASS: gdb.cp/templates.exp: ptype bazint
-PASS: gdb.cp/templates.exp: ptype bazint2
-PASS: gdb.cp/templates.exp: ptype Qux
-PASS: gdb.cp/templates.exp: ptype quxint
-PASS: gdb.cp/templates.exp: ptype Spec
-PASS: gdb.cp/templates.exp: ptype siip
-PASS: gdb.cp/templates.exp: ptype Garply<int>
-PASS: gdb.cp/templates.exp: ptype Garply<Garply<char> >
-PASS: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
+FAIL: gdb.cp/templates.exp: ptype Foo
+FAIL: gdb.cp/templates.exp: ptype fint
+FAIL: gdb.cp/templates.exp: ptype fchar
+FAIL: gdb.cp/templates.exp: ptype fvpchar
+KFAIL: gdb.cp/templates.exp: print Foo<volatile char *>::foo (PRMS: gdb/931)
+KFAIL: gdb.cp/templates.exp: print Foo<volatile char*>::foo (PRMS: gdb/931)
+FAIL: gdb.cp/templates.exp: ptype Bar
+FAIL: gdb.cp/templates.exp: ptype bint
+FAIL: gdb.cp/templates.exp: ptype bint2
+FAIL: gdb.cp/templates.exp: ptype Baz
+FAIL: gdb.cp/templates.exp: ptype bazint
+FAIL: gdb.cp/templates.exp: ptype bazint2
+FAIL: gdb.cp/templates.exp: ptype Qux
+FAIL: gdb.cp/templates.exp: ptype quxint
+FAIL: gdb.cp/templates.exp: ptype Spec
+FAIL: gdb.cp/templates.exp: ptype siip
+FAIL: gdb.cp/templates.exp: ptype Garply<int>
+FAIL: gdb.cp/templates.exp: ptype Garply<Garply<char> >
+FAIL: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
PASS: gdb.cp/templates.exp: break Garply<Garply<char> >::garply

=== gdb Summary ===

-# of expected passes 28
-# of unexpected failures 1
+# of expected passes 7
+# of unexpected failures 20
+# of known failures 2
/home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090327-cvs -nw -nx

So, gcc regressed a bunch of stabs after gcc 4.2. The full logs of running
this test with both compilers are attached.

>
> I don't know what's going on now, but we seem to be at a "Mexican
> Stand-off? [Pardon the colloquialism]

I don't know how much we care for stabs on 4.2. Certainly on
linux it isn't that important, but other platforms are still a
bit stuck with it. Note that I'm not objecting to you applying
your patch. The failure mode it introduces on stabs isn't that
critical. I was merely trying to be helpful, and I didn't
expect that we'd find this. In any case, it is always good to
try out several compilers, not just the tip of the trunk. GDB
has to cope with code produced from older compilers as well.

--
Pedro Alves

[-- Attachment #2: gdb.sum.4.2 --]
[-- Type: text/plain, Size: 1840 bytes --]

Test Run By pedro on Mon Mar 30 16:50:39 2009
Native configuration is x86_64-unknown-linux-gnu

=== gdb tests ===

Schedule of variations:
unix/gdb:debug_flags=-gstabs+

Running target unix/gdb:debug_flags=-gstabs+
Running ../../../src/gdb/testsuite/gdb.cp/templates.exp ...
PASS: gdb.cp/templates.exp: set multiple-symbols ask
PASS: gdb.cp/templates.exp: ptype T5<int> (obsolescent gcc or gdb)
PASS: gdb.cp/templates.exp: ptype t5i (obsolescent gcc or gdb)
FAIL: gdb.cp/templates.exp: constructor breakpoint (bad menu choices)
PASS: gdb.cp/templates.exp: destructor breakpoint
PASS: gdb.cp/templates.exp: value method breakpoint
PASS: gdb.cp/templates.exp: print t5i.value()
PASS: gdb.cp/templates.exp: print fint
PASS: gdb.cp/templates.exp: print fvpchar
PASS: gdb.cp/templates.exp: ptype Foo
PASS: gdb.cp/templates.exp: ptype fint
PASS: gdb.cp/templates.exp: ptype fchar
PASS: gdb.cp/templates.exp: ptype fvpchar
PASS: gdb.cp/templates.exp: print Foo<volatile char *>::foo
PASS: gdb.cp/templates.exp: print Foo<volatile char*>::foo
PASS: gdb.cp/templates.exp: ptype Bar
PASS: gdb.cp/templates.exp: ptype bint
PASS: gdb.cp/templates.exp: ptype bint2
PASS: gdb.cp/templates.exp: ptype Baz
PASS: gdb.cp/templates.exp: ptype bazint
PASS: gdb.cp/templates.exp: ptype bazint2
PASS: gdb.cp/templates.exp: ptype Qux
PASS: gdb.cp/templates.exp: ptype quxint
PASS: gdb.cp/templates.exp: ptype Spec
PASS: gdb.cp/templates.exp: ptype siip
PASS: gdb.cp/templates.exp: ptype Garply<int>
PASS: gdb.cp/templates.exp: ptype Garply<Garply<char> >
PASS: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
PASS: gdb.cp/templates.exp: break Garply<Garply<char> >::garply

=== gdb Summary ===

# of expected passes 28
# of unexpected failures 1
/home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090327-cvs -nw -nx

[-- Attachment #3: gdb.log.4.2 --]
[-- Type: text/x-java, Size: 8711 bytes --]

Test Run By pedro on Mon Mar 30 16:50:39 2009
Native configuration is x86_64-unknown-linux-gnu

=== gdb tests ===

Schedule of variations:
unix/gdb:debug_flags=-gstabs+

Running target unix/gdb:debug_flags=-gstabs+
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using ../../../src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running ../../../src/gdb/testsuite/gdb.cp/templates.exp ...
get_compiler_info: gcc-4-2-5
Executing on host: g++ ../../../src/gdb/testsuite/gdb.cp/templates.cc -L/home/pedro/gdb/baseline/build/libiberty -gstabs+ -lm -o /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates (timeout = 300)
GNU gdb (GDB) 6.8.50.20090327-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir ../../../src/gdb/testsuite/gdb.cp
Source directories searched: /home/pedro/gdb/baseline/build/gdb/testsuite/../../../src/gdb/testsuite/gdb.cp:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates
Reading symbols from /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates...done.
(gdb) set multiple-symbols ask
(gdb) PASS: gdb.cp/templates.exp: set multiple-symbols ask
delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 1 at 0x4012d4: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 713.
(gdb) run
Starting program: /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates

Breakpoint 1, main () at ../../../src/gdb/testsuite/gdb.cp/templates.cc:713
713 i = i + 1;
(gdb) ptype T5<int>
type = class T5<int> {
public:
static int X;
int x;
int val;

T5(int);
T5(int);
T5(T5<int> const&);
T5(T5<int> const&);
~T5();
~T5();
static void * operator new(unsigned long);
static void operator delete(void*);
int value();
}
(gdb) PASS: gdb.cp/templates.exp: ptype T5<int> (obsolescent gcc or gdb)
ptype t5i
type = class T5<int> {
public:
static int X;
int x;
int val;

T5(int);
T5(int);
T5(T5<int> const&);
T5(T5<int> const&);
~T5();
~T5();
static void * operator new(unsigned long);
static void operator delete(void*);
int value();
}
(gdb) PASS: gdb.cp/templates.exp: ptype t5i (obsolescent gcc or gdb)
break T5<int>::T5
[0] cancel
[1] all
[2] T5<int>::T5(T5<int> const&) at ../../../src/gdb/testsuite/gdb.cp/templates.cc:474
[3] T5<int>::T5(T5<int> const&) at ../../../src/gdb/testsuite/gdb.cp/templates.cc:474
[4] T5<int>::T5(int) at ../../../src/gdb/testsuite/gdb.cp/templates.cc:470
[5] T5<int>::T5(int) at ../../../src/gdb/testsuite/gdb.cp/templates.cc:470
> 0
canceled
(gdb) FAIL: gdb.cp/templates.exp: constructor breakpoint (bad menu choices)
break T5<int>::~T5
Breakpoint 2 at 0x4017aa: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 478.
(gdb) PASS: gdb.cp/templates.exp: destructor breakpoint
break T5<int>::value
Breakpoint 3 at 0x4017d8: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 493.
(gdb) PASS: gdb.cp/templates.exp: value method breakpoint
delete breakpoints
Delete all breakpoints? (y or n) y
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 4 at 0x4012d4: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 713.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates

Breakpoint 4, main () at ../../../src/gdb/testsuite/gdb.cp/templates.cc:713
713 i = i + 1;
(gdb) print t5i.value()
$1 = 2
(gdb) PASS: gdb.cp/templates.exp: print t5i.value()
b 770
Breakpoint 5 at 0x4014a2: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 770.
(gdb) c
Continuing.

Breakpoint 5, main () at ../../../src/gdb/testsuite/gdb.cp/templates.cc:770
770 return 0;
(gdb) print fint
$2 = {x = 0, t = 0}
(gdb) PASS: gdb.cp/templates.exp: print fint
print fvpchar
$3 = {x = 0, t = 0x0}
(gdb) PASS: gdb.cp/templates.exp: print fvpchar
ptype Foo
No symbol "Foo" in current context.
(gdb) PASS: gdb.cp/templates.exp: ptype Foo
ptype fint
type = class Foo<int> {
public:
int x;
int t;

int foo(int, int);
}
(gdb) PASS: gdb.cp/templates.exp: ptype fint
ptype fchar
type = class Foo<char> {
public:
int x;
char t;

char foo(int, char);
}
(gdb) PASS: gdb.cp/templates.exp: ptype fchar
ptype fvpchar
type = class Foo<volatile char*> {
public:
int x;
volatile char *t;

volatile char * foo(int, char volatile*);
}
(gdb) PASS: gdb.cp/templates.exp: ptype fvpchar
print Foo<volatile char *>::foo
$4 = {volatile char *(Foo<volatile char*> * const, int, volatile char *)} 0x40191e <Foo<char volatile*>::foo(int, char volatile*)>
(gdb) PASS: gdb.cp/templates.exp: print Foo<volatile char *>::foo
print Foo<volatile char*>::foo
$5 = {volatile char *(Foo<volatile char*> * const, int, volatile char *)} 0x40191e <Foo<char volatile*>::foo(int, char volatile*)>
(gdb) PASS: gdb.cp/templates.exp: print Foo<volatile char*>::foo
ptype Bar
No symbol "Bar" in current context.
(gdb) PASS: gdb.cp/templates.exp: ptype Bar
ptype bint
type = class Bar<int,33> {
public:
int x;
int t;

int bar(int, int);
}
(gdb) PASS: gdb.cp/templates.exp: ptype bint
ptype bint2
type = class Bar<int,1> {
public:
int x;
int t;

int bar(int, int);
}
(gdb) PASS: gdb.cp/templates.exp: ptype bint2
ptype Baz
No symbol "Baz" in current context.
(gdb) PASS: gdb.cp/templates.exp: ptype Baz
ptype bazint
type = class Baz<int,'s'> {
public:
int x;
int t;

int baz(int, int);
}
(gdb) PASS: gdb.cp/templates.exp: ptype bazint
ptype bazint2
type = class Baz<char,'a'> {
public:
int x;
char t;

char baz(int, char);
}
(gdb) PASS: gdb.cp/templates.exp: ptype bazint2
ptype Qux
No symbol "Qux" in current context.
(gdb) PASS: gdb.cp/templates.exp: ptype Qux
ptype quxint
type = class Qux<int,(char*)(& string)> {
public:
int x;
int t;

int qux(int, int);
}
(gdb) PASS: gdb.cp/templates.exp: ptype quxint
ptype Spec
No symbol "Spec" in current context.
(gdb) PASS: gdb.cp/templates.exp: ptype Spec
ptype siip
type = class Spec<int,int*> {
public:
int x;

int spec(int*);
}
(gdb) PASS: gdb.cp/templates.exp: ptype siip
ptype Garply<int>
type = class Garply<int> {
public:
int x;
int t;

int garply(int, int);
}
(gdb) PASS: gdb.cp/templates.exp: ptype Garply<int>
ptype Garply<Garply<char> >
type = class Garply<Garply<char> > {
public:
int x;
Garply<char> t;

Garply<char> garply(int, Garply<char>);
}
(gdb) PASS: gdb.cp/templates.exp: ptype Garply<Garply<char> >
print Garply<Garply<char> >::garply
$6 = {Garply<char> (Garply<Garply<char> > * const, int, Garply<char>)} 0x401abc <Garply<Garply<char> >::garply(int, Garply<char>)>
(gdb) PASS: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
break Garply<Garply<char> >::garply
Breakpoint 6 at 0x401acb: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 696.
(gdb) PASS: gdb.cp/templates.exp: break Garply<Garply<char> >::garply
testcase ../../../src/gdb/testsuite/gdb.cp/templates.exp completed in 2 seconds

=== gdb Summary ===

# of expected passes 28
# of unexpected failures 1
Executing on host: /home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb -nw -nx --command gdb_cmd (timeout = 300)
GNU gdb (GDB) 6.8.50.20090327-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
/home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090327-cvs -nw -nx

runtest completed at Mon Mar 30 16:50:41 2009

[-- Attachment #4: gdb.sum.4.5 --]
[-- Type: text/plain, Size: 1828 bytes --]

Test Run By pedro on Mon Mar 30 16:51:25 2009
Native configuration is x86_64-unknown-linux-gnu

=== gdb tests ===

Schedule of variations:
unix/gdb:debug_flags=-gstabs+

Running target unix/gdb:debug_flags=-gstabs+
Running ../../../src/gdb/testsuite/gdb.cp/templates.exp ...
PASS: gdb.cp/templates.exp: set multiple-symbols ask
FAIL: gdb.cp/templates.exp: ptype T5<int>
FAIL: gdb.cp/templates.exp: ptype t5i
FAIL: gdb.cp/templates.exp: constructor breakpoint
PASS: gdb.cp/templates.exp: destructor breakpoint
PASS: gdb.cp/templates.exp: value method breakpoint
PASS: gdb.cp/templates.exp: print t5i.value()
PASS: gdb.cp/templates.exp: print fint
PASS: gdb.cp/templates.exp: print fvpchar
FAIL: gdb.cp/templates.exp: ptype Foo
FAIL: gdb.cp/templates.exp: ptype fint
FAIL: gdb.cp/templates.exp: ptype fchar
FAIL: gdb.cp/templates.exp: ptype fvpchar
KFAIL: gdb.cp/templates.exp: print Foo<volatile char *>::foo (PRMS: gdb/931)
KFAIL: gdb.cp/templates.exp: print Foo<volatile char*>::foo (PRMS: gdb/931)
FAIL: gdb.cp/templates.exp: ptype Bar
FAIL: gdb.cp/templates.exp: ptype bint
FAIL: gdb.cp/templates.exp: ptype bint2
FAIL: gdb.cp/templates.exp: ptype Baz
FAIL: gdb.cp/templates.exp: ptype bazint
FAIL: gdb.cp/templates.exp: ptype bazint2
FAIL: gdb.cp/templates.exp: ptype Qux
FAIL: gdb.cp/templates.exp: ptype quxint
FAIL: gdb.cp/templates.exp: ptype Spec
FAIL: gdb.cp/templates.exp: ptype siip
FAIL: gdb.cp/templates.exp: ptype Garply<int>
FAIL: gdb.cp/templates.exp: ptype Garply<Garply<char> >
FAIL: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
PASS: gdb.cp/templates.exp: break Garply<Garply<char> >::garply

=== gdb Summary ===

# of expected passes 7
# of unexpected failures 20
# of known failures 2
/home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090327-cvs -nw -nx

[-- Attachment #5: gdb.log.4.5 --]
[-- Type: text/x-objcsrc, Size: 7942 bytes --]

Test Run By pedro on Mon Mar 30 16:51:25 2009
Native configuration is x86_64-unknown-linux-gnu

=== gdb tests ===

Schedule of variations:
unix/gdb:debug_flags=-gstabs+

Running target unix/gdb:debug_flags=-gstabs+
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using ../../../src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running ../../../src/gdb/testsuite/gdb.cp/templates.exp ...
get_compiler_info: gcc-4-5-0
Executing on host: g++ ../../../src/gdb/testsuite/gdb.cp/templates.cc -L/home/pedro/gdb/baseline/build/libiberty -gstabs+ -lm -o /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates (timeout = 300)
GNU gdb (GDB) 6.8.50.20090327-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir ../../../src/gdb/testsuite/gdb.cp
Source directories searched: /home/pedro/gdb/baseline/build/gdb/testsuite/../../../src/gdb/testsuite/gdb.cp:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates
Reading symbols from /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates...done.
(gdb) set multiple-symbols ask
(gdb) PASS: gdb.cp/templates.exp: set multiple-symbols ask
delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 1 at 0x401335: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 713.
(gdb) run
Starting program: /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates

Breakpoint 1, main () at ../../../src/gdb/testsuite/gdb.cp/templates.cc:713
713 i = i + 1;
(gdb) ptype T5<int>
No symbol "T5<int>" in current context.
(gdb) FAIL: gdb.cp/templates.exp: ptype T5<int>
ptype t5i
type = class T5 {
public:
static int X;
int x;
int val;

T5(int);
T5(int);
T5(T5<int> const&);
T5(T5<int> const&);
~T5();
~T5();
static void * operator new(unsigned long);
static void operator delete(void*);
int value();
}
(gdb) FAIL: gdb.cp/templates.exp: ptype t5i
break T5<int>::T5
Breakpoint 2 at 0x40169d: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 470.
(gdb) FAIL: gdb.cp/templates.exp: constructor breakpoint
break T5<int>::~T5
Breakpoint 3 at 0x4017d2: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 478.
(gdb) PASS: gdb.cp/templates.exp: destructor breakpoint
break T5<int>::value
Breakpoint 4 at 0x401800: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 493.
(gdb) PASS: gdb.cp/templates.exp: value method breakpoint
delete breakpoints
Delete all breakpoints? (y or n) y
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break main
Breakpoint 5 at 0x401335: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 713.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/pedro/gdb/baseline/build/gdb/testsuite/gdb.cp/templates

Breakpoint 5, main () at ../../../src/gdb/testsuite/gdb.cp/templates.cc:713
713 i = i + 1;
(gdb) print t5i.value()
$1 = 2
(gdb) PASS: gdb.cp/templates.exp: print t5i.value()
b 770
Breakpoint 6 at 0x401534: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 770.
(gdb) c
Continuing.

Breakpoint 6, main () at ../../../src/gdb/testsuite/gdb.cp/templates.cc:770
770 return 0;
(gdb) print fint
$2 = {x = 0, t = 0}
(gdb) PASS: gdb.cp/templates.exp: print fint
print fvpchar
$3 = {x = 0, t = 0x0}
(gdb) PASS: gdb.cp/templates.exp: print fvpchar
ptype Foo
type = class Foo {
public:
int x;
int t;

int foo(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype Foo
ptype fint
type = class Foo {
public:
int x;
int t;

int foo(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype fint
ptype fchar
type = class Foo {
public:
int x;
char t;

char foo(int, char);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype fchar
ptype fvpchar
type = class Foo {
public:
int x;
volatile char *t;

volatile char * foo(int, char volatile*);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype fvpchar
print Foo<volatile char *>::foo
No symbol "Foo<volatile char *>" in current context.
(gdb) KFAIL: gdb.cp/templates.exp: print Foo<volatile char *>::foo (PRMS: gdb/931)
print Foo<volatile char*>::foo
No symbol "Foo<volatile char*>" in current context.
(gdb) KFAIL: gdb.cp/templates.exp: print Foo<volatile char*>::foo (PRMS: gdb/931)
ptype Bar
type = class Bar {
public:
int x;
int t;

int bar(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype Bar
ptype bint
type = class Bar {
public:
int x;
int t;

int bar(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype bint
ptype bint2
type = class Bar {
public:
int x;
int t;

int bar(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype bint2
ptype Baz
type = class Baz {
public:
int x;
int t;

int baz(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype Baz
ptype bazint
type = class Baz {
public:
int x;
int t;

int baz(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype bazint
ptype bazint2
type = class Baz {
public:
int x;
char t;

char baz(int, char);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype bazint2
ptype Qux
type = class Qux {
public:
int x;
char t;

char qux(int, char);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype Qux
ptype quxint
type = class Qux {
public:
int x;
int t;

int qux(int, int);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype quxint
ptype Spec
type = class Spec {
public:
int x;

int spec(char);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype Spec
ptype siip
type = class Spec {
public:
int x;

int spec(int*);
}
(gdb) FAIL: gdb.cp/templates.exp: ptype siip
ptype Garply<int>
No symbol "Garply<int>" in current context.
(gdb) FAIL: gdb.cp/templates.exp: ptype Garply<int>
ptype Garply<Garply<char> >
No symbol "Garply<Garply<char> >" in current context.
(gdb) FAIL: gdb.cp/templates.exp: ptype Garply<Garply<char> >
print Garply<Garply<char> >::garply
No symbol "Garply<Garply<char> >" in current context.
(gdb) FAIL: gdb.cp/templates.exp: print Garply<Garply<char> >::garply
break Garply<Garply<char> >::garply
Breakpoint 7 at 0x401abd: file ../../../src/gdb/testsuite/gdb.cp/templates.cc, line 696.
(gdb) PASS: gdb.cp/templates.exp: break Garply<Garply<char> >::garply
testcase ../../../src/gdb/testsuite/gdb.cp/templates.exp completed in 2 seconds

=== gdb Summary ===

# of expected passes 7
# of unexpected failures 20
# of known failures 2
Executing on host: /home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb -nw -nx --command gdb_cmd (timeout = 300)
GNU gdb (GDB) 6.8.50.20090327-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
/home/pedro/gdb/baseline/build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090327-cvs -nw -nx

runtest completed at Mon Mar 30 16:51:27 2009