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,8 @@
LEVEL = ../../make
MAKE_DSYM := NO
ENABLE_THREADS := YES
CXX_SOURCES := main.cpp
include $(LEVEL)/Makefile.rules

View File

@ -0,0 +1,44 @@
"""Test the lldb public C++ api when creating multiple targets simultaneously."""
from __future__ import print_function
import os
import re
import subprocess
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestMultipleTargets(TestBase):
mydir = TestBase.compute_mydir(__file__)
NO_DEBUG_INFO_TESTCASE = True
@skipIfNoSBHeaders
@skipIfHostIncompatibleWithRemote
@expectedFailureAll(
oslist=["windows", "freebsd"],
bugnumber="llvm.org/pr20282")
def test_multiple_targets(self):
env = {self.dylibPath: self.getLLDBLibraryEnvVal()}
self.driver_exe = os.path.join(os.getcwd(), "multi-target")
self.buildDriver('main.cpp', self.driver_exe)
self.addTearDownHook(lambda: os.remove(self.driver_exe))
self.signBinary(self.driver_exe)
# check_call will raise a CalledProcessError if multi-process-driver doesn't return
# exit code 0 to indicate success. We can let this exception go - the test harness
# will recognize it as a test failure.
if self.TraceOn():
print("Running test %s" % self.driver_exe)
check_call([self.driver_exe, self.driver_exe], env=env)
else:
with open(os.devnull, 'w') as fnull:
check_call([self.driver_exe, self.driver_exe],
env=env, stdout=fnull, stderr=fnull)

View File

@ -0,0 +1,31 @@
#include <thread>
#include "lldb/API/LLDB.h"
#include "lldb/API/SBDebugger.h"
#include "lldb/API/SBTarget.h"
using namespace lldb;
int main (int argc, char **argv)
{
// We are expecting the program path and a path to an executable to load
if (argc != 2)
return 1;
const char *program_file = argv[1];
SBDebugger::Initialize();
SBDebugger debugger = SBDebugger::Create(false);
auto lambda = [&](){
SBError error;
SBTarget target = debugger.CreateTarget(program_file, nullptr, nullptr,
false, error);
};
// Create 3 targets at the same time and make sure we don't crash.
std::thread thread1(lambda);
std::thread thread2(lambda);
std::thread thread3(lambda);
thread1.join();
thread2.join();
thread3.join();
SBDebugger::Terminate();
return 0;
}