mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Remove object_error::success and use std::error_code() instead
make_error_code(object_error) is slow because object::object_category() uses a ManagedStatic variable. But the real problem is that the function is called too frequently. This patch uses std::error_code() instead of object_error::success. In most cases, we return "success", so this patch reduces number of function calls to that function. http://reviews.llvm.org/D10333 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239409 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c154887856
commit
eae4673c2f
@ -695,7 +695,7 @@ public:
|
||||
return object_error::parse_failed;
|
||||
|
||||
Res = reinterpret_cast<coff_symbol_type *>(getSymbolTable()) + Index;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
ErrorOr<COFFSymbolRef> getSymbol(uint32_t index) const {
|
||||
if (SymbolTable16) {
|
||||
@ -718,7 +718,7 @@ public:
|
||||
if (std::error_code EC = s.getError())
|
||||
return EC;
|
||||
Res = reinterpret_cast<const T *>(s->getRawPtr());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
std::error_code getSymbolName(COFFSymbolRef Symbol, StringRef &Res) const;
|
||||
|
||||
|
@ -223,7 +223,7 @@ public:
|
||||
|
||||
std::error_code getPlatformFlags(unsigned &Result) const override {
|
||||
Result = EF.getHeader()->e_flags;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
const ELFFile<ELFT> *getELFFile() const { return &EF; }
|
||||
@ -257,7 +257,7 @@ std::error_code ELFObjectFile<ELFT>::getSymbolName(DataRefImpl Symb,
|
||||
if (!Name)
|
||||
return Name.getError();
|
||||
Result = *Name;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -271,7 +271,7 @@ std::error_code ELFObjectFile<ELFT>::getSymbolVersion(SymbolRef SymRef,
|
||||
if (!Ver)
|
||||
return Ver.getError();
|
||||
Version = *Ver;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -294,10 +294,10 @@ std::error_code ELFObjectFile<ELFT>::getSymbolAddress(DataRefImpl Symb,
|
||||
case ELF::SHN_COMMON:
|
||||
case ELF::SHN_UNDEF:
|
||||
Result = UnknownAddressOrSize;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
case ELF::SHN_ABS:
|
||||
Result = ESym->st_value;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -316,7 +316,7 @@ std::error_code ELFObjectFile<ELFT>::getSymbolAddress(DataRefImpl Symb,
|
||||
Result += Section->sh_addr;
|
||||
}
|
||||
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -336,7 +336,7 @@ template <class ELFT>
|
||||
std::error_code ELFObjectFile<ELFT>::getSymbolOther(DataRefImpl Symb,
|
||||
uint8_t &Result) const {
|
||||
Result = toELFSymIter(Symb)->st_other;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -367,7 +367,7 @@ ELFObjectFile<ELFT>::getSymbolType(DataRefImpl Symb,
|
||||
Result = SymbolRef::ST_Other;
|
||||
break;
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -424,7 +424,7 @@ std::error_code
|
||||
ELFObjectFile<ELFT>::getSymbolSection(DataRefImpl Symb,
|
||||
section_iterator &Res) const {
|
||||
Res = getSymbolSection(getSymbol(Symb));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -439,7 +439,7 @@ std::error_code ELFObjectFile<ELFT>::getSectionName(DataRefImpl Sec,
|
||||
if (!Name)
|
||||
return Name.getError();
|
||||
Result = *Name;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -458,7 +458,7 @@ ELFObjectFile<ELFT>::getSectionContents(DataRefImpl Sec,
|
||||
StringRef &Result) const {
|
||||
Elf_Shdr_Iter EShdr = toELFShdrIter(Sec);
|
||||
Result = StringRef((const char *)base() + EShdr->sh_offset, EShdr->sh_size);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -613,7 +613,7 @@ ELFObjectFile<ELFT>::getRelocationAddress(DataRefImpl Rel,
|
||||
Result = ROffset;
|
||||
}
|
||||
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -623,7 +623,7 @@ ELFObjectFile<ELFT>::getRelocationOffset(DataRefImpl Rel,
|
||||
assert(EF.getHeader()->e_type == ELF::ET_REL &&
|
||||
"Only relocatable object files have relocation offsets");
|
||||
Result = getROffset(Rel);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -655,7 +655,7 @@ std::error_code ELFObjectFile<ELFT>::getRelocationType(DataRefImpl Rel,
|
||||
break;
|
||||
}
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -682,7 +682,7 @@ std::error_code ELFObjectFile<ELFT>::getRelocationTypeName(
|
||||
}
|
||||
|
||||
EF.getRelocationTypeName(type, Result);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
@ -695,11 +695,11 @@ ELFObjectFile<ELFT>::getRelocationAddend(DataRefImpl Rel,
|
||||
report_fatal_error("Invalid section type in Rel!");
|
||||
case ELF::SHT_REL: {
|
||||
Result = 0;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
case ELF::SHT_RELA: {
|
||||
Result = getRela(Rel)->r_addend;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,8 @@ namespace object {
|
||||
const std::error_category &object_category();
|
||||
|
||||
enum class object_error {
|
||||
success = 0,
|
||||
arch_not_found,
|
||||
// Error code 0 is absent. Use std::error_code() instead.
|
||||
arch_not_found = 1,
|
||||
invalid_file_type,
|
||||
parse_failed,
|
||||
unexpected_eof,
|
||||
|
@ -476,7 +476,7 @@ inline std::error_code DiceRef::getOffset(uint32_t &Result) const {
|
||||
static_cast<const MachOObjectFile *>(OwningObject);
|
||||
MachO::data_in_code_entry Dice = MachOOF->getDice(DicePimpl);
|
||||
Result = Dice.offset;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
inline std::error_code DiceRef::getLength(uint16_t &Result) const {
|
||||
@ -484,7 +484,7 @@ inline std::error_code DiceRef::getLength(uint16_t &Result) const {
|
||||
static_cast<const MachOObjectFile *>(OwningObject);
|
||||
MachO::data_in_code_entry Dice = MachOOF->getDice(DicePimpl);
|
||||
Result = Dice.length;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
inline std::error_code DiceRef::getKind(uint16_t &Result) const {
|
||||
@ -492,7 +492,7 @@ inline std::error_code DiceRef::getKind(uint16_t &Result) const {
|
||||
static_cast<const MachOObjectFile *>(OwningObject);
|
||||
MachO::data_in_code_entry Dice = MachOOF->getDice(DicePimpl);
|
||||
Result = Dice.kind;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
inline DataRefImpl DiceRef::getRawDataRefImpl() const {
|
||||
|
@ -250,7 +250,7 @@ protected:
|
||||
virtual std::error_code getRelocationHidden(DataRefImpl Rel,
|
||||
bool &Result) const {
|
||||
Result = false;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -120,7 +120,7 @@ static std::error_code getOffset(const SymbolRef &Sym, uint64_t &Result) {
|
||||
|
||||
if (Address == UnknownAddressOrSize) {
|
||||
Result = UnknownAddressOrSize;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
const ObjectFile *Obj = Sym.getObject();
|
||||
@ -130,12 +130,12 @@ static std::error_code getOffset(const SymbolRef &Sym, uint64_t &Result) {
|
||||
|
||||
if (SecI == Obj->section_end()) {
|
||||
Result = UnknownAddressOrSize;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint64_t SectionAddress = SecI->getAddress();
|
||||
Result = Address - SectionAddress;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::pair<unsigned, unsigned>
|
||||
|
@ -224,7 +224,7 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
|
||||
child_iterator e = child_end();
|
||||
|
||||
if (i == e) {
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -254,7 +254,7 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
|
||||
SymbolTable = i;
|
||||
++i;
|
||||
FirstRegular = i;
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -298,14 +298,14 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
|
||||
StringTable = i;
|
||||
++i;
|
||||
FirstRegular = i;
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Name[0] != '/') {
|
||||
Format = has64SymTable ? K_MIPS64 : K_GNU;
|
||||
FirstRegular = i;
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -320,7 +320,7 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
|
||||
++i;
|
||||
if (i == e) {
|
||||
FirstRegular = i;
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -332,7 +332,7 @@ Archive::Archive(MemoryBufferRef Source, std::error_code &ec)
|
||||
}
|
||||
|
||||
FirstRegular = i;
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
}
|
||||
|
||||
Archive::child_iterator Archive::child_begin(bool SkipInternal) const {
|
||||
|
@ -46,7 +46,7 @@ static std::error_code checkOffset(MemoryBufferRef M, uintptr_t Addr,
|
||||
Addr < uintptr_t(M.getBufferStart())) {
|
||||
return object_error::unexpected_eof;
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Sets Obj unless any bytes in [addr, addr + size) fall outsize of m.
|
||||
@ -59,7 +59,7 @@ static std::error_code getObject(const T *&Obj, MemoryBufferRef M,
|
||||
if (std::error_code EC = checkOffset(M, Addr, Size))
|
||||
return EC;
|
||||
Obj = reinterpret_cast<const T *>(Addr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Decode a string table entry in base 64 (//AAAAAA). Expects \arg Str without
|
||||
@ -156,11 +156,11 @@ std::error_code COFFObjectFile::getSymbolAddress(DataRefImpl Ref,
|
||||
|
||||
if (Symb.isAnyUndefined()) {
|
||||
Result = UnknownAddressOrSize;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
if (Symb.isCommon()) {
|
||||
Result = UnknownAddressOrSize;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
int32_t SectionNumber = Symb.getSectionNumber();
|
||||
if (!COFF::isReservedSectionNumber(SectionNumber)) {
|
||||
@ -169,11 +169,11 @@ std::error_code COFFObjectFile::getSymbolAddress(DataRefImpl Ref,
|
||||
return EC;
|
||||
|
||||
Result = Section->VirtualAddress + Symb.getValue();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
Result = Symb.getValue();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code COFFObjectFile::getSymbolType(DataRefImpl Ref,
|
||||
@ -205,7 +205,7 @@ std::error_code COFFObjectFile::getSymbolType(DataRefImpl Ref,
|
||||
COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA))
|
||||
Result = SymbolRef::ST_Data;
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint32_t COFFObjectFile::getSymbolFlags(DataRefImpl Ref) const {
|
||||
@ -258,7 +258,7 @@ COFFObjectFile::getSymbolSection(DataRefImpl Ref,
|
||||
Ref.p = reinterpret_cast<uintptr_t>(Sec);
|
||||
Result = section_iterator(SectionRef(Ref, this));
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
void COFFObjectFile::moveSectionNext(DataRefImpl &Ref) const {
|
||||
@ -417,7 +417,7 @@ std::error_code COFFObjectFile::initSymbolTablePtr() {
|
||||
// Check that the string table is null terminated if has any in it.
|
||||
if (StringTableSize > 4 && StringTable[StringTableSize - 1] != 0)
|
||||
return object_error::parse_failed;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Returns the file offset for the given VA.
|
||||
@ -438,7 +438,7 @@ std::error_code COFFObjectFile::getRvaPtr(uint32_t Addr, uintptr_t &Res) const {
|
||||
if (SectionStart <= Addr && Addr < SectionEnd) {
|
||||
uint32_t Offset = Addr - SectionStart;
|
||||
Res = uintptr_t(base()) + Section->PointerToRawData + Offset;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
}
|
||||
return object_error::parse_failed;
|
||||
@ -454,7 +454,7 @@ std::error_code COFFObjectFile::getHintName(uint32_t Rva, uint16_t &Hint,
|
||||
const uint8_t *Ptr = reinterpret_cast<const uint8_t *>(IntPtr);
|
||||
Hint = *reinterpret_cast<const ulittle16_t *>(Ptr);
|
||||
Name = StringRef(reinterpret_cast<const char *>(Ptr + 2));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Find the import table.
|
||||
@ -463,11 +463,11 @@ std::error_code COFFObjectFile::initImportTablePtr() {
|
||||
// the import table, do nothing.
|
||||
const data_directory *DataEntry;
|
||||
if (getDataDirectory(COFF::IMPORT_TABLE, DataEntry))
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
|
||||
// Do nothing if the pointer to import table is NULL.
|
||||
if (DataEntry->RelativeVirtualAddress == 0)
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
|
||||
uint32_t ImportTableRva = DataEntry->RelativeVirtualAddress;
|
||||
// -1 because the last entry is the null entry.
|
||||
@ -481,16 +481,16 @@ std::error_code COFFObjectFile::initImportTablePtr() {
|
||||
return EC;
|
||||
ImportDirectory = reinterpret_cast<
|
||||
const import_directory_table_entry *>(IntPtr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Initializes DelayImportDirectory and NumberOfDelayImportDirectory.
|
||||
std::error_code COFFObjectFile::initDelayImportTablePtr() {
|
||||
const data_directory *DataEntry;
|
||||
if (getDataDirectory(COFF::DELAY_IMPORT_DESCRIPTOR, DataEntry))
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
if (DataEntry->RelativeVirtualAddress == 0)
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
|
||||
uint32_t RVA = DataEntry->RelativeVirtualAddress;
|
||||
NumberOfDelayImportDirectory = DataEntry->Size /
|
||||
@ -501,7 +501,7 @@ std::error_code COFFObjectFile::initDelayImportTablePtr() {
|
||||
return EC;
|
||||
DelayImportDirectory = reinterpret_cast<
|
||||
const delay_import_directory_table_entry *>(IntPtr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Find the export table.
|
||||
@ -510,11 +510,11 @@ std::error_code COFFObjectFile::initExportTablePtr() {
|
||||
// the export table, do nothing.
|
||||
const data_directory *DataEntry;
|
||||
if (getDataDirectory(COFF::EXPORT_TABLE, DataEntry))
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
|
||||
// Do nothing if the pointer to export table is NULL.
|
||||
if (DataEntry->RelativeVirtualAddress == 0)
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
|
||||
uint32_t ExportTableRva = DataEntry->RelativeVirtualAddress;
|
||||
uintptr_t IntPtr = 0;
|
||||
@ -522,15 +522,15 @@ std::error_code COFFObjectFile::initExportTablePtr() {
|
||||
return EC;
|
||||
ExportDirectory =
|
||||
reinterpret_cast<const export_directory_table_entry *>(IntPtr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code COFFObjectFile::initBaseRelocPtr() {
|
||||
const data_directory *DataEntry;
|
||||
if (getDataDirectory(COFF::BASE_RELOCATION_TABLE, DataEntry))
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
if (DataEntry->RelativeVirtualAddress == 0)
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
|
||||
uintptr_t IntPtr = 0;
|
||||
if (std::error_code EC = getRvaPtr(DataEntry->RelativeVirtualAddress, IntPtr))
|
||||
@ -539,7 +539,7 @@ std::error_code COFFObjectFile::initBaseRelocPtr() {
|
||||
IntPtr);
|
||||
BaseRelocEnd = reinterpret_cast<coff_base_reloc_block_header *>(
|
||||
IntPtr + DataEntry->Size);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
COFFObjectFile::COFFObjectFile(MemoryBufferRef Object, std::error_code &EC)
|
||||
@ -604,7 +604,7 @@ COFFObjectFile::COFFObjectFile(MemoryBufferRef Object, std::error_code &EC)
|
||||
if (COFFHeader) {
|
||||
// The prior checkSize call may have failed. This isn't a hard error
|
||||
// because we were just trying to sniff out bigobj.
|
||||
EC = object_error::success;
|
||||
EC = std::error_code();
|
||||
CurPtr += sizeof(coff_file_header);
|
||||
|
||||
if (COFFHeader->isImportLibrary())
|
||||
@ -666,7 +666,7 @@ COFFObjectFile::COFFObjectFile(MemoryBufferRef Object, std::error_code &EC)
|
||||
if ((EC = initBaseRelocPtr()))
|
||||
return;
|
||||
|
||||
EC = object_error::success;
|
||||
EC = std::error_code();
|
||||
}
|
||||
|
||||
basic_symbol_iterator COFFObjectFile::symbol_begin_impl() const {
|
||||
@ -792,13 +792,13 @@ iterator_range<base_reloc_iterator> COFFObjectFile::base_relocs() const {
|
||||
|
||||
std::error_code COFFObjectFile::getPE32Header(const pe32_header *&Res) const {
|
||||
Res = PE32Header;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code
|
||||
COFFObjectFile::getPE32PlusHeader(const pe32plus_header *&Res) const {
|
||||
Res = PE32PlusHeader;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code
|
||||
@ -817,18 +817,18 @@ COFFObjectFile::getDataDirectory(uint32_t Index,
|
||||
return object_error::parse_failed;
|
||||
}
|
||||
Res = &DataDirectory[Index];
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code COFFObjectFile::getSection(int32_t Index,
|
||||
const coff_section *&Result) const {
|
||||
Result = nullptr;
|
||||
if (COFF::isReservedSectionNumber(Index))
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
if (static_cast<uint32_t>(Index) <= getNumberOfSections()) {
|
||||
// We already verified the section table data, so no need to check again.
|
||||
Result = SectionTable + (Index - 1);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
return object_error::parse_failed;
|
||||
}
|
||||
@ -841,7 +841,7 @@ std::error_code COFFObjectFile::getString(uint32_t Offset,
|
||||
if (Offset >= StringTableSize)
|
||||
return object_error::unexpected_eof;
|
||||
Result = StringRef(StringTable + Offset);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code COFFObjectFile::getSymbolName(COFFSymbolRef Symbol,
|
||||
@ -851,7 +851,7 @@ std::error_code COFFObjectFile::getSymbolName(COFFSymbolRef Symbol,
|
||||
uint32_t Offset = Symbol.getStringTableOffset().Offset;
|
||||
if (std::error_code EC = getString(Offset, Res))
|
||||
return EC;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
if (Symbol.getShortName()[COFF::NameSize - 1] == 0)
|
||||
@ -860,7 +860,7 @@ std::error_code COFFObjectFile::getSymbolName(COFFSymbolRef Symbol,
|
||||
else
|
||||
// Not null terminated, use all 8 bytes.
|
||||
Res = StringRef(Symbol.getShortName(), COFF::NameSize);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
ArrayRef<uint8_t>
|
||||
@ -911,7 +911,7 @@ std::error_code COFFObjectFile::getSectionName(const coff_section *Sec,
|
||||
}
|
||||
|
||||
Res = Name;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint64_t COFFObjectFile::getSectionSize(const coff_section *Sec) const {
|
||||
@ -949,7 +949,7 @@ COFFObjectFile::getSectionContents(const coff_section *Sec,
|
||||
if (checkOffset(Data, ConStart, SectionSize))
|
||||
return object_error::parse_failed;
|
||||
Res = makeArrayRef(reinterpret_cast<const uint8_t *>(ConStart), SectionSize);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
const coff_relocation *COFFObjectFile::toRel(DataRefImpl Rel) const {
|
||||
@ -974,7 +974,7 @@ std::error_code COFFObjectFile::getRelocationOffset(DataRefImpl Rel,
|
||||
getObject(VirtualAddressPtr, Data, &R->VirtualAddress))
|
||||
return EC;
|
||||
Res = *VirtualAddressPtr;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
symbol_iterator COFFObjectFile::getRelocationSymbol(DataRefImpl Rel) const {
|
||||
@ -1008,7 +1008,7 @@ std::error_code COFFObjectFile::getRelocationType(DataRefImpl Rel,
|
||||
uint64_t &Res) const {
|
||||
const coff_relocation* R = toRel(Rel);
|
||||
Res = R->Type;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
const coff_section *
|
||||
@ -1109,7 +1109,7 @@ COFFObjectFile::getRelocationTypeName(DataRefImpl Rel,
|
||||
Res = "Unknown";
|
||||
}
|
||||
Result.append(Res.begin(), Res.end());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
#undef LLVM_COFF_SWITCH_RELOC_TYPE_NAME
|
||||
@ -1130,7 +1130,7 @@ void ImportDirectoryEntryRef::moveNext() {
|
||||
std::error_code ImportDirectoryEntryRef::getImportTableEntry(
|
||||
const import_directory_table_entry *&Result) const {
|
||||
Result = ImportTable + Index;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
static imported_symbol_iterator
|
||||
@ -1192,19 +1192,19 @@ std::error_code ImportDirectoryEntryRef::getName(StringRef &Result) const {
|
||||
OwningObject->getRvaPtr(ImportTable[Index].NameRVA, IntPtr))
|
||||
return EC;
|
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code
|
||||
ImportDirectoryEntryRef::getImportLookupTableRVA(uint32_t &Result) const {
|
||||
Result = ImportTable[Index].ImportLookupTableRVA;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code
|
||||
ImportDirectoryEntryRef::getImportAddressTableRVA(uint32_t &Result) const {
|
||||
Result = ImportTable[Index].ImportAddressTableRVA;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code ImportDirectoryEntryRef::getImportLookupEntry(
|
||||
@ -1214,7 +1214,7 @@ std::error_code ImportDirectoryEntryRef::getImportLookupEntry(
|
||||
if (std::error_code EC = OwningObject->getRvaPtr(RVA, IntPtr))
|
||||
return EC;
|
||||
Result = reinterpret_cast<const import_lookup_table_entry32 *>(IntPtr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
bool DelayImportDirectoryEntryRef::
|
||||
@ -1248,13 +1248,13 @@ std::error_code DelayImportDirectoryEntryRef::getName(StringRef &Result) const {
|
||||
if (std::error_code EC = OwningObject->getRvaPtr(Table[Index].Name, IntPtr))
|
||||
return EC;
|
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code DelayImportDirectoryEntryRef::
|
||||
getDelayImportTable(const delay_import_directory_table_entry *&Result) const {
|
||||
Result = Table;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code DelayImportDirectoryEntryRef::
|
||||
@ -1268,7 +1268,7 @@ getImportAddress(int AddrIndex, uint64_t &Result) const {
|
||||
Result = *reinterpret_cast<const ulittle64_t *>(IntPtr);
|
||||
else
|
||||
Result = *reinterpret_cast<const ulittle32_t *>(IntPtr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
bool ExportDirectoryEntryRef::
|
||||
@ -1288,20 +1288,20 @@ std::error_code ExportDirectoryEntryRef::getDllName(StringRef &Result) const {
|
||||
OwningObject->getRvaPtr(ExportTable->NameRVA, IntPtr))
|
||||
return EC;
|
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Returns the starting ordinal number.
|
||||
std::error_code
|
||||
ExportDirectoryEntryRef::getOrdinalBase(uint32_t &Result) const {
|
||||
Result = ExportTable->OrdinalBase;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Returns the export ordinal of the current export symbol.
|
||||
std::error_code ExportDirectoryEntryRef::getOrdinal(uint32_t &Result) const {
|
||||
Result = ExportTable->OrdinalBase + Index;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Returns the address of the current export symbol.
|
||||
@ -1313,7 +1313,7 @@ std::error_code ExportDirectoryEntryRef::getExportRVA(uint32_t &Result) const {
|
||||
const export_address_table_entry *entry =
|
||||
reinterpret_cast<const export_address_table_entry *>(IntPtr);
|
||||
Result = entry[Index].ExportRVA;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Returns the name of the current export symbol. If the symbol is exported only
|
||||
@ -1339,10 +1339,10 @@ ExportDirectoryEntryRef::getSymbolName(StringRef &Result) const {
|
||||
if (std::error_code EC = OwningObject->getRvaPtr(NamePtr[Offset], IntPtr))
|
||||
return EC;
|
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
Result = "";
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
bool ImportedSymbolRef::
|
||||
@ -1361,11 +1361,11 @@ ImportedSymbolRef::getSymbolName(StringRef &Result) const {
|
||||
if (Entry32) {
|
||||
// If a symbol is imported only by ordinal, it has no name.
|
||||
if (Entry32[Index].isOrdinal())
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
RVA = Entry32[Index].getHintNameRVA();
|
||||
} else {
|
||||
if (Entry64[Index].isOrdinal())
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
RVA = Entry64[Index].getHintNameRVA();
|
||||
}
|
||||
uintptr_t IntPtr = 0;
|
||||
@ -1373,7 +1373,7 @@ ImportedSymbolRef::getSymbolName(StringRef &Result) const {
|
||||
return EC;
|
||||
// +2 because the first two bytes is hint.
|
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr + 2));
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code ImportedSymbolRef::getOrdinal(uint16_t &Result) const {
|
||||
@ -1381,13 +1381,13 @@ std::error_code ImportedSymbolRef::getOrdinal(uint16_t &Result) const {
|
||||
if (Entry32) {
|
||||
if (Entry32[Index].isOrdinal()) {
|
||||
Result = Entry32[Index].getOrdinal();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
RVA = Entry32[Index].getHintNameRVA();
|
||||
} else {
|
||||
if (Entry64[Index].isOrdinal()) {
|
||||
Result = Entry64[Index].getOrdinal();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
RVA = Entry64[Index].getHintNameRVA();
|
||||
}
|
||||
@ -1395,7 +1395,7 @@ std::error_code ImportedSymbolRef::getOrdinal(uint16_t &Result) const {
|
||||
if (std::error_code EC = OwningObject->getRvaPtr(RVA, IntPtr))
|
||||
return EC;
|
||||
Result = *reinterpret_cast<const ulittle16_t *>(IntPtr);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
ErrorOr<std::unique_ptr<COFFObjectFile>>
|
||||
@ -1432,11 +1432,11 @@ void BaseRelocRef::moveNext() {
|
||||
std::error_code BaseRelocRef::getType(uint8_t &Type) const {
|
||||
auto *Entry = reinterpret_cast<const coff_base_reloc_block_entry *>(Header + 1);
|
||||
Type = Entry[Index].getType();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code BaseRelocRef::getRVA(uint32_t &Result) const {
|
||||
auto *Entry = reinterpret_cast<const coff_base_reloc_block_entry *>(Header + 1);
|
||||
Result = Header->PageRVA + Entry[Index].getOffset();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
@ -33,7 +33,6 @@ const char *_object_error_category::name() const LLVM_NOEXCEPT {
|
||||
std::string _object_error_category::message(int EV) const {
|
||||
object_error E = static_cast<object_error>(EV);
|
||||
switch (E) {
|
||||
case object_error::success: return "Success";
|
||||
case object_error::arch_not_found:
|
||||
return "No object file for requested architecture";
|
||||
case object_error::invalid_file_type:
|
||||
|
@ -195,7 +195,7 @@ std::error_code IRObjectFile::printSymbolName(raw_ostream &OS,
|
||||
unsigned Index = getAsmSymIndex(Symb);
|
||||
assert(Index <= AsmSymbols.size());
|
||||
OS << AsmSymbols[Index].first;
|
||||
return object_error::success;;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
if (Mang)
|
||||
@ -203,7 +203,7 @@ std::error_code IRObjectFile::printSymbolName(raw_ostream &OS,
|
||||
else
|
||||
OS << GV->getName();
|
||||
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const {
|
||||
|
@ -221,7 +221,7 @@ static std::error_code parseSegmentLoadCommand(
|
||||
Sections.push_back(Sec);
|
||||
}
|
||||
IsPageZeroSegment |= StringRef("__PAGEZERO").equals(S.segname);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
|
||||
@ -336,7 +336,7 @@ std::error_code MachOObjectFile::getSymbolName(DataRefImpl Symb,
|
||||
report_fatal_error(
|
||||
"Symbol name entry points before beginning or past end of file.");
|
||||
Res = StringRef(Start);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
unsigned MachOObjectFile::getSectionType(SectionRef Sec) const {
|
||||
@ -366,7 +366,7 @@ std::error_code MachOObjectFile::getIndirectName(DataRefImpl Symb,
|
||||
return object_error::parse_failed;
|
||||
const char *Start = &StringTable.data()[NValue];
|
||||
Res = StringRef(Start);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code MachOObjectFile::getSymbolAddress(DataRefImpl Symb,
|
||||
@ -386,7 +386,7 @@ std::error_code MachOObjectFile::getSymbolAddress(DataRefImpl Symb,
|
||||
else
|
||||
Res = Entry.n_value;
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint32_t MachOObjectFile::getSymbolAlignment(DataRefImpl DRI) const {
|
||||
@ -417,7 +417,7 @@ std::error_code MachOObjectFile::getSymbolType(DataRefImpl Symb,
|
||||
// If this is a STAB debugging symbol, we can do nothing more.
|
||||
if (n_type & MachO::N_STAB) {
|
||||
Res = SymbolRef::ST_Debug;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
switch (n_type & MachO::N_TYPE) {
|
||||
@ -428,7 +428,7 @@ std::error_code MachOObjectFile::getSymbolType(DataRefImpl Symb,
|
||||
Res = SymbolRef::ST_Function;
|
||||
break;
|
||||
}
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint32_t MachOObjectFile::getSymbolFlags(DataRefImpl DRI) const {
|
||||
@ -488,7 +488,7 @@ std::error_code MachOObjectFile::getSymbolSection(DataRefImpl Symb,
|
||||
Res = section_iterator(SectionRef(DRI, this));
|
||||
}
|
||||
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
void MachOObjectFile::moveSectionNext(DataRefImpl &Sec) const {
|
||||
@ -499,7 +499,7 @@ std::error_code MachOObjectFile::getSectionName(DataRefImpl Sec,
|
||||
StringRef &Result) const {
|
||||
ArrayRef<char> Raw = getSectionRawName(Sec);
|
||||
Result = parseSegmentOrSectionName(Raw.data());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint64_t MachOObjectFile::getSectionAddress(DataRefImpl Sec) const {
|
||||
@ -530,7 +530,7 @@ std::error_code MachOObjectFile::getSectionContents(DataRefImpl Sec,
|
||||
}
|
||||
|
||||
Res = this->getData().substr(Offset, Size);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint64_t MachOObjectFile::getSectionAlignment(DataRefImpl Sec) const {
|
||||
@ -625,7 +625,7 @@ std::error_code MachOObjectFile::getRelocationAddress(DataRefImpl Rel,
|
||||
Sec.d.a = Rel.d.a;
|
||||
uint64_t SecAddress = getSectionAddress(Sec);
|
||||
Res = SecAddress + Offset;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code MachOObjectFile::getRelocationOffset(DataRefImpl Rel,
|
||||
@ -634,7 +634,7 @@ std::error_code MachOObjectFile::getRelocationOffset(DataRefImpl Rel,
|
||||
"Only implemented for MH_OBJECT");
|
||||
MachO::any_relocation_info RE = getRelocation(Rel);
|
||||
Res = getAnyRelocationAddress(RE);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
symbol_iterator
|
||||
@ -667,7 +667,7 @@ std::error_code MachOObjectFile::getRelocationType(DataRefImpl Rel,
|
||||
uint64_t &Res) const {
|
||||
MachO::any_relocation_info RE = getRelocation(Rel);
|
||||
Res = getAnyRelocationType(RE);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code
|
||||
@ -779,7 +779,7 @@ MachOObjectFile::getRelocationTypeName(DataRefImpl Rel,
|
||||
break;
|
||||
}
|
||||
Result.append(res.begin(), res.end());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code MachOObjectFile::getRelocationHidden(DataRefImpl Rel,
|
||||
@ -807,7 +807,7 @@ std::error_code MachOObjectFile::getRelocationHidden(DataRefImpl Rel,
|
||||
}
|
||||
}
|
||||
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint8_t MachOObjectFile::getRelocationLength(DataRefImpl Rel) const {
|
||||
@ -990,7 +990,7 @@ std::error_code MachOObjectFile::getLibraryShortNameByIndex(unsigned Index,
|
||||
}
|
||||
|
||||
Res = LibrariesShortNames[Index];
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
basic_symbol_iterator MachOObjectFile::symbol_begin_impl() const {
|
||||
|
@ -120,7 +120,7 @@ MachOUniversalBinary::MachOUniversalBinary(MemoryBufferRef Source,
|
||||
ec = object_error::parse_failed;
|
||||
return;
|
||||
}
|
||||
ec = object_error::success;
|
||||
ec = std::error_code();
|
||||
}
|
||||
|
||||
static bool getCTMForArch(Triple::ArchType Arch, MachO::CPUType &CTM) {
|
||||
|
@ -34,7 +34,7 @@ std::error_code ObjectFile::printSymbolName(raw_ostream &OS,
|
||||
if (std::error_code EC = getSymbolName(Symb, Name))
|
||||
return EC;
|
||||
OS << Name;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
uint32_t ObjectFile::getSymbolAlignment(DataRefImpl DRI) const { return 0; }
|
||||
|
@ -167,7 +167,7 @@ resolveSectionAndAddress(const COFFObjectFile *Obj, const SymbolRef &Sym,
|
||||
if (std::error_code EC = Sym.getSection(iter))
|
||||
return EC;
|
||||
ResolvedSection = Obj->getCOFFSection(*iter);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Given a vector of relocations for a section and an offset into this section
|
||||
@ -182,7 +182,7 @@ static std::error_code resolveSymbol(const std::vector<RelocationRef> &Rels,
|
||||
return EC;
|
||||
if (Ofs == Offset) {
|
||||
Sym = *I->getSymbol();
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
}
|
||||
return object_error::parse_failed;
|
||||
@ -204,7 +204,7 @@ getSectionContents(const COFFObjectFile *Obj,
|
||||
return EC;
|
||||
if (std::error_code EC = Obj->getSectionContents(Section, Contents))
|
||||
return EC;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
// Given a vector of relocations for a section and an offset into this section
|
||||
@ -217,7 +217,7 @@ static std::error_code resolveSymbolName(const std::vector<RelocationRef> &Rels,
|
||||
return EC;
|
||||
if (std::error_code EC = Sym.getName(Name))
|
||||
return EC;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
static void printCOFFSymbolAddress(llvm::raw_ostream &Out,
|
||||
|
@ -400,7 +400,7 @@ static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj,
|
||||
}
|
||||
if (Result.empty())
|
||||
Result.append(res.begin(), res.end());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
static std::error_code getRelocationValueString(const ELFObjectFileBase *Obj,
|
||||
@ -425,7 +425,7 @@ static std::error_code getRelocationValueString(const COFFObjectFile *Obj,
|
||||
if (std::error_code EC = SymI->getName(SymName))
|
||||
return EC;
|
||||
Result.append(SymName.begin(), SymName.end());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
static void printRelocationTargetName(const MachOObjectFile *O,
|
||||
@ -569,7 +569,7 @@ static std::error_code getRelocationValueString(const MachOObjectFile *Obj,
|
||||
// Generic relocation types...
|
||||
switch (Type) {
|
||||
case MachO::GENERIC_RELOC_PAIR: // prints no info
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
case MachO::GENERIC_RELOC_SECTDIFF: {
|
||||
DataRefImpl RelNext = Rel;
|
||||
Obj->moveRelocationNext(RelNext);
|
||||
@ -667,7 +667,7 @@ static std::error_code getRelocationValueString(const MachOObjectFile *Obj,
|
||||
|
||||
fmt.flush();
|
||||
Result.append(fmtbuf.begin(), fmtbuf.end());
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
static std::error_code getRelocationValueString(const RelocationRef &Rel,
|
||||
|
@ -142,7 +142,7 @@ std::error_code COFFDumper::resolveSymbolName(const coff_section *Section,
|
||||
return EC;
|
||||
if (std::error_code EC = Symbol.getName(Name))
|
||||
return EC;
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
static const EnumEntry<COFF::MachineTypes> ImageFileMachineType[] = {
|
||||
|
@ -152,7 +152,7 @@ static std::error_code resolveRelocation(const Dumper::Context &Ctx,
|
||||
return EC;
|
||||
|
||||
ResolvedSection = Ctx.COFF.getCOFFSection(*SI);
|
||||
return object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
namespace llvm {
|
||||
|
@ -271,5 +271,5 @@ std::error_code coff2yaml(raw_ostream &Out, const object::COFFObjectFile &Obj) {
|
||||
yaml::Output Yout(Out);
|
||||
Yout << Dumper.getYAMLObj();
|
||||
|
||||
return object::object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
@ -367,7 +367,7 @@ static std::error_code elf2yaml(raw_ostream &Out,
|
||||
yaml::Output Yout(Out);
|
||||
Yout << *YAML;
|
||||
|
||||
return object::object_error::success;
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code elf2yaml(raw_ostream &Out, const object::ObjectFile &Obj) {
|
||||
|
Loading…
Reference in New Issue
Block a user