From: Michael Snyder Date: Sat, 21 Jun 2008 23:09:20 +0000 (+0000) Subject: 2008-06-21 Michael Snyder X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d1014d363e2c6fd1b7a3dc33ed5955375b38f65c;p=thirdparty%2Fbinutils-gdb.git 2008-06-21 Michael Snyder * gdbfreeplay-i386.c (target_pc_from_g): Accept a char * instead of a FILE *. * gdbfreeplay.h (target_pc_from_g): Change prototype. * gdbfreeplay-back.c (scan_gdbreplay_file): Change call. --- diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index e83af3cbd92..0b24e1858e2 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,5 +1,10 @@ 2008-06-21 Michael Snyder + * gdbfreeplay-i386.c (target_pc_from_g): Accept a char * instead + of a FILE *. + * gdbfreeplay.h (target_pc_from_g): Change prototype. + * gdbfreeplay-back.c (scan_gdbreplay_file): Change call. + * gdbfreeplay-i386.c (target_compose_T_packet): Add default return. (target_compose_g_packet): New function. * gdbfreeplay.h (target_compose_g_packet): Export. diff --git a/gdb/gdbserver/gdbfreeplay-back.c b/gdb/gdbserver/gdbfreeplay-back.c index 84e63cd0884..da8d8d6e4fc 100644 --- a/gdb/gdbserver/gdbfreeplay-back.c +++ b/gdb/gdbserver/gdbfreeplay-back.c @@ -83,7 +83,11 @@ scan_gdbreplay_file (FILE *infile) /* See if we need to grab the PC from this packet. */ if (stopframe[last_cached_frame].pc == 0 || stopframe[last_cached_frame].pc == (unsigned long) -1) - stopframe[last_cached_frame].pc = target_pc_from_g (infile); + { + nextpos = ftell (infile); + line = fgets (inbuf, sizeof (inbuf), infile); + stopframe[last_cached_frame].pc = target_pc_from_g (line); + } } /* Reset PC after breakpoint? */ diff --git a/gdb/gdbserver/gdbfreeplay-i386.c b/gdb/gdbserver/gdbfreeplay-i386.c index ef4d96f8f8f..884389373d8 100644 --- a/gdb/gdbserver/gdbfreeplay-i386.c +++ b/gdb/gdbserver/gdbfreeplay-i386.c @@ -206,24 +206,19 @@ expand_rle (char *input) * Returns PC as host unsigned long. */ -#define INBUF_SIZE 1024 -static char inbuf [INBUF_SIZE]; - unsigned long -target_pc_from_g (FILE *infile) +target_pc_from_g (char *gpacket) { - char *line = fgets (inbuf, sizeof (inbuf), infile); - - if (line[0] == 'r' && line[1] == ' ') + if (gpacket[0] == 'r' && gpacket[1] == ' ') { - line += 2; - if (line[0] == '+') - line++; - if (line[0] == '$') - line++; + gpacket += 2; + if (gpacket[0] == '+') + gpacket++; + if (gpacket[0] == '$') + gpacket++; } - return ix86_pc_from_registers (expand_rle (line)); + return ix86_pc_from_registers (expand_rle (gpacket)); } /* diff --git a/gdb/gdbserver/gdbfreeplay.h b/gdb/gdbserver/gdbfreeplay.h index e337cf21895..d9c70c54008 100644 --- a/gdb/gdbserver/gdbfreeplay.h +++ b/gdb/gdbserver/gdbfreeplay.h @@ -14,7 +14,8 @@ extern void gdbfreeplay (int socket_fd); extern unsigned long target_pc_from_T (char *tpacket); extern unsigned long target_pc_from_G (char *gpacket); -extern unsigned long target_pc_from_g (FILE *infile); +extern unsigned long target_pc_from_g (char *gpacket); + extern char *target_compose_T_packet (char *origTpacket, unsigned long pc, int breakpoint_p);