On Thu, 5 Sep 2019 at 11:03, Kyrill Tkachov <kyrylo.tkac...@foss.arm.com> wrote:
>
> Hi Christophe,
>
> On 9/5/19 9:30 AM, Christophe Lyon wrote:
> > On Thu, 29 Aug 2019 at 17:32, Kyrill Tkachov
> > <kyrylo.tkac...@foss.arm.com> wrote:
> >> Hi Christophe,
> >>
> >> On 5/15/19 1:39 PM, Christophe Lyon wrote:
> >>> 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-XX-XX  Christophe Lyon  <christophe.l...@st.com>
> >>>          Mickaël Guêné <mickael.gu...@st.com>
> >>>
> >>>          libgcc/
> >>>          * config/arm/unwind-arm.c (_Unwind_VRS_Set): Handle v7m
> >>>          architecture.
> >>>
> >>> Change-Id: Ie84de548226bcf1751e19a09e8f091fb3013ccea
> >>>
> >>> diff --git a/libgcc/config/arm/unwind-arm.c
> >>> b/libgcc/config/arm/unwind-arm.c
> >>> index 9ba73e7..ba47150 100644
> >>> --- a/libgcc/config/arm/unwind-arm.c
> >>> +++ b/libgcc/config/arm/unwind-arm.c
> >>> @@ -199,6 +199,11 @@ _Unwind_VRS_Result _Unwind_VRS_Set
> >>> (_Unwind_Context *context,
> >>>           return _UVRSR_FAILED;
> >>>
> >>>         vrs->core.r[regno] = *(_uw *) valuep;
> >>> +#if defined(__ARM_ARCH_7M__)
> >>> +      /* Force LSB bit since we always run thumb code.  */
> >>> +      if (regno == 15)
> >>> +       vrs->core.r[regno] |= 1;
> >>> +#endif
> >> Hmm, this looks quite specific. There are other architectures that are
> >> thumb-only too (6-M, 7E-M etc).
> >>
> >> Would checking for __thumb__ be better?
> >>
> > Right.
> > The attached updated patch also uses R_PC instead of 15.
>
>
> Looks ok to me but we'll need to make sure this doesn't break non-FDPIC
> targets now.
>
> A bootstrap and test of an arm-none-linux-gnueabihf targeting thumb
> should do it.
>

Bootstrap of the whole series OK, modulo the problems with the tests
discussed in patch 20.
(some tests became unsupported on arm-linux-gnueabihf with thumb target)

Christophe

> Thanks,
>
> Kyrill
>
>
> >
> > Christophe
> >
> >> Thanks,
> >>
> >> Kyrill
> >>
> >>
> >>>         return _UVRSR_OK;
> >>>
> >>>       case _UVRSC_VFP:
> >>> --
> >>> 2.6.3
> >>>

Reply via email to