Comment 117 for bug 1711337

Revision history for this message
James Donald (jdonald) wrote :

Here is a working Firefox 59 deb package cross-compiled for 18.04 armhf: https://www.dropbox.com/s/17ypog6btdq4wj7/firefox_59.0.1%2Bbuild1-0ubuntu1_armhf.deb?dl=0

I have installed and tested on RaspEX (Bionic armhf). I can also confirm it works sandboxed on Ubuntu MATE Xenial and Raspbian Stretch. One way to run on older systems is to unpack locally using ar + tar, download libc6 and libstdc++6 bionic armhf debfiles and untar them as well, then do:

  cd path/to/usr/lib/firefox
  LD_PRELOAD=path/to/usr/lib/arm-linux-gnueabihf/libstdc++.so.6:path/to/lib/arm-linux-gnueabihf/libm.so.6 \
    ./firefox

Cross-compiling via dpkg-buildpackage is fraught of issues, and similar to what Chituc experienced the most difficult part was getting rustc to properly cross-compile in all cases. I posted my main workaround for a host/target header bug here: https://github.com/rust-lang-nursery/rust-bindgen/issues/1229

To prevent the Skia misaligned instruction crash, I ended up editing gfx/skia/generate_mozbuild.py to force SK_JUMPER_USE_ASSEMBLY to False. However, there's stubborn code at the top of SkJumper.cpp that ends up turning it on again so I had to override that too. Telling Skia to use its non-asm fallback mode should be better than disabling Skia altogether as we had for Firefox 57.

I tested some of our earlier theories too, and so far building Skia with clang, everything with -thumb, -fstack-protector-strong, --enable-rust-simd or other suggestions above do not seem to help at all with the Skia SIGILL nor the strd r2, r3, [r1] SIGSEGV.

As for that strd r2, r3, [r1] crash, not much progress there aside from our theory that it's in the XPCOM armhf-specific code. I'm merely avoiding it by building in a 18.04 Docker container, but still no idea why that works.