1*fe6060f1SDimitry Andric //===- macho_platform.h -----------------------------------------*- C++ -*-===// 2*fe6060f1SDimitry Andric // 3*fe6060f1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*fe6060f1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*fe6060f1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*fe6060f1SDimitry Andric // 7*fe6060f1SDimitry Andric //===----------------------------------------------------------------------===// 8*fe6060f1SDimitry Andric // 9*fe6060f1SDimitry Andric // ORC Runtime support for Darwin dynamic loading features. 10*fe6060f1SDimitry Andric // 11*fe6060f1SDimitry Andric //===----------------------------------------------------------------------===// 12*fe6060f1SDimitry Andric 13*fe6060f1SDimitry Andric #ifndef ORC_RT_MACHO_PLATFORM_H 14*fe6060f1SDimitry Andric #define ORC_RT_MACHO_PLATFORM_H 15*fe6060f1SDimitry Andric 16*fe6060f1SDimitry Andric #include "common.h" 17*fe6060f1SDimitry Andric #include "executor_address.h" 18*fe6060f1SDimitry Andric 19*fe6060f1SDimitry Andric // Atexit functions. 20*fe6060f1SDimitry Andric ORC_RT_INTERFACE int __orc_rt_macho_cxa_atexit(void (*func)(void *), void *arg, 21*fe6060f1SDimitry Andric void *dso_handle); 22*fe6060f1SDimitry Andric ORC_RT_INTERFACE void __orc_rt_macho_cxa_finalize(void *dso_handle); 23*fe6060f1SDimitry Andric 24*fe6060f1SDimitry Andric // dlfcn functions. 25*fe6060f1SDimitry Andric ORC_RT_INTERFACE const char *__orc_rt_macho_jit_dlerror(); 26*fe6060f1SDimitry Andric ORC_RT_INTERFACE void *__orc_rt_macho_jit_dlopen(const char *path, int mode); 27*fe6060f1SDimitry Andric ORC_RT_INTERFACE int __orc_rt_macho_jit_dlclose(void *dso_handle); 28*fe6060f1SDimitry Andric ORC_RT_INTERFACE void *__orc_rt_macho_jit_dlsym(void *dso_handle, 29*fe6060f1SDimitry Andric const char *symbol); 30*fe6060f1SDimitry Andric 31*fe6060f1SDimitry Andric namespace __orc_rt { 32*fe6060f1SDimitry Andric namespace macho { 33*fe6060f1SDimitry Andric 34*fe6060f1SDimitry Andric enum dlopen_mode : int { 35*fe6060f1SDimitry Andric ORC_RT_RTLD_LAZY = 0x1, 36*fe6060f1SDimitry Andric ORC_RT_RTLD_NOW = 0x2, 37*fe6060f1SDimitry Andric ORC_RT_RTLD_LOCAL = 0x4, 38*fe6060f1SDimitry Andric ORC_RT_RTLD_GLOBAL = 0x8 39*fe6060f1SDimitry Andric }; 40*fe6060f1SDimitry Andric 41*fe6060f1SDimitry Andric } // end namespace macho 42*fe6060f1SDimitry Andric } // end namespace __orc_rt 43*fe6060f1SDimitry Andric 44*fe6060f1SDimitry Andric #endif // ORC_RT_MACHO_PLATFORM_H 45