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); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits