From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Ingham To: Andrew Cagney Cc: "Staggs, Kevin P (AZ75)" , "'insight@sourceware.cygnus.com'" Subject: Re: Problem in gdbtk-cmds.c Date: Tue, 09 Nov 1999 09:30:00 -0000 Message-id: <14376.23235.228252.611338@leda.cygnus.com> References: <7D2706D329C7D1118EC200805F15C5E44DAF74@htc-az75.htc.honeywell.com> <3827A952.850F4BD0@cygnus.com> X-SW-Source: 1999-q4/msg00043.html Andrew, Looks okay to me. Jim > Hello, > > The attatched should fix the problem. It updates the code to match the > new semantics of target_read_memory_partial. > > JimI, Ok? > > Andrew > > "Staggs, Kevin P (AZ75)" wrote: > > > > Hello, > > I have found a problem in gdbtk-cmds.c in the 19991018 version. Line 3262 > > of gdbtk-cmds.c is as follows: > > rnum = target_read_memory_partial (addr, mbuf, nbytes, NULL); > > The target_read_memory_partion function is in target.c at line 943 and looks > > like: > > int > > target_read_memory_partial (CORE_ADDR memaddr, char *buf, int len, int *err) > > { > > return target_xfer_memory_partial (memaddr, buf, len, 0, err); > > } > > Immediately above in target.c is the target_xfer_memory_partial function. > > Most of the successful paths will write a 0 to *err and *err is set to NULL. > > This results in a segmentation violation in insight and a crash. > > > > Thanks > > Kevin StaggsTue Nov 9 15:40:51 1999 Andrew Cagney > > * gdbtk-cmds.c (gdb_get_mem): Keep calling > target_read_memory_partial until all the data is read. > > Index: gdbtk-cmds.c > =================================================================== > RCS file: /cvs/cvsfiles/devo/gdb/gdbtk-cmds.c,v > retrieving revision 2.62 > diff -p -r2.62 gdbtk-cmds.c > *** gdbtk-cmds.c 1999/11/02 00:27:40 2.62 > --- gdbtk-cmds.c 1999/11/09 04:52:20 > *************** gdb_get_mem (clientData, interp, objc, o > *** 3259,3265 **** > memset (mbuf, 0, nbytes + 32); > mptr = cptr = mbuf; > > ! rnum = target_read_memory_partial (addr, mbuf, nbytes, NULL); > > if (objc == 7) > aschar = *(Tcl_GetStringFromObj (objv[6], NULL)); > --- 3259,3274 ---- > memset (mbuf, 0, nbytes + 32); > mptr = cptr = mbuf; > > ! rnum = 0; > ! while (rnum < nbytes) > ! { > ! int error; > ! int num = target_read_memory_partial (addr + rnum, mbuf + rnum, > ! nbytes - rnum, &error); > ! if (num <= 0) > ! break; > ! rnum += num; > ! } > > if (objc == 7) > aschar = *(Tcl_GetStringFromObj (objv[6], NULL));