This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
incomplete enums in classes
- From: Stephane Chauveau <s dot chauveau at chello dot nl>
- To: gdb at sources dot redhat dot com
- Date: Mon, 3 Jun 2002 22:52:30 +0200
- Subject: incomplete enums in classes
I found a problem in gdb 5.2 when debugging g++ programs.
Enum types declared without a name within a class are incomplete.
Consider the following program:
enum TYPE1 { V1 } ;
typedef enum { V2 } TYPE2 ;
class FOO {
public:
enum TYPE3 { V3 } ; typedef enum { V4 } TYPE4 ;
int v ; } ;
enum TYPE1 a ; TYPE2 b ; enum FOO::TYPE3 c ; FOO::TYPE4 d ;
int
main(void)
{
a = V1 ; b = V2 ; c = FOO::V3 ; d = FOO::V4 ; }
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
The problem appears in last line of the following gdb session.
Breakpoint 1, main () at test.cxx:23
23 a = V1 ; (gdb) s
24 b = V2 ; (gdb) s
25 c = FOO::V3 ; (gdb) s
26 d = FOO::V4 ; (gdb) s
0x080484f0 27 }
(gdb) p a
$1 = V1
(gdb) p b
$2 = V2
(gdb) p c
$3 = V3
(gdb) p d
$4 = <incomplete type>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
I also found that giving a name to the enum solves the problem:
typedef enum _TYPE4 { V4 } TYPE4 ;
If this is feature then I would expect to see the same behavior
with the 'incomplete' type TYPE2.