diff options
Diffstat (limited to 'lldb')
78 files changed, 374 insertions, 146 deletions
| diff --git a/lldb/bindings/lua/lua-typemaps.swig b/lldb/bindings/lua/lua-typemaps.swig index 5675693..f2a74014 100644 --- a/lldb/bindings/lua/lua-typemaps.swig +++ b/lldb/bindings/lua/lua-typemaps.swig @@ -121,9 +121,27 @@ LLDB_NUMBER_TYPEMAP(enum SWIGTYPE);    $1 = (char *)malloc($2);  } +// Disable default type checking for this method to avoid SWIG dispatch issues. +//  +// Problem: SBThread::GetStopDescription has two overloads: +//   1. GetStopDescription(char* dst_or_null, size_t dst_len)  +//   2. GetStopDescription(lldb::SBStream& stream) +// +// SWIG generates a dispatch function to select the correct overload based on argument types. +// see https://www.swig.org/Doc4.0/SWIGDocumentation.html#Typemaps_overloading. +// However, this dispatcher doesn't consider typemaps that transform function signatures. +// +// In lua, our typemap converts GetStopDescription(char*, size_t) to GetStopDescription(int). +// The dispatcher still checks against the original (char*, size_t) signature instead of  +// the transformed (int) signature, causing type matching to fail. +// This only affects SBThread::GetStopDescription since the type check also matches  +// the argument name, which is unique to this function. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) (char *dst_or_null, size_t dst_len) "" +  %typemap(argout) (char *dst_or_null, size_t dst_len) {    lua_pop(L, 1); // Blow away the previous result -  lua_pushlstring(L, (const char *)$1, $result); +  llvm::StringRef ref($1); +  lua_pushlstring(L, (const char *)$1, ref.size());    free($1);    // SWIG_arg was already incremented  } diff --git a/lldb/bindings/python/python-typemaps.swig b/lldb/bindings/python/python-typemaps.swig index 715914f..4d3a957 100644 --- a/lldb/bindings/python/python-typemaps.swig +++ b/lldb/bindings/python/python-typemaps.swig @@ -224,6 +224,24 @@ AND call SWIG_fail at the same time, because it will result in a double free.    }    $1 = (char *)malloc($2);  } + +// Disable default type checking for this method to avoid SWIG dispatch issues. +//  +// Problem: SBThread::GetStopDescription has two overloads: +//   1. GetStopDescription(char* dst_or_null, size_t dst_len)  +//   2. GetStopDescription(lldb::SBStream& stream) +// +// SWIG generates a dispatch function to select the correct overload based on argument types. +// see https://www.swig.org/Doc4.0/SWIGDocumentation.html#Typemaps_overloading. +// However, this dispatcher doesn't consider typemaps that transform function signatures. +// +// In Python, our typemap converts GetStopDescription(char*, size_t) to GetStopDescription(int). +// The dispatcher still checks against the original (char*, size_t) signature instead of  +// the transformed (int) signature, causing type matching to fail. +// This only affects SBThread::GetStopDescription since the type check also matches  +// the argument name, which is unique to this function. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) (char *dst_or_null, size_t dst_len) "" +  %typemap(argout) (char *dst_or_null, size_t dst_len) {    Py_XDECREF($result); /* Blow away any previous result */    llvm::StringRef ref($1); diff --git a/lldb/include/lldb/API/SBThread.h b/lldb/include/lldb/API/SBThread.h index e9fe585..2411dfd 100644 --- a/lldb/include/lldb/API/SBThread.h +++ b/lldb/include/lldb/API/SBThread.h @@ -81,6 +81,14 @@ public:    SBThreadCollection    GetStopReasonExtendedBacktraces(InstrumentationRuntimeType type); +  /// Gets a human-readable description of why the thread stopped. +  /// +  /// \param stream Output stream to receive the stop description text +  /// \return +  ///   true if obtained and written to the stream, +  //    false if there was an error retrieving the description. +  bool GetStopDescription(lldb::SBStream &stream) const; +    size_t GetStopDescription(char *dst_or_null, size_t dst_len);    SBValue GetStopReturnValue(); diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h index 8f5892e..c1f9785 100644 --- a/lldb/include/lldb/Target/Process.h +++ b/lldb/include/lldb/Target/Process.h @@ -127,10 +127,7 @@ class ProcessAttachInfo : public ProcessInstanceInfo {  public:    ProcessAttachInfo() = default; -  ProcessAttachInfo(const ProcessLaunchInfo &launch_info) -      : m_resume_count(0), m_wait_for_launch(false), m_ignore_existing(true), -        m_continue_once_attached(false), m_detach_on_error(true), -        m_async(false) { +  ProcessAttachInfo(const ProcessLaunchInfo &launch_info) {      ProcessInfo::operator=(launch_info);      SetProcessPluginName(launch_info.GetProcessPluginName());      SetResumeCount(launch_info.GetResumeCount()); diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py index fd07324..405e91f 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py @@ -15,6 +15,8 @@ import base64  # DAP tests as a whole have been flakey on the Windows on Arm bot. See:  # https://github.com/llvm/llvm-project/issues/137660  @skipIf(oslist=["windows"], archs=["aarch64"]) +# The Arm Linux bot needs stable resources before it can run these tests reliably. +@skipIf(oslist=["linux"], archs=["arm$"])  class DAPTestCaseBase(TestBase):      # set timeout based on whether ASAN was enabled or not. Increase      # timeout by a factor of 10 if ASAN is enabled. diff --git a/lldb/source/API/SBThread.cpp b/lldb/source/API/SBThread.cpp index 4e4aa48..f58a1b5 100644 --- a/lldb/source/API/SBThread.cpp +++ b/lldb/source/API/SBThread.cpp @@ -239,11 +239,34 @@ SBThread::GetStopReasonExtendedBacktraces(InstrumentationRuntimeType type) {    return threads;  } -size_t SBThread::GetStopDescription(char *dst, size_t dst_len) { -  LLDB_INSTRUMENT_VA(this, dst, dst_len); +bool SBThread::GetStopDescription(lldb::SBStream &stream) const { +  LLDB_INSTRUMENT_VA(this, stream); + +  if (!m_opaque_sp) +    return false; + +  llvm::Expected<StoppedExecutionContext> exe_ctx = +      GetStoppedExecutionContext(m_opaque_sp); +  if (!exe_ctx) { +    LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); +    return false; +  } + +  if (!exe_ctx->HasThreadScope()) +    return false; + +  Stream &strm = stream.ref(); +  const std::string stop_desc = exe_ctx->GetThreadPtr()->GetStopDescription(); +  strm.PutCString(stop_desc); + +  return true; +} + +size_t SBThread::GetStopDescription(char *dst_or_null, size_t dst_len) { +  LLDB_INSTRUMENT_VA(this, dst_or_null, dst_len); -  if (dst) -    *dst = 0; +  if (dst_or_null) +    *dst_or_null = 0;    llvm::Expected<StoppedExecutionContext> exe_ctx =        GetStoppedExecutionContext(m_opaque_sp); @@ -259,8 +282,8 @@ size_t SBThread::GetStopDescription(char *dst, size_t dst_len) {    if (thread_stop_desc.empty())      return 0; -  if (dst) -    return ::snprintf(dst, dst_len, "%s", thread_stop_desc.c_str()) + 1; +  if (dst_or_null) +    return ::snprintf(dst_or_null, dst_len, "%s", thread_stop_desc.c_str()) + 1;    // NULL dst passed in, return the length needed to contain the    // description. diff --git a/lldb/source/Host/windows/ProcessLauncherWindows.cpp b/lldb/source/Host/windows/ProcessLauncherWindows.cpp index e1b4b7e..f5adada 100644 --- a/lldb/source/Host/windows/ProcessLauncherWindows.cpp +++ b/lldb/source/Host/windows/ProcessLauncherWindows.cpp @@ -16,7 +16,6 @@  #include "llvm/Support/Program.h"  #include <string> -#include <unordered_set>  #include <vector>  using namespace lldb; @@ -92,13 +91,13 @@ ProcessLauncherWindows::LaunchProcess(const ProcessLaunchInfo &launch_info,    startupinfo.hStdOutput =        stdout_handle ? stdout_handle : ::GetStdHandle(STD_OUTPUT_HANDLE); -  std::unordered_set<HANDLE> inherited_handles; +  std::vector<HANDLE> inherited_handles;    if (startupinfo.hStdError) -    inherited_handles.insert(startupinfo.hStdError); +    inherited_handles.push_back(startupinfo.hStdError);    if (startupinfo.hStdInput) -    inherited_handles.insert(startupinfo.hStdInput); +    inherited_handles.push_back(startupinfo.hStdInput);    if (startupinfo.hStdOutput) -    inherited_handles.insert(startupinfo.hStdOutput); +    inherited_handles.push_back(startupinfo.hStdOutput);    SIZE_T attributelist_size = 0;    InitializeProcThreadAttributeList(/*lpAttributeList=*/nullptr, @@ -121,15 +120,13 @@ ProcessLauncherWindows::LaunchProcess(const ProcessLaunchInfo &launch_info,      const FileAction *act = launch_info.GetFileActionAtIndex(i);      if (act->GetAction() == FileAction::eFileActionDuplicate &&          act->GetFD() == act->GetActionArgument()) -      inherited_handles.insert(reinterpret_cast<HANDLE>(act->GetFD())); +      inherited_handles.push_back(reinterpret_cast<HANDLE>(act->GetFD()));    }    if (!inherited_handles.empty()) { -    std::vector<HANDLE> handles(inherited_handles.begin(), -                                inherited_handles.end());      if (!UpdateProcThreadAttribute(              startupinfoex.lpAttributeList, /*dwFlags=*/0, -            PROC_THREAD_ATTRIBUTE_HANDLE_LIST, handles.data(), -            handles.size() * sizeof(HANDLE), +            PROC_THREAD_ATTRIBUTE_HANDLE_LIST, inherited_handles.data(), +            inherited_handles.size() * sizeof(HANDLE),              /*lpPreviousValue=*/nullptr, /*lpReturnSize=*/nullptr)) {        error = Status(::GetLastError(), eErrorTypeWin32);        return HostProcess(); diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp index 9cdb846..c8e520d 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1674,6 +1674,10 @@ void ObjectFileMachO::ProcessSegmentCommand(    uint32_t segment_sect_idx;    const lldb::user_id_t first_segment_sectID = context.NextSectionIdx + 1; +  // 64 bit mach-o files have sections with 32 bit file offsets. If any section +  // data end will exceed UINT32_MAX, then we need to do some bookkeeping to +  // ensure we can access this data correctly. +  uint64_t section_offset_adjust = 0;    const uint32_t num_u32s = load_cmd.cmd == LC_SEGMENT ? 7 : 8;    for (segment_sect_idx = 0; segment_sect_idx < load_cmd.nsects;         ++segment_sect_idx) { @@ -1697,6 +1701,16 @@ void ObjectFileMachO::ProcessSegmentCommand(      // isn't stored in the abstracted Sections.      m_mach_sections.push_back(sect64); +    // Make sure we can load sections in mach-o files where some sections cross +    // a 4GB boundary. llvm::MachO::section_64 have only 32 bit file offsets +    // for the file offset of the section contents, so we need to track and +    // sections that overflow and adjust the offsets accordingly. +    const uint64_t section_file_offset = +        (uint64_t)sect64.offset + section_offset_adjust; +    const uint64_t end_section_offset = (uint64_t)sect64.offset + sect64.size; +    if (end_section_offset >= UINT32_MAX) +      section_offset_adjust += end_section_offset & 0xFFFFFFFF00000000ull; +      if (add_section) {        ConstString section_name(            sect64.sectname, strnlen(sect64.sectname, sizeof(sect64.sectname))); @@ -1736,13 +1750,13 @@ void ObjectFileMachO::ProcessSegmentCommand(            }            // Grow the section size as needed. -          if (sect64.offset) { +          if (section_file_offset) {              const lldb::addr_t segment_min_file_offset =                  segment->GetFileOffset();              const lldb::addr_t segment_max_file_offset =                  segment_min_file_offset + segment->GetFileSize(); -            const lldb::addr_t section_min_file_offset = sect64.offset; +            const lldb::addr_t section_min_file_offset = section_file_offset;              const lldb::addr_t section_max_file_offset =                  section_min_file_offset + sect64.size;              const lldb::addr_t new_file_offset = @@ -1769,10 +1783,10 @@ void ObjectFileMachO::ProcessSegmentCommand(                // other sections.                sect64.addr, // File VM address == addresses as they are                // found in the object file -              sect64.size,   // VM size in bytes of this section -              sect64.offset, // Offset to the data for this section in +              sect64.size,         // VM size in bytes of this section +              section_file_offset, // Offset to the data for this section in                // the file -              sect64.offset ? sect64.size : 0, // Size in bytes of +              section_file_offset ? sect64.size : 0, // Size in bytes of                // this section as                // found in the file                sect64.align, @@ -1792,14 +1806,14 @@ void ObjectFileMachO::ProcessSegmentCommand(        SectionSP section_sp(new Section(            segment_sp, module_sp, this, ++context.NextSectionIdx, section_name,            sect_type, sect64.addr - segment_sp->GetFileAddress(), sect64.size, -          sect64.offset, sect64.offset == 0 ? 0 : sect64.size, sect64.align, -          sect64.flags)); +          section_file_offset, section_file_offset == 0 ? 0 : sect64.size, +          sect64.align, sect64.flags));        // Set the section to be encrypted to match the segment        bool section_is_encrypted = false;        if (!segment_is_encrypted && load_cmd.filesize != 0)          section_is_encrypted = context.EncryptedRanges.FindEntryThatContains( -                                   sect64.offset) != nullptr; +                                   section_file_offset) != nullptr;        section_sp->SetIsEncrypted(segment_is_encrypted || section_is_encrypted);        section_sp->SetPermissions(segment_permissions); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 36bc176..c049829 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -450,6 +450,10 @@ ParsedDWARFTypeAttributes::ParsedDWARFTypeAttributes(const DWARFDIE &die) {        byte_size = form_value.Unsigned();        break; +    case DW_AT_bit_size: +      data_bit_size = form_value.Unsigned(); +      break; +      case DW_AT_alignment:        alignment = form_value.Unsigned();        break; diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h index da58f4c..f5f7071 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h @@ -574,6 +574,7 @@ struct ParsedDWARFTypeAttributes {    lldb_private::plugin::dwarf::DWARFFormValue type;    lldb::LanguageType class_language = lldb::eLanguageTypeUnknown;    std::optional<uint64_t> byte_size; +  std::optional<uint64_t> data_bit_size;    std::optional<uint64_t> alignment;    size_t calling_convention = llvm::dwarf::DW_CC_normal;    uint32_t bit_stride = 0; diff --git a/lldb/test/API/commands/register/register/aarch64_dynamic_regset/TestArm64DynamicRegsets.py b/lldb/test/API/commands/register/register/aarch64_dynamic_regset/TestArm64DynamicRegsets.py index eb121ec..a985ebb 100644 --- a/lldb/test/API/commands/register/register/aarch64_dynamic_regset/TestArm64DynamicRegsets.py +++ b/lldb/test/API/commands/register/register/aarch64_dynamic_regset/TestArm64DynamicRegsets.py @@ -97,6 +97,9 @@ class RegisterCommandsTestCase(TestBase):      @skipIf(oslist=no_match(["linux"]))      def test_aarch64_dynamic_regset_config(self):          """Test AArch64 Dynamic Register sets configuration.""" +        if not self.isAArch64SVE(): +            self.skipTest("SVE must be present") +          register_sets = self.setup_register_config_test()          for registerSet in register_sets: @@ -259,6 +262,8 @@ class RegisterCommandsTestCase(TestBase):      def test_aarch64_dynamic_regset_config_sme_write_za_to_enable(self):          """Test that ZA and ZT0 (if present) shows as 0s when disabled and          can be enabled by writing to ZA.""" +        if not self.isAArch64SVE(): +            self.skipTest("SVE must be present.")          if not self.isAArch64SME():              self.skipTest("SME must be present.") @@ -270,6 +275,8 @@ class RegisterCommandsTestCase(TestBase):      def test_aarch64_dynamic_regset_config_sme_write_zt0_to_enable(self):          """Test that ZA and ZT0 (if present) shows as 0s when disabled and          can be enabled by writing to ZT0.""" +        if not self.isAArch64SVE(): +            self.skipTest("SVE must be present.")          if not self.isAArch64SME():              self.skipTest("SME must be present.")          if not self.isAArch64SME2(): diff --git a/lldb/test/API/functionalities/breakpoint/same_cu_name/Makefile b/lldb/test/API/functionalities/breakpoint/same_cu_name/Makefile index b19e781..b508da2 100644 --- a/lldb/test/API/functionalities/breakpoint/same_cu_name/Makefile +++ b/lldb/test/API/functionalities/breakpoint/same_cu_name/Makefile @@ -4,16 +4,16 @@ LD_EXTRAS := ns1.o ns2.o ns3.o ns4.o  a.out: main.o ns1.o ns2.o ns3.o ns4.o  ns1.o: common.cpp -	$(CC) -gdwarf -c -DNAMESPACE=ns1 -o $@ $< +	$(CXX) -gdwarf -c -DNAMESPACE=ns1 -o $@ $<  ns2.o: common.cpp -	$(CC) -gdwarf -c -DNAMESPACE=ns2 -o $@ $< +	$(CXX) -gdwarf -c -DNAMESPACE=ns2 -o $@ $<  ns3.o: common.cpp -	$(CC) -gdwarf -c -DNAMESPACE=ns3 -o $@ $< +	$(CXX) -gdwarf -c -DNAMESPACE=ns3 -o $@ $<  ns4.o: common.cpp -	$(CC) -gdwarf -c -DNAMESPACE=ns4 -o $@ $< +	$(CXX) -gdwarf -c -DNAMESPACE=ns4 -o $@ $<  include Makefile.rules diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx-simulators/optional/TestDataFormatterLibcxxOptionalSimulator.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx-simulators/optional/TestDataFormatterLibcxxOptionalSimulator.py index 3fefe87..7463f88 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx-simulators/optional/TestDataFormatterLibcxxOptionalSimulator.py +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx-simulators/optional/TestDataFormatterLibcxxOptionalSimulator.py @@ -53,6 +53,8 @@ for r in range(2):      # causing this test to fail. This was reverted in newer version of clang      # with commit 52a9ba7ca.      @skipIf(compiler="clang", compiler_version=["=", "17"]) +    @skipIf(compiler="clang", compiler_version=["=", "18"]) +    @skipIf(compiler="clang", compiler_version=["=", "19"])      @functools.wraps(LibcxxOptionalDataFormatterSimulatorTestCase._run_test)      def test_method(self, defines=defines):          LibcxxOptionalDataFormatterSimulatorTestCase._run_test(self, defines) diff --git a/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py b/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py index d8a729b..2f942da 100644 --- a/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py +++ b/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py @@ -9,7 +9,7 @@ class LibCxxInternalsRecognizerTestCase(TestBase):      NO_DEBUG_INFO_TESTCASE = True      @add_test_categories(["libc++"]) -    @skipIf(compiler="clang", compiler_version=["<", "19.0"]) +    @skipIf(compiler="clang", compiler_version=["<=", "19.0"])      def test_frame_recognizer(self):          """Test that implementation details of libc++ are hidden"""          self.build() diff --git a/lldb/test/API/lua_api/TestThreadAPI.lua b/lldb/test/API/lua_api/TestThreadAPI.lua new file mode 100644 index 0000000..5a38d0b --- /dev/null +++ b/lldb/test/API/lua_api/TestThreadAPI.lua @@ -0,0 +1,25 @@ +_T = require('lua_lldb_test').create_test('TestThreadAPI') + +function _T:TestGetStopDescription() +    local target = self:create_target() +    local breakpoint = target:BreakpointCreateByName("main", "a.out") +    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1) + +    local process = target:LaunchSimple({ 'arg1', 'arg2' }, nil, nil) +    local thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) +    assertNotNil(thread) +    assertTrue(thread:IsValid()) + +    assertEqual("breakpoint", thread:GetStopDescription(string.len("breakpoint") + 1)) +    assertEqual("break", thread:GetStopDescription(string.len("break") + 1)) +    assertEqual("b", thread:GetStopDescription(string.len("b") + 1)) +    assertEqual("breakpoint 1.1", thread:GetStopDescription(string.len("breakpoint 1.1") + 100)) + +    -- Test stream variation +    local stream = lldb.SBStream() +    assertTrue(thread:GetStopDescription(stream)) +    assertNotNil(stream) +    assertEqual("breakpoint 1.1", stream:GetData()) +end + +os.exit(_T:run()) diff --git a/lldb/test/API/python_api/default-constructor/sb_thread.py b/lldb/test/API/python_api/default-constructor/sb_thread.py index 34eb3db..4252fa0 100644 --- a/lldb/test/API/python_api/default-constructor/sb_thread.py +++ b/lldb/test/API/python_api/default-constructor/sb_thread.py @@ -10,6 +10,7 @@ def fuzz_obj(obj):      obj.GetStopReasonDataCount()      obj.GetStopReasonDataAtIndex(100)      obj.GetStopDescription(256) +    obj.GetStopDescription(lldb.SBStream())      obj.GetThreadID()      obj.GetIndexID()      obj.GetName() diff --git a/lldb/test/API/python_api/thread/TestThreadAPI.py b/lldb/test/API/python_api/thread/TestThreadAPI.py index 5583434a..acad758 100644 --- a/lldb/test/API/python_api/thread/TestThreadAPI.py +++ b/lldb/test/API/python_api/thread/TestThreadAPI.py @@ -138,6 +138,11 @@ class ThreadAPITestCase(TestBase):              "breakpoint 1.1", thread.GetStopDescription(len("breakpoint 1.1") + 100)          ) +        # Test the stream variation +        stream = lldb.SBStream() +        self.assertTrue(thread.GetStopDescription(stream)) +        self.assertEqual("breakpoint 1.1", stream.GetData()) +      def step_out_of_malloc_into_function_b(self, exe_name):          """Test Python SBThread.StepOut() API to step out of a malloc call where the call site is at function b()."""          exe = self.getBuildArtifact(exe_name) diff --git a/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch.py b/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch.py index dc6bf38..09b1322 100644 --- a/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch.py +++ b/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch.py @@ -642,6 +642,7 @@ class TestDAP_launch(lldbdap_testcase.DAPTestCaseBase):      @skipIfAsan      @skipIfWindows      @skipIf(oslist=["linux"], archs=no_match(["x86_64"])) +    @skipIfBuildType(["debug"])      def test_stdio_redirection_and_console(self):          """          Test stdio redirection and console. diff --git a/lldb/test/Shell/Breakpoint/jit-loader_jitlink_elf.test b/lldb/test/Shell/Breakpoint/jit-loader_jitlink_elf.test index 52c86fa5..9a972f1 100644 --- a/lldb/test/Shell/Breakpoint/jit-loader_jitlink_elf.test +++ b/lldb/test/Shell/Breakpoint/jit-loader_jitlink_elf.test @@ -3,8 +3,8 @@  # JITLink is the Orc-specific JIT linker implementation.  # -# RUN: %clang -g -S -emit-llvm -fPIC --target=x86_64-unknown-unknown-elf \ -# RUN:        -o %t.ll %p/Inputs/jitbp.cpp +# RUN: %clangxx -g -S -emit-llvm -fPIC --target=x86_64-unknown-unknown-elf \ +# RUN:          -o %t.ll %p/Inputs/jitbp.cpp  # RUN: %lldb -b -o 'settings set plugin.jit-loader.gdb.enable on' -o 'b jitbp' \  # RUN:          -o 'run --jit-linker=jitlink %t.ll' lli | FileCheck %s diff --git a/lldb/test/Shell/Breakpoint/jit-loader_rtdyld_elf.test b/lldb/test/Shell/Breakpoint/jit-loader_rtdyld_elf.test index b34a567..ae9402a 100644 --- a/lldb/test/Shell/Breakpoint/jit-loader_rtdyld_elf.test +++ b/lldb/test/Shell/Breakpoint/jit-loader_rtdyld_elf.test @@ -3,8 +3,8 @@  # RuntimeDyld can be used to link and load emitted code for both, MCJIT and Orc.  # -# RUN: %clang -g -S -emit-llvm --target=x86_64-unknown-unknown-elf \ -# RUN:        -o %t.ll %p/Inputs/jitbp.cpp +# RUN: %clangxx -g -S -emit-llvm --target=x86_64-unknown-unknown-elf \ +# RUN:          -o %t.ll %p/Inputs/jitbp.cpp  #  # RUN: %lldb -b -o 'settings set plugin.jit-loader.gdb.enable on' -o 'b jitbp' \  # RUN:          -o 'run --jit-kind=mcjit %t.ll' lli | FileCheck %s diff --git a/lldb/test/Shell/Commands/command-image-dump-ast-colored.test b/lldb/test/Shell/Commands/command-image-dump-ast-colored.test index 355ef6b..7fd70d2 100644 --- a/lldb/test/Shell/Commands/command-image-dump-ast-colored.test +++ b/lldb/test/Shell/Commands/command-image-dump-ast-colored.test @@ -1,7 +1,7 @@  # Test AST dumping with and without color.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Commands/command-image-dump-ast.test b/lldb/test/Shell/Commands/command-image-dump-ast.test index 3204022..86fe183 100644 --- a/lldb/test/Shell/Commands/command-image-dump-ast.test +++ b/lldb/test/Shell/Commands/command-image-dump-ast.test @@ -5,7 +5,7 @@  # UNSUPPORTED: system-windows  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Commands/list-header.test b/lldb/test/Shell/Commands/list-header.test index 53c4b786..27eaa1a 100644 --- a/lldb/test/Shell/Commands/list-header.test +++ b/lldb/test/Shell/Commands/list-header.test @@ -3,11 +3,11 @@  # XFAIL: target-windows  ## Test that `list header.h:<line>` works correctly when header is available. -##  +##  # RUN: split-file %s %t -# RUN: %clang_host -g %t/main_with_inlined.cc %t/foo.cc -o %t/main_with_inlined.out -# RUN: %clang_host -g %t/main_no_inlined.cc %t/foo.cc -o %t/main_no_inlined.out +# RUN: %clangxx_host -g %t/main_with_inlined.cc %t/foo.cc -o %t/main_with_inlined.out +# RUN: %clangxx_host -g %t/main_no_inlined.cc %t/foo.cc -o %t/main_no_inlined.out  # RUN: %lldb %t/main_with_inlined.out -o "list foo.h:2" -o "exit" 2>&1 \  # RUN:   | FileCheck %s --check-prefix=CHECK-INLINED @@ -19,7 +19,7 @@  # CHECK-INLINED: 2      extern int* ptr;  # CHECK-INLINED: 3   	void f(int x); -# CHECK-INLINED: 4   	 +# CHECK-INLINED: 4  # CHECK-INLINED: 5   	inline void g(int x) {  # CHECK-INLINED: 6   	  *ptr = x; // should crash here  # CHECK-INLINED: 7   	} diff --git a/lldb/test/Shell/Error/cleanup.cpp b/lldb/test/Shell/Error/cleanup.cpp index 6abc62d..1e83478 100644 --- a/lldb/test/Shell/Error/cleanup.cpp +++ b/lldb/test/Shell/Error/cleanup.cpp @@ -1,5 +1,5 @@  // Test CommandObject is cleaned up even after commands fail due to not taking any argument. -// RUN: %clang_host -g %s -o %t +// RUN: %clangxx_host -g %s -o %t  // RUN: %lldb -f %t -o "settings set interpreter.stop-command-source-on-error false" -s \  // RUN:   %S/Inputs/cleanup.lldbinit  int main() { return 0; } diff --git a/lldb/test/Shell/Expr/TestExprLanguageNote.test b/lldb/test/Shell/Expr/TestExprLanguageNote.test index e8e4e13..e7da308 100644 --- a/lldb/test/Shell/Expr/TestExprLanguageNote.test +++ b/lldb/test/Shell/Expr/TestExprLanguageNote.test @@ -1,5 +1,5 @@  # RUN: split-file %s %t -# RUN: %clang_host -g %t/main.cpp -o %t.out +# RUN: %clangxx_host -g %t/main.cpp -o %t.out  #  # RUN: %lldb -x -b -o "settings set interpreter.stop-command-source-on-error false" \  # RUN:       -s %t/no-target.input 2>&1 | FileCheck %s --check-prefix=CHECK-NO-TARGET diff --git a/lldb/test/Shell/Expr/TestLambdaExprImport.test b/lldb/test/Shell/Expr/TestLambdaExprImport.test index c57ce06..b49a380 100644 --- a/lldb/test/Shell/Expr/TestLambdaExprImport.test +++ b/lldb/test/Shell/Expr/TestLambdaExprImport.test @@ -3,7 +3,7 @@  # uses always).  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -o "settings set interpreter.stop-command-source-on-error false" \  # RUN:       -x -b -s %t/commands.input %t.out 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/ObjectFile/ELF/elf-memory.test b/lldb/test/Shell/ObjectFile/ELF/elf-memory.test index 75a68ed..170dc76 100644 --- a/lldb/test/Shell/ObjectFile/ELF/elf-memory.test +++ b/lldb/test/Shell/ObjectFile/ELF/elf-memory.test @@ -11,7 +11,7 @@  //   - verify that "image dump objfile" will dump the dynamic section of the  //     memory elf file and find the .dynamic string table. -// RUN: %clang_host %p/Inputs/memory-elf.cpp -g -O0 -o %t +// RUN: %clangxx_host %p/Inputs/memory-elf.cpp -g -O0 -o %t  // RUN: %lldb %t -b \  // RUN:   -o "b main" \ diff --git a/lldb/test/Shell/ObjectFile/MachO/Inputs/section-overflow-binary b/lldb/test/Shell/ObjectFile/MachO/Inputs/section-overflow-binaryBinary files differ new file mode 100644 index 0000000..19dc2f4 --- /dev/null +++ b/lldb/test/Shell/ObjectFile/MachO/Inputs/section-overflow-binary diff --git a/lldb/test/Shell/ObjectFile/MachO/section-overflow-binary.test b/lldb/test/Shell/ObjectFile/MachO/section-overflow-binary.test new file mode 100644 index 0000000..76c335f --- /dev/null +++ b/lldb/test/Shell/ObjectFile/MachO/section-overflow-binary.test @@ -0,0 +1,13 @@ +RUN: %lldb -b %p/Inputs/section-overflow-binary \ +RUN:   -o 'script dwarf = lldb.target.module[0].sections[0]' \ +RUN:   -o 'script section = dwarf.GetSubSectionAtIndex(0)' \ +RUN:   -o "script print(f'{section.GetName()} file_offset=0x{section.GetFileOffset():016x}')" \ +RUN:   -o 'script section = dwarf.GetSubSectionAtIndex(1)' \ +RUN:   -o "script print(f'{section.GetName()} file_offset=0x{section.GetFileOffset():016x}')" \ +RUN:   -o 'script section = dwarf.GetSubSectionAtIndex(2)' \ +RUN:   -o "script print(f'{section.GetName()} file_offset=0x{section.GetFileOffset():016x}')" \ +RUN:   | FileCheck %s + +CHECK: __debug_abbrev file_offset=0x00000000fffffff0 +CHECK: __debug_info file_offset=0x0000000100000010 +CHECK: __debug_line file_offset=0x0000000300000010 diff --git a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback-user-leaf.test b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback-user-leaf.test index 5a84c16..32b4095 100644 --- a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback-user-leaf.test +++ b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback-user-leaf.test @@ -12,7 +12,7 @@  # UNSUPPORTED: system-windows  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap-in-stl-callback-user-leaf.cpp -o %t.out +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap-in-stl-callback-user-leaf.cpp -o %t.out  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK  run diff --git a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback.test b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback.test index b15bcb3..c8c433c 100644 --- a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback.test +++ b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-callback.test @@ -11,7 +11,7 @@  # UNSUPPORTED: system-windows  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap-in-stl-callback.cpp -o %t.out +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap-in-stl-callback.cpp -o %t.out  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK  run diff --git a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-max-depth.test b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-max-depth.test index 2ea6594..d0789ac 100644 --- a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-max-depth.test +++ b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-max-depth.test @@ -4,7 +4,7 @@  # UNSUPPORTED: system-windows  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap-in-stl-max-depth.cpp -o %t.out +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap-in-stl-max-depth.cpp -o %t.out  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK  run diff --git a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-nested.test b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-nested.test index 81a492d..68a4ea6 100644 --- a/lldb/test/Shell/Recognizer/verbose_trap-in-stl-nested.test +++ b/lldb/test/Shell/Recognizer/verbose_trap-in-stl-nested.test @@ -3,7 +3,7 @@  # UNSUPPORTED: system-windows  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap-in-stl-nested.cpp -o %t.out +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap-in-stl-nested.cpp -o %t.out  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK  run diff --git a/lldb/test/Shell/Recognizer/verbose_trap-in-stl.test b/lldb/test/Shell/Recognizer/verbose_trap-in-stl.test index dd08290..bd48511 100644 --- a/lldb/test/Shell/Recognizer/verbose_trap-in-stl.test +++ b/lldb/test/Shell/Recognizer/verbose_trap-in-stl.test @@ -3,7 +3,7 @@  # UNSUPPORTED: system-windows  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap-in-stl.cpp -o %t.out +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap-in-stl.cpp -o %t.out  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK  run diff --git a/lldb/test/Shell/Recognizer/verbose_trap.test b/lldb/test/Shell/Recognizer/verbose_trap.test index dafab7b..ab0df08 100644 --- a/lldb/test/Shell/Recognizer/verbose_trap.test +++ b/lldb/test/Shell/Recognizer/verbose_trap.test @@ -1,15 +1,15 @@  # UNSUPPORTED: system-windows  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"Foo\" -DVERBOSE_TRAP_TEST_MESSAGE=\"Bar\" +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"Foo\" -DVERBOSE_TRAP_TEST_MESSAGE=\"Bar\"  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK,CHECK-BOTH  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"\" -DVERBOSE_TRAP_TEST_MESSAGE=\"Bar\" +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"\" -DVERBOSE_TRAP_TEST_MESSAGE=\"Bar\"  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK,CHECK-MESSAGE_ONLY  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"Foo\" -DVERBOSE_TRAP_TEST_MESSAGE=\"\" +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"Foo\" -DVERBOSE_TRAP_TEST_MESSAGE=\"\"  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK,CHECK-CATEGORY_ONLY  # -# RUN: %clang_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"\" -DVERBOSE_TRAP_TEST_MESSAGE=\"\" +# RUN: %clangxx_host -g -O0 %S/Inputs/verbose_trap.cpp -o %t.out -DVERBOSE_TRAP_TEST_CATEGORY=\"\" -DVERBOSE_TRAP_TEST_MESSAGE=\"\"  # RUN: %lldb -b -s %s %t.out | FileCheck %s --check-prefixes=CHECK,CHECK-NONE  run diff --git a/lldb/test/Shell/Register/Inputs/x86-multithread-read.cpp b/lldb/test/Shell/Register/Inputs/x86-multithread-read.cpp index c5f571f..0d2869c 100644 --- a/lldb/test/Shell/Register/Inputs/x86-multithread-read.cpp +++ b/lldb/test/Shell/Register/Inputs/x86-multithread-read.cpp @@ -1,4 +1,5 @@  #include <cstdint> +#include <functional>  #include <mutex>  #include <thread> diff --git a/lldb/test/Shell/Register/Inputs/x86-multithread-write.cpp b/lldb/test/Shell/Register/Inputs/x86-multithread-write.cpp index 320f9e9..1f4e91ac 100644 --- a/lldb/test/Shell/Register/Inputs/x86-multithread-write.cpp +++ b/lldb/test/Shell/Register/Inputs/x86-multithread-write.cpp @@ -1,6 +1,7 @@  #include <cinttypes>  #include <cstdint>  #include <cstdio> +#include <functional>  #include <mutex>  #include <thread> diff --git a/lldb/test/Shell/Settings/TestChildCountTruncation.test b/lldb/test/Shell/Settings/TestChildCountTruncation.test index da6436c..b66d0df 100644 --- a/lldb/test/Shell/Settings/TestChildCountTruncation.test +++ b/lldb/test/Shell/Settings/TestChildCountTruncation.test @@ -2,7 +2,7 @@  # when target.max-children-count wasn't explicitly set.  # RUN: split-file %s %t -# RUN: %clang_host -g %t/main.cpp -o %t.out +# RUN: %clangxx_host -g %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/dwim-commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s --check-prefix=DWIM  # diff --git a/lldb/test/Shell/Settings/TestChildDepthTruncation.test b/lldb/test/Shell/Settings/TestChildDepthTruncation.test index 12f5661..7e4fbbe 100644 --- a/lldb/test/Shell/Settings/TestChildDepthTruncation.test +++ b/lldb/test/Shell/Settings/TestChildDepthTruncation.test @@ -2,7 +2,7 @@  # when target.max-children-depth wasn't explicitly set.  # RUN: split-file %s %t -# RUN: %clang_host -g %t/main.cpp -o %t.out +# RUN: %clangxx_host -g %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/dwim-commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s --check-prefix=DWIM  # diff --git a/lldb/test/Shell/Settings/TestCxxFrameFormat.test b/lldb/test/Shell/Settings/TestCxxFrameFormat.test index d70db58..3ee92d5 100644 --- a/lldb/test/Shell/Settings/TestCxxFrameFormat.test +++ b/lldb/test/Shell/Settings/TestCxxFrameFormat.test @@ -3,7 +3,7 @@  # Test the plugin.cplusplus.display.function-name-format setting.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestCxxFrameFormatEmpty.test b/lldb/test/Shell/Settings/TestCxxFrameFormatEmpty.test index 0a6d272..a0550b7 100644 --- a/lldb/test/Shell/Settings/TestCxxFrameFormatEmpty.test +++ b/lldb/test/Shell/Settings/TestCxxFrameFormatEmpty.test @@ -5,7 +5,7 @@  # ${function.name-with-args}.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestCxxFrameFormatMixedLanguages.test b/lldb/test/Shell/Settings/TestCxxFrameFormatMixedLanguages.test index bafd36f..679d6e4 100644 --- a/lldb/test/Shell/Settings/TestCxxFrameFormatMixedLanguages.test +++ b/lldb/test/Shell/Settings/TestCxxFrameFormatMixedLanguages.test @@ -4,9 +4,9 @@  # when interoperating multiple languages.  # RUN: split-file %s %t -# RUN: %clangxx_host -x c -c -g %t/lib.c -o %t.clib.o +# RUN: %clang_host -x c -c -g %t/lib.c -o %t.clib.o  # RUN: %clangxx_host -c -g %t/lib.cpp -o %t.cxxlib.o -# RUN: %clangxx_host %t/main.m %t.cxxlib.o %t.clib.o -o %t.out +# RUN: %clang_host %t/main.m %t.cxxlib.o %t.clib.o -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 | FileCheck %s  #--- lib.c @@ -47,7 +47,7 @@ break set -n method  run  bt -# CHECK: custom-frame 'this affects C++ only'  -# CHECK: custom-frame 'this affects C++ only'  -# CHECK: custom-frame 'func'  -# CHECK: custom-frame 'main'  +# CHECK: custom-frame 'this affects C++ only' +# CHECK: custom-frame 'this affects C++ only' +# CHECK: custom-frame 'func' +# CHECK: custom-frame 'main' diff --git a/lldb/test/Shell/Settings/TestCxxFrameFormatPartialFailure.test b/lldb/test/Shell/Settings/TestCxxFrameFormatPartialFailure.test index e914ff7..f279f07 100644 --- a/lldb/test/Shell/Settings/TestCxxFrameFormatPartialFailure.test +++ b/lldb/test/Shell/Settings/TestCxxFrameFormatPartialFailure.test @@ -5,7 +5,7 @@  # were successful.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionBasename.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionBasename.test index c0008e5..56ec09e 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionBasename.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionBasename.test @@ -3,11 +3,11 @@  # Test the ${function.basename} frame-format variable.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s  # -# RUN: %clang_host -O0 %t/main.cpp -o %t-nodebug.out +# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out  # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionFormattedArguments.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionFormattedArguments.test index 04f5170..f20fc8c 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionFormattedArguments.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionFormattedArguments.test @@ -3,11 +3,11 @@  # Test the ${function.formatted-arguments} frame-format variable.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s  # -# RUN: %clang_host -O0 %t/main.cpp -o %t-nodebug.out +# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out  # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \  # RUN:       | FileCheck %s --check-prefix=CHECK-NODEBUG diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionQualifiers.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionQualifiers.test index b1dfe83..d05e60b 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionQualifiers.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionQualifiers.test @@ -3,11 +3,11 @@  # Test the ${function.qualifiers} frame-format variable.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s  # -# RUN: %clang_host -O0 %t/main.cpp -o %t-nodebug.out +# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out  # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionReturn.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionReturn.test index f913162..bb78258 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionReturn.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionReturn.test @@ -4,11 +4,11 @@  # frame-format variables.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s  # -# RUN: %clang_host -O0 %t/main.cpp -o %t-nodebug.out +# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out  # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionScope.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionScope.test index a28c16f..f4a1766 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionScope.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionScope.test @@ -3,11 +3,11 @@  # Test the ${function.scope} frame-format variable.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s  # -# RUN: %clang_host -O0 %t/main.cpp -o %t-nodebug.out +# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out  # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionSuffix.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionSuffix.test index 4609a04..5883c72 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionSuffix.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionSuffix.test @@ -3,7 +3,7 @@  # Test the ${function.suffix} frame-format variable.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFormatFunctionTemplateArguments.test b/lldb/test/Shell/Settings/TestFrameFormatFunctionTemplateArguments.test index ac8a328..a09a961 100644 --- a/lldb/test/Shell/Settings/TestFrameFormatFunctionTemplateArguments.test +++ b/lldb/test/Shell/Settings/TestFrameFormatFunctionTemplateArguments.test @@ -3,11 +3,11 @@  # Test the ${function.template-arguments} frame-format variable.  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s  # -# RUN: %clang_host -O0 %t/main.cpp -o %t-nodebug.out +# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out  # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/Settings/TestFrameFunctionInlined.test b/lldb/test/Shell/Settings/TestFrameFunctionInlined.test index 5db34b4..1bb7ab4 100644 --- a/lldb/test/Shell/Settings/TestFrameFunctionInlined.test +++ b/lldb/test/Shell/Settings/TestFrameFunctionInlined.test @@ -6,7 +6,7 @@  # REQUIRES: (system-windows && lld) || !system-windows  # RUN: split-file %s %t -# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out %if system-windows %{-fuse-ld=lld%} +# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out %if system-windows %{-fuse-ld=lld%}  # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \  # RUN:       | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/split-dwarf-expression-eval-bug.cpp b/lldb/test/Shell/SymbolFile/DWARF/split-dwarf-expression-eval-bug.cpp index 4a8004d..b02eea6 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/split-dwarf-expression-eval-bug.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/split-dwarf-expression-eval-bug.cpp @@ -7,10 +7,10 @@  // UNSUPPORTED: system-darwin, system-windows -// RUN: %clang_host -c -gsplit-dwarf -g %s -o %t1.o -DONE -// RUN: %clang_host -c -gsplit-dwarf -g %s -o %t2.o -DTWO -// RUN: %clang_host -c -gsplit-dwarf -g %s -o %t3.o -DTHREE -// RUN: %clang_host %t1.o %t2.o %t3.o -o %t +// RUN: %clangxx_host -c -gsplit-dwarf -g %s -o %t1.o -DONE +// RUN: %clangxx_host -c -gsplit-dwarf -g %s -o %t2.o -DTWO +// RUN: %clangxx_host -c -gsplit-dwarf -g %s -o %t3.o -DTHREE +// RUN: %clangxx_host %t1.o %t2.o %t3.o -o %t  // RUN: %lldb %t -o "br set -n foo" -o run -o "expression bool_in_first_cu" -o exit \  // RUN:   | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/apple-index-is-used.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/apple-index-is-used.cpp index 5bcb2cb..8ef2e56 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/apple-index-is-used.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/apple-index-is-used.cpp @@ -1,5 +1,5 @@  // Test that we use the apple indexes. -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx -gdwarf-4 +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx -gdwarf-4  // RUN: lldb-test symbols %t | FileCheck %s  // CHECK: .apple_names index present diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/debug-names-compressed.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/debug-names-compressed.cpp index 4dcbb47..53c3d3d 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/debug-names-compressed.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/debug-names-compressed.cpp @@ -3,7 +3,7 @@  // REQUIRES: lld, zlib -// RUN: %clang -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames %s +// RUN: %clangxx -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames %s  // RUN: ld.lld %t.o -o %t --compress-debug-sections=zlib  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --find=variable --name=foo %t | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-debug-names.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-debug-names.cpp index 2b7a928c..acc34dd 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-debug-names.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-debug-names.cpp @@ -6,7 +6,7 @@  // REQUIRES: lld -// RUN: %clang %s -target x86_64-pc-linux -gdwarf-5 -fdebug-types-section \ +// RUN: %clangxx %s -target x86_64-pc-linux -gdwarf-5 -fdebug-types-section \  // RUN:   -gpubnames -fno-limit-debug-info -c -o %t.o  // RUN: ld.lld %t.o -o %t  // RUN: %lldb %t -o "type lookup stype" -b | FileCheck %s --check-prefix=BASE diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-dwo-cross-reference.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-dwo-cross-reference.cpp index 0e29cb3..bc863fb6 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-dwo-cross-reference.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-dwo-cross-reference.cpp @@ -3,9 +3,9 @@  // REQUIRES: lld -// RUN: %clang %s -target x86_64-pc-linux -fno-standalone-debug -g \ +// RUN: %clangxx %s -target x86_64-pc-linux -fno-standalone-debug -g \  // RUN:   -fdebug-types-section -gsplit-dwarf -c -o %t1.o -DONE -// RUN: %clang %s -target x86_64-pc-linux -fno-standalone-debug -g \ +// RUN: %clangxx %s -target x86_64-pc-linux -fno-standalone-debug -g \  // RUN:   -fdebug-types-section -gsplit-dwarf -c -o %t2.o -DTWO  // RUN: llvm-dwarfdump %t1.dwo -debug-types -debug-info | FileCheck --check-prefix=ONEUNIT %s  // RUN: llvm-dwarfdump %t2.dwo -debug-types -debug-info | FileCheck --check-prefix=ONEUNIT %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-index-is-used.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-index-is-used.cpp index d6ac237..2fdb1d8 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-index-is-used.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-index-is-used.cpp @@ -2,7 +2,7 @@  // REQUIRES: lld -// RUN: %clang %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols %t | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-partial-index.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-partial-index.cpp index ab84415..a739dfd 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-partial-index.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-partial-index.cpp @@ -3,9 +3,9 @@  // REQUIRES: lld -// RUN: %clang %s -c -o %t-1.o --target=x86_64-pc-linux -DONE -gdwarf-5 -gpubnames +// RUN: %clangxx %s -c -o %t-1.o --target=x86_64-pc-linux -DONE -gdwarf-5 -gpubnames  // RUN: llvm-readobj --sections %t-1.o | FileCheck %s --check-prefix NAMES -// RUN: %clang %s -c -o %t-2.o --target=x86_64-pc-linux -DTWO -gdwarf-5 -gno-pubnames +// RUN: %clangxx %s -c -o %t-2.o --target=x86_64-pc-linux -DTWO -gdwarf-5 -gno-pubnames  // RUN: ld.lld %t-1.o %t-2.o -o %t  // RUN: lldb-test symbols --find=variable --name=foo  %t | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwo-not-found-warning.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/dwo-not-found-warning.cpp index 929e11f..36eb299 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwo-not-found-warning.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwo-not-found-warning.cpp @@ -1,4 +1,4 @@ -// RUN: %clang --target=x86_64-pc-linux -g -gsplit-dwarf -c %s -o %t.o +// RUN: %clangxx --target=x86_64-pc-linux -g -gsplit-dwarf -c %s -o %t.o  // RUN: rm %t.dwo  // RUN: %lldb %t.o -o "br set -n main" -o exit 2>&1 | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-foreign-type-units.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-foreign-type-units.cpp index 9251930..7fbc4f9 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-foreign-type-units.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-foreign-type-units.cpp @@ -16,9 +16,9 @@  // type unit comes from by looking at the DW_AT_dwo_name attribute in the  // DW_TAG_type_unit. -// RUN: %clang -target x86_64-pc-linux -gdwarf-5 -gsplit-dwarf \ +// RUN: %clangxx -target x86_64-pc-linux -gdwarf-5 -gsplit-dwarf \  // RUN:   -fdebug-types-section -gpubnames -c %s -o %t.main.o -// RUN: %clang -target x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -DVARIANT \ +// RUN: %clangxx -target x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -DVARIANT \  // RUN:   -fdebug-types-section -gpubnames -c %s -o %t.foo.o  // RUN: ld.lld %t.main.o %t.foo.o -o %t diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-index-cache.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-index-cache.cpp index 3e97c3f..3edcd8f 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-index-cache.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-index-cache.cpp @@ -14,8 +14,8 @@  // complete DWARF index.  // Test that if we don't have .debug_names, that we save a full DWARF index. -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=1 -c %s -o %t.main.o -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=0 -c %s -o %t.foo.o +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=1 -c %s -o %t.main.o +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=0 -c %s -o %t.foo.o  // RUN: ld.lld %t.main.o %t.foo.o -o %t.nonames  // RUN: llvm-dwp %t.main.dwo %t.foo.dwo -o %t.nonames.dwp  // RUN: rm %t.main.dwo %t.foo.dwo @@ -35,8 +35,8 @@  // Test that if we have one .o file with .debug_names and one without, that we  // save a partial DWARF index. -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=1 -c %s -o %t.main.o -gpubnames -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=0 -c %s -o %t.foo.o +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=1 -c %s -o %t.main.o -gpubnames +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -DMAIN=0 -c %s -o %t.foo.o  // RUN: ld.lld %t.main.o %t.foo.o -o %t.somenames  // RUN: llvm-dwp %t.main.dwo %t.foo.dwo -o %t.somenames.dwp  // RUN: rm %t.main.dwo %t.foo.dwo diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-separate-debug-file.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-separate-debug-file.cpp index 888e96b..f625fda 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-separate-debug-file.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-separate-debug-file.cpp @@ -1,7 +1,7 @@  // REQUIRES: lld, python  // Now test with DWARF5 -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -c %s -o %t.dwarf5.o +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -c %s -o %t.dwarf5.o  // RUN: ld.lld %t.dwarf5.o -o %t.dwarf5  // RUN: llvm-dwp %t.dwarf5.dwo -o %t.dwarf5.dwp  // RUN: rm %t.dwarf5.dwo @@ -64,7 +64,7 @@  // RUN:   -b %t.dwarf5.debug 2>&1 | FileCheck %s -check-prefix=NODWP  // Now test with DWARF4 -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-4 -c %s -o %t.dwarf4.o +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-4 -c %s -o %t.dwarf4.o  // RUN: ld.lld %t.dwarf4.o -o %t.dwarf4  // RUN: llvm-dwp %t.dwarf4.dwo -o %t.dwarf4.dwp  // RUN: rm %t.dwarf4.dwo @@ -128,7 +128,7 @@  // Test if we have a GNU build ID in our main executable and in our debug file,  // and we have a .dwp file that doesn't, that we can still load our .dwp file. -// RUN: %clang -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -c %s -o %t.o +// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -gdwarf-5 -c %s -o %t.o  // RUN: ld.lld %t.o --build-id=md5 -o %t  // RUN: llvm-dwp %t.dwo -o %t.dwp  // RUN: rm %t.dwo diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-function.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-function.cpp index c42f9fe..a00b2bd 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-function.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-function.cpp @@ -1,6 +1,6 @@  // REQUIRES: lld -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \  // RUN:   FileCheck --check-prefix=BASE %s @@ -19,7 +19,7 @@  // RUN: lldb-test symbols --name=not_there --find=function %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s  // -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \  // RUN:   FileCheck --check-prefix=BASE %s  // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ @@ -39,7 +39,7 @@  // RUN: lldb-test symbols --name=not_there --find=function %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s -// RUN: %clang %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-namespace.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-namespace.cpp index 13d50af..14c73c3 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-namespace.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-namespace.cpp @@ -1,6 +1,6 @@  // REQUIRES: lld -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols --name=foo --find=namespace %t | \  // RUN:   FileCheck --check-prefix=FOO %s @@ -9,7 +9,7 @@  // RUN: lldb-test symbols --name=not_there --find=namespace %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s  // -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=foo --find=namespace %t | \  // RUN:   FileCheck --check-prefix=FOO %s  // RUN: lldb-test symbols --name=foo --find=namespace --context=context %t | \ @@ -17,7 +17,7 @@  // RUN: lldb-test symbols --name=not_there --find=namespace %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s -// RUN: %clang %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --name=foo --find=namespace %t | \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp index af49206..315fab34 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-type.cpp @@ -1,6 +1,6 @@  // REQUIRES: lld -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols --name=foo --find=type %t | \  // RUN:   FileCheck --check-prefix=NAME %s @@ -11,7 +11,7 @@  // RUN: lldb-test symbols --name=not_there --find=type %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s  // -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=foo --find=type %t | \  // RUN:   FileCheck --check-prefix=NAME %s  // RUN: lldb-test symbols --name=::foo --find=type %t | \ @@ -21,7 +21,7 @@  // RUN: lldb-test symbols --name=not_there --find=type %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s -// RUN: %clang %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --name=foo --find=type %t | \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-variable.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-variable.cpp index e46fa14..b6e2252 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-variable.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-basic-variable.cpp @@ -1,6 +1,6 @@  // REQUIRES: lld -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \  // RUN:   FileCheck --check-prefix=CONTEXT %s @@ -11,7 +11,7 @@  // RUN: lldb-test symbols --name=not_there --find=variable %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s  // -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \  // RUN:   FileCheck --check-prefix=CONTEXT %s  // RUN: lldb-test symbols --name=foo --find=variable %t | \ @@ -21,7 +21,7 @@  // RUN: lldb-test symbols --name=not_there --find=variable %t | \  // RUN:   FileCheck --check-prefix=EMPTY %s  // -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-function-regex.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-function-regex.cpp index be26759..5c7ad84 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-function-regex.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-function-regex.cpp @@ -1,13 +1,13 @@  // REQUIRES: lld -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols --name=f.o --regex --find=function %t | FileCheck %s  // -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=f.o --regex --find=function %t | FileCheck %s -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --name=f.o --regex --find=function %t | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-method-local-struct.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-method-local-struct.cpp index 3da4a4a..46553a8 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-method-local-struct.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-method-local-struct.cpp @@ -1,4 +1,4 @@ -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \  // RUN:   FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-method.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-method.cpp index 9f8b3df..26faf89 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-method.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-method.cpp @@ -1,15 +1,15 @@  // REQUIRES: lld -// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames +// RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames  // RUN: ld.lld %t.o -o %t  // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \  // RUN:   FileCheck %s  // -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \  // RUN:   FileCheck %s -// RUN: %clang %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames +// RUN: %clangxx %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames  // RUN: ld.lld %t.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-qualified-variable.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-qualified-variable.cpp index 1ad3e7f..e3f9ce3 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-qualified-variable.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-qualified-variable.cpp @@ -1,4 +1,4 @@ -// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx +// RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx  // RUN: lldb-test symbols --name=A::foo --find=variable %t | FileCheck %s  // CHECK: Found 1 variables: diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-dwo.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-dwo.cpp index b5d35e4..250b343 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-dwo.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-dwo.cpp @@ -1,9 +1,9 @@  // REQUIRES: lld -// RUN: %clang %s -gdwarf-5 -gpubnames -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DONE | \ +// RUN: %clangxx %s -gdwarf-5 -gpubnames -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DONE | \  // RUN:   llc -filetype=obj -split-dwarf-file=%t-1.dwo -o %t-1.o  // RUN: llvm-objcopy --split-dwo=%t-1.dwo %t-1.o -// RUN: %clang %s -gdwarf-5 -gpubnames -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DTWO | \ +// RUN: %clangxx %s -gdwarf-5 -gpubnames -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DTWO | \  // RUN:   llc -filetype=obj -split-dwarf-file=%t-2.dwo -o %t-2.o  // RUN: llvm-objcopy --split-dwo=%t-2.dwo %t-2.o  // RUN: ld.lld %t-1.o %t-2.o -o %t diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-file.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-file.cpp index f1a9a4e..3a8cf89 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-file.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/find-variable-file.cpp @@ -1,7 +1,7 @@  // REQUIRES: lld -// RUN: %clang -g -c -o %t-1.o --target=x86_64-pc-linux -gno-pubnames %s -// RUN: %clang -g -c -o %t-2.o --target=x86_64-pc-linux -gno-pubnames %S/Inputs/find-variable-file-2.cpp +// RUN: %clangxx -g -c -o %t-1.o --target=x86_64-pc-linux -gno-pubnames %s +// RUN: %clangxx -g -c -o %t-2.o --target=x86_64-pc-linux -gno-pubnames %S/Inputs/find-variable-file-2.cpp  // RUN: ld.lld %t-1.o %t-2.o -o %t  // RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \  // RUN:   FileCheck --check-prefix=ONE %s @@ -10,16 +10,16 @@  // Run the same test with split-dwarf. This is interesting because the two  // split compile units will have the same offset (0). -// RUN: %clang -g -c -o %t-1.o --target=x86_64-pc-linux -gsplit-dwarf %s -// RUN: %clang -g -c -o %t-2.o --target=x86_64-pc-linux -gsplit-dwarf %S/Inputs/find-variable-file-2.cpp +// RUN: %clangxx -g -c -o %t-1.o --target=x86_64-pc-linux -gsplit-dwarf %s +// RUN: %clangxx -g -c -o %t-2.o --target=x86_64-pc-linux -gsplit-dwarf %S/Inputs/find-variable-file-2.cpp  // RUN: ld.lld %t-1.o %t-2.o -o %t  // RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \  // RUN:   FileCheck --check-prefix=ONE %s  // RUN: lldb-test symbols --file=find-variable-file-2.cpp --find=variable %t | \  // RUN:   FileCheck --check-prefix=TWO %s -// RUN: %clang -c -o %t-1.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames %s -// RUN: %clang -c -o %t-2.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames %S/Inputs/find-variable-file-2.cpp +// RUN: %clangxx -c -o %t-1.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames %s +// RUN: %clangxx -c -o %t-2.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames %S/Inputs/find-variable-file-2.cpp  // RUN: ld.lld %t-1.o %t-2.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \ @@ -29,9 +29,9 @@  // Run the same test with split dwarf and pubnames to check whether we can find  // the compile unit using the name index if it is split. -// RUN: %clang -c -o %t-1.o --target=x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -gpubnames %s -// RUN: %clang -c -o %t-2.o --target=x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -gpubnames %S/Inputs/find-variable-file-2.cpp -// RUN: %clang -c -o %t-3.o --target=x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -gpubnames %S/Inputs/find-variable-file-3.cpp +// RUN: %clangxx -c -o %t-1.o --target=x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -gpubnames %s +// RUN: %clangxx -c -o %t-2.o --target=x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -gpubnames %S/Inputs/find-variable-file-2.cpp +// RUN: %clangxx -c -o %t-3.o --target=x86_64-pc-linux -gdwarf-5 -gsplit-dwarf -gpubnames %S/Inputs/find-variable-file-3.cpp  // RUN: ld.lld %t-1.o %t-2.o %t-3.o -o %t  // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES  // RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/member-pointers.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/member-pointers.cpp index a128923..0080577 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/member-pointers.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/member-pointers.cpp @@ -1,7 +1,7 @@  // REQUIRES: lld
  // Itanium ABI:
 -// RUN: %clang --target=x86_64-pc-linux -gdwarf -c -o %t_linux.o %s
 +// RUN: %clangxx --target=x86_64-pc-linux -gdwarf -c -o %t_linux.o %s
  // RUN: %lldb -f %t_linux.o -b -o "target variable s1 s2 m1 m2 v1 v2 v3 v4" | FileCheck --check-prefix=CHECK-GNU %s
  //
  // CHECK-GNU: (void (Single1::*)()) s1 = 0x00000000000000000000000000000000
 diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/module-ownership.mm b/lldb/test/Shell/SymbolFile/DWARF/x86/module-ownership.mm index 2dec109..27aa136 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/module-ownership.mm +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/module-ownership.mm @@ -1,5 +1,5 @@  // RUN: rm -rf %t.cache -// RUN: %clang --target=x86_64-apple-macosx -g -gmodules -Wno-objc-root-class \ +// RUN: %clangxx --target=x86_64-apple-macosx -g -gmodules -Wno-objc-root-class \  // RUN:    -fmodules -fmodules-cache-path=%t.cache \  // RUN:    -c -o %t.o %s -I%S/Inputs  // RUN: lldb-test symbols -dump-clang-ast %t.o | FileCheck --check-prefix CHECK-ANON-S1 %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/no_unique_address-with-bitfields.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/no_unique_address-with-bitfields.cpp index 297fb82..8f530c8 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/no_unique_address-with-bitfields.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/no_unique_address-with-bitfields.cpp @@ -1,4 +1,4 @@ -// RUN: %clang --target=x86_64-apple-macosx -c -gdwarf -o %t %s +// RUN: %clangxx --target=x86_64-apple-macosx -c -gdwarf -o %t %s  // RUN: %lldb %t \  // RUN:   -o "target var global" \  // RUN:   -o "target var global2" \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/type-definition-search.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/type-definition-search.cpp index 5a40a6e..5ab45ee 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/type-definition-search.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/type-definition-search.cpp @@ -4,18 +4,18 @@  // REQUIRES: lld -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-n-a.o -g -gsimple-template-names -DFILE_A -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-n-b.o -g -gsimple-template-names -DFILE_B +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-n-a.o -g -gsimple-template-names -DFILE_A +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-n-b.o -g -gsimple-template-names -DFILE_B  // RUN: ld.lld %t-n-a.o %t-n-b.o -o %t-n  // RUN: %lldb %t-n -o "target variable --ptr-depth 1 --show-types both_a both_b" -o exit | FileCheck %s -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-t-a.o -g -fdebug-types-section -DFILE_A -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-t-b.o -g -fdebug-types-section -DFILE_B +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-t-a.o -g -fdebug-types-section -DFILE_A +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-t-b.o -g -fdebug-types-section -DFILE_B  // RUN: ld.lld %t-t-a.o %t-t-b.o -o %t-t  // RUN: %lldb %t-t -o "target variable --ptr-depth 1 --show-types both_a both_b" -o exit | FileCheck %s -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-tn-a.o -g -fdebug-types-section -gsimple-template-names -DFILE_A -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-tn-b.o -g -fdebug-types-section -gsimple-template-names -DFILE_B +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-tn-a.o -g -fdebug-types-section -gsimple-template-names -DFILE_A +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-tn-b.o -g -fdebug-types-section -gsimple-template-names -DFILE_B  // RUN: ld.lld %t-tn-a.o %t-tn-b.o -o %t-tn  // RUN: %lldb %t-tn -o "target variable --ptr-depth 1 --show-types both_a both_b" -o exit | FileCheck %s diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/type-unit-same-basename.cpp b/lldb/test/Shell/SymbolFile/DWARF/x86/type-unit-same-basename.cpp index f7f5a30..f9fd5b5 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/type-unit-same-basename.cpp +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/type-unit-same-basename.cpp @@ -5,8 +5,8 @@  // REQUIRES: lld -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-a.o -g -fdebug-types-section -flimit-debug-info -DFILE_A -// RUN: %clang --target=x86_64-pc-linux -c %s -o %t-b.o -g -fdebug-types-section -flimit-debug-info -DFILE_B +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-a.o -g -fdebug-types-section -flimit-debug-info -DFILE_A +// RUN: %clangxx --target=x86_64-pc-linux -c %s -o %t-b.o -g -fdebug-types-section -flimit-debug-info -DFILE_B  // RUN: ld.lld -z undefs %t-a.o %t-b.o -o %t  // RUN: %lldb %t -o "target variable x" -o exit | FileCheck %s diff --git a/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp b/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp index 1abce69..064ed6d 100644 --- a/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp +++ b/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp @@ -1651,3 +1651,93 @@ DWARF:      EXPECT_EQ(param_die, ast_parser.GetObjectParameter(sub2, context_die));    }  } + +TEST_F(DWARFASTParserClangTests, TestTypeBitSize) { +  // Tests that we correctly parse DW_AT_bit_size of a DW_AT_base_type. + +  const char *yamldata = R"( +--- !ELF +FileHeader: +  Class:   ELFCLASS64 +  Data:    ELFDATA2LSB +  Type:    ET_EXEC +  Machine: EM_AARCH64 +DWARF: +  debug_str: +    - _BitInt(2) +  debug_abbrev: +    - ID:              0 +      Table: +        - Code:            0x1 +          Tag:             DW_TAG_compile_unit +          Children:        DW_CHILDREN_yes +          Attributes: +            - Attribute:       DW_AT_language +              Form:            DW_FORM_data2 +        - Code:            0x2 +          Tag:             DW_TAG_base_type +          Children:        DW_CHILDREN_no +          Attributes: +            - Attribute: DW_AT_name +              Form:      DW_FORM_strp +            - Attribute: DW_AT_encoding +              Form:      DW_FORM_data1 +            - Attribute: DW_AT_byte_size +              Form:      DW_FORM_data1 +            - Attribute: DW_AT_bit_size +              Form:      DW_FORM_data1 + +  debug_info: +     - Version:  5 +       UnitType: DW_UT_compile +       AddrSize: 8 +       Entries: + +# DW_TAG_compile_unit +#   DW_AT_language [DW_FORM_data2]    (DW_LANG_C_plus_plus) + +        - AbbrCode: 0x1 +          Values: +            - Value: 0x04 + +#   DW_TAG_base_type +#     DW_AT_name [DW_FORM_strp] ('_BitInt(2)') + +        - AbbrCode: 0x2 +          Values: +            - Value: 0x0 +            - Value: 0x05 +            - Value: 0x01 +            - Value: 0x02 +... +)"; + +  YAMLModuleTester t(yamldata); + +  DWARFUnit *unit = t.GetDwarfUnit(); +  ASSERT_NE(unit, nullptr); +  const DWARFDebugInfoEntry *cu_entry = unit->DIE().GetDIE(); +  ASSERT_EQ(cu_entry->Tag(), DW_TAG_compile_unit); +  ASSERT_EQ(unit->GetDWARFLanguageType(), DW_LANG_C_plus_plus); +  DWARFDIE cu_die(unit, cu_entry); + +  auto holder = std::make_unique<clang_utils::TypeSystemClangHolder>("ast"); +  auto &ast_ctx = *holder->GetAST(); +  DWARFASTParserClangStub ast_parser(ast_ctx); + +  auto type_die = cu_die.GetFirstChild(); +  ASSERT_TRUE(type_die.IsValid()); +  ASSERT_EQ(type_die.Tag(), DW_TAG_base_type); + +  ParsedDWARFTypeAttributes attrs(type_die); +  EXPECT_EQ(attrs.byte_size.value_or(0), 1U); +  EXPECT_EQ(attrs.data_bit_size.value_or(0), 2U); + +  SymbolContext sc; +  auto type_sp = +      ast_parser.ParseTypeFromDWARF(sc, type_die, /*type_is_new_ptr=*/nullptr); +  ASSERT_NE(type_sp, nullptr); + +  EXPECT_EQ(llvm::expectedToOptional(type_sp->GetByteSize(nullptr)).value_or(0), +            1U); +} | 
