[llvm-branch-commits] [lld] edbe7fa - [lld][LoongArch] Fix handleUleb128

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Mar 16 18:28:50 PDT 2024


Author: Weining Lu
Date: 2024-03-16T18:28:00-07:00
New Revision: edbe7fa5fef93bb747cb58a589dc25901793774b

URL: https://github.com/llvm/llvm-project/commit/edbe7fa5fef93bb747cb58a589dc25901793774b
DIFF: https://github.com/llvm/llvm-project/commit/edbe7fa5fef93bb747cb58a589dc25901793774b.diff

LOG: [lld][LoongArch] Fix handleUleb128

(cherry picked from commit a41bcb3930534ef1525b4fc30e53e818b39e2b60)

Added: 
    

Modified: 
    lld/ELF/Arch/LoongArch.cpp

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Arch/LoongArch.cpp b/lld/ELF/Arch/LoongArch.cpp
index 8a6f6db68f2909..464f5dfb320ccc 100644
--- a/lld/ELF/Arch/LoongArch.cpp
+++ b/lld/ELF/Arch/LoongArch.cpp
@@ -159,8 +159,9 @@ static bool isJirl(uint32_t insn) {
 static void handleUleb128(uint8_t *loc, uint64_t val) {
   const uint32_t maxcount = 1 + 64 / 7;
   uint32_t count;
-  uint64_t orig = decodeULEB128(loc, &count);
-  if (count > maxcount)
+  const char *error = nullptr;
+  uint64_t orig = decodeULEB128(loc, &count, nullptr, &error);
+  if (count > maxcount || (count == maxcount && error))
     errorOrWarn(getErrorLocation(loc) + "extra space for uleb128");
   uint64_t mask = count < maxcount ? (1ULL << 7 * count) - 1 : -1ULL;
   encodeULEB128((orig + val) & mask, loc, count);


        


More information about the llvm-branch-commits mailing list