From: Bill Wendling Date: Tue, 7 Dec 2010 23:11:00 +0000 (+0000) Subject: Cleanup in the Darwin end. No functionality change. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d832fa053b86f42a5bc1e55e979b61c1115a8053;p=oota-llvm.git Cleanup in the Darwin end. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121198 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/ARMAsmBackend.cpp b/lib/Target/ARM/ARMAsmBackend.cpp index 81bc8f18d0f..96a5548134b 100644 --- a/lib/Target/ARM/ARMAsmBackend.cpp +++ b/lib/Target/ARM/ARMAsmBackend.cpp @@ -165,9 +165,8 @@ public: void ELFARMAsmBackend::ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize, uint64_t Value) const { unsigned NumBytes = 4; // FIXME: 2 for Thumb - Value = adjustFixupValue(Fixup.getKind(), Value); - if (!Value) return; // No need to encode nothing. + if (!Value) return; // Doesn't change encoding. unsigned Offset = Fixup.getOffset(); assert(Offset % NumBytes == 0 && "Offset mod NumBytes is nonzero!"); @@ -207,6 +206,7 @@ public: } }; +/// getFixupKindNumBytes - The number of bytes the fixup may change. static unsigned getFixupKindNumBytes(unsigned Kind) { switch (Kind) { default: @@ -227,13 +227,15 @@ void DarwinARMAsmBackend::ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize, uint64_t Value) const { unsigned NumBytes = getFixupKindNumBytes(Fixup.getKind()); Value = adjustFixupValue(Fixup.getKind(), Value); + if (!Value) return; // Doesn't change encoding. + + unsigned Offset = Fixup.getOffset(); + assert(Offset + NumBytes <= DataSize && "Invalid fixup offset!"); - assert(Fixup.getOffset() + NumBytes <= DataSize && - "Invalid fixup offset!"); // For each byte of the fragment that the fixup touches, mask in the // bits from the fixup value. for (unsigned i = 0; i != NumBytes; ++i) - Data[Fixup.getOffset() + i] |= uint8_t(Value >> (i * 8)); + Data[Offset + i] |= uint8_t((Value >> (i * 8)) & 0xff); } } // end anonymous namespace