[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