Subject: Re; Postgres95
To: None <stscl@cscip.uni-sb.de>
From: Dave Millen <dmill@globalnet.co.uk>
List: port-arm32
Date: 11/17/1996 18:03:45
Hi Stefan,
on 6/11/96 you wrote:
> As described in the docs, I used gmake to make the MAKEFILE.global.
> Compiling it with
>
> PORTNAME=BSD44_derived
>
> which should be for 'OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)',
> according to the documentation, resulted in a compilation phase of about 20
> minutes and a final abort with the following error messages:
>
>
> /usr/local/steve/postgres95/src/backend/storage/ipc/s_lock.c:
> In function 'tas':
> /usr/local/steve/postgres95/src/backend/storage/ipc/s_lock.c:393:
> Inconsistent operand constraints in an 'asm'
>
>
> The relevant code there is
>
> #if defined(PORTNAME_BSD44_derived) || \
> defined(PORTNAME_bsdi) || \
> defined(PORTNAME_bsdi_2_1) || \
> defined(PORTNAME_linux)
>
> int
> tas(slock_t *m)
> {
> slock_t res;
> __asm__("xchgb %0,%1":"=q" (res),"=m" (*m):"0" (0x1));
> return(res);
> }
There were several suggestions for the meaning of this, and I am not
familiar enough with Intel assembler to know whether it's 'one of
theirs';-) but I am experienced in 680x0 and it's NOT that.
Reading between the lines, I think the code checks bit 0 of 'm' and
returns 1 if set, 0 otherwise.
I substituted the following in order to implement this:
int
tas(slock_t *m)
{
slock_t res;
tres=0;
if (m && 0x1)
tres=1;
return(res);
}
and carried on compiling, but after a while, pathnames are wrong in some
of the 'Makefile.inc' files. Using a printout from 'du' and correcting
these eventually comes up against undefined references to 'dlopen',
'dlsym' and 'dlclose'. I can find no reference to these anywhere and so
commented them out, but eventually 'gmake' does not know how to make
'dllist.o'(I think) and that's as far as I have got.
I hope the above helps, and would appreciate any pointers you can give
me in this matter.
Regards
Dave Millen