Closed Bug 1089411 Opened 11 years ago Closed 11 years ago

build is broken on ARMv5T/ARM10

Categories

(Core :: Audio/Video, defect)

31 Branch
ARM
Linux
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1085599

People

(Reporter: maillist-mozilla, Unassigned)

References

Details

Attachments

(1 file)

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).
Hardware: x86_64 → ARM
Component: Untriaged → Video/Audio
Product: Firefox → Core
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
Component: Untriaged → Video/Audio
Product: Firefox → Core
(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.
Summary: build is broken on ARM → build is broken on ARMv5T/ARM10
(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?
Attached file mozconfig
(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.
(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?
Pretty sure this is a dupe of bug 1085599.
Status: UNCONFIRMED → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
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
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
Depends on: 1085599
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: