Skip to content

Commit 23d864d

Browse files
Taojunshenopbld17colin-homeopbld16opbld15
authored
10/13/2022 AM Publish (#4576)
* Document ARM64 unwind handling for return address signing * Update date, fix step numbers * Fix style, grammar in Arm64 Exception * Rename pac_sign_lr and update reserved ranges. * example needed to mitigate dev floundering (#4210) It is not easy to match up variant vt types with POD types. Especially since there is a gradual transition to modern C++. I used a number of dev hours on attempts to match the variant type, vt, to make the true/false work. The m_bValue type for the simple property was a BOOL type, but trying to create a variant of type BOOL directly didn't work. Only by looking at VC Sample code for VisualStudioDemo did I see the (_variant_t)true construct, which becomes the standard_cast contruct in modern C++. I figured my Example code could make other programmer's efforts easier. * Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#4571) * 10/11/2022 AM Publish (#4570) * Document ARM64 unwind handling for return address signing * Update date, fix step numbers * Fix style, grammar in Arm64 Exception Co-authored-by: opbld17 <opbld17@microsoft.com> Co-authored-by: Colin Robertson <3836425+corob-msft@users.noreply.github.com> Co-authored-by: opbld16 <opbld16@microsoft.com> Co-authored-by: opbld15 <opbld15@microsoft.com> Co-authored-by: Martin Storsjö <martin@martin.st> Co-authored-by: prmerger-automator[bot] <40007230+prmerger-automator[bot]@users.noreply.github.com> * example needed to mitigate dev floundering (#4210) It is not easy to match up variant vt types with POD types. Especially since there is a gradual transition to modern C++. I used a number of dev hours on attempts to match the variant type, vt, to make the true/false work. The m_bValue type for the simple property was a BOOL type, but trying to create a variant of type BOOL directly didn't work. Only by looking at VC Sample code for VisualStudioDemo did I see the (_variant_t)true construct, which becomes the standard_cast contruct in modern C++. I figured my Example code could make other programmer's efforts easier. Co-authored-by: Taojunshen <v-jutao@microsoft.com> Co-authored-by: opbld17 <opbld17@microsoft.com> Co-authored-by: Colin Robertson <3836425+corob-msft@users.noreply.github.com> Co-authored-by: opbld16 <opbld16@microsoft.com> Co-authored-by: opbld15 <opbld15@microsoft.com> Co-authored-by: Martin Storsjö <martin@martin.st> Co-authored-by: prmerger-automator[bot] <40007230+prmerger-automator[bot]@users.noreply.github.com> Co-authored-by: rtischer8277 <rtischer@hiveware.com> * cleanup empty remarks and tidy up code example formatting * Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#4573) * Use the correct canonical opcode name in the packed unwind table This was a leftover from the original tentative name before the real one was known. * Correct Month range in `ok` member description (#4215) Co-authored-by: Martin Storsjö <martin@martin.st> Co-authored-by: Colin Robertson <3836425+corob-msft@users.noreply.github.com> Co-authored-by: Christopher Doyle <christophercormac@outlook.com> Co-authored-by: opbld17 <opbld17@microsoft.com> Co-authored-by: Colin Robertson <3836425+corob-msft@users.noreply.github.com> Co-authored-by: opbld16 <opbld16@microsoft.com> Co-authored-by: opbld15 <opbld15@microsoft.com> Co-authored-by: Martin Storsjö <martin@martin.st> Co-authored-by: prmerger-automator[bot] <40007230+prmerger-automator[bot]@users.noreply.github.com> Co-authored-by: Pedro Miguel Justo <40605312+pmsjt@users.noreply.github.com> Co-authored-by: rtischer8277 <rtischer@hiveware.com> Co-authored-by: Feng Xu <fenxu@microsoft.com> Co-authored-by: TylerMSFT <Tyler.Whitney@microsoft.com> Co-authored-by: Christopher Doyle <christophercormac@outlook.com> Co-authored-by: Linda Spiller <93278958+LJSpiller@users.noreply.github.com>
1 parent 73383b0 commit 23d864d

File tree

3 files changed

+117
-192
lines changed

3 files changed

+117
-192
lines changed

docs/build/arm64-exception-handling.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ Step 6: Allocate remaining stack, including local area, `<x29,lr>` pair, and out
382382
| Step # | Flag values | # of instructions | Opcode | Unwind code |
383383
|--|--|--|--|--|
384384
| 0 | | | `#intsz = RegI * 8;`<br/>`if (CR==01) #intsz += 8; // lr`<br/>`#fpsz = RegF * 8;`<br/>`if(RegF) #fpsz += 8;`<br/>`#savsz=((#intsz+#fpsz+8*8*H)+0xf)&~0xf)`<br/>`#locsz = #famsz - #savsz` |
385-
| 1 | **CR** == 11 | 1 | `pacibsp` | `sign_ra` |
385+
| 1 | **CR** == 11 | 1 | `pacibsp` | `pac_sign_lr` |
386386
| 2 | 0 < **RegI** <= 10 | **RegI** / 2 +<br/> **RegI** % 2 | `stp x19,x20,[sp,#savsz]!`<br/>`stp x21,x22,[sp,#16]`<br/>`...` | `save_regp_x`<br/>`save_regp`<br/>`...` |
387387
| 3 | **CR** == 01\* | 1 | `str lr,[sp,#(intsz-8)]`\* | `save_reg` |
388388
| 4 | 0 < **RegF** <= 7 | (**RegF** + 1) / 2 +<br/>(**RegF** + 1) % 2) | `stp d8,d9,[sp,#intsz]`\*\*<br/>`stp d10,d11,[sp,#(intsz+16)]`<br/>`...`<br/>`str d(8+RegF),[sp,#(intsz+fpsz-8)]` | `save_fregp`<br/>`...`<br/>`save_freg` |

0 commit comments

Comments
 (0)