mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 13:56:22 +08:00
gas: sframe: testsuite: add testcase for .cfi_negate_ra_state
Add a new test to check that .cfi_negate_ra_state on aarch64 is handled well (a non-empty SFrame section with valid SFrame FREs is generated). ChangeLog: * testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.d: New test. * testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.s: Likewise. * testsuite/gas/cfi-sframe/cfi-sframe.exp: Adjust the list accordingly.
This commit is contained in:
20
gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.d
Normal file
20
gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.d
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#as: --gsframe
|
||||||
|
#objdump: --sframe=.sframe
|
||||||
|
#name: SFrame cfi_negate_ra_state test
|
||||||
|
#...
|
||||||
|
Contents of the SFrame section .sframe:
|
||||||
|
|
||||||
|
Header :
|
||||||
|
|
||||||
|
Version: SFRAME_VERSION_1
|
||||||
|
Flags: NONE
|
||||||
|
Num FDEs: 1
|
||||||
|
Num FREs: 2
|
||||||
|
|
||||||
|
Function Index :
|
||||||
|
func idx \[0\]: pc = 0x0, size = 8 bytes
|
||||||
|
STARTPC + CFA + FP + RA +
|
||||||
|
#...
|
||||||
|
0+0004 +sp\+16 +u +u\[s\] +
|
||||||
|
|
||||||
|
#pass
|
18
gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.s
Normal file
18
gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.s
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
## ARMv8.3 addded support a new security feature named Pointer Authentication. The
|
||||||
|
## main idea behind this is to use the unused bits in the pointer values.
|
||||||
|
## Each pointer is patched with a PAC before writing to memory, and is verified
|
||||||
|
## before using it.
|
||||||
|
## When the pointers are mangled, the unwinder needs to know so it can mask off
|
||||||
|
## the PAC from the pointer value to recover the return address, and
|
||||||
|
## conversely, skip doing so if the pointers are not mangled.
|
||||||
|
##
|
||||||
|
## .cfi_negate_ra_state CFI directive is used to convey this information.
|
||||||
|
##
|
||||||
|
## SFrame has support for this. This testcase ensures that the directive
|
||||||
|
## is interpreted successfully.
|
||||||
|
.cfi_startproc
|
||||||
|
.long 0
|
||||||
|
.cfi_def_cfa_offset 16
|
||||||
|
.cfi_negate_ra_state
|
||||||
|
.long 0
|
||||||
|
.cfi_endproc
|
@ -96,4 +96,5 @@ if { [istarget "x86_64-*-*"] && [gas_sframe_check] } then {
|
|||||||
# aarch64 specific tests
|
# aarch64 specific tests
|
||||||
if { [istarget "aarch64*-*-*"] && [gas_sframe_check] } then {
|
if { [istarget "aarch64*-*-*"] && [gas_sframe_check] } then {
|
||||||
run_dump_test "cfi-sframe-aarch64-1"
|
run_dump_test "cfi-sframe-aarch64-1"
|
||||||
|
run_dump_test "cfi-sframe-aarch64-2"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user