1*bdd1243dSDimitry Andric //===- coff_platform.h -------------------------------------------*- C++-*-===//
2*bdd1243dSDimitry Andric //
3*bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*bdd1243dSDimitry Andric //
7*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
8*bdd1243dSDimitry Andric //
9*bdd1243dSDimitry Andric // ORC Runtime support for dynamic loading features on COFF-based platforms.
10*bdd1243dSDimitry Andric //
11*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
12*bdd1243dSDimitry Andric 
13*bdd1243dSDimitry Andric #ifndef ORC_RT_COFF_PLATFORM_H
14*bdd1243dSDimitry Andric #define ORC_RT_COFF_PLATFORM_H
15*bdd1243dSDimitry Andric 
16*bdd1243dSDimitry Andric #include "common.h"
17*bdd1243dSDimitry Andric #include "executor_address.h"
18*bdd1243dSDimitry Andric 
19*bdd1243dSDimitry Andric // dlfcn functions.
20*bdd1243dSDimitry Andric ORC_RT_INTERFACE const char *__orc_rt_coff_jit_dlerror();
21*bdd1243dSDimitry Andric ORC_RT_INTERFACE void *__orc_rt_coff_jit_dlopen(const char *path, int mode);
22*bdd1243dSDimitry Andric ORC_RT_INTERFACE int __orc_rt_coff_jit_dlclose(void *header);
23*bdd1243dSDimitry Andric ORC_RT_INTERFACE void *__orc_rt_coff_jit_dlsym(void *header,
24*bdd1243dSDimitry Andric                                                const char *symbol);
25*bdd1243dSDimitry Andric 
26*bdd1243dSDimitry Andric namespace __orc_rt {
27*bdd1243dSDimitry Andric namespace coff {
28*bdd1243dSDimitry Andric 
29*bdd1243dSDimitry Andric enum dlopen_mode : int {
30*bdd1243dSDimitry Andric   ORC_RT_RTLD_LAZY = 0x1,
31*bdd1243dSDimitry Andric   ORC_RT_RTLD_NOW = 0x2,
32*bdd1243dSDimitry Andric   ORC_RT_RTLD_LOCAL = 0x4,
33*bdd1243dSDimitry Andric   ORC_RT_RTLD_GLOBAL = 0x8
34*bdd1243dSDimitry Andric };
35*bdd1243dSDimitry Andric 
36*bdd1243dSDimitry Andric } // end namespace coff
37*bdd1243dSDimitry Andric } // end namespace __orc_rt
38*bdd1243dSDimitry Andric 
39*bdd1243dSDimitry Andric #endif
40