1 JITDUMP specification version 2 2 Last Revised: 09/15/2016 3 Author: Stephane Eranian <eranian@gmail.com> 4 5 ---------------------------------------------- 6 | Revision | Date | Description 7 ---------------------------------------------- 8 | 1 | 09/07/2016 | Initial revision 9 ---------------------------------------------- 10 | 2 | 09/15/2016 | Add JIT_CODE_UNWIND 11 ---------------------------------------------- 12 13 14 I/ Introduction 15 16 17 This document describes the jitdump file forma 18 19 The format is not specific to any particular p 20 21 The format of the file is binary. It is self-d 22 23 24 II/ Overview of the format 25 26 27 The format requires only sequential accesses, 28 29 The header is followed by a series of records, 30 31 Each entry in the file is timestamped. All tim 32 33 34 III/ Jitdump file header format 35 36 Each jitdump file starts with a fixed size hea 37 38 39 * uint32_t magic : a magic number tagging 40 * uint32_t version : a 4-byte value represen 41 * uint32_t total_size: size in bytes of file h 42 * uint32_t elf_mach : ELF architecture encodi 43 * uint32_t pad1 : padding. Reserved for f 44 * uint32_t pid : JIT runtime process ide 45 * uint64_t timestamp : timestamp of when the f 46 * uint64_t flags : a bitmask of flags 47 48 The flags currently defined are as follows: 49 * bit 0: JITDUMP_FLAGS_ARCH_TIMESTAMP : set i 50 51 IV/ Record header 52 53 The file header is immediately followed by rec 54 55 The record header is specified in order as fol 56 * uint32_t id : a value identifying the 57 * uint32_t total_size: the size in bytes of th 58 * uint64_t timestamp : a timestamp of when the 59 60 The following record types are defined: 61 * Value 0 : JIT_CODE_LOAD : record descr 62 * Value 1 : JIT_CODE_MOVE : record descr 63 * Value 2 : JIT_CODE_DEBUG_INFO: record descr 64 * Value 3 : JIT_CODE_CLOSE : record marki 65 * Value 4 : JIT_CODE_UNWINDING_INFO: record d 66 67 The payload of the record must immediately fo 68 69 V/ JIT_CODE_LOAD record 70 71 72 The record has the following fields followin 73 * uint32_t pid: OS process id of the runtime 74 * uint32_t tid: OS thread identification of 75 * uint64_t vma: virtual address of jitted co 76 * uint64_t code_addr: code start address for 77 * uint64_t code_size: size in bytes of the g 78 * uint64_t code_index: unique identifier for 79 * char[n]: function name in ASCII including 80 * native code: raw byte encoding of the jitt 81 82 The record header total_size field is inclus 83 * record header 84 * fixed-sized fields 85 * function name string, including terminatio 86 * native code length 87 * record specific variable data (e.g., array 88 89 The code_index is used to uniquely identify ea 90 91 The format supports empty functions with no na 92 93 94 VI/ JIT_CODE_MOVE record 95 96 The record type is optional. 97 98 The record has the following fields followin 99 * uint32_t pid : OS process id of t 100 * uint32_t tid : OS thread identifi 101 * uint64_t vma : new virtual addres 102 * uint64_t old_code_addr: previous code addr 103 * uint64_t new_code_addr: alternate new code 104 * uint64_t code_size : size in bytes of t 105 * uint64_t code_index : index referring to 106 107 108 The MOVE record can be used in case an already 109 110 The JIT_CODE_MOVE record cannot come before th 111 112 The code size of the function cannot change. 113 114 115 VII/ JIT_DEBUG_INFO record 116 117 The record type is optional. 118 119 The record contains source lines debug informa 120 121 The record has the following fields following 122 * uint64_t code_addr: address of function fo 123 * uint64_t nr_entry : number of debug entrie 124 * debug_entry[n]: array of nr_entry debug en 125 126 The debug_entry describes the source line info 127 * uint64_t code_addr: address of function for 128 * uint32_t line : source file line number 129 * uint32_t discrim : column discriminator, 0 130 * char name[n] : source file name in ASCI 131 132 The debug_entry entries are saved in sequence 133 They need to be walked sequentially. The next 134 135 IMPORTANT: 136 The JIT_CODE_DEBUG for a given function must 137 138 139 VIII/ JIT_CODE_CLOSE record 140 141 142 The record type is optional. 143 144 The record is used as a marker for the end of 145 146 The JIT_CODE_CLOSE record does not have any sp 147 148 149 IX/ JIT_CODE_UNWINDING_INFO 150 151 152 The record type is optional. 153 154 The record is used to describe the unwinding i 155 156 The record has the following fields following 157 158 uint64_t unwind_data_size : the size in byte 159 uint64_t eh_frame_hdr_size : the size in byte 160 uint64_t mapped_size : the size of the 161 const char unwinding_data[n]: an array of unwi 162 163 164 The EH Frame header follows the Linux Standard 165 166 167 The EH Frame follows the LSB specification as 168 169 170 NOTE: The mapped_size is generally either the
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.