1//===- linker.go - Bindings for linker ------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines bindings for the linker component. 11// 12//===----------------------------------------------------------------------===// 13 14package llvm 15 16/* 17#include "llvm-c/Linker.h" 18#include <stdlib.h> 19*/ 20import "C" 21import "errors" 22 23type LinkerMode C.LLVMLinkerMode 24 25const ( 26 LinkerDestroySource = C.LLVMLinkerDestroySource 27 LinkerPreserveSource = C.LLVMLinkerPreserveSource 28) 29 30func LinkModules(Dest, Src Module, Mode LinkerMode) error { 31 var cmsg *C.char 32 failed := C.LLVMLinkModules(Dest.C, Src.C, C.LLVMLinkerMode(Mode), &cmsg) 33 if failed != 0 { 34 err := errors.New(C.GoString(cmsg)) 35 C.LLVMDisposeMessage(cmsg) 36 return err 37 } 38 return nil 39} 40