+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
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
+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
/* 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);
/* 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);
/* 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);
+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.
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
return;
}
-#endif /* defined AARCH64_UNWIND_H */
+#endif /* defined AARCH64_UNWIND_H && defined __ILP32__ */
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;