Message ID | f392e1a15634455d8af668b28b88f3b4@us.ibm.com |
---|---|
State | New |
Headers | show |
Series | /target/i386: fix gdbstub k_gs_base issue | expand |
Hi Marek, If you look at the other patches, you'll notice no leading slash is used, so please remove it when resending. Maybe you can use "target/i386: Fix handling of k_gs_base register in 32-bit mode in gdbstub" as patch subject. Please Cc the maintainers. See: https://wiki.qemu.org/Contribute/SubmitAPatch#CC_the_relevant_maintainer Doing it for you now (adding Richard and Eduardo). On 12/27/19 3:41 AM, Marek Dolata - mkdolata@us.ibm.com wrote: > Fixes: corrects clobbering of registers appearing after k_gs_base > > Buglink: https://bugs.launchpad.net/qemu/+bug/1857640 > > Signed-off-by: Marek Dolata <mkdolata@us.ibm.com> > > --- > > target/i386/gdbstub.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c > > index aef25b70f1..7228d20674 100644 > > --- a/target/i386/gdbstub.c > > +++ b/target/i386/gdbstub.c I am having troubles trying to apply your patch: Applying: /target/i386: fix gdbstub k_gs_base issue error: corrupt patch at line 23 Patch failed at 0001 /target/i386: fix gdbstub k_gs_base issue hint: Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". The information on the wiki might help you to use proper format: https://wiki.qemu.org/Contribute/SubmitAPatch#Use_git_format-patch > > @@ -350,14 +350,16 @@ int x86_cpu_gdb_write_register(CPUState *cs, > uint8_t *mem_buf, int n) > > env->segs[R_GS].base = ldl_p(mem_buf); > > return 4; > > -#ifdef TARGET_X86_64 > > case IDX_SEG_REGS + 8: > > +#ifdef TARGET_X86_64 > > if (env->hflags & HF_CS64_MASK) { > > env->kernelgsbase = ldq_p(mem_buf); > > return 8; > > } > > env->kernelgsbase = ldl_p(mem_buf); You can add here the #endif > > return 4; and remove the '#else return 4; #endif' lines. > > +#else > > + return 4; > > #endif > > case IDX_FP_REGS + 8: > > -- > > 2.21.0 > Regards, Phil.
diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c index aef25b70f1..7228d20674 100644 --- a/target/i386/gdbstub.c +++ b/target/i386/gdbstub.c @@ -350,14 +350,16 @@ int x86_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) env->segs[R_GS].base = ldl_p(mem_buf); return 4; -#ifdef TARGET_X86_64 case IDX_SEG_REGS + 8: +#ifdef TARGET_X86_64 if (env->hflags & HF_CS64_MASK) { env->kernelgsbase = ldq_p(mem_buf); return 8; } env->kernelgsbase = ldl_p(mem_buf); return 4; +#else + return 4; #endif case IDX_FP_REGS + 8: -- 2.21.0
Fixes: corrects clobbering of registers appearing after k_gs_base Buglink: https://bugs.launchpad.net/qemu/+bug/1857640 Signed-off-by: Marek Dolata <mkdolata@us.ibm.com> --- target/i386/gdbstub.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)