Hi
Changes from v1: - 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 <pbonz...@redhat.com> 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. What do you think? Later, Juan. 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 | 2 +- 3 files changed, 6 insertions(+), 12 deletions(-) -- 2.13.5