[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RISU PATCH 2/5] risu_i386: move reginfo-related code t
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [RISU PATCH 2/5] risu_i386: move reginfo-related code to risu_reginfo_i386.c |
Date: |
Thu, 25 Apr 2019 14:39:59 +0100 |
User-agent: |
mu4e 1.3.1; emacs 26.1 |
Jan Bobek <address@hidden> writes:
> In order to build risu successfully for i386, we need files
> risu_reginfo_i386.{h,c}; this patch adds the latter by extracting the
> relevant code from risu_i386.c.
>
> This patch is pure code motion; no functional changes were made.
>
> Signed-off-by: Jan Bobek <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> risu_i386.c | 54 -----------------------------------
> risu_reginfo_i386.c | 68 +++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 68 insertions(+), 54 deletions(-)
> create mode 100644 risu_reginfo_i386.c
>
> diff --git a/risu_i386.c b/risu_i386.c
> index 6798a78..2d2f325 100644
> --- a/risu_i386.c
> +++ b/risu_i386.c
> @@ -33,43 +33,6 @@ void advance_pc(void *vuc)
> uc->uc_mcontext.gregs[REG_EIP] += 2;
> }
>
> -static void fill_reginfo(struct reginfo *ri, ucontext_t * uc)
> -{
> - int i;
> - for (i = 0; i < NGREG; i++) {
> - switch (i) {
> - case REG_ESP:
> - case REG_UESP:
> - case REG_GS:
> - case REG_FS:
> - case REG_ES:
> - case REG_DS:
> - case REG_TRAPNO:
> - case REG_EFL:
> - /* Don't store these registers as it results in mismatches.
> - * In particular valgrind has different values for some
> - * segment registers, and they're boring anyway.
> - * We really shouldn't be ignoring EFL but valgrind doesn't
> - * seem to set it right and I don't care to investigate.
> - */
> - ri->gregs[i] = 0xDEADBEEF;
> - break;
> - case REG_EIP:
> - /* Store the offset from the start of the test image */
> - ri->gregs[i] = uc->uc_mcontext.gregs[i] - image_start_address;
> - break;
> - default:
> - ri->gregs[i] = uc->uc_mcontext.gregs[i];
> - break;
> - }
> - }
> - /* x86 insns aren't 32 bit but we're not really testing x86 so
> - * this is just to distinguish 'do compare' from 'stop'
> - */
> - ri->faulting_insn = *((uint32_t *) uc->uc_mcontext.gregs[REG_EIP]);
> -}
> -
> -
> int send_register_info(int sock, void *uc)
> {
> struct reginfo ri;
> @@ -100,23 +63,6 @@ int recv_and_compare_register_info(int sock, void *uc)
> return resp;
> }
>
> -static char *regname[] = {
> - "GS", "FS", "ES", "DS", "EDI", "ESI", "EBP", "ESP",
> - "EBX", "EDX", "ECX", "EAX", "TRAPNO", "ERR", "EIP",
> - "CS", "EFL", "UESP", "SS", 0
> -};
> -
> -static void dump_reginfo(struct reginfo *ri)
> -{
> - int i;
> - fprintf(stderr, " faulting insn %x\n", ri->faulting_insn);
> - for (i = 0; i < NGREG; i++) {
> - fprintf(stderr, " %s: %x\n", regname[i] ? regname[i] : "???",
> - ri->gregs[i]);
> - }
> -}
> -
> -
> /* Print a useful report on the status of the last comparison
> * done in recv_and_compare_register_info(). This is called on
> * exit, so need not restrict itself to signal-safe functions.
> diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c
> new file mode 100644
> index 0000000..e8d671f
> --- /dev/null
> +++ b/risu_reginfo_i386.c
> @@ -0,0 +1,68 @@
> +/*******************************************************************************
> + * Copyright (c) 2010 Linaro Limited
> + * All rights reserved. This program and the accompanying materials
> + * are made available under the terms of the Eclipse Public License v1.0
> + * which accompanies this distribution, and is available at
> + * http://www.eclipse.org/legal/epl-v10.html
> + *
> + * Contributors:
> + * Peter Maydell (Linaro) - initial implementation
> +
> ******************************************************************************/
> +
> +#include <stdio.h>
> +#include <ucontext.h>
> +
> +#include "risu.h"
> +#include "risu_reginfo_i386.h"
> +
> +static void fill_reginfo(struct reginfo *ri, ucontext_t * uc)
> +{
> + int i;
> + for (i = 0; i < NGREG; i++) {
> + switch (i) {
> + case REG_ESP:
> + case REG_UESP:
> + case REG_GS:
> + case REG_FS:
> + case REG_ES:
> + case REG_DS:
> + case REG_TRAPNO:
> + case REG_EFL:
> + /* Don't store these registers as it results in mismatches.
> + * In particular valgrind has different values for some
> + * segment registers, and they're boring anyway.
> + * We really shouldn't be ignoring EFL but valgrind doesn't
> + * seem to set it right and I don't care to investigate.
> + */
> + ri->gregs[i] = 0xDEADBEEF;
> + break;
> + case REG_EIP:
> + /* Store the offset from the start of the test image */
> + ri->gregs[i] = uc->uc_mcontext.gregs[i] - image_start_address;
> + break;
> + default:
> + ri->gregs[i] = uc->uc_mcontext.gregs[i];
> + break;
> + }
> + }
> + /* x86 insns aren't 32 bit but we're not really testing x86 so
> + * this is just to distinguish 'do compare' from 'stop'
> + */
> + ri->faulting_insn = *((uint32_t *) uc->uc_mcontext.gregs[REG_EIP]);
> +}
> +
> +static char *regname[] = {
> + "GS", "FS", "ES", "DS", "EDI", "ESI", "EBP", "ESP",
> + "EBX", "EDX", "ECX", "EAX", "TRAPNO", "ERR", "EIP",
> + "CS", "EFL", "UESP", "SS", 0
> +};
> +
> +static void dump_reginfo(struct reginfo *ri)
> +{
> + int i;
> + fprintf(stderr, " faulting insn %x\n", ri->faulting_insn);
> + for (i = 0; i < NGREG; i++) {
> + fprintf(stderr, " %s: %x\n", regname[i] ? regname[i] : "???",
> + ri->gregs[i]);
> + }
> +}
--
Alex Bennée
- [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386, Jan Bobek, 2019/04/08
- [Qemu-devel] [RISU PATCH 1/5] risu_i386: move reginfo_t and related defines to risu_reginfo_i386.h, Jan Bobek, 2019/04/08
- [Qemu-devel] [RISU PATCH 3/5] risu_reginfo_i386: implement arch-specific reginfo interface, Jan Bobek, 2019/04/08
- [Qemu-devel] [RISU PATCH 5/5] risu_i386: remove old unused code, Jan Bobek, 2019/04/08
- [Qemu-devel] [RISU PATCH 2/5] risu_i386: move reginfo-related code to risu_reginfo_i386.c, Jan Bobek, 2019/04/08
- Re: [Qemu-devel] [RISU PATCH 2/5] risu_i386: move reginfo-related code to risu_reginfo_i386.c,
Alex Bennée <=
- [Qemu-devel] [RISU PATCH 4/5] risu_i386: implement missing CPU-specific functions, Jan Bobek, 2019/04/08
- Re: [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386, Richard Henderson, 2019/04/08
- Re: [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386, Alex Bennée, 2019/04/25