This is the mail archive of the
gdb-patches@sourceware.cygnus.com
mailing list for the GDB project.
Re: [PATCH]: multi-arch fix for monitor.c
- To: gdb-patches at sourceware dot cygnus dot com
- Subject: Re: [PATCH]: multi-arch fix for monitor.c
- From: Michael Snyder <msnyder at cygnus dot com>
- Date: Wed, 03 May 2000 13:23:04 -0700
- Newsgroups: cygnus.patches.gdb
- Organization: Cygnus Solutions
- References: <200004262144.OAA05362@seadog.cygnus.com> <3907743C.BDD@cygnus.com> <39077739.62400899@cygnus.com> <39077B95.D8EA5F06@cygnus.com> <39077F1C.4D2E@cygnus.com> <8e9m1d$8d3$1@cronkite.cygnus.com>
FYI, I've committed the final form of this patch.
Michael Snyder wrote:
>
> Michael Snyder wrote in message <39077F1C.4D2E@cygnus.com>...
> >Andrew Cagney wrote:
> >>
> >> Andrew Cagney wrote:
> >> >
> >> > Michael Snyder wrote:
> >> > >
> >> > > OK, try #2:
> >> > >
> >> > > 2000-04-26 Michael Snyder <msnyder@seadog.cygnus.com>
> >> > >
> >> > > * monitor.c (monitor_fetch_register): MAX_REGISTER_RAW_SIZE
> >> > > is not static in the MULTI_ARCH world, so don't use it in a
> >> > > static array declaration.
> >> >
> >> > I'm not so sure :-( MAX_REGISTER_RAW_SIZE can change and hence the
> >> > allocated size of zerobuf could need to change.
> >> >
> >> > What about chaning its only use to write_register (..., 0)?
> >>
> >> Sorry, ignore this suggestion. write_register is for high-level
> >> accesses to GDB. As Frank suggested, it would be safer to just create
> >> the buffer when it is needed.
> >
> >That's why I keep you guys around. ;-)
> >Here is the new patch.
>
> And then I see that I failed to include it. Ok, HERE is the new patch:
>
> 2000-04-26 Michael Snyder <msnyder@seadog.cygnus.com>
>
> * monitor.c (monitor_fetch_register): MAX_REGISTER_RAW_SIZE
> is not static in the MULTI_ARCH world, so don't use it in a
> static array declaration.
>
> Index: monitor.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/monitor.c,v
> retrieving revision 1.4
> diff -c -r1.4 monitor.c
> *** monitor.c 2000/04/04 02:08:52 1.4
> --- monitor.c 2000/04/27 15:22:37
> ***************
> *** 1206,1215 ****
> int regno;
> {
> char *name;
> ! static char zerobuf[MAX_REGISTER_RAW_SIZE] =
> ! {0};
> ! char regbuf[MAX_REGISTER_RAW_SIZE * 2 + 1];
> int i;
>
> name = current_monitor->regnames[regno];
> monitor_debug ("MON fetchreg %d '%s'\n", regno, name ? name : "(null
> name)")
> ;
> --- 1206,1218 ----
> int regno;
> {
> char *name;
> ! char *zerobuf;
> ! char *regbuf;
> int i;
> +
> + regbuf = alloca (MAX_REGISTER_RAW_SIZE * 2 + 1);
> + zerobuf = alloca (MAX_REGISTER_RAW_SIZE);
> + memset (zerobuf, 0, MAX_REGISTER_RAW_SIZE);
>
> name = current_monitor->regnames[regno];
> monitor_debug ("MON fetchreg %d '%s'\n", regno, name ? name : "(null
> name)")
> ;