Re: [INTERFACES] Shared lib grief with 6.4.2

From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: Jonathan Davis <haj(at)idianet(dot)net>
Cc: Matthew Hagerty <matthew(at)venux(dot)net>, pgsql-interfaces(at)postgresql(dot)org
Subject: Re: [INTERFACES] Shared lib grief with 6.4.2
Date: 1999-05-26 09:51:58
Message-ID: Pine.GSO.3.96.SK.990526135014.7033A-100000@ra
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)idianet(dot)net>
> To: Matthew Hagerty <matthew(at)venux(dot)net>
> Cc: pgsql-interfaces(at)postgresql(dot)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(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

In response to

Browse pgsql-interfaces by date

  From Date Subject
Next Message Jonathan Davis 1999-05-26 10:46:25 Re: [INTERFACES] Shared lib grief with 6.4.2
Previous Message Michael Meskes 1999-05-26 08:42:31 Re: [INTERFACES] ECPG feature