Compiling HEAD with -Werror int 64-bit mode - Mailing list pgsql-hackers

From Florian G. Pflug
Subject Compiling HEAD with -Werror int 64-bit mode
Date
Msg-id 4B279084.8090908@phlo.org
Whole thread Raw
Responses Re: Compiling HEAD with -Werror int 64-bit mode
List pgsql-hackers
Hi

HEAD fails to compile in 64-bit mode on Mac OS X 10.6 with gcc 4.2 and
-Werror.

What happens is that INT64_FORMAT gets defined as "%ld" (which is
correct - "long" and "unsigned long" are 64 bits wide on x86_64), but
the check for a working 64-bit int fails, causing INT64_IS_BUSTED to get
defined and int64 becoming actually a 32-bit type. This is turn causes
warnings when these pseudo int64s are passed to printf with format
specified INT64_FORMAT, which get turned to errors by -Werror.

configure fails to recognize "long" as a working 64-bit type because the
does_int64_work configure test produces warning due to a missing return
value declaration for main() and a missing prototype for
does_int64_work(). (Aain, those warning are turned into errors by -Werror).

I use the following envvar settings (when running ./configure) to force
64-bit mode and -Werror
CC=gcc-4.2 CFLAGS="-arch x86_64 -Werror" LDFLAGS="-arch x86_64"

The following patch fixed the problem for me - though I didn't yet try
it on any other platform that Mac OS X 10.6 with gcc 4.2 and in 64-bit mode.

----------------------------------------------------------------------
diff --git a/config/c-compiler.m4 b/config/c-compiler.m4
index 9ac2c30..c6bd523 100644
--- a/config/c-compiler.m4
+++ b/config/c-compiler.m4
@@ -35,7 +35,7 @@ AC_CACHE_CHECK([whether $1 is 64 bits], [Ac_cachevar], ac_int64 a = 20000001; ac_int64 b = 40000005;

-int does_int64_work()
+static int does_int64_work() {   ac_int64 c,d;

@@ -49,8 +49,8 @@ int does_int64_work()     return 0;   return 1; }
-main() {
-  exit(! does_int64_work());
+int main() {
+  return(! does_int64_work()); }], [Ac_cachevar=yes], [Ac_cachevar=no],
----------------------------------------------------------------------

best regards,
Florian Pflug



pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: Fwd: pgAdmin III: timestamp displayed in what time zone?
Next
From: Alvaro Herrera
Date:
Subject: Re: New VACUUM FULL