2121// CHECK - NEXT: }
2222// CHECK: Section {
2323// CHECK: Name: .xdata
24- // CHECK: RawDataSize: 100
24+ // CHECK: RawDataSize: 108
2525// CHECK: RelocationCount: 1
2626// CHECK: Characteristics [
2727// CHECK - NEXT: ALIGN_4BYTES
3131// CHECK - NEXT: }
3232// CHECK: Section {
3333// CHECK: Name: .pdata
34- // CHECK: RelocationCount: 2
34+ // CHECK: RelocationCount: 4
3535// CHECK: Characteristics [
3636// CHECK - NEXT: ALIGN_4BYTES
3737// CHECK - NEXT: CNT_INITIALIZED_DATA
4242
4343// CHECK - NEXT: Relocations [
4444// CHECK - NEXT: Section ( 4 ) .xdata {
45- // CHECK - NEXT: 0x58 IMAGE_REL_ARM64_ADDR32NB __C_specific_handler
45+ // CHECK - NEXT: 0x54 IMAGE_REL_ARM64_ADDR32NB __C_specific_handler
4646// CHECK - NEXT: }
4747// CHECK - NEXT: Section ( 5 ) .pdata {
4848// CHECK - NEXT: 0x0 IMAGE_REL_ARM64_ADDR32NB .text
4949// CHECK - NEXT: 0x4 IMAGE_REL_ARM64_ADDR32NB .xdata
50+ // CHECK - NEXT: 0x8 IMAGE_REL_ARM64_ADDR32NB .text
51+ // CHECK - NEXT: 0xC IMAGE_REL_ARM64_ADDR32NB .xdata
5052// CHECK - NEXT: }
5153// CHECK - NEXT: ]
5254
5557// CHECK - NEXT: Function: func
5658// CHECK - NEXT: ExceptionRecord: .xdata
5759// CHECK - NEXT: ExceptionData {
58- // CHECK - NEXT: FunctionLength: 172
60+ // CHECK - NEXT: FunctionLength: 148
5961// CHECK: Prologue [
6062// CHECK - NEXT: 0xe716c3 ; str p6, [sp, #3, mul vl]
6163// CHECK - NEXT: 0xe703c5 ; str z11, [sp, #5, mul vl]
7375// CHECK - NEXT: 0xe74104 ; stp x1, x2, [sp, #64]
7476// CHECK - NEXT: 0xe70008 ; str x0, [sp, #64]
7577// CHECK - NEXT: 0xfc ; pacibsp
76- // CHECK - NEXT: 0xec ; clear unwound to call
77- // CHECK - NEXT: 0xeb ; EC context
78- // CHECK - NEXT: 0xea ; context
79- // CHECK - NEXT: 0xe9 ; machine frame
80- // CHECK - NEXT: 0xe8 ; trap frame
8178// CHECK - NEXT: 0xe3 ; nop
8279// CHECK - NEXT: 0xe202 ; add fp, sp, #16
8380// CHECK - NEXT: 0xdd41 ; str d13, [sp, #8]
10097// CHECK - NEXT: ]
10198// CHECK - NEXT: EpilogueScopes [
10299// CHECK - NEXT: EpilogueScope {
103- // CHECK - NEXT: StartOffset: 41
104- // CHECK - NEXT: EpilogueStartIndex: 77
100+ // CHECK - NEXT: StartOffset: 35
101+ // CHECK - NEXT: EpilogueStartIndex: 72
105102// CHECK - NEXT: Opcodes [
106103// CHECK - NEXT: 0x01 ; add sp, #16
107104// CHECK - NEXT: 0xe4 ; end
114111// CHECK - NEXT: ]
115112// CHECK - NEXT: }
116113// CHECK - NEXT: }
114+ // CHECK - NEXT: RuntimeFunction {
115+ // CHECK - NEXT: Function: customfunc
116+ // CHECK - NEXT: ExceptionRecord: .xdata
117+ // CHECK - NEXT: ExceptionData {
118+ // CHECK - NEXT: FunctionLength: 24
119+ // CHECK: Prologue [
120+ // CHECK - NEXT: 0xec ; clear unwound to call
121+ // CHECK - NEXT: 0xeb ; EC context
122+ // CHECK - NEXT: 0xea ; context
123+ // CHECK - NEXT: 0xe9 ; machine frame
124+ // CHECK - NEXT: 0xe8 ; trap frame
125+ // CHECK - NEXT: 0xe4 ; end
126+ // CHECK - NEXT: ]
127+ // CHECK - NEXT: EpilogueScopes [
128+ // CHECK - NEXT: ]
129+ // CHECK - NEXT: }
130+ // CHECK - NEXT: }
117131// CHECK - NEXT: ]
118132
119133
@@ -161,16 +175,6 @@ func:
161175 .seh_add_fp 16
162176 nop
163177 .seh_nop
164- nop
165- .seh_trap_frame
166- nop
167- .seh_pushframe
168- nop
169- .seh_context
170- nop
171- .seh_ec_context
172- nop
173- .seh_clear_unwound_to_call
174178 pacibsp
175179 .seh_pac_sign_lr
176180 nop
@@ -203,7 +207,6 @@ func:
203207 .seh_save_zreg z11 , 5
204208 nop
205209 .seh_save_preg p6 , 3
206- nop
207210 .seh_endprologue
208211 nop
209212 .seh_startepilogue
@@ -217,6 +220,22 @@ func:
217220 .text
218221 .seh_endproc
219222
223+ .seh_proc customfunc
224+ customfunc:
225+ nop
226+ .seh_trap_frame
227+ nop
228+ .seh_pushframe
229+ nop
230+ .seh_context
231+ nop
232+ .seh_ec_context
233+ nop
234+ .seh_clear_unwound_to_call
235+ .seh_endprologue
236+ ret
237+ .seh_endproc
238+
220239 // Function with no .seh directives ; no pdata/xdata entries are
221240 // generated.
222241 .globl smallFunc
0 commit comments