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 Prantl TEST_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