configurator: Return pointer difference as ptrdiff_t
authorKevin Locke <kevin@kevinlocke.name>
Fri, 23 Sep 2016 03:33:14 +0000 (21:33 -0600)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 27 Sep 2016 05:39:45 +0000 (15:39 +1000)
On LLP64 systems (like 64-bit Windows) long is 32 bits while pointers
are 64 bits, which results in a warning similar to the following:

warning C4244: 'return': conversion from '__int64' to 'long', possible loss of data

for HAVE_STACK_GROWS_UPWARDS.  Fix this by using the ptrdiff_t type
introduced by C99 for this purpose.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
tools/configurator/configurator.c

index 75c59f86db947263b2a0aa190d8119cfee3934b4..c7577c0cb661f028585d1aac397af363a6e7cb4e 100644 (file)
@@ -278,7 +278,8 @@ static struct test tests[] = {
          "     return __stop_mysec - __start_mysec;\n"
          "}\n" },
        { "HAVE_STACK_GROWS_UPWARDS", DEFINES_EVERYTHING|EXECUTE, NULL, NULL,
-         "static long nest(const void *base, unsigned int i)\n"
+         "#include <stddef.h>\n"
+         "static ptrdiff_t nest(const void *base, unsigned int i)\n"
          "{\n"
          "     if (i == 0)\n"
          "             return (const char *)&i - (const char *)base;\n"