diff options
Diffstat (limited to 'lld/lib/ReaderWriter/MachO')
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/ReferenceKinds.cpp | 60 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/ReferenceKinds.h | 36 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/WriterMachO.cpp | 40 |
3 files changed, 68 insertions, 68 deletions
diff --git a/lld/lib/ReaderWriter/MachO/ReferenceKinds.cpp b/lld/lib/ReaderWriter/MachO/ReferenceKinds.cpp index 5d21a88ad5d..d2fb6177f4f 100644 --- a/lld/lib/ReaderWriter/MachO/ReferenceKinds.cpp +++ b/lld/lib/ReaderWriter/MachO/ReferenceKinds.cpp @@ -80,7 +80,7 @@ StringRef KindHandler_x86_64::kindToString(Reference::Kind kind) { return StringRef("invalid"); case none: return StringRef("none"); - case branch32: + case branch32: return StringRef("branch32"); case ripRel32: return StringRef("ripRel32"); @@ -123,23 +123,23 @@ bool KindHandler_x86_64::isCallSite(Kind kind) { bool KindHandler_x86_64::isPointer(Kind kind) { return (kind == pointer64); } - + bool KindHandler_x86_64::isLazyImmediate(Kind kind) { return (kind == lazyImmediate); } - + bool KindHandler_x86_64::isLazyTarget(Kind kind) { return (kind == lazyTarget); } - -void KindHandler_x86_64::applyFixup(Kind kind, uint64_t addend, - uint8_t *location, uint64_t fixupAddress, + +void KindHandler_x86_64::applyFixup(Kind kind, uint64_t addend, + uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress) { int32_t *loc32 = reinterpret_cast<int32_t*>(location); uint64_t* loc64 = reinterpret_cast<uint64_t*>(location); switch ( (Kinds)kind ) { - case branch32: + case branch32: case ripRel32: case gotLoadRipRel32: case gotUseRipRel32: @@ -158,7 +158,7 @@ void KindHandler_x86_64::applyFixup(Kind kind, uint64_t addend, case ripRel32_4: *loc32 = (targetAddress - (fixupAddress+8)) + addend; break; - case pointerRel32: + case pointerRel32: *loc32 = (targetAddress - fixupAddress) + addend; break; case gotLoadRipRel32NowLea: @@ -199,7 +199,7 @@ Reference::Kind KindHandler_x86::stringToKind(StringRef str) { .Case("lazyTarget", lazyTarget) .Case("lazyImmediate", lazyImmediate) .Default(invalid); - + llvm_unreachable("invalid x86 Reference kind"); } @@ -209,7 +209,7 @@ StringRef KindHandler_x86::kindToString(Reference::Kind kind) { return StringRef("invalid"); case none: return StringRef("none"); - case branch32: + case branch32: return StringRef("branch32"); case abs32: return StringRef("abs32"); @@ -237,22 +237,22 @@ bool KindHandler_x86::isPointer(Kind kind) { return (kind == pointer32); } - + bool KindHandler_x86::isLazyImmediate(Kind kind) { return (kind == lazyImmediate); } - + bool KindHandler_x86::isLazyTarget(Kind kind) { return (kind == lazyTarget); } - -void KindHandler_x86::applyFixup(Kind kind, uint64_t addend, uint8_t *location, + +void KindHandler_x86::applyFixup(Kind kind, uint64_t addend, uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress) { int32_t *loc32 = reinterpret_cast<int32_t*>(location); switch ( (Kinds)kind ) { - case branch32: + case branch32: *loc32 = (targetAddress - (fixupAddress+4)) + addend; break; case pointer32: @@ -308,9 +308,9 @@ StringRef KindHandler_arm::kindToString(Reference::Kind kind) { return StringRef("invalid"); case none: return StringRef("none"); - case thumbBranch22: + case thumbBranch22: return StringRef("thumbBranch22"); - case armBranch24: + case armBranch24: return StringRef("armBranch24"); case thumbAbsLow16: return StringRef("thumbAbsLow16"); @@ -342,43 +342,43 @@ bool KindHandler_arm::isPointer(Kind kind) { return (kind == pointer32); } - + bool KindHandler_arm::isLazyImmediate(Kind kind) { return (kind == lazyImmediate); } - + bool KindHandler_arm::isLazyTarget(Kind kind) { return (kind == lazyTarget); } - -void KindHandler_arm::applyFixup(Kind kind, uint64_t addend, uint8_t *location, + +void KindHandler_arm::applyFixup(Kind kind, uint64_t addend, uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress) { //int32_t *loc32 = reinterpret_cast<int32_t*>(location); switch ( (Kinds)kind ) { - case thumbBranch22: + case thumbBranch22: // FIXME break; - case armBranch24: + case armBranch24: // FIXME break; - case thumbAbsLow16: + case thumbAbsLow16: // FIXME break; - case thumbAbsHigh16: + case thumbAbsHigh16: // FIXME break; - case thumbPcRelLow16: + case thumbPcRelLow16: // FIXME break; - case thumbPcRelHigh16: + case thumbPcRelHigh16: // FIXME break; - case abs32: + case abs32: // FIXME break; - case pointer32: + case pointer32: // FIXME break; case none: @@ -392,7 +392,7 @@ void KindHandler_arm::applyFixup(Kind kind, uint64_t addend, uint8_t *location, break; } } - + } // namespace mach_o } // namespace lld diff --git a/lld/lib/ReaderWriter/MachO/ReferenceKinds.h b/lld/lib/ReaderWriter/MachO/ReferenceKinds.h index fcae76e81e7..1fce85ff4e9 100644 --- a/lld/lib/ReaderWriter/MachO/ReferenceKinds.h +++ b/lld/lib/ReaderWriter/MachO/ReferenceKinds.h @@ -28,18 +28,18 @@ namespace mach_o { class KindHandler { public: typedef Reference::Kind Kind; - + static KindHandler *makeHandler(llvm::Triple::ArchType arch); virtual ~KindHandler(); virtual Kind stringToKind(StringRef str) = 0; virtual StringRef kindToString(Kind) = 0; virtual bool isCallSite(Kind) = 0; - virtual bool isPointer(Kind) = 0; - virtual bool isLazyImmediate(Kind) = 0; - virtual bool isLazyTarget(Kind) = 0; - virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, + virtual bool isPointer(Kind) = 0; + virtual bool isLazyImmediate(Kind) = 0; + virtual bool isLazyTarget(Kind) = 0; + virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress) = 0; - + protected: KindHandler(); }; @@ -73,10 +73,10 @@ public: virtual Kind stringToKind(StringRef str); virtual StringRef kindToString(Kind); virtual bool isCallSite(Kind); - virtual bool isPointer(Kind); - virtual bool isLazyImmediate(Kind); - virtual bool isLazyTarget(Kind); - virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, + virtual bool isPointer(Kind); + virtual bool isLazyImmediate(Kind); + virtual bool isLazyTarget(Kind); + virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress); }; @@ -101,10 +101,10 @@ public: virtual Kind stringToKind(StringRef str); virtual StringRef kindToString(Kind); virtual bool isCallSite(Kind); - virtual bool isPointer(Kind); - virtual bool isLazyImmediate(Kind); - virtual bool isLazyTarget(Kind); - virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, + virtual bool isPointer(Kind); + virtual bool isLazyImmediate(Kind); + virtual bool isLazyTarget(Kind); + virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress); }; @@ -131,10 +131,10 @@ public: virtual Kind stringToKind(StringRef str); virtual StringRef kindToString(Kind); virtual bool isCallSite(Kind); - virtual bool isPointer(Kind); - virtual bool isLazyImmediate(Kind); - virtual bool isLazyTarget(Kind); - virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, + virtual bool isPointer(Kind); + virtual bool isLazyImmediate(Kind); + virtual bool isLazyTarget(Kind); + virtual void applyFixup(Kind kind, uint64_t addend, uint8_t *location, uint64_t fixupAddress, uint64_t targetAddress); }; diff --git a/lld/lib/ReaderWriter/MachO/WriterMachO.cpp b/lld/lib/ReaderWriter/MachO/WriterMachO.cpp index f4aee16b401..b0e5fd290e4 100644 --- a/lld/lib/ReaderWriter/MachO/WriterMachO.cpp +++ b/lld/lib/ReaderWriter/MachO/WriterMachO.cpp @@ -353,7 +353,7 @@ public: KindHandler *kindHandler() { return _referenceKindHandler; } bool use64BitMachO() const; - + private: friend class LoadCommandsChunk; friend class LazyBindingInfoChunk; @@ -440,7 +440,7 @@ void Chunk::assignFileOffset(uint64_t &curOffset, uint64_t &curAddress) { curAddress = _address + _size; } - DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << " fileOffset=" << llvm::format("0x%08X", _fileOffset) << " address=" @@ -580,7 +580,7 @@ void SectionChunk::write(uint8_t *chunkBuffer) { if ( ref->target() != nullptr ) targetAddress = _writer.addressOfAtom(ref->target()); uint64_t fixupAddress = _writer.addressOfAtom(atomInfo.atom) + offset; - _writer.kindHandler()->applyFixup(ref->kind(), ref->addend(), + _writer.kindHandler()->applyFixup(ref->kind(), ref->addend(), &atomContent[offset], fixupAddress, targetAddress); } } @@ -601,7 +601,7 @@ MachHeaderChunk::MachHeaderChunk(const MachOTargetInfo &ti, const File &file) { _mh.sizeofcmds = 0; _mh.flags = 0; _mh.reserved = 0; - + _size = _mh.size(); } @@ -673,7 +673,7 @@ LoadCommandsChunk::LoadCommandsChunk(MachHeaderChunk &mh, MachOWriter& writer) : _mh(mh), _targetInfo(ti), _writer(writer), _linkEditSegment(nullptr), _symbolTableLoadCommand(nullptr), - _entryPointLoadCommand(nullptr), _threadLoadCommand(nullptr), + _entryPointLoadCommand(nullptr), _threadLoadCommand(nullptr), _dyldInfoLoadCommand(nullptr) { } @@ -687,7 +687,7 @@ void LoadCommandsChunk::write(uint8_t *chunkBuffer) { for ( load_command* lc : _loadCmds ) { assert( ((uintptr_t)p & 0x3) == 0); lc->copyTo(p); - p += lc->cmdsize; + p += lc->cmdsize; } } @@ -808,11 +808,11 @@ void LoadCommandsChunk::computeSize(const lld::File &file) { _threadLoadCommand = new thread_command(_targetInfo.getCPUType(), is64); this->addLoadCommand(_threadLoadCommand); } - + // Compute total size. _size = _mh.loadCommandsSize(); } - + void LoadCommandsChunk::updateLoadCommandContent(const lld::File &file) { // Update segment/section information in segment load commands @@ -886,7 +886,7 @@ void LoadCommandsChunk::updateLoadCommandContent(const lld::File &file) { assert(startAtom != nullptr); _threadLoadCommand->setPC(_writer.addressOfAtom(startAtom)); } - + } @@ -1092,7 +1092,7 @@ const char* LazyBindingInfoChunk::info() { } // -// Called when lazy-binding-info is being laid out in __LINKEDIT. We need +// Called when lazy-binding-info is being laid out in __LINKEDIT. We need // to find the helper atom which contains the instruction which loads an // immediate value that is the offset into the lazy-binding-info, and set // that immediate value to be the offset parameter. @@ -1390,7 +1390,7 @@ void MachOWriter::addLinkEditChunk(LinkEditChunk *chunk) { void MachOWriter::buildAtomToAddressMap() { - DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << "assign atom addresses:\n"); const bool lookForEntry = _targetInfo.getLinkerOptions()._outputKind == OutputKind::StaticExecutable || @@ -1405,7 +1405,7 @@ void MachOWriter::buildAtomToAddressMap() { && info.atom->name() == _targetInfo.getEntry()) { _entryAtom = info.atom; } - DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << " address=" << llvm::format("0x%016X", _atomToAddress[info.atom]) << " atom=" << info.atom @@ -1422,7 +1422,7 @@ void MachOWriter::buildAtomToAddressMap() { //} void MachOWriter::assignFileOffsets() { - DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << "assign file offsets:\n"); uint64_t offset = 0; uint64_t address = _targetInfo.getPageZeroSize(); @@ -1437,7 +1437,7 @@ void MachOWriter::assignFileOffsets() { } void MachOWriter::assignLinkEditFileOffsets() { - DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << "assign LINKEDIT file offsets:\n"); uint64_t offset = _linkEditStartOffset; uint64_t address = _linkEditStartAddress; @@ -1498,19 +1498,19 @@ bool MachOWriter::use64BitMachO() const { error_code MachOWriter::writeFile(const lld::File &file, StringRef path) { this->build(file); -// FIXME: re-enable when FileOutputBuffer is in LLVMSupport.a +// FIXME: re-enable when FileOutputBuffer is in LLVMSupport.a uint64_t totalSize = _chunks.back()->fileOffset() + _chunks.back()->size(); OwningPtr<llvm::FileOutputBuffer> buffer; - error_code ec = llvm::FileOutputBuffer::create(path, + error_code ec = llvm::FileOutputBuffer::create(path, totalSize, buffer, - llvm::FileOutputBuffer::F_executable); + llvm::FileOutputBuffer::F_executable); if ( ec ) return ec; - + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << "writeFile:\n"); for ( Chunk *chunk : _chunks ) { - DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() + DEBUG_WITH_TYPE("WriterMachO-layout", llvm::dbgs() << " fileOffset=" << llvm::format("0x%08X", chunk->fileOffset()) << " chunk=" @@ -1518,7 +1518,7 @@ error_code MachOWriter::writeFile(const lld::File &file, StringRef path) { << "\n"); chunk->write(buffer->getBufferStart()+chunk->fileOffset()); } - + return buffer->commit(); return error_code::success(); } |

