This is the mail archive of the gdb-patches@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]

Re: RFA: fix GDB casts when pointers are not addresses



Andrew Cagney <ac131313@cygnus.com> writes:
> > Sure.
> > 
> > $ cat pointer2.c
> > #include <stdio.h>
> > 
> > main ()
> > {
> >   printf ("0x%x\n", (int) &main);
> > }
> > $ $CMitsuB/d10v-elf-gcc -g pointer2.c -o pointer2
> > $ $CMitsuB/d10v-elf-run pointer2
> > 0x5017
> > $ $DD10v/gdb/gdb pointer2
> > GNU gdb 2001-07-02-cvs (MI_OUT)
> > Copyright 2001 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 "--host=i686-pc-linux-gnu --target=d10v-elf"...
> > (gdb) print (int) &main
> > $1 = 16476
> > (gdb) p/x (int) &main
> > $2 = 0x405c
> 
> 
> Is this before or after all the changes?  My understanding of what you 
> were proposing was that it would output the same as for GCC vis:
> 
> $2 = 0x5017

The above is the behavior after applying only:
- "RFA: Add builtin void (*) () type"
- "RFA: Revised: Remove D10V-specific code from arch-independent modules"

If I instead apply:
- "RFA: Add builtin void (*) () type"
- "RFA: Revised: Remove D10V-specific code from arch-independent modules"
- "RFA: fix GDB casts when pointers are not addresses"

Then I get this behavior: 

zenia:play$ $DD10v/gdb/gdb pointer2
GNU gdb 2001-07-05-cvs (MI_OUT)
Copyright 2001 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 "--host=i686-pc-linux-gnu --target=d10v-elf"...
(gdb) print (int) &main
$1 = 20503
(gdb) p/x (int) &main
$2 = 0x5017
(gdb) 

Here, the expression yields the same result in GDB as it does under
GCC.

> > Sure.  The patch includes a comment which is supposed to set this
> > straight.  What is it missing?
> 
> I was thinking more of doc/gdb.texinfo.

Something like this?

Index: gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.38
diff -c -c -b -F'^(' -r1.38 gdb.texinfo
*** gdb.texinfo	2001/04/02 08:58:19	1.38
--- gdb.texinfo	2001/07/05 23:23:31
***************
*** 4381,4387 ****
  
  Casts are supported in all languages, not just in C, because it is so
  useful to cast a number into a pointer in order to examine a structure
! at that address in memory.
  @c FIXME: casts supported---Mod2 true?
  
  @value{GDBN} supports these operators, in addition to those common
--- 4381,4388 ----
  
  Casts are supported in all languages, not just in C, because it is so
  useful to cast a number into a pointer in order to examine a structure
! at that address in memory.  Where the value of a cast is undefined by
! the language, GDB tries to interpret the cast the same way GCC would.
  @c FIXME: casts supported---Mod2 true?
  
  @value{GDBN} supports these operators, in addition to those common


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