diff options
author | Andre Simoes Dias Vieira <andsim01@arm.com> | 2016-02-26 13:44:37 +0000 |
---|---|---|
committer | Andre Simoes Dias Vieira <andsim01@arm.com> | 2016-03-01 17:08:55 +0000 |
commit | 24ad6cefb1533cfd3af77eacbcb95b6825bcae46 (patch) | |
tree | 4912b2c53a06602d3ba0a791a43eedbdf3f4aa61 | |
parent | 718b36fead887693158396b948d7f409b987c053 (diff) | |
download | gdb-24ad6cefb1533cfd3af77eacbcb95b6825bcae46.zip gdb-24ad6cefb1533cfd3af77eacbcb95b6825bcae46.tar.gz gdb-24ad6cefb1533cfd3af77eacbcb95b6825bcae46.tar.bz2 |
Fix for GDB crashing with printf on ARM targets.
gdb/ChangeLog.arm:
2016-02-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
Backport from mainline
2016-02-04 Yao Qi <yao.qi@linaro.org>
* remote.c (remote_wait_as): Set rs->waiting_for_stop_reply to
0 before handling 'F' and set it back afterwards.
-rw-r--r-- | gdb/ChangeLog.arm | 6 | ||||
-rw-r--r-- | gdb/remote.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/gdb/ChangeLog.arm b/gdb/ChangeLog.arm new file mode 100644 index 0000000..da444fd --- /dev/null +++ b/gdb/ChangeLog.arm @@ -0,0 +1,6 @@ +2016-02-16 Andre Vieira <andre.simoesdiasvieira@arm.com> + Backport from mainline + 2016-02-04 Yao Qi <yao.qi@linaro.org> + + * remote.c (remote_wait_as): Set rs->waiting_for_stop_reply to + 0 before handling 'F' and set it back afterwards. diff --git a/gdb/remote.c b/gdb/remote.c index 610da1e..2ce2932 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -6359,8 +6359,16 @@ remote_wait_as (ptid_t ptid, struct target_waitstatus *status, int options) status->value.sig = GDB_SIGNAL_0; break; case 'F': /* File-I/O request. */ + /* GDB may access the inferior memory while handling the File-I/O + request, but we don't want GDB accessing memory while waiting + for a stop reply. See the comments in putpkt_binary. Set + waiting_for_stop_reply to 0 temporarily. */ + rs->waiting_for_stop_reply = 0; remote_fileio_request (buf, rs->ctrlc_pending_p); rs->ctrlc_pending_p = 0; + /* GDB handled the File-I/O request, and the target is running + again. Keep waiting for events. */ + rs->waiting_for_stop_reply = 1; break; case 'T': case 'S': case 'X': case 'W': { |