jitdump.h revision 8cfa702f803c5ef6a2b062a489a1b2cf66b45b5e
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