Enable back-edge CFI by default on macOS (#4720)
Also, adjust the tests that are executed on that platform. Finally, fix a bug with obtaining backtraces when back-edge CFI is enabled. Copyright (c) 2022, Arm Limited.
This commit is contained in:
@@ -780,6 +780,11 @@
|
||||
(Pacisp
|
||||
(key APIKey))
|
||||
|
||||
;; Strip pointer authentication code from instruction address in LR;
|
||||
;; equivalent to a no-op if Pointer authentication (FEAT_PAuth) is not
|
||||
;; supported.
|
||||
(Xpaclri)
|
||||
|
||||
;; Marker, no-op in generated code: SP "virtual offset" is adjusted. This
|
||||
;; controls how AMode::NominalSPOffset args are lowered.
|
||||
(VirtualSPOffsetAdj
|
||||
@@ -1356,6 +1361,9 @@
|
||||
))
|
||||
|
||||
;; Extractors for target features ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(decl pure sign_return_address_disabled () Unit)
|
||||
(extern constructor sign_return_address_disabled sign_return_address_disabled)
|
||||
|
||||
(decl use_lse () Inst)
|
||||
(extern extractor use_lse use_lse)
|
||||
|
||||
@@ -2577,4 +2585,11 @@
|
||||
|
||||
(decl aarch64_link () Reg)
|
||||
(rule (aarch64_link)
|
||||
(if (sign_return_address_disabled))
|
||||
(mov_preg (preg_link)))
|
||||
|
||||
(rule (aarch64_link)
|
||||
;; This constructor is always used for non-leaf functions, so it is safe
|
||||
;; to clobber LR.
|
||||
(let ((_ Unit (emit (MInst.Xpaclri))))
|
||||
(mov_preg (preg_link))))
|
||||
|
||||
Reference in New Issue
Block a user