[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RISU PATCH v4 04/10] risu: a bit more verbosity when r
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [RISU PATCH v4 04/10] risu: a bit more verbosity when running |
Date: |
Tue, 6 Jun 2017 10:55:59 +0100 |
On 2 June 2017 at 17:08, Alex Bennée <address@hidden> wrote:
> Before this is could seem a little quite when running as you had no
> indication stuff was happening (or how fast). I only dump on the master
> side as I want to minimise the amount of qemu logs to sift through.
>
> Signed-off-by: Alex Bennée <address@hidden>
>
> --
> v3
> - use portable fmt string for image_start_address
> - include arm dumping position
> ---
> risu.c | 15 +++++++++++++--
> risu.h | 3 +++
> risu_aarch64.c | 3 +++
> risu_arm.c | 3 +++
> 4 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/risu.c b/risu.c
> index 7e42160..bcdc219 100644
> --- a/risu.c
> +++ b/risu.c
> @@ -37,6 +37,16 @@ sigjmp_buf jmpbuf;
> /* Should we test for FP exception status bits? */
> int test_fp_exc = 0;
>
> +long executed_tests = 0;
> +void report_test_status(void *pc)
> +{
> + executed_tests += 1;
> + if (executed_tests % 100 == 0) {
> + fprintf(stderr,"Executed %ld test instructions (pc=%p)\r",
> + executed_tests, pc);
This gets called from signal handlers, so you can't use stdio.
> + }
> +}
> +
> void master_sigill(int sig, siginfo_t *si, void *uc)
> {
> switch (recv_and_compare_register_info(master_socket, uc))
> @@ -61,6 +71,7 @@ void apprentice_sigill(int sig, siginfo_t *si, void *uc)
> return;
> case 1:
> /* end of test */
> + fprintf(stderr, "\nend of test\n");
Can't use stdio in a signal handler.
> exit(0);
> default:
> /* mismatch */
> @@ -129,7 +140,7 @@ int master(int sock)
> }
> master_socket = sock;
> set_sigill_handler(&master_sigill);
> - fprintf(stderr, "starting image\n");
> + fprintf(stderr, "starting master image at 0x%"PRIxPTR"\n",
> image_start_address);
> image_start();
> fprintf(stderr, "image returned unexpectedly\n");
> exit(1);
> @@ -139,7 +150,7 @@ int apprentice(int sock)
> {
> apprentice_socket = sock;
> set_sigill_handler(&apprentice_sigill);
> - fprintf(stderr, "starting image\n");
> + fprintf(stderr, "starting apprentice image at 0x%"PRIxPTR"\n",
> image_start_address);
> image_start();
> fprintf(stderr, "image returned unexpectedly\n");
> exit(1);
> diff --git a/risu.h b/risu.h
> index 883bcf7..1eeb885 100644
> --- a/risu.h
> +++ b/risu.h
> @@ -37,6 +37,7 @@ extern uintptr_t image_start_address;
> extern void *memblock;
>
> extern int test_fp_exc;
> +extern int ismaster;
>
> /* Ops code under test can request from risu: */
> #define OP_COMPARE 0
> @@ -72,6 +73,8 @@ int recv_and_compare_register_info(int sock, void *uc);
> */
> int report_match_status(void);
>
> +void report_test_status(void *pc);
> +
> /* Interface provided by CPU-specific code: */
>
> /* Move the PC past this faulting insn by adjusting ucontext
> diff --git a/risu_aarch64.c b/risu_aarch64.c
> index 9c6809d..5625979 100644
> --- a/risu_aarch64.c
> +++ b/risu_aarch64.c
> @@ -16,6 +16,9 @@ void advance_pc(void *vuc)
> {
> ucontext_t *uc = vuc;
> uc->uc_mcontext.pc += 4;
> + if (ismaster) {
> + report_test_status((void *) uc->uc_mcontext.pc);
> + }
If we're going to print something we should do it in the
arch-independent code that calls advance_pc(), rather than
duplicating the code in each arch backend.
> }
>
> void set_ucontext_paramreg(void *vuc, uint64_t value)
> diff --git a/risu_arm.c b/risu_arm.c
> index f570828..eaf4f6c 100644
> --- a/risu_arm.c
> +++ b/risu_arm.c
> @@ -44,6 +44,9 @@ void advance_pc(void *vuc)
> {
> ucontext_t *uc = vuc;
> uc->uc_mcontext.arm_pc += insnsize(uc);
> + if (ismaster) {
> + report_test_status((void *) uc->uc_mcontext.arm_pc);
> + }
> }
thanks
-- PMM
- [Qemu-devel] [RISU PATCH v4 00/10] record/replay patches, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 02/10] build-all-archs: support cross building via docker, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 01/10] .gitignore: ignore build directories, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 04/10] risu: a bit more verbosity when running, Alex Bennée, 2017/06/02
- Re: [Qemu-devel] [RISU PATCH v4 04/10] risu: a bit more verbosity when running,
Peter Maydell <=
- [Qemu-devel] [RISU PATCH v4 03/10] build-all-archs: support --static flag, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 06/10] risu: add header to trace stream, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 05/10] risu: paramterise send/receive functions, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 08/10] risu: add support compressed tracefiles, Alex Bennée, 2017/06/02
- [Qemu-devel] [RISU PATCH v4 07/10] risu: add simple trace and replay support, Alex Bennée, 2017/06/02