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 { 24*c462048cSRaphael Isemann SubsystemRAII<HostInfoBase, PlatformMacOSX> subsystems; 2506e4f69bSAdrian Prantl }; 2606e4f69bSAdrian Prantl } // namespace 2706e4f69bSAdrian Prantl 2806e4f69bSAdrian Prantl TEST_F(XcodeSDKModuleTests,TestModuleGetXcodeSDK)2906e4f69bSAdrian PrantlTEST_F(XcodeSDKModuleTests, TestModuleGetXcodeSDK) { 3006e4f69bSAdrian Prantl const char *yamldata = R"( 31136d0674SJonas Devlieghere --- !ELF 32136d0674SJonas Devlieghere FileHeader: 33136d0674SJonas Devlieghere Class: ELFCLASS64 34136d0674SJonas Devlieghere Data: ELFDATA2LSB 35136d0674SJonas Devlieghere Type: ET_EXEC 36136d0674SJonas Devlieghere Machine: EM_386 37136d0674SJonas Devlieghere DWARF: 3806e4f69bSAdrian Prantl debug_str: 3906e4f69bSAdrian Prantl - MacOSX10.9.sdk 4006e4f69bSAdrian Prantl debug_abbrev: 41290e399fSXing GUO - Table: 4206e4f69bSAdrian Prantl - Code: 0x00000001 4306e4f69bSAdrian Prantl Tag: DW_TAG_compile_unit 4406e4f69bSAdrian Prantl Children: DW_CHILDREN_no 4506e4f69bSAdrian Prantl Attributes: 4606e4f69bSAdrian Prantl - Attribute: DW_AT_language 4706e4f69bSAdrian Prantl Form: DW_FORM_data2 4806e4f69bSAdrian Prantl - Attribute: DW_AT_APPLE_sdk 4906e4f69bSAdrian Prantl Form: DW_FORM_strp 5006e4f69bSAdrian Prantl debug_info: 511d01fc10SXing GUO - Version: 2 5206e4f69bSAdrian Prantl AddrSize: 8 5306e4f69bSAdrian Prantl Entries: 5406e4f69bSAdrian Prantl - AbbrCode: 0x00000001 5506e4f69bSAdrian Prantl Values: 5606e4f69bSAdrian Prantl - Value: 0x000000000000000C 5706e4f69bSAdrian Prantl - Value: 0x0000000000000000 5806e4f69bSAdrian Prantl - AbbrCode: 0x00000000 5906e4f69bSAdrian Prantl ... 6006e4f69bSAdrian Prantl )"; 6106e4f69bSAdrian Prantl 62136d0674SJonas Devlieghere YAMLModuleTester t(yamldata); 63136d0674SJonas Devlieghere DWARFUnit *dwarf_unit = t.GetDwarfUnit(); 64136d0674SJonas Devlieghere auto *dwarf_cu = llvm::cast<DWARFCompileUnit>(dwarf_unit); 65136d0674SJonas Devlieghere ASSERT_TRUE(static_cast<bool>(dwarf_cu)); 665935227eSAdrian Prantl SymbolFileDWARF &sym_file = dwarf_cu->GetSymbolFileDWARF(); 675935227eSAdrian Prantl CompUnitSP comp_unit = sym_file.GetCompileUnitAtIndex(0); 68136d0674SJonas Devlieghere ASSERT_TRUE(static_cast<bool>(comp_unit.get())); 6901fc85dcSAdrian Prantl ModuleSP module = t.GetModule(); 7001fc85dcSAdrian Prantl ASSERT_EQ(module->GetSourceMappingList().GetSize(), 0u); 715935227eSAdrian Prantl XcodeSDK sdk = sym_file.ParseXcodeSDK(*comp_unit); 7206e4f69bSAdrian Prantl ASSERT_EQ(sdk.GetType(), XcodeSDK::Type::MacOSX); 7301fc85dcSAdrian Prantl ASSERT_EQ(module->GetSourceMappingList().GetSize(), 1u); 7406e4f69bSAdrian Prantl } 7506e4f69bSAdrian Prantl #endif 76