diff options
author | Hans Wennborg <hans@hanshq.net> | 2019-08-13 12:21:30 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2019-08-13 12:21:30 +0000 |
commit | fd73846d80d28c21df3f62b08076fba40a041055 (patch) | |
tree | cffc3450b1e39a29a00215d86c5877b86d9a5908 | |
parent | 10f4dfa49218360ca0f2a02e612c3c3741a48002 (diff) | |
download | compiler-rt-fd73846d80d28c21df3f62b08076fba40a041055.tar.gz |
Merging r368516:
------------------------------------------------------------------------
r368516 | dim | 2019-08-10 21:07:38 +0200 (Sat, 10 Aug 2019) | 25 lines
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
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/branches/release_90@368680 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/asan/Unit/lit.site.cfg.py.in | 6 | ||||
-rw-r--r-- | test/asan/lit.cfg.py | 8 | ||||
-rw-r--r-- | test/xray/Unit/lit.site.cfg.py.in | 8 |
3 files changed, 21 insertions, 1 deletions
diff --git a/test/asan/Unit/lit.site.cfg.py.in b/test/asan/Unit/lit.site.cfg.py.in index 1c59a6bad..d1fd640e7 100644 --- a/test/asan/Unit/lit.site.cfg.py.in +++ b/test/asan/Unit/lit.site.cfg.py.in @@ -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_path): (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' diff --git a/test/asan/lit.cfg.py b/test/asan/lit.cfg.py index e94a65304..0e2101134 100644 --- a/test/asan/lit.cfg.py +++ b/test/asan/lit.cfg.py @@ -36,6 +36,12 @@ def push_dynamic_library_lookup_path(config, new_path): (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 ", build_invocation(target_cxxflags)) ) 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)) diff --git a/test/xray/Unit/lit.site.cfg.py.in b/test/xray/Unit/lit.site.cfg.py.in index 54fcc1cbd..54709ac70 100644 --- a/test/xray/Unit/lit.site.cfg.py.in +++ b/test/xray/Unit/lit.site.cfg.py.in @@ -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 |