[PATCH] tests/tcg: Do not use inttypes.h in multiarch/system/memory.c

Ilya Leoshkevich posted 1 patch 1 month, 2 weeks ago
tests/tcg/multiarch/system/memory.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
[PATCH] tests/tcg: Do not use inttypes.h in multiarch/system/memory.c
Posted by Ilya Leoshkevich 1 month, 2 weeks ago
make check-tcg fails on Fedora with the following error message:

    alpha-linux-gnu-gcc [...] qemu/tests/tcg/multiarch/system/memory.c -o memory [...]
    qemu/tests/tcg/multiarch/system/memory.c:17:10: fatal error: inttypes.h: No such file or directory
       17 | #include <inttypes.h>
          |          ^~~~~~~~~~~~
    compilation terminated.

The reason is that Fedora has cross-compilers, but no cross-glibc
headers. Fix by hardcoding the format specifiers and dropping the
include.

An alternative fix would be to introduce a configure check for
inttypes.h. But this would make it impossible to use Fedora
cross-compilers for softmmu tests, which used to work so far.

Fixes: ecbcc9ead2f8 ("tests/tcg: add a system test to check memory instrumentation")
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 tests/tcg/multiarch/system/memory.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/tests/tcg/multiarch/system/memory.c b/tests/tcg/multiarch/system/memory.c
index 65a6038a241..7508f6b916d 100644
--- a/tests/tcg/multiarch/system/memory.c
+++ b/tests/tcg/multiarch/system/memory.c
@@ -14,7 +14,6 @@
 
 #include <stdint.h>
 #include <stdbool.h>
-#include <inttypes.h>
 #include <minilib.h>
 
 #ifndef CHECK_UNALIGNED
@@ -511,8 +510,8 @@ int main(void)
     int i;
     bool ok = true;
 
-    ml_printf("Test data start: 0x%"PRIxPTR"\n", &test_data[0]);
-    ml_printf("Test data end: 0x%"PRIxPTR"\n", &test_data[TEST_SIZE]);
+    ml_printf("Test data start: 0x%lx\n", (unsigned long)&test_data[0]);
+    ml_printf("Test data end: 0x%lx\n", (unsigned long)&test_data[TEST_SIZE]);
 
     /* Run through the unsigned tests first */
     for (i = 0; i < ARRAY_SIZE(init_ufns) && ok; i++) {
@@ -529,8 +528,8 @@ int main(void)
         ok = do_signed_reads(true);
     }
 
-    ml_printf("Test data read: %"PRId32"\n", test_read_count);
-    ml_printf("Test data write: %"PRId32"\n", test_write_count);
+    ml_printf("Test data read: %lu\n", (unsigned long)test_read_count);
+    ml_printf("Test data write: %lu\n", (unsigned long)test_write_count);
     ml_printf("Test complete: %s\n", ok ? "PASSED" : "FAILED");
     return ok ? 0 : -1;
 }
-- 
2.46.2
Re: [PATCH] tests/tcg: Do not use inttypes.h in multiarch/system/memory.c
Posted by Paolo Bonzini 1 month, 2 weeks ago
On 10/10/24 10:58, Ilya Leoshkevich wrote:
> make check-tcg fails on Fedora with the following error message:
> 
>      alpha-linux-gnu-gcc [...] qemu/tests/tcg/multiarch/system/memory.c -o memory [...]
>      qemu/tests/tcg/multiarch/system/memory.c:17:10: fatal error: inttypes.h: No such file or directory
>         17 | #include <inttypes.h>
>            |          ^~~~~~~~~~~~
>      compilation terminated.
> 
> The reason is that Fedora has cross-compilers, but no cross-glibc
> headers. Fix by hardcoding the format specifiers and dropping the
> include.
> 
> An alternative fix would be to introduce a configure check for
> inttypes.h. But this would make it impossible to use Fedora
> cross-compilers for softmmu tests, which used to work so far.
> 
> Fixes: ecbcc9ead2f8 ("tests/tcg: add a system test to check memory instrumentation")
> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

> ---
>   tests/tcg/multiarch/system/memory.c | 9 ++++-----
>   1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/tcg/multiarch/system/memory.c b/tests/tcg/multiarch/system/memory.c
> index 65a6038a241..7508f6b916d 100644
> --- a/tests/tcg/multiarch/system/memory.c
> +++ b/tests/tcg/multiarch/system/memory.c
> @@ -14,7 +14,6 @@
>   
>   #include <stdint.h>
>   #include <stdbool.h>
> -#include <inttypes.h>
>   #include <minilib.h>
>   
>   #ifndef CHECK_UNALIGNED
> @@ -511,8 +510,8 @@ int main(void)
>       int i;
>       bool ok = true;
>   
> -    ml_printf("Test data start: 0x%"PRIxPTR"\n", &test_data[0]);
> -    ml_printf("Test data end: 0x%"PRIxPTR"\n", &test_data[TEST_SIZE]);
> +    ml_printf("Test data start: 0x%lx\n", (unsigned long)&test_data[0]);
> +    ml_printf("Test data end: 0x%lx\n", (unsigned long)&test_data[TEST_SIZE]);
>   
>       /* Run through the unsigned tests first */
>       for (i = 0; i < ARRAY_SIZE(init_ufns) && ok; i++) {
> @@ -529,8 +528,8 @@ int main(void)
>           ok = do_signed_reads(true);
>       }
>   
> -    ml_printf("Test data read: %"PRId32"\n", test_read_count);
> -    ml_printf("Test data write: %"PRId32"\n", test_write_count);
> +    ml_printf("Test data read: %lu\n", (unsigned long)test_read_count);
> +    ml_printf("Test data write: %lu\n", (unsigned long)test_write_count);
>       ml_printf("Test complete: %s\n", ok ? "PASSED" : "FAILED");
>       return ok ? 0 : -1;
>   }
Re: [PATCH] tests/tcg: Do not use inttypes.h in multiarch/system/memory.c
Posted by Ilya Leoshkevich 3 weeks, 3 days ago
On Thu, 2024-10-10 at 11:20 +0200, Paolo Bonzini wrote:
> On 10/10/24 10:58, Ilya Leoshkevich wrote:
> > make check-tcg fails on Fedora with the following error message:
> > 
> >      alpha-linux-gnu-gcc [...]
> > qemu/tests/tcg/multiarch/system/memory.c -o memory [...]
> >      qemu/tests/tcg/multiarch/system/memory.c:17:10: fatal error:
> > inttypes.h: No such file or directory
> >         17 | #include <inttypes.h>
> >            |          ^~~~~~~~~~~~
> >      compilation terminated.
> > 
> > The reason is that Fedora has cross-compilers, but no cross-glibc
> > headers. Fix by hardcoding the format specifiers and dropping the
> > include.
> > 
> > An alternative fix would be to introduce a configure check for
> > inttypes.h. But this would make it impossible to use Fedora
> > cross-compilers for softmmu tests, which used to work so far.
> > 
> > Fixes: ecbcc9ead2f8 ("tests/tcg: add a system test to check memory
> > instrumentation")
> > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> 
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

[...]

Thanks for the review!

Could someone please pick this one and also [1] up?
Both patches are aimed at improving the situation with the test builds.

[1]
https://lore.kernel.org/qemu-devel/20241023131250.48510-1-iii@linux.ibm.com/
Re: [PATCH] tests/tcg: Do not use inttypes.h in multiarch/system/memory.c
Posted by Richard Henderson 2 weeks, 5 days ago
On 10/29/24 23:29, Ilya Leoshkevich wrote:
> On Thu, 2024-10-10 at 11:20 +0200, Paolo Bonzini wrote:
>> On 10/10/24 10:58, Ilya Leoshkevich wrote:
>>> make check-tcg fails on Fedora with the following error message:
>>>
>>>       alpha-linux-gnu-gcc [...]
>>> qemu/tests/tcg/multiarch/system/memory.c -o memory [...]
>>>       qemu/tests/tcg/multiarch/system/memory.c:17:10: fatal error:
>>> inttypes.h: No such file or directory
>>>          17 | #include <inttypes.h>
>>>             |          ^~~~~~~~~~~~
>>>       compilation terminated.
>>>
>>> The reason is that Fedora has cross-compilers, but no cross-glibc
>>> headers. Fix by hardcoding the format specifiers and dropping the
>>> include.
>>>
>>> An alternative fix would be to introduce a configure check for
>>> inttypes.h. But this would make it impossible to use Fedora
>>> cross-compilers for softmmu tests, which used to work so far.
>>>
>>> Fixes: ecbcc9ead2f8 ("tests/tcg: add a system test to check memory
>>> instrumentation")
>>> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
>>
>> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> 
> [...]
> 
> Thanks for the review!
> 
> Could someone please pick this one and also [1] up?
> Both patches are aimed at improving the situation with the test builds.
> 
> [1]
> https://lore.kernel.org/qemu-devel/20241023131250.48510-1-iii@linux.ibm.com/

Queued, thanks.

r~