blob: 47a67c72c0c1d9d6efe07e721890741b236ebb54 [file] [log] [blame]
Alex Light72e27b02020-07-27 12:59:58 -07001// TODO These arrays should be generated automatically or have instructions for re-creation.
Hans Boehm17195422023-12-19 20:35:24 +00002// For now, the gc_is_marking offset can be adjusted by tweaking the last CL that made a
3// similar change.
4
David Srbeckydd973932015-04-07 20:29:48 +01005static constexpr uint8_t expected_asm_kThumb2[] = {
Vladimir Markoe74e0ce2021-12-08 14:16:21 +00006 0x2D, 0xE9, 0xE0, 0x4D, 0x2D, 0xED, 0x10, 0x8A, 0x81, 0xB0, 0x00, 0x90,
7 0x19, 0x91, 0x8D, 0xED, 0x1A, 0x0A, 0x1B, 0x92, 0x1C, 0x93, 0x88, 0xB0,
8 0x08, 0xB0, 0x01, 0xB0, 0xBD, 0xEC, 0x10, 0x8A, 0xBD, 0xE8, 0xE0, 0x4D,
Hans Boehm17195422023-12-19 20:35:24 +00009 0xD9, 0xF8, 0x20, 0x80, 0x70, 0x47,
David Srbeckydd973932015-04-07 20:29:48 +010010};
11static constexpr uint8_t expected_cfi_kThumb2[] = {
12 0x44, 0x0E, 0x1C, 0x85, 0x07, 0x86, 0x06, 0x87, 0x05, 0x88, 0x04, 0x8A,
13 0x03, 0x8B, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x5C, 0x05, 0x50, 0x17, 0x05,
14 0x51, 0x16, 0x05, 0x52, 0x15, 0x05, 0x53, 0x14, 0x05, 0x54, 0x13, 0x05,
15 0x55, 0x12, 0x05, 0x56, 0x11, 0x05, 0x57, 0x10, 0x05, 0x58, 0x0F, 0x05,
16 0x59, 0x0E, 0x05, 0x5A, 0x0D, 0x05, 0x5B, 0x0C, 0x05, 0x5C, 0x0B, 0x05,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000017 0x5D, 0x0A, 0x05, 0x5E, 0x09, 0x05, 0x5F, 0x08, 0x42, 0x0E, 0x60, 0x4E,
18 0x0E, 0x80, 0x01, 0x42, 0x0E, 0x60, 0x0A, 0x42, 0x0E, 0x5C, 0x44, 0x0E,
Vladimir Markocedec9d2021-02-08 16:16:13 +000019 0x1C, 0x06, 0x50, 0x06, 0x51, 0x06, 0x52, 0x06, 0x53, 0x06, 0x54, 0x06,
20 0x55, 0x06, 0x56, 0x06, 0x57, 0x06, 0x58, 0x06, 0x59, 0x06, 0x5A, 0x06,
21 0x5B, 0x06, 0x5C, 0x06, 0x5D, 0x06, 0x5E, 0x06, 0x5F, 0x44, 0x0E, 0x00,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000022 0xC5, 0xC6, 0xC7, 0xC8, 0xCA, 0xCB, 0xCE, 0x46, 0x0B, 0x0E, 0x60,
David Srbeckydd973932015-04-07 20:29:48 +010023};
Roland Levillain6d729a72017-06-30 18:34:01 +010024// 0x00000000: push {r5,r6,r7,r8,r10,r11,lr}
David Srbeckydd973932015-04-07 20:29:48 +010025// 0x00000004: .cfi_def_cfa_offset: 28
26// 0x00000004: .cfi_offset: r5 at cfa-28
27// 0x00000004: .cfi_offset: r6 at cfa-24
28// 0x00000004: .cfi_offset: r7 at cfa-20
29// 0x00000004: .cfi_offset: r8 at cfa-16
30// 0x00000004: .cfi_offset: r10 at cfa-12
31// 0x00000004: .cfi_offset: r11 at cfa-8
32// 0x00000004: .cfi_offset: r14 at cfa-4
Roland Levillain6d729a72017-06-30 18:34:01 +010033// 0x00000004: vpush {s16-s31}
David Srbeckydd973932015-04-07 20:29:48 +010034// 0x00000008: .cfi_def_cfa_offset: 92
35// 0x00000008: .cfi_offset_extended: r80 at cfa-92
36// 0x00000008: .cfi_offset_extended: r81 at cfa-88
37// 0x00000008: .cfi_offset_extended: r82 at cfa-84
38// 0x00000008: .cfi_offset_extended: r83 at cfa-80
39// 0x00000008: .cfi_offset_extended: r84 at cfa-76
40// 0x00000008: .cfi_offset_extended: r85 at cfa-72
41// 0x00000008: .cfi_offset_extended: r86 at cfa-68
42// 0x00000008: .cfi_offset_extended: r87 at cfa-64
43// 0x00000008: .cfi_offset_extended: r88 at cfa-60
44// 0x00000008: .cfi_offset_extended: r89 at cfa-56
45// 0x00000008: .cfi_offset_extended: r90 at cfa-52
46// 0x00000008: .cfi_offset_extended: r91 at cfa-48
47// 0x00000008: .cfi_offset_extended: r92 at cfa-44
48// 0x00000008: .cfi_offset_extended: r93 at cfa-40
49// 0x00000008: .cfi_offset_extended: r94 at cfa-36
50// 0x00000008: .cfi_offset_extended: r95 at cfa-32
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000051// 0x00000008: sub sp, #4
52// 0x0000000a: .cfi_def_cfa_offset: 96
Roland Levillain6d729a72017-06-30 18:34:01 +010053// 0x0000000a: str r0, [sp]
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000054// 0x0000000c: str r1, [sp, #100]
55// 0x0000000e: vstr s0, [sp, #104]
56// 0x00000012: str r2, [sp, #108]
57// 0x00000014: str r3, [sp, #112]
Roland Levillain6d729a72017-06-30 18:34:01 +010058// 0x00000016: sub sp, #32
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000059// 0x00000018: .cfi_def_cfa_offset: 128
Roland Levillain6d729a72017-06-30 18:34:01 +010060// 0x00000018: add sp, #32
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000061// 0x0000001a: .cfi_def_cfa_offset: 96
Vladimir Marko3a656e12016-08-02 14:57:56 +010062// 0x0000001a: .cfi_remember_state
Vladimir Markoe74e0ce2021-12-08 14:16:21 +000063// 0x0000001a: add sp, #4
Vladimir Marko3a656e12016-08-02 14:57:56 +010064// 0x0000001c: .cfi_def_cfa_offset: 92
Roland Levillain6d729a72017-06-30 18:34:01 +010065// 0x0000001c: vpop {s16-s31}
Vladimir Marko3a656e12016-08-02 14:57:56 +010066// 0x00000020: .cfi_def_cfa_offset: 28
67// 0x00000020: .cfi_restore_extended: r80
68// 0x00000020: .cfi_restore_extended: r81
69// 0x00000020: .cfi_restore_extended: r82
70// 0x00000020: .cfi_restore_extended: r83
71// 0x00000020: .cfi_restore_extended: r84
72// 0x00000020: .cfi_restore_extended: r85
73// 0x00000020: .cfi_restore_extended: r86
74// 0x00000020: .cfi_restore_extended: r87
75// 0x00000020: .cfi_restore_extended: r88
76// 0x00000020: .cfi_restore_extended: r89
77// 0x00000020: .cfi_restore_extended: r90
78// 0x00000020: .cfi_restore_extended: r91
79// 0x00000020: .cfi_restore_extended: r92
80// 0x00000020: .cfi_restore_extended: r93
81// 0x00000020: .cfi_restore_extended: r94
82// 0x00000020: .cfi_restore_extended: r95
Roland Levillain6d729a72017-06-30 18:34:01 +010083// 0x00000020: pop {r5,r6,r7,r8,r10,r11,lr}
Vladimir Marko853367b2021-01-25 09:58:21 +000084// 0x00000024: .cfi_def_cfa_offset: 0
85// 0x00000024: .cfi_restore: r5
86// 0x00000024: .cfi_restore: r6
87// 0x00000024: .cfi_restore: r7
88// 0x00000024: .cfi_restore: r8
89// 0x00000024: .cfi_restore: r10
90// 0x00000024: .cfi_restore: r11
91// 0x00000024: .cfi_restore: r14
Hans Boehm17195422023-12-19 20:35:24 +000092// 0x00000024: ldr r8, [tr, #32] ; is_gc_marking
Roland Levillain6d729a72017-06-30 18:34:01 +010093// 0x00000028: bx lr
94// 0x0000002a: .cfi_restore_state
Vladimir Markocedec9d2021-02-08 16:16:13 +000095// 0x0000002a: .cfi_def_cfa_offset: 112
David Srbeckydd973932015-04-07 20:29:48 +010096
97static constexpr uint8_t expected_asm_kArm64[] = {
Vladimir Markocedec9d2021-02-08 16:16:13 +000098 0xFF, 0xC3, 0x02, 0xD1, 0xF3, 0x53, 0x05, 0xA9, 0xF5, 0x5B, 0x06, 0xA9,
99 0xF7, 0x63, 0x07, 0xA9, 0xF9, 0x6B, 0x08, 0xA9, 0xFB, 0x73, 0x09, 0xA9,
100 0xFD, 0x7B, 0x0A, 0xA9, 0xE8, 0x27, 0x01, 0x6D, 0xEA, 0x2F, 0x02, 0x6D,
101 0xEC, 0x37, 0x03, 0x6D, 0xEE, 0x3F, 0x04, 0x6D, 0xE0, 0x03, 0x00, 0xF9,
102 0xE1, 0xBB, 0x00, 0xB9, 0xE0, 0xBF, 0x00, 0xBD, 0xE2, 0xC3, 0x00, 0xB9,
103 0xE3, 0xC7, 0x00, 0xB9, 0xFF, 0x83, 0x00, 0xD1, 0xFF, 0x83, 0x00, 0x91,
104 0xF3, 0x53, 0x45, 0xA9, 0xF5, 0x5B, 0x46, 0xA9, 0xF7, 0x63, 0x47, 0xA9,
105 0xF9, 0x6B, 0x48, 0xA9, 0xFB, 0x73, 0x49, 0xA9, 0xFD, 0x7B, 0x4A, 0xA9,
106 0xE8, 0x27, 0x41, 0x6D, 0xEA, 0x2F, 0x42, 0x6D, 0xEC, 0x37, 0x43, 0x6D,
Hans Boehm17195422023-12-19 20:35:24 +0000107 0xEE, 0x3F, 0x44, 0x6D, 0x74, 0x22, 0x40, 0xB9, 0xFF, 0xC3, 0x02, 0x91,
Roland Levillain97c46462017-05-11 14:04:03 +0100108 0xC0, 0x03, 0x5F, 0xD6,
David Srbeckydd973932015-04-07 20:29:48 +0100109};
110static constexpr uint8_t expected_cfi_kArm64[] = {
Vladimir Markocedec9d2021-02-08 16:16:13 +0000111 0x44, 0x0E, 0xB0, 0x01, 0x44, 0x93, 0x18, 0x94, 0x16, 0x44, 0x95, 0x14,
Zheng Xu69a50302015-04-14 20:04:41 +0800112 0x96, 0x12, 0x44, 0x97, 0x10, 0x98, 0x0E, 0x44, 0x99, 0x0C, 0x9A, 0x0A,
113 0x44, 0x9B, 0x08, 0x9C, 0x06, 0x44, 0x9D, 0x04, 0x9E, 0x02, 0x44, 0x05,
114 0x48, 0x28, 0x05, 0x49, 0x26, 0x44, 0x05, 0x4A, 0x24, 0x05, 0x4B, 0x22,
115 0x44, 0x05, 0x4C, 0x20, 0x05, 0x4D, 0x1E, 0x44, 0x05, 0x4E, 0x1C, 0x05,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000116 0x4F, 0x1A, 0x58, 0x0E, 0xD0, 0x01, 0x44, 0x0E, 0xB0, 0x01, 0x0A, 0x44,
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100117 0xD3, 0xD4, 0x44, 0xD5, 0xD6, 0x44, 0xD7, 0xD8, 0x44, 0xD9, 0xDA, 0x44,
118 0xDB, 0xDC, 0x44, 0xDD, 0xDE, 0x44, 0x06, 0x48, 0x06, 0x49, 0x44, 0x06,
119 0x4A, 0x06, 0x4B, 0x44, 0x06, 0x4C, 0x06, 0x4D, 0x44, 0x06, 0x4E, 0x06,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000120 0x4F, 0x48, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0xB0, 0x01,
David Srbeckydd973932015-04-07 20:29:48 +0100121};
Vladimir Markocedec9d2021-02-08 16:16:13 +0000122// 0x00000000: sub sp, sp, #0xb0 (176)
123// 0x00000004: .cfi_def_cfa_offset: 176
124// 0x00000004: stp tr, x20, [sp, #80]
Zheng Xu69a50302015-04-14 20:04:41 +0800125// 0x00000008: .cfi_offset: r19 at cfa-96
126// 0x00000008: .cfi_offset: r20 at cfa-88
Vladimir Markocedec9d2021-02-08 16:16:13 +0000127// 0x00000008: stp x21, x22, [sp, #96]
Zheng Xu69a50302015-04-14 20:04:41 +0800128// 0x0000000c: .cfi_offset: r21 at cfa-80
129// 0x0000000c: .cfi_offset: r22 at cfa-72
Vladimir Markocedec9d2021-02-08 16:16:13 +0000130// 0x0000000c: stp x23, x24, [sp, #112]
Zheng Xu69a50302015-04-14 20:04:41 +0800131// 0x00000010: .cfi_offset: r23 at cfa-64
132// 0x00000010: .cfi_offset: r24 at cfa-56
Vladimir Markocedec9d2021-02-08 16:16:13 +0000133// 0x00000010: stp x25, x26, [sp, #128]
Zheng Xu69a50302015-04-14 20:04:41 +0800134// 0x00000014: .cfi_offset: r25 at cfa-48
135// 0x00000014: .cfi_offset: r26 at cfa-40
Vladimir Markocedec9d2021-02-08 16:16:13 +0000136// 0x00000014: stp x27, x28, [sp, #144]
Zheng Xu69a50302015-04-14 20:04:41 +0800137// 0x00000018: .cfi_offset: r27 at cfa-32
138// 0x00000018: .cfi_offset: r28 at cfa-24
Vladimir Markocedec9d2021-02-08 16:16:13 +0000139// 0x00000018: stp x29, lr, [sp, #160]
Zheng Xu69a50302015-04-14 20:04:41 +0800140// 0x0000001c: .cfi_offset: r29 at cfa-16
141// 0x0000001c: .cfi_offset: r30 at cfa-8
Vladimir Markocedec9d2021-02-08 16:16:13 +0000142// 0x0000001c: stp d8, d9, [sp, #16]
Zheng Xu69a50302015-04-14 20:04:41 +0800143// 0x00000020: .cfi_offset_extended: r72 at cfa-160
144// 0x00000020: .cfi_offset_extended: r73 at cfa-152
Vladimir Markocedec9d2021-02-08 16:16:13 +0000145// 0x00000020: stp d10, d11, [sp, #32]
Zheng Xu69a50302015-04-14 20:04:41 +0800146// 0x00000024: .cfi_offset_extended: r74 at cfa-144
147// 0x00000024: .cfi_offset_extended: r75 at cfa-136
Vladimir Markocedec9d2021-02-08 16:16:13 +0000148// 0x00000024: stp d12, d13, [sp, #48]
Zheng Xu69a50302015-04-14 20:04:41 +0800149// 0x00000028: .cfi_offset_extended: r76 at cfa-128
150// 0x00000028: .cfi_offset_extended: r77 at cfa-120
Vladimir Markocedec9d2021-02-08 16:16:13 +0000151// 0x00000028: stp d14, d15, [sp, #64]
Zheng Xu69a50302015-04-14 20:04:41 +0800152// 0x0000002c: .cfi_offset_extended: r78 at cfa-112
153// 0x0000002c: .cfi_offset_extended: r79 at cfa-104
Mathieu Chartiere401d142015-04-22 13:56:20 -0700154// 0x0000002c: str x0, [sp]
Vladimir Markocedec9d2021-02-08 16:16:13 +0000155// 0x00000030: str w1, [sp, #184]
156// 0x00000034: str s0, [sp, #188]
157// 0x00000038: str w2, [sp, #192]
158// 0x0000003c: str w3, [sp, #196]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100159// 0x00000040: sub sp, sp, #0x20 (32)
Vladimir Markocedec9d2021-02-08 16:16:13 +0000160// 0x00000044: .cfi_def_cfa_offset: 208
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100161// 0x00000044: add sp, sp, #0x20 (32)
Vladimir Markocedec9d2021-02-08 16:16:13 +0000162// 0x00000048: .cfi_def_cfa_offset: 176
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100163// 0x00000048: .cfi_remember_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000164// 0x00000048: ldp tr, x20, [sp, #80]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100165// 0x0000004c: .cfi_restore: r19
166// 0x0000004c: .cfi_restore: r20
Vladimir Markocedec9d2021-02-08 16:16:13 +0000167// 0x0000004c: ldp x21, x22, [sp, #96]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100168// 0x00000050: .cfi_restore: r21
169// 0x00000050: .cfi_restore: r22
Vladimir Markocedec9d2021-02-08 16:16:13 +0000170// 0x00000050: ldp x23, x24, [sp, #112]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100171// 0x00000054: .cfi_restore: r23
172// 0x00000054: .cfi_restore: r24
Vladimir Markocedec9d2021-02-08 16:16:13 +0000173// 0x00000054: ldp x25, x26, [sp, #128]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100174// 0x00000058: .cfi_restore: r25
175// 0x00000058: .cfi_restore: r26
Vladimir Markocedec9d2021-02-08 16:16:13 +0000176// 0x00000058: ldp x27, x28, [sp, #144]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100177// 0x0000005c: .cfi_restore: r27
178// 0x0000005c: .cfi_restore: r28
Vladimir Markocedec9d2021-02-08 16:16:13 +0000179// 0x0000005c: ldp x29, lr, [sp, #160]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100180// 0x00000060: .cfi_restore: r29
181// 0x00000060: .cfi_restore: r30
Vladimir Markocedec9d2021-02-08 16:16:13 +0000182// 0x00000060: ldp d8, d9, [sp, #16]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100183// 0x00000064: .cfi_restore_extended: r72
184// 0x00000064: .cfi_restore_extended: r73
Vladimir Markocedec9d2021-02-08 16:16:13 +0000185// 0x00000064: ldp d10, d11, [sp, #32]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100186// 0x00000068: .cfi_restore_extended: r74
187// 0x00000068: .cfi_restore_extended: r75
Vladimir Markocedec9d2021-02-08 16:16:13 +0000188// 0x00000068: ldp d12, d13, [sp, #48]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100189// 0x0000006c: .cfi_restore_extended: r76
190// 0x0000006c: .cfi_restore_extended: r77
Vladimir Markocedec9d2021-02-08 16:16:13 +0000191// 0x0000006c: ldp d14, d15, [sp, #64]
Serban Constantinescu9bd88b02015-04-22 16:24:46 +0100192// 0x00000070: .cfi_restore_extended: r78
193// 0x00000070: .cfi_restore_extended: r79
Hans Boehm17195422023-12-19 20:35:24 +0000194// 0x00000070: ldr w20, [tr, #32] ; is_gc_marking
Vladimir Markocedec9d2021-02-08 16:16:13 +0000195// 0x00000074: add sp, sp, #0xb0 (176)
Roland Levillain97c46462017-05-11 14:04:03 +0100196// 0x00000078: .cfi_def_cfa_offset: 0
197// 0x00000078: ret
198// 0x0000007c: .cfi_restore_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000199// 0x0000007c: .cfi_def_cfa_offset: 176
David Srbeckydd973932015-04-07 20:29:48 +0100200
201static constexpr uint8_t expected_asm_kX86[] = {
Vladimir Markocedec9d2021-02-08 16:16:13 +0000202 0x57, 0x56, 0x55, 0x83, 0xC4, 0xF4, 0x50, 0x89, 0x4C, 0x24, 0x24, 0xF3,
203 0x0F, 0x11, 0x44, 0x24, 0x28, 0x89, 0x54, 0x24, 0x2C, 0x89, 0x5C, 0x24,
204 0x30, 0x83, 0xC4, 0xE0, 0x83, 0xC4, 0x20, 0x83, 0xC4, 0x10, 0x5D, 0x5E,
David Srbeckydd973932015-04-07 20:29:48 +0100205 0x5F, 0xC3,
206};
207static constexpr uint8_t expected_cfi_kX86[] = {
208 0x41, 0x0E, 0x08, 0x87, 0x02, 0x41, 0x0E, 0x0C, 0x86, 0x03, 0x41, 0x0E,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000209 0x10, 0x85, 0x04, 0x43, 0x0E, 0x1C, 0x41, 0x0E, 0x20, 0x55, 0x0E, 0x40,
210 0x43, 0x0E, 0x20, 0x0A, 0x43, 0x0E, 0x10, 0x41, 0x0E, 0x0C, 0xC5, 0x41,
211 0x0E, 0x08, 0xC6, 0x41, 0x0E, 0x04, 0xC7, 0x41, 0x0B, 0x0E, 0x20,
David Srbeckydd973932015-04-07 20:29:48 +0100212};
213// 0x00000000: push edi
214// 0x00000001: .cfi_def_cfa_offset: 8
215// 0x00000001: .cfi_offset: r7 at cfa-8
216// 0x00000001: push esi
217// 0x00000002: .cfi_def_cfa_offset: 12
218// 0x00000002: .cfi_offset: r6 at cfa-12
219// 0x00000002: push ebp
220// 0x00000003: .cfi_def_cfa_offset: 16
221// 0x00000003: .cfi_offset: r5 at cfa-16
Vladimir Markocedec9d2021-02-08 16:16:13 +0000222// 0x00000003: add esp, -12
223// 0x00000006: .cfi_def_cfa_offset: 28
David Srbeckydd973932015-04-07 20:29:48 +0100224// 0x00000006: push eax
Vladimir Markocedec9d2021-02-08 16:16:13 +0000225// 0x00000007: .cfi_def_cfa_offset: 32
226// 0x00000007: mov [esp + 36], ecx
227// 0x0000000b: movss [esp + 40], xmm0
228// 0x00000011: mov [esp + 44], edx
229// 0x00000015: mov [esp + 48], ebx
David Srbeckydd973932015-04-07 20:29:48 +0100230// 0x00000019: add esp, -32
Vladimir Markocedec9d2021-02-08 16:16:13 +0000231// 0x0000001c: .cfi_def_cfa_offset: 64
David Srbeckydd973932015-04-07 20:29:48 +0100232// 0x0000001c: add esp, 32
Vladimir Markocedec9d2021-02-08 16:16:13 +0000233// 0x0000001f: .cfi_def_cfa_offset: 32
David Srbeckydd973932015-04-07 20:29:48 +0100234// 0x0000001f: .cfi_remember_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000235// 0x0000001f: add esp, 16
David Srbeckydd973932015-04-07 20:29:48 +0100236// 0x00000022: .cfi_def_cfa_offset: 16
237// 0x00000022: pop ebp
238// 0x00000023: .cfi_def_cfa_offset: 12
239// 0x00000023: .cfi_restore: r5
240// 0x00000023: pop esi
241// 0x00000024: .cfi_def_cfa_offset: 8
242// 0x00000024: .cfi_restore: r6
243// 0x00000024: pop edi
244// 0x00000025: .cfi_def_cfa_offset: 4
245// 0x00000025: .cfi_restore: r7
246// 0x00000025: ret
247// 0x00000026: .cfi_restore_state
Vladimir Markocedec9d2021-02-08 16:16:13 +0000248// 0x00000026: .cfi_def_cfa_offset: 32
David Srbeckydd973932015-04-07 20:29:48 +0100249
250static constexpr uint8_t expected_asm_kX86_64[] = {
251 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x55, 0x53, 0x48, 0x83,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000252 0xEC, 0x28, 0xF2, 0x44, 0x0F, 0x11, 0x7C, 0x24, 0x20, 0xF2, 0x44, 0x0F,
253 0x11, 0x74, 0x24, 0x18, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 0x10, 0xF2,
254 0x44, 0x0F, 0x11, 0x64, 0x24, 0x08, 0x48, 0x89, 0x3C, 0x24, 0x89, 0x74,
255 0x24, 0x68, 0xF3, 0x0F, 0x11, 0x44, 0x24, 0x6C, 0x89, 0x54, 0x24, 0x70,
256 0x89, 0x4C, 0x24, 0x74, 0x48, 0x83, 0xC4, 0xE0, 0x48, 0x83, 0xC4, 0x20,
257 0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x08, 0xF2, 0x44, 0x0F, 0x10, 0x6C,
258 0x24, 0x10, 0xF2, 0x44, 0x0F, 0x10, 0x74, 0x24, 0x18, 0xF2, 0x44, 0x0F,
259 0x10, 0x7C, 0x24, 0x20, 0x48, 0x83, 0xC4, 0x28, 0x5B, 0x5D, 0x41, 0x5C,
260 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3,
David Srbeckydd973932015-04-07 20:29:48 +0100261};
262static constexpr uint8_t expected_cfi_kX86_64[] = {
263 0x42, 0x0E, 0x10, 0x8F, 0x04, 0x42, 0x0E, 0x18, 0x8E, 0x06, 0x42, 0x0E,
264 0x20, 0x8D, 0x08, 0x42, 0x0E, 0x28, 0x8C, 0x0A, 0x41, 0x0E, 0x30, 0x86,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000265 0x0C, 0x41, 0x0E, 0x38, 0x83, 0x0E, 0x44, 0x0E, 0x60, 0x47, 0xA0, 0x10,
266 0x47, 0x9F, 0x12, 0x47, 0x9E, 0x14, 0x47, 0x9D, 0x16, 0x5A, 0x0E, 0x80,
267 0x01, 0x44, 0x0E, 0x60, 0x0A, 0x47, 0xDD, 0x47, 0xDE, 0x47, 0xDF, 0x47,
Vladimir Markocedec9d2021-02-08 16:16:13 +0000268 0xE0, 0x44, 0x0E, 0x38, 0x41, 0x0E, 0x30, 0xC3, 0x41, 0x0E, 0x28, 0xC6,
269 0x42, 0x0E, 0x20, 0xCC, 0x42, 0x0E, 0x18, 0xCD, 0x42, 0x0E, 0x10, 0xCE,
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000270 0x42, 0x0E, 0x08, 0xCF, 0x41, 0x0B, 0x0E, 0x60,
David Srbeckydd973932015-04-07 20:29:48 +0100271};
272// 0x00000000: push r15
273// 0x00000002: .cfi_def_cfa_offset: 16
274// 0x00000002: .cfi_offset: r15 at cfa-16
275// 0x00000002: push r14
276// 0x00000004: .cfi_def_cfa_offset: 24
277// 0x00000004: .cfi_offset: r14 at cfa-24
278// 0x00000004: push r13
279// 0x00000006: .cfi_def_cfa_offset: 32
280// 0x00000006: .cfi_offset: r13 at cfa-32
281// 0x00000006: push r12
282// 0x00000008: .cfi_def_cfa_offset: 40
283// 0x00000008: .cfi_offset: r12 at cfa-40
284// 0x00000008: push rbp
285// 0x00000009: .cfi_def_cfa_offset: 48
286// 0x00000009: .cfi_offset: r6 at cfa-48
287// 0x00000009: push rbx
288// 0x0000000a: .cfi_def_cfa_offset: 56
289// 0x0000000a: .cfi_offset: r3 at cfa-56
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000290// 0x0000000a: subq rsp, 40
291// 0x0000000e: .cfi_def_cfa_offset: 96
292// 0x0000000e: movsd [rsp + 32], xmm15
David Srbeckydd973932015-04-07 20:29:48 +0100293// 0x00000015: .cfi_offset: r32 at cfa-64
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000294// 0x00000015: movsd [rsp + 24], xmm14
David Srbeckydd973932015-04-07 20:29:48 +0100295// 0x0000001c: .cfi_offset: r31 at cfa-72
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000296// 0x0000001c: movsd [rsp + 16], xmm13
David Srbeckydd973932015-04-07 20:29:48 +0100297// 0x00000023: .cfi_offset: r30 at cfa-80
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000298// 0x00000023: movsd [rsp + 8], xmm12
David Srbeckydd973932015-04-07 20:29:48 +0100299// 0x0000002a: .cfi_offset: r29 at cfa-88
Mathieu Chartiere401d142015-04-22 13:56:20 -0700300// 0x0000002a: movq [rsp], rdi
Vladimir Markoe74e0ce2021-12-08 14:16:21 +0000301// 0x0000002e: mov [rsp + 104], esi
302// 0x00000032: movss [rsp + 108], xmm0
303// 0x00000038: mov [rsp + 112], edx
304// 0x0000003c: mov [rsp + 116], ecx
305// 0x00000040: addq rsp, -32
306// 0x00000044: .cfi_def_cfa_offset: 128
307// 0x00000044: addq rsp, 32
308// 0x00000048: .cfi_def_cfa_offset: 96
309// 0x00000048: .cfi_remember_state
310// 0x00000048: movsd xmm12, [rsp + 8]
311// 0x0000004f: .cfi_restore: r29
312// 0x0000004f: movsd xmm13, [rsp + 16]
313// 0x00000056: .cfi_restore: r30
314// 0x00000056: movsd xmm14, [rsp + 24]
315// 0x0000005d: .cfi_restore: r31
316// 0x0000005d: movsd xmm15, [rsp + 32]
317// 0x00000064: .cfi_restore: r32
318// 0x00000064: addq rsp, 40
319// 0x00000068: .cfi_def_cfa_offset: 56
320// 0x00000068: pop rbx
321// 0x00000069: .cfi_def_cfa_offset: 48
322// 0x00000069: .cfi_restore: r3
323// 0x00000069: pop rbp
324// 0x0000006a: .cfi_def_cfa_offset: 40
325// 0x0000006a: .cfi_restore: r6
326// 0x0000006a: pop r12
327// 0x0000006c: .cfi_def_cfa_offset: 32
328// 0x0000006c: .cfi_restore: r12
329// 0x0000006c: pop r13
330// 0x0000006e: .cfi_def_cfa_offset: 24
331// 0x0000006e: .cfi_restore: r13
332// 0x0000006e: pop r14
333// 0x00000070: .cfi_def_cfa_offset: 16
334// 0x00000070: .cfi_restore: r14
335// 0x00000070: pop r15
336// 0x00000072: .cfi_def_cfa_offset: 8
337// 0x00000072: .cfi_restore: r15
338// 0x00000072: ret
339// 0x00000073: .cfi_restore_state
340// 0x00000073: .cfi_def_cfa_offset: 96
David Srbeckydd973932015-04-07 20:29:48 +0100341