diff options
author | Sam Clegg <sbc@chromium.org> | 2018-06-28 17:04:58 +0000 |
---|---|---|
committer | Sam Clegg <sbc@chromium.org> | 2018-06-28 17:04:58 +0000 |
commit | ce004bfe35c20d227865605427a11ff90ccb23b3 (patch) | |
tree | 3860ac0f4012651820b01211552863326a4e5968 /lld/wasm/InputFiles.cpp | |
parent | da5e7e11d1072ea13460f0b4ca77b7de35bf2bb8 (diff) | |
download | bcm5719-llvm-ce004bfe35c20d227865605427a11ff90ccb23b3.tar.gz bcm5719-llvm-ce004bfe35c20d227865605427a11ff90ccb23b3.zip |
[WebAssembly] Add support for bitcode archive members
This change effects the behavior of --export-all. Previously
--export-all would only effect symbols that survived GC. Now
--export-all will prevent any non-local symbols from being GCed.
Differential Revision: https://reviews.llvm.org/D48673
llvm-svn: 335878
Diffstat (limited to 'lld/wasm/InputFiles.cpp')
-rw-r--r-- | lld/wasm/InputFiles.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lld/wasm/InputFiles.cpp b/lld/wasm/InputFiles.cpp index ee9e99bd775..55392ccd34f 100644 --- a/lld/wasm/InputFiles.cpp +++ b/lld/wasm/InputFiles.cpp @@ -360,12 +360,18 @@ void ArchiveFile::addMember(const Archive::Symbol *Sym) { "could not get the buffer for the member defining symbol " + Sym->getName()); - if (identify_magic(MB.getBuffer()) != file_magic::wasm_object) { + InputFile *Obj; + + file_magic Magic = identify_magic(MB.getBuffer()); + if (Magic == file_magic::wasm_object) { + Obj = make<ObjFile>(MB); + } else if (Magic == file_magic::bitcode) { + Obj = make<BitcodeFile>(MB); + } else { error("unknown file type: " + MB.getBufferIdentifier()); return; } - InputFile *Obj = make<ObjFile>(MB); Obj->ParentName = ParentName; Symtab->addFile(Obj); } |