[PATCH]: multi-arch fix for monitor.c

Andrew Cagney ac131313@cygnus.com
Wed Apr 26 16:10:00 GMT 2000


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)?

	Andrew

> 
> 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 21:41:38
> ***************
> *** 1206,1216 ****
>        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,1221 ----
>        int regno;
>   {
>     char *name;
> !   static char *zerobuf;
> !   char *regbuf;
>     int i;
> 
> +   if (zerobuf == NULL)
> +     {
> +       zerobuf = malloc (MAX_REGISTER_RAW_SIZE);
> +       memset (zerobuf, 0, MAX_REGISTER_RAW_SIZE);
> +     }
> +   regbuf  = alloca (MAX_REGISTER_RAW_SIZE * 2 + 1);
>     name = current_monitor->regnames[regno];
>     monitor_debug ("MON fetchreg %d '%s'\n", regno, name ? name : "(null
> name)");


More information about the Gdb-patches mailing list