GDB fileIO stdout support
This patch fixes gdb fileio support to allow gdb console to be used as stdout. Now we can do something like gdb <inferior file> (gdb) tar ext :3333 (gdb) load (gdb) monitor arm semihosting enable (gdb) monitor arm semihosting_fileio enable (gdb) continue Here: Output from inferior using puts, printf etc will be routed to gdb console. Change-Id: I9cb0dddda1de58038c84f5b035c38229828cd744 Signed-off-by: Omair Javaid <omair.javaid@linaro.org> Reviewed-on: http://openocd.zylin.com/4538 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>bscan_tunnel
parent
a7da117ad6
commit
0aa8e8cfc3
|
@ -225,6 +225,10 @@ int semihosting_common(struct target *target)
|
|||
else {
|
||||
int fd = semihosting_get_field(target, 0, fields);
|
||||
if (semihosting->is_fileio) {
|
||||
if (fd == 0 || fd == 1 || fd == 2) {
|
||||
semihosting->result = 0;
|
||||
break;
|
||||
}
|
||||
semihosting->hit_fileio = true;
|
||||
fileio_info->identifier = "close";
|
||||
fileio_info->param_1 = fd;
|
||||
|
@ -445,8 +449,8 @@ int semihosting_common(struct target *target)
|
|||
* - –1 if an error occurs.
|
||||
*/
|
||||
if (semihosting->is_fileio) {
|
||||
LOG_ERROR("SYS_FLEN not supported by semihosting fileio");
|
||||
return ERROR_FAIL;
|
||||
semihosting->result = -1;
|
||||
semihosting->sys_errno = EINVAL;
|
||||
}
|
||||
retval = semihosting_read_fields(target, 1, fields);
|
||||
if (retval != ERROR_OK)
|
||||
|
@ -690,9 +694,19 @@ int semihosting_common(struct target *target)
|
|||
/* TODO: implement the :semihosting-features special file.
|
||||
* */
|
||||
if (semihosting->is_fileio) {
|
||||
if (strcmp((char *)fn, ":tt") == 0)
|
||||
semihosting->result = 0;
|
||||
else {
|
||||
if (strcmp((char *)fn, ":semihosting-features") == 0) {
|
||||
semihosting->result = -1;
|
||||
semihosting->sys_errno = EINVAL;
|
||||
} else if (strcmp((char *)fn, ":tt") == 0) {
|
||||
if (mode == 0)
|
||||
semihosting->result = 0;
|
||||
else if (mode == 4)
|
||||
semihosting->result = 1;
|
||||
else if (mode == 8)
|
||||
semihosting->result = 2;
|
||||
else
|
||||
semihosting->result = -1;
|
||||
} else {
|
||||
semihosting->hit_fileio = true;
|
||||
fileio_info->identifier = "open";
|
||||
fileio_info->param_1 = addr;
|
||||
|
|
Loading…
Reference in New Issue