Build x86_64 with soft-float

Hi,

Quick overview of what I'm trying: I want to play with deterministic physics across different hardware, so the same initial state and same parameters (eg. simulation stepping) results on the same final state. My idea is that if I compile it with the same compiler and using software floating point calculations instate of the FPU on the hardware, then floating point calculations will not diverge from different hardware, os, etc cause it will be handled internally by integers using the same implementation (exactly the same compiler).

The problem: I'm trying to accomplish that, but without success. I can't find much information on the issue. At the moment I'm trying to compile and run a tiny example of the "nphysics" library. Without soft-float, I can run it without problem (I already have some experience with rust). Problem comes when I try to compile it with "+soft-float" or "-mmx,-sse,+soft-float" target features. Compilation can't succeed. On debug with verbose I get this kind of error:

Fresh autocfg v1.0.0
       Fresh cfg-if v0.1.10
       Fresh lazy_static v1.4.0
       Fresh unicode-xid v0.1.0
   Compiling xml-rs v0.8.2
       Fresh autocfg v0.1.7
       Fresh rand_core v0.4.2
     Running `rustc --crate-name xml /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/xml-rs-0.8.2/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=a36f7ca3370075bd -C extra-filename=-a36f7ca3370075bd --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
       Fresh scopeguard v1.1.0
   Compiling cc v1.0.50
       Fresh semver-parser v0.7.0
       Fresh rustc-hash v1.1.0
       Fresh downcast-rs v1.1.1
     Running `rustc --crate-name cc --edition=2018 /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/cc-1.0.50/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=ffee7cd6e6b273ca -C extra-filename=-ffee7cd6e6b273ca --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
       Fresh linked-hash-map v0.5.2
       Fresh void v1.0.2
       Fresh unicode-xid v0.2.0
       Fresh either v1.5.3
   Compiling pkg-config v0.3.17
       Fresh ordermap v0.3.5
       Fresh fixedbitset v0.1.9
       Fresh stable_deref_trait v1.1.1
       Fresh same-file v1.0.6
   Compiling xdg v2.2.0
       Fresh rawpointer v0.2.1
     Running `rustc --crate-name pkg_config /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/pkg-config-0.3.17/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=cd3aef99d90be049 -C extra-filename=-cd3aef99d90be049 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
     Running `rustc --crate-name xdg /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/xdg-2.2.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=810f71efbdcfd8aa -C extra-filename=-810f71efbdcfd8aa --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
       Fresh adler32 v1.0.4
       Fresh scopeguard v0.3.3
       Fresh lzw v0.10.0
       Fresh piston-float v0.3.0
       Fresh slab v0.4.2
       Fresh percent-encoding v1.0.1
       Fresh color_quant v1.0.1
       Fresh slotmap v0.3.0
       Fresh scoped_threadpool v0.1.9
       Fresh fnv v1.0.6
       Fresh instant v0.1.2
   Compiling proc-macro2 v0.4.30
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/proc-macro2-1c34a13254c6299d/build-script-build`
       Fresh generational-arena v0.2.7
   Compiling byteorder v1.3.4
       Fresh rand_core v0.3.1
   Compiling log v0.4.8
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/byteorder-e2db1b979a88bfc3/build-script-build`
   Compiling khronos_api v3.1.0
       Fresh rand_jitter v0.1.4
   Compiling nix v0.14.1
   Compiling semver v0.9.0
   Compiling proc-macro2 v1.0.10
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/log-57e3495c98e19288/build-script-build`
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/khronos_api-d5d4d9e69fe37be9/build-script-build`
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/nix-abb618d4e549e253/build-script-build`
     Running `rustc --crate-name semver /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/semver-0.9.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="default"' -C metadata=f44c1739bb09819b -C extra-filename=-f44c1739bb09819b --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern semver_parser=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libsemver_parser-29e0db7194edeca5.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
   Compiling syn v0.15.44
   Compiling rayon-core v1.7.0
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/syn-6970467b9338dadd/build-script-build`
   Compiling owning_ref v0.4.1
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/rayon-core-5028e547801b2ab6/build-script-build`
   Compiling walkdir v2.3.1
     Running `rustc --crate-name owning_ref /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.4.1/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=680a4e3b149d0cb3 -C extra-filename=-680a4e3b149d0cb3 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern stable_deref_trait=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libstable_deref_trait-9d32a297a8d5cb72.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/proc-macro2-ea6be11d0feec0e2/build-script-build`
     Running `rustc --crate-name walkdir --edition=2018 /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/walkdir-2.3.1/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=f9f8c153eaca94d1 -C extra-filename=-f9f8c153eaca94d1 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern same_file=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libsame_file-a5d17aca75c021d9.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
   Compiling syn v1.0.17
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/syn-d5472e4f8fca193c/build-script-build`
       Fresh petgraph v0.4.13
   Compiling num-derive v0.2.5
   Compiling serde v1.0.106
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/serde-6cf2a6bf6b24192b/build-script-build`
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/num-derive-102142173b0e76cb/build-script-build`
       Fresh matrixmultiply v0.2.3
   Compiling inflate v0.4.5
   Compiling piston-viewport v0.5.0
     Running `rustc --crate-name viewport /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/piston-viewport-0.5.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=3593c6df73564e5e -C extra-filename=-3593c6df73564e5e --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern float=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libfloat-25067a98db9f3de7.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
       Fresh libc v0.2.69
     Running `rustc --crate-name inflate /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/inflate-0.4.5/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="default"' -C metadata=b767d6e1ef2b6cca -C extra-filename=-b767d6e1ef2b6cca --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern adler32=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libadler32-f0be7fc42b62f0a5.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
       Fresh libm v0.2.1
   Compiling gif v0.10.3
     Running `rustc --crate-name gif /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/gif-0.10.3/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="raii_no_panic"' -C metadata=86b2f05c788656eb -C extra-filename=-86b2f05c788656eb --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern color_quant=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libcolor_quant-bddca3167f05293c.rmeta --extern lzw=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/liblzw-136c93306fc01c9c.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
       Fresh maybe-uninit v2.0.0
   Compiling crossbeam-utils v0.7.2
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/crossbeam-utils-6c27d053ac4f08d9/build-script-build`
   Compiling memoffset v0.5.4
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/memoffset-d4341269b9aa6a20/build-script-build`
   Compiling crossbeam-epoch v0.8.2
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/crossbeam-epoch-08097af25b012e86/build-script-build`
   Compiling num-integer v0.1.42
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/num-integer-ff2f2c0ef5410e46/build-script-build`
   Compiling rand v0.6.5
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/rand-7e8ded26ae9dfc7e/build-script-build`
   Compiling num-bigint v0.2.6
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/num-bigint-4b5154248998a8d7/build-script-build`
   Compiling num-complex v0.2.4
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/num-complex-d09ae0d34be280c3/build-script-build`
       Fresh bitflags v1.2.1
       Fresh rand_hc v0.1.0
       Fresh rand_xorshift v0.1.1
       Fresh rand_isaac v0.1.1
   Compiling num-rational v0.2.4
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/num-rational-67d1b2436add8a52/build-script-build`
   Compiling num-iter v0.1.40
     Running `/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/num-iter-ae6730aa0adbf952/build-script-build`
     Running `rustc --crate-name log /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/log-0.4.8/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=dd0cc9f7ce37032a -C extra-filename=-dd0cc9f7ce37032a --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern cfg_if=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libcfg_if-7bfa6ddb9b2ff1d3.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float --cfg atomic_cas`
   Compiling typenum v1.12.0
     Running `rustc --crate-name typenum /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=f3ded0b1bdfad787 -C extra-filename=-f3ded0b1bdfad787 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
     Running `rustc --crate-name khronos_api /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/khronos_api-3.1.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=f81d311fe9aa2a2c -C extra-filename=-f81d311fe9aa2a2c --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
     Running `rustc --crate-name proc_macro2 /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-0.4.30/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="proc-macro"' -C metadata=83dd46554a579751 -C extra-filename=-83dd46554a579751 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern unicode_xid=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libunicode_xid-ff4fcdd9189ddc82.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float --cfg u128 --cfg use_proc_macro --cfg wrap_proc_macro --cfg proc_macro_span`
error[E0428]: the name `U128` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2112:5
     |
318  |     pub type U128 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ------------------------------------------------------------------------------------------------------ previous definition of the type `U128` here
...
2112 |     pub type U128 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `U128` redefined here
     |
     = note: `U128` must be defined only once in the type namespace of this module

error[E0428]: the name `P128` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2113:5
     |
319  |     pub type P128 = PInt<U128>; pub type N128 = NInt<U128>;
     |     --------------------------- previous definition of the type `P128` here
...
2113 |     pub type P128 = PInt<U128>; pub type N128 = NInt<U128>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `P128` redefined here
     |
     = note: `P128` must be defined only once in the type namespace of this module

error[E0428]: the name `N128` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2113:33
     |
319  |     pub type P128 = PInt<U128>; pub type N128 = NInt<U128>;
     |                                 --------------------------- previous definition of the type `N128` here
...
2113 |     pub type P128 = PInt<U128>; pub type N128 = NInt<U128>;
     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `N128` redefined here
     |
     = note: `N128` must be defined only once in the type namespace of this module

error[E0428]: the name `U256` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2114:5
     |
574  |     pub type U256 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ---------------------------------------------------------------------------------------------------------------- previous definition of the type `U256` here
...
2114 |     pub type U256 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `U256` redefined here
     |
     = note: `U256` must be defined only once in the type namespace of this module

error[E0428]: the name `P256` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2115:5
     |
575  |     pub type P256 = PInt<U256>; pub type N256 = NInt<U256>;
     |     --------------------------- previous definition of the type `P256` here
...
2115 |     pub type P256 = PInt<U256>; pub type N256 = NInt<U256>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `P256` redefined here
     |
     = note: `P256` must be defined only once in the type namespace of this module

error[E0428]: the name `N256` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2115:33
     |
575  |     pub type P256 = PInt<U256>; pub type N256 = NInt<U256>;
     |                                 --------------------------- previous definition of the type `N256` here
...
2115 |     pub type P256 = PInt<U256>; pub type N256 = NInt<U256>;
     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `N256` redefined here
     |
     = note: `N256` must be defined only once in the type namespace of this module

error[E0428]: the name `U512` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2116:5
     |
1086 |     pub type U512 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     -------------------------------------------------------------------------------------------------------------------------- previous definition of the type `U512` here
...
2116 |     pub type U512 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `U512` redefined here
     |
     = note: `U512` must be defined only once in the type namespace of this module

error[E0428]: the name `P512` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2117:5
     |
1087 |     pub type P512 = PInt<U512>; pub type N512 = NInt<U512>;
     |     --------------------------- previous definition of the type `P512` here
...
2117 |     pub type P512 = PInt<U512>; pub type N512 = NInt<U512>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `P512` redefined here
     |
     = note: `P512` must be defined only once in the type namespace of this module

error[E0428]: the name `N512` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2117:33
     |
1087 |     pub type P512 = PInt<U512>; pub type N512 = NInt<U512>;
     |                                 --------------------------- previous definition of the type `N512` here
...
2117 |     pub type P512 = PInt<U512>; pub type N512 = NInt<U512>;
     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `N512` redefined here
     |
     = note: `N512` must be defined only once in the type namespace of this module

error[E0428]: the name `U1024` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2118:5
     |
2110 |     pub type U1024 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ------------------------------------------------------------------------------------------------------------------------------------- previous definition of the type `U1024` here
...
2118 |     pub type U1024 = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `U1024` redefined here
     |
     = note: `U1024` must be defined only once in the type namespace of this module

error[E0428]: the name `P1024` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2119:5
     |
2111 |     pub type P1024 = PInt<U1024>; pub type N1024 = NInt<U1024>;
     |     ----------------------------- previous definition of the type `P1024` here
...
2119 |     pub type P1024 = PInt<U1024>; pub type N1024 = NInt<U1024>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `P1024` redefined here
     |
     = note: `P1024` must be defined only once in the type namespace of this module

error[E0428]: the name `N1024` is defined multiple times
    --> /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/build/typenum-fc8ea52f0881830a/out/consts.rs:2119:35
     |
2111 |     pub type P1024 = PInt<U1024>; pub type N1024 = NInt<U1024>;
     |                                   ----------------------------- previous definition of the type `N1024` here
...
2119 |     pub type P1024 = PInt<U1024>; pub type N1024 = NInt<U1024>;
     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `N1024` redefined here
     |
     = note: `N1024` must be defined only once in the type namespace of this module

   Compiling daggy v0.5.0
     Running `rustc --crate-name daggy /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/daggy-0.5.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=af9d6684a0ded5bb -C extra-filename=-af9d6684a0ded5bb --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --extern petgraph=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps/libpetgraph-2824e7579974c79f.rmeta --cap-lints allow -C target-feature=-mmx,-sse,+soft-float`
LLVM ERROR: Do not know how to split this operator's operand!

error: could not compile `xdg`.

Caused by:
  process didn't exit successfully: `rustc --crate-name xdg /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/xdg-2.2.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=810f71efbdcfd8aa -C extra-filename=-810f71efbdcfd8aa --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float` (exit code: 101)
warning: build failed, waiting for other jobs to finish...
LLVM ERROR: Do not know how to split this operator's operand!

error: could not compile `cc`.

Caused by:
  process didn't exit successfully: `rustc --crate-name cc --edition=2018 /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/cc-1.0.50/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=ffee7cd6e6b273ca -C extra-filename=-ffee7cd6e6b273ca --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float` (exit code: 101)
warning: build failed, waiting for other jobs to finish...
error: aborting due to 12 previous errors

For more information about this error, try `rustc --explain E0428`.
error: could not compile `typenum`.

Caused by:
  process didn't exit successfully: `rustc --crate-name typenum /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/typenum-1.12.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=f3ded0b1bdfad787 -C extra-filename=-f3ded0b1bdfad787 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
LLVM ERROR: Do not know how to split this operator's operand!

error: could not compile `pkg-config`.

Caused by:
  process didn't exit successfully: `rustc --crate-name pkg_config /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/pkg-config-0.3.17/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=cd3aef99d90be049 -C extra-filename=-cd3aef99d90be049 --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float` (exit code: 101)
warning: build failed, waiting for other jobs to finish...
LLVM ERROR: Do not know how to split this operator's operand!

error: could not compile `xml-rs`.

Caused by:
  process didn't exit successfully: `rustc --crate-name xml /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/xml-rs-0.8.2/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=a36f7ca3370075bd -C extra-filename=-a36f7ca3370075bd --out-dir /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps -L dependency=/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps --cap-lints allow -C target-feature=-mmx,-sse,+soft-float` (exit code: 101)
warning: build failed, waiting for other jobs to finish...
error: build failed

My platform is an x86_64 running on arch linux. I tried with lasted rust stable and nightly. I think I maybe have to static link the libc with soft-float or change some dependencies? I can't find much information on the issue so any help will be really appreciated. Even to know if it is possible to compile a program with soft-float on x86_64 (I guess it is cause there is some mentions on the net about people programing OS with rust and soft-float enabled, itis where I found this target feature "-mmx,-sse,+soft-float" parameter).

Thank you in advance.

I don't see the gain in doing that.
You are throwing away multiple orders of magnitude of performance for maybe a few least-significant-bits.
(EDIT: Unless you are working with chaotic systems… )

About the error: Looks like a bug in typenum. You might want to file an issue there.

Floating point arithmetic defined in IEEE754 is precise and deterministic. It's only inaccurate as we're representing infinite range of real numbers within fixed bit state.

You are throwing away multiple orders of magnitude of performance for maybe a few least-significant-bits.

I'm testing with a lock-step networking model, so I need until the least-significant-bits to be the same on different simulations. And I don't have the time nor the resources to program the hole physics engine by myself.

About the error: Looks like a bug in typenum. You might want to file an issue there.

I will try that, thanks! So I understand that what I'm trying of using soft-float on x86_64 is something feasible, right?

Floating point arithmetic defined in IEEE754 is precise and deterministic. It's only inaccurate as we're representing infinite range of real numbers within fixed bit state.

I didn't program myself the physics library, so I want to be sure I don't have problems related to this.

Any more suggestions and ideas are welcome!

This is not a bug of typenum. typenum uses floating point number operations in the build script here typenum/main.rs at main · paholg/typenum · GitHub but it breaks when built with soft-float. I could reproduce it with a minimal code:

fn main() {
    let highest: u64 = 1024;
    let first2: u32 = (highest as f64).log(2.0).round() as u32 + 1;
    println!("first2 = {:?}", first2);
}

Most likely (not confirmed yet), the issue is the standard library std is precompiled with the ABI with SSE/hardfloat but you are linking it with an incompatible ABI. You need to recompile std.

There is an experimental support of building std in Nightly cargo https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#build-std. Or you can use cross https://github.com/rust-embedded/cross.

2 Likes

I think I advance, but still have errors. I tried the expiremental support of building std that you link and I get another error. Now it seems that it compiles but has problems linking.

The error output:

   Compiling example_nphysics_testbed_3d v0.1.0 (/mnt/Arxius/Documents/example_nphysics_testbed_3d)
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/junky/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.135tcwmt0o3c8yps.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.13uxawb10o9e0767.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.176wtqsj4nxm6hnw.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.18fzokjudz0pa7pb.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.18za6lz4chw2gclj.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1973pdgh8vz0qwuv.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.198ef6cgsfxoar7s.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1brejm7oo77gtpxs.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1enigkxijli7h4s0.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1hy8q6tw5743kuxb.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1i3tjuh95lkvjvlr.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1ilxrs8j37ieaamv.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1krvinfk0fkfuvtx.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1m0mc0o4vgz8ocv5.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1rrkqae9c1pooslx.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1tu6dphtc42f0jq0.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1ug75ij70cgd70um.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1uvptr3enl51n4eu.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1v1ty9mye6fbu3oo.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1wf1lqjl990m5lnz.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1wnc4tcyydu36gf9.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1ws6233qfpkd9jq4.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1yzaynsw7j3f856l.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.1zf7yzgjn19vm8h9.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.24nhtuwbhf77ivy.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.28b5ortqf5f85vnz.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2a1qkm5232y3bv8p.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2adz7awmrog3egng.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2d0gkeibv1qb8q0d.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2i7ltt3vpavi75du.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2inv880t2siysoq5.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2km3zvgxy9di6lwx.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2mf7qf3p2kls661e.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2o1uz013im68rpuh.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2wtdt3o0bj53r3a7.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.2yb65wg8j37sx2w2.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.3019ojo6pg8avzf5.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.32g56z6ooql3yv5k.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.32hzpzm3hkqvc9e7.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.39w7wri6jd95fy9n.rcgu.o" "/mnt/Arxiu/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.nnh32rate0zb1zg.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.pe3xoqc3wtn962i.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.qk3k551c5t7ivxe.rcgu.o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.s8wjtiirk8x5blc.rcgu.o" "-o" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/example_nphysics_testbed_3d-12e9785ed088b5f7.17zt1uvtuhzrkyfz.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps" "-L" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/debug/deps" "-L" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/build/backtrace-sys-29579db1a84069d9/out" "-L" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/build/libloading-ae7d3f9f34306454/out" "-L" "/home/junky/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnphysics_testbed3d-610df397d45bf054.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libkiss3d-98cee035872bde42.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libkiss3d_conrod-13c9020f12dca859.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libinput-fa9b4bae2d0496f7.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libviewport-661c59ecdc91b001.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libfloat-783589d97fe54066.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum-dc3a6f8159b54df7.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libfnv-4e3fed873da598b2.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libdaggy-ba2db66234ff2f95.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libinstant-6c18ecf5d3866b3f.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libglutin-45796d1b16eec11b.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libosmesa_sys-4c11e14bdfc820aa.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libwinit-2000b93ff3721c72.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libsmithay_client_toolkit-2d2a22f883bdb1b5.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libwayland_protocols-0974580dbc4b33e9.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libwayland_client-75f132a99bc438d5.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libwayland_commons-9b061f24222ff06e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libwayland_sys-4e6acc6f227ad8d7.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnix-0726af6212682488.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libvoid-0a61bbcd0881a1b1.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libmemmap-2ec398af7a969cf4.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libandrew-ae4bc4f68f02c8db.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libxml-b549d18bf4fcaaa7.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libxdg-e5b009b848413314.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libwalkdir-a213e31412afcd7f.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libsame_file-af8ed79f182aa88f.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libline_drawing-a5abff27e4a3dff5.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libdlib-eb1f7260f8bea038.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblibloading-dcf8c8736482b56e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libpercent_encoding-3308cc98895a0c05.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libparking_lot-3d6383c2b57f1db0.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libparking_lot_core-093848f525c5fbec.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblock_api-a978ca12b52d1311.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libowning_ref-3efa565c3721ecaf.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libstable_deref_trait-c786d983fff18a4c.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libscopeguard-82000c0b3ecc729e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libx11_dl-63982c1765c22a43.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblog-3e2e973cd9a2396b.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libshared_library-7d73db807bb3e197.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libgl-3fd5579da9dd45db.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libserde-8f40a3d71543224d.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libimage-730e4ebbc8438d87.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libtiff-90027343d7dcbf53.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libpng-73978a99f98d7823.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libdeflate-ecc5a4a5ced11f7c.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libinflate-37b5a4080db18f3a.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libadler32-3b8f752067751532.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libjpeg_decoder-509a0e77ec6c3f85.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librayon-04b4f4f76a90935a.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librayon_core-3eb0c9d2a5f073d5.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcrossbeam_queue-24afd0ae8a4ebc01.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libgif-ebf12d7500f3e006.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcolor_quant-da03981773a13689.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libscoped_threadpool-61692892171bc662.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_iter-770bf007a09431b1.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblzw-01aea6be3cbb442f.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librusttype-5ff89561cbbd5e67.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librusttype-38529444940fbc57.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_cpus-31a7d726d4aebdf9.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libstb_truetype-3d7a248f01760853.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libbyteorder-d25f05ca811d3842.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcrossbeam_deque-7247d1b9716c0ba4.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcrossbeam_epoch-79fb0a38f3208ee1.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libscopeguard-225f6d3ce46b2789.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libmemoffset-bc069e3f5275d90e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcrossbeam_utils-1a5a9769eb8317e9.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblazy_static-7dc927f71b6bac78.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librustc_hash-c4324e6b3810abee.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblinked_hash_map-9df7dc16229a8e15.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libordered_float-685700b02c82ed05.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnphysics3d-b390cfc8e9f57b3d.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libgenerational_arena-8fb224858913c4a2.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcfg_if-2dee26168338c09c.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libtime-c1779cbe85f5ac11.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libncollide3d-df06b7f37b762a3e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libpetgraph-60ef32049e0e7a90.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libordermap-f015bdeb94451f95.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libfixedbitset-38e8d030a573243c.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libslotmap-44e2ebbc2f09a448.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libsmallvec-8fd20199fab6a699.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libmaybe_uninit-ee0e53271272a2e8.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libslab-a72bcd7fa0d9087c.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libeither-bd0a36c9608f483b.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libbitflags-5df7a8b369eecf33.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libdowncast_rs-760cfd0917115377.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnalgebra-103b52761a6ce538.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libalga-402e51c79ccf07d9.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand-e88726310ec33d48.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_xorshift-e81b07e86d65e1df.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_pcg-9247841ae8400f74.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_hc-701f766a447f9864.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_chacha-617ba3eda5261476.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_isaac-2dd6e89feed1431e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_core-dee2f60868636c9a.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_os-1e17fac877fa3356.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblibc-d6aa965566c13561.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_jitter-64209bcdc654f55e.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librand_core-5d24d80062a95dce.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_rational-fba472755e0f6b7b.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_bigint-a7cc4ddd4310b612.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_integer-18a2603cdf840f05.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_complex-11c462612cc8ec3d.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libmatrixmultiply-ed3618d09c4f0625.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librawpointer-22b4cfa3830040e9.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libgeneric_array-a2a5d60b5fb88323.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libtypenum-cafa8c36a381fe35.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libapprox-b73ec1bb541131d0.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnum_traits-61910304fc852362.rlib" "-Wl,--start-group" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libstd-de7de11e54c81d97.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libpanic_unwind-32b58c64d0b041e2.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libhashbrown-125f3c6ccb0723a9.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librustc_std_workspace_alloc-fc2a051db3c923ee.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libbacktrace-a62294ac77adc0a4.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libbacktrace_sys-b39cbcd14999cc4b.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librustc_demangle-314de1dcaf71b0fb.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libunwind-9c419d905334ae69.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcfg_if-65c8677a1e5a93da.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liblibc-11084ad56af75d39.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/liballoc-ba560f7a88ecbcbf.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/librustc_std_workspace_core-8f5f6bddc2116b03.rlib" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcore-4d5c010106295c4a.rlib" "-Wl,--end-group" "/mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libcompiler_builtins-f5d73076ad8451b8.rlib" "-Wl,-Bdynamic" "-ldl" "-ldl" "-lutil" "-ldl" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-ldl" "-lutil"
  = note: /usr/bin/ld: /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnphysics_testbed3d-610df397d45bf054.rlib(nphysics_testbed3d-610df397d45bf054.nphysics_testbed3d.4nij4xcl-cgu.3.rcgu.o): in function `<kiss3d_conrod::widget::slider::Slider<T> as kiss3d_conrod::widget::Widget>::update':
          /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d_conrod-0.63.0/src/widget/slider.rs:151: undefined reference to `__truncdfsf2'
          /usr/bin/ld: /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d_conrod-0.63.0/src/widget/slider.rs:159: undefined reference to `__truncdfsf2'
          /usr/bin/ld: /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libnphysics_testbed3d-610df397d45bf054.rlib(nphysics_testbed3d-610df397d45bf054.nphysics_testbed3d.4nij4xcl-cgu.8.rcgu.o): in function `nphysics_testbed3d::testbed::Testbed::handle_special_event':
          /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/nphysics_testbed3d-0.6.0/src_testbed/testbed.rs:(.text._ZN18nphysics_testbed3d7testbed7Testbed20handle_special_event17he73056acdd008aefE+0x235c): undefined reference to `__truncdfsf2'
          /usr/bin/ld: /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/nphysics_testbed3d-0.6.0/src_testbed/testbed.rs:(.text._ZN18nphysics_testbed3d7testbed7Testbed20handle_special_event17he73056acdd008aefE+0x239c): undefined reference to `__truncdfsf2'
          /usr/bin/ld: /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libkiss3d-98cee035872bde42.rlib(kiss3d-98cee035872bde42.kiss3d.3gxapb9c-cgu.13.rcgu.o): in function `kiss3d::window::window::Window::render_single_frame':
          /home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.21.0/src/window/window.rs:(.text._ZN6kiss3d6window6window6Window19render_single_frame17h0a42888b18a07c27E+0x6e9): undefined reference to `__truncdfsf2'
          /usr/bin/ld: /mnt/Arxius/Documents/example_nphysics_testbed_3d/target/x86_64-unknown-linux-gnu/debug/deps/libkiss3d-98cee035872bde42.rlib(kiss3d-98cee035872bde42.kiss3d.3gxapb9c-cgu.14.rcgu.o):/home/junky/.cargo/registry/src/github.com-1ecc6299db9ec823/kiss3d-0.21.0/src/camera/arc_ball.rs:346: more undefined references to `__truncdfsf2' follow
          collect2: error: ld returned 1 exit status
          

error: aborting due to previous error

error: could not compile `example_nphysics_testbed_3d`.

To learn more, run the command again with --verbose.

I will try the cross compilation option and see If I can.

I read the error message as that the required function __truncdfsf2 (which is probably implementing floating point truncation function) is not available.

Perhaps it means the function is not implemented in a soft-float target but I don't have much knowledge of such environment and I have no idea how it can be solved.

My advice is unless you really need soft-float, avoid using it.

FYI AFAIK Rust guarantees the exact IEEE754 semantics of floating-point numbers by default, unlike C or C++. Thus probably you can use the default setting and enjoy determinism see edit 2.

Edit: related issues

Edit 2: I forgot it but IEEE754 only guarantee exactness only for +-*/ + sqrt. Thus, if you use special functions that are a source of nondeterminism (I don't know whether the implementation actually has different behavior depending on platforms).

You could also try hashing the state and see if you actually get different results.
I don't think throwing that much performance away in a simulation is a good idea.

If it is not, it is a bug. (Unless it is a SIMD crate)

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.