From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: dgilbert@redhat.com, lvivier@redhat.com, peterx@redhat.com,
pbonzini@redhat.com
Subject: [Qemu-devel] [PATCH 0/2] Fix tests on recent gcc
Date: Wed, 23 Aug 2017 10:38:59 +0200 [thread overview]
Message-ID: <20170823083901.852-1-quintela@redhat.com> (raw)
Hi
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 <pbonzini@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 acpid test compile
tests/test-iov.c | 8 ++++----
tests/vmgenid-test.c | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
--
2.13.5
next reply other threads:[~2017-08-23 8:47 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-23 8:38 Juan Quintela [this message]
2017-08-23 8:39 ` [Qemu-devel] [PATCH 1/2] tests: Use real size for iov tests Juan Quintela
2017-08-23 11:18 ` Peter Xu
2017-08-23 11:35 ` Juan Quintela
2017-08-28 16:10 ` Thomas Huth
2017-08-30 9:45 ` Juan Quintela
2017-08-30 11:34 ` Juan Quintela
2017-08-23 8:39 ` [Qemu-devel] [PATCH 2/2] tests: Make acpid test compile Juan Quintela
2017-08-23 11:53 ` Dr. David Alan Gilbert
2017-08-28 14:41 ` Cédric Le Goater
2017-08-29 20:17 ` Eric Blake
2017-08-30 10:45 ` Daniel P. Berrange
2017-08-30 11:37 ` Juan Quintela
2017-08-30 10:51 ` Juan Quintela
2017-08-30 11:07 ` Daniel P. Berrange
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170823083901.852-1-quintela@redhat.com \
--to=quintela@redhat.com \
--cc=dgilbert@redhat.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).