mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
[AArch64] Only build & test pauth code for LP64
gcc/ * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register register pauth builtins for LP64 only. libgcc/ * config/aarch64/aarch64-unwind.h: Empty this file on ILP32. * unwind-dw2.c (execute_cfa_program): Only multiplexing DW_CFA_GNU_window_save for AArch64 and LP64. gcc/testsuite/ * testsuite/gcc.target/aarch64/return_address_sign_1.c: Enable on LP64 only. * testsuite/gcc.target/aarch64/return_address_sign_2.c: Likewise. * testsuite/gcc.target/aarch64/return_address_sign_3.c: Likewise. From-SVN: r244732
This commit is contained in:
parent
5dc8f5d9e6
commit
a876231c40
@ -1,3 +1,8 @@
|
||||
2017-01-20 Jiong Wang <jiong.wang@arm.com>
|
||||
|
||||
* config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
|
||||
register pauth builtins for LP64 only.
|
||||
|
||||
2017-01-20 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/79152
|
||||
|
@ -983,9 +983,14 @@ aarch64_init_builtins (void)
|
||||
aarch64_init_crc32_builtins ();
|
||||
aarch64_init_builtin_rsqrt ();
|
||||
|
||||
/* Initialize pointer authentication builtins which are backed by instructions
|
||||
in NOP encoding space. */
|
||||
aarch64_init_pauth_hint_builtins ();
|
||||
/* Initialize pointer authentication builtins which are backed by instructions
|
||||
in NOP encoding space.
|
||||
|
||||
NOTE: these builtins are supposed to be used by libgcc unwinder only, as
|
||||
there is no support on return address signing under ILP32, we don't
|
||||
register them. */
|
||||
if (!TARGET_ILP32)
|
||||
aarch64_init_pauth_hint_builtins ();
|
||||
}
|
||||
|
||||
tree
|
||||
|
@ -1,3 +1,10 @@
|
||||
2017-01-20 Jiong Wang <jiong.wang@arm.com>
|
||||
|
||||
* testsuite/gcc.target/aarch64/return_address_sign_1.c: Enable on LP64
|
||||
only.
|
||||
* testsuite/gcc.target/aarch64/return_address_sign_2.c: Likewise.
|
||||
* testsuite/gcc.target/aarch64/return_address_sign_3.c: Likewise.
|
||||
|
||||
2017-01-20 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR c++/79495
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* Testing return address signing where no combined instructions used. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -msign-return-address=all" } */
|
||||
/* { dg-require-effective-target lp64 } */
|
||||
|
||||
int foo (int);
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* Testing return address signing where combined instructions used. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -msign-return-address=all" } */
|
||||
/* { dg-require-effective-target lp64 } */
|
||||
|
||||
int foo (int);
|
||||
int bar (int, int);
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* Testing the disable of return address signing. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -msign-return-address=all" } */
|
||||
/* { dg-require-effective-target lp64 } */
|
||||
|
||||
int bar (int, int);
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
2017-01-20 Jiong Wang <jiong.wang@arm.com>
|
||||
|
||||
* config/aarch64/aarch64-unwind.h: Empty this file on ILP32.
|
||||
* unwind-dw2.c (execute_cfa_program): Only multiplexing
|
||||
DW_CFA_GNU_window_save for AArch64 and LP64.
|
||||
|
||||
2017-01-20 Jiong Wang <jiong.wang@arm.com>
|
||||
|
||||
* config/aarch64/linux-unwind.h: Always include aarch64-unwind.h.
|
||||
|
@ -22,7 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program;
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef AARCH64_UNWIND_H
|
||||
#if !defined (AARCH64_UNWIND_H) && !defined (__ILP32__)
|
||||
#define AARCH64_UNWIND_H
|
||||
|
||||
#define DWARF_REGNUM_AARCH64_RA_STATE 34
|
||||
@ -84,4 +84,4 @@ aarch64_frob_update_context (struct _Unwind_Context *context,
|
||||
return;
|
||||
}
|
||||
|
||||
#endif /* defined AARCH64_UNWIND_H */
|
||||
#endif /* defined AARCH64_UNWIND_H && defined __ILP32__ */
|
||||
|
@ -1187,7 +1187,7 @@ execute_cfa_program (const unsigned char *insn_ptr,
|
||||
break;
|
||||
|
||||
case DW_CFA_GNU_window_save:
|
||||
#ifdef __aarch64__
|
||||
#if defined (__aarch64__) && !defined (__ILP32__)
|
||||
/* This CFA is multiplexed with Sparc. On AArch64 it's used to toggle
|
||||
return address signing status. */
|
||||
fs->regs.reg[DWARF_REGNUM_AARCH64_RA_STATE].loc.offset ^= 1;
|
||||
|
Loading…
Reference in New Issue
Block a user