1 //===- JITLoaderGDB.h - Register objects via GDB JIT interface -*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // Register objects for access by debuggers via the GDB JIT interface. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_EXECUTIONENGINE_ORC_TARGETPROCESS_JITLOADERGDB_H 14 #define LLVM_EXECUTIONENGINE_ORC_TARGETPROCESS_JITLOADERGDB_H 15 16 #include "llvm/ExecutionEngine/Orc/Shared/WrapperFunctionUtils.h" 17 #include <cstdint> 18 19 // Keep in sync with gdb/gdb/jit.h 20 extern "C" { 21 22 typedef enum { 23 JIT_NOACTION = 0, 24 JIT_REGISTER_FN, 25 JIT_UNREGISTER_FN 26 } jit_actions_t; 27 28 struct jit_code_entry { 29 struct jit_code_entry *next_entry; 30 struct jit_code_entry *prev_entry; 31 const char *symfile_addr; 32 uint64_t symfile_size; 33 }; 34 35 struct jit_descriptor { 36 uint32_t version; 37 // This should be jit_actions_t, but we want to be specific about the 38 // bit-width. 39 uint32_t action_flag; 40 struct jit_code_entry *relevant_entry; 41 struct jit_code_entry *first_entry; 42 }; 43 } 44 45 extern "C" llvm::orc::shared::CWrapperFunctionResult 46 llvm_orc_registerJITLoaderGDBWrapper(const char *Data, uint64_t Size); 47 48 extern "C" llvm::orc::shared::CWrapperFunctionResult 49 llvm_orc_registerJITLoaderGDBAllocAction(const char *Data, size_t Size); 50 51 #endif // LLVM_EXECUTIONENGINE_ORC_TARGETPROCESS_JITLOADERGDB_H 52