1static constexpr uint8_t expected_asm_kThumb2[] = { 2 0x2D, 0xE9, 0xE0, 0x4D, 0x2D, 0xED, 0x10, 0x8A, 0x89, 0xB0, 0x00, 0x90, 3 0x21, 0x91, 0x8D, 0xED, 0x22, 0x0A, 0x23, 0x92, 0x24, 0x93, 0x88, 0xB0, 4 0x08, 0xB0, 0x09, 0xB0, 0xBD, 0xEC, 0x10, 0x8A, 0xBD, 0xE8, 0xE0, 0x4D, 5 0xD9, 0xF8, 0x34, 0x80, 0x70, 0x47, 6}; 7static constexpr uint8_t expected_cfi_kThumb2[] = { 8 0x44, 0x0E, 0x1C, 0x85, 0x07, 0x86, 0x06, 0x87, 0x05, 0x88, 0x04, 0x8A, 9 0x03, 0x8B, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x5C, 0x05, 0x50, 0x17, 0x05, 10 0x51, 0x16, 0x05, 0x52, 0x15, 0x05, 0x53, 0x14, 0x05, 0x54, 0x13, 0x05, 11 0x55, 0x12, 0x05, 0x56, 0x11, 0x05, 0x57, 0x10, 0x05, 0x58, 0x0F, 0x05, 12 0x59, 0x0E, 0x05, 0x5A, 0x0D, 0x05, 0x5B, 0x0C, 0x05, 0x5C, 0x0B, 0x05, 13 0x5D, 0x0A, 0x05, 0x5E, 0x09, 0x05, 0x5F, 0x08, 0x42, 0x0E, 0x80, 0x01, 14 0x4E, 0x0E, 0xA0, 0x01, 0x42, 0x0E, 0x80, 0x01, 0x0A, 0x42, 0x0E, 0x5C, 15 0x44, 0x0E, 0x1C, 0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, 0x06, 16 0x54, 0x06, 0x55, 0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, 0x06, 17 0x5A, 0x06, 0x5B, 0x06, 0x5C, 0x06, 0x5D, 0x06, 0x5E, 0x06, 0x5F, 0x4A, 18 0x0B, 0x0E, 0x80, 0x01, 19}; 20// 0x00000000: push {r5,r6,r7,r8,r10,r11,lr} 21// 0x00000004: .cfi_def_cfa_offset: 28 22// 0x00000004: .cfi_offset: r5 at cfa-28 23// 0x00000004: .cfi_offset: r6 at cfa-24 24// 0x00000004: .cfi_offset: r7 at cfa-20 25// 0x00000004: .cfi_offset: r8 at cfa-16 26// 0x00000004: .cfi_offset: r10 at cfa-12 27// 0x00000004: .cfi_offset: r11 at cfa-8 28// 0x00000004: .cfi_offset: r14 at cfa-4 29// 0x00000004: vpush {s16-s31} 30// 0x00000008: .cfi_def_cfa_offset: 92 31// 0x00000008: .cfi_offset_extended: r80 at cfa-92 32// 0x00000008: .cfi_offset_extended: r81 at cfa-88 33// 0x00000008: .cfi_offset_extended: r82 at cfa-84 34// 0x00000008: .cfi_offset_extended: r83 at cfa-80 35// 0x00000008: .cfi_offset_extended: r84 at cfa-76 36// 0x00000008: .cfi_offset_extended: r85 at cfa-72 37// 0x00000008: .cfi_offset_extended: r86 at cfa-68 38// 0x00000008: .cfi_offset_extended: r87 at cfa-64 39// 0x00000008: .cfi_offset_extended: r88 at cfa-60 40// 0x00000008: .cfi_offset_extended: r89 at cfa-56 41// 0x00000008: .cfi_offset_extended: r90 at cfa-52 42// 0x00000008: .cfi_offset_extended: r91 at cfa-48 43// 0x00000008: .cfi_offset_extended: r92 at cfa-44 44// 0x00000008: .cfi_offset_extended: r93 at cfa-40 45// 0x00000008: .cfi_offset_extended: r94 at cfa-36 46// 0x00000008: .cfi_offset_extended: r95 at cfa-32 47// 0x00000008: sub sp, #36 48// 0x0000000a: .cfi_def_cfa_offset: 128 49// 0x0000000a: str r0, [sp] 50// 0x0000000c: str r1, [sp, #132] 51// 0x0000000e: vstr s0, [sp, #136] 52// 0x00000012: str r2, [sp, #140] 53// 0x00000014: str r3, [sp, #144] 54// 0x00000016: sub sp, #32 55// 0x00000018: .cfi_def_cfa_offset: 160 56// 0x00000018: add sp, #32 57// 0x0000001a: .cfi_def_cfa_offset: 128 58// 0x0000001a: .cfi_remember_state 59// 0x0000001a: add sp, #36 60// 0x0000001c: .cfi_def_cfa_offset: 92 61// 0x0000001c: vpop {s16-s31} 62// 0x00000020: .cfi_def_cfa_offset: 28 63// 0x00000020: .cfi_restore_extended: r80 64// 0x00000020: .cfi_restore_extended: r81 65// 0x00000020: .cfi_restore_extended: r82 66// 0x00000020: .cfi_restore_extended: r83 67// 0x00000020: .cfi_restore_extended: r84 68// 0x00000020: .cfi_restore_extended: r85 69// 0x00000020: .cfi_restore_extended: r86 70// 0x00000020: .cfi_restore_extended: r87 71// 0x00000020: .cfi_restore_extended: r88 72// 0x00000020: .cfi_restore_extended: r89 73// 0x00000020: .cfi_restore_extended: r90 74// 0x00000020: .cfi_restore_extended: r91 75// 0x00000020: .cfi_restore_extended: r92 76// 0x00000020: .cfi_restore_extended: r93 77// 0x00000020: .cfi_restore_extended: r94 78// 0x00000020: .cfi_restore_extended: r95 79// 0x00000020: pop {r5,r6,r7,r8,r10,r11,lr} 80// 0x00000024: ldr r8, [tr, #52] ; is_gc_marking 81// 0x00000028: bx lr 82// 0x0000002a: .cfi_restore_state 83// 0x0000002a: .cfi_def_cfa_offset: 128 84 85static constexpr uint8_t expected_asm_kArm64[] = { 86 0xFF, 0x03, 0x03, 0xD1, 0xF3, 0x53, 0x06, 0xA9, 0xF5, 0x5B, 0x07, 0xA9, 87 0xF7, 0x63, 0x08, 0xA9, 0xF9, 0x6B, 0x09, 0xA9, 0xFB, 0x73, 0x0A, 0xA9, 88 0xFD, 0x7B, 0x0B, 0xA9, 0xE8, 0x27, 0x02, 0x6D, 0xEA, 0x2F, 0x03, 0x6D, 89 0xEC, 0x37, 0x04, 0x6D, 0xEE, 0x3F, 0x05, 0x6D, 0xE0, 0x03, 0x00, 0xF9, 90 0xE1, 0xCB, 0x00, 0xB9, 0xE0, 0xCF, 0x00, 0xBD, 0xE2, 0xD3, 0x00, 0xB9, 91 0xE3, 0xD7, 0x00, 0xB9, 0xFF, 0x83, 0x00, 0xD1, 0xFF, 0x83, 0x00, 0x91, 92 0xF3, 0x53, 0x46, 0xA9, 0xF5, 0x5B, 0x47, 0xA9, 0xF7, 0x63, 0x48, 0xA9, 93 0xF9, 0x6B, 0x49, 0xA9, 0xFB, 0x73, 0x4A, 0xA9, 0xFD, 0x7B, 0x4B, 0xA9, 94 0xE8, 0x27, 0x42, 0x6D, 0xEA, 0x2F, 0x43, 0x6D, 0xEC, 0x37, 0x44, 0x6D, 95 0xEE, 0x3F, 0x45, 0x6D, 0x74, 0x36, 0x40, 0xB9, 0xFF, 0x03, 0x03, 0x91, 96 0xC0, 0x03, 0x5F, 0xD6, 97}; 98static constexpr uint8_t expected_cfi_kArm64[] = { 99 0x44, 0x0E, 0xC0, 0x01, 0x44, 0x93, 0x18, 0x94, 0x16, 0x44, 0x95, 0x14, 100 0x96, 0x12, 0x44, 0x97, 0x10, 0x98, 0x0E, 0x44, 0x99, 0x0C, 0x9A, 0x0A, 101 0x44, 0x9B, 0x08, 0x9C, 0x06, 0x44, 0x9D, 0x04, 0x9E, 0x02, 0x44, 0x05, 102 0x48, 0x28, 0x05, 0x49, 0x26, 0x44, 0x05, 0x4A, 0x24, 0x05, 0x4B, 0x22, 103 0x44, 0x05, 0x4C, 0x20, 0x05, 0x4D, 0x1E, 0x44, 0x05, 0x4E, 0x1C, 0x05, 104 0x4F, 0x1A, 0x58, 0x0E, 0xE0, 0x01, 0x44, 0x0E, 0xC0, 0x01, 0x0A, 0x44, 105 0xD3, 0xD4, 0x44, 0xD5, 0xD6, 0x44, 0xD7, 0xD8, 0x44, 0xD9, 0xDA, 0x44, 106 0xDB, 0xDC, 0x44, 0xDD, 0xDE, 0x44, 0x06, 0x48, 0x06, 0x49, 0x44, 0x06, 107 0x4A, 0x06, 0x4B, 0x44, 0x06, 0x4C, 0x06, 0x4D, 0x44, 0x06, 0x4E, 0x06, 108 0x4F, 0x48, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0xC0, 0x01, 109}; 110// 0x00000000: sub sp, sp, #0xc0 (192) 111// 0x00000004: .cfi_def_cfa_offset: 192 112// 0x00000004: stp tr, x20, [sp, #96] 113// 0x00000008: .cfi_offset: r19 at cfa-96 114// 0x00000008: .cfi_offset: r20 at cfa-88 115// 0x00000008: stp x21, x22, [sp, #112] 116// 0x0000000c: .cfi_offset: r21 at cfa-80 117// 0x0000000c: .cfi_offset: r22 at cfa-72 118// 0x0000000c: stp x23, x24, [sp, #128] 119// 0x00000010: .cfi_offset: r23 at cfa-64 120// 0x00000010: .cfi_offset: r24 at cfa-56 121// 0x00000010: stp x25, x26, [sp, #144] 122// 0x00000014: .cfi_offset: r25 at cfa-48 123// 0x00000014: .cfi_offset: r26 at cfa-40 124// 0x00000014: stp x27, x28, [sp, #160] 125// 0x00000018: .cfi_offset: r27 at cfa-32 126// 0x00000018: .cfi_offset: r28 at cfa-24 127// 0x00000018: stp x29, lr, [sp, #176] 128// 0x0000001c: .cfi_offset: r29 at cfa-16 129// 0x0000001c: .cfi_offset: r30 at cfa-8 130// 0x0000001c: stp d8, d9, [sp, #32] 131// 0x00000020: .cfi_offset_extended: r72 at cfa-160 132// 0x00000020: .cfi_offset_extended: r73 at cfa-152 133// 0x00000020: stp d10, d11, [sp, #48] 134// 0x00000024: .cfi_offset_extended: r74 at cfa-144 135// 0x00000024: .cfi_offset_extended: r75 at cfa-136 136// 0x00000024: stp d12, d13, [sp, #64] 137// 0x00000028: .cfi_offset_extended: r76 at cfa-128 138// 0x00000028: .cfi_offset_extended: r77 at cfa-120 139// 0x00000028: stp d14, d15, [sp, #80] 140// 0x0000002c: .cfi_offset_extended: r78 at cfa-112 141// 0x0000002c: .cfi_offset_extended: r79 at cfa-104 142// 0x0000002c: str x0, [sp] 143// 0x00000030: str w1, [sp, #200] 144// 0x00000034: str s0, [sp, #204] 145// 0x00000038: str w2, [sp, #208] 146// 0x0000003c: str w3, [sp, #212] 147// 0x00000040: sub sp, sp, #0x20 (32) 148// 0x00000044: .cfi_def_cfa_offset: 224 149// 0x00000044: add sp, sp, #0x20 (32) 150// 0x00000048: .cfi_def_cfa_offset: 192 151// 0x00000048: .cfi_remember_state 152// 0x00000048: ldp tr, x20, [sp, #96] 153// 0x0000004c: .cfi_restore: r19 154// 0x0000004c: .cfi_restore: r20 155// 0x0000004c: ldp x21, x22, [sp, #112] 156// 0x00000050: .cfi_restore: r21 157// 0x00000050: .cfi_restore: r22 158// 0x00000050: ldp x23, x24, [sp, #128] 159// 0x00000054: .cfi_restore: r23 160// 0x00000054: .cfi_restore: r24 161// 0x00000054: ldp x25, x26, [sp, #144] 162// 0x00000058: .cfi_restore: r25 163// 0x00000058: .cfi_restore: r26 164// 0x00000058: ldp x27, x28, [sp, #160] 165// 0x0000005c: .cfi_restore: r27 166// 0x0000005c: .cfi_restore: r28 167// 0x0000005c: ldp x29, lr, [sp, #176] 168// 0x00000060: .cfi_restore: r29 169// 0x00000060: .cfi_restore: r30 170// 0x00000060: ldp d8, d9, [sp, #32] 171// 0x00000064: .cfi_restore_extended: r72 172// 0x00000064: .cfi_restore_extended: r73 173// 0x00000064: ldp d10, d11, [sp, #48] 174// 0x00000068: .cfi_restore_extended: r74 175// 0x00000068: .cfi_restore_extended: r75 176// 0x00000068: ldp d12, d13, [sp, #64] 177// 0x0000006c: .cfi_restore_extended: r76 178// 0x0000006c: .cfi_restore_extended: r77 179// 0x0000006c: ldp d14, d15, [sp, #80] 180// 0x00000070: .cfi_restore_extended: r78 181// 0x00000070: .cfi_restore_extended: r79 182// 0x00000070: ldr w20, [tr, #52] ; is_gc_marking 183// 0x00000074: add sp, sp, #0xc0 (192) 184// 0x00000078: .cfi_def_cfa_offset: 0 185// 0x00000078: ret 186// 0x0000007c: .cfi_restore_state 187// 0x0000007c: .cfi_def_cfa_offset: 192 188 189static constexpr uint8_t expected_asm_kX86[] = { 190 0x57, 0x56, 0x55, 0x83, 0xC4, 0xE4, 0x50, 0x89, 0x4C, 0x24, 0x34, 0xF3, 191 0x0F, 0x11, 0x44, 0x24, 0x38, 0x89, 0x54, 0x24, 0x3C, 0x89, 0x5C, 0x24, 192 0x40, 0x83, 0xC4, 0xE0, 0x83, 0xC4, 0x20, 0x83, 0xC4, 0x20, 0x5D, 0x5E, 193 0x5F, 0xC3, 194}; 195static constexpr uint8_t expected_cfi_kX86[] = { 196 0x41, 0x0E, 0x08, 0x87, 0x02, 0x41, 0x0E, 0x0C, 0x86, 0x03, 0x41, 0x0E, 197 0x10, 0x85, 0x04, 0x43, 0x0E, 0x2C, 0x41, 0x0E, 0x30, 0x55, 0x0E, 0x50, 198 0x43, 0x0E, 0x30, 0x0A, 0x43, 0x0E, 0x10, 0x41, 0x0E, 0x0C, 0xC5, 0x41, 199 0x0E, 0x08, 0xC6, 0x41, 0x0E, 0x04, 0xC7, 0x41, 0x0B, 0x0E, 0x30, 200}; 201// 0x00000000: push edi 202// 0x00000001: .cfi_def_cfa_offset: 8 203// 0x00000001: .cfi_offset: r7 at cfa-8 204// 0x00000001: push esi 205// 0x00000002: .cfi_def_cfa_offset: 12 206// 0x00000002: .cfi_offset: r6 at cfa-12 207// 0x00000002: push ebp 208// 0x00000003: .cfi_def_cfa_offset: 16 209// 0x00000003: .cfi_offset: r5 at cfa-16 210// 0x00000003: add esp, -28 211// 0x00000006: .cfi_def_cfa_offset: 44 212// 0x00000006: push eax 213// 0x00000007: .cfi_def_cfa_offset: 48 214// 0x00000007: mov [esp + 52], ecx 215// 0x0000000b: movss [esp + 56], xmm0 216// 0x00000011: mov [esp + 60], edx 217// 0x00000015: mov [esp + 64], ebx 218// 0x00000019: add esp, -32 219// 0x0000001c: .cfi_def_cfa_offset: 80 220// 0x0000001c: add esp, 32 221// 0x0000001f: .cfi_def_cfa_offset: 48 222// 0x0000001f: .cfi_remember_state 223// 0x0000001f: add esp, 32 224// 0x00000022: .cfi_def_cfa_offset: 16 225// 0x00000022: pop ebp 226// 0x00000023: .cfi_def_cfa_offset: 12 227// 0x00000023: .cfi_restore: r5 228// 0x00000023: pop esi 229// 0x00000024: .cfi_def_cfa_offset: 8 230// 0x00000024: .cfi_restore: r6 231// 0x00000024: pop edi 232// 0x00000025: .cfi_def_cfa_offset: 4 233// 0x00000025: .cfi_restore: r7 234// 0x00000025: ret 235// 0x00000026: .cfi_restore_state 236// 0x00000026: .cfi_def_cfa_offset: 48 237 238static constexpr uint8_t expected_asm_kX86_64[] = { 239 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x55, 0x53, 0x48, 0x83, 240 0xEC, 0x48, 0xF2, 0x44, 0x0F, 0x11, 0x7C, 0x24, 0x40, 0xF2, 0x44, 0x0F, 241 0x11, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 0x30, 0xF2, 242 0x44, 0x0F, 0x11, 0x64, 0x24, 0x28, 0x48, 0x89, 0x3C, 0x24, 0x89, 0xB4, 243 0x24, 0x88, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x84, 0x24, 0x8C, 0x00, 244 0x00, 0x00, 0x89, 0x94, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x8C, 0x24, 245 0x94, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0xE0, 0x48, 0x83, 0xC4, 0x20, 246 0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x28, 0xF2, 0x44, 0x0F, 0x10, 0x6C, 247 0x24, 0x30, 0xF2, 0x44, 0x0F, 0x10, 0x74, 0x24, 0x38, 0xF2, 0x44, 0x0F, 248 0x10, 0x7C, 0x24, 0x40, 0x48, 0x83, 0xC4, 0x48, 0x5B, 0x5D, 0x41, 0x5C, 249 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3, 250}; 251static constexpr uint8_t expected_cfi_kX86_64[] = { 252 0x42, 0x0E, 0x10, 0x8F, 0x04, 0x42, 0x0E, 0x18, 0x8E, 0x06, 0x42, 0x0E, 253 0x20, 0x8D, 0x08, 0x42, 0x0E, 0x28, 0x8C, 0x0A, 0x41, 0x0E, 0x30, 0x86, 254 0x0C, 0x41, 0x0E, 0x38, 0x83, 0x0E, 0x44, 0x0E, 0x80, 0x01, 0x47, 0xA0, 255 0x10, 0x47, 0x9F, 0x12, 0x47, 0x9E, 0x14, 0x47, 0x9D, 0x16, 0x66, 0x0E, 256 0xA0, 0x01, 0x44, 0x0E, 0x80, 0x01, 0x0A, 0x47, 0xDD, 0x47, 0xDE, 0x47, 257 0xDF, 0x47, 0xE0, 0x44, 0x0E, 0x38, 0x41, 0x0E, 0x30, 0xC3, 0x41, 0x0E, 258 0x28, 0xC6, 0x42, 0x0E, 0x20, 0xCC, 0x42, 0x0E, 0x18, 0xCD, 0x42, 0x0E, 259 0x10, 0xCE, 0x42, 0x0E, 0x08, 0xCF, 0x41, 0x0B, 0x0E, 0x80, 0x01, 260}; 261// 0x00000000: push r15 262// 0x00000002: .cfi_def_cfa_offset: 16 263// 0x00000002: .cfi_offset: r15 at cfa-16 264// 0x00000002: push r14 265// 0x00000004: .cfi_def_cfa_offset: 24 266// 0x00000004: .cfi_offset: r14 at cfa-24 267// 0x00000004: push r13 268// 0x00000006: .cfi_def_cfa_offset: 32 269// 0x00000006: .cfi_offset: r13 at cfa-32 270// 0x00000006: push r12 271// 0x00000008: .cfi_def_cfa_offset: 40 272// 0x00000008: .cfi_offset: r12 at cfa-40 273// 0x00000008: push rbp 274// 0x00000009: .cfi_def_cfa_offset: 48 275// 0x00000009: .cfi_offset: r6 at cfa-48 276// 0x00000009: push rbx 277// 0x0000000a: .cfi_def_cfa_offset: 56 278// 0x0000000a: .cfi_offset: r3 at cfa-56 279// 0x0000000a: subq rsp, 72 280// 0x0000000e: .cfi_def_cfa_offset: 128 281// 0x0000000e: movsd [rsp + 64], xmm15 282// 0x00000015: .cfi_offset: r32 at cfa-64 283// 0x00000015: movsd [rsp + 56], xmm14 284// 0x0000001c: .cfi_offset: r31 at cfa-72 285// 0x0000001c: movsd [rsp + 48], xmm13 286// 0x00000023: .cfi_offset: r30 at cfa-80 287// 0x00000023: movsd [rsp + 40], xmm12 288// 0x0000002a: .cfi_offset: r29 at cfa-88 289// 0x0000002a: movq [rsp], rdi 290// 0x0000002e: mov [rsp + 136], esi 291// 0x00000035: movss [rsp + 140], xmm0 292// 0x0000003e: mov [rsp + 144], edx 293// 0x00000045: mov [rsp + 148], ecx 294// 0x0000004c: addq rsp, -32 295// 0x00000050: .cfi_def_cfa_offset: 160 296// 0x00000050: addq rsp, 32 297// 0x00000054: .cfi_def_cfa_offset: 128 298// 0x00000054: .cfi_remember_state 299// 0x00000054: movsd xmm12, [rsp + 40] 300// 0x0000005b: .cfi_restore: r29 301// 0x0000005b: movsd xmm13, [rsp + 48] 302// 0x00000062: .cfi_restore: r30 303// 0x00000062: movsd xmm14, [rsp + 56] 304// 0x00000069: .cfi_restore: r31 305// 0x00000069: movsd xmm15, [rsp + 64] 306// 0x00000070: .cfi_restore: r32 307// 0x00000070: addq rsp, 72 308// 0x00000074: .cfi_def_cfa_offset: 56 309// 0x00000074: pop rbx 310// 0x00000075: .cfi_def_cfa_offset: 48 311// 0x00000075: .cfi_restore: r3 312// 0x00000075: pop rbp 313// 0x00000076: .cfi_def_cfa_offset: 40 314// 0x00000076: .cfi_restore: r6 315// 0x00000076: pop r12 316// 0x00000078: .cfi_def_cfa_offset: 32 317// 0x00000078: .cfi_restore: r12 318// 0x00000078: pop r13 319// 0x0000007a: .cfi_def_cfa_offset: 24 320// 0x0000007a: .cfi_restore: r13 321// 0x0000007a: pop r14 322// 0x0000007c: .cfi_def_cfa_offset: 16 323// 0x0000007c: .cfi_restore: r14 324// 0x0000007c: pop r15 325// 0x0000007e: .cfi_def_cfa_offset: 8 326// 0x0000007e: .cfi_restore: r15 327// 0x0000007e: ret 328// 0x0000007f: .cfi_restore_state 329// 0x0000007f: .cfi_def_cfa_offset: 128 330 331static constexpr uint8_t expected_asm_kMips[] = { 332 0xC0, 0xFF, 0xBD, 0x27, 0x3C, 0x00, 0xBF, 0xAF, 0x38, 0x00, 0xBE, 0xAF, 333 0x34, 0x00, 0xB7, 0xAF, 0x30, 0x00, 0xB6, 0xAF, 0x2C, 0x00, 0xB5, 0xAF, 334 0x28, 0x00, 0xB4, 0xAF, 0x24, 0x00, 0xB3, 0xAF, 0x20, 0x00, 0xB2, 0xAF, 335 0x00, 0x00, 0xA4, 0xAF, 0x44, 0x00, 0xA5, 0xAF, 0x48, 0x00, 0xA8, 0xE7, 336 0x4C, 0x00, 0xA6, 0xAF, 0x50, 0x00, 0xA7, 0xAF, 0xE0, 0xFF, 0xBD, 0x27, 337 0x20, 0x00, 0xBD, 0x27, 0x20, 0x00, 0xB2, 0x8F, 0x24, 0x00, 0xB3, 0x8F, 338 0x28, 0x00, 0xB4, 0x8F, 0x2C, 0x00, 0xB5, 0x8F, 0x30, 0x00, 0xB6, 0x8F, 339 0x34, 0x00, 0xB7, 0x8F, 0x38, 0x00, 0xBE, 0x8F, 0x3C, 0x00, 0xBF, 0x8F, 340 0x09, 0x00, 0xE0, 0x03, 0x40, 0x00, 0xBD, 0x27, 341}; 342static constexpr uint8_t expected_cfi_kMips[] = { 343 0x44, 0x0E, 0x40, 0x44, 0x9F, 0x01, 0x44, 0x9E, 0x02, 0x44, 0x97, 0x03, 344 0x44, 0x96, 0x04, 0x44, 0x95, 0x05, 0x44, 0x94, 0x06, 0x44, 0x93, 0x07, 345 0x44, 0x92, 0x08, 0x58, 0x0E, 0x60, 0x44, 0x0E, 0x40, 0x0A, 0x44, 0xD2, 346 0x44, 0xD3, 0x44, 0xD4, 0x44, 0xD5, 0x44, 0xD6, 0x44, 0xD7, 0x44, 0xDE, 347 0x44, 0xDF, 0x48, 0x0E, 0x00, 0x0B, 0x0E, 0x40, 348}; 349// 0x00000000: addiu r29, r29, -64 350// 0x00000004: .cfi_def_cfa_offset: 64 351// 0x00000004: sw r31, +60(r29) 352// 0x00000008: .cfi_offset: r31 at cfa-4 353// 0x00000008: sw r30, +56(r29) 354// 0x0000000c: .cfi_offset: r30 at cfa-8 355// 0x0000000c: sw r23, +52(r29) 356// 0x00000010: .cfi_offset: r23 at cfa-12 357// 0x00000010: sw r22, +48(r29) 358// 0x00000014: .cfi_offset: r22 at cfa-16 359// 0x00000014: sw r21, +44(r29) 360// 0x00000018: .cfi_offset: r21 at cfa-20 361// 0x00000018: sw r20, +40(r29) 362// 0x0000001c: .cfi_offset: r20 at cfa-24 363// 0x0000001c: sw r19, +36(r29) 364// 0x00000020: .cfi_offset: r19 at cfa-28 365// 0x00000020: sw r18, +32(r29) 366// 0x00000024: .cfi_offset: r18 at cfa-32 367// 0x00000024: sw r4, +0(r29) 368// 0x00000028: sw r5, +68(r29) 369// 0x0000002c: swc1 f8, +72(r29) 370// 0x00000030: sw r6, +76(r29) 371// 0x00000034: sw r7, +80(r29) 372// 0x00000038: addiu r29, r29, -32 373// 0x0000003c: .cfi_def_cfa_offset: 96 374// 0x0000003c: addiu r29, r29, 32 375// 0x00000040: .cfi_def_cfa_offset: 64 376// 0x00000040: .cfi_remember_state 377// 0x00000040: lw r18, +32(r29) 378// 0x00000044: .cfi_restore: r18 379// 0x00000044: lw r19, +36(r29) 380// 0x00000048: .cfi_restore: r19 381// 0x00000048: lw r20, +40(r29) 382// 0x0000004c: .cfi_restore: r20 383// 0x0000004c: lw r21, +44(r29) 384// 0x00000050: .cfi_restore: r21 385// 0x00000050: lw r22, +48(r29) 386// 0x00000054: .cfi_restore: r22 387// 0x00000054: lw r23, +52(r29) 388// 0x00000058: .cfi_restore: r23 389// 0x00000058: lw r30, +56(r29) 390// 0x0000005c: .cfi_restore: r30 391// 0x0000005c: lw r31, +60(r29) 392// 0x00000060: .cfi_restore: r31 393// 0x00000060: jr r31 394// 0x00000064: addiu r29, r29, 64 395// 0x00000068: .cfi_def_cfa_offset: 0 396// 0x00000068: .cfi_restore_state 397// 0x00000068: .cfi_def_cfa_offset: 64 398 399static constexpr uint8_t expected_asm_kMips64[] = { 400 0x90, 0xFF, 0xBD, 0x67, 0x68, 0x00, 0xBF, 0xFF, 0x60, 0x00, 0xBE, 0xFF, 401 0x58, 0x00, 0xBC, 0xFF, 0x50, 0x00, 0xB7, 0xFF, 0x48, 0x00, 0xB6, 0xFF, 402 0x40, 0x00, 0xB5, 0xFF, 0x38, 0x00, 0xB4, 0xFF, 0x30, 0x00, 0xB3, 0xFF, 403 0x28, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0xA4, 0xFF, 0x78, 0x00, 0xA5, 0xAF, 404 0x7C, 0x00, 0xAE, 0xE7, 0x80, 0x00, 0xA7, 0xAF, 0x84, 0x00, 0xA8, 0xAF, 405 0xE0, 0xFF, 0xBD, 0x67, 0x20, 0x00, 0xBD, 0x67, 0x28, 0x00, 0xB2, 0xDF, 406 0x30, 0x00, 0xB3, 0xDF, 0x38, 0x00, 0xB4, 0xDF, 0x40, 0x00, 0xB5, 0xDF, 407 0x48, 0x00, 0xB6, 0xDF, 0x50, 0x00, 0xB7, 0xDF, 0x58, 0x00, 0xBC, 0xDF, 408 0x60, 0x00, 0xBE, 0xDF, 0x68, 0x00, 0xBF, 0xDF, 0x70, 0x00, 0xBD, 0x67, 409 0x09, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 410}; 411static constexpr uint8_t expected_cfi_kMips64[] = { 412 0x44, 0x0E, 0x70, 0x44, 0x9F, 0x02, 0x44, 0x9E, 0x04, 0x44, 0x9C, 0x06, 413 0x44, 0x97, 0x08, 0x44, 0x96, 0x0A, 0x44, 0x95, 0x0C, 0x44, 0x94, 0x0E, 414 0x44, 0x93, 0x10, 0x44, 0x92, 0x12, 0x58, 0x0E, 0x90, 0x01, 0x44, 0x0E, 415 0x70, 0x0A, 0x44, 0xD2, 0x44, 0xD3, 0x44, 0xD4, 0x44, 0xD5, 0x44, 0xD6, 416 0x44, 0xD7, 0x44, 0xDC, 0x44, 0xDE, 0x44, 0xDF, 0x44, 0x0E, 0x00, 0x48, 417 0x0B, 0x0E, 0x70, 418}; 419// 0x00000000: daddiu r29, r29, -112 420// 0x00000004: .cfi_def_cfa_offset: 112 421// 0x00000004: sd r31, +104(r29) 422// 0x00000008: .cfi_offset: r31 at cfa-8 423// 0x00000008: sd r30, +96(r29) 424// 0x0000000c: .cfi_offset: r30 at cfa-16 425// 0x0000000c: sd r28, +88(r29) 426// 0x00000010: .cfi_offset: r28 at cfa-24 427// 0x00000010: sd r23, +80(r29) 428// 0x00000014: .cfi_offset: r23 at cfa-32 429// 0x00000014: sd r22, +72(r29) 430// 0x00000018: .cfi_offset: r22 at cfa-40 431// 0x00000018: sd r21, +64(r29) 432// 0x0000001c: .cfi_offset: r21 at cfa-48 433// 0x0000001c: sd r20, +56(r29) 434// 0x00000020: .cfi_offset: r20 at cfa-56 435// 0x00000020: sd r19, +48(r29) 436// 0x00000024: .cfi_offset: r19 at cfa-64 437// 0x00000024: sd r18, +40(r29) 438// 0x00000028: .cfi_offset: r18 at cfa-72 439// 0x00000028: sd r4, +0(r29) 440// 0x0000002c: sw r5, +120(r29) 441// 0x00000030: swc1 f14, +124(r29) 442// 0x00000034: sw r7, +128(r29) 443// 0x00000038: sw r8, +132(r29) 444// 0x0000003c: daddiu r29, r29, -32 445// 0x00000040: .cfi_def_cfa_offset: 144 446// 0x00000040: daddiu r29, r29, 32 447// 0x00000044: .cfi_def_cfa_offset: 112 448// 0x00000044: .cfi_remember_state 449// 0x00000044: ld r18, +40(r29) 450// 0x00000048: .cfi_restore: r18 451// 0x00000048: ld r19, +48(r29) 452// 0x0000004c: .cfi_restore: r19 453// 0x0000004c: ld r20, +56(r29) 454// 0x00000050: .cfi_restore: r20 455// 0x00000050: ld r21, +64(r29) 456// 0x00000054: .cfi_restore: r21 457// 0x00000054: ld r22, +72(r29) 458// 0x00000058: .cfi_restore: r22 459// 0x00000058: ld r23, +80(r29) 460// 0x0000005c: .cfi_restore: r23 461// 0x0000005c: ld r28, +88(r29) 462// 0x00000060: .cfi_restore: r28 463// 0x00000060: ld r30, +96(r29) 464// 0x00000064: .cfi_restore: r30 465// 0x00000064: ld r31, +104(r29) 466// 0x00000068: .cfi_restore: r31 467// 0x00000068: daddiu r29, r29, 112 468// 0x0000006c: .cfi_def_cfa_offset: 0 469// 0x0000006c: jr r31 470// 0x00000070: nop 471// 0x00000074: .cfi_restore_state 472// 0x00000074: .cfi_def_cfa_offset: 112 473 474