[lld] 73b659f - [lld-macho] Fix left shift of negative value UB
    Daniel Bertalan via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Jul  1 03:03:38 PDT 2022
    
    
  
Author: Daniel Bertalan
Date: 2022-07-01T12:00:16+02:00
New Revision: 73b659ff55ea50c7901012ca0b0bde23a83b208b
URL: https://github.com/llvm/llvm-project/commit/73b659ff55ea50c7901012ca0b0bde23a83b208b
DIFF: https://github.com/llvm/llvm-project/commit/73b659ff55ea50c7901012ca0b0bde23a83b208b.diff
LOG: [lld-macho] Fix left shift of negative value UB
I introduced this mistake in 573c7e6b3c79c7ce80a2221e000fab7dd20c0bb4.
Fixes the failure on this UBSan bot:
https://lab.llvm.org/buildbot/#/builders/5/builds/25537
Added: 
    
Modified: 
    lld/MachO/Arch/ARM64.cpp
Removed: 
    
################################################################################
diff  --git a/lld/MachO/Arch/ARM64.cpp b/lld/MachO/Arch/ARM64.cpp
index 93941f425bf3..7064df5793aa 100644
--- a/lld/MachO/Arch/ARM64.cpp
+++ b/lld/MachO/Arch/ARM64.cpp
@@ -264,7 +264,7 @@ static void writeAdr(void *loc, uint32_t dest, int32_t delta) {
 static void writeNop(void *loc) { write32le(loc, 0xd503201f); }
 
 static void writeLiteralLdr(void *loc, Ldr original, int32_t delta) {
-  uint32_t imm19 = (delta << 3) & 0x00ffffe0;
+  uint32_t imm19 = (delta & 0x001ffffc) << 3;
   uint32_t opcode = 0;
   switch (original.size) {
   case 4:
        
    
    
More information about the llvm-commits
mailing list