diff --git a/lld/ELF/Arch/PPC64.cpp b/lld/ELF/Arch/PPC64.cpp --- a/lld/ELF/Arch/PPC64.cpp +++ b/lld/ELF/Arch/PPC64.cpp @@ -973,14 +973,14 @@ uint32_t mask = 0x0000FFFC; checkInt(loc, val, 16, rel); checkAlignment(loc, val, 4, rel); - write32(loc, (read32(loc) & ~mask) | (val & mask)); + write32(loc, read32(loc) | (val & mask)); break; } case R_PPC64_REL24: { uint32_t mask = 0x03FFFFFC; checkInt(loc, val, 26, rel); checkAlignment(loc, val, 4, rel); - write32(loc, (read32(loc) & ~mask) | (val & mask)); + write32(loc, read32(loc) | (val & mask)); break; } case R_PPC64_DTPREL64: