www/firefox on RPI2: error: instruction requires: armv6t2

Mark Millard markmi at dsl-only.net
Fri May 12 21:36:58 UTC 2017


On 2017-May-12, at 12:31 PM, bob prohaska <fbsd at www.zefox.net> wrote:

> On Thu, May 11, 2017 at 08:14:14PM -0700, Mark Millard wrote:
>> Having -mcpu=cortex-a7 in ASFLAGS would contribute to
>> both of the examples.
>> 
> 
> Restarting the make with
> root at www:/usr/ports/www/firefox # make CFLAGS=-mcpu=cortex-a7 ASFLAGS=-mcpu=cortex-a7 -DBATCH > & make.log &

Again the commands might be handy, although in this
case the source code being assembled looks more
interesting.

> made considerably more progress, but compilation still stopped with errors
> of the form
> /usr/ports/www/firefox/work/firefox-53.0.2/media/openmax_dl/dl/sp/src/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S:129:9: error: unknown directive

Looking on the web the line 129 appears to be:

        .macro FFTSTAGE scaled, inverse, name

It looks like /usr/bin/cc 's processing of .S assembler
notation does not support .macro (or the later .endm
I suppose).

This may mean that AS needs to be replaced so that
$(AS) picks a tool that has the support of the syntax.
Or may be cc needs use of -B to pick up some specific
toolchain's utilities that handle the .macro and its
use.

> /usr/ports/www/firefox/work/firefox-53.0.2/media/openmax_dl/dl/sp/src/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S:138:23: error: unexpected token in operand

This one looks to be for a line that looks like:

        VMOV    half, 0.5

where the earlier line 121 had:

#define half    D13.F32

The normal form of this instruction might
be something like:

        VMOV.F32    D13, #0.5

that encodes the element type/size in the
instruction, instead of in the operand.
I'm not sure. Also the immediate value
might need a # prefix.

But such claims may be tied to the parser
in the specific assembler-processing that
ends up involved. I do not know how
standardized the assembler notation(s) are
for the context.


> /usr/ports/www/firefox/work/firefox-53.0.2/media/openmax_dl/dl/sp/src/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S:152:14: error: invalid operand for instruction

This one looks to be for a line looking like:

        VLD1    dX0,[pSrc],step

where prior lines had:

#define pSrc            r0
. . .
#define step            r8
. . .
#define dX0     D0.F32


The normal form of this instruction might
be something like:

        VLD1.32    D0,[r0],r8

that encodes the element type/size in the
instruction (with the interleave pattern: 1)
instead of in the operand. I'm not sure.

But such claims may be tied to the parser
in the specific assembler-processing that
ends up involved. I do not know how
standardized the assembler notation(s) are
for the context.

> Make clean has been run and compilation started anew, using the same make
> command line, in the hope the mistake was one of consistency.

My guess from the above is that the problem will
repeat in this rebuild.


===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-ports mailing list