[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>
|
2017-01-20 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c/79152
|
PR c/79152
|
||||||
|
@ -984,7 +984,12 @@ aarch64_init_builtins (void)
|
|||||||
aarch64_init_builtin_rsqrt ();
|
aarch64_init_builtin_rsqrt ();
|
||||||
|
|
||||||
/* Initialize pointer authentication builtins which are backed by instructions
|
/* Initialize pointer authentication builtins which are backed by instructions
|
||||||
in NOP encoding space. */
|
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 ();
|
aarch64_init_pauth_hint_builtins ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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>
|
2017-01-20 Nathan Sidwell <nathan@acm.org>
|
||||||
|
|
||||||
PR c++/79495
|
PR c++/79495
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* Testing return address signing where no combined instructions used. */
|
/* Testing return address signing where no combined instructions used. */
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
/* { dg-options "-O2 -msign-return-address=all" } */
|
/* { dg-options "-O2 -msign-return-address=all" } */
|
||||||
|
/* { dg-require-effective-target lp64 } */
|
||||||
|
|
||||||
int foo (int);
|
int foo (int);
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* Testing return address signing where combined instructions used. */
|
/* Testing return address signing where combined instructions used. */
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
/* { dg-options "-O2 -msign-return-address=all" } */
|
/* { dg-options "-O2 -msign-return-address=all" } */
|
||||||
|
/* { dg-require-effective-target lp64 } */
|
||||||
|
|
||||||
int foo (int);
|
int foo (int);
|
||||||
int bar (int, int);
|
int bar (int, int);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* Testing the disable of return address signing. */
|
/* Testing the disable of return address signing. */
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
/* { dg-options "-O2 -msign-return-address=all" } */
|
/* { dg-options "-O2 -msign-return-address=all" } */
|
||||||
|
/* { dg-require-effective-target lp64 } */
|
||||||
|
|
||||||
int bar (int, int);
|
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>
|
2017-01-20 Jiong Wang <jiong.wang@arm.com>
|
||||||
|
|
||||||
* config/aarch64/linux-unwind.h: Always include aarch64-unwind.h.
|
* 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
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#ifndef AARCH64_UNWIND_H
|
#if !defined (AARCH64_UNWIND_H) && !defined (__ILP32__)
|
||||||
#define AARCH64_UNWIND_H
|
#define AARCH64_UNWIND_H
|
||||||
|
|
||||||
#define DWARF_REGNUM_AARCH64_RA_STATE 34
|
#define DWARF_REGNUM_AARCH64_RA_STATE 34
|
||||||
@ -84,4 +84,4 @@ aarch64_frob_update_context (struct _Unwind_Context *context,
|
|||||||
return;
|
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;
|
break;
|
||||||
|
|
||||||
case DW_CFA_GNU_window_save:
|
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
|
/* This CFA is multiplexed with Sparc. On AArch64 it's used to toggle
|
||||||
return address signing status. */
|
return address signing status. */
|
||||||
fs->regs.reg[DWARF_REGNUM_AARCH64_RA_STATE].loc.offset ^= 1;
|
fs->regs.reg[DWARF_REGNUM_AARCH64_RA_STATE].loc.offset ^= 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user