summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Object')
-rw-r--r--llvm/lib/Object/Error.cpp9
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp53
2 files changed, 30 insertions, 32 deletions
diff --git a/llvm/lib/Object/Error.cpp b/llvm/lib/Object/Error.cpp
index 1ec9d26e941..15bce7727dc 100644
--- a/llvm/lib/Object/Error.cpp
+++ b/llvm/lib/Object/Error.cpp
@@ -55,16 +55,15 @@ std::string _object_error_category::message(int EV) const {
char BinaryError::ID = 0;
char GenericBinaryError::ID = 0;
-GenericBinaryError::GenericBinaryError(std::string FileName, Twine Msg)
- : FileName(std::move(FileName)), Msg(Msg.str()) {}
+GenericBinaryError::GenericBinaryError(Twine Msg) : Msg(Msg.str()) {}
-GenericBinaryError::GenericBinaryError(std::string FileName, Twine Msg, object_error ECOverride)
- : FileName(std::move(FileName)), Msg(Msg.str()) {
+GenericBinaryError::GenericBinaryError(Twine Msg, object_error ECOverride)
+ : Msg(Msg.str()) {
setErrorCode(make_error_code(ECOverride));
}
void GenericBinaryError::log(raw_ostream &OS) const {
- OS << "Error in " << FileName << ": " << Msg;
+ OS << Msg;
}
static ManagedStatic<_object_error_category> error_category;
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index f961f0bd050..760249f56a8 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -39,9 +39,9 @@ namespace {
}
static Error
-malformedError(const MachOObjectFile &Obj, Twine Msg) {
+malformedError(Twine Msg) {
std::string StringMsg = "truncated or malformed object (" + Msg.str() + ")";
- return make_error<GenericBinaryError>(Obj.getFileName(), std::move(StringMsg),
+ return make_error<GenericBinaryError>(std::move(StringMsg),
object_error::parse_failed);
}
@@ -63,7 +63,7 @@ template <typename T>
static Expected<T> getStructOrErr(const MachOObjectFile *O, const char *P) {
// Don't read before the beginning or past the end of the file
if (P < O->getData().begin() || P + sizeof(T) > O->getData().end())
- return malformedError(*O, "Structure read out-of-range");
+ return malformedError("Structure read out-of-range");
T Cmd;
memcpy(&Cmd, P, sizeof(T));
@@ -173,7 +173,7 @@ getLoadCommandInfo(const MachOObjectFile *Obj, const char *Ptr,
uint32_t LoadCommandIndex) {
if (auto CmdOrErr = getStructOrErr<MachO::load_command>(Obj, Ptr)) {
if (CmdOrErr->cmdsize < 8)
- return malformedError(*Obj, "load command " + Twine(LoadCommandIndex) +
+ return malformedError("load command " + Twine(LoadCommandIndex) +
" with size less than 8 bytes");
return MachOObjectFile::LoadCommandInfo({Ptr, *CmdOrErr});
} else
@@ -185,7 +185,7 @@ getFirstLoadCommandInfo(const MachOObjectFile *Obj) {
unsigned HeaderSize = Obj->is64Bit() ? sizeof(MachO::mach_header_64)
: sizeof(MachO::mach_header);
if (sizeof(MachOObjectFile::LoadCommandInfo) > Obj->getHeader().sizeofcmds)
- return malformedError(*Obj, "load command 0 extends past the end all load "
+ return malformedError("load command 0 extends past the end all load "
"commands in the file");
return getLoadCommandInfo(Obj, getPtr(Obj, HeaderSize), 0);
}
@@ -197,7 +197,7 @@ getNextLoadCommandInfo(const MachOObjectFile *Obj, uint32_t LoadCommandIndex,
: sizeof(MachO::mach_header);
if (L.Ptr + L.C.cmdsize + sizeof(MachOObjectFile::LoadCommandInfo) >
Obj->getData().data() + HeaderSize + Obj->getHeader().sizeofcmds)
- return malformedError(*Obj, "load command " + Twine(LoadCommandIndex + 1) +
+ return malformedError("load command " + Twine(LoadCommandIndex + 1) +
" extends past the end all load commands in the file");
return getLoadCommandInfo(Obj, L.Ptr + L.C.cmdsize, LoadCommandIndex + 1);
}
@@ -206,7 +206,7 @@ template <typename T>
static void parseHeader(const MachOObjectFile *Obj, T &Header,
Error &Err) {
if (sizeof(T) > Obj->getData().size()) {
- Err = malformedError(*Obj, "the mach header extends past the end of the "
+ Err = malformedError("the mach header extends past the end of the "
"file");
return;
}
@@ -226,7 +226,7 @@ static Error parseSegmentLoadCommand(
uint32_t LoadCommandIndex, const char *CmdName) {
const unsigned SegmentLoadSize = sizeof(SegmentCmd);
if (Load.C.cmdsize < SegmentLoadSize)
- return malformedError(*Obj, "load command " + Twine(LoadCommandIndex) +
+ return malformedError("load command " + Twine(LoadCommandIndex) +
" " + CmdName + " cmdsize too small");
if (auto SegOrErr = getStructOrErr<SegmentCmd>(Obj, Load.Ptr)) {
SegmentCmd S = SegOrErr.get();
@@ -234,7 +234,7 @@ static Error parseSegmentLoadCommand(
Obj->is64Bit() ? sizeof(MachO::section_64) : sizeof(MachO::section);
if (S.nsects > std::numeric_limits<uint32_t>::max() / SectionSize ||
S.nsects * SectionSize > Load.C.cmdsize - SegmentLoadSize)
- return malformedError(*Obj, "load command " + Twine(LoadCommandIndex) +
+ return malformedError("load command " + Twine(LoadCommandIndex) +
" inconsistent cmdsize in " + CmdName +
" for the number of sections");
for (unsigned J = 0; J < S.nsects; ++J) {
@@ -280,7 +280,7 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
return;
BigSize += getHeader().sizeofcmds;
if (getData().data() + BigSize > getData().end()) {
- Err = malformedError(*this, "load commands extend past the end of the file");
+ Err = malformedError("load commands extend past the end of the file");
return;
}
@@ -301,28 +301,28 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
if (Load.C.cmd == MachO::LC_SYMTAB) {
// Multiple symbol tables
if (SymtabLoadCmd) {
- Err = malformedError(*this, "Multiple symbol tables");
+ Err = malformedError("Multiple symbol tables");
return;
}
SymtabLoadCmd = Load.Ptr;
} else if (Load.C.cmd == MachO::LC_DYSYMTAB) {
// Multiple dynamic symbol tables
if (DysymtabLoadCmd) {
- Err = malformedError(*this, "Multiple dynamic symbol tables");
+ Err = malformedError("Multiple dynamic symbol tables");
return;
}
DysymtabLoadCmd = Load.Ptr;
} else if (Load.C.cmd == MachO::LC_DATA_IN_CODE) {
// Multiple data in code tables
if (DataInCodeLoadCmd) {
- Err = malformedError(*this, "Multiple data-in-code tables");
+ Err = malformedError("Multiple data-in-code tables");
return;
}
DataInCodeLoadCmd = Load.Ptr;
} else if (Load.C.cmd == MachO::LC_LINKER_OPTIMIZATION_HINT) {
// Multiple linker optimization hint tables
if (LinkOptHintsLoadCmd) {
- Err = malformedError(*this, "Multiple linker optimization hint tables");
+ Err = malformedError("Multiple linker optimization hint tables");
return;
}
LinkOptHintsLoadCmd = Load.Ptr;
@@ -330,14 +330,14 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
Load.C.cmd == MachO::LC_DYLD_INFO_ONLY) {
// Multiple dyldinfo load commands
if (DyldInfoLoadCmd) {
- Err = malformedError(*this, "Multiple dyldinfo load commands");
+ Err = malformedError("Multiple dyldinfo load commands");
return;
}
DyldInfoLoadCmd = Load.Ptr;
} else if (Load.C.cmd == MachO::LC_UUID) {
// Multiple UUID load commands
if (UuidLoadCmd) {
- Err = malformedError(*this, "Multiple UUID load commands");
+ Err = malformedError("Multiple UUID load commands");
return;
}
UuidLoadCmd = Load.Ptr;
@@ -368,7 +368,7 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
}
if (!SymtabLoadCmd) {
if (DysymtabLoadCmd) {
- Err = malformedError(*this, "contains LC_DYSYMTAB load command without a "
+ Err = malformedError("contains LC_DYSYMTAB load command without a "
"LC_SYMTAB load command");
return;
}
@@ -378,39 +378,39 @@ MachOObjectFile::MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian,
MachO::dysymtab_command Dysymtab =
getStruct<MachO::dysymtab_command>(this, DysymtabLoadCmd);
if (Dysymtab.nlocalsym != 0 && Dysymtab.ilocalsym > Symtab.nsyms) {
- Err = malformedError(*this, "ilocalsym in LC_DYSYMTAB load command "
+ Err = malformedError("ilocalsym in LC_DYSYMTAB load command "
"extends past the end of the symbol table");
return;
}
uint64_t BigSize = Dysymtab.ilocalsym;
BigSize += Dysymtab.nlocalsym;
if (Dysymtab.nlocalsym != 0 && BigSize > Symtab.nsyms) {
- Err = malformedError(*this, "ilocalsym plus nlocalsym in LC_DYSYMTAB load "
+ Err = malformedError("ilocalsym plus nlocalsym in LC_DYSYMTAB load "
"command extends past the end of the symbol table");
return;
}
if (Dysymtab.nextdefsym != 0 && Dysymtab.ilocalsym > Symtab.nsyms) {
- Err = malformedError(*this, "nextdefsym in LC_DYSYMTAB load command "
+ Err = malformedError("nextdefsym in LC_DYSYMTAB load command "
"extends past the end of the symbol table");
return;
}
BigSize = Dysymtab.iextdefsym;
BigSize += Dysymtab.nextdefsym;
if (Dysymtab.nextdefsym != 0 && BigSize > Symtab.nsyms) {
- Err = malformedError(*this, "iextdefsym plus nextdefsym in LC_DYSYMTAB "
+ Err = malformedError("iextdefsym plus nextdefsym in LC_DYSYMTAB "
"load command extends past the end of the symbol "
"table");
return;
}
if (Dysymtab.nundefsym != 0 && Dysymtab.iundefsym > Symtab.nsyms) {
- Err = malformedError(*this, "nundefsym in LC_DYSYMTAB load command "
+ Err = malformedError("nundefsym in LC_DYSYMTAB load command "
"extends past the end of the symbol table");
return;
}
BigSize = Dysymtab.iundefsym;
BigSize += Dysymtab.nundefsym;
if (Dysymtab.nundefsym != 0 && BigSize > Symtab.nsyms) {
- Err = malformedError(*this, "iundefsym plus nundefsym in LC_DYSYMTAB load "
+ Err = malformedError("iundefsym plus nundefsym in LC_DYSYMTAB load "
" command extends past the end of the symbol table");
return;
}
@@ -432,7 +432,7 @@ Expected<StringRef> MachOObjectFile::getSymbolName(DataRefImpl Symb) const {
MachO::nlist_base Entry = getSymbolTableEntryBase(this, Symb);
const char *Start = &StringTable.data()[Entry.n_strx];
if (Start < getData().begin() || Start >= getData().end()) {
- return malformedError(*this, "bad string index: " + Twine(Entry.n_strx) +
+ return malformedError("bad string index: " + Twine(Entry.n_strx) +
" for symbol at index " + Twine(getSymbolIndex(Symb)));
}
return StringRef(Start);
@@ -563,7 +563,7 @@ MachOObjectFile::getSymbolSection(DataRefImpl Symb) const {
DataRefImpl DRI;
DRI.d.a = index - 1;
if (DRI.d.a >= Sections.size()){
- return malformedError(*this, "bad section index: " + Twine((int)index) +
+ return malformedError("bad section index: " + Twine((int)index) +
" for symbol at index " + Twine(getSymbolIndex(Symb)));
}
return section_iterator(SectionRef(DRI, this));
@@ -2395,7 +2395,6 @@ ObjectFile::createMachOObjectFile(MemoryBufferRef Buffer) {
return MachOObjectFile::create(Buffer, false, true);
if (Magic == "\xCF\xFA\xED\xFE")
return MachOObjectFile::create(Buffer, true, true);
- return make_error<GenericBinaryError>(Buffer.getBufferIdentifier(),
- "Unrecognized MachO magic number",
+ return make_error<GenericBinaryError>("Unrecognized MachO magic number",
object_error::invalid_file_type);
}
OpenPOWER on IntegriCloud