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 39struct 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 51enum 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 */ 59struct jr_prefix { 60 u32 id; 61 u32 total_size; 62}; 63 64/* record0 (id=0) logs a jitted code */ 65struct 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 */ 76struct 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 */ 84struct jr_code_close { 85 u32 id; 86 u32 total_size; 87 u64 timestamp; 88}; 89 90/* record3 (id=3) logs debug line information. */ 91struct 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