From ac566cbe4b11e71b0c9c3b595e1787fe06487310 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Wed, 27 Apr 2016 15:22:48 +0200 Subject: [multiple changes] 2016-04-27 Arnaud Charlet * sinput-l.ads, sem_ch13.adb: Minor editing. 2016-04-27 Doug Rupp * init.c (__gnat_adjust_context_for_raise) [arm-linux thumb]: Bump the pc so the lower order bit is set. 2016-04-27 Ed Schonberg * sem_case.adb, sem_case.ads (NO_Op): If appropriate warning is enabled, report an empty range in a case construct. From-SVN: r235503 --- gcc/ada/init.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc/ada/init.c') diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 43ea1e7..440a068 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2015, Free Software Foundation, Inc. * + * Copyright (C) 1992-2016, 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- * @@ -503,6 +503,11 @@ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext) #elif defined (__ARMEL__) /* ARM Bump has to be an even number because of odd/even architecture. */ mcontext->arm_pc+=2; +#ifdef __thumb2__ + /* For thumb, the return address much have the low order bit set, otherwise + the unwwinder will reset to "arm" mode upon return. It's a feature. */ + mcontext->arm_pc+=1; +#endif #endif } -- cgit v1.1