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