Received: from ns.idianet.net ([195.154.201.1]) by hub.org (8.9.3/8.9.3) with ESMTP id EAA63867 for ; Wed, 26 May 1999 04:46:08 -0400 (EDT) (envelope-from haj@idianet.net) Received: from idianet.net (ppp72-paris.isdnet.net [194.149.182.72]) by ns.idianet.net (8.9.1/8.9.1) with ESMTP id KAA28386; Wed, 26 May 1999 10:44:48 +0200 (CEST) Sender: haj@ns.idianet.net Message-ID: <374BD101.3C8ACBC2@idianet.net> Date: Wed, 26 May 1999 10:46:25 +0000 From: Jonathan Davis Reply-To: haj@idianet.net X-Mailer: Mozilla 4.08 [en] (X11; I; FreeBSD 3.1-RELEASE i386) MIME-Version: 1.0 To: Matthew Hagerty CC: pgsql-interfaces@postgreSQL.org Subject: Re: [INTERFACES] Shared lib grief with 6.4.2 References: <4.1.19990525234214.00a67910@mail.venux.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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