106e4f69bSAdrian Prantl //===-- XcodeSDKModuleTests.cpp -------------------------------------------===// 206e4f69bSAdrian Prantl // 306e4f69bSAdrian Prantl // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 406e4f69bSAdrian Prantl // See https://llvm.org/LICENSE.txt for license information. 506e4f69bSAdrian Prantl // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 606e4f69bSAdrian Prantl // 706e4f69bSAdrian Prantl //===----------------------------------------------------------------------===// 806e4f69bSAdrian Prantl 9a0919ac0SAdrian Prantl #include "Plugins/Platform/MacOSX/PlatformMacOSX.h" 1006e4f69bSAdrian Prantl #include "Plugins/SymbolFile/DWARF/DWARFCompileUnit.h" 1106e4f69bSAdrian Prantl #include "Plugins/SymbolFile/DWARF/DWARFDIE.h" 12a0919ac0SAdrian Prantl #include "Plugins/TypeSystem/Clang/TypeSystemClang.h" 1306e4f69bSAdrian Prantl #include "TestingSupport/Symbol/YAMLModuleTester.h" 14a0919ac0SAdrian Prantl #include "lldb/Core/PluginManager.h" 1506e4f69bSAdrian Prantl #include "gmock/gmock.h" 1606e4f69bSAdrian Prantl #include "gtest/gtest.h" 1706e4f69bSAdrian Prantl 1806e4f69bSAdrian Prantl using namespace lldb; 1906e4f69bSAdrian Prantl using namespace lldb_private; 2006e4f69bSAdrian Prantl 21a0919ac0SAdrian Prantl #ifdef __APPLE__ 2206e4f69bSAdrian Prantl namespace { 2306e4f69bSAdrian Prantl class XcodeSDKModuleTests : public testing::Test { 24a0919ac0SAdrian Prantl void SetUp() override { 25a0919ac0SAdrian Prantl HostInfoBase::Initialize(); 26a0919ac0SAdrian Prantl PlatformMacOSX::Initialize(); 27a0919ac0SAdrian Prantl } 28a0919ac0SAdrian Prantl void TearDown() override { 29a0919ac0SAdrian Prantl PlatformMacOSX::Terminate(); 30a0919ac0SAdrian Prantl HostInfoBase::Terminate(); 31a0919ac0SAdrian Prantl } 3206e4f69bSAdrian Prantl }; 3306e4f69bSAdrian Prantl } // namespace 3406e4f69bSAdrian Prantl 3506e4f69bSAdrian Prantl 3606e4f69bSAdrian Prantl TEST_F(XcodeSDKModuleTests, TestModuleGetXcodeSDK) { 3706e4f69bSAdrian Prantl const char *yamldata = R"( 38*136d0674SJonas Devlieghere --- !ELF 39*136d0674SJonas Devlieghere FileHeader: 40*136d0674SJonas Devlieghere Class: ELFCLASS64 41*136d0674SJonas Devlieghere Data: ELFDATA2LSB 42*136d0674SJonas Devlieghere Type: ET_EXEC 43*136d0674SJonas Devlieghere Machine: EM_386 44*136d0674SJonas Devlieghere DWARF: 4506e4f69bSAdrian Prantl debug_str: 4606e4f69bSAdrian Prantl - MacOSX10.9.sdk 4706e4f69bSAdrian Prantl debug_abbrev: 48290e399fSXing GUO - Table: 4906e4f69bSAdrian Prantl - Code: 0x00000001 5006e4f69bSAdrian Prantl Tag: DW_TAG_compile_unit 5106e4f69bSAdrian Prantl Children: DW_CHILDREN_no 5206e4f69bSAdrian Prantl Attributes: 5306e4f69bSAdrian Prantl - Attribute: DW_AT_language 5406e4f69bSAdrian Prantl Form: DW_FORM_data2 5506e4f69bSAdrian Prantl - Attribute: DW_AT_APPLE_sdk 5606e4f69bSAdrian Prantl Form: DW_FORM_strp 5706e4f69bSAdrian Prantl debug_info: 581d01fc10SXing GUO - Version: 2 5906e4f69bSAdrian Prantl AddrSize: 8 6006e4f69bSAdrian Prantl Entries: 6106e4f69bSAdrian Prantl - AbbrCode: 0x00000001 6206e4f69bSAdrian Prantl Values: 6306e4f69bSAdrian Prantl - Value: 0x000000000000000C 6406e4f69bSAdrian Prantl - Value: 0x0000000000000000 6506e4f69bSAdrian Prantl - AbbrCode: 0x00000000 6606e4f69bSAdrian Prantl ... 6706e4f69bSAdrian Prantl )"; 6806e4f69bSAdrian Prantl 69*136d0674SJonas Devlieghere YAMLModuleTester t(yamldata); 70*136d0674SJonas Devlieghere DWARFUnit *dwarf_unit = t.GetDwarfUnit(); 71*136d0674SJonas Devlieghere auto *dwarf_cu = llvm::cast<DWARFCompileUnit>(dwarf_unit); 72*136d0674SJonas Devlieghere ASSERT_TRUE(static_cast<bool>(dwarf_cu)); 735935227eSAdrian Prantl SymbolFileDWARF &sym_file = dwarf_cu->GetSymbolFileDWARF(); 745935227eSAdrian Prantl CompUnitSP comp_unit = sym_file.GetCompileUnitAtIndex(0); 75*136d0674SJonas Devlieghere ASSERT_TRUE(static_cast<bool>(comp_unit.get())); 7601fc85dcSAdrian Prantl ModuleSP module = t.GetModule(); 7701fc85dcSAdrian Prantl ASSERT_EQ(module->GetSourceMappingList().GetSize(), 0u); 785935227eSAdrian Prantl XcodeSDK sdk = sym_file.ParseXcodeSDK(*comp_unit); 7906e4f69bSAdrian Prantl ASSERT_EQ(sdk.GetType(), XcodeSDK::Type::MacOSX); 8001fc85dcSAdrian Prantl ASSERT_EQ(module->GetSourceMappingList().GetSize(), 1u); 8106e4f69bSAdrian Prantl } 8206e4f69bSAdrian Prantl #endif 83