This is the mail archive of the gdb-patches@sourceware.cygnus.com mailing list for the GDB project. See the GDB home page for more information.


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

Re: GDB 4.16.86 bug report


Sorry for the late reply, but GDB does not support the debugging
info produced by Cset++ (which is yet another extension to the stabs
debugging format), but g++ should work.

> Hello,
> 
> I believe we have found a bug in the GDB 4.16.86 snapshot. We are 
> running IBM AIX 4.2.1.0 and compiling with the IBM Cset++ 3.1.4.5
> C compiler. The problem we are seeing is that GDB seems to think that
> variables declared with the "const" or "volatile" qualifiers are
> incomplete structs. The following example demonstrates the problem:
> 
>   [rios68:/u/qablinn/scratch/tmp] ls
>   testing.c
>   [rios68:/u/qablinn/scratch/tmp] nl -ba testing.c
>        1  #include <stdio.h>
>        2  
>        3  int main( void )
>        4  {
>        5    int imain = 1; 
>        6    const int jmain = 2;
>        7  
>        8    printf( "%d %d\n",imain, jmain );
>        9  }
>   [rios68:/u/qablinn/scratch/tmp] xlc -g -o testing testing.c
>   [rios68:/u/qablinn/scratch/tmp] ls
>   testing    testing.c
>   [rios68:/u/qablinn/scratch/tmp] gdb testing
>   GNU gdb 4.16.86
>   Copyright 1997 Free Software Foundation, Inc.
>   GDB is free software, covered by the GNU General Public License, and
>   you are
>   welcome to change it and/or distribute copies of it under certain
>   conditions.
>   Type "show copying" to see the conditions.
>   There is absolutely no warranty for GDB.  Type "show warranty" for
>   details.
>   This GDB was configured as "powerpc-ibm-aix4.2.1.0"...
>   (gdb) list
>   1       #include <stdio.h>
>   2       
>   3       int main( void )
>   4       {
>   5         int imain = 1; 
>   6         const int jmain = 2;
>   7       
>   8         printf( "%d %d\n",imain, jmain );
>   9       }
>   (gdb) break main
>   Breakpoint 1 at 0x10000214: file testing.c, line 5.
>   (gdb) run
>   Starting program: /scratch/qablinn/tmp/testing    
> 
>   Breakpoint 1, main () at testing.c:5
>   5         int imain = 1; 
>   (gdb) next
>   6         const int jmain = 2;
>   (gdb) next
>   8         printf( "%d %d\n",imain, jmain );
>   (gdb) whatis imain
>   type = int
>   (gdb) print imain
>   $1 = 1
>   (gdb) whatis jmain
>   type = struct <unknown>
>   (gdb) print jmain
>   $2 = <incomplete type>
>   (gdb) print (const int) jmain
>   $3 = 2
>   (gdb) next
>   1 2
>   9       }
>   (gdb) next
>   0x100001a0 in __start ()
>   (gdb) next
>   Single stepping until exit from function __start, 
>   which has no line number information.
>  
>   Program exited with code 04.
>   (gdb) quit
>   [rios68:/u/qablinn/scratch/tmp] 
> 
> As you can see, a workaround is to cast the variable to the necessary
> type when printing it. We have begun to investigate this problem but
> wanted to also get it in front of developers more knowledgeable of GDB
> internals. Please send any correspondence to both Monty Stein 
> (monty.stein@sdrc.com) and myself (eric.blinn@sdrc.com).
> 
> Thanks,
> Eric Blinn
> 
> Software QA Engineer II
> Structural Dynamics Research Corporation
> 
> 
> 


-- 
Peter Schauer			pes@regent.e-technik.tu-muenchen.de