Re: MAXIMUM_ALIGNOF on Windows-32

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: Pavan Deolasee <pavan(dot)deolasee(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: MAXIMUM_ALIGNOF on Windows-32
Date: 2007-07-20 14:32:35
Message-ID: 5614.1184941955@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Andrew Dunstan <andrew(at)dunslane(dot)net> writes:
> Tom Lane wrote:
>> Anyway, we detect this directly based on the C compiler's behavior,
>> and you can't argue with the compiler about it. Whatever it's
>> doing is right by definition.

> Perhaps Pavan is referring to what is hardcoded in pg_config.h.win32
> which is used for MSVC builds (but not for MinGW builds, IIRC), in
> which case the answer might be that in this file we need to be
> pessimistic about such things, since we have no reasonable way to run
> configure on this platform.

Somebody had better double-check that. We don't need to be
"pessimistic", we need to be *correct*, because the align values had
better match the way the compiler will lay out a C struct. Otherwise
struct-based access to catalog rows will fail. (I'm not sure if there
are any system catalogs with float8 or int64 columns, but I'd sure not
want to find out that we couldn't have one because of misconfiguration
of MSVC builds.)

I see though that the comment in pg_config.h.win32 claims it was derived
from mechanically-generated configure output, so unless that's lying
it should be OK already. AFAIK struct alignment is part of the ABI for
a platform and is not subject to the whims of individual compilers, so
the result from MinGW should be OK for MSVC.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2007-07-20 15:09:20 Re: MAXIMUM_ALIGNOF on Windows-32
Previous Message Andrew Dunstan 2007-07-20 14:22:20 Re: MAXIMUM_ALIGNOF on Windows-32