]>
git.proxmox.com Git - rustc.git/blob - compiler/rustc_llvm/llvm-wrapper/Linker.cpp
1 #include "llvm/Linker/Linker.h"
3 #include "LLVMWrapper.h"
11 RustLinker(Module
&M
) :
17 extern "C" RustLinker
*
18 LLVMRustLinkerNew(LLVMModuleRef DstRef
) {
19 Module
*Dst
= unwrap(DstRef
);
21 return new RustLinker(*Dst
);
25 LLVMRustLinkerFree(RustLinker
*L
) {
30 LLVMRustLinkerAdd(RustLinker
*L
, char *BC
, size_t Len
) {
31 std::unique_ptr
<MemoryBuffer
> Buf
=
32 MemoryBuffer::getMemBufferCopy(StringRef(BC
, Len
));
34 Expected
<std::unique_ptr
<Module
>> SrcOrError
=
35 llvm::getLazyBitcodeModule(Buf
->getMemBufferRef(), L
->Ctx
);
37 LLVMRustSetLastError(toString(SrcOrError
.takeError()).c_str());
41 auto Src
= std::move(*SrcOrError
);
43 if (L
->L
.linkInModule(std::move(Src
))) {
44 LLVMRustSetLastError("");