Re: [BUGS] Compile fails on AIX 6.1 - Mailing list pgsql-hackers

From Noah Misch
Subject Re: [BUGS] Compile fails on AIX 6.1
Date
Msg-id 20150828070203.GA2534837@tornado.leadboat.com
Whole thread Raw
In response to Re: [BUGS] Compile fails on AIX 6.1  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: [BUGS] Compile fails on AIX 6.1
List pgsql-hackers
On Thu, Aug 27, 2015 at 10:36:46AM -0400, Tom Lane wrote:
> the problem is that
> IBM's assembler doesn't understand the "local symbol" notation supported
> by the GNU assembler ("bne 1f" referencing the next occurrence of "1:").
> So s_lock.h's PowerPC assembly code works if you have gcc configured to
> use gas as backend, but not if it's configured to use the native AIX
> assembler.  Steve says the latter configuration is pretty common.

These days, the latter configuration is all but universal.  Per the GCC
installation instructions, "The GNU Assembler has not been updated to support
AIX 6 or AIX 7."

> So now that we know what is happening, what do we want to do about it?
> AFAICS there are two plausible ways to fix it:
> 
> 1. Add a configure-time test to see if the assembler supports local
> symbols.  If not, don't try to use the lwarx assembly stanza, but let
> it fall through to using _check_lock().  This would be simple but
> there would presumably be some performance hit.
> 
> 2. Don't rely on local symbols in the PPC spinlock assembly code.  This
> is a bit ugly, because the only way to do that is to hard-code branch
> offsets, as in the attached draft patch.  If there were any likelihood
> that we'd be changing the PPC spinlock code in future, I would regard
> this as unmaintainable ... but really, that code is pretty static.
> So I think this is a viable alternative.

A third option is to use __sync intrinsics, like we do on ARM.  I like (2).



pgsql-hackers by date:

Previous
From: Fabien COELHO
Date:
Subject: Re: patch: version_stamp.pl: Add Git commit info to version if 'git' is specified
Next
From: Simon Riggs
Date:
Subject: Re: 9.5 feature count