diff options
author | esmeyi <esme.yi@ibm.com> | 2022-02-28 04:59:46 -0500 |
---|---|---|
committer | esmeyi <esme.yi@ibm.com> | 2022-02-28 04:59:46 -0500 |
commit | 61835d19a848ecd3530d9b86deb6b15f336ae6d6 (patch) | |
tree | 6151f961164fd6029ba14a5115df3b2d9ad749f8 /llvm/lib/Object/XCOFFObjectFile.cpp | |
parent | d5ea3b2f33861c3ec4abae384e3090c47211fa6d (diff) | |
download | llvm-61835d19a848ecd3530d9b86deb6b15f336ae6d6.zip llvm-61835d19a848ecd3530d9b86deb6b15f336ae6d6.tar.gz llvm-61835d19a848ecd3530d9b86deb6b15f336ae6d6.tar.bz2 |
[llvm-objcopy] Initial XCOFF32 support.
Summary: This is an initial implementation of lvm-objcopy for XCOFF32.
Currently only supports simple copying, op-passthrough to follow.
Reviewed By: jhenderson, shchenz
Differential Revision: https://reviews.llvm.org/D97656
Diffstat (limited to 'llvm/lib/Object/XCOFFObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/XCOFFObjectFile.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp index d9ecb0a..5e699e9 100644 --- a/llvm/lib/Object/XCOFFObjectFile.cpp +++ b/llvm/lib/Object/XCOFFObjectFile.cpp @@ -709,6 +709,19 @@ bool XCOFFObjectFile::is64Bit() const { return Binary::ID_XCOFF64 == getType(); } +Expected<StringRef> XCOFFObjectFile::getRawData(const char *Start, + uint64_t Size, + StringRef Name) const { + uintptr_t StartPtr = reinterpret_cast<uintptr_t>(Start); + // TODO: this path is untested. + if (Error E = Binary::checkOffset(Data, StartPtr, Size)) + return createError(toString(std::move(E)) + ": " + Name.data() + + " data with offset 0x" + Twine::utohexstr(StartPtr) + + " and size 0x" + Twine::utohexstr(Size) + + " goes past the end of the file"); + return StringRef(Start, Size); +} + uint16_t XCOFFObjectFile::getMagic() const { return is64Bit() ? fileHeader64()->Magic : fileHeader32()->Magic; } |