aboutsummaryrefslogtreecommitdiff
path: root/gas/gen-sframe.h
diff options
context:
space:
mode:
authorIndu Bhagat <indu.bhagat@oracle.com>2022-12-16 22:01:51 -0800
committerIndu Bhagat <indu.bhagat@oracle.com>2022-12-16 22:01:51 -0800
commit28f69152b99fd3a774e9bb9e66496cb1d7fd03b9 (patch)
tree656e578c608e7b7a7b4d4f6a8ca18cb034988fe5 /gas/gen-sframe.h
parent4604c7294166199f89a0122ee35095d7e0cd2d07 (diff)
downloadfsf-binutils-gdb-28f69152b99fd3a774e9bb9e66496cb1d7fd03b9.zip
fsf-binutils-gdb-28f69152b99fd3a774e9bb9e66496cb1d7fd03b9.tar.gz
fsf-binutils-gdb-28f69152b99fd3a774e9bb9e66496cb1d7fd03b9.tar.bz2
gas: sframe: add support for .cfi_negate_ra_state
DW_CFA_AARCH64_negate_ra_state in aarch64 is multiplexed with DW_CFA_GNU_window_save in the DWARF format. Remove the common-empty-4 testcase because the generated SFrame section will not be be empty anymore. A relevant test will be added in a later commit. ChangeLog: * gas/gen-sframe.c (sframe_v1_set_fre_info): Add new argument for mangled_ra_p. (sframe_set_fre_info): Likewise. (output_sframe_row_entry): Handle mangled_ra_p. (sframe_row_entry_new): Reset mangled_ra_p. (sframe_row_entry_initialize): Initialize mangled_ra_p. (sframe_xlate_do_gnu_window_save): New definition. (sframe_do_cfi_insn): Handle DW_CFA_GNU_window_save. * gas/gen-sframe.h (struct sframe_row_entry): New member. (struct sframe_version_ops): Add a new argument for mangled_ra_p. * gas/testsuite/gas/cfi-sframe/cfi-sframe.exp: Remove test. * gas/testsuite/gas/cfi-sframe/common-empty-4.d: Removed. * gas/testsuite/gas/cfi-sframe/common-empty-4.s: Removed.
Diffstat (limited to 'gas/gen-sframe.h')
-rw-r--r--gas/gen-sframe.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gas/gen-sframe.h b/gas/gen-sframe.h
index 93af499..5d5702a 100644
--- a/gas/gen-sframe.h
+++ b/gas/gen-sframe.h
@@ -50,6 +50,9 @@ struct sframe_row_entry
on it. */
bool merge_candidate;
+ /* Whether the return address is mangled with pauth code. */
+ bool mangled_ra_p;
+
/* Track CFA base (architectural) register ID. */
unsigned int cfa_base_reg;
/* Offset from the CFA base register for recovering CFA. */
@@ -140,7 +143,8 @@ struct sframe_version_ops
{
unsigned char format_version; /* SFrame format version. */
/* set SFrame FRE info. */
- unsigned char (*set_fre_info) (unsigned int, unsigned int, unsigned int);
+ unsigned char (*set_fre_info) (unsigned int, unsigned int, unsigned int,
+ bool);
/* set SFrame Func info. */
unsigned char (*set_func_info) (unsigned int, unsigned int);
};