xref: /aosp_15_r20/cts/hostsidetests/gwp_asan/common/proto/tombstone.proto (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker////////////////////////////////////////////////////////////////////////////////
2*b7c941bbSAndroid Build Coastguard Worker//
3*b7c941bbSAndroid Build Coastguard Worker//  Copied from AOSP:
4*b7c941bbSAndroid Build Coastguard Worker//    - system/core/debuggerd/proto/tombstone.proto
5*b7c941bbSAndroid Build Coastguard Worker//  at:
6*b7c941bbSAndroid Build Coastguard Worker//    - 2021-06-29
7*b7c941bbSAndroid Build Coastguard Worker//    - 5ddcea2924f48797cf747f952f6fe2f561dacb24
8*b7c941bbSAndroid Build Coastguard Worker//    - https://android-review.googlesource.com/c/platform/system/core/+/1680005
9*b7c941bbSAndroid Build Coastguard Worker//
10*b7c941bbSAndroid Build Coastguard Worker//  This file is deliberately copied so that older-built apps can guarantee
11*b7c941bbSAndroid Build Coastguard Worker//  they are still able to read the tombstone using this definition, even if the
12*b7c941bbSAndroid Build Coastguard Worker//  platform proto is updated with new fields.
13*b7c941bbSAndroid Build Coastguard Worker//
14*b7c941bbSAndroid Build Coastguard Worker////////////////////////////////////////////////////////////////////////////////
15*b7c941bbSAndroid Build Coastguard Workersyntax = "proto3";
16*b7c941bbSAndroid Build Coastguard Workeroption java_package = "android.cts.gwp_asan";
17*b7c941bbSAndroid Build Coastguard Workeroption java_outer_classname = "Android13Tombstone";
18*b7c941bbSAndroid Build Coastguard Worker// NOTE TO OEMS:
19*b7c941bbSAndroid Build Coastguard Worker// If you add custom fields to this proto, do not use numbers in the reserved range.
20*b7c941bbSAndroid Build Coastguard Workermessage Tombstone {
21*b7c941bbSAndroid Build Coastguard Worker  Architecture arch = 1;
22*b7c941bbSAndroid Build Coastguard Worker  string build_fingerprint = 2;
23*b7c941bbSAndroid Build Coastguard Worker  string revision = 3;
24*b7c941bbSAndroid Build Coastguard Worker  string timestamp = 4;
25*b7c941bbSAndroid Build Coastguard Worker  uint32 pid = 5;
26*b7c941bbSAndroid Build Coastguard Worker  uint32 tid = 6;
27*b7c941bbSAndroid Build Coastguard Worker  uint32 uid = 7;
28*b7c941bbSAndroid Build Coastguard Worker  string selinux_label = 8;
29*b7c941bbSAndroid Build Coastguard Worker  repeated string command_line = 9;
30*b7c941bbSAndroid Build Coastguard Worker  // Process uptime in seconds.
31*b7c941bbSAndroid Build Coastguard Worker  uint32 process_uptime = 20;
32*b7c941bbSAndroid Build Coastguard Worker  Signal signal_info = 10;
33*b7c941bbSAndroid Build Coastguard Worker  string abort_message = 14;
34*b7c941bbSAndroid Build Coastguard Worker  repeated Cause causes = 15;
35*b7c941bbSAndroid Build Coastguard Worker  map<uint32, Thread> threads = 16;
36*b7c941bbSAndroid Build Coastguard Worker  repeated MemoryMapping memory_mappings = 17;
37*b7c941bbSAndroid Build Coastguard Worker  repeated LogBuffer log_buffers = 18;
38*b7c941bbSAndroid Build Coastguard Worker  repeated FD open_fds = 19;
39*b7c941bbSAndroid Build Coastguard Worker  reserved 21 to 999;
40*b7c941bbSAndroid Build Coastguard Worker}
41*b7c941bbSAndroid Build Coastguard Workerenum Architecture {
42*b7c941bbSAndroid Build Coastguard Worker  ARM32 = 0;
43*b7c941bbSAndroid Build Coastguard Worker  ARM64 = 1;
44*b7c941bbSAndroid Build Coastguard Worker  X86 = 2;
45*b7c941bbSAndroid Build Coastguard Worker  X86_64 = 3;
46*b7c941bbSAndroid Build Coastguard Worker  reserved 4 to 999;
47*b7c941bbSAndroid Build Coastguard Worker}
48*b7c941bbSAndroid Build Coastguard Workermessage Signal {
49*b7c941bbSAndroid Build Coastguard Worker  int32 number = 1;
50*b7c941bbSAndroid Build Coastguard Worker  string name = 2;
51*b7c941bbSAndroid Build Coastguard Worker  int32 code = 3;
52*b7c941bbSAndroid Build Coastguard Worker  string code_name = 4;
53*b7c941bbSAndroid Build Coastguard Worker  bool has_sender = 5;
54*b7c941bbSAndroid Build Coastguard Worker  int32 sender_uid = 6;
55*b7c941bbSAndroid Build Coastguard Worker  int32 sender_pid = 7;
56*b7c941bbSAndroid Build Coastguard Worker  bool has_fault_address = 8;
57*b7c941bbSAndroid Build Coastguard Worker  uint64 fault_address = 9;
58*b7c941bbSAndroid Build Coastguard Worker  // Note, may or may not contain the dump of the actual memory contents. Currently, on arm64, we
59*b7c941bbSAndroid Build Coastguard Worker  // only include metadata, and not the contents.
60*b7c941bbSAndroid Build Coastguard Worker  MemoryDump fault_adjacent_metadata = 10;
61*b7c941bbSAndroid Build Coastguard Worker  reserved 11 to 999;
62*b7c941bbSAndroid Build Coastguard Worker}
63*b7c941bbSAndroid Build Coastguard Workermessage HeapObject {
64*b7c941bbSAndroid Build Coastguard Worker  uint64 address = 1;
65*b7c941bbSAndroid Build Coastguard Worker  uint64 size = 2;
66*b7c941bbSAndroid Build Coastguard Worker  uint64 allocation_tid = 3;
67*b7c941bbSAndroid Build Coastguard Worker  repeated BacktraceFrame allocation_backtrace = 4;
68*b7c941bbSAndroid Build Coastguard Worker  uint64 deallocation_tid = 5;
69*b7c941bbSAndroid Build Coastguard Worker  repeated BacktraceFrame deallocation_backtrace = 6;
70*b7c941bbSAndroid Build Coastguard Worker}
71*b7c941bbSAndroid Build Coastguard Workermessage MemoryError {
72*b7c941bbSAndroid Build Coastguard Worker  enum Tool {
73*b7c941bbSAndroid Build Coastguard Worker    GWP_ASAN = 0;
74*b7c941bbSAndroid Build Coastguard Worker    SCUDO = 1;
75*b7c941bbSAndroid Build Coastguard Worker    reserved 2 to 999;
76*b7c941bbSAndroid Build Coastguard Worker  }
77*b7c941bbSAndroid Build Coastguard Worker  Tool tool = 1;
78*b7c941bbSAndroid Build Coastguard Worker  enum Type {
79*b7c941bbSAndroid Build Coastguard Worker    UNKNOWN = 0;
80*b7c941bbSAndroid Build Coastguard Worker    USE_AFTER_FREE = 1;
81*b7c941bbSAndroid Build Coastguard Worker    DOUBLE_FREE = 2;
82*b7c941bbSAndroid Build Coastguard Worker    INVALID_FREE = 3;
83*b7c941bbSAndroid Build Coastguard Worker    BUFFER_OVERFLOW = 4;
84*b7c941bbSAndroid Build Coastguard Worker    BUFFER_UNDERFLOW = 5;
85*b7c941bbSAndroid Build Coastguard Worker    reserved 6 to 999;
86*b7c941bbSAndroid Build Coastguard Worker  }
87*b7c941bbSAndroid Build Coastguard Worker  Type type = 2;
88*b7c941bbSAndroid Build Coastguard Worker  oneof location {
89*b7c941bbSAndroid Build Coastguard Worker    HeapObject heap = 3;
90*b7c941bbSAndroid Build Coastguard Worker  }
91*b7c941bbSAndroid Build Coastguard Worker  reserved 4 to 999;
92*b7c941bbSAndroid Build Coastguard Worker}
93*b7c941bbSAndroid Build Coastguard Workermessage Cause {
94*b7c941bbSAndroid Build Coastguard Worker  string human_readable = 1;
95*b7c941bbSAndroid Build Coastguard Worker  oneof details {
96*b7c941bbSAndroid Build Coastguard Worker    MemoryError memory_error = 2;
97*b7c941bbSAndroid Build Coastguard Worker  }
98*b7c941bbSAndroid Build Coastguard Worker  reserved 3 to 999;
99*b7c941bbSAndroid Build Coastguard Worker}
100*b7c941bbSAndroid Build Coastguard Workermessage Register {
101*b7c941bbSAndroid Build Coastguard Worker  string name = 1;
102*b7c941bbSAndroid Build Coastguard Worker  uint64 u64 = 2;
103*b7c941bbSAndroid Build Coastguard Worker  reserved 3 to 999;
104*b7c941bbSAndroid Build Coastguard Worker}
105*b7c941bbSAndroid Build Coastguard Workermessage Thread {
106*b7c941bbSAndroid Build Coastguard Worker  int32 id = 1;
107*b7c941bbSAndroid Build Coastguard Worker  string name = 2;
108*b7c941bbSAndroid Build Coastguard Worker  repeated Register registers = 3;
109*b7c941bbSAndroid Build Coastguard Worker  repeated string backtrace_note = 7;
110*b7c941bbSAndroid Build Coastguard Worker  repeated BacktraceFrame current_backtrace = 4;
111*b7c941bbSAndroid Build Coastguard Worker  repeated MemoryDump memory_dump = 5;
112*b7c941bbSAndroid Build Coastguard Worker  int64 tagged_addr_ctrl = 6;
113*b7c941bbSAndroid Build Coastguard Worker  reserved 8 to 999;
114*b7c941bbSAndroid Build Coastguard Worker}
115*b7c941bbSAndroid Build Coastguard Workermessage BacktraceFrame {
116*b7c941bbSAndroid Build Coastguard Worker  uint64 rel_pc = 1;
117*b7c941bbSAndroid Build Coastguard Worker  uint64 pc = 2;
118*b7c941bbSAndroid Build Coastguard Worker  uint64 sp = 3;
119*b7c941bbSAndroid Build Coastguard Worker  string function_name = 4;
120*b7c941bbSAndroid Build Coastguard Worker  uint64 function_offset = 5;
121*b7c941bbSAndroid Build Coastguard Worker  string file_name = 6;
122*b7c941bbSAndroid Build Coastguard Worker  uint64 file_map_offset = 7;
123*b7c941bbSAndroid Build Coastguard Worker  string build_id = 8;
124*b7c941bbSAndroid Build Coastguard Worker  reserved 9 to 999;
125*b7c941bbSAndroid Build Coastguard Worker}
126*b7c941bbSAndroid Build Coastguard Workermessage ArmMTEMetadata {
127*b7c941bbSAndroid Build Coastguard Worker  // One memory tag per granule (e.g. every 16 bytes) of regular memory.
128*b7c941bbSAndroid Build Coastguard Worker  bytes memory_tags = 1;
129*b7c941bbSAndroid Build Coastguard Worker  reserved 2 to 999;
130*b7c941bbSAndroid Build Coastguard Worker}
131*b7c941bbSAndroid Build Coastguard Workermessage MemoryDump {
132*b7c941bbSAndroid Build Coastguard Worker  string register_name = 1;
133*b7c941bbSAndroid Build Coastguard Worker  string mapping_name = 2;
134*b7c941bbSAndroid Build Coastguard Worker  uint64 begin_address = 3;
135*b7c941bbSAndroid Build Coastguard Worker  bytes memory = 4;
136*b7c941bbSAndroid Build Coastguard Worker  oneof metadata {
137*b7c941bbSAndroid Build Coastguard Worker    ArmMTEMetadata arm_mte_metadata = 6;
138*b7c941bbSAndroid Build Coastguard Worker  }
139*b7c941bbSAndroid Build Coastguard Worker  reserved 5, 7 to 999;
140*b7c941bbSAndroid Build Coastguard Worker}
141*b7c941bbSAndroid Build Coastguard Workermessage MemoryMapping {
142*b7c941bbSAndroid Build Coastguard Worker  uint64 begin_address = 1;
143*b7c941bbSAndroid Build Coastguard Worker  uint64 end_address = 2;
144*b7c941bbSAndroid Build Coastguard Worker  uint64 offset = 3;
145*b7c941bbSAndroid Build Coastguard Worker  bool read = 4;
146*b7c941bbSAndroid Build Coastguard Worker  bool write = 5;
147*b7c941bbSAndroid Build Coastguard Worker  bool execute = 6;
148*b7c941bbSAndroid Build Coastguard Worker  string mapping_name = 7;
149*b7c941bbSAndroid Build Coastguard Worker  string build_id = 8;
150*b7c941bbSAndroid Build Coastguard Worker  uint64 load_bias = 9;
151*b7c941bbSAndroid Build Coastguard Worker  reserved 10 to 999;
152*b7c941bbSAndroid Build Coastguard Worker}
153*b7c941bbSAndroid Build Coastguard Workermessage FD {
154*b7c941bbSAndroid Build Coastguard Worker  int32 fd = 1;
155*b7c941bbSAndroid Build Coastguard Worker  string path = 2;
156*b7c941bbSAndroid Build Coastguard Worker  string owner = 3;
157*b7c941bbSAndroid Build Coastguard Worker  uint64 tag = 4;
158*b7c941bbSAndroid Build Coastguard Worker  reserved 5 to 999;
159*b7c941bbSAndroid Build Coastguard Worker}
160*b7c941bbSAndroid Build Coastguard Workermessage LogBuffer {
161*b7c941bbSAndroid Build Coastguard Worker  string name = 1;
162*b7c941bbSAndroid Build Coastguard Worker  repeated LogMessage logs = 2;
163*b7c941bbSAndroid Build Coastguard Worker  reserved 3 to 999;
164*b7c941bbSAndroid Build Coastguard Worker}
165*b7c941bbSAndroid Build Coastguard Workermessage LogMessage {
166*b7c941bbSAndroid Build Coastguard Worker  string timestamp = 1;
167*b7c941bbSAndroid Build Coastguard Worker  uint32 pid = 2;
168*b7c941bbSAndroid Build Coastguard Worker  uint32 tid = 3;
169*b7c941bbSAndroid Build Coastguard Worker  uint32 priority = 4;
170*b7c941bbSAndroid Build Coastguard Worker  string tag = 5;
171*b7c941bbSAndroid Build Coastguard Worker  string message = 6;
172*b7c941bbSAndroid Build Coastguard Worker  reserved 7 to 999;
173*b7c941bbSAndroid Build Coastguard Worker}
174