From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael Snyder" To: gdb-patches@sources.redhat.com Subject: Re: [PATCH]: multi-arch fix for monitor.c Date: Wed, 05 Sep 2001 00:16:00 -0000 Message-id: <8e9m1d$8d3$1@cronkite.cygnus.com> References: <200004262144.OAA05362@seadog.cygnus.com> <3907743C.BDD@cygnus.com> <39077739.62400899@cygnus.com> <39077B95.D8EA5F06@cygnus.com> <39077F1C.4D2E@cygnus.com> X-SW-Source: 2001-09/msg00029.html 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 >> > > >> > > * 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 * 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)") ;