Re: [INTERFACES] Shared lib grief with 6.4.2 - Mailing list pgsql-interfaces

From Oleg Bartunov
Subject Re: [INTERFACES] Shared lib grief with 6.4.2
Date
Msg-id Pine.GSO.3.96.SK.990526135014.7033A-100000@ra
Whole thread Raw
In response to Re: [INTERFACES] Shared lib grief with 6.4.2  (Jonathan Davis <haj@idianet.net>)
List pgsql-interfaces
Look at ports information ! There are several patches and I used
some of them, actually for Makefile.shlib and makefiles/freebsd.
Everything works fine now. BTW, these patches are incorporated now
to 6.5 sources.
Oleg

On Wed, 26 May 1999, Jonathan Davis wrote:

> Date: Wed, 26 May 1999 10:46:25 +0000
> From: Jonathan Davis <haj@idianet.net>
> To: Matthew Hagerty <matthew@venux.net>
> Cc: pgsql-interfaces@postgresql.org
> Subject: Re: [INTERFACES] Shared lib grief with 6.4.2
> 
> Matthew Hagerty wrote:
> 
> > Greetings,
> >
> > I'm trying to create a simple function for postgres-6.4.2 under
> > FreeBSD-3.1-RELEASE and GCC-2.7.2.1.  This is the program code, simply
> > converts a bool to int4:
> >
> > #include "../include/postgres.h"
> >
> > int4
> > bool2int(bool bCondition)
> > {
> >     if (bCondition)
> >         return(1);
> >     else
> >         return(0);
> > }
> >
> > Then on the command line to create the shared lib and a file command to
> > ensure I created a shared lib:
> >
> > # gcc -shared -I../include -o procs.so bool2int.c
> > # file procs.so
> > procs.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (FreeBSD),
> > not stripped
> >
> > Then in psql:
> >
> > => create function bool2int(bool) returns int4 as
> > '/usr/local/pgsql/procs/procs.so' language 'c';
> > CREATE
> > => select bool2int(1=1);
> > ERROR:  Can't find function bool2int in file /usr/local/pgsql/procs/procs.so
> > =>
> >
> > Any insight as to why this does not work would be greatly appreciated.
> >
> > Thank you,
> > Matthew Hagerty
> 
> I do the same thing, and  in psql:
> 
> postgres=> select bool2int(1=1);
> assertion "u.hdr.e_phentsize == sizeof(Elf_Phdr)" failed: file
> "/usr/src/libexec/rtld-elf/map_object.c", line 118
> pqReadData() -- backend closed the channel unexpectedly.
>         This probably means the backend terminated abnormally before or while
> processing the request.
> We have lost the connection to the backend, so further processing is
> impossible.  Terminating.
> 
> to create the shared lib:
> 
> gcc -I../include -I../backend   -O2 -m486 -pipe  -Wall -Wmissing-prototypes
> -I../interfaces/libpq -I../../include   -c bool2int.c -o bool2int.o
> bool2int.c:6: warning: no previous prototype for `bool2int'
> ld -x -r -o bool2int.o.obj bool2int.o
> building shared object bool2int.so
> ranlib bool2int.so.pic
> ld -x -Bshareable -o bool2int.so bool2int.so.pic
> 
> I use  FreeBSD-3.1
>             PostgreSQL-6.4.2
> 
> 

_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83



pgsql-interfaces by date:

Previous
From: Jonathan Davis
Date:
Subject: Re: [INTERFACES] Shared lib grief with 6.4.2
Next
From: Michael Meskes
Date:
Subject: Re: [INTERFACES] ECPG feature