[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 0/2] Fix tests on recent gcc
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH v4 0/2] Fix tests on recent gcc |
Date: |
Fri, 1 Sep 2017 13:54:58 +0200 |
Hi
v4: really sent the patches for v3, not for v2. Sorry folks
[v3]
- change assert from position
Please review.
[v2]
- move all uses of -1 for memtest.
- remove docs about the feature.
- use size_t for the second patch (cedric)
Please, review.
[v1]
On Fedora 26 (gcc-7.1.1 and glib2 2.52.3) tests don't compile.
In file included from /usr/include/string.h:639:0,
from /mnt/kvm/qemu/cleanup/include/qemu/osdep.h:69,
from /mnt/kvm/qemu/cleanup/tests/test-iov.c:1:
In function ‘memcpy’,
inlined from ‘iov_from_buf’ at
/mnt/kvm/qemu/cleanup/include/qemu/iov.h:51:9,
inlined from ‘test_to_from_buf_1’ at
/mnt/kvm/qemu/cleanup/tests/test-iov.c:88:14,
inlined from ‘test_to_from_buf’ at
/mnt/kvm/qemu/cleanup/tests/test-iov.c:144:9:
/usr/include/bits/string3.h:53:10: error: ‘__builtin_memcpy’: specified size
18446744073709551615 exceeds maximum object size 9223372036854775807
[-Werror=stringop-overflow=]
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘memcpy’,
inlined from ‘iov_to_buf’ at /mnt/kvm/qemu/cleanup/include/qemu/iov.h:64:9,
inlined from ‘test_to_from_buf_1’ at
/mnt/kvm/qemu/cleanup/tests/test-iov.c:94:14,
inlined from ‘test_to_from_buf’ at
/mnt/kvm/qemu/cleanup/tests/test-iov.c:144:9:
/usr/include/bits/string3.h:53:10: error: ‘__builtin_memcpy’: specified size
18446744073709551615 exceeds maximum object size 9223372036854775807
[-Werror=stringop-overflow=]
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
In this case, we are abusing the functions and call a size_t argument
with -1, which gives us a very big number. gcc gets overzealous and
gets confused about it. Notice that this was introduced in 2015 by Paolo:
commit ad523bca56a7202d2498c550a41be5c986c4d33c
Author: Paolo Bonzini <address@hidden>
Date: Tue Dec 22 12:03:33 2015 +0100
iov: avoid memcpy for "simple" iov_from_buf/iov_to_buf
I fixed it by using the real sizes in the tests insntead of -1. It is already
calculated.
In file included from /usr/include/glib-2.0/glib/glist.h:32:0,
from /usr/include/glib-2.0/glib/ghash.h:33,
from /usr/include/glib-2.0/glib.h:50,
from /mnt/kvm/qemu/cleanup/tests/vmgenid-test.c:11:
In function ‘acpi_find_vgia’,
inlined from ‘read_guid_from_memory’ at
/mnt/kvm/qemu/cleanup/tests/vmgenid-test.c:103:18:
/usr/include/glib-2.0/glib/gmem.h:216:10: error: argument 1 range
[18446744071562067968, 18446744073709551615] exceeds maximum object size
9223372036854775807 [-Werror=alloc-size-larger-than=]
__p = g_##func##_n (__n, __s); \
~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/glib/gmem.h:278:42: note: in expansion of macro ‘_G_NEW’
#define g_new0(struct_type, n_structs) _G_NEW (struct_type, n_structs,
malloc0)
^~~~~~
/mnt/kvm/qemu/cleanup/tests/vmgenid-test.c:70:14: note: in expansion of macro
‘g_new0’
tables = g_new0(uint32_t, tables_nr);
^~~~~~
/mnt/kvm/qemu/cleanup/tests/vmgenid-test.c: In function ‘read_guid_from_memory’:
/usr/include/glib-2.0/glib/gmem.h:96:10: note: in a call to allocation function
‘g_malloc0_n’ declared here
gpointer g_malloc0_n (gsize n_blocks,
^~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [/mnt/kvm/qemu/cleanup/rules.mak:66: tests/vmgenid-test.o] Error 1
this cames form line:
tables = g_new0(uint32_t, tables_nr);
glib/gcc gets completely confused about this and think that 1st
argument can be 2^64-1. Documentation says that you should use g_new
for struct types, so ... I moved to g_malloc0() and call it a day.
--
2.13.5
Juan Quintela (2):
tests: Use real size for iov tests
tests: Make vmgenid test compile
include/qemu/iov.h | 6 ------
tests/test-iov.c | 10 +++++-----
tests/vmgenid-test.c | 4 ++--
3 files changed, 7 insertions(+), 13 deletions(-)
--
2.13.5
- [Qemu-devel] [PATCH v4 0/2] Fix tests on recent gcc,
Juan Quintela <=