[PATCH weston 2/4] configure.ac: fix linking when using compiler sanitizers
Quentin Glidic
sardemff7+wayland at sardemff7.net
Sat Aug 5 14:24:47 UTC 2017
On 8/5/17 1:58 PM, Arnaud Vrac wrote:
> The GCC address sanitizer overrides dlopen and dlclose, so the configure
> test does not detect libdl as a needed dependency for linking. It is
> still needed though, as dlsym is not exported by the sanitizer. The
> result is that linking fails in the end.
>
> Fix this by checking for dlsym instead of dlopen.
>
> This can be reproduced by configuring the build with:
> CFLAGS="-fsanitize=address -fsanitize=undefined"
> LDFLAGS="-fsanitize=address -fsanitize=undefined"
>
> Signed-off-by: Arnaud Vrac <rawoul at gmail.com>
Well explained:
Reviewed-by: Quentin Glidic <sardemff7+git at sardemff7.net>
Thanks,
> ---
> Makefile.am | 4 ++--
> configure.ac | 3 ++-
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index e9679e68..58a5c596 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -74,7 +74,7 @@ libweston_ at LIBWESTON_MAJOR@_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
> libweston_ at LIBWESTON_MAJOR@_la_CFLAGS = $(AM_CFLAGS) \
> $(COMPOSITOR_CFLAGS) $(EGL_CFLAGS) $(LIBUNWIND_CFLAGS) $(LIBDRM_CFLAGS)
> libweston_ at LIBWESTON_MAJOR@_la_LIBADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
> - $(DLOPEN_LIBS) -lm $(CLOCK_GETTIME_LIBS) \
> + $(DL_LIBS) -lm $(CLOCK_GETTIME_LIBS) \
> $(LIBINPUT_BACKEND_LIBS) libshared.la
> libweston_ at LIBWESTON_MAJOR@_la_LDFLAGS = -version-info $(LT_VERSION_INFO)
>
> @@ -194,7 +194,7 @@ weston_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON \
> weston_CFLAGS = $(AM_CFLAGS) $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
> weston_LDADD = libshared.la libweston- at LIBWESTON_MAJOR@.la \
> $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
> - $(DLOPEN_LIBS) $(LIBINPUT_BACKEND_LIBS) \
> + $(DL_LIBS) $(LIBINPUT_BACKEND_LIBS) \
> $(CLOCK_GETRES_LIBS) \
> -lm
>
> diff --git a/configure.ac b/configure.ac
> index 61d7f37b..5179dfed 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -86,7 +86,8 @@ AC_ARG_VAR([WESTON_SHELL_CLIENT],
>
> PKG_PROG_PKG_CONFIG()
>
> -WESTON_SEARCH_LIBS([DLOPEN], [dl], [dlopen])
> +# Check for dlsym instead of dlopen because ASAN hijacks the latter
> +WESTON_SEARCH_LIBS([DL], [dl], [dlsym])
>
> # In old glibc versions (< 2.17) clock_gettime() and clock_getres() are in librt
> WESTON_SEARCH_LIBS([CLOCK_GETTIME], [rt], [clock_gettime])
>
--
Quentin “Sardem FF7” Glidic
More information about the wayland-devel
mailing list