1//===-- ABIAArch64Test.cpp ------------------------------------------------===//
2
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#include "Plugins/ABI/AArch64/ABIMacOSX_arm64.h"
11#include "Plugins/ABI/AArch64/ABISysV_arm64.h"
12#include "Utility/ARM64_DWARF_Registers.h"
13#include "Utility/ARM64_ehframe_Registers.h"
14#include "lldb/Target/DynamicRegisterInfo.h"
15#include "lldb/Utility/ArchSpec.h"
16#include "llvm/Support/ManagedStatic.h"
17#include "llvm/Support/TargetSelect.h"
18#include "gtest/gtest.h"
19#include <vector>
20
21using namespace lldb_private;
22using namespace lldb;
23
24class ABIAArch64TestFixture : public testing::TestWithParam<llvm::StringRef> {
25public:
26 static void SetUpTestCase();
27 static void TearDownTestCase();
28
29 // virtual void SetUp() override { }
30 // virtual void TearDown() override { }
31
32protected:
33};
34
35void ABIAArch64TestFixture::SetUpTestCase() {
36 LLVMInitializeAArch64TargetInfo();
37 LLVMInitializeAArch64TargetMC();
38 ABISysV_arm64::Initialize();
39 ABIMacOSX_arm64::Initialize();
40}
41
42void ABIAArch64TestFixture::TearDownTestCase() {
43 ABISysV_arm64::Terminate();
44 ABIMacOSX_arm64::Terminate();
45 llvm::llvm_shutdown();
46}
47
48TEST_P(ABIAArch64TestFixture, AugmentRegisterInfo) {
49 ABISP abi_sp = ABI::FindPlugin(process_sp: ProcessSP(), arch: ArchSpec(GetParam()));
50 ASSERT_TRUE(abi_sp);
51 using Register = DynamicRegisterInfo::Register;
52
53 Register pc;
54 pc.name = ConstString("pc");
55 pc.alt_name = ConstString();
56 pc.set_name = ConstString("GPR");
57 std::vector<Register> regs{pc};
58
59 abi_sp->AugmentRegisterInfo(regs);
60
61 ASSERT_EQ(regs.size(), 1U);
62 Register new_pc = regs[0];
63 EXPECT_EQ(new_pc.name, pc.name);
64 EXPECT_EQ(new_pc.set_name, pc.set_name);
65 EXPECT_EQ(new_pc.regnum_ehframe, arm64_ehframe::pc);
66 EXPECT_EQ(new_pc.regnum_dwarf, arm64_dwarf::pc);
67}
68
69INSTANTIATE_TEST_SUITE_P(ABIAArch64Tests, ABIAArch64TestFixture,
70 testing::Values("aarch64-pc-linux",
71 "arm64-apple-macosx"));
72

source code of lldb/unittests/ABI/AArch64/ABIAArch64Test.cpp