[PATCH mesa/mesa] Check for dladdr(), rather than assuming we have it if we have RTLD_DEFAULT

Jonathan Gray jsg at jsg.id.au
Wed Apr 9 06:53:20 PDT 2014


On Sun, Apr 06, 2014 at 03:30:43PM +0100, Jon TURNEY wrote:
> Unfortunately, Cygwin defines RTLD_DEFAULT (for glibc compatibility), but can't
> provide dladdr(), so add a check for dladdr()
> 
> Cc: Jonathan Gray <jsg at jsg.id.au>
> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
> ---
>  configure.ac                                  | 6 ++++++
>  src/mesa/drivers/dri/common/megadriver_stub.c | 7 +++----
>  2 files changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 878b24a..bbbed79 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -480,6 +480,12 @@ AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
>         [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
>  AC_SUBST([DLOPEN_LIBS])
>  
> +dnl Check if that library also has dladdr
> +SAVE_LDFLAGS="$LDFLAGS"

The case here is wrong and won't work as intended unless changed to save_LDFLAGS.

Otherwise the patch seems fine, though it will break the scons build till
those files are updated?

> +LDFLAGS="$LDFLAGS $DLOPEN_LIBS"
> +AC_CHECK_FUNCS([dladdr])
> +LDFLAGS=$save_LDFLAGS
> +
>  case "$host_os" in
>  darwin*|mingw*)
>      ;;
> diff --git a/src/mesa/drivers/dri/common/megadriver_stub.c b/src/mesa/drivers/dri/common/megadriver_stub.c
> index 7b6d134..d085080 100644
> --- a/src/mesa/drivers/dri/common/megadriver_stub.c
> +++ b/src/mesa/drivers/dri/common/megadriver_stub.c
> @@ -28,10 +28,9 @@
>  
>  /* We need GNU extensions to dlfcn.h in order to provide backward
>   * compatibility for the older DRI driver loader mechanism. (dladdr,
> - * Dl_info, and RTLD_DEFAULT are only defined when _GNU_SOURCE is
> - * defined.)
> + * Dl_info, and RTLD_DEFAULT)
>   */
> -#ifdef RTLD_DEFAULT
> +#if defined(RTLD_DEFAULT) && defined(HAVE_DLADDR)
>  
>  #define MEGADRIVER_STUB_MAX_EXTENSIONS 10
>  #define LIB_PATH_SUFFIX "_dri.so"
> @@ -148,7 +147,7 @@ megadriver_stub_init(void)
>     }
>  }
>  
> -#endif /* RTLD_DEFAULT */
> +#endif /* RTLD_DEFAULT && HAVE_DLADDR */
>  
>  static const
>  __DRIconfig **stub_error_init_screen(__DRIscreen *psp)
> -- 
> 1.8.3.4


More information about the xorg-devel mailing list