1d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#ifndef JITDUMP_H 2d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#define JITDUMP_H 3d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 4d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#include <sys/time.h> 5d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#include <time.h> 6d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#include <stdint.h> 7d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 8d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org/* JiTD */ 9d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#define JITHEADER_MAGIC 0x4A695444 10d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#define JITHEADER_MAGIC_SW 0x4454694A 11d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 12d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7) 13d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 14d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#define JITHEADER_VERSION 1 15d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 16d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgstruct jitheader { 17d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t magic; /* characters "jItD" */ 18d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t version; /* header version */ 19d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t total_size; /* total size of header */ 20d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t elf_mach; /* elf mach target */ 21d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t pad1; /* reserved */ 22d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t pid; /* JIT process id */ 23d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t timestamp; /* timestamp */ 24d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 25d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 26d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgenum jit_record_type { 27d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org JIT_CODE_LOAD = 0, 28d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org JIT_CODE_MOVE = 1, 29d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org JIT_CODE_DEBUG_INFO = 2, 30d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org JIT_CODE_CLOSE = 3, 31d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org JIT_CODE_MAX 32d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 33d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 34d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org/* record prefix (mandatory in each record) */ 35d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgstruct jr_prefix { 36d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t id; 37d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t total_size; 38d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t timestamp; 39d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 40d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 41d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgstruct jr_code_load { 42d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_prefix p; 43d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 44d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t pid; 45d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t tid; 46d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t vma; 47d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t code_addr; 48d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t code_size; 49d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t code_index; 50d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 51d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 52d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgstruct jr_code_close { 53d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_prefix p; 54d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 55d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 56d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgstruct jr_code_move { 57d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_prefix p; 58d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 59d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t pid; 60d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint32_t tid; 61d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t vma; 62d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t old_code_addr; 63d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t new_code_addr; 64d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t code_size; 65d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t code_index; 66d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 67d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 68d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgstruct jr_code_debug_info { 69d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_prefix p; 70d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 71d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t code_addr; 72d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org uint64_t nr_entry; 73d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 74d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 75d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.orgunion jr_entry { 76d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_code_debug_info info; 77d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_code_close close; 78d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_code_load load; 79d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_code_move move; 80d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org struct jr_prefix prefix; 81d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org}; 82d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org 83d0bddc653152f270a27fe32d5d7b0f5c0fa3b00cmachenbach@chromium.org#endif /* !JITDUMP_H */ 84