This is the mail archive of the insight@sourceware.cygnus.com mailing list for the Insight project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Problem in gdbtk-cmds.c


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  <cagney@b1.cygnus.com>
 > 
 > 	* 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));

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]