llvm-project/llvm/lib/Object
Kevin Enderby 95b0842e64 Next step along the way to getting good error messages for bad archives.
I consulted with Lang Hames on this work, and the goal was to add a bit
of "where" in the archive the error occurred along with what the error was.

So this step changes ArchiveMemberHeader into a class with a pointer
to the archive header and the parent archive.  Which allows the methods
in the ArchiveMemberHeader to determine which member the header is
for to include that information in the error message.

For this first step the "where" is just the offset to the member in the
archive.  The next step will be a new method on ArchiveMemberHeader
to get the full name, if possible, to be use in the error message.  Which
will now be possible as ArchiveMemberHeader contains a pointer to
the Archive with its string table and its size, etc. so the full name can
be determined from the header if it is valid.

Also this change adds the missing checks the archive header is actually
contained in the buffer and is not truncated, as well as if the terminating
characters are correct in the header.

And changes one error message in Archive::Child::getNext() where the
name or offset to member is now added.

llvm-svn: 276686
2016-07-25 20:36:36 +00:00
..
Archive.cpp Next step along the way to getting good error messages for bad archives. 2016-07-25 20:36:36 +00:00
ArchiveWriter.cpp Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
Binary.cpp Change Archive::create() from ErrorOr<...> to Expected<...> and update 2016-06-29 20:35:44 +00:00
CMakeLists.txt [CMake] Restrict libxar linkage to just llvm-objdump 2016-05-26 16:32:40 +00:00
COFFObjectFile.cpp [Object, COFF] An import data directory might not consist soley of imports 2016-06-26 04:36:32 +00:00
ELF.cpp BPF: Use official ELF e_machine value 2016-07-15 22:27:55 +00:00
ELFObjectFile.cpp [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
Error.cpp Add FIXMEs to all derived classes of std::error_category. 2016-05-24 20:13:46 +00:00
IRObjectFile.cpp function_refify. NFC. 2016-07-01 11:05:15 +00:00
LLVMBuild.txt
MachOObjectFile.cpp [Support] Make ErrorAsOutParameter take an Error* rather than an Error&. 2016-07-22 16:11:25 +00:00
MachOUniversal.cpp [Support] Make ErrorAsOutParameter take an Error* rather than an Error&. 2016-07-22 16:11:25 +00:00
ModuleSummaryIndexObjectFile.cpp Apply another batch of fixes from clang-tidy's performance-unnecessary-value-param. 2016-06-17 20:41:14 +00:00
Object.cpp Thread Expected<...> up from libObject’s getSymbolAddress() for symbols to allow 2016-06-24 18:24:42 +00:00
ObjectFile.cpp Thread Expected<...> up from libObject’s getType() for symbols to allow llvm-objdump to produce a good error message. 2016-05-02 20:28:12 +00:00
RecordStreamer.cpp [IRObjectFile] Propagate .weak attribute correctly for ASM symbols. 2016-06-22 20:48:15 +00:00
RecordStreamer.h [IRObjectFile] Propagate .weak attribute correctly for ASM symbols. 2016-06-22 20:48:15 +00:00
SymbolSize.cpp [SymbolSize] Skip sorting by index, just assign by index. 2015-06-29 16:05:00 +00:00
SymbolicFile.cpp Thread Expected<...> up from createMachOObjectFile() to allow llvm-objdump to produce a real error message 2016-04-06 22:14:09 +00:00