This is the mail archive of the gdb-patches@sourceware.cygnus.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: [PATCH]: multi-arch fix for monitor.c


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.

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/26 23:42:05
***************
*** 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)");

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