xref: /llvm-project/lldb/test/API/functionalities/jitloader_gdb/main.c (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <inttypes.h>
2*99451b44SJordan Rupprecht 
3*99451b44SJordan Rupprecht // GDB JIT interface
4*99451b44SJordan Rupprecht enum JITAction { JIT_NOACTION, JIT_REGISTER_FN, JIT_UNREGISTER_FN };
5*99451b44SJordan Rupprecht 
6*99451b44SJordan Rupprecht struct JITCodeEntry
7*99451b44SJordan Rupprecht {
8*99451b44SJordan Rupprecht     struct JITCodeEntry* next;
9*99451b44SJordan Rupprecht     struct JITCodeEntry* prev;
10*99451b44SJordan Rupprecht     const char *symfile_addr;
11*99451b44SJordan Rupprecht     uint64_t symfile_size;
12*99451b44SJordan Rupprecht };
13*99451b44SJordan Rupprecht 
14*99451b44SJordan Rupprecht struct JITDescriptor
15*99451b44SJordan Rupprecht {
16*99451b44SJordan Rupprecht     uint32_t version;
17*99451b44SJordan Rupprecht     uint32_t action_flag;
18*99451b44SJordan Rupprecht     struct JITCodeEntry* relevant_entry;
19*99451b44SJordan Rupprecht     struct JITCodeEntry* first_entry;
20*99451b44SJordan Rupprecht };
21*99451b44SJordan Rupprecht 
22*99451b44SJordan Rupprecht struct JITDescriptor __jit_debug_descriptor = { 1, JIT_NOACTION, 0, 0 };
23*99451b44SJordan Rupprecht 
__jit_debug_register_code()24*99451b44SJordan Rupprecht void __jit_debug_register_code()
25*99451b44SJordan Rupprecht {
26*99451b44SJordan Rupprecht }
27*99451b44SJordan Rupprecht // end GDB JIT interface
28*99451b44SJordan Rupprecht 
29*99451b44SJordan Rupprecht struct JITCodeEntry entry;
30*99451b44SJordan Rupprecht 
main()31*99451b44SJordan Rupprecht int main()
32*99451b44SJordan Rupprecht {
33*99451b44SJordan Rupprecht     // Create a code entry with a bogus size
34*99451b44SJordan Rupprecht     entry.next = entry.prev = 0;
35*99451b44SJordan Rupprecht     entry.symfile_addr = (char *)&entry;
36*99451b44SJordan Rupprecht     entry.symfile_size = (uint64_t)47<<32;
37*99451b44SJordan Rupprecht 
38*99451b44SJordan Rupprecht     __jit_debug_descriptor.relevant_entry = __jit_debug_descriptor.first_entry = &entry;
39*99451b44SJordan Rupprecht     __jit_debug_descriptor.action_flag = JIT_REGISTER_FN;
40*99451b44SJordan Rupprecht 
41*99451b44SJordan Rupprecht     __jit_debug_register_code();
42*99451b44SJordan Rupprecht 
43*99451b44SJordan Rupprecht     return 0;
44*99451b44SJordan Rupprecht }
45