The getMachODefaultTextSection and getMachODefaultRWDataSection functions return the "__TEXT,__text" and "__DATA,__data" sections respectively, creating empty sections if the default sections are not already present in the graph. These functions can be used by utilities that want to add code or data to these standard sections (e.g. these functions can be used to supply the section argument to the createAnonymousPointerJumpStub and createPointerJumpStubBlock functions in the various targets).
36 lines
1.3 KiB
C++
36 lines
1.3 KiB
C++
//===------ LinkGraphTests.cpp - Unit tests for core JITLink classes ------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "JITLinkTestUtils.h"
|
|
|
|
#include "llvm/ADT/STLExtras.h"
|
|
#include "llvm/ExecutionEngine/JITLink/JITLink.h"
|
|
#include "llvm/ExecutionEngine/JITLink/MachO.h"
|
|
|
|
#include "llvm/Testing/Support/Error.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
using namespace llvm;
|
|
using namespace llvm::jitlink;
|
|
|
|
TEST(MachOLinkGraphTest, GetStandardSections) {
|
|
// Check that LinkGraph construction works as expected.
|
|
LinkGraph G("foo", Triple("arm64-apple-darwin"), 8, llvm::endianness::little,
|
|
getGenericEdgeKindName);
|
|
|
|
auto &Data = getMachODefaultRWDataSection(G);
|
|
EXPECT_TRUE(Data.empty());
|
|
EXPECT_EQ(Data.getName(), orc::MachODataDataSectionName);
|
|
EXPECT_EQ(Data.getMemProt(), orc::MemProt::Read | orc::MemProt::Write);
|
|
|
|
auto &Text = getMachODefaultTextSection(G);
|
|
EXPECT_TRUE(Text.empty());
|
|
EXPECT_EQ(Text.getName(), orc::MachOTextTextSectionName);
|
|
EXPECT_EQ(Text.getMemProt(), orc::MemProt::Read | orc::MemProt::Exec);
|
|
}
|