forked from OSchip/llvm-project
- When signing return addresses with -msign-return-address=<scope>{+<key>},
either the A key instructions or the B key instructions can be used. To
correctly authenticate the return address, the unwinder/debugger must know
which key was used to sign the return address.
- When and exception is thrown or a break point reached, it may be necessary to
unwind the stack. To accomplish this, the unwinder/debugger must be able to
first authenticate an the return address if it has been signed.
- To enable this, the augmentation string of CIEs has been extended to allow
inclusion of a 'B' character. Functions that are signed using the B key
variant of the instructions should have and FDE whose associated CIE has a 'B'
in the augmentation string.
- One must also be able to preserve these semantics when first stepping from a
high level language into assembly and then, as a second step, into an object
file. To achieve this, I have introduced a new assembly directive
'.cfi_b_key_frame ', that tells the assembler the current frame uses return
address signing with the B key.
- This ensures that the FDE is associated with a CIE that has 'B' in the
augmentation string.
Differential Revision: https://reviews.llvm.org/D51798
llvm-svn: 349895
|
||
|---|---|---|
| .. | ||
| addrspace-memoperands.mir | ||
| atomic-memoperands.mir | ||
| cfi.mir | ||
| expected-target-flag-name.mir | ||
| generic-virtual-registers-error.mir | ||
| generic-virtual-registers-with-regbank-error.mir | ||
| intrinsics.mir | ||
| invalid-target-flag-name.mir | ||
| invalid-target-memoperands.mir | ||
| lit.local.cfg | ||
| mirCanonCopyCopyProp.mir | ||
| mirCanonIdempotent.mir | ||
| multiple-lhs-operands.mir | ||
| namedvregs.mir | ||
| parse-low-level-type-invalid0.mir | ||
| parse-low-level-type-invalid1.mir | ||
| parse-low-level-type-invalid2.mir | ||
| parse-low-level-type-invalid3.mir | ||
| print-parse-overloaded-intrinsics.mir | ||
| print-parse-vector-of-pointers-llt.mir | ||
| print-parse-verify-failedISel-property.mir | ||
| register-operand-bank.mir | ||
| return-address-signing.mir | ||
| stack-object-local-offset.mir | ||
| swp.mir | ||
| target-flags.mir | ||
| target-memoperands.mir | ||