Re: [HACKERS] s_lock.h problem on S/Linux

From: Keith Parks <emkxp01(at)mtcc(dot)demon(dot)co(dot)uk>
To: dg(at)illustra(dot)com
Cc: hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] s_lock.h problem on S/Linux
Date: 1998-06-21 15:59:04
Message-ID: 199806211559.QAA06977@mtcc.demon.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

David,

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

[postgres(at)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(at)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(at)illustra(dot)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.

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 1998-06-21 16:38:55 Re: [BUGS] About failed compile on BSDI 2.1
Previous Message David Gould 1998-06-21 01:07:27 Re: [HACKERS] s_lock.h problem on S/Linux