Re: using libjansson in postgres extension

From: Gurjeet Singh <gurjeet(at)singh(dot)im>
To: mahendrakar s <mahendrakarforpg(at)gmail(dot)com>
Cc: pgsql-novice <pgsql-novice(at)lists(dot)postgresql(dot)org>
Subject: Re: using libjansson in postgres extension
Date: 2023-02-24 07:30:40
Message-ID: CABwTF4U7ZYdnt8SvrvCEgR+92sAsqQj+pwSNX_L3b5wUZWFvnw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

On Thu, Feb 23, 2023 at 5:39 AM mahendrakar s
<mahendrakarforpg(at)gmail(dot)com> wrote:
> I'm developing an extension where in it indirectly references (libjansson) and libjansson has a symbol json_object which conflicts with postgres symbol 'json_object'.
>
> I see below:
> PostgreSQL: Documentation: 11: 38.10. C-Language Functions
> "Symbol names defined within object files must not conflict with each other or with symbols defined in the PostgreSQL server executable. You will have to rename your functions or variables if you get error messages to this effect."
>
> But this requires to maintain libjansson with customizations(have a different symbol) to meet the needs.
>
> Do you have any suggestions to use the libjansson 'as it is' without using the different symbol.

I don't think that'll be possible. The docs are pretty clear, and I'm
afraid any proposal to change Postgres function's name will not be
welcome.

Perhaps you can perform surgery on your library _after_ linking, to
remove any exports of the symbol json_object. See [1] for some ideas.
This will allow you to keep using libjansson code without
modifications, but it will require some post-build complexity, with
platform-specific solutions.

[1]: https://stackoverflow.com/questions/9648655/how-to-hide-the-exported-symbols-name-within-a-shared-library

Best regards,
Gurjeet
http://Gurje.et

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Andrew Dunstan 2023-02-25 15:54:52 Re: using libjansson in postgres extension
Previous Message mahendrakar s 2023-02-24 01:59:23 Re: using libjansson in postgres extension