On Fri, 28 Dec 2001, Tom Lane wrote:
> "Jeffrey W. Baker" <jwbaker@acm.org> writes:
> >> It sounds like you have a build that's using SysV semaphores in place of
> >> test-and-set instructions. That should not happen on x86 hardware,
> >> since we have assembly TAS code for x86. Please look at your port
> >> header file (src/include/pg_config_os.h symlink) and
> >> src/include/storage/s_lock.h to figure out why it's misbuilt.
>
> > Well, it seems that one of __i386__ or __GNUC__ isn't set at compile time.
> > I'm using GCC on i386 so I don't see how that is possible.
>
> I don't either.
>
> > It should be
> > safe for me to simply define these two things in pg_config.h, I suspect.
>
> That is not a solution. If it's broken for you then it's likely to be
> broken for other people. We need to figure out what went wrong and
> provide a permanent fix.
>
> What gcc version are you running, exactly, and what symbols does it
> predefine? (I seem to recall that there's a way to find that out,
> though I'm not recalling how at the moment. Anyone?)
GCC 2.95.3 on Slackware 8 i386. I just tried this program:
#if defined __i386__ && defined __GNUC__
int
main(void)
{
exit();
}
#endif
which builds and runs, so the problem must lie elsewhere.
-jwb