qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] target/xtensa: handle unknown registers in gdbstub
@ 2017-06-03  9:19 Max Filippov
  2017-06-07  0:55 ` Richard Henderson
  0 siblings, 1 reply; 3+ messages in thread
From: Max Filippov @ 2017-06-03  9:19 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov, qemu-stable

Xtensa cores may have registers of types/sizes not supported by the
gdbstub accessors. Ignore writes to such registers and return zero on
read, but always return correct register size, so that gdb on the other
side is able to access all registers in the packet holding unsupported
registers in the middle. This fixes gdb interaction with cores that have
vector/custom TIE registers.

Cc: qemu-stable@nongnu.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 target/xtensa/gdbstub.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/target/xtensa/gdbstub.c b/target/xtensa/gdbstub.c
index fa5469a..da131ae 100644
--- a/target/xtensa/gdbstub.c
+++ b/target/xtensa/gdbstub.c
@@ -58,7 +58,10 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
         case 8:
             return gdb_get_reg64(mem_buf, float64_val(env->fregs[i].f64));
         default:
-            return 0;
+            qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported size %d\n",
+                          __func__, n, reg->size);
+            memset(mem_buf, 0, reg->size);
+            return reg->size;
         }
 
     case 8: /*a*/
@@ -67,6 +70,8 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
     default:
         qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported type %d\n",
                       __func__, n, reg->type);
+        memset(mem_buf, 0, reg->size);
+        return reg->size;
         return 0;
     }
 }
@@ -111,7 +116,9 @@ int xtensa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
             env->fregs[reg->targno & 0x0f].f64 = make_float64(tmp);
             return 8;
         default:
-            return 0;
+            qemu_log_mask(LOG_UNIMP, "%s to reg %d of unsupported size %d\n",
+                          __func__, n, reg->size);
+            return reg->size;
         }
 
     case 8: /*a*/
@@ -121,7 +128,7 @@ int xtensa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
     default:
         qemu_log_mask(LOG_UNIMP, "%s to reg %d of unsupported type %d\n",
                       __func__, n, reg->type);
-        return 0;
+        return reg->size;
     }
 
     return 4;
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH] target/xtensa: handle unknown registers in gdbstub
  2017-06-03  9:19 [Qemu-devel] [PATCH] target/xtensa: handle unknown registers in gdbstub Max Filippov
@ 2017-06-07  0:55 ` Richard Henderson
  2017-06-07 19:26   ` Max Filippov
  0 siblings, 1 reply; 3+ messages in thread
From: Richard Henderson @ 2017-06-07  0:55 UTC (permalink / raw)
  To: Max Filippov, qemu-devel; +Cc: qemu-stable

On 06/03/2017 02:19 AM, Max Filippov wrote:
> +        memset(mem_buf, 0, reg->size);
> +        return reg->size;
>           return 0;

Leaving a dead return.


r~

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH] target/xtensa: handle unknown registers in gdbstub
  2017-06-07  0:55 ` Richard Henderson
@ 2017-06-07 19:26   ` Max Filippov
  0 siblings, 0 replies; 3+ messages in thread
From: Max Filippov @ 2017-06-07 19:26 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel, qemu-stable

On Tue, Jun 6, 2017 at 5:55 PM, Richard Henderson <rth@twiddle.net> wrote:
> On 06/03/2017 02:19 AM, Max Filippov wrote:
>>
>> +        memset(mem_buf, 0, reg->size);
>> +        return reg->size;
>>           return 0;
>
> Leaving a dead return.

Meh ): Thanks for the review. Will send a fix.

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-06-07 19:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-03  9:19 [Qemu-devel] [PATCH] target/xtensa: handle unknown registers in gdbstub Max Filippov
2017-06-07  0:55 ` Richard Henderson
2017-06-07 19:26   ` Max Filippov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).