diff options
author | Rui Ueyama <ruiu@google.com> | 2014-09-11 23:19:52 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2014-09-11 23:19:52 +0000 |
commit | 75f1fd334c5eebae678a6f0a0bdef88c639455c7 (patch) | |
tree | 6ab000fb254e12c8d9bb8476f6417d595233d7f6 | |
parent | 13460a59fd354beff0aee560bb465654851cbe17 (diff) | |
download | bcm5719-llvm-75f1fd334c5eebae678a6f0a0bdef88c639455c7.tar.gz bcm5719-llvm-75f1fd334c5eebae678a6f0a0bdef88c639455c7.zip |
[PECOFF] Do r217639 leftover.
llvm-svn: 217645
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp index bcc93e3e799..c3f0a71b1e9 100644 --- a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp @@ -518,34 +518,34 @@ void AtomChunk::applyRelocations32(uint8_t *buffer, uint64_t targetAddr = atomRva[ref->target()]; // Also account for whatever offset is already stored at the relocation // site. - targetAddr += *relocSite32; switch (ref->kindValue()) { case llvm::COFF::IMAGE_REL_I386_ABSOLUTE: // This relocation is no-op. break; case llvm::COFF::IMAGE_REL_I386_DIR32: // Set target's 32-bit VA. - *relocSite32 = targetAddr + imageBaseAddress; + *relocSite32 += targetAddr + imageBaseAddress; break; case llvm::COFF::IMAGE_REL_I386_DIR32NB: // Set target's 32-bit RVA. - *relocSite32 = targetAddr; + *relocSite32 += targetAddr; break; case llvm::COFF::IMAGE_REL_I386_REL32: { // Set 32-bit relative address of the target. This relocation is // usually used for relative branch or call instruction. uint32_t disp = atomRva[atom] + ref->offsetInAtom() + 4; - *relocSite32 = targetAddr - disp; + *relocSite32 += targetAddr - disp; break; } case llvm::COFF::IMAGE_REL_I386_SECTION: // The 16-bit section index that contains the target symbol. - *relocSite16 = getSectionIndex(targetAddr, sectionRva); + *relocSite16 += getSectionIndex(targetAddr, sectionRva); break; case llvm::COFF::IMAGE_REL_I386_SECREL: // The 32-bit relative address from the beginning of the section that // contains the target symbol. - *relocSite32 = targetAddr - getSectionStartAddr(targetAddr, sectionRva); + *relocSite32 += + targetAddr - getSectionStartAddr(targetAddr, sectionRva); break; default: llvm_unreachable("Unsupported relocation kind"); @@ -573,13 +573,13 @@ void AtomChunk::applyRelocations64(uint8_t *buffer, switch (ref->kindValue()) { case llvm::COFF::IMAGE_REL_AMD64_ADDR64: - *relocSite64 = *relocSite64 + targetAddr + imageBase; + *relocSite64 += targetAddr + imageBase; break; case llvm::COFF::IMAGE_REL_AMD64_ADDR32: - *relocSite32 = *relocSite32 + targetAddr + imageBase; + *relocSite32 += targetAddr + imageBase; break; case llvm::COFF::IMAGE_REL_AMD64_ADDR32NB: - *relocSite32 = *relocSite32 + targetAddr; + *relocSite32 += targetAddr; break; case llvm::COFF::IMAGE_REL_AMD64_REL32: *relocSite32 += targetAddr - atomRva[atom] - ref->offsetInAtom() - 4; |