blob: 3fe822666fdb5842f2339ee594b77a2fb45bf820 [file] [log] [blame]
Alex Light72e27b02020-07-27 12:59:58 -07001// TODO These arrays should be generated automatically or have instructions for re-creation.
David Srbeckydd973932015-04-07 20:29:48 +01002static constexpr uint8_t expected_asm_kThumb2[] = {
Vladimir Markoe74e0ce2021-12-08 14:16:21 +00003 0x2D, 0xE9, 0xE0, 0x4D, 0x2D, 0xED, 0x10, 0x8A, 0x81, 0xB0, 0x00, 0x90,
4 0x19, 0x91, 0x8D, 0xED, 0x1A, 0x0A, 0x1B, 0x92, 0x1C, 0x93, 0x88, 0xB0,
5 0x08, 0xB0, 0x01, 0xB0, 0xBD, 0xEC, 0x10, 0x8A, 0xBD, 0xE8, 0xE0, 0x4D,
Nicolas Geoffray4d29efc2021-10-07 15:15:08 +01006 0xD9, 0xF8, 0x24, 0x80, 0x70, 0x47,
David Srbeckydd973932015-04-07 20:29:48 +01007};
8static constexpr uint8_t expected_cfi_kThumb2[] = {
9 0x44, 0x0E, 0x1C, 0x85, 0x07, 0x86, 0x06, 0x87, 0x05, 0x88, 0x04, 0x8A,
10 0x03, 0x8B, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x5C, 0x05, 0x50, 0x17, 0x05,
11 0x51, 0x16, 0x05, 0x52, 0x15, 0x05, 0x53, 0x14, 0x05, 0x54, 0x13, 0x05,
12 0x55, 0x12, 0x05, 0x56, 0x11, 0x05, 0x57, 0x10, 0x05, 0x58, 0x0F, 0x05,
13 0x59, 0x0E, 0x05, 0x5A, 0x0D, 0x05, 0x5B, 0x0C, 0x05, 0x5C, 0x0B, 0x05,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000014 0x5D, 0x0A, 0x05, 0x5E, 0x09, 0x05, 0x5F, 0x08, 0x42, 0x0E, 0x60, 0x4E,
15 0x0E, 0x80, 0x01, 0x42, 0x0E, 0x60, 0x0A, 0x42, 0x0E, 0x5C, 0x44, 0x0E,
Vladimir Markocedec9d2021-02-08 16:16:13 +000016 0x1C, 0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, 0x06, 0x54, 0x06,
17 0x55, 0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, 0x06, 0x5A, 0x06,
18 0x5B, 0x06, 0x5C, 0x06, 0x5D, 0x06, 0x5E, 0x06, 0x5F, 0x44, 0x0E, 0x00,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000019 0xC5, 0xC6, 0xC7, 0xC8, 0xCA, 0xCB, 0xCE, 0x46, 0x0B, 0x0E, 0x60,
David Srbeckydd973932015-04-07 20:29:48 +010020};
Roland Levillain6d729a72017-06-30 18:34:01 +010021// 0x00000000: push {r5,r6,r7,r8,r10,r11,lr}
David Srbeckydd973932015-04-07 20:29:48 +010022// 0x00000004: .cfi_def_cfa_offset: 28
23// 0x00000004: .cfi_offset: r5 at cfa-28
24// 0x00000004: .cfi_offset: r6 at cfa-24
25// 0x00000004: .cfi_offset: r7 at cfa-20
26// 0x00000004: .cfi_offset: r8 at cfa-16
27// 0x00000004: .cfi_offset: r10 at cfa-12
28// 0x00000004: .cfi_offset: r11 at cfa-8
29// 0x00000004: .cfi_offset: r14 at cfa-4
Roland Levillain6d729a72017-06-30 18:34:01 +010030// 0x00000004: vpush {s16-s31}
David Srbeckydd973932015-04-07 20:29:48 +010031// 0x00000008: .cfi_def_cfa_offset: 92
32// 0x00000008: .cfi_offset_extended: r80 at cfa-92
33// 0x00000008: .cfi_offset_extended: r81 at cfa-88
34// 0x00000008: .cfi_offset_extended: r82 at cfa-84
35// 0x00000008: .cfi_offset_extended: r83 at cfa-80
36// 0x00000008: .cfi_offset_extended: r84 at cfa-76
37// 0x00000008: .cfi_offset_extended: r85 at cfa-72
38// 0x00000008: .cfi_offset_extended: r86 at cfa-68
39// 0x00000008: .cfi_offset_extended: r87 at cfa-64
40// 0x00000008: .cfi_offset_extended: r88 at cfa-60
41// 0x00000008: .cfi_offset_extended: r89 at cfa-56
42// 0x00000008: .cfi_offset_extended: r90 at cfa-52
43// 0x00000008: .cfi_offset_extended: r91 at cfa-48
44// 0x00000008: .cfi_offset_extended: r92 at cfa-44
45// 0x00000008: .cfi_offset_extended: r93 at cfa-40
46// 0x00000008: .cfi_offset_extended: r94 at cfa-36
47// 0x00000008: .cfi_offset_extended: r95 at cfa-32
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000048// 0x00000008: sub sp, #4
49// 0x0000000a: .cfi_def_cfa_offset: 96
Roland Levillain6d729a72017-06-30 18:34:01 +010050// 0x0000000a: str r0, [sp]
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000051// 0x0000000c: str r1, [sp, #100]
52// 0x0000000e: vstr s0, [sp, #104]
53// 0x00000012: str r2, [sp, #108]
54// 0x00000014: str r3, [sp, #112]
Roland Levillain6d729a72017-06-30 18:34:01 +010055// 0x00000016: sub sp, #32
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000056// 0x00000018: .cfi_def_cfa_offset: 128
Roland Levillain6d729a72017-06-30 18:34:01 +010057// 0x00000018: add sp, #32
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000058// 0x0000001a: .cfi_def_cfa_offset: 96
Vladimir Marko3a656e12016-08-02 14:57:56 +010059// 0x0000001a: .cfi_remember_state
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000060// 0x0000001a: add sp, #4
Vladimir Marko3a656e12016-08-02 14:57:56 +010061// 0x0000001c: .cfi_def_cfa_offset: 92
Roland Levillain6d729a72017-06-30 18:34:01 +010062// 0x0000001c: vpop {s16-s31}
Vladimir Marko3a656e12016-08-02 14:57:56 +010063// 0x00000020: .cfi_def_cfa_offset: 28
64// 0x00000020: .cfi_restore_extended: r80
65// 0x00000020: .cfi_restore_extended: r81
66// 0x00000020: .cfi_restore_extended: r82
67// 0x00000020: .cfi_restore_extended: r83
68// 0x00000020: .cfi_restore_extended: r84
69// 0x00000020: .cfi_restore_extended: r85
70// 0x00000020: .cfi_restore_extended: r86
71// 0x00000020: .cfi_restore_extended: r87
72// 0x00000020: .cfi_restore_extended: r88
73// 0x00000020: .cfi_restore_extended: r89
74// 0x00000020: .cfi_restore_extended: r90
75// 0x00000020: .cfi_restore_extended: r91
76// 0x00000020: .cfi_restore_extended: r92
77// 0x00000020: .cfi_restore_extended: r93
78// 0x00000020: .cfi_restore_extended: r94
79// 0x00000020: .cfi_restore_extended: r95
Roland Levillain6d729a72017-06-30 18:34:01 +010080// 0x00000020: pop {r5,r6,r7,r8,r10,r11,lr}
Vladimir Marko853367b2021-01-25 09:58:21 +000081// 0x00000024: .cfi_def_cfa_offset: 0
82// 0x00000024: .cfi_restore: r5
83// 0x00000024: .cfi_restore: r6
84// 0x00000024: .cfi_restore: r7
85// 0x00000024: .cfi_restore: r8
86// 0x00000024: .cfi_restore: r10
87// 0x00000024: .cfi_restore: r11
88// 0x00000024: .cfi_restore: r14
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000089// 0x00000024: ldr r8, [tr, #36] ; is_gc_marking
Roland Levillain6d729a72017-06-30 18:34:01 +010090// 0x00000028: bx lr
91// 0x0000002a: .cfi_restore_state
Vladimir Markocedec9d2021-02-08 16:16:13 +000092// 0x0000002a: .cfi_def_cfa_offset: 112
David Srbeckydd973932015-04-07 20:29:48 +010093
94static constexpr uint8_t expected_asm_kArm64[] = {
Vladimir Markocedec9d2021-02-08 16:16:13 +000095 0xFF, 0xC3, 0x02, 0xD1, 0xF3, 0x53, 0x05, 0xA9, 0xF5, 0x5B, 0x06, 0xA9,
96 0xF7, 0x63, 0x07, 0xA9, 0xF9, 0x6B, 0x08, 0xA9, 0xFB, 0x73, 0x09, 0xA9,
97 0xFD, 0x7B, 0x0A, 0xA9, 0xE8, 0x27, 0x01, 0x6D, 0xEA, 0x2F, 0x02, 0x6D,
98 0xEC, 0x37, 0x03, 0x6D, 0xEE, 0x3F, 0x04, 0x6D, 0xE0, 0x03, 0x00, 0xF9,
99 0xE1, 0xBB, 0x00, 0xB9, 0xE0, 0xBF, 0x00, 0xBD, 0xE2, 0xC3, 0x00, 0xB9,
100 0xE3, 0xC7, 0x00, 0xB9, 0xFF, 0x83, 0x00, 0xD1, 0xFF, 0x83, 0x00, 0x91,
101 0xF3, 0x53, 0x45, 0xA9, 0xF5, 0x5B, 0x46, 0xA9, 0xF7, 0x63, 0x47, 0xA9,
102 0xF9, 0x6B, 0x48, 0xA9, 0xFB, 0x73, 0x49, 0xA9, 0xFD, 0x7B, 0x4A, 0xA9,
103 0xE8, 0x27, 0x41, 0x6D, 0xEA, 0x2F, 0x42, 0x6D, 0xEC, 0x37, 0x43, 0x6D,
Nicolas Geoffray4d29efc2021-10-07 15:15:08 +0100104 0xEE, 0x3F, 0x44, 0x6D, 0x74, 0x26, 0x40, 0xB9, 0xFF, 0xC3, 0x02, 0x91,
Roland Levillain97c46462017-05-11 14:04:03 +0100105 0xC0, 0x03, 0x5F, 0xD6,
David Srbeckydd973932015-04-07 20:29:48 +0100106};
107static constexpr uint8_t expected_cfi_kArm64[] = {
Vladimir Markocedec9d2021-02-08 16:16:13 +0000108 0x44, 0x0E, 0xB0, 0x01, 0x44, 0x93, 0x18, 0x94, 0x16, 0x44, 0x95, 0x14,
Zheng Xu69a50302015-04-14 20:04:41 +0800109 0x96, 0x12, 0x44, 0x97, 0x10, 0x98, 0x0E, 0x44, 0x99, 0x0C, 0x9A, 0x0A,
110 0x44, 0x9B, 0x08, 0x9C, 0x06, 0x44, 0x9D, 0x04, 0x9E, 0x02, 0x44, 0x05,
111 0x48, 0x28, 0x05, 0x49, 0x26, 0x44, 0x05, 0x4A, 0x24, 0x05, 0x4B, 0x22,
112 0x44, 0x05, 0x4C, 0x20, 0x05, 0x4D, 0x1E, 0x44, 0x05, 0x4E, 0x1C, 0x05,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000113 0x4F, 0x1A, 0x58, 0x0E, 0xD0, 0x01, 0x44, 0x0E, 0xB0, 0x01, 0x0A, 0x44,
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100114 0xD3, 0xD4, 0x44, 0xD5, 0xD6, 0x44, 0xD7, 0xD8, 0x44, 0xD9, 0xDA, 0x44,
115 0xDB, 0xDC, 0x44, 0xDD, 0xDE, 0x44, 0x06, 0x48, 0x06, 0x49, 0x44, 0x06,
116 0x4A, 0x06, 0x4B, 0x44, 0x06, 0x4C, 0x06, 0x4D, 0x44, 0x06, 0x4E, 0x06,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000117 0x4F, 0x48, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0xB0, 0x01,
David Srbeckydd973932015-04-07 20:29:48 +0100118};
Vladimir Markocedec9d2021-02-08 16:16:13 +0000119// 0x00000000: sub sp, sp, #0xb0 (176)
120// 0x00000004: .cfi_def_cfa_offset: 176
121// 0x00000004: stp tr, x20, [sp, #80]
Zheng Xu69a50302015-04-14 20:04:41 +0800122// 0x00000008: .cfi_offset: r19 at cfa-96
123// 0x00000008: .cfi_offset: r20 at cfa-88
Vladimir Markocedec9d2021-02-08 16:16:13 +0000124// 0x00000008: stp x21, x22, [sp, #96]
Zheng Xu69a50302015-04-14 20:04:41 +0800125// 0x0000000c: .cfi_offset: r21 at cfa-80
126// 0x0000000c: .cfi_offset: r22 at cfa-72
Vladimir Markocedec9d2021-02-08 16:16:13 +0000127// 0x0000000c: stp x23, x24, [sp, #112]
Zheng Xu69a50302015-04-14 20:04:41 +0800128// 0x00000010: .cfi_offset: r23 at cfa-64
129// 0x00000010: .cfi_offset: r24 at cfa-56
Vladimir Markocedec9d2021-02-08 16:16:13 +0000130// 0x00000010: stp x25, x26, [sp, #128]
Zheng Xu69a50302015-04-14 20:04:41 +0800131// 0x00000014: .cfi_offset: r25 at cfa-48
132// 0x00000014: .cfi_offset: r26 at cfa-40
Vladimir Markocedec9d2021-02-08 16:16:13 +0000133// 0x00000014: stp x27, x28, [sp, #144]
Zheng Xu69a50302015-04-14 20:04:41 +0800134// 0x00000018: .cfi_offset: r27 at cfa-32
135// 0x00000018: .cfi_offset: r28 at cfa-24
Vladimir Markocedec9d2021-02-08 16:16:13 +0000136// 0x00000018: stp x29, lr, [sp, #160]
Zheng Xu69a50302015-04-14 20:04:41 +0800137// 0x0000001c: .cfi_offset: r29 at cfa-16
138// 0x0000001c: .cfi_offset: r30 at cfa-8
Vladimir Markocedec9d2021-02-08 16:16:13 +0000139// 0x0000001c: stp d8, d9, [sp, #16]
Zheng Xu69a50302015-04-14 20:04:41 +0800140// 0x00000020: .cfi_offset_extended: r72 at cfa-160
141// 0x00000020: .cfi_offset_extended: r73 at cfa-152
Vladimir Markocedec9d2021-02-08 16:16:13 +0000142// 0x00000020: stp d10, d11, [sp, #32]
Zheng Xu69a50302015-04-14 20:04:41 +0800143// 0x00000024: .cfi_offset_extended: r74 at cfa-144
144// 0x00000024: .cfi_offset_extended: r75 at cfa-136
Vladimir Markocedec9d2021-02-08 16:16:13 +0000145// 0x00000024: stp d12, d13, [sp, #48]
Zheng Xu69a50302015-04-14 20:04:41 +0800146// 0x00000028: .cfi_offset_extended: r76 at cfa-128
147// 0x00000028: .cfi_offset_extended: r77 at cfa-120
Vladimir Markocedec9d2021-02-08 16:16:13 +0000148// 0x00000028: stp d14, d15, [sp, #64]
Zheng Xu69a50302015-04-14 20:04:41 +0800149// 0x0000002c: .cfi_offset_extended: r78 at cfa-112
150// 0x0000002c: .cfi_offset_extended: r79 at cfa-104
Mathieu Chartiere401d142015-04-22 13:56:20 -0700151// 0x0000002c: str x0, [sp]
Vladimir Markocedec9d2021-02-08 16:16:13 +0000152// 0x00000030: str w1, [sp, #184]
153// 0x00000034: str s0, [sp, #188]
154// 0x00000038: str w2, [sp, #192]
155// 0x0000003c: str w3, [sp, #196]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100156// 0x00000040: sub sp, sp, #0x20 (32)
Vladimir Markocedec9d2021-02-08 16:16:13 +0000157// 0x00000044: .cfi_def_cfa_offset: 208
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100158// 0x00000044: add sp, sp, #0x20 (32)
Vladimir Markocedec9d2021-02-08 16:16:13 +0000159// 0x00000048: .cfi_def_cfa_offset: 176
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100160// 0x00000048: .cfi_remember_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000161// 0x00000048: ldp tr, x20, [sp, #80]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100162// 0x0000004c: .cfi_restore: r19
163// 0x0000004c: .cfi_restore: r20
Vladimir Markocedec9d2021-02-08 16:16:13 +0000164// 0x0000004c: ldp x21, x22, [sp, #96]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100165// 0x00000050: .cfi_restore: r21
166// 0x00000050: .cfi_restore: r22
Vladimir Markocedec9d2021-02-08 16:16:13 +0000167// 0x00000050: ldp x23, x24, [sp, #112]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100168// 0x00000054: .cfi_restore: r23
169// 0x00000054: .cfi_restore: r24
Vladimir Markocedec9d2021-02-08 16:16:13 +0000170// 0x00000054: ldp x25, x26, [sp, #128]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100171// 0x00000058: .cfi_restore: r25
172// 0x00000058: .cfi_restore: r26
Vladimir Markocedec9d2021-02-08 16:16:13 +0000173// 0x00000058: ldp x27, x28, [sp, #144]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100174// 0x0000005c: .cfi_restore: r27
175// 0x0000005c: .cfi_restore: r28
Vladimir Markocedec9d2021-02-08 16:16:13 +0000176// 0x0000005c: ldp x29, lr, [sp, #160]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100177// 0x00000060: .cfi_restore: r29
178// 0x00000060: .cfi_restore: r30
Vladimir Markocedec9d2021-02-08 16:16:13 +0000179// 0x00000060: ldp d8, d9, [sp, #16]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100180// 0x00000064: .cfi_restore_extended: r72
181// 0x00000064: .cfi_restore_extended: r73
Vladimir Markocedec9d2021-02-08 16:16:13 +0000182// 0x00000064: ldp d10, d11, [sp, #32]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100183// 0x00000068: .cfi_restore_extended: r74
184// 0x00000068: .cfi_restore_extended: r75
Vladimir Markocedec9d2021-02-08 16:16:13 +0000185// 0x00000068: ldp d12, d13, [sp, #48]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100186// 0x0000006c: .cfi_restore_extended: r76
187// 0x0000006c: .cfi_restore_extended: r77
Vladimir Markocedec9d2021-02-08 16:16:13 +0000188// 0x0000006c: ldp d14, d15, [sp, #64]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100189// 0x00000070: .cfi_restore_extended: r78
190// 0x00000070: .cfi_restore_extended: r79
Vladimir Markocedec9d2021-02-08 16:16:13 +0000191// 0x00000070: ldr w20, [tr, #48] ; is_gc_marking
192// 0x00000074: add sp, sp, #0xb0 (176)
Roland Levillain97c46462017-05-11 14:04:03 +0100193// 0x00000078: .cfi_def_cfa_offset: 0
194// 0x00000078: ret
195// 0x0000007c: .cfi_restore_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000196// 0x0000007c: .cfi_def_cfa_offset: 176
David Srbeckydd973932015-04-07 20:29:48 +0100197
198static constexpr uint8_t expected_asm_kX86[] = {
Vladimir Markocedec9d2021-02-08 16:16:13 +0000199 0x57, 0x56, 0x55, 0x83, 0xC4, 0xF4, 0x50, 0x89, 0x4C, 0x24, 0x24, 0xF3,
200 0x0F, 0x11, 0x44, 0x24, 0x28, 0x89, 0x54, 0x24, 0x2C, 0x89, 0x5C, 0x24,
201 0x30, 0x83, 0xC4, 0xE0, 0x83, 0xC4, 0x20, 0x83, 0xC4, 0x10, 0x5D, 0x5E,
David Srbeckydd973932015-04-07 20:29:48 +0100202 0x5F, 0xC3,
203};
204static constexpr uint8_t expected_cfi_kX86[] = {
205 0x41, 0x0E, 0x08, 0x87, 0x02, 0x41, 0x0E, 0x0C, 0x86, 0x03, 0x41, 0x0E,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000206 0x10, 0x85, 0x04, 0x43, 0x0E, 0x1C, 0x41, 0x0E, 0x20, 0x55, 0x0E, 0x40,
207 0x43, 0x0E, 0x20, 0x0A, 0x43, 0x0E, 0x10, 0x41, 0x0E, 0x0C, 0xC5, 0x41,
208 0x0E, 0x08, 0xC6, 0x41, 0x0E, 0x04, 0xC7, 0x41, 0x0B, 0x0E, 0x20,
David Srbeckydd973932015-04-07 20:29:48 +0100209};
210// 0x00000000: push edi
211// 0x00000001: .cfi_def_cfa_offset: 8
212// 0x00000001: .cfi_offset: r7 at cfa-8
213// 0x00000001: push esi
214// 0x00000002: .cfi_def_cfa_offset: 12
215// 0x00000002: .cfi_offset: r6 at cfa-12
216// 0x00000002: push ebp
217// 0x00000003: .cfi_def_cfa_offset: 16
218// 0x00000003: .cfi_offset: r5 at cfa-16
Vladimir Markocedec9d2021-02-08 16:16:13 +0000219// 0x00000003: add esp, -12
220// 0x00000006: .cfi_def_cfa_offset: 28
David Srbeckydd973932015-04-07 20:29:48 +0100221// 0x00000006: push eax
Vladimir Markocedec9d2021-02-08 16:16:13 +0000222// 0x00000007: .cfi_def_cfa_offset: 32
223// 0x00000007: mov [esp + 36], ecx
224// 0x0000000b: movss [esp + 40], xmm0
225// 0x00000011: mov [esp + 44], edx
226// 0x00000015: mov [esp + 48], ebx
David Srbeckydd973932015-04-07 20:29:48 +0100227// 0x00000019: add esp, -32
Vladimir Markocedec9d2021-02-08 16:16:13 +0000228// 0x0000001c: .cfi_def_cfa_offset: 64
David Srbeckydd973932015-04-07 20:29:48 +0100229// 0x0000001c: add esp, 32
Vladimir Markocedec9d2021-02-08 16:16:13 +0000230// 0x0000001f: .cfi_def_cfa_offset: 32
David Srbeckydd973932015-04-07 20:29:48 +0100231// 0x0000001f: .cfi_remember_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000232// 0x0000001f: add esp, 16
David Srbeckydd973932015-04-07 20:29:48 +0100233// 0x00000022: .cfi_def_cfa_offset: 16
234// 0x00000022: pop ebp
235// 0x00000023: .cfi_def_cfa_offset: 12
236// 0x00000023: .cfi_restore: r5
237// 0x00000023: pop esi
238// 0x00000024: .cfi_def_cfa_offset: 8
239// 0x00000024: .cfi_restore: r6
240// 0x00000024: pop edi
241// 0x00000025: .cfi_def_cfa_offset: 4
242// 0x00000025: .cfi_restore: r7
243// 0x00000025: ret
244// 0x00000026: .cfi_restore_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000245// 0x00000026: .cfi_def_cfa_offset: 32
David Srbeckydd973932015-04-07 20:29:48 +0100246
247static constexpr uint8_t expected_asm_kX86_64[] = {
248 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x55, 0x53, 0x48, 0x83,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000249 0xEC, 0x28, 0xF2, 0x44, 0x0F, 0x11, 0x7C, 0x24, 0x20, 0xF2, 0x44, 0x0F,
250 0x11, 0x74, 0x24, 0x18, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 0x10, 0xF2,
251 0x44, 0x0F, 0x11, 0x64, 0x24, 0x08, 0x48, 0x89, 0x3C, 0x24, 0x89, 0x74,
252 0x24, 0x68, 0xF3, 0x0F, 0x11, 0x44, 0x24, 0x6C, 0x89, 0x54, 0x24, 0x70,
253 0x89, 0x4C, 0x24, 0x74, 0x48, 0x83, 0xC4, 0xE0, 0x48, 0x83, 0xC4, 0x20,
254 0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x08, 0xF2, 0x44, 0x0F, 0x10, 0x6C,
255 0x24, 0x10, 0xF2, 0x44, 0x0F, 0x10, 0x74, 0x24, 0x18, 0xF2, 0x44, 0x0F,
256 0x10, 0x7C, 0x24, 0x20, 0x48, 0x83, 0xC4, 0x28, 0x5B, 0x5D, 0x41, 0x5C,
257 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3,
David Srbeckydd973932015-04-07 20:29:48 +0100258};
259static constexpr uint8_t expected_cfi_kX86_64[] = {
260 0x42, 0x0E, 0x10, 0x8F, 0x04, 0x42, 0x0E, 0x18, 0x8E, 0x06, 0x42, 0x0E,
261 0x20, 0x8D, 0x08, 0x42, 0x0E, 0x28, 0x8C, 0x0A, 0x41, 0x0E, 0x30, 0x86,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000262 0x0C, 0x41, 0x0E, 0x38, 0x83, 0x0E, 0x44, 0x0E, 0x60, 0x47, 0xA0, 0x10,
263 0x47, 0x9F, 0x12, 0x47, 0x9E, 0x14, 0x47, 0x9D, 0x16, 0x5A, 0x0E, 0x80,
264 0x01, 0x44, 0x0E, 0x60, 0x0A, 0x47, 0xDD, 0x47, 0xDE, 0x47, 0xDF, 0x47,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000265 0xE0, 0x44, 0x0E, 0x38, 0x41, 0x0E, 0x30, 0xC3, 0x41, 0x0E, 0x28, 0xC6,
266 0x42, 0x0E, 0x20, 0xCC, 0x42, 0x0E, 0x18, 0xCD, 0x42, 0x0E, 0x10, 0xCE,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000267 0x42, 0x0E, 0x08, 0xCF, 0x41, 0x0B, 0x0E, 0x60,
David Srbeckydd973932015-04-07 20:29:48 +0100268};
269// 0x00000000: push r15
270// 0x00000002: .cfi_def_cfa_offset: 16
271// 0x00000002: .cfi_offset: r15 at cfa-16
272// 0x00000002: push r14
273// 0x00000004: .cfi_def_cfa_offset: 24
274// 0x00000004: .cfi_offset: r14 at cfa-24
275// 0x00000004: push r13
276// 0x00000006: .cfi_def_cfa_offset: 32
277// 0x00000006: .cfi_offset: r13 at cfa-32
278// 0x00000006: push r12
279// 0x00000008: .cfi_def_cfa_offset: 40
280// 0x00000008: .cfi_offset: r12 at cfa-40
281// 0x00000008: push rbp
282// 0x00000009: .cfi_def_cfa_offset: 48
283// 0x00000009: .cfi_offset: r6 at cfa-48
284// 0x00000009: push rbx
285// 0x0000000a: .cfi_def_cfa_offset: 56
286// 0x0000000a: .cfi_offset: r3 at cfa-56
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000287// 0x0000000a: subq rsp, 40
288// 0x0000000e: .cfi_def_cfa_offset: 96
289// 0x0000000e: movsd [rsp + 32], xmm15
David Srbeckydd973932015-04-07 20:29:48 +0100290// 0x00000015: .cfi_offset: r32 at cfa-64
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000291// 0x00000015: movsd [rsp + 24], xmm14
David Srbeckydd973932015-04-07 20:29:48 +0100292// 0x0000001c: .cfi_offset: r31 at cfa-72
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000293// 0x0000001c: movsd [rsp + 16], xmm13
David Srbeckydd973932015-04-07 20:29:48 +0100294// 0x00000023: .cfi_offset: r30 at cfa-80
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000295// 0x00000023: movsd [rsp + 8], xmm12
David Srbeckydd973932015-04-07 20:29:48 +0100296// 0x0000002a: .cfi_offset: r29 at cfa-88
Mathieu Chartiere401d142015-04-22 13:56:20 -0700297// 0x0000002a: movq [rsp], rdi
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000298// 0x0000002e: mov [rsp + 104], esi
299// 0x00000032: movss [rsp + 108], xmm0
300// 0x00000038: mov [rsp + 112], edx
301// 0x0000003c: mov [rsp + 116], ecx
302// 0x00000040: addq rsp, -32
303// 0x00000044: .cfi_def_cfa_offset: 128
304// 0x00000044: addq rsp, 32
305// 0x00000048: .cfi_def_cfa_offset: 96
306// 0x00000048: .cfi_remember_state
307// 0x00000048: movsd xmm12, [rsp + 8]
308// 0x0000004f: .cfi_restore: r29
309// 0x0000004f: movsd xmm13, [rsp + 16]
310// 0x00000056: .cfi_restore: r30
311// 0x00000056: movsd xmm14, [rsp + 24]
312// 0x0000005d: .cfi_restore: r31
313// 0x0000005d: movsd xmm15, [rsp + 32]
314// 0x00000064: .cfi_restore: r32
315// 0x00000064: addq rsp, 40
316// 0x00000068: .cfi_def_cfa_offset: 56
317// 0x00000068: pop rbx
318// 0x00000069: .cfi_def_cfa_offset: 48
319// 0x00000069: .cfi_restore: r3
320// 0x00000069: pop rbp
321// 0x0000006a: .cfi_def_cfa_offset: 40
322// 0x0000006a: .cfi_restore: r6
323// 0x0000006a: pop r12
324// 0x0000006c: .cfi_def_cfa_offset: 32
325// 0x0000006c: .cfi_restore: r12
326// 0x0000006c: pop r13
327// 0x0000006e: .cfi_def_cfa_offset: 24
328// 0x0000006e: .cfi_restore: r13
329// 0x0000006e: pop r14
330// 0x00000070: .cfi_def_cfa_offset: 16
331// 0x00000070: .cfi_restore: r14
332// 0x00000070: pop r15
333// 0x00000072: .cfi_def_cfa_offset: 8
334// 0x00000072: .cfi_restore: r15
335// 0x00000072: ret
336// 0x00000073: .cfi_restore_state
337// 0x00000073: .cfi_def_cfa_offset: 96
David Srbeckydd973932015-04-07 20:29:48 +0100338