Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

aarch64: enable PAC and BTI #39

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions Asm/arm64/LzmaDecOpt.S
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,38 @@
; LzmaDec_DecodeReal_*() must be equal in both versions (C / ASM).
*/

/*
; AAarch64 PAC and BTI Support.
;
; Assembly:
; Since this code base has no indirect calls or jumps to any assembly,
; there is no need to modify the source code with bti or pac instructions.
;
; GNU Notes:
; BTI requires the GNU Elf notes section in order to be enabled. This is
; because linkers/loaders look at this section to determine page protections,
; specifically PROT_BTI when mapping in the instructions. PAC is a nice to
; have for auditing purposes. Note that unconditionally adding PAC and BTI here
; is OK since the linker will just discard the note for the produced linked
; object file.
*/
#if defined(__ELF__)
/* Define the property values for GNU notes section in ELF */
#define GNU_PROPERTY_AARCH64_BTI 0x1
#define GNU_PROPERTY_AARCH64_POINTER_AUTH 0x2

.pushsection .note.gnu.property, "a";
.balign 8;
.long 4;
.long 0x10;
.long 0x5;
.asciz "GNU";
.long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */
.long 4;
.long(GNU_PROPERTY_AARCH64_POINTER_AUTH | GNU_PROPERTY_AARCH64_BTI);
.long 0;
.popsection;
#endif

#include "7zAsm.S"

Expand Down