1 /** 2 * @file jitdump.h 3 * Header structure of a JIT-dump file. 4 * 5 * @remark Copyright 2007 OProfile authors 6 * @remark Read the file COPYING 7 * 8 * @author Jens Wilke 9 * @Modifications Daniel Hansel 10 * 11 * Copyright IBM Corporation 2007 12 * 13 */ 14 15 #include <sys/time.h> 16 #include <time.h> 17 #include <stdint.h> 18 19 #include "op_types.h" 20 21 #ifndef JITDUMP_H 22 #define JITDUMP_H 23 24 /** 25 * Magic to do a sanity check that this is a dump file 26 * characters "jItO" */ 27 #define JITHEADER_MAGIC 0x4F74496A 28 29 /** 30 * Macro to calculate count of padding bytes 31 * to extend a size to be 8-byte aligned. */ 32 #define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7) 33 34 /** 35 * Version number to avoid conflicts, increase 36 * this whenever the header is changed */ 37 #define JITHEADER_VERSION 1 38 39 struct jitheader { 40 /* characters "jItO" */ 41 u32 magic; 42 /* version of the dump */ 43 u32 version; 44 u32 totalsize; 45 u32 bfd_arch; 46 u32 bfd_mach; 47 u64 timestamp; 48 char bfd_target[0]; 49 }; 50 51 enum jit_record_type { 52 JIT_CODE_LOAD=0, 53 JIT_CODE_UNLOAD=1, 54 JIT_CODE_CLOSE=2, 55 JIT_CODE_DEBUG_INFO=3 56 }; 57 58 /* each record starts always with a id and a total_size */ 59 struct jr_prefix { 60 u32 id; 61 u32 total_size; 62 }; 63 64 /* record0 (id=0) logs a jitted code */ 65 struct jr_code_load { 66 u32 id; 67 u32 total_size; 68 u64 timestamp; 69 u64 vma; 70 u64 code_addr; 71 u32 code_size; 72 u32 align; 73 }; 74 75 /* record1 (id=1) logs a code unload */ 76 struct jr_code_unload { 77 u32 id; 78 u32 total_size; 79 u64 timestamp; 80 u64 vma; 81 }; 82 83 /* record2 (id=2) logs end of JVM livetime */ 84 struct jr_code_close { 85 u32 id; 86 u32 total_size; 87 u64 timestamp; 88 }; 89 90 /* record3 (id=3) logs debug line information. */ 91 struct jr_code_debug_info { 92 u32 id; 93 u32 total_size; 94 u64 timestamp; 95 u64 code_addr; 96 u32 nr_entry; 97 u32 align; 98 }; 99 100 #endif /* !JITDUMP_H */ 101 102