From: | Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "Adam Mackler *EXTERN*" <pgsql-general(at)mackler(dot)org>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Conflicting function name in dynamically-loaded shared library |
Date: | 2015-01-28 11:23:15 |
Message-ID: | A737B7A37273E048B164557ADEF4A58B3659395F@ntex2010i.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Adam Mackler wrote:
> I am wanting to define some functions as described in section 35.9 of
> the manual, "C-Language Functions." I am compiling pre-existing files
> of c-code from another project into object files, and then linking
> those object files into a shared library along with my own functions
> that follow the posgresql calling convention, invoking other functions
> as desired.
>
> This pre-existing c-code I'm compiling happens to contain a function
> named "point_add()". I see the postgresql source file fmgrtab.c also
> has a function with the same name. When my code tries to invoke its
> version of point_add() I get a bus error, and when I changed the name
> of that function to something else the bus error went away.
>
> Of course, since I'm working with source code I can just keep the
> modified function name, but I would like to be able to keep my version
> of this c code updated with that project and so to use it unmodified.
>
> So my questions are: first, might I be wrong about the cause of this
> bus error? I cannot think of another reason why changing the name of
> a function would have this effect, but maybe there's some other reason
> besides the "point_add()" function in fmgrtab.c conflicting. If so,
> I'm interested to know.
>
> If, however, it is probable that this bus error is a result of this
> naming conflict, then do I have any options for working around it that
> would enable me to use the code from this other library without
> changing the name of its "point_add()" function? I know I could ask
> that project's developers to change the function's name, but that
> could break other code that currently uses it, and even if it didn't,
> I would prefer something less intrusive on that project.
If you are on Linux, you could try the following patch:
Maybe that will make it work, then you know that your suspicion was correct.
But what you describe should definitely cause a problem, though
"bus error" sounds surprising to me.
Renaming one of the functions seems like the best thing to do.
It would need a convincing case (like, many people have that problem)
to get the name changed in PostgreSQL.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Kretschmer | 2015-01-28 11:36:58 | Re: Request for review of new redis-fdw module |
Previous Message | basti | 2015-01-28 11:11:20 | Re: Request for review of new redis-fdw module |