diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2016-04-27 15:28:30 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2016-04-27 15:28:30 +0200 |
commit | 437244c7737eeb63973e1e285d5dc6844ab13f9f (patch) | |
tree | e076d046cdb802cf813a64b0273c96591c31bc79 /gcc/ada/init.c | |
parent | 57323d5bd3d3b553788a6f13217829069bf95bfe (diff) | |
download | gcc-437244c7737eeb63973e1e285d5dc6844ab13f9f.zip gcc-437244c7737eeb63973e1e285d5dc6844ab13f9f.tar.gz gcc-437244c7737eeb63973e1e285d5dc6844ab13f9f.tar.bz2 |
[multiple changes]
2016-04-27 Arnaud Charlet <charlet@adacore.com>
* aa_util.adb, aa_util.ads: Removed, no longer used.
2016-04-27 Hristian Kirtchev <kirtchev@adacore.com>
* 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 <rupp@adacore.com>
* 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 <schonberg@adacore.com>
* 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 <kirtchev@adacore.com>
* 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
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r-- | gcc/ada/init.c | 8 |
1 files changed, 6 insertions, 2 deletions
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<<CPSR_THUMB_BIT)) + mcontext->arm_pc+=1; #endif #endif } |