Beispiel #1
0
lldb::UnwindAssemblySP
FuncUnwinders::GetUnwindAssemblyProfiler(Target &target) {
  UnwindAssemblySP assembly_profiler_sp;
  ArchSpec arch;
  if (m_unwind_table.GetArchitecture(arch)) {
    arch.MergeFrom(target.GetArchitecture());
    assembly_profiler_sp = UnwindAssembly::FindPlugin(arch);
  }
  return assembly_profiler_sp;
}
Beispiel #2
0
TEST(ArchSpecTest, MergeFrom) {
  {
    ArchSpec A;
    ArchSpec B("x86_64-pc-linux");

    EXPECT_FALSE(A.IsValid());
    ASSERT_TRUE(B.IsValid());
    EXPECT_EQ(llvm::Triple::ArchType::x86_64, B.GetTriple().getArch());
    EXPECT_EQ(llvm::Triple::VendorType::PC, B.GetTriple().getVendor());
    EXPECT_EQ(llvm::Triple::OSType::Linux, B.GetTriple().getOS());
    EXPECT_EQ(ArchSpec::eCore_x86_64_x86_64, B.GetCore());

    A.MergeFrom(B);
    ASSERT_TRUE(A.IsValid());
    EXPECT_EQ(llvm::Triple::ArchType::x86_64, A.GetTriple().getArch());
    EXPECT_EQ(llvm::Triple::VendorType::PC, A.GetTriple().getVendor());
    EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS());
    EXPECT_EQ(ArchSpec::eCore_x86_64_x86_64, A.GetCore());
  }
  {
    ArchSpec A("aarch64");
    ArchSpec B("aarch64--linux-android");

    EXPECT_TRUE(A.IsValid());
    EXPECT_TRUE(B.IsValid());

    EXPECT_EQ(llvm::Triple::ArchType::aarch64, B.GetTriple().getArch());
    EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor,
              B.GetTriple().getVendor());
    EXPECT_EQ(llvm::Triple::OSType::Linux, B.GetTriple().getOS());
    EXPECT_EQ(llvm::Triple::EnvironmentType::Android,
              B.GetTriple().getEnvironment());

    A.MergeFrom(B);
    EXPECT_EQ(llvm::Triple::ArchType::aarch64, A.GetTriple().getArch());
    EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor,
              A.GetTriple().getVendor());
    EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS());
    EXPECT_EQ(llvm::Triple::EnvironmentType::Android,
              A.GetTriple().getEnvironment());
  }
}