[PATCH ARM] Fix armv8-m multilib build failure with stdint.h

Kyrill Tkachov kyrylo.tkachov@foss.arm.com
Fri Jun 22 13:59:00 GMT 2018


On 22/06/18 14:56, Andre Vieira (lists) wrote:
> On 17/05/18 09:29, Kyrill Tkachov wrote:
> >
> > On 16/05/18 10:22, Jérôme Lambourg wrote:
> >> Hello Kyrill,
> >>
> >>> Thanks for the patch! To validate it your changes you can also look
> >>> at the disassembly
> >>> of the cmse.c binary in the build tree. If the binary changes with
> >>> your patch then that
> >>> would indicate some trouble.
> >> Good idea. So I just did that and the assembly of both objects are
> >> identical
> >> (before and after the patch).
> >>
> >>> There are places in arm_cmse.h that use intptr_t. You should replace
> >>> those as well.
> >>> Look for the cmse_nsfptr_create and cmse_is_nsfptr macros...
> >> Indeed, good catch. I did not see those as this part is not included
> >> in the armv8-m.
> >>
> >> Below the updated patch and modified changelog.
> >
> > Thanks this looks good with one nit below.
> >
> >> 2018-05-16  Jerome Lambourg <lambourg@adacore.com>
> >>     gcc/
> >>     * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
> >>     #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
> >>
> >>     libgcc/
> >>     * config/arm/cmse.c (cmse_check_address_range): Replace
> >>     UINTPTR_MAX with __UINTPTR_MAX__ and uintptr_t with __UINTPTR_TYPE__.
> >>
> >
> > @@ -51,7 +51,8 @@
> >
> >    /* Execute the right variant of the TT instructions.  */
> >    pe = pb + size - 1;
> > -  const int singleCheck = (((uintptr_t) pb ^ (uintptr_t) pe) < 32);
> > +  const int singleCheck =
> > +    (((__UINTPTR_TYPE__) pb ^ (__UINTPTR_TYPE__) pe) < 32);
> >
> > The "=" should go on the next line together with the initialisation.
> >
> > Ok for trunk with that fixed.
> > Thanks,
> > Kyrill
> Hi,
>
> Is it OK to backport this to gcc-7?
>

Ok.
Thanks,
Kyrill

> Applies cleanly and I ran the cmse tests.
>
> Cheers,
> Andre



More information about the Gcc-patches mailing list