public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Re: build/955: build failure with GDB-5.3: sparc-nat.c structure redefinition errors with sparc64-linux, glibc-2.2.x
       [not found]     ` <20030510153527.A5854@u1sparc.j-son.org>
@ 2003-08-25  6:57       ` Christian Joensson
  2003-10-08  7:29         ` Nix
  0 siblings, 1 reply; 2+ messages in thread
From: Christian Joensson @ 2003-08-25  6:57 UTC (permalink / raw)
  To: GDB list; +Cc: Nix, gdb-gnats, gdb-patches

On Sat, May 10, 2003 at 03:35:27PM +0200, Christian Joensson wrote:
> On Sat, May 10, 2003 at 09:57:12AM +0200, Christian Joensson wrote:
> > On Sun, Apr 27, 2003 at 11:33:21AM -0400, Daniel Jacobowitz wrote:
> > > On Sun, Apr 27, 2003 at 03:08:00PM -0000, Nix wrote:
> > > > The following reply was made to PR build/955; it has been noted by GNATS.
> > > > 
> > > > From: Nix <nix@esperi.demon.co.uk>
> > > > To: Christian =?iso-8859-1?q?J=F6nsson?= <c.christian.joensson@telia.com>
> > > > Cc: <nobody@sources.redhat.com>, <gdb-gnats@sources.redhat.com>,
> > > >    <gdb-prs@sources.redhat.com>, <aurora-sparc-devel@linuxpower.org>
> > > > Subject: Re: build/955: build failure with GDB-5.3: sparc-nat.c structure redefinition errors with sparc64-linux, glibc-2.2.x
> > > > Date: 27 Apr 2003 15:45:01 +0100
> > > > 
> > > >  On Sun, 27 Apr 2003, Christian Jönsson spake:
> > > >  > http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&databas
> > > >  > e=gdb&pr=955
> > > >  > 
> > > >  > Is *anything* happening on this issue in gdb cvs HEAD?
> > > >  
> > > >  My apologies for not following up; this patch, abstracted from Debian
> > > >  (where fading memory tells me it is due to Daniel Jacobowitz), fixes it,
> > > >  but is probably too ugly to go in; the incompatibility test should
> > > >  really be done by configure:
> > > 
> > > Right on the origin and ugliness counts, which is why I never got
> > > around to doing anything about it.  But it's better than nothing, since
> > > it lets sparc-linux build, so I suppose it should go in... does anyone object?
> > >   
> > > >  Index: gdb/gdb/sparc-nat.c
> > > >  ===================================================================
> > > >  RCS file: /cvs/src/src/gdb/sparc-nat.c,v
> > > >  retrieving revision 1.13.12.1
> > > >  diff -u -r1.13.12.1 sparc-nat.c
> > > >  --- gdb/gdb/sparc-nat.c	3 Dec 2002 22:35:49 -0000	1.13.12.1
> > > >  +++ gdb/gdb/sparc-nat.c	27 Apr 2003 14:39:53 -0000
> > > >  @@ -33,6 +33,13 @@
> > > >   #include <sys/ptrace.h>
> > > >   #include <sys/wait.h>
> > > >   #ifdef __linux__
> > > >  +/* Sadly, <sys/ucontext.h> conflicts with <asm/reg.h> on Linux.  And
> > > >  +   -D_GNU_SOURCE brings in <sys/ucontext.h> implicitly with <signal.h>.
> > > >  +   Hack around this.  */
> > > >  +#undef FPU_REGS_TYPE
> > > >  +#define fpu asm_reg_fpu
> > > >  +#define fq asm_reg_fq
> > > >  +#define fpq asm_reg_fpq
> > > >   #include <asm/reg.h>
> > > >   #else
> > > >   #include <machine/reg.h>
> > > >  
> > > >  
> > > >  -- 
> > > >  `It is an unfortunate coincidence that the date locarchive.h was
> > > >   written (in hex) matches Ritchie's birthday (in octal).'
> > > >                 -- Roland McGrath on the libc-alpha list
> > > > 
> > > 
> > > -- 
> > > Daniel Jacobowitz
> > > MontaVista Software                         Debian GNU/Linux Developer
> > 
> > ping... how's it going?
> > 
> 
> I just thougt I'd test your suggested patch... it still fails...
> 
> This is how the compile stops with error in the current gdb cvs HEAD:
> 
> gcc -c -g -O2    -I. -I/home/chj/src/gdb -I/home/chj/src/gdb/config -DLOCALEDIR="\"/usr/local/gcc-binutils/share/locale\"" -DHAVE_CONFIG_H -I/home/chj/src/gdb/../include/opcode -I/home/chj/src/gdb/../readline/.. -I../bfd -I/home/chj/src/gdb/../bfd  -I/home/chj/src/gdb/../include -I../intl -I/home/chj/src/gdb/../intl  -DMI_OUT=1 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs -Wformat -Wparentheses -Wpointer-arith -Wuninitialized  /home/chj/src/gdb/sparc-nat.c
> In file included from /usr/include/asm/reg.h:4,
>                  from /home/chj/src/gdb/sparc-nat.c:36:
> /usr/include/asm-sparc64/reg.h:49: error: redefinition of `struct fpu'
> /home/chj/src/gdb/sparc-nat.c: In function `fetch_inferior_registers':
> /home/chj/src/gdb/sparc-nat.c:99: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c:103: warning: implicit declaration of function `memcpy'
> /home/chj/src/gdb/sparc-nat.c:106: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:108: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:110: error: structure has no member named `r_npc'
> /home/chj/src/gdb/sparc-nat.c:111: error: `registers' undeclared (first use in this function)
> /home/chj/src/gdb/sparc-nat.c:111: error: (Each undeclared identifier is reported only once
> /home/chj/src/gdb/sparc-nat.c:111: error: for each function it appears in.)
> /home/chj/src/gdb/sparc-nat.c:132: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c: In function `store_inferior_registers':
> /home/chj/src/gdb/sparc-nat.c:257: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:259: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:261: error: structure has no member named `r_npc'
> /home/chj/src/gdb/sparc-nat.c:267: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c:283: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c: In function `fetch_core_registers':
> /home/chj/src/gdb/sparc-nat.c:317: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:318: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:319: error: structure has no member named `r_npc'
> make[1]: *** [sparc-nat.o] Error 1
> make[1]: Leaving directory `/usr/local/src/gcc-binutils/trunk/objdir-gdb/gdb'
> make: *** [all-gdb] Error 2
> 
> and with your suggested patch, still we have:
> 
> gcc -c -g -O2    -I. -I/home/chj/src/gdb -I/home/chj/src/gdb/config -DLOCALEDIR="\"/usr/local/gcc-binutils/share/locale\"" -DHAVE_CONFIG_H -I/home/chj/src/gdb/../include/opcode -I/home/chj/src/gdb/../readline/.. -I../bfd -I/home/chj/src/gdb/../bfd  -I/home/chj/src/gdb/../include -I../intl -I/home/chj/src/gdb/../intl  -DMI_OUT=1 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs -Wformat -Wparentheses -Wpointer-arith -Wuninitialized  /home/chj/src/gdb/sparc-nat.c
> /home/chj/src/gdb/sparc-nat.c: In function `fetch_inferior_registers':
> /home/chj/src/gdb/sparc-nat.c:106: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c:110: warning: implicit declaration of function `memcpy'
> /home/chj/src/gdb/sparc-nat.c:113: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:115: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:117: error: structure has no member named `r_npc'
> /home/chj/src/gdb/sparc-nat.c:118: error: `registers' undeclared (first use in this function)
> /home/chj/src/gdb/sparc-nat.c:118: error: (Each undeclared identifier is reported only once
> /home/chj/src/gdb/sparc-nat.c:118: error: for each function it appears in.)
> /home/chj/src/gdb/sparc-nat.c:139: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c: In function `store_inferior_registers':
> /home/chj/src/gdb/sparc-nat.c:264: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:266: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:268: error: structure has no member named `r_npc'
> /home/chj/src/gdb/sparc-nat.c:274: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c:290: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c: In function `fetch_core_registers':
> /home/chj/src/gdb/sparc-nat.c:324: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:325: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:326: error: structure has no member named `r_npc'
> make[1]: *** [sparc-nat.o] Error 1
> make[1]: Leaving directory `/usr/local/src/gcc-binutils/trunk/objdir-gdb/gdb'
> make: *** [all-gdb] Error 2
> 

uhm, just tried gdb cvs HEAD, as of Sun Aug 24 12:01:38 UTC 2003, same thing:

gcc -c -g -O2    -I. -I/home/chj/src/gdb -I/home/chj/src/gdb/config -DLOCALEDIR="\"/usr/local/gcc-binutils/share/locale\"" -DHAVE_CONFIG_H -I/home/chj/src/gdb/../include/opcode -I/home/chj/src/gdb/../readline/.. -I../bfd -I/home/chj/src/gdb/../bfd  -I/home/chj/src/gdb/../include -I../intl -I/home/chj/src/gdb/../intl  -DMI_OUT=1 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs -Wformat -Wparentheses -Wpointer-arith -Wuninitialized -Wformat-nonliteral  /home/chj/src/gdb/sparc-nat.c
In file included from /usr/include/asm/reg.h:7,
                 from /home/chj/src/gdb/sparc-nat.c:38:
/usr/include/asm-sparc64/reg.h:49: error: redefinition of `struct fpu'
/home/chj/src/gdb/sparc-nat.c: In function `fetch_inferior_registers':

/home/chj/src/gdb/sparc-nat.c:101: warning: cast from pointer to integer of different size
/home/chj/src/gdb/sparc-nat.c:105: warning: implicit declaration of function `memcpy'
/home/chj/src/gdb/sparc-nat.c:108: error: structure has no member named `r_ps'
/home/chj/src/gdb/sparc-nat.c:110: error: structure has no member named `r_pc'
/home/chj/src/gdb/sparc-nat.c:112: error: structure has no member named `r_npc'
/home/chj/src/gdb/sparc-nat.c:134: warning: cast from pointer to integer of different size
/home/chj/src/gdb/sparc-nat.c: In function `store_inferior_registers':

/home/chj/src/gdb/sparc-nat.c:259: error: structure has no member named `r_ps'
/home/chj/src/gdb/sparc-nat.c:261: error: structure has no member named `r_pc'
/home/chj/src/gdb/sparc-nat.c:263: error: structure has no member named `r_npc'
/home/chj/src/gdb/sparc-nat.c:269: warning: cast from pointer to integer of different size
/home/chj/src/gdb/sparc-nat.c:285: warning: cast from pointer to integer of different size
/home/chj/src/gdb/sparc-nat.c: In function `fetch_core_registers':

/home/chj/src/gdb/sparc-nat.c:319: error: structure has no member named `r_ps'
/home/chj/src/gdb/sparc-nat.c:320: error: structure has no member named `r_pc'
/home/chj/src/gdb/sparc-nat.c:321: error: structure has no member named `r_npc'
make[1]: *** [sparc-nat.o] Error 1
make[1]: Leaving directory `/usr/local/src/gcc-binutils/trunk/objdir-gdb/gdb'
make: *** [all-gdb] Error 2

Any help?

Cheers,

/ChJ

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: build/955: build failure with GDB-5.3: sparc-nat.c structure redefinition errors with sparc64-linux, glibc-2.2.x
  2003-08-25  6:57       ` build/955: build failure with GDB-5.3: sparc-nat.c structure redefinition errors with sparc64-linux, glibc-2.2.x Christian Joensson
@ 2003-10-08  7:29         ` Nix
  0 siblings, 0 replies; 2+ messages in thread
From: Nix @ 2003-10-08  7:29 UTC (permalink / raw)
  To: Christian Joensson; +Cc: GDB list, gdb-gnats, gdb-patches

On Mon, 25 Aug 2003, Christian Joensson uttered the following:
> uhm, just tried gdb cvs HEAD, as of Sun Aug 24 12:01:38 UTC 2003, same thing:

I'm back, at last.

> In file included from /usr/include/asm/reg.h:7,
>                  from /home/chj/src/gdb/sparc-nat.c:38:
> /usr/include/asm-sparc64/reg.h:49: error: redefinition of `struct fpu'

sparc64? Are you trying to build a 64-bit gdb?

> /home/chj/src/gdb/sparc-nat.c: In function `fetch_inferior_registers':
> 
> /home/chj/src/gdb/sparc-nat.c:101: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c:105: warning: implicit declaration of function `memcpy'
> /home/chj/src/gdb/sparc-nat.c:108: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:110: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:112: error: structure has no member named `r_npc'
> /home/chj/src/gdb/sparc-nat.c:134: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c: In function `store_inferior_registers':
> 
> /home/chj/src/gdb/sparc-nat.c:259: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:261: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:263: error: structure has no member named `r_npc'
> /home/chj/src/gdb/sparc-nat.c:269: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c:285: warning: cast from pointer to integer of different size
> /home/chj/src/gdb/sparc-nat.c: In function `fetch_core_registers':
> 
> /home/chj/src/gdb/sparc-nat.c:319: error: structure has no member named `r_ps'
> /home/chj/src/gdb/sparc-nat.c:320: error: structure has no member named `r_pc'
> /home/chj/src/gdb/sparc-nat.c:321: error: structure has no member named `r_npc'
> make[1]: *** [sparc-nat.o] Error 1
> make[1]: Leaving directory `/usr/local/src/gcc-binutils/trunk/objdir-gdb/gdb'
> make: *** [all-gdb] Error 2

This is *not* related to the earlier bug in sparc-nat.c / the Linux
kernel headers / the glibc headers that the earlier patch from Daniel
Jacobowitz was for. That patch works (Debian uses it).


Using GDB-6.0-release, I now see

gcc -c -O2  -mcpu=ultrasparc -mtune=ultrasparc -m32 -g -pipe -D__NO_STRING_INLINES -D__NO_MATH_INLINES -D_FILE_OFFSET_BITS=64     -I. -I. -I./config -DLOCALEDIR="\"/usr/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../readline/.. -I../bfd -I./../bfd  -I./../include -I../intl -I./../intl  -DMI_OUT=1 -DTUI=1 -I./tui -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs -Wformat -Wparentheses -Wpointer-arith -Wuninitialized  sparc-nat.c
sparc-nat.c: In function `fetch_inferior_registers':
sparc-nat.c:115: error: structure has no member named `r_ps'
sparc-nat.c:117: error: structure has no member named `r_pc'
sparc-nat.c:119: error: structure has no member named `r_npc'
sparc-nat.c: In function `store_inferior_registers':
sparc-nat.c:266: error: structure has no member named `r_ps'
sparc-nat.c:268: error: structure has no member named `r_pc'
sparc-nat.c:270: error: structure has no member named `r_npc'
sparc-nat.c: In function `fetch_core_registers':
sparc-nat.c:326: error: structure has no member named `r_ps'
sparc-nat.c:327: error: structure has no member named `r_pc'
sparc-nat.c:328: error: structure has no member named `r_npc'
make[1]: *** [sparc-nat.o] Error 1

building on an UltraSPARC via the sparc32 personality.

... further investigation shows that at some time in the distant past,
something, somehow replaced the sparc32 reg.h in my copy of the kernel
sources with the sparc64 one. (Probably it was me in an earlier
debugging run, by accident.) Because my kernel is sparc64 and nothing
much other than GDB uses this header in userspace, I'd not noticed.

Putting the sparc32 reg.h back, combined with code to use the right
kernel headers for the target (i.e. sparc32) made everything work.

If your bug has similar causes to mine --- at least one sparc64 header
being picked up instead of a sparc32 one, in a 32-bit userspace --- I'd
call this user error. I'd also call the sparc64 reg.h header `not ready
for gdb' since symbols present since at least 1989 which gdb relies on
are not there.


(It probably makes sense to replace the kernel headers in
/usr/include/asm with something like the multi-personality
jiggery-pokery normally used to build glibc, i.e. autogenerated headers
looking like

#ifndef __MULTIUNIVERSE__REG_H__
#define __MULTIUNIVERSE__REG_H__

#ifdef __arch64__
#include "sparc64/reg.h"
#else
#include "sparc/reg.h"
#endif

#endif /* !__MULTIUNIVERSE__REG_H__ */

and all the sparc64 and sparc32 headers in the appropriate
subdirectories.

If you've not done that, you could also find yourself picking up sparc64
headers instead of sparc32 ones, and getting bitten by this.

If you're using a Linux distro of some kind, I'd imagine they've already
done this.)

-- 
`If you want a vision of the future, it is a wireless broadband network
 feeding requests for foreign money-laundering assistance into a human
 temporal lobe, forever. With banner ads.' --- John M. Ford

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-10-08  7:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20030427150800.19859.qmail@sources.redhat.com>
     [not found] ` <20030427153321.GA3394@nevyn.them.org>
     [not found]   ` <20030510095712.A19164@u1sparc.j-son.org>
     [not found]     ` <20030510153527.A5854@u1sparc.j-son.org>
2003-08-25  6:57       ` build/955: build failure with GDB-5.3: sparc-nat.c structure redefinition errors with sparc64-linux, glibc-2.2.x Christian Joensson
2003-10-08  7:29         ` Nix

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).