aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sigtramp-ppcvxw.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2012-01-30 11:24:17 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2012-01-30 11:24:17 +0100
commit25081892c432b0234fd29bdbf970c89f2083eed5 (patch)
tree9d6cf6a29c0a1bdac65791a5798295c1f978b73b /gcc/ada/sigtramp-ppcvxw.c
parent4f0534570bc8bb662747136a348991a964cb022b (diff)
downloadgcc-25081892c432b0234fd29bdbf970c89f2083eed5.zip
gcc-25081892c432b0234fd29bdbf970c89f2083eed5.tar.gz
gcc-25081892c432b0234fd29bdbf970c89f2083eed5.tar.bz2
[multiple changes]
2012-01-30 Robert Dewar <dewar@adacore.com> * a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb: Minor reformatting. 2012-01-30 Olivier Hainque <hainque@adacore.com> * sigtramp-ppcvxw.c (CFI_COMMON_REGS): Add rule for r1 back + comments. 2012-01-30 Thomas Quinot <quinot@adacore.com> * gnat_rm.texi, sem_dist.adb, sem_dist.ads, einfo.ads, sem_prag.adb, sem_ch12.adb, sem_attr.adb, aspects.adb, aspects.ads, par-prag.adb, sem_cat.adb, snames.ads-tmpl (Sem_Dist.Is_Valid_Remote_Object_Type): New subprogram (extracted from Sem_Cat.Validate_Remote_Access_Object_Type_Declaration). (Einfo.Is_Remote_Types): Now applies to generic types. Update documentation accordingly. (Sem_Ch12.Analyze_Associations): A RACW type is acceptable as actual for a formal type to which a pragma Remote_Access_Type applies. (Aspects, Par.Prag, Sem_Prag): Support for new pramga/aspect Remote_Access_Type. (Sem_Attr.Analyze_Attribute, case Stub_Type): Attribute can be applied to a generic type if pragma Remote_Access_Type applies, in which case the type of the attribute is System.Partition_Interface.RACW_Stub_Type. From-SVN: r183698
Diffstat (limited to 'gcc/ada/sigtramp-ppcvxw.c')
-rw-r--r--gcc/ada/sigtramp-ppcvxw.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ada/sigtramp-ppcvxw.c b/gcc/ada/sigtramp-ppcvxw.c
index a8fc801..bb6945b 100644
--- a/gcc/ada/sigtramp-ppcvxw.c
+++ b/gcc/ada/sigtramp-ppcvxw.c
@@ -6,7 +6,7 @@
* *
* Asm Implementation File *
* *
- * Copyright (C) 2011, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2012, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -169,15 +169,23 @@ CR(".cfi_def_cfa " S(CFA_REG) ", 0")
/* Register location blocks
------------------------
- Rules to find registers of interest from the CFA. This should
- comprise all the non-volatile registers relevant to the interrupted
- context. */
+ Rules to find registers of interest from the CFA. This should comprise
+ all the non-volatile registers relevant to the interrupted context.
+
+ Note that we include r1 in this set, unlike the libgcc unwinding
+ fallbacks. This is useful for fallbacks to allow the use of r1 in CFI
+ expressions and the absence of rule for r1 gets compensated by using the
+ target CFA instead. We don't need the expression facility here and
+ setup a fake CFA to allow very simple offset expressions, so having a
+ rule for r1 is the proper thing to do. We for sure have observed
+ crashes in some cases without it. */
#define COMMON_CFI(REG) \
".cfi_offset " S(REGNO_##REG) "," S(REG_SET_##REG)
#define CFI_COMMON_REGS \
CR("# CFI for common registers\n") \
+TCR(COMMON_CFI(GR(1))) \
TCR(COMMON_CFI(GR(2))) \
TCR(COMMON_CFI(GR(3))) \
TCR(COMMON_CFI(GR(4))) \