[test] Detect glibc-2.27+ and XFAIL appropriate tests

XFAIL the tests known to fail with glibc-2.27+.  This takes away
the burden of handling known failures from users, and ensures that
we will be verbosely informed when they actually start working again.

Bug report: https://bugs.llvm.org/show_bug.cgi?id=37804

Differential Revision: https://reviews.llvm.org/D56062

llvm-svn: 350717
This commit is contained in:
Michal Gorny 2019-01-09 13:27:29 +00:00
parent 5a7132ff0f
commit 2c2d65efab
3 changed files with 25 additions and 0 deletions

View File

@ -289,6 +289,21 @@ if config.android:
if android_api_level >= 28:
config.available_features.add('android-28')
if config.host_os == 'Linux':
# detect whether we are using glibc, and which version
# NB: 'ldd' is just one of the tools commonly installed as part of glibc
ldd_ver_cmd = subprocess.Popen(['ldd', '--version'],
stdout=subprocess.PIPE,
env={'LANG': 'C'})
sout, _ = ldd_ver_cmd.communicate()
ver_line = sout.splitlines()[0]
if ver_line.startswith(b"ldd "):
from distutils.version import LooseVersion
ver = LooseVersion(ver_line.split()[-1].decode())
# 2.27 introduced some incompatibilities
if ver >= LooseVersion("2.27"):
config.available_features.add("glibc-2.27")
sancovcc_path = os.path.join(config.llvm_tools_dir, "sancov")
if os.path.exists(sancovcc_path):
config.available_features.add("has_sancovcc")

View File

@ -1,4 +1,9 @@
// Test that dynamically allocated TLS space is included in the root set.
// This is known to be broken with glibc-2.27+
// https://bugs.llvm.org/show_bug.cgi?id=37804
// XFAIL: glibc-2.27
// RUN: LSAN_BASE="report_objects=1:use_stacks=0:use_registers=0:use_ld_allocations=0"
// RUN: %clangxx %s -DBUILD_DSO -fPIC -shared -o %t-so.so
// RUN: %clangxx_lsan %s -o %t

View File

@ -11,6 +11,11 @@
// Reports use-of-uninitialized-value, not analyzed
XFAIL: netbsd
// This is known to be broken with glibc-2.27+
// https://bugs.llvm.org/show_bug.cgi?id=37804
XFAIL: glibc-2.27
*/
#ifndef BUILD_SO