This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]