mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-25 10:27:04 +00:00
LTO: introduce object file-based on-disk module format.
This format is simply a regular object file with the bitcode stored in a section named ".llvmbc", plus any number of other (non-allocated) sections. One immediate use case for this is to accommodate compilation processes which expect the object file to contain metadata in non-allocated sections, such as the ".go_export" section used by some Go compilers [1], although I imagine that in the future we could consider compiling parts of the module (such as large non-inlinable functions) directly into the object file to improve LTO efficiency. [1] http://golang.org/doc/install/gccgo#Imports Differential Revision: http://reviews.llvm.org/D4371 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218078 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -149,6 +149,9 @@ cl::list<std::string> SegSect("s", cl::Positional, cl::ZeroOrMore,
|
||||
cl::opt<bool> FormatMachOasHex("x", cl::desc("Print symbol entry in hex, "
|
||||
"Mach-O only"));
|
||||
|
||||
cl::opt<bool> NoLLVMBitcode("no-llvm-bc",
|
||||
cl::desc("Disable LLVM bitcode reader"));
|
||||
|
||||
bool PrintAddress = true;
|
||||
|
||||
bool MultipleFiles = false;
|
||||
@@ -1009,8 +1012,8 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
|
||||
return;
|
||||
|
||||
LLVMContext &Context = getGlobalContext();
|
||||
ErrorOr<std::unique_ptr<Binary>> BinaryOrErr =
|
||||
createBinary(BufferOrErr.get()->getMemBufferRef(), &Context);
|
||||
ErrorOr<std::unique_ptr<Binary>> BinaryOrErr = createBinary(
|
||||
BufferOrErr.get()->getMemBufferRef(), NoLLVMBitcode ? nullptr : &Context);
|
||||
if (error(BinaryOrErr.getError(), Filename))
|
||||
return;
|
||||
Binary &Bin = *BinaryOrErr.get();
|
||||
|
||||
Reference in New Issue
Block a user