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