Thread: Bug report on Solaris 8/x86

Bug report on Solaris 8/x86

From
Mark Round
Date:
Hi,

I am trying to compile Postgres-8.0.0beta1 on Solaris 8/x86, using Sun's
C compiler, and get the following error which told me to contact you :-

"../../../../src/include/storage/s_lock.h", line 654: #error: PostgreSQL
does not have native spinlock support on this platform.  To continue the
compilation, rerun configure using --disable-spinlocks.  However,
performance will be poor.  Please report this to pgsql-bugs@postgresql.org.

My system is as follows :-

bash-2.03$ uname -a
SunOS daedal 5.8 Generic_117351-03 i86pc i386 i86pc

bash-2.03$ cc -V
cc: Sun C 5.5 Patch 112761-09 2004/06/08
usage: cc [ options] files.  Use 'cc -flags' for details

environment variables used :
LD_OPTIONS="-R/opt/csw/lib -L/opt/csw/lib"
CC="cc -fast -xarch=386 -I/opt/csw/include"

./configure --prefix=/opt/csw/postgres  --with-pam --with-openssl
--enable-multibyte --with-CXX --with-includes=/opt/csw/include/openssl

Any suggestions ?

Thanks in advance,

-Mark
mark@markround.com

Re: Bug report on Solaris 8/x86

From
Tom Lane
Date:
Mark Round <mark@markround.com> writes:
> I am trying to compile Postgres-8.0.0beta1 on Solaris 8/x86, using Sun's
> C compiler, and get the following error which told me to contact you :-

> "../../../../src/include/storage/s_lock.h", line 654: #error: PostgreSQL
> does not have native spinlock support on this platform.  To continue the
> compilation, rerun configure using --disable-spinlocks.  However,
> performance will be poor.  Please report this to pgsql-bugs@postgresql.org.

Hmm.  There does not seem to be any support for non-gcc Solaris/86 in
src/include/storage/s_lock.h.  I am not sure why not, since we do have
a src/backend/port/tas/solaris_i386.s file, which should work as an
external implementation of TAS().  Perhaps it got lost in the recent
reorganization of the spinlock code.  Can you test a suitable addition?
It probably doesn't need to be any more complicated than the entry
for old SunOS:

#if defined(sun3)
#define HAS_TEST_AND_SET

typedef unsigned char slock_t;
#endif

but I'm unsure what's an appropriate #if to recognize Solaris/x86.

            regards, tom lane