mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +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
|
||||
if { [istarget "aarch64*-*-*"] && [gas_sframe_check] } then {
|
||||
run_dump_test "cfi-sframe-aarch64-1"
|
||||
run_dump_test "cfi-sframe-aarch64-2"
|
||||
}
|
||||
|
Reference in New Issue
Block a user