Skip to content

Commit d8c18af

Browse files
authored
Merge pull request #3481 from MicrosoftDocs/FromPublicMasterBranch
Confirm merge from FromPublicMasterBranch to master to sync with https://github.com/MicrosoftDocs/cpp-docs (branch master)
2 parents efa08eb + afad7ce commit d8c18af

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

docs/build/arm-exception-handling.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -188,29 +188,32 @@ When the packed unwind format is insufficient to describe the unwinding of a fun
188188
The `.xdata` record is designed so that it is possible to fetch the first 8 bytes and compute the full size of the record, not including the length of the variable-sized exception data that follows. This code snippet computes the record size:
189189

190190
```cpp
191-
ULONG Comput`.xdata`Size(PULONG `.xdata`)
191+
ULONG ComputeXdataSize(PULONG Xdata)
192192
{
193-
ULONG EpilogueScopes;
194193
ULONG Size;
194+
ULONG EpilogueScopes;
195195
ULONG UnwindWords;
196196

197-
if (`.xdata`[0] >> 23) != 0) {
197+
if ((Xdata[0] >> 23) != 0) {
198198
Size = 4;
199-
EpilogueScopes = `.xdata`[0] >> 23) & 0x1f;
200-
UnwindWords = `.xdata`[0] >> 28) & 0x0f;
199+
EpilogueScopes = (Xdata[0] >> 23) & 0x1f;
200+
UnwindWords = (Xdata[0] >> 28) & 0x0f;
201201
} else {
202202
Size = 8;
203-
EpilogueScopes =`.xdata`[1] & 0xffff;
204-
UnwindWords = `.xdata`[1] >> 16) & 0xff;
203+
EpilogueScopes = Xdata[1] & 0xffff;
204+
UnwindWords = (Xdata[1] >> 16) & 0xff;
205205
}
206206

207-
if (!`.xdata`[0] & (1 << 21))) {
207+
if (!(Xdata[0] & (1 << 21))) {
208208
Size += 4 * EpilogueScopes;
209209
}
210+
210211
Size += 4 * UnwindWords;
211-
if `.xdata`[0] & (1 << 20)) {
212-
Size += 4;
212+
213+
if (Xdata[0] & (1 << 20)) {
214+
Size += 4; // Exception handler RVA
213215
}
216+
214217
return Size;
215218
}
216219
```

docs/build/arm64-exception-handling.md

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,27 +237,32 @@ This data is broken into four sections:
237237
The .xdata record is designed so it's possible to fetch the first 8 bytes, and use them to compute the full size of the record, minus the length of the variable-sized exception data that follows. The following code snippet computes the record size:
238238
239239
```cpp
240-
ULONG ComputeXdataSize(PULONG *Xdata)
240+
ULONG ComputeXdataSize(PULONG Xdata)
241241
{
242-
ULONG EpilogScopes;
243242
ULONG Size;
243+
ULONG EpilogScopes;
244244
ULONG UnwindWords;
245245
246-
if ((Xdata[0] >> 27) != 0) {
246+
if ((Xdata[0] >> 22) != 0) {
247247
Size = 4;
248248
EpilogScopes = (Xdata[0] >> 22) & 0x1f;
249-
UnwindWords = (Xdata[0] >> 27) & 0x0f;
249+
UnwindWords = (Xdata[0] >> 27) & 0x1f;
250250
} else {
251251
Size = 8;
252252
EpilogScopes = Xdata[1] & 0xffff;
253253
UnwindWords = (Xdata[1] >> 16) & 0xff;
254254
}
255255
256-
Size += 4 * EpilogScopes;
256+
if (!(Xdata[0] & (1 << 21))) {
257+
Size += 4 * EpilogScopes;
258+
}
259+
257260
Size += 4 * UnwindWords;
261+
258262
if (Xdata[0] & (1 << 20)) {
259-
Size += 4; // exception handler RVA
263+
Size += 4; // Exception handler RVA
260264
}
265+
261266
return Size;
262267
}
263268
```

0 commit comments

Comments
 (0)