/** * @file jitdump.h * Header structure of a JIT-dump file. * * @remark Copyright 2007 OProfile authors * @remark Read the file COPYING * * @author Jens Wilke * @Modifications Daniel Hansel * * Copyright IBM Corporation 2007 * */ #include <sys/time.h> #include <time.h> #include <stdint.h> #include "op_types.h" #ifndef JITDUMP_H #define JITDUMP_H /** * Magic to do a sanity check that this is a dump file * characters "jItO" */ #define JITHEADER_MAGIC 0x4F74496A /** * Macro to calculate count of padding bytes * to extend a size to be 8-byte aligned. */ #define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7) /** * Version number to avoid conflicts, increase * this whenever the header is changed */ #define JITHEADER_VERSION 1 struct jitheader { /* characters "jItO" */ u32 magic; /* version of the dump */ u32 version; u32 totalsize; u32 bfd_arch; u32 bfd_mach; u64 timestamp; char bfd_target[0]; }; enum jit_record_type { JIT_CODE_LOAD=0, JIT_CODE_UNLOAD=1, JIT_CODE_CLOSE=2, JIT_CODE_DEBUG_INFO=3 }; /* each record starts always with a id and a total_size */ struct jr_prefix { u32 id; u32 total_size; }; /* record0 (id=0) logs a jitted code */ struct jr_code_load { u32 id; u32 total_size; u64 timestamp; u64 vma; u64 code_addr; u32 code_size; u32 align; }; /* record1 (id=1) logs a code unload */ struct jr_code_unload { u32 id; u32 total_size; u64 timestamp; u64 vma; }; /* record2 (id=2) logs end of JVM livetime */ struct jr_code_close { u32 id; u32 total_size; u64 timestamp; }; /* record3 (id=3) logs debug line information. */ struct jr_code_debug_info { u32 id; u32 total_size; u64 timestamp; u64 code_addr; u32 nr_entry; u32 align; }; #endif /* !JITDUMP_H */