llvm-project/llvm/lib/Object
Rafael Espindola 476a7f9293 Pre-compute the tail of the archive
An archive looks like

<header>
<symbol table>
<tail>

The symbol table refers to offsets in the tail. A complication is that
we would like to support symbol tables that use 64 bit offsets if it
turns out that any of the offsets is too big.

This patch changes the archive writer to first compute the tail. We
cannot just compute one big StringRef since that would require reading
every member upfront, but we can represent it as a series of
StringRefs.

Having done that it is much easier to compute the symbol table and all
offsets are computed before it is written. With this if there is an
accounting problem it will show up with a regular symbol table, not
just when a 64 bit one is needed.

llvm-svn: 314844
2017-10-03 20:59:43 +00:00
..
Archive.cpp Rename K_MIPS64 to K_GNU64 2017-09-20 18:23:01 +00:00
ArchiveWriter.cpp Pre-compute the tail of the archive 2017-10-03 20:59:43 +00:00
Binary.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
CMakeLists.txt Bitcode: Write the irsymtab to disk. 2017-06-27 23:50:11 +00:00
COFFImportFile.cpp Convert the archive writer to use Error. 2017-09-21 23:13:36 +00:00
COFFModuleDefinition.cpp [llvm-dlltool] Fix creating stdcall/fastcall import libraries for i386 2017-08-16 05:18:36 +00:00
COFFObjectFile.cpp [Object] Verify object sizes before handing out StringRefs pointing out 2017-08-31 12:27:10 +00:00
Decompressor.cpp Revert "[Decompression] Fail gracefully when out of memory" 2017-09-05 22:04:00 +00:00
ELF.cpp [ARC] Prepare the implementation of relocation for LLD 2017-09-13 01:49:49 +00:00
ELFObjectFile.cpp [Triple] Add isThumb and isARM functions. 2017-08-12 17:40:18 +00:00
Error.cpp Make the Error class constructor protected 2016-11-11 04:28:40 +00:00
IRObjectFile.cpp Bitcode: Introduce a BitcodeFileContents data type. NFCI. 2017-06-08 22:00:24 +00:00
IRSymtab.cpp Object: Downgrade invalid weak externals from an assert fail to an llvm::Error when creating an irsymtab. 2017-09-07 01:33:52 +00:00
LLVMBuild.txt Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MachOObjectFile.cpp [dwarfdump] Skip 'stripped' sections 2017-09-26 14:22:35 +00:00
MachOUniversal.cpp Fix a bugs with using some Mach-O command line flags like "-arch armv7m". 2016-12-16 22:54:02 +00:00
ModuleSymbolTable.cpp Don't pass the code model to MC 2017-08-02 20:32:26 +00:00
Object.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ObjectFile.cpp [dwarfdump] Skip 'stripped' sections 2017-09-26 14:22:35 +00:00
RecordStreamer.cpp [Object] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-04-24 23:21:38 +00:00
RecordStreamer.h [Object] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-04-24 23:21:38 +00:00
SymbolSize.cpp Fix llvm-symbolizer to correctly sort a symbol array and calculate symbol sizes 2016-11-15 21:07:03 +00:00
SymbolicFile.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
WasmObjectFile.cpp [WebAssembly] Allow each data segment to specify its own alignment 2017-09-29 16:50:08 +00:00
WindowsResource.cpp Fix bug 34051 by handling empty .res files gracefully. 2017-08-24 02:36:50 +00:00