From 437244c7737eeb63973e1e285d5dc6844ab13f9f Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Wed, 27 Apr 2016 15:28:30 +0200 Subject: [multiple changes] 2016-04-27 Arnaud Charlet * aa_util.adb, aa_util.ads: Removed, no longer used. 2016-04-27 Hristian Kirtchev * sem_prag.adb (Analyze_Pragma): An object renaming declaration resulting from the expansion of an object declaration is a suitable context for pragma Ghost. 2016-04-27 Doug Rupp * init.c: Refine last checkin so the only requirement is the signaling compilation unit is compiled with the same mode as the compilation unit containing the initial landing pad. 2016-04-27 Ed Schonberg * sem_ch13.adb (Valid_Default_Iterator): Better filter of illegal specifications for Default_Iterator, including overloaded cases where no interpretations are legal, and return types that are not iterator types. 2016-04-27 Hristian Kirtchev * exp_ch5.adb (Expand_N_Assignment_Statement): Do not install an accessibility check when the left hand side of the assignment denotes a container cursor. * exp_util.ads, exp_util.adb (Find_Primitive_Operations): Removed. * sem_ch4.adb (Find_Indexing_Operations): New routine. (Try_Container_Indexing): Code cleanup. From-SVN: r235505 --- gcc/ada/init.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'gcc/ada/init.c') diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 440a068..6d51896 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -504,9 +504,13 @@ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext) /* ARM Bump has to be an even number because of odd/even architecture. */ mcontext->arm_pc+=2; #ifdef __thumb2__ +#define CPSR_THUMB_BIT 5 /* 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; + the unwinder will reset to "arm" mode upon return. As long as the + compilation unit containing the landing pad is compiled with the same + mode (arm vs thumb) as the signaling compilation unit, this works. */ + if (mcontext->arm_cpsr & (1<arm_pc+=1; #endif #endif } -- cgit v1.1