pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
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
Date: Wed, 26 May 1999 10:46:25 +0000
Message-ID: <374BD101.3C8ACBC2@idianet.net> (raw)
References: <4.1.19990525234214.00a67910@mail.venux.net>

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




view thread (3+ messages)

Message-ID: <374BD101.3C8ACBC2@idianet.net>
Permalink:  ../374BD101.3C8ACBC2@idianet.net/
Also on:    postgresql.org/message-id/374BD101.3C8ACBC2@idianet.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: haj@idianet.net, matthew@venux.net
  Subject: Re: [INTERFACES] Shared lib grief with 6.4.2
  In-Reply-To: <374BD101.3C8ACBC2@idianet.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox