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