aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2016-01-05 18:10:31 +0000
committerOlivier Hainque <hainque@adacore.com>2016-01-05 18:10:31 +0000
commit7590441b7686f8d26c36a550474619b9983449b4 (patch)
tree94b150bbd4f014cb2b04c5492e00d5ca0c08e1ff
parente860a1edabc351d5bf49143d0a43c7308eef4156 (diff)
2016-01-05 Olivier Hainque <hainque@adacore.com>
* config/rs6000/aix-unwind.h (ucontext_for): Handle AIX 7.1 specificities. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@232082 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config/rs6000/aix-unwind.h11
2 files changed, 13 insertions, 3 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 484c7268c6a..4a9b5d39b85 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-05 Olivier Hainque <hainque@adacore.com>
+
+ * config/rs6000/aix-unwind.h (ucontext_for): Handle AIX 7.1
+ specificities.
+
2016-01-04 Jakub Jelinek <jakub@redhat.com>
Update copyright years.
diff --git a/libgcc/config/rs6000/aix-unwind.h b/libgcc/config/rs6000/aix-unwind.h
index 16a1a9e1dc0..4edeaf4606b 100644
--- a/libgcc/config/rs6000/aix-unwind.h
+++ b/libgcc/config/rs6000/aix-unwind.h
@@ -64,7 +64,7 @@
#endif
/* Now on to MD_FALLBACK_FRAME_STATE_FOR.
- 32bit AIX 5.2 and 5.3 only at this stage. */
+ 32bit AIX 5.2, 5.3 and 7.1 only at this stage. */
#include <stdlib.h>
#include <stddef.h>
@@ -128,8 +128,9 @@ ucontext_for (struct _Unwind_Context *context)
{
const unsigned int * ra = context->ra;
- /* AIX 5.2 and 5.3, threaded or not, share common patterns and feature
- variants depending on the configured kernel (unix_mp or unix_64). */
+ /* AIX 5.2, 5.3 and 7.1, threaded or not, share common patterns
+ and feature variants depending on the configured kernel (unix_mp
+ or unix_64). */
if (*(ra - 5) == 0x4c00012c /* isync */
&& *(ra - 4) == 0x80ec0000 /* lwz r7,0(r12) */
@@ -150,6 +151,10 @@ ucontext_for (struct _Unwind_Context *context)
/* AIX 5.3 */
case 0x835a0570: /* lwz r26,1392(r26) */
return (ucontext_t *)(context->cfa + 0x40);
+
+ /* AIX 7.1 */
+ case 0x2c1a0000: /* cmpwi r26,0 */
+ return (ucontext_t *)(context->cfa + 0x40);
default:
return 0;