18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file jitdump.h 38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Header structure of a JIT-dump file. 48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2007 OProfile authors 68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING 78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Jens Wilke 98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @Modifications Daniel Hansel 108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Copyright IBM Corporation 2007 128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <sys/time.h> 168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <time.h> 178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdint.h> 188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_types.h" 208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#ifndef JITDUMP_H 228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define JITDUMP_H 238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /** 258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Magic to do a sanity check that this is a dump file 268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * characters "jItO" */ 278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define JITHEADER_MAGIC 0x4F74496A 288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Macro to calculate count of padding bytes 318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * to extend a size to be 8-byte aligned. */ 328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7) 338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Version number to avoid conflicts, increase 368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * this whenever the header is changed */ 378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define JITHEADER_VERSION 1 388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct jitheader { 408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /* characters "jItO" */ 418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 magic; 428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /* version of the dump */ 438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 version; 448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 totalsize; 458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 bfd_arch; 468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 bfd_mach; 478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 timestamp; 488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd char bfd_target[0]; 498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddenum jit_record_type { 528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd JIT_CODE_LOAD=0, 538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd JIT_CODE_UNLOAD=1, 548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd JIT_CODE_CLOSE=2, 558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd JIT_CODE_DEBUG_INFO=3 568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/* each record starts always with a id and a total_size */ 598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct jr_prefix { 608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 id; 618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 total_size; 628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/* record0 (id=0) logs a jitted code */ 658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct jr_code_load { 668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 id; 678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 total_size; 688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 timestamp; 698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 vma; 708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 code_addr; 718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 code_size; 728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 align; 738cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 748cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 758cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/* record1 (id=1) logs a code unload */ 768cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct jr_code_unload { 778cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 id; 788cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 total_size; 798cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 timestamp; 808cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 vma; 818cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 828cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 838cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/* record2 (id=2) logs end of JVM livetime */ 848cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct jr_code_close { 858cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 id; 868cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 total_size; 878cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 timestamp; 888cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 898cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 908cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/* record3 (id=3) logs debug line information. */ 918cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct jr_code_debug_info { 928cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 id; 938cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 total_size; 948cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 timestamp; 958cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u64 code_addr; 968cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 nr_entry; 978cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd u32 align; 988cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 998cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 1008cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#endif /* !JITDUMP_H */ 1018cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 102