Re: Reduce function call costs on ELF platforms

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: Reduce function call costs on ELF platforms
Дата
Msg-id 20211125035746.kfpoi2j6uo6xbzms@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: Reduce function call costs on ELF platforms  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: Reduce function call costs on ELF platforms  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers
Hi,

On 2021-11-24 17:55:03 -0500, Andrew Dunstan wrote:
> On 11/24/21 13:55, Andres Freund wrote:
> > On 2021-11-23 17:28:08 +0100, Peter Eisentraut wrote:
> >> On 22.11.21 23:32, Tom Lane wrote:
> >>>> The easier approach for this class of issues is to use the linker option
> >>>> -Bsymbolic.
> >>> I don't recall details, but we've previously rejected the idea of
> >>> trying to use -Bsymbolic widely; apparently it has undesirable
> >>> side-effects on some platforms.  See commit message for e3d77ea6b
> >>> (hopefully there's some detail in the email thread [1]).  It sounds
> >>> like you're not actually proposing that, but I thought it would be
> >>> a good idea to note the hazard here.
> >> Also, IIRC, -Bsymbolic was once frowned upon by packaging policies, since it
> >> prevents use of LD_PRELOAD.  I'm not sure what the current thinking there
> >> is, however.
> > It doesn't break some (most?) of the uses of LD_PRELOAD. In particular, it
> > doesn't break things like replacing the malloc implementation. When do you
> > have a symbol that you want to override *inside* your library (executables
> > already bind to their own symbols at compile time)? I've seen that for
> > replacing buggy functions in closed source things, but that's about it?
> >
> 
> Which things does it break exactly?

-Bsymbolic causes symbols that are defined and referenced within one shared
library to use that definition. E.g. if a shared lib has a function
"do_something()" and some of its code calls do_something(), you cannot use
LD_PRELOAD (or a definition in the main binary) to redirect the call to
do_something() inside the shared library to something else.

I.e. if a shared library calls a function that's *not* defined within that
shared library, -Bsymbolic doesn't have an effect for that symbol.


> I have a case where a library that
> is LD_PRELOADed calls PQsetSSLKeyPassHook_OpenSSL() in its constructor
> function. I'd be very unhappy if that stopped working (and so would our
> client).

Bsymbolic shouldn't affect that at all.

Greetings,

Andres Freund



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Smith
Дата:
Сообщение: Re: row filtering for logical replication
Следующее
От: Amit Kapila
Дата:
Сообщение: Re: Non-superuser subscription owners