daemon: don't re-exec if the linker supports the -z,now option

Usually PulseAudio is built with a linker that supports the -z,now
option, and that option should have the same effect (i.e. the dynamic
linker resolves all symbols when the program is started) as re-execing
with the LD_BIND_NOW environment variable set, so usually the re-execing
is redundant.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104789
This commit is contained in:
Vivek Dasmohapatra 2018-01-26 03:58:19 +02:00 committed by Tanu Kaskinen
parent f250341b80
commit 6d7e057b37
2 changed files with 4 additions and 1 deletions

View file

@ -213,6 +213,9 @@ AC_SUBST([VERSIONING_LDFLAGS])
# The -z now syntax is lifted from Sun's linker and works with GNU's too, other linkers might be added later.
AX_APPEND_LINK_FLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS])
AC_SUBST([IMMEDIATE_LDFLAGS])
AS_CASE([$IMMEDIATE_LDFLAGS],[*-z,now*],
[AC_DEFINE([HAVE_BIND_NOW],[1],
[Define to 1 if immediate binding is available])])
# On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly,
# so we request the nodelete flag to be enabled.

View file

@ -397,7 +397,7 @@ int main(int argc, char *argv[]) {
pa_log_set_level(PA_LOG_NOTICE);
pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
#if defined(__linux__) && defined(__OPTIMIZE__)
#if !defined(HAVE_BIND_NOW) && defined(__linux__) && defined(__OPTIMIZE__)
/*
Disable lazy relocations to make usage of external libraries
more deterministic for our RT threads. We abuse __OPTIMIZE__ as