Hi,

On 2024-02-24 11:50:24 -0800, Noah Misch wrote:
> > We see this happen with both xlc and gcc (new enough to know how to do
> > this).  One idea would be that the AIX *linker* is unable to align it,
> > as that is the common tool-chain component here (and unlike stack and
> > heap objects, this scope is the linker's job).  There is a
> > pre-existing example of a zero-buffer that is at file scope like that:
> > pg_prewarm.c.  Perhaps it doesn't get tested?
> >
> > Hmm.
>
> GCC docs do say "For some linkers, the maximum supported alignment may be very
> very small.", but AIX "man LD" says "data sections are aligned on a boundary
> so as to satisfy the alignment of all CSECTs in the sections".  It also has -H
> and -K flags to force some particular higher alignment.

Some xlc manual [1] states that

  n must be a positive power of 2, or NIL. NIL can be specified as either
  __attribute__((aligned())) or __attribute__((aligned)); this is the same as
  specifying the maximum system alignment (16 bytes on all UNIX platforms).

Which does seems to suggest that this is a platform restriction.


Let's just drop AIX. This isn't the only alignment issue we've found and the
solution for those isn't so much a fix as forcing everyone to carefully only
look into one direction and not notice the cliffs to either side.

Greetings,

Andres Freund

[1] 
https://www.ibm.com/docs/en/SSGH2K_13.1.2/com.ibm.compilers.aix.doc/proguide.pdf


Reply via email to