This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See crosstool-NG for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: selected processor does not support `rev r7,r7'


Looks like Kbuilds cc-option is failing somehow.

Can you do a clean build with V=1 and post the whole log? Hopefully that
should show the invocations kbuild is doing.

Side note, I don't really understand this bit
> -march=armv5t -Wa,-march=armv7-a

This is telling cc to use march=armv5t and the assembler to use armv7-a. I
can't think of a scenario where this would be desired, but maybe I am
overlooking something.

Without digging too far, the failing object file (memory.o) is a fairly
small c file that includes no obvious inline assembly (although I didn't
look to far into it's includes), so to me it seems like the compiler is
generating assembly that the assembler finds to be invalid. Presumably
because they are operating with differing march flags.

But anyway, the root issue is that kbuild is incorrectly identifying your
compiler does not support armv7-a


On Thu, Mar 21, 2019, 04:49 Lewis Zhou <lewisou@gmail.com> wrote:

> Hi Austin,
>
> Here's the list. armv7-a is on the list.
>
> lewis@lewis-ubuntu:~/x-tools/arm-cortex_a8-linux-gnueabihf/bin$
> ./arm-cortex_a8-linux-gnueabihf-gcc -E -march=help -xc /dev/null
> arm-cortex_a8-linux-gnueabihf-gcc: error: unrecognized -march target: help
> arm-cortex_a8-linux-gnueabihf-gcc: note: valid arguments are: armv2
> armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5e armv5te armv5tej
> armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m
> armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a
> armv8.2-a armv8.3-a armv8.4-a armv8-m.base armv8-m.main armv8-r iwmmxt
> iwmmxt2
> arm-cortex_a8-linux-gnueabihf-gcc: error: missing argument to '-march='
>
> That's strange. When compiling both barebox and linux. I always got errors
> like:
>
> "selected processor does not support `rev r7,r7'
>
>
> Kind regards,
> Lewis
>
>
>
> On Thu, Mar 21, 2019 at 4:40 PM Austin Morton <austinpmorton@gmail.com>
> wrote:
> >
> > Any recent version of gcc should spit out a list of supported March
> values if invoked with an invalid value. (read gcc 7 or higher).
> >
> > What does this command output on your compiler?
> >
> > # gcc -E -march=help -xc /dev/null
> >
> >
> https://stackoverflow.com/questions/47299458/how-can-i-determine-what-architectures-gcc-supports
> >
> > On Thu, Mar 21, 2019, 04:25 Lewis Zhou <lewisou@gmail.com> wrote:
> >>
> >> Hi,
> >>
> >> I recently tried to compile the barebox bootloaer with the
> >> arm-cortex_a8-linux-gnueabihf configuration which is based on the
> >> sample configuration arm-cortex_a8-linux-gnueabi with the hardware
> >> float enabled.
> >>
> >> However, the compiler (gcc) seems not support -march=armv7-a flag. I
> >> think something is wrong as the cortex_a8 is a sub-architecture of
> >> armv7-a.
> >>
> >> The toolchain failed to compile both the barebox and the linux kernel
> >> (4.19). Please help! Attached is a response from the barebox mailing
> >> list.
> >>
> >>
> >> Kind regards,
> >> Lewis
> >>
> >> ---------- Forwarded message ---------
> >> From: Sascha Hauer <s.hauer@pengutronix.de>
> >> Date: Thu, Mar 21, 2019 at 4:06 PM
> >> Subject: Re: selected processor does not support `rev r7,r7'
> >> To: Lewis Zhou <lewisou@gmail.com>
> >> Cc: <barebox@lists.infradead.org>
> >>
> >>
> >> On Thu, Mar 21, 2019 at 03:53:06PM +0800, Lewis Zhou wrote:
> >> > Hi Sascha,
> >> >
> >> > Here's the log:
> >> >
> >> > make -f scripts/Makefile.build obj=common
> >> >
> >> > arm-cortex_a8-linux-gnueabihf-gcc -Wp,-MD,common/.memory.o.d
> >> > -nostdinc -isystem
> >> >
> /home/lewis/x-tools/arm-cortex_a8-linux-gnueabihf/lib/gcc/arm-cortex_a8-linux-gnueabihf/8.3.0/include
> >> > -D__KERNEL__ -D__BAREBOX__ -Iinclude
> >> > -I/home/lewis/OpenProj/barebox/dts/include
> >> > -I/home/lewis/OpenProj/barebox/arch/arm/include
> >> > -I/home/lewis/OpenProj/barebox/arch/arm/include -include
> >> > /home/lewis/OpenProj/barebox/include/linux/kconfig.h -fno-builtin
> >> > -ffreestanding -D__ARM__ -fno-strict-aliasing -marm -mlittle-endian
> >> > -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7
> >> > -march=armv5t -Wa,-march=armv7-a  -msoft-float -mthumb
> >>
> >> -march=armv5t -Wa,-march=armv7-a shouldn't be here. It comes from this
> >> line in arch/arm/Makefile:
> >>
> >> arch-$(CONFIG_CPU_32v7)         :=-D__LINUX_ARM_ARCH__=7 $(call
> >> cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
> >>
> >> This means the build process will use "-march=armv7-a" when the compiler
> >> supports it. Apparently it does not, so it will fall back to
> >> "-march=armv5t -Wa,-march=armv7-a". armv5t doesn't support thumb2 code,
> >> only thumb and as it seems thumb does not support the "rev" instruction.
> >>
> >> Your compiler should really support "-march=armv7-a". If it doesn't I
> >> really think there is something wrong with it.
> >>
> >> Sascha
> >>
> >> --
> >> Pengutronix e.K.                           |
>  |
> >> Industrial Linux Solutions                 | http://www.pengutronix.de/
> |
> >> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0
>   |
> >> Amtsgericht Hildesheim, HRA 2686           | Fax:
>  +49-5121-206917-5555 |
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]