mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Teach llvm-nm to know about fat archives (aka MachOUniversal files
containing archives). First step as other tools will be updated next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208812 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include "llvm/Object/MachOUniversal.h"
|
||||
#include "llvm/Object/MachO.h"
|
||||
#include "llvm/Object/ObjectFile.h"
|
||||
#include "llvm/Object/Archive.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/Host.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
@@ -90,6 +91,25 @@ error_code MachOUniversalBinary::ObjectForArch::getAsObjectFile(
|
||||
return object_error::parse_failed;
|
||||
}
|
||||
|
||||
error_code MachOUniversalBinary::ObjectForArch::getAsArchive(
|
||||
std::unique_ptr<Archive> &Result) const {
|
||||
if (Parent) {
|
||||
StringRef ParentData = Parent->getData();
|
||||
StringRef ObjectData = ParentData.substr(Header.offset, Header.size);
|
||||
std::string ObjectName =
|
||||
Parent->getFileName().str() + ":" +
|
||||
Triple::getArchTypeName(MachOObjectFile::getArch(Header.cputype));
|
||||
MemoryBuffer *ObjBuffer = MemoryBuffer::getMemBuffer(
|
||||
ObjectData, ObjectName, false);
|
||||
ErrorOr<Archive *> Obj = Archive::create(ObjBuffer);
|
||||
if (error_code EC = Obj.getError())
|
||||
return EC;
|
||||
Result.reset(Obj.get());
|
||||
return object_error::success;
|
||||
}
|
||||
return object_error::parse_failed;
|
||||
}
|
||||
|
||||
void MachOUniversalBinary::anchor() { }
|
||||
|
||||
ErrorOr<MachOUniversalBinary *>
|
||||
|
||||
Reference in New Issue
Block a user