HomePhabricator

[AArch64] Generate and parse SEH assembly directives
Audit Required5b86d130e2ba

Authored by mstorsjo on Aug 7 2020, 2:44 AM.

Description

[AArch64] Generate and parse SEH assembly directives

This ensures that you get the same output regardless if generating
code directly to an object file or if generating assembly and
assembling that.

Add implementations of the EmitARM64WinCFI*() methods in
AArch64TargetAsmStreamer, and fill in one blank in MCAsmStreamer.

Add corresponding directive handlers in AArch64AsmParser and
COFFAsmParser.

Some SEH directive names have been picked to match the prior art
for SEH assembly directives for x86_64, e.g. the spelling of
".seh_startepilogue" matching the preexisting ".seh_endprologue".

For the directives for saving registers, the exact spelling
from the arm64 documentation is picked, e.g. ".seh_save_reg" (to follow
that naming for all the other ones, e.g. ".seh_save_fregp_x"), while
the corresponding one for x86_64 is plain ".seh_savereg" without the
second underscore.

Directives in the epilogues have the same names as in prologues,
e.g. .seh_savereg, even though the registers are restored, not
saved, at that point.

Differential Revision: https://reviews.llvm.org/D86529

Details

Auditors
grosbach
Committed
mstorsjoAug 29 2020, 5:15 AM
Differential Revision
D86529: [5/5] [AArch64] Generate and parse SEH assembly directives
Parents
rG20f7773bb4bb: [MC] [Win64EH] Fill in FuncletOrFuncEnd if missing
Branches
Unknown
Tags
Unknown