Re: [PORTS] solaris build problem with Sun compilers

Alan Stange <[email protected]> Thu, 18 May 2006 08:40:36 -0400
Newsgroups gmane.comp.db.postgresql.ports
Organization Renaissance Technologies Corp.
Message-ID <[email protected]>
Bruce Momjian wrote:
> Alan Stange wrote:
>> Tom Lane wrote:
>>> Alan Stange <[email protected]> writes:
>>>   
>>>> Check out the comment and implementation for cas32() in this .il 
>>>> template file for libc from OpenSolaris:
>>>>     
>>>   
>>>> http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/sparc/threads/sparc.il
>>>>     
>>> If you mean
>>>
>>>           * When compiling with -xarch=v8, the compiler refuses to
>>>           * accept the 'cas' instruction, so we encode it in hex below.
>>>
>>> I can't say that that impresses me.  It still will fail on v8 chips no?
>>> What's the point of fooling the compiler if you can't fool the hardware?
>> I believe the trick here is that Solaris 10 will only run on v9 hardware 
>> (or the sun4u systems), which all have the instruction.   But the v8 ABI 
>> "model" doesn't have it.   So, in some sense the ABI doesn't "allow" 
>> this instruction, but the hardware does, so they can just slam it in 
>> knowing that it'll work.


> Uh, are you saying our Solaris Sparc "cas" ASM is only going to work for
> Solaris 11 tools?  That doesn't sound good.  We must have people using
> earlier Solaris tools.

No, I'm not saying that at all.

I think I'm saying that cas is OK for any reasonable Solaris+Sparc+Sun 
compiler combination.  It'll fail on any SuperSparc based hardware and 
older compilers (more than ~5 years), but that's too bad.

I'm also saying that cas in not OK for any gcc+binutils combination.  As 
far as I can tell, gcc is still building code for the v7 platform by 
default.  It's possible to override this, but I don't think it's 
something you can test for in the preprocessor.

-- Alan



---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq