Re: [HACKERS] s_lock.h problem on S/Linux - Mailing list pgsql-hackers

From Keith Parks
Subject Re: [HACKERS] s_lock.h problem on S/Linux
Date
Msg-id 199806211559.QAA06977@mtcc.demon.co.uk
Whole thread Raw
Responses Re: [HACKERS] s_lock.h problem on S/Linux  (dg@illustra.com (David Gould))
List pgsql-hackers
David,

After making your suggested changes and then doing a "make s_lock_test"
I get the following error messages.


[postgres@sparclinux buffer]$ make s_lock_test
gcc -g -I../../../include -I../../../backend   -O2  -I../.. -DS_LOCK_TEST=1
s_lock.c -o s_lock_test
/tmp/cca10794.s: Assembler messages:
/tmp/cca10794.s:290: Error: Bad expression
/tmp/cca10794.s:290: Error: Missing ')' assumed
/tmp/cca10794.s:290: Error: Bad expression
/tmp/cca10794.s:290: Error: Missing ')' assumed
/tmp/cca10794.s:290: Error: Illegal operands
/tmp/cca10794.s:440: Error: Bad expression
/tmp/cca10794.s:440: Error: Missing ')' assumed
/tmp/cca10794.s:440: Error: Bad expression
/tmp/cca10794.s:440: Error: Missing ')' assumed
/tmp/cca10794.s:440: Error: Illegal operands
make: *** [s_lock_test] Error 1

If I compile with -save-temps and look at the s_lock.s file I see, on
line 290:-

.stabn 68,0,131,.LM9-s_lock
.LM9:
.LL45:
        ldstub [[%i0]], %o0 <-------
.stabn 68,0,134,.LM10-s_lock
.LM10:
        and %o0,0xff,%o0


The double square braces look strange to me so I removed the single
braces in s_lock.h.

The modified file compiles OK and in s_lock.s I can see:-

.stabn 68,0,131,.LM9-s_lock
.LM9:
.LL45:
        ldstub [%i0], %o0
.stabn 68,0,134,.LM10-s_lock
.LM10:
        and %o0,0xff,%o0

Now I know absoloutely nothing whatsoever about SPARC (or gnu)
assembler so the code changes could result in nothing like a
test and set function but...

[postgres@sparclinux buffer]$ make s_lock_test
gcc -g -I../../../include -I../../../backend   -O2  -I../.. -DS_LOCK_TEST=1
s_lock.c -o s_lock_test
./s_lock_test
S_LOCK_TEST: this will hang for a few minutes and then abort
             with a 'stuck spinlock' message if S_LOCK()
             and TAS() are working.

FATAL: s_lock(00020be8) at s_lock.c:215, stuck spinlock. Aborting.

FATAL: s_lock(00020be8) at s_lock.c:215, stuck spinlock. Aborting.
make: *** [s_lock_test] IOT trap/Abort (core dumped)
make: *** Deleting file `s_lock_test'

Running s_lock_test does result in a hang for a few minutes
and then a "stuck spinlock" message so perhaps it's not all
that bad. (Not sure about the core dump though :-( )

Keith.




dg@illustra.com (David Gould)
>
> >
> > Hi hackers.
> >
> > I am having problems with the new spinlock code on the SPARC linux
> > platform. (Latest CVSup)
> >
> > The compiler doesn't seem to like the "asm" part of s_lock.h for (sparc)
> >
> > Here's one of the compiles that fails.
>
> Thank you for testing and reporting this. It is my fault of course, but as
> I don't have access to a sparc for testing I just did what I could. I am
> guessing here, but please apply the following to your pgsql and let me know
> what happens. Also, cd to src/storage/buffer and do 'make s_lock_test' as
> well.



pgsql-hackers by date:

Previous
From: dg@illustra.com (David Gould)
Date:
Subject: Re: [HACKERS] s_lock.h problem on S/Linux
Next
From: Bruce Momjian
Date:
Subject: Re: [BUGS] About failed compile on BSDI 2.1