[compiler-rt] r368516 - Add support for FreeBSD's LD_32_LIBRARY_PATH

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 13 05:20:27 PDT 2019


Merged to release_90 in r368680.

On Sat, Aug 10, 2019 at 9:06 PM Dimitry Andric via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> Author: dim
> Date: Sat Aug 10 12:07:38 2019
> New Revision: 368516
>
> URL: http://llvm.org/viewvc/llvm-project?rev=368516&view=rev
> Log:
> Add support for FreeBSD's LD_32_LIBRARY_PATH
>
> Summary:
> Because the dynamic linker for 32-bit executables on 64-bit FreeBSD uses
> the environment variable `LD_32_LIBRARY_PATH` instead of
> `LD_LIBRARY_PATH` to find needed dynamic libraries, running the 32-bit
> parts of the dynamic ASan tests will fail with errors similar to:
>
> ```
> ld-elf32.so.1: Shared object "libclang_rt.asan-i386.so" not found, required by "Asan-i386-inline-Dynamic-Test"
> ```
>
> This adds support for setting up `LD_32_LIBRARY_PATH` for the unit and
> regression tests.  It will likely also require a minor change to the
> `TestingConfig` class in `llvm/utils/lit/lit`.
>
> Reviewers: emaste, kcc, rnk, arichardson
>
> Reviewed By: arichardson
>
> Subscribers: kubamracek, krytarowski, fedor.sergeev, delcypher, #sanitizers, llvm-commits
>
> Tags: #llvm, #sanitizers
>
> Differential Revision: https://reviews.llvm.org/D65772
>
> Modified:
>     compiler-rt/trunk/test/asan/Unit/lit.site.cfg.py.in
>     compiler-rt/trunk/test/asan/lit.cfg.py
>     compiler-rt/trunk/test/xray/Unit/lit.site.cfg.py.in
>
> Modified: compiler-rt/trunk/test/asan/Unit/lit.site.cfg.py.in
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/Unit/lit.site.cfg.py.in?rev=368516&r1=368515&r2=368516&view=diff
> ==============================================================================
> --- compiler-rt/trunk/test/asan/Unit/lit.site.cfg.py.in (original)
> +++ compiler-rt/trunk/test/asan/Unit/lit.site.cfg.py.in Sat Aug 10 12:07:38 2019
> @@ -1,6 +1,7 @@
>  @LIT_SITE_CFG_IN_HEADER@
>
>  import os
> +import platform
>
>  # Load common config for all compiler-rt unit tests.
>  lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/unittests/lit.common.unit.configured")
> @@ -10,6 +11,11 @@ def push_ld_library_path(config, new_pat
>      (new_path, config.environment.get('LD_LIBRARY_PATH', '')))
>    config.environment['LD_LIBRARY_PATH'] = new_ld_library_path
>
> +  if platform.system() == 'FreeBSD':
> +    new_ld_32_library_path = os.path.pathsep.join(
> +      (new_path, config.environment.get('LD_32_LIBRARY_PATH', '')))
> +    config.environment['LD_32_LIBRARY_PATH'] = new_ld_32_library_path
> +
>  # Setup config name.
>  config.name = 'AddressSanitizer-Unit'
>
>
> Modified: compiler-rt/trunk/test/asan/lit.cfg.py
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/lit.cfg.py?rev=368516&r1=368515&r2=368516&view=diff
> ==============================================================================
> --- compiler-rt/trunk/test/asan/lit.cfg.py (original)
> +++ compiler-rt/trunk/test/asan/lit.cfg.py Sat Aug 10 12:07:38 2019
> @@ -36,6 +36,12 @@ def push_dynamic_library_lookup_path(con
>      (new_path, config.environment.get(dynamic_library_lookup_var, '')))
>    config.environment[dynamic_library_lookup_var] = new_ld_library_path
>
> +  if platform.system() == 'FreeBSD':
> +    dynamic_library_lookup_var = 'LD_32_LIBRARY_PATH'
> +    new_ld_32_library_path = os.path.pathsep.join(
> +      (new_path, config.environment.get(dynamic_library_lookup_var, '')))
> +    config.environment[dynamic_library_lookup_var] = new_ld_32_library_path
> +
>  # Setup config name.
>  config.name = 'AddressSanitizer' + config.name_suffix
>
> @@ -111,7 +117,7 @@ config.substitutions.append( ("%clangxx
>  config.substitutions.append( ("%clang_asan ", build_invocation(clang_asan_cflags)) )
>  config.substitutions.append( ("%clangxx_asan ", build_invocation(clang_asan_cxxflags)) )
>  if config.asan_dynamic:
> -  if config.host_os in ['Linux', 'NetBSD', 'SunOS']:
> +  if config.host_os in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']:
>      shared_libasan_path = os.path.join(config.compiler_rt_libdir, "libclang_rt.asan{}.so".format(config.target_suffix))
>    elif config.host_os == 'Darwin':
>      shared_libasan_path = os.path.join(config.compiler_rt_libdir, 'libclang_rt.asan_{}_dynamic.dylib'.format(config.apple_platform))
>
> Modified: compiler-rt/trunk/test/xray/Unit/lit.site.cfg.py.in
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/xray/Unit/lit.site.cfg.py.in?rev=368516&r1=368515&r2=368516&view=diff
> ==============================================================================
> --- compiler-rt/trunk/test/xray/Unit/lit.site.cfg.py.in (original)
> +++ compiler-rt/trunk/test/xray/Unit/lit.site.cfg.py.in Sat Aug 10 12:07:38 2019
> @@ -1,6 +1,7 @@
>  @LIT_SITE_CFG_IN_HEADER@
>
>  import os
> +import platform
>
>  # Load common config for all compiler-rt unit tests.
>  lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/unittests/lit.common.unit.configured")
> @@ -22,3 +23,10 @@ if 'LD_LIBRARY_PATH' in os.environ:
>    config.environment['LD_LIBRARY_PATH'] = libdirs
>  else:
>    config.environment['LD_LIBRARY_PATH'] = config.llvm_lib_dir
> +
> +if platform.system() == 'FreeBSD':
> +  if 'LD_32_LIBRARY_PATH' in os.environ:
> +    libdirs = os.path.pathsep.join((config.llvm_lib_dir, os.environ['LD_32_LIBRARY_PATH']))
> +    config.environment['LD_32_LIBRARY_PATH'] = libdirs
> +  else:
> +    config.environment['LD_32_LIBRARY_PATH'] = config.llvm_lib_dir
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list