[libvirt] [PATCH] tests: avoid too-large constants

Compiling with gcc 4.1.2 (RHEL 5) complains: virdbustest.c: In function 'testMessageSimple': virdbustest.c:61: warning: integer constant is too large for 'long' type virdbustest.c:62: warning: integer constant is too large for 'long' type virdbustest.c: In function 'testMessageArray': virdbustest.c:183: warning: this decimal constant is unsigned only in ISO C90 virdbustest.c: In function 'testMessageStruct': virdbustest.c:239: warning: integer constant is too large for 'long' type virdbustest.c:240: warning: integer constant is too large for 'long' type * tests/virdbustest.c (testMessageSiple, testMessageArray) (testMessageStruct): Don't violate C89 constant constraints. Signed-off-by: Eric Blake <eblake@redhat.com> --- Pushing under the build-breaker rule. tests/virdbustest.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/virdbustest.c b/tests/virdbustest.c index 61de937..528342b 100644 --- a/tests/virdbustest.c +++ b/tests/virdbustest.c @@ -58,8 +58,8 @@ static int testMessageSimple(const void *args ATTRIBUTE_UNUSED) unsigned short in_uint16 = 32000, out_uint16 = 0; int in_int32 = 100000000, out_int32 = 0; unsigned int in_uint32 = 200000000, out_uint32 = 0; - long long in_int64 = 1000000000000, out_int64 = 0; - unsigned long long in_uint64 = 2000000000000, out_uint64 = 0; + long long in_int64 = 1000000000000LL, out_int64 = 0; + unsigned long long in_uint64 = 2000000000000LL, out_uint64 = 0; double in_double = 3.14159265359, out_double = 0;; const char *in_string = "Hello World"; char *out_string = NULL; @@ -178,9 +178,9 @@ static int testMessageArray(const void *args ATTRIBUTE_UNUSED) DBusMessage *msg = NULL; int ret = -1; const char *in_str1 = "Hello"; - int in_int32a = 1000000000, out_int32a = 0; - int in_int32b = 2000000000, out_int32b = 0; - int in_int32c = 3000000000, out_int32c = 0; + int in_int32a = 100000000, out_int32a = 0; + int in_int32b = 200000000, out_int32b = 0; + int in_int32c = 300000000, out_int32c = 0; const char *in_str2 = "World"; char *out_str1 = NULL, *out_str2 = NULL; @@ -236,8 +236,8 @@ static int testMessageStruct(const void *args ATTRIBUTE_UNUSED) unsigned short in_uint16 = 32000, out_uint16 = 0; int in_int32 = 100000000, out_int32 = 0; unsigned int in_uint32 = 200000000, out_uint32 = 0; - long long in_int64 = 1000000000000, out_int64 = 0; - unsigned long long in_uint64 = 2000000000000, out_uint64 = 0; + long long in_int64 = 1000000000000LL, out_int64 = 0; + unsigned long long in_uint64 = 2000000000000LL, out_uint64 = 0; double in_double = 3.14159265359, out_double = 0;; const char *in_string = "Hello World"; char *out_string = NULL; -- 1.8.3.1

On Fri, Aug 09, 2013 at 07:45:16AM -0600, Eric Blake wrote:
Compiling with gcc 4.1.2 (RHEL 5) complains:
virdbustest.c: In function 'testMessageSimple': virdbustest.c:61: warning: integer constant is too large for 'long' type virdbustest.c:62: warning: integer constant is too large for 'long' type virdbustest.c: In function 'testMessageArray': virdbustest.c:183: warning: this decimal constant is unsigned only in ISO C90 virdbustest.c: In function 'testMessageStruct': virdbustest.c:239: warning: integer constant is too large for 'long' type virdbustest.c:240: warning: integer constant is too large for 'long' type
* tests/virdbustest.c (testMessageSiple, testMessageArray) (testMessageStruct): Don't violate C89 constant constraints.
Signed-off-by: Eric Blake <eblake@redhat.com> ---
Pushing under the build-breaker rule.
tests/virdbustest.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tests/virdbustest.c b/tests/virdbustest.c index 61de937..528342b 100644 --- a/tests/virdbustest.c +++ b/tests/virdbustest.c @@ -58,8 +58,8 @@ static int testMessageSimple(const void *args ATTRIBUTE_UNUSED) unsigned short in_uint16 = 32000, out_uint16 = 0; int in_int32 = 100000000, out_int32 = 0; unsigned int in_uint32 = 200000000, out_uint32 = 0; - long long in_int64 = 1000000000000, out_int64 = 0; - unsigned long long in_uint64 = 2000000000000, out_uint64 = 0; + long long in_int64 = 1000000000000LL, out_int64 = 0; + unsigned long long in_uint64 = 2000000000000LL, out_uint64 = 0; double in_double = 3.14159265359, out_double = 0;; const char *in_string = "Hello World"; char *out_string = NULL; @@ -178,9 +178,9 @@ static int testMessageArray(const void *args ATTRIBUTE_UNUSED) DBusMessage *msg = NULL; int ret = -1; const char *in_str1 = "Hello"; - int in_int32a = 1000000000, out_int32a = 0; - int in_int32b = 2000000000, out_int32b = 0; - int in_int32c = 3000000000, out_int32c = 0; + int in_int32a = 100000000, out_int32a = 0; + int in_int32b = 200000000, out_int32b = 0; + int in_int32c = 300000000, out_int32c = 0;
I actually intentionally choose 300000000 as a value that would be above MAX_INT32 (2147483647). I guess what I really should have done was use something like -2147483640 instead, so we didn't rely on wrapping of 3000000000. Could you change this test to use a large -ve number for the 3rd int, rather than stripping a 0 from all 3. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 08/09/2013 07:53 AM, Daniel P. Berrange wrote:
On Fri, Aug 09, 2013 at 07:45:16AM -0600, Eric Blake wrote:
Compiling with gcc 4.1.2 (RHEL 5) complains:
virdbustest.c: In function 'testMessageSimple': virdbustest.c:61: warning: integer constant is too large for 'long' type virdbustest.c:62: warning: integer constant is too large for 'long' type virdbustest.c: In function 'testMessageArray': virdbustest.c:183: warning: this decimal constant is unsigned only in ISO C90 virdbustest.c: In function 'testMessageStruct': virdbustest.c:239: warning: integer constant is too large for 'long' type virdbustest.c:240: warning: integer constant is too large for 'long' type
* tests/virdbustest.c (testMessageSiple, testMessageArray) (testMessageStruct): Don't violate C89 constant constraints.
Signed-off-by: Eric Blake <eblake@redhat.com> ---
Pushing under the build-breaker rule.
@@ -178,9 +178,9 @@ static int testMessageArray(const void *args ATTRIBUTE_UNUSED) DBusMessage *msg = NULL; int ret = -1; const char *in_str1 = "Hello"; - int in_int32a = 1000000000, out_int32a = 0; - int in_int32b = 2000000000, out_int32b = 0; - int in_int32c = 3000000000, out_int32c = 0; + int in_int32a = 100000000, out_int32a = 0; + int in_int32b = 200000000, out_int32b = 0; + int in_int32c = 300000000, out_int32c = 0;
I actually intentionally choose 300000000 as a value that would be above MAX_INT32 (2147483647). I guess what I really should have done was use something like -2147483640 instead, so we didn't rely on wrapping of 3000000000.
Could you change this test to use a large -ve number for the 3rd int, rather than stripping a 0 from all 3.
Will do. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (2)
-
Daniel P. Berrange
-
Eric Blake