Skip to content

Rust compiler generates unaligned code, crashes sparc64-linux #53181

Closed
@glaubitz

Description

@glaubitz

With version 1.28, rust no longer builds on sparc64-linux and fails at stage1:

     Running `/home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/sparc64-unknown-linux-gnu/stage1-std/release/build/std-0b6c63ac16a949d9/build-script-build`
     Running `/home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/sparc64-unknown-linux-gnu/stage1-std/release/build/compiler_builtins-b9409c16a4089d6c/build-script-build`
error: Could not compile `core`.

Caused by:
  failed to parse process output: `/home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/bootstrap/debug/rustc --crate-name core libcore/lib.rs --error-format json --crate-type lib --emit=dep-info,link -C opt-level=2 -C metadata=b361570c84d1b2c9 -C extra-filename=-b361570c84d1b2c9 --out-dir /home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/sparc64-unknown-linux-gnu/stage1-std/sparc64-unknown-linux-gnu/release/deps --target sparc64-unknown-linux-gnu -L dependency=/home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/sparc64-unknown-linux-gnu/stage1-std/sparc64-unknown-linux-gnu/release/deps -L dependency=/home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/sparc64-unknown-linux-gnu/stage1-std/release/deps -C link-args=-Wl,-z,relro --remap-path-prefix=/home/glaubitz/rustc/rustc-1.28.0+dfsg1=/usr/src/rustc-1.28.0` (exit code: 0)

Caused by:
  compiler stdout is not empty: `Did not run successfully: Ok(ExitStatus(ExitStatus(10)))`
command did not execute successfully: "/usr/bin/cargo" "build" "--target" "sparc64-unknown-linux-gnu" "-j" "32" "-v" "--release" "--features" "panic-unwind backtrace" "--manifest-path" "/home/glaubitz/rustc/rustc-1.28.0+dfsg1/src/libstd/Cargo.toml" "--message-format" "json"
expected success, got: exit code: 101
thread 'main' panicked at 'cargo must succeed', bootstrap/compile.rs:1091:9
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::begin_panic
             at libstd/panicking.rs:397
   6: bootstrap::compile::run_cargo
             at bootstrap/compile.rs:1091
   7: <bootstrap::compile::Std as bootstrap::builder::Step>::run
             at bootstrap/compile.rs:109
   8: bootstrap::builder::Builder::ensure
             at bootstrap/builder.rs:1107
   9: <bootstrap::compile::Test as bootstrap::builder::Step>::run
             at bootstrap/compile.rs:354
  10: bootstrap::builder::Builder::ensure
             at bootstrap/builder.rs:1107
  11: <bootstrap::compile::Rustc as bootstrap::builder::Step>::run
             at bootstrap/compile.rs:470
  12: bootstrap::builder::Builder::ensure
             at bootstrap/builder.rs:1107
  13: <bootstrap::compile::Assemble as bootstrap::builder::Step>::run
             at bootstrap/compile.rs:929
  14: bootstrap::builder::Builder::ensure
             at bootstrap/builder.rs:1107
  15: bootstrap::builder::Builder::compiler
             at bootstrap/builder.rs:570
  16: <bootstrap::compile::Std as bootstrap::builder::Step>::make_run
             at bootstrap/compile.rs:57
  17: bootstrap::builder::StepDescription::maybe_run
             at bootstrap/builder.rs:191
  18: bootstrap::builder::StepDescription::run
             at bootstrap/builder.rs:215
  19: bootstrap::builder::Builder::run_step_descriptions
             at bootstrap/builder.rs:562
  20: bootstrap::builder::Builder::execute_cli
             at bootstrap/builder.rs:552
  21: bootstrap::Build::build
             at bootstrap/lib.rs:450
  22: bootstrap::main
             at bootstrap/bin/main.rs:29
  23: std::rt::lang_start::{{closure}}
             at libstd/rt.rs:74
Traceback (most recent call last):
  File "./x.py", line 20, in <module>
    bootstrap.main()
  File "/home/glaubitz/rustc/rustc-1.28.0+dfsg1/src/bootstrap/bootstrap.py", line 826, in main
    bootstrap(help_triggered)
  File "/home/glaubitz/rustc/rustc-1.28.0+dfsg1/src/bootstrap/bootstrap.py", line 817, in bootstrap
    run(args, env=env, verbose=build.verbose)
  File "/home/glaubitz/rustc/rustc-1.28.0+dfsg1/src/bootstrap/bootstrap.py", line 149, in run
    raise RuntimeError(err)
RuntimeError: failed to run: /home/glaubitz/rustc/rustc-1.28.0+dfsg1/build/bootstrap/debug/bootstrap build --config debian/config.toml -vv --on-fail env
make[1]: *** [debian/rules:196: override_dh_auto_build-arch] Error 1
make[1]: Leaving directory '/home/glaubitz/rustc/rustc-1.28.0+dfsg1'

From the backtrace, it's not clear to me what the actual problem is. stage0 compiler is rust 1.27, cargo is 0.28. Both installed through Debian.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.O-SPARCTarget: SPARC processorsP-mediumMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions