| #include <inttypes.h> |
| |
| // GDB JIT interface |
| enum JITAction { JIT_NOACTION, JIT_REGISTER_FN, JIT_UNREGISTER_FN }; |
| |
| struct JITCodeEntry |
| { |
| struct JITCodeEntry* next; |
| struct JITCodeEntry* prev; |
| const char *symfile_addr; |
| uint64_t symfile_size; |
| }; |
| |
| struct JITDescriptor |
| { |
| uint32_t version; |
| uint32_t action_flag; |
| struct JITCodeEntry* relevant_entry; |
| struct JITCodeEntry* first_entry; |
| }; |
| |
| struct JITDescriptor __jit_debug_descriptor = { 1, JIT_NOACTION, 0, 0 }; |
| |
| void __jit_debug_register_code() |
| { |
| } |
| // end GDB JIT interface |
| |
| struct JITCodeEntry entry; |
| |
| int main() |
| { |
| // Create a code entry with a bogus size |
| entry.next = entry.prev = 0; |
| entry.symfile_addr = (char *)&entry; |
| entry.symfile_size = (uint64_t)47<<32; |
| |
| __jit_debug_descriptor.relevant_entry = __jit_debug_descriptor.first_entry = &entry; |
| __jit_debug_descriptor.action_flag = JIT_REGISTER_FN; |
| |
| __jit_debug_register_code(); |
| |
| return 0; |
| } |