1/*===-- llvm-c/Support.h - Support C Interface --------------------*- C -*-===*\
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 the C interface to the LLVM support library.             *|
11|*                                                                            *|
12\*===----------------------------------------------------------------------===*/
13
14#ifndef LLVM_C_SUPPORT_H
15#define LLVM_C_SUPPORT_H
16
17#include "llvm/Support/DataTypes.h"
18#include "llvm-c/Types.h"
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24/**
25 * This function permanently loads the dynamic library at the given path.
26 * It is safe to call this function multiple times for the same library.
27 *
28 * @see sys::DynamicLibrary::LoadLibraryPermanently()
29  */
30LLVMBool LLVMLoadLibraryPermanently(const char* Filename);
31
32/**
33 * This function parses the given arguments using the LLVM command line parser.
34 * Note that the only stable thing about this function is its signature; you
35 * cannot rely on any particular set of command line arguments being interpreted
36 * the same way across LLVM versions.
37 *
38 * @see llvm::cl::ParseCommandLineOptions()
39 */
40void LLVMParseCommandLineOptions(int argc, const char *const *argv,
41                                 const char *Overview);
42
43/**
44 * This function will search through all previously loaded dynamic
45 * libraries for the symbol \p symbolName. If it is found, the address of
46 * that symbol is returned. If not, null is returned.
47 *
48 * @see sys::DynamicLibrary::SearchForAddressOfSymbol()
49 */
50void *LLVMSearchForAddressOfSymbol(const char *symbolName);
51
52/**
53 * This functions permanently adds the symbol \p symbolName with the
54 * value \p symbolValue.  These symbols are searched before any
55 * libraries.
56 *
57 * @see sys::DynamicLibrary::AddSymbol()
58 */
59void LLVMAddSymbol(const char *symbolName, void *symbolValue);
60
61#ifdef __cplusplus
62}
63#endif
64
65#endif
66