Imported Upstream version 6.10.0.49

Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-01-16 16:38:04 +00:00
parent d94e79959b
commit 468663ddbb
48518 changed files with 2789335 additions and 61176 deletions

View File

@@ -0,0 +1,72 @@
set(LLVM_SOURCE_DIR "${LLVM_MAIN_SRC_DIR}")
set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}")
set(LLVM_BUILD_MODE "%(build_mode)s")
set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}/%(build_config)s")
set(LLVM_LIBS_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/%(build_config)s")
set(CLANG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
set(CLANG_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
if(BUILD_SHARED_LIBS)
set(ENABLE_SHARED 1)
else()
set(ENABLE_SHARED 0)
endif(BUILD_SHARED_LIBS)
# the value is not canonicalized within LLVM
llvm_canonicalize_cmake_booleans(
LLVM_ENABLE_ZLIB)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
)
set(LLDB_TEST_DEPS
LLDBUnitTests
lldb
lldb-test
)
if(NOT LLDB_BUILT_STANDALONE)
list(APPEND LLDB_TEST_DEPS FileCheck not yaml2obj)
endif()
# lldb-server is not built on every platform.
if (TARGET lldb-server)
list(APPEND LLDB_TEST_DEPS lldb-server)
endif()
if(APPLE)
list(APPEND LLDB_TEST_DEPS debugserver)
endif()
if(TARGET clang)
list(APPEND LLDB_TEST_DEPS clang)
endif()
set(LLDB_TEST_PARAMS
lldb_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
)
add_lit_testsuite(check-lldb-lit "Running lldb lit test suite"
${CMAKE_CURRENT_BINARY_DIR}
PARAMS lldb_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
lldb_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
DEPENDS ${LLDB_TEST_DEPS}
)
set_target_properties(check-lldb-lit PROPERTIES FOLDER "LLDB tests")
# If we're building with an in-tree clang, then list clang as a dependency
# to run tests.
if (TARGET clang)
add_dependencies(check-lldb-lit clang)
endif()
add_lit_testsuites(LLDB ${CMAKE_CURRENT_SOURCE_DIR}
PARAMS lldb_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
lldb_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
DEPENDS ${LLDB_TEST_DEPS}
)

View File

@@ -0,0 +1,26 @@
#include <tgmath.h>
typedef struct {
float f;
int i;
} my_untagged_struct;
double multiply(my_untagged_struct *s)
{
return s->f * s->i;
}
double multiply(my_untagged_struct *s, int x)
{
return multiply(s) * x;
}
int main(int argc, char **argv)
{
my_untagged_struct s = {
.f = (float)argc,
.i = argc,
};
// lldb testsuite break
return !(multiply(&s, argc) == pow(argc, 3));
}

View File

@@ -0,0 +1,53 @@
#include <iostream>
#include <string>
#include <cstring>
struct Five
{
int number;
const char *name;
};
Five
returnsFive()
{
Five my_five = {5, "five"};
return my_five;
}
unsigned int
fib(unsigned int n)
{
if (n < 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
int
add(int a, int b)
{
return a + b;
}
bool
stringCompare(const char *str)
{
if (strcmp( str, "Hello world" ) == 0)
return true;
else
return false;
}
int main (int argc, char const *argv[])
{
std::string str = "Hello world";
std::cout << str << std::endl;
std::cout << str.c_str() << std::endl;
Five main_five = returnsFive();
#if 0
print str
print str.c_str()
#endif
return 0; // Please test these expressions while stopped at this line:
}

View File

@@ -0,0 +1,14 @@
# XFAIL: windows
# -> llvm.org/pr21765
# XFAIL: freebsd
# -> llvm.org/pr17807
# RUN: %cxx %p/Inputs/call-function.cpp -g -o %t && %lldb -b -s %s -- %t | FileCheck %s
breakpoint set --file call-function.cpp --line 52
run
print str
# CHECK: Hello world
print str.c_str()
# CHECK: Hello world

View File

@@ -0,0 +1,12 @@
# XFAIL: windows
# -> llvm.org/pr24489
# RUN: %cxx %p/Inputs/call-function.cpp -g -o %t && %lldb -b -s %s -o continue -o "thread list" -- %t 2>&1 | FileCheck %s
breakpoint set --file call-function.cpp --line 52
run
breakpoint set --file call-function.cpp --line 14
expression -i false -- returnsFive()
# CHECK: Execution was interrupted, reason: breakpoint
# CHECK: stop reason = User Expression thread plan
# CHECK: Completed expression: (Five) $0 = (number = 5{{.*}}, name = "five")

View File

@@ -0,0 +1,11 @@
# XFAIL: windows
# XFAIL: armhf-linux
# -> llvm.org/pr27868
# RUN: %cxx %p/Inputs/anonymous-struct.cpp -g -o %t && %lldb -b -s %s -- %t | FileCheck %s
breakpoint set --file anonymous-struct.cpp --line 24
run
expression multiply(&s)
# CHECK: $0 = 1

View File

@@ -0,0 +1,20 @@
# XFAIL: windows
# -> llvm.org/pr24489
# RUN: %cxx %p/Inputs/call-function.cpp -g -o %t && %lldb -b -s %s -- %t | FileCheck %s
breakpoint set --file call-function.cpp --line 52
run
expression fib(5)
# CHECK: $0 = 5
expression add(4,8)
# CHECK: $1 = 12
expression add(add(5,2),add(3,4))
# CHECK: $2 = 14
expression add(add(5,2),fib(5))
# CHECK: $3 = 12
expression stringCompare((const char*) "Hello world")
# CHECK: $4 = true
expression stringCompare((const char*) "Hellworld")
# CHECK: $5 = false

View File

@@ -0,0 +1 @@
config.suffixes = ['.test']

View File

@@ -0,0 +1,30 @@
# REQUIRES: zlib
# RUN: yaml2obj %s > %t
# RUN: lldb-test module-sections --contents %t | FileCheck %s
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_386
Sections:
- Name: .hello_elf
Type: SHT_PROGBITS
Flags: [ SHF_COMPRESSED ]
Content: 010000000800000001000000789c5330700848286898000009c802c1
- Name: .bogus
Type: SHT_PROGBITS
Flags: [ SHF_COMPRESSED ]
Content: deadbeefbaadf00d
# CHECK: Name: .hello_elf
# CHECK-NEXT: VM size: 0
# CHECK-NEXT: File size: 28
# CHECK-NEXT: Data:
# CHECK-NEXT: 20304050 60708090
# CHECK: Name: .bogus
# CHECK-NEXT: VM size: 0
# CHECK-NEXT: File size: 8
# CHECK-NEXT: Data:
# CHECK-NEXT: DEADBEEF BAADF00D

View File

@@ -0,0 +1 @@
config.suffixes = ['.yaml']

View File

@@ -0,0 +1,21 @@
# -*- Python -*-
# Configuration file for the 'lit' test runner.
import os
import lit.formats
# name: The name of this test suite.
config.name = 'lldb-Unit'
# suffixes: A list of file extensions to treat as test files.
config.suffixes = []
# test_source_root: The root path where unit test binaries are located.
# test_exec_root: The root path where tests should be run.
config.test_source_root = os.path.join(config.lldb_obj_root, 'unittests')
config.test_exec_root = config.test_source_root
# testFormat: The test format to use to interpret tests.
config.test_format = lit.formats.GoogleTest(config.llvm_build_mode, 'Tests')

View File

@@ -0,0 +1,26 @@
@LIT_SITE_CFG_IN_HEADER@
config.test_exec_root = "@LLVM_BINARY_DIR@"
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
config.llvm_build_mode = "@LLVM_BUILD_MODE@"
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
config.lldb_obj_root = "@LLDB_BINARY_DIR@"
config.lldb_src_root = "@LLDB_SOURCE_DIR@"
config.target_triple = "@TARGET_TRIPLE@"
config.python_executable = "@PYTHON_EXECUTABLE@"
# Support substitution of the tools and libs dirs with user parameters. This is
# used when we can't determine the tool dir at configuration time.
try:
config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
config.llvm_build_mode = config.llvm_build_mode % lit_config.params
except KeyError as e:
key, = e.args
lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
# Let the main config do the real work.
lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/Unit/lit.cfg")

160
external/llvm-project/lldb/lit/lit.cfg vendored Normal file
View File

@@ -0,0 +1,160 @@
# -*- Python -*-
import os
import platform
import re
import subprocess
import locale
import lit.formats
import lit.util
def binary_feature(on, feature, off_prefix):
return feature if on else off_prefix + feature
# Configuration file for the 'lit' test runner.
# name: The name of this test suite.
config.name = 'lldb'
# testFormat: The test format to use to interpret tests.
#
# For now we require '&&' between commands, until they get globally killed and
# the test runner updated.
execute_external = (platform.system() != 'Windows'
or lit_config.getBashPath() not in [None, ""])
config.test_format = lit.formats.ShTest(execute_external)
# suffixes: We only support unit tests
config.suffixes = []
# test_source_root: The root path where tests are located.
config.test_source_root = os.path.dirname(__file__)
# test_exec_root: The root path where tests should be run.
config.test_exec_root = os.path.join(config.lldb_obj_root, 'lit')
# Tweak the PATH to include the tools dir and the scripts dir.
lldb_tools_dir = config.lldb_tools_dir
llvm_tools_dir = config.llvm_tools_dir
path = os.path.pathsep.join((config.lldb_tools_dir, config.llvm_tools_dir, config.environment['PATH']))
config.environment['PATH'] = path
path = os.path.pathsep.join((config.lldb_libs_dir, config.llvm_libs_dir,
config.environment.get('LD_LIBRARY_PATH','')))
config.environment['LD_LIBRARY_PATH'] = path
# Propagate LLVM_SRC_ROOT into the environment.
config.environment['LLVM_SRC_ROOT'] = getattr(config, 'llvm_src_root', '')
# Propagate PYTHON_EXECUTABLE into the environment
config.environment['PYTHON_EXECUTABLE'] = getattr(config, 'python_executable', '')
# Register substitutions
config.substitutions.append(('%python', config.python_executable))
debugserver = lit.util.which('debugserver', lldb_tools_dir)
lldb = lit.util.which('lldb', lldb_tools_dir)
if not os.path.exists(config.cc):
config.cc = lit.util.which(config.cc, config.environment['PATH'])
if not os.path.exists(config.cxx):
config.cxx = lit.util.which(config.cxx, config.environment['PATH'])
if platform.system() in ['Darwin']:
try:
out = subprocess.check_output(['xcrun', '--show-sdk-path']).strip()
res = 0
except OSError:
res = -1
if res == 0 and out:
sdk_path = out
lit_config.note('using SDKROOT: %r' % sdk_path)
config.cc += " -isysroot %s" % sdk_path
config.cxx += " -isysroot %s" % sdk_path
config.substitutions.append(('%cc', config.cc))
config.substitutions.append(('%cxx', config.cxx))
config.substitutions.append(('%lldb', lldb))
if debugserver is not None:
config.substitutions.append(('%debugserver', debugserver))
for pattern in [r"\bFileCheck\b",
r"\blldb-test\b",
r"\byaml2obj\b",
r"\| \bnot\b"]:
tool_match = re.match(r"^(\\)?((\| )?)\W+b([0-9A-Za-z-_]+)\\b\W*$",
pattern)
tool_pipe = tool_match.group(2)
tool_name = tool_match.group(4)
tool_path = lit.util.which(tool_name, config.environment['PATH'])
if not tool_path:
# Warn, but still provide a substitution.
lit_config.note(
'Did not find ' + tool_name + ' in ' + config.environment['PATH'])
config.substitutions.append((pattern, tool_pipe + tool_path))
# Shell execution
if platform.system() not in ['Windows'] or lit_config.getBashPath() != '':
config.available_features.add('shell')
# Running on Darwin OS
if platform.system() in ['Darwin']:
config.available_features.add('darwin')
config.available_features.add('system-linker-mach-o')
# Running on ELF based *nix
if platform.system() in ['FreeBSD', 'Linux']:
config.available_features.add('system-linker-elf')
if platform.system() in ['FreeBSD']:
config.available_features.add('freebsd')
else:
config.available_features.add('linux')
if platform.system() in ['Windows']:
config.available_features.add('windows')
if re.match(r'^arm(hf.*-linux)|(.*-linux-gnuabihf)', config.target_triple):
config.available_features.add("armhf-linux")
if re.match(r'icc', config.cc):
config.available_features.add("compiler-icc")
elif re.match(r'clang', config.cc):
config.available_features.add("compiler-clang")
elif re.match(r'gcc', config.cc):
config.available_features.add("compiler-gcc")
elif re.match(r'cl', config.cc):
config.available_features.add("compiler-msvc")
config.available_features.add(binary_feature(config.have_zlib, "zlib", "no"))
# llvm-config knows whether it is compiled with asserts (and)
# whether we are operating in release/debug mode.
import subprocess
try:
llvm_config_cmd = \
subprocess.Popen([os.path.join(llvm_tools_dir, 'llvm-config'),
'--build-mode', '--assertion-mode', '--targets-built'],
stdout = subprocess.PIPE)
except OSError as why:
print("Could not find llvm-config in " + llvm_tools_dir)
exit(42)
llvm_config_output = llvm_config_cmd.stdout.read().decode('utf_8')
llvm_config_output_list = llvm_config_output.split("\n")
if re.search(r'DEBUG', llvm_config_output_list[0]):
config.available_features.add('debug')
if re.search(r'ON', llvm_config_output_list[1]):
config.available_features.add('asserts')
if re.search(r'ARM', llvm_config_output_list[2]):
config.available_features.add('arm')
if re.search(r'Mips', llvm_config_output_list[2]):
config.available_features.add('mips')
if re.search(r'X86', llvm_config_output_list[2]):
config.available_features.add('x86')
llvm_config_cmd.wait()

View File

@@ -0,0 +1,27 @@
@LIT_SITE_CFG_IN_HEADER@
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
config.lldb_obj_root = "@LLDB_BINARY_DIR@"
config.lldb_libs_dir = "@LLVM_LIBRARY_OUTPUT_INTDIR@"
config.lldb_tools_dir = "@LLVM_RUNTIME_OUTPUT_INTDIR@"
config.target_triple = "@TARGET_TRIPLE@"
config.python_executable = "@PYTHON_EXECUTABLE@"
config.cc = "@LLDB_TEST_C_COMPILER@"
config.cxx = "@LLDB_TEST_CXX_COMPILER@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
# Support substitution of the tools and libs dirs with user parameters. This is
# used when we can't determine the tool dir at configuration time.
try:
config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
except KeyError as e:
key, = e.args
lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
# Let the main config do the real work.
lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/lit.cfg")