From 6d7e057b3739c365964892296a9cf4fc075bc844 Mon Sep 17 00:00:00 2001 From: Vivek Dasmohapatra Date: Fri, 26 Jan 2018 03:58:19 +0200 Subject: [PATCH] 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 --- configure.ac | 3 +++ src/daemon/main.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 2a820b91d..0084c86e4 100644 --- a/configure.ac +++ b/configure.ac @@ -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. diff --git a/src/daemon/main.c b/src/daemon/main.c index 55af4eca6..c80fa9437 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -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