tonistiigi / xx

Dockerfile cross-compilation helpers
MIT License
338 stars 29 forks source link

rust: R_386_GOTOFF from .debug_info is not allowed on 386 #118

Open crazy-max opened 11 months ago

crazy-max commented 11 months ago

LLVM 11 has a bug where R_386_GOTOFF from .debug_info is not allowed on 386: https://github.com/tonistiigi/xx/actions/runs/5560116409/jobs/10156856888#step:5:576

Since rust 0.71 is built with a recent LLVM version it breaks builds against this arch on alpine < 3.15.

#76 54.85 not ok 8 386-hellocargo-rustup
#76 54.86 # (from function `assert_success' in file bats-assert/src/assert.bash, line 114,
#76 54.86 #  from function `testHelloCargo' in file test-cargo.bats, line 32,
#76 54.86 #  from function `testHelloCargoRustup' in file test-cargo.bats, line 44,
#76 54.86 #  in test file test-cargo.bats, line 87)
#76 54.87 #   `testHelloCargoRustup' failed with status 101
#76 54.87 # 
#76 54.87 # -- command failed --
#76 54.87 # status : 101
#76 54.87 # output (14 lines):
#76 54.87 #      Compiling hello_cargo v0.1.0 (/work/fixtures/hello_cargo)
#76 54.87 #        Running `/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/rustc --crate-name hello_cargo --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C metadata=230df35ad35baa6c -C extra-filename=-230df35ad35baa6c --out-dir /tmp/cargobuild/i686-unknown-linux-musl/release/deps --target i686-unknown-linux-musl -C linker=i686-unknown-linux-musl-clang -L dependency=/tmp/cargobuild/i686-unknown-linux-musl/release/deps -L dependency=/tmp/cargobuild/release/deps`
#76 54.87 #   error: linking with `i686-unknown-linux-musl-clang` failed: exit status: 1
#76 54.87 #     |
#76 54.87 #     = note: LC_ALL="C" PATH="/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/bin:/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/bin/self-contained:/root/.cargo/bin:/usr/libexec/bats-core:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "i686-unknown-linux-musl-clang" "-m32" "-Wl,-melf_i386" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/self-contained/crt1.o" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/self-contained/crti.o" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/self-contained/crtbegin.o" "/tmp/rustcxJorGn/symbols.o" "/tmp/cargobuild/i686-unknown-linux-musl/release/deps/hello_cargo-230df35ad35baa6c.hello_cargo.8d4e6134ee88f73-cgu.0.rcgu.o" "/tmp/cargobuild/i686-unknown-linux-musl/release/deps/hello_cargo-230df35ad35baa6c.hello_cargo.8d4e6134ee88f73-cgu.1.rcgu.o" "/tmp/cargobuild/i686-unknown-linux-musl/release/deps/hello_cargo-230df35ad35baa6c.hello_cargo.8d4e6134ee88f73-cgu.2.rcgu.o" "/tmp/cargobuild/i686-unknown-linux-musl/release/deps/hello_cargo-230df35ad35baa6c.4vskoqs6e3bv2gnv.rcgu.o" "-Wl,--as-needed" "-L" "/tmp/cargobuild/i686-unknown-linux-musl/release/deps" "-L" "/tmp/cargobuild/release/deps" "-L" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib" "-Wl,-Bstatic" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libstd-fb87fbc060d06088.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libpanic_unwind-4354d42e5963762c.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libobject-c7139001c4acf852.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libmemchr-93385eb84f8c5fa3.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libaddr2line-d5d2d33006904f69.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libgimli-ad40e51f82477f0a.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/librustc_demangle-fee680a35f2a42ec.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libstd_detect-5589b1f24d4d3e42.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libhashbrown-63ee7d338cd91f2d.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/librustc_std_workspace_alloc-62db1e67656915b2.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libminiz_oxide-872e2e2e4f97de3c.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libadler-b039ba26522f50e6.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libunwind-0e3e8403e8500965.rlib" "-lunwind" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libcfg_if-b842a1f1f1aa3817.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/liblibc-0ecfd7f7689347d7.rlib" "-lc" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/liballoc-c059b61390c928ff.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/librustc_std_workspace_core-19c0d6407350609a.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libcore-1d528772f6c41771.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/libcompiler_builtins-9b2f3c7d23791871.rlib" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-nostartfiles" "-L" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib" "-L" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/self-contained" "-o" "/tmp/cargobuild/i686-unknown-linux-musl/release/deps/hello_cargo-230df35ad35baa6c" "-Wl,--gc-sections" "-static" "-no-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/self-contained/crtend.o" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/lib/rustlib/i686-unknown-linux-musl/lib/self-contained/crtn.o"
#76 54.87 #     = note: clang-10: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
#76 54.87 #             ld.lld: error: malloc.c:(.debug_info+0x96795): has non-ABS relocation R_386_GOTOFF against symbol '__malloc_context'
#76 54.87 #             clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
#76 54.87 #             
#76 54.87 #   
#76 54.87 #   error: could not compile `hello_cargo` (bin "hello_cargo") due to previous error
#76 54.87 #   
#76 54.87 #   Caused by:
#76 54.87 #     process didn't exit successfully: `/root/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/rustc --crate-name hello_cargo --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C metadata=230df35ad35baa6c -C extra-filename=-230df35ad35baa6c --out-dir /tmp/cargobuild/i686-unknown-linux-musl/release/deps --target i686-unknown-linux-musl -C linker=i686-unknown-linux-musl-clang -L dependency=/tmp/cargobuild/i686-unknown-linux-musl/release/deps -L dependency=/tmp/cargobuild/release/deps` (exit status: 1)

Don't think there will be any patch for old versions of alpine though.

See also https://reviews.llvm.org/D95994