mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-24 12:35:55 +08:00
arm: Add cfi expression support for ra_auth_code
This patch extends assembler support for the use of register names to allow for pseudo-registers, e.g. ra_auth_code register. This is done particularly with CFI directives in mind, allowing for expressions of the type: .cfi_register ra_auth_code, 12 gas/Changelog: * config/tc-arm.c (tc_arm_regname_to_dw2regnum): Add REG_TYPE_PSEUDO handling. * testsuite/gas/arm/cfi-pacbti-m-readelf.d: New. * testsuite/gas/arm/cfi-pacbti-m.s: New.
This commit is contained in:
parent
3a368c4c24
commit
e90f28a7a7
@ -27958,6 +27958,10 @@ tc_arm_regname_to_dw2regnum (char *regname)
|
||||
if (reg != FAIL)
|
||||
return reg + 256;
|
||||
|
||||
reg = arm_reg_parse (®name, REG_TYPE_PSEUDO);
|
||||
if (reg != FAIL)
|
||||
return reg;
|
||||
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
|
31
gas/testsuite/gas/arm/cfi-pacbti-m-readelf.d
Normal file
31
gas/testsuite/gas/arm/cfi-pacbti-m-readelf.d
Normal file
@ -0,0 +1,31 @@
|
||||
#readelf: -wf
|
||||
#source: cfi-pacbti-m.s
|
||||
#name: Call Frame information for Armv8.1-M.Mainline PACBTI extension
|
||||
# This test is only valid on ELF based ports.
|
||||
#notarget: *-*-pe *-*-wince
|
||||
# VxWorks needs a special variant of this file.
|
||||
#skip: *-*-vxworks*
|
||||
|
||||
Contents of the .eh_frame section:
|
||||
|
||||
|
||||
00000000 00000010 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zR"
|
||||
Code alignment factor: 2
|
||||
Data alignment factor: -4
|
||||
Return address column: 14
|
||||
Augmentation data: 1b
|
||||
DW_CFA_def_cfa: r13 ofs 0
|
||||
|
||||
00000014 00000020 00000018 FDE cie=00000000 pc=00000000..0000000c
|
||||
DW_CFA_advance_loc: 4 to 00000004
|
||||
DW_CFA_register: r143 in r12
|
||||
DW_CFA_advance_loc: 4 to 00000008
|
||||
DW_CFA_def_cfa_offset: 8
|
||||
DW_CFA_offset: r14 at cfa-8
|
||||
DW_CFA_offset: r12 at cfa-4
|
||||
DW_CFA_advance_loc: 4 to 0000000c
|
||||
DW_CFA_restore_extended: r143
|
||||
DW_CFA_restore: r14
|
||||
DW_CFA_def_cfa_offset: 0
|
22
gas/testsuite/gas/arm/cfi-pacbti-m.s
Normal file
22
gas/testsuite/gas/arm/cfi-pacbti-m.s
Normal file
@ -0,0 +1,22 @@
|
||||
.arch armv8.1-m.main
|
||||
.arch_extension pacbti
|
||||
.eabi_attribute Tag_PAC_extension, 2
|
||||
.eabi_attribute Tag_BTI_extension, 2
|
||||
.eabi_attribute Tag_BTI_use, 1
|
||||
.eabi_attribute Tag_PACRET_use, 1
|
||||
.syntax unified
|
||||
.text
|
||||
.thumb
|
||||
.Lstart:
|
||||
.cfi_startproc
|
||||
pacbti ip, lr, sp
|
||||
.cfi_register ra_auth_code, ip
|
||||
push {ip, lr}
|
||||
.cfi_def_cfa_offset 8
|
||||
.cfi_offset lr, -8
|
||||
.cfi_offset ip, -4
|
||||
pop {ip, lr}
|
||||
.cfi_restore 143
|
||||
.cfi_restore 14
|
||||
.cfi_def_cfa_offset 0
|
||||
.cfi_endproc
|
Loading…
Reference in New Issue
Block a user