diff options
| author | Luke Cheeseman <luke.cheeseman@arm.com> | 2018-12-14 11:30:12 +0000 |
|---|---|---|
| committer | Luke Cheeseman <luke.cheeseman@arm.com> | 2018-12-14 11:30:12 +0000 |
| commit | e1a819e82de87bfd217d73ca74a39d10b46d0a71 (patch) | |
| tree | d2d100a78ce79f0bffbe3fd90f02e544c6e754f0 /libunwind/include | |
| parent | 96408bb04a03b4ac961831c270fd9c996358ee03 (diff) | |
| download | bcm5719-llvm-e1a819e82de87bfd217d73ca74a39d10b46d0a71.tar.gz bcm5719-llvm-e1a819e82de87bfd217d73ca74a39d10b46d0a71.zip | |
[AArch64][libunwind] Unwinding support for return address signing
- Follow up to revision r342895
- gcc would not build libunwind with the earlier patch as the autia1716
instruction wasn't allowed to be assembled for pre armv8.3a targets
- The autia1716 instruction lives in the hint space encodings so is a valid
instruction for all armv8a targets
- To work around this I have swapped out the autia1716 instruction for the hint
instruction
Differential Revision: https://reviews.llvm.org/D55700
llvm-svn: 349140
Diffstat (limited to 'libunwind/include')
| -rw-r--r-- | libunwind/include/libunwind.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libunwind/include/libunwind.h b/libunwind/include/libunwind.h index 97d2b82290c..d824c131835 100644 --- a/libunwind/include/libunwind.h +++ b/libunwind/include/libunwind.h @@ -57,6 +57,9 @@ enum { UNW_EINVAL = -6547, /* unsupported operation or bad value */ UNW_EBADVERSION = -6548, /* unwind info has unsupported version */ UNW_ENOINFO = -6549 /* no unwind info found */ +#if defined(_LIBUNWIND_TARGET_AARCH64) && !defined(_LIBUNWIND_IS_NATIVE_ONLY) + , UNW_ECROSSRASIGNING = -6550 /* cross unwind with return address signing */ +#endif }; struct unw_context_t { @@ -547,6 +550,8 @@ enum { UNW_ARM64_X31 = 31, UNW_ARM64_SP = 31, // reserved block + UNW_ARM64_RA_SIGN_STATE = 34, + // reserved block UNW_ARM64_D0 = 64, UNW_ARM64_D1 = 65, UNW_ARM64_D2 = 66, |

