[llvm] [JITLink][AArch32] Add dynamic lookup for relocation fixup infos (PR #71649)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 8 02:29:56 PST 2023
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/71649 at github.com>
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff a141a9fa9706e939415a929a46b6f2f77cd56c55 f94662f6412e2ba3debd33aa04f2b63b277d5dbc -- llvm/include/llvm/ExecutionEngine/JITLink/aarch32.h llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp llvm/lib/ExecutionEngine/JITLink/aarch32.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/include/llvm/ExecutionEngine/JITLink/aarch32.h b/llvm/include/llvm/ExecutionEngine/JITLink/aarch32.h
index 95782e9bc6f1..a69df7ceab7d 100644
--- a/llvm/include/llvm/ExecutionEngine/JITLink/aarch32.h
+++ b/llvm/include/llvm/ExecutionEngine/JITLink/aarch32.h
@@ -177,7 +177,8 @@ template <EdgeKind_aarch32 Kind> struct FixupInfoArm : public FixupInfoBaseArm {
bool checkOpcode(uint32_t Wd) const override;
};
-template <EdgeKind_aarch32 Kind> struct FixupInfoThumb : public FixupInfoBaseThumb {
+template <EdgeKind_aarch32 Kind>
+struct FixupInfoThumb : public FixupInfoBaseThumb {
bool checkOpcode(uint16_t Hi, uint16_t Lo) const override;
};
@@ -204,7 +205,8 @@ struct FixupInfoArmBranch : public FixupInfoArm<Kind> {
};
} // namespace
-template <> struct FixupInfo<Arm_Jump24> : public FixupInfoArmBranch<Arm_Jump24> {
+template <>
+struct FixupInfo<Arm_Jump24> : public FixupInfoArmBranch<Arm_Jump24> {
static constexpr uint32_t OpcodeMask = 0x0f000000;
};
@@ -225,15 +227,18 @@ struct FixupInfoArmMov : public FixupInfoArm<Kind> {
};
} // namespace
-template <> struct FixupInfo<Arm_MovtAbs> : public FixupInfoArmMov<Arm_MovtAbs> {
+template <>
+struct FixupInfo<Arm_MovtAbs> : public FixupInfoArmMov<Arm_MovtAbs> {
static constexpr uint32_t Opcode = 0x03400000;
};
-template <> struct FixupInfo<Arm_MovwAbsNC> : public FixupInfoArmMov<Arm_MovwAbsNC> {
+template <>
+struct FixupInfo<Arm_MovwAbsNC> : public FixupInfoArmMov<Arm_MovwAbsNC> {
static constexpr uint32_t Opcode = 0x03000000;
};
-template <> struct FixupInfo<Thumb_Jump24> : public FixupInfoThumb<Thumb_Jump24> {
+template <>
+struct FixupInfo<Thumb_Jump24> : public FixupInfoThumb<Thumb_Jump24> {
static constexpr HalfWords Opcode{0xf000, 0x8000};
static constexpr HalfWords OpcodeMask{0xf800, 0x8000};
static constexpr HalfWords ImmMask{0x07ff, 0x2fff};
@@ -272,7 +277,8 @@ struct FixupInfo<Thumb_MovwAbsNC> : public FixupInfoThumbMov<Thumb_MovwAbsNC> {
};
template <>
-struct FixupInfo<Thumb_MovwPrelNC> : public FixupInfoThumbMov<Thumb_MovwPrelNC> {
+struct FixupInfo<Thumb_MovwPrelNC>
+ : public FixupInfoThumbMov<Thumb_MovwPrelNC> {
static constexpr HalfWords Opcode{0xf240, 0x0000};
};
diff --git a/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp b/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp
index 303dac19da2b..cfeac6991431 100644
--- a/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp
@@ -254,8 +254,10 @@ static auto &getFixupInfoTableArm() {
}
static auto &getFixupInfoTableThumb() {
- static constexpr size_t Items = LastThumbRelocation - FirstThumbRelocation + 1;
- static std::array<std::unique_ptr<FixupInfoBaseThumb>, Items> FixupInfoTableThumb;
+ static constexpr size_t Items =
+ LastThumbRelocation - FirstThumbRelocation + 1;
+ static std::array<std::unique_ptr<FixupInfoBaseThumb>, Items>
+ FixupInfoTableThumb;
return FixupInfoTableThumb;
}
@@ -271,8 +273,10 @@ void populateFixupInfos(TableT &Table, size_t Idx = 0) {
void populateFixupInfos() {
static std::once_flag Flag;
std::call_once(Flag, []() {
- populateFixupInfos<FirstArmRelocation, LastArmRelocation>(getFixupInfoTableArm());
- populateFixupInfos<FirstThumbRelocation, LastThumbRelocation>(getFixupInfoTableThumb());
+ populateFixupInfos<FirstArmRelocation, LastArmRelocation>(
+ getFixupInfoTableArm());
+ populateFixupInfos<FirstThumbRelocation, LastThumbRelocation>(
+ getFixupInfoTableThumb());
});
}
@@ -289,7 +293,8 @@ static bool checkOpcode(const ThumbRelocation &R, Edge::Kind Kind) {
"Edge kind is no Thumb relocation");
assert(getFixupInfoTableThumb().at(Kind - FirstThumbRelocation) != nullptr &&
"Call populateFixupInfos() before dynamic access");
- return getFixupInfoTableThumb()[Kind - FirstThumbRelocation]->checkOpcode(R.Hi, R.Lo);
+ return getFixupInfoTableThumb()[Kind - FirstThumbRelocation]->checkOpcode(
+ R.Hi, R.Lo);
}
template <EdgeKind_aarch32 Kind>
@@ -360,7 +365,7 @@ Expected<int64_t> readAddendArm(LinkGraph &G, Block &B, const Edge &E) {
ArmRelocation R(B.getContent().data() + E.getOffset());
Edge::Kind Kind = E.getKind();
if (!checkOpcode(R, Kind))
- return makeUnexpectedOpcodeError(G, R, Kind);
+ return makeUnexpectedOpcodeError(G, R, Kind);
switch (Kind) {
case Arm_Call:
@@ -384,7 +389,7 @@ Expected<int64_t> readAddendThumb(LinkGraph &G, Block &B, const Edge &E,
ThumbRelocation R(B.getContent().data() + E.getOffset());
Edge::Kind Kind = E.getKind();
if (!checkOpcode(R, Kind))
- return makeUnexpectedOpcodeError(G, R, Kind);
+ return makeUnexpectedOpcodeError(G, R, Kind);
switch (Kind) {
case Thumb_Call:
@@ -462,7 +467,7 @@ Error applyFixupArm(LinkGraph &G, Block &B, const Edge &E) {
WritableArmRelocation R(B.getAlreadyMutableContent().data() + E.getOffset());
Edge::Kind Kind = E.getKind();
if (!checkOpcode(R, Kind))
- return makeUnexpectedOpcodeError(G, R, Kind);
+ return makeUnexpectedOpcodeError(G, R, Kind);
uint64_t FixupAddress = (B.getAddress() + E.getOffset()).getValue();
int64_t Addend = E.getAddend();
@@ -538,7 +543,7 @@ Error applyFixupThumb(LinkGraph &G, Block &B, const Edge &E,
E.getOffset());
Edge::Kind Kind = E.getKind();
if (!checkOpcode(R, Kind))
- return makeUnexpectedOpcodeError(G, R, Kind);
+ return makeUnexpectedOpcodeError(G, R, Kind);
uint64_t FixupAddress = (B.getAddress() + E.getOffset()).getValue();
int64_t Addend = E.getAddend();
``````````
</details>
https://github.com/llvm/llvm-project/pull/71649
More information about the llvm-commits
mailing list