Closed
Bug 1089411
Opened 11 years ago
Closed 11 years ago
build is broken on ARMv5T/ARM10
Categories
(Core :: Audio/Video, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1085599
People
(Reporter: maillist-mozilla, Unassigned)
References
Details
Attachments
(1 file)
|
2.83 KB,
text/plain
|
Details |
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0
Build ID: 20140730204622
Steps to reproduce:
try to build firefox on an ARMv5t platform (non-hardfloat), for example arm10tdmi (use gcc flag -mcpu=arm10tdmi to reproduce)
Actual results:
gcc -o picklpf_arm.o -c -fvisibility=hidden -DHAVE_CONFIG_H='vpx_config.h' -DMOZ_GLUE_IN_PROGRAM -DNO_NSPR_10_SUPPORT -I/src/build/firefox/mozilla-release/media/libvpx -I. -I../../dist/include -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include/nspr -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include/nss -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include -I/include/pixman-1 -fPIC -include ../../mozilla-config.h -DMOZILLA_CLIENT -MD -MP -MF .deps/picklpf_arm.o.pp -Wall -Wpointer-arith -Wdeclaration-after-statement -Werror=return-type -Werror=int-to-pointer-cast -Wtype-limits -Wempty-body -Wsign-compare -Wno-unused -D_GNU_SOURCE -I/src/build/firefox/mozilla-release/include -Os -g0 -fno-unwind-tables -fno-asynchronous-unwind-tables -Wa,--noexecstack -Wl,--no-keep-memory -std=gnu99 -fgnu89-inline -fno-strict-aliasing -fno-math-errno -pthread -pipe -DNDEBUG -DTRIMMED -fomit-frame-pointer -Wno-sign-compare /src/build/firefox/mozilla-release/media/libvpx/vp8/encoder/arm/neon/picklpf_arm.c
quantize_arm.o
gcc -o quantize_arm.o -c -fvisibility=hidden -DHAVE_CONFIG_H='vpx_config.h' -DMOZ_GLUE_IN_PROGRAM -DNO_NSPR_10_SUPPORT -I/src/build/firefox/mozilla-release/media/libvpx -I. -I../../dist/include -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include/nspr -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include/nss -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include -I/include/pixman-1 -fPIC -include ../../mozilla-config.h -DMOZILLA_CLIENT -MD -MP -MF .deps/quantize_arm.o.pp -Wall -Wpointer-arith -Wdeclaration-after-statement -Werror=return-type -Werror=int-to-pointer-cast -Wtype-limits -Wempty-body -Wsign-compare -Wno-unused -D_GNU_SOURCE -I/src/build/firefox/mozilla-release/include -Os -g0 -fno-unwind-tables -fno-asynchronous-unwind-tables -Wa,--noexecstack -Wl,--no-keep-memory -std=gnu99 -fgnu89-inline -fno-strict-aliasing -fno-math-errno -pthread -pipe -DNDEBUG -DTRIMMED -fomit-frame-pointer -Wno-sign-compare /src/build/firefox/mozilla-release/media/libvpx/vp8/encoder/arm/quantize_arm.c
vp9_convolve_neon.o
{standard input}: Assembler messages:
{standard input}:333: Error: selected processor does not support ARM mode `smulbb r2,r2,r6'
{standard input}:740: Error: selected processor does not support ARM mode `smulbb r1,r3,r1'
make[5]: *** [A2NLSF.o] Error 1
make[5]: Leaving directory `/src/build/firefox/mozilla-release/firefox-build-dir/media/libopus'
make[4]: *** [media/libopus/compile] Error 2
make[4]: *** Waiting for unfinished jobs....
the arm assembly code in the opus dir uses an opcode that is not available on armv5t.
Expected results:
if assembly is being used, there either needs to be one version that works on all ARM cpus, or several different versions where the one suiting the actual CPU the compiler targets is being used (maybe via preprocessor macros).
| Reporter | ||
Updated•11 years ago
|
Hardware: x86_64 → ARM
Updated•11 years ago
|
Component: Untriaged → Video/Audio
Product: Firefox → Core
| Reporter | ||
Comment 1•11 years ago
|
||
later (i bit the bullet and added -march=armv7-a, dropping support for any otherwise supported arm devices):
c++ -o AudioNodeEngineNEON.o -c -fvisibility=hidden -DOS_POSIX=1 -DOS_LINUX=1 -DMOZILLA_INTERNAL_API -DMOZ_GLUE_IN_PROGRAM -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -DNO_NSPR_10_SUPPORT -I/src/build/firefox/mozilla-release/content/media -I. -I/src/build/firefox/mozilla-release/ipc/chromium/src -I/src/build/firefox/mozilla-release/ipc/glue -I/src/build/firefox/mozilla-release/content/base/src -I/src/build/firefox/mozilla-release/layout/generic -I/src/build/firefox/mozilla-release/layout/xul -I/src/build/firefox/mozilla-release/netwerk/base/src -I/src/build/firefox/mozilla-release/firefox-build-dir/ipc/ipdl/_ipdlheaders -I../../dist/include -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include/nspr -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include/nss -I/src/build/firefox/mozilla-release/firefox-build-dir/dist/include -I/include/pixman-1 -fPIC -DMOZILLA_CLIENT -include ../../mozilla-config.h -MD -MP -MF .deps/AudioNodeEngineNEON.o.pp -Wall -Wpointer-arith -Woverloaded-virtual -Werror=return-type -Werror=int-to-pointer-cast -Wtype-limits -Wempty-body -Wsign-compare -Wno-invalid-offsetof -D_GNU_SOURCE -I/src/build/firefox/mozilla-release/include -Os -g0 -fno-unwind-tables -fno-asynchronous-unwind-tables -Wa,--noexecstack -Wl,--no-keep-memory -march=armv7-a -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -std=gnu++0x -pthread -pipe -DNDEBUG -DTRIMMED -fomit-frame-pointer -mfpu=neon /src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp
In file included from /src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:7:0:
/opt/gcc474/bin/../lib/gcc/armv7l-unknown-linux-gnueabi/4.7.4/include/arm_neon.h:32:2: error: #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp: In function 'void mozilla::AudioBufferAddWithScale_NEON(const float*, float, float*, uint32_t)':
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:29:3: error: 'float32x4_t' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:29:15: error: expected ';' before 'vin0'
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:30:15: error: expected ';' before 'vout0'
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:31:15: error: expected ';' before 'vscale'
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:37:5: error: 'vin0' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:37:22: error: 'float32_t' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:37:22: error: expected primary-expression before ')' token
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:37:43: error: 'vld1q_f32' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:38:5: error: 'vin1' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:38:22: error: expected primary-expression before ')' token
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:39:5: error: 'vin2' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:39:22: error: expected primary-expression before ')' token
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:40:5: error: 'vin3' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:40:22: error: expected primary-expression before ')' token
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:42:5: error: 'vout0' was not declared in this scope
/src/build/firefox/mozilla-release/content/media/AudioNodeEngineNEON.cpp:42:23: error: expected primary-expression before ')' token
[...etc...]
that kinda leaves the impression the "optimized" arm code works on exactly one system - armv7+ with neon FPU.
please provide a way to opt out of the buggy/untested asm stuff and use the C code - i don't care if the code is 10% slower as long as it works...
Component: Video/Audio → Untriaged
Product: Core → Firefox
| Reporter | ||
Updated•11 years ago
|
Component: Untriaged → Video/Audio
Product: Firefox → Core
Comment 2•11 years ago
|
||
(In reply to maillist-mozilla from comment #1)
> that kinda leaves the impression the "optimized" arm code works on exactly
> one system - armv7+ with neon FPU.
NEON detection is done at runtime, the code works fine on non-NEON devices like Tegra 2. But you need to enable NEON in the compiler so it can compile the code.
Updated•11 years ago
|
Summary: build is broken on ARM → build is broken on ARMv5T/ARM10
Comment 3•11 years ago
|
||
(In reply to maillist-mozilla from comment #0)
> the arm assembly code in the opus dir uses an opcode that is not available
> on armv5t.
Please note:
http://dxr.mozilla.org/mozilla-central/source/media/libopus/Makefile.in#10
Can you attach your full mozconfig here?
| Reporter | ||
Comment 4•11 years ago
|
||
(In reply to Gian-Carlo Pascutto [:gcp] from comment #3)
> (In reply to maillist-mozilla from comment #0)
>
> > the arm assembly code in the opus dir uses an opcode that is not available
> > on armv5t.
>
> Please note:
> http://dxr.mozilla.org/mozilla-central/source/media/libopus/Makefile.in#10
interesting, i don't know why it doesn't get used.
>
> Can you attach your full mozconfig here?
attached.
note that opus is only enabled because disabling it breaks other stuff.
Comment 5•11 years ago
|
||
(In reply to maillist-mozilla from comment #4)
> > Please note:
> > http://dxr.mozilla.org/mozilla-central/source/media/libopus/Makefile.in#10
>
> interesting, i don't know why it doesn't get used.
I think Opus' build files needs a fix to force those flags when we're not crosscompiling and are on an architecture that won't set them itself, very similar to:
http://dxr.mozilla.org/mozilla-central/source/configure.in#5495
http://dxr.mozilla.org/mozilla-central/source/configure.in#6161
I'm not sure the Firefox build uses the Makefile.in, though, doesn't it just use the moz.build and hence need a fixup like:
http://dxr.mozilla.org/mozilla-central/source/media/libvpx/moz.build#61
If so those configure.in stuffs above are outdated. Ted?
Comment 6•11 years ago
|
||
Pretty sure this is a dupe of bug 1085599.
Status: UNCONFIRMED → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
| Reporter | ||
Comment 7•11 years ago
|
||
note that the other bug report lacks the
{standard input}:333: Error: selected processor does not support ARM mode `smulbb r2,r2,r6'
condition. the OP apparently used ARMv6 rather than ARMv7, so he only experienced the latter bug from comment #1
| Reporter | ||
Comment 8•11 years ago
|
||
note that the other bug report lacks the
{standard input}:333: Error: selected processor does not support ARM mode `smulbb r2,r2,r6'
condition. the OP apparently used ARMv6 rather than ARMv5, so he only experienced the latter bug from comment #1
You need to log in
before you can comment on or make changes to this bug.
Description
•