[llvm-branch-commits] [lld] release/21.x: [ELF][Hexagon] Fix host endianness assumption (PR #151886)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Aug 3 13:37:13 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lld
Author: None (llvmbot)
<details>
<summary>Changes</summary>
Backport b03d1e1e2e8e4b0b4b9e035b7ad9fb86dccefb93 de15d365743e16848a9d15fc32ae6ab98d399ec2 723b40a8d92f76fc913ef21061fc3d74e8c47441
Requested by: @<!-- -->jrtc27
---
Full diff: https://github.com/llvm/llvm-project/pull/151886.diff
1 Files Affected:
- (modified) lld/ELF/Relocations.cpp (+3-4)
``````````diff
diff --git a/lld/ELF/Relocations.cpp b/lld/ELF/Relocations.cpp
index 2ee308a2d1b3c..608cdd0d26660 100644
--- a/lld/ELF/Relocations.cpp
+++ b/lld/ELF/Relocations.cpp
@@ -2153,15 +2153,14 @@ static int getHexagonPacketOffset(const InputSection &isec,
for (unsigned i = 0;; i++) {
if (i == 3 || rel.offset < (i + 1) * 4)
return i * 4;
- uint32_t instWord = 0;
- const ArrayRef<uint8_t> instWordContents =
- data.drop_front(rel.offset - (i + 1) * 4);
- memcpy(&instWord, instWordContents.data(), sizeof(instWord));
+ uint32_t instWord =
+ read32(isec.getCtx(), data.data() + (rel.offset - (i + 1) * 4));
if (((instWord & HEXAGON_MASK_END_PACKET) == HEXAGON_END_OF_PACKET) ||
((instWord & HEXAGON_MASK_END_PACKET) == HEXAGON_END_OF_DUPLEX))
return i * 4;
}
}
+
static int64_t getPCBias(Ctx &ctx, const InputSection &isec,
const Relocation &rel) {
if (ctx.arg.emachine == EM_ARM) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/151886
More information about the llvm-branch-commits
mailing list