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:15:00 -0000 Message-id: <39108AA8.6E5B@cygnus.com> 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> X-SW-Source: 2001-09/msg00019.html 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 > >> > > > >> > > * 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)") > ;