[ARM/FDPIC v6 13/24] [ARM] FDPIC: Force LSB bit for PC in Cortex-M architecture
Without this, when we are unwinding across a signal frame we can jump to an even address which leads to an exception. This is needed in __gnu_persnality_sigframe_fdpic() when restoring the PC from the signal frame since the PC saved by the kernel has the LSB bit set to zero. 2019-09-10 Christophe Lyon <christophe.lyon@st.com> Mickaël Guêné <mickael.guene@st.com> libgcc/ * config/arm/unwind-arm.c (_Unwind_VRS_Set): Handle thumb-only architecture. Co-Authored-By: Mickaël Guêné <mickael.guene@st.com> From-SVN: r275575
This commit is contained in:
parent
bb33a88e3d
commit
84818dbb70
@ -1,7 +1,12 @@
|
||||
2019-09-10 Christophe Lyon <christophe.lyon@st.com>
|
||||
Mickaël Guêné <mickael.guene@st.com>
|
||||
|
||||
libgcc/
|
||||
* config/arm/unwind-arm.c (_Unwind_VRS_Set): Handle thumb-only
|
||||
architecture.
|
||||
|
||||
2019-09-10 Christophe Lyon <christophe.lyon@st.com>
|
||||
Mickaël Guêné <mickael.guene@st.com>
|
||||
|
||||
* unwind-arm-common.inc (ARM_SET_R7_RT_SIGRETURN)
|
||||
(THUMB2_SET_R7_RT_SIGRETURN, FDPIC_LDR_R12_WITH_FUNCDESC)
|
||||
(FDPIC_LDR_R9_WITH_GOT, FDPIC_LDR_PC_WITH_RESTORER)
|
||||
|
@ -199,6 +199,11 @@ _Unwind_VRS_Result _Unwind_VRS_Set (_Unwind_Context *context,
|
||||
return _UVRSR_FAILED;
|
||||
|
||||
vrs->core.r[regno] = *(_uw *) valuep;
|
||||
#if defined(__thumb__)
|
||||
/* Force LSB bit since we always run thumb code. */
|
||||
if (regno == R_PC)
|
||||
vrs->core.r[regno] |= 1;
|
||||
#endif
|
||||
return _UVRSR_OK;
|
||||
|
||||
case _UVRSC_VFP:
|
||||
|
Loading…
Reference in New Issue
Block a user