[vlc-devel] [PATCH 2/2] configure: add a with-sanitizer switch

Thomas Guillem thomas at gllm.fr
Fri Aug 25 09:32:46 CEST 2017



On Thu, Aug 24, 2017, at 14:33, Shaleen Jain wrote:
> Add an option to compile with a set of the
> recommended flags for the various santizers.
> 
> Multiple comma separated sanitizers can be specified.
> 
> This patch also disables no-undefined-symbols(-Wl,-z,defs)
> only when this switch is used, to avoid link errors, mainly with asan.
> ---
>  configure.ac | 37 +++++++++++++++++++++++++++++++++++--
>  1 file changed, 35 insertions(+), 2 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 9214908171..3400fd4f6c 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1015,6 +1015,39 @@ AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" !=
> "os2"], [
>    AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"],
>    [VLC_RESTORE_FLAGS])
>  ])
>  
> +dnl
> +dnl  Sanitizer flags
> +dnl
> +AC_ARG_WITH([sanitizer],
> +   
> [AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)],
> +        [build with sanitizer flags (default disabled)])],
> +     [],
> +     [with_sanitizer=no])
> +
> +AS_VAR_IF(with_sanitizer, no, [], [
> +    AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [
> +        AX_APPEND_FLAG([-fsanitize=${with_sanitizer}])
> +        AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS])
> +        AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS])
> +    ], [
> +        AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"])
> +    ])
> +    AX_APPEND_FLAG([-g])
> +    AX_APPEND_FLAG([-g], [CXXFLAGS])
> +
> +    AS_IF([test -z "${with_sanitizer##*address*}" ], [
> +       AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope
> -fno-omit-frame-pointer])
> +       AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope
> -fno-omit-frame-pointer], [CXXFLAGS])
> +    ])
> +    AS_IF([test -z "${with_sanitizer##*memory*}" ], [
> +        AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
> +        AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
> +    ])
> +    AS_IF([test -z "${with_sanitizer##*thread*}" ], [
> +        AX_APPEND_COMPILE_FLAGS([-fPIE -pie])
> +        AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS])
> +    ])
> +])

Should we also force the -O1 CFLAGS ? cf.
https://clang.llvm.org/docs/AddressSanitizer.html#usage

>  
>  dnl
>  dnl  Enable/disable optimizations
> @@ -1113,7 +1146,7 @@ AC_CACHE_CHECK([if linker supports -z,defs],
> [ac_cv_ld_z_defs], [
>      ac_cv_ld_z_defs="no"
>    ])
>  ])
> -AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS])
> +AS_IF([test "${ac_cv_ld_z_defs}" = "no" -o "x$with_sanitizer" != xno],
> [VLC_RESTORE_FLAGS])
>  
>  dnl Check for __attribute__((packed))
>  AC_CACHE_CHECK([for __attribute__((packed))],
> @@ -4091,7 +4124,7 @@ AC_SUBST(soliddatadir)
>  AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
>  
>  dnl
> -dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 
> +dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
>  dnl It should only be available when building for win10, but some SDKs
>  define it unconditionnaly
>  dnl
>  if test "${SYS}" = "mingw32"; then
> -- 
> 2.14.1
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list