[PATCH 10/23] plugins/lockstep: make mixed-mode safe

Alex Bennée posted 23 patches 2 months, 2 weeks ago
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Thomas Huth <thuth@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, Laurent Vivier <laurent@vivier.eu>, Paolo Bonzini <pbonzini@redhat.com>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, Peter Xu <peterx@redhat.com>, David Hildenbrand <david@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, Stefan Hajnoczi <stefanha@redhat.com>, Mads Ynddal <mads@ynddal.dk>
There is a newer version of this series
[PATCH 10/23] plugins/lockstep: make mixed-mode safe
Posted by Alex Bennée 2 months, 2 weeks ago
The ExecState is shared across the socket and if we want to compare
say 64 bit and 32 bit binaries we need the two to use the same sizes
for things.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 contrib/plugins/lockstep.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c
index 111ec3fa27..761bcdf363 100644
--- a/contrib/plugins/lockstep.c
+++ b/contrib/plugins/lockstep.c
@@ -57,7 +57,7 @@ typedef struct {
 /* The execution state we compare */
 typedef struct {
     uint64_t pc;
-    unsigned long insn_count;
+    uint64_t insn_count;
 } ExecState;
 
 typedef struct {
@@ -148,7 +148,7 @@ static void report_divergance(ExecState *us, ExecState *them)
 
         g_string_printf(out,
                         "Δ insn_count @ 0x%016" PRIx64
-                        " (%ld) vs 0x%016" PRIx64 " (%ld)\n",
+                        " (%"PRId64") vs 0x%016" PRIx64 " (%"PRId64")\n",
                         us->pc, us->insn_count, them->pc, them->insn_count);
 
         for (entry = log, i = 0;
-- 
2.39.2


Re: [PATCH 10/23] plugins/lockstep: make mixed-mode safe
Posted by Richard Henderson 2 months, 2 weeks ago
On 6/28/24 05:42, Alex Bennée wrote:
> The ExecState is shared across the socket and if we want to compare
> say 64 bit and 32 bit binaries we need the two to use the same sizes
> for things.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>   contrib/plugins/lockstep.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c
> index 111ec3fa27..761bcdf363 100644
> --- a/contrib/plugins/lockstep.c
> +++ b/contrib/plugins/lockstep.c
> @@ -57,7 +57,7 @@ typedef struct {
>   /* The execution state we compare */
>   typedef struct {
>       uint64_t pc;
> -    unsigned long insn_count;
> +    uint64_t insn_count;
>   } ExecState;

Or long long, but I suppose this is more explicit about the width.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~

>   
>   typedef struct {
> @@ -148,7 +148,7 @@ static void report_divergance(ExecState *us, ExecState *them)
>   
>           g_string_printf(out,
>                           "Δ insn_count @ 0x%016" PRIx64
> -                        " (%ld) vs 0x%016" PRIx64 " (%ld)\n",
> +                        " (%"PRId64") vs 0x%016" PRIx64 " (%"PRId64")\n",
>                           us->pc, us->insn_count, them->pc, them->insn_count);
>   
>           for (entry = log, i = 0;