From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cagney To: "Staggs, Kevin P (AZ75)" Cc: "'insight@sourceware.cygnus.com'" Subject: Re: Problem in gdbtk-cmds.c Date: Mon, 08 Nov 1999 20:57:00 -0000 Message-id: <3827A952.850F4BD0@cygnus.com> References: <7D2706D329C7D1118EC200805F15C5E44DAF74@htc-az75.htc.honeywell.com> X-SW-Source: 1999-q4/msg00042.html 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 Staggs Tue 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));