rust crashes when build upstream Firefox sources on some ___float128 stuff ... Compiling audioipc-client v0.4.0 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/media/audioipc/client) Compiling audioipc-server v0.2.3 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/media/audioipc/server) Compiling style_traits v0.0.1 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style_traits) Compiling style v0.0.1 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style) error: failed to run custom build command for `style v0.0.1 (file:///home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style)` process didn't exit successfully: `/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/toolkit/library/release/build/style-b929d392377ab1f6/build-script-build` (exit code: 101) --- stdout cargo:rerun-if-changed=build.rs cargo:out_dir=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/toolkit/library/powerpc64le-unknown-linux-gnu/release/build/style-b6deb3992531ce3d/out cargo:rerun-if-changed=properties/Mako-0.9.1.zip cargo:rerun-if-changed=properties/build.py cargo:rerun-if-changed=properties/cascade.rs cargo:rerun-if-changed=properties/computed_value_flags.rs cargo:rerun-if-changed=properties/data.py cargo:rerun-if-changed=properties/declaration_block.rs cargo:rerun-if-changed=properties/gecko.mako.rs cargo:rerun-if-changed=properties/helpers.mako.rs cargo:rerun-if-changed=properties/helpers/animated_properties.mako.rs cargo:rerun-if-changed=properties/longhands/background.mako.rs cargo:rerun-if-changed=properties/longhands/border.mako.rs cargo:rerun-if-changed=properties/longhands/box.mako.rs cargo:rerun-if-changed=properties/longhands/color.mako.rs cargo:rerun-if-changed=properties/longhands/column.mako.rs cargo:rerun-if-changed=properties/longhands/counters.mako.rs cargo:rerun-if-changed=properties/longhands/effects.mako.rs cargo:rerun-if-changed=properties/longhands/font.mako.rs cargo:rerun-if-changed=properties/longhands/inherited_box.mako.rs cargo:rerun-if-changed=properties/longhands/inherited_svg.mako.rs cargo:rerun-if-changed=properties/longhands/inherited_table.mako.rs cargo:rerun-if-changed=properties/longhands/inherited_text.mako.rs cargo:rerun-if-changed=properties/longhands/inherited_ui.mako.rs cargo:rerun-if-changed=properties/longhands/list.mako.rs cargo:rerun-if-changed=properties/longhands/margin.mako.rs cargo:rerun-if-changed=properties/longhands/outline.mako.rs cargo:rerun-if-changed=properties/longhands/padding.mako.rs cargo:rerun-if-changed=properties/longhands/position.mako.rs cargo:rerun-if-changed=properties/longhands/svg.mako.rs cargo:rerun-if-changed=properties/longhands/table.mako.rs cargo:rerun-if-changed=properties/longhands/text.mako.rs cargo:rerun-if-changed=properties/longhands/ui.mako.rs cargo:rerun-if-changed=properties/longhands/xul.mako.rs cargo:rerun-if-changed=properties/properties.html.mako cargo:rerun-if-changed=properties/properties.mako.rs cargo:rerun-if-changed=properties/shorthands/background.mako.rs cargo:rerun-if-changed=properties/shorthands/border.mako.rs cargo:rerun-if-changed=properties/shorthands/box.mako.rs cargo:rerun-if-changed=properties/shorthands/column.mako.rs cargo:rerun-if-changed=properties/shorthands/font.mako.rs cargo:rerun-if-changed=properties/shorthands/inherited_svg.mako.rs cargo:rerun-if-changed=properties/shorthands/inherited_text.mako.rs cargo:rerun-if-changed=properties/shorthands/list.mako.rs cargo:rerun-if-changed=properties/shorthands/margin.mako.rs cargo:rerun-if-changed=properties/shorthands/outline.mako.rs cargo:rerun-if-changed=properties/shorthands/padding.mako.rs cargo:rerun-if-changed=properties/shorthands/position.mako.rs cargo:rerun-if-changed=properties/shorthands/svg.mako.rs cargo:rerun-if-changed=properties/shorthands/text.mako.rs cargo:rerun-if-changed=build_gecko.rs cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style/gecko/regen_atoms.py cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/layout/style/ServoBindings.toml cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/layout/style/bindgen.toml cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nsGkAtomList.h cargo:rerun-if-changed=/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/servo/components/style/gecko/pseudo_element_definition.mako.rs --- stderr /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:102:7: error: __float128 is not supported on this target /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:101:3: error: __float128 is not supported on this target /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:135:1: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:142:21: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:148:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:154:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:160:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:166:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:172:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:178:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete] /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/js/Proxy.h:214:16: warning: offset of on non-standard-layout type 'js::BaseProxyHandler' [-Winvalid-offsetof] /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target, err: true /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:102:7: error: __float128 is not supported on this target, err: true /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:101:3: error: __float128 is not supported on this target, err: true /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:135:1: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete], err: false /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:142:21: warning: replacement function 'operator new' cannot be declared 'inline' [-Winline-new-delete], err: false /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:148:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete], err: false /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:154:21: warning: replacement function 'operator new[]' cannot be declared 'inline' [-Winline-new-delete], err: false /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:160:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete], err: false /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:166:21: warning: replacement function 'operator delete' cannot be declared 'inline' [-Winline-new-delete], err: false /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla/mozalloc.h:172:21: warning: replacement function 'operator delete[]' cannot be declared 'inline' [-Winline-new-delete], err: false ... Version-Release number of selected component (if applicable): rust-1.29.0-1.fc28.ppc64le llvm-6.0.1-1.fc28.ppc64le
part of the log with the backtrace ... RawServoCounterStyleRuleVoid { }", "--raw-line", "pub struct RawServoCounterStyleRule(RawServoCounterStyleRuleVoid);", "--whitelist-function", "Servo_.*", "--whitelist-function", "Gecko_.*", "--", "-I", "/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include", "-I", "/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nspr", "-include", "/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/mozilla-config.h", "-x", "c++", "-std=gnu++14", "-fno-sized-deallocation", "-DTRACING=1", "-DIMPL_LIBXUL", "-DMOZ_STYLO_BINDINGS=1", "-DMOZILLA_INTERNAL_API", "-DRUST_BINDGEN", "-DOS_POSIX=1", "-DOS_LINUX=1", "-I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nspr", "-I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/nss", "-I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox/obj-powerpc64le-unknown-linux-gnu/dist/include/cairo"]', servo/components/style/build_gecko.rs:282:17 stack backtrace: 0: 0x7fffb089f133 - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 1: 0x7fffb0866e3b - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 2: 0x7fffb085f397 - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 3: 0x7fffb085f08b - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 4: 0x7fffb085fed7 - std::panicking::rust_panic_with_hook::hce5f786c962c355e 5: 0x7fffb085f8ff - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 6: 0x7fffb085f80f - std::panicking::begin_panic_fmt::he46c2d83239cce7a 7: 0x13bde38db - build_script_build::build_gecko::bindings::write_binding_file::h51a5ccd8dc393ab7 8: 0x13bde4f0b - build_script_build::build_gecko::bindings::generate_bindings::h41a5592eb7754268 9: 0x7fffb08b9897 - __rust_maybe_catch_panic 10: 0x13bddaddb - std::panicking::try::hab4cc17f9f205b50 11: 0x13bdc8417 - <F as alloc::boxed::FnBox<A>>::call_box::hd6fb1e7e00676a0b 12: 0x7fffb08aaf8b - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 13: 0x7fffb0860c97 - rust_metadata_std_359ae6df43a98cd98957ef461c9ec74c 14: 0x7fffb0a185d3 - start_thread 15: 0x7fffb06a65c7 - clone /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:102:7: error: __float128 is not supported on this target /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:101:3: error: __float128 is not supported on this target ... Full Firefox build.log is available in our Jenkins.
Created attachment 1487706 [details] full build log
Does this succeed on F29 or Rawhide? I don't think it's any problem with the rust toolchain itself. The error here is from the build script for servo/components/style, which is trying to generate FFI bindings using the bindgen crate. This is panicking when it encounters the unsupported type in those headers. I believe bindgen uses libclang.so, so __float128 support is probably needed there.
I can reproduce this with a simple hello-world and ppc64le clang++. I'm going to reassign to clang, but it may also be a libstdc++ issue. #include <iostream> using namespace std; int main(void) { cout << "Hello" << endl; return 0; } Using clang-6.0.1-1.fc28.ppc64le and libstdc++-8.1.1-5.fc28.ppc64le: $ clang++ hello.cc In file included from hello.cc:1: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/iostream:39: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ostream:38: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ios:39: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/exception:144: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/nested_exception.h:40: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/move.h:55: /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/type_traits:335:39: error: __float128 is not supported on this target struct __is_floating_point_helper<__float128> ^ In file included from hello.cc:1: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/iostream:39: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ostream:38: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ios:42: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/ios_base.h:41: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/locale_classes.h:40: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/string:52: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/basic_string.h:6391: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/ext/string_conversions.h:41: In file included from /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/cstdlib:77: /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:102:7: error: __float128 is not supported on this target abs(__float128 __x) ^ /usr/bin/../lib/gcc/ppc64le-redhat-linux/8/../../../../include/c++/8/bits/std_abs.h:101:3: error: __float128 is not supported on this target __float128 ^ 3 errors generated.
I think the solution is to backport this upstream libstdc++ patch: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=263084
It has been even backported, but the updated gcc >= 8.2.1-2 hasn't made it to the updates (nor updates-testing) yet.