Skip to content

Internal compiler error while building for bare metal target x86_64-unknown-none #128956

Closed
@rupakhetibinit

Description

@rupakhetibinit

Code

#![no_main] // disable all Rust-level entry points
#![no_std]

use core::panic::PanicInfo;

pub struct BootLoader {}

const ALIGN: u32 = 1 << 0;
const MEMINFO: u32 = 1 << 1;
const MB1_MAGIC: u32 = 0x1BADB002;
const FLAGS: u32 = ALIGN | MEMINFO;

#[repr(C)]
#[derive(Clone, Copy)]
struct MultibootHeader {
    magic: u32,
    flags: u32,
    checksum: u32,
}

#[link_section = ".multiboot"]
#[no_mangle]
static MULTIBOOT: MultibootHeader = MultibootHeader {
    magic: MB1_MAGIC,
    flags: FLAGS,
    checksum: (-(MB1_MAGIC as i64 + FLAGS as i64) & 0xFFFFFFFF) as u32,
};

#[no_mangle] // don't mangle the name of this function
pub extern "C" fn _start() -> ! {
    // this function is the entry point, since the linker looks for a function
    // named `_start` by default

    loop {}
}

/// This function is called on panic.
#[no_mangle]
#[panic_handler]
fn panic(_info: &PanicInfo) -> ! {
    loop {}
}

Meta

rustc --version --verbose:

rustc 1.82.0-nightly (730d5d409 2024-08-10)
binary: rustc
commit-hash: 730d5d4095a264ef5f7c0a0781eea68c15431d45
commit-date: 2024-08-10
host: x86_64-pc-windows-gnu
release: 1.82.0-nightly
LLVM version: 19.1.0

Error output

error: internal compiler error: compiler\rustc_codegen_llvm\src\context.rs:1138:21: `fn_abi_of_instance(__ltsf2::__ltsf2, [])` failed: AdjustForForeignAbi(Unsupported { arch: "x86_64-unknown-none", abi: C { unwind: false } })
   --> C:\Users\user\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\compiler_builtins-0.1.118\src\macros.rs:471:35
    |
471 |               $(unsafe $($empty)?)? extern $abi fn $name( $($argname: $ty),* ) $(-> $ret)? {
    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
   ::: C:\Users\user\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\compiler_builtins-0.1.118\src\float\cmp.rs:101:1
    |
101 | / intrinsics! {
102 | |     #[avr_skip]
103 | |     pub extern "C" fn __lesf2(a: f32, b: f32) -> i32 {
104 | |         cmp(a, b).to_le_abi()
...   |
172 | |     }
173 | | }
    | |_- in this macro invocation
    |
    = note: this error: internal compiler error originates in the macro `intrinsics` (in Nightly builds, run with -Z macro-backtrace for more info)

thread 'rustc' panicked at compiler\rustc_codegen_llvm\src\context.rs:1138:21:
Box<dyn Any>
stack backtrace:
   0:     0x7fffe0c051b0 - std::backtrace_rs::backtrace::dbghelp64::trace::h0891390128512157
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/std\src\..\..\backtrace\src\backtrace/dbghelp64.rs:91:5
   1:     0x7fffe0c051b0 - std::backtrace_rs::backtrace::trace_unsynchronized::hd55d9264ef67a50a
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/std\src\..\..\backtrace\src\backtrace/mod.rs:66:5
   2:     0x7fffe0c051b0 - std::backtrace::Backtrace::create::h998072490b6ecdaa
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/std\src/backtrace.rs:331:13
   3:     0x7fffe0c0510a - std::backtrace::Backtrace::force_capture::ha4187a9d3155ae9a
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/std\src/backtrace.rs:312:9
   4:     0x7fffb1e9942e - <alloc[634035f5148dadfe]::boxed::Box<rustc_driver_impl[26ca7f734f0e7e1d]::install_ice_hook::{closure#0}> as core[65543c08ff064a40]::ops::function::Fn<(&dyn for<'a, 'b> core[65543c08ff064a40]::ops::function::Fn<(&'a std[cc5a7edb46e5d43d]::panic::PanicHookInfo<'b>,), Output = ()> + core[65543c08ff064a40]::marker::Send + core[65543c08ff064a40]::marker::Sync, &std[cc5a7edb46e5d43d]::panic::PanicHookInfo)>>::call
   5:     0x7fffe0c1e5ad - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h06bf90988e8e1a97
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/alloc\src/boxed.rs:2164:9
   6:     0x7fffe0c1e5ad - std::panicking::rust_panic_with_hook::h219892aeb93a6f25
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/std\src/panicking.rs:805:13
   7:     0x7fffb51f5dd5 - std[cc5a7edb46e5d43d]::panicking::begin_panic::<rustc_errors[c40ea251d739b5ae]::ExplicitBug>::{closure#0}
   8:     0x7fffb51f59c9 - std[cc5a7edb46e5d43d]::sys::backtrace::__rust_end_short_backtrace::<std[cc5a7edb46e5d43d]::panicking::begin_panic<rustc_errors[c40ea251d739b5ae]::ExplicitBug>::{closure#0}, !>
   9:     0x7fffb51b6d09 - std[cc5a7edb46e5d43d]::panicking::begin_panic::<rustc_errors[c40ea251d739b5ae]::ExplicitBug>
  10:     0x7fffb51e9b65 - <rustc_errors[c40ea251d739b5ae]::diagnostic::BugAbort as rustc_errors[c40ea251d739b5ae]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  11:     0x7fffb22e276f - <rustc_errors[c40ea251d739b5ae]::DiagCtxtHandle>::span_bug::<rustc_span[b016b44763db93a8]::span_encoding::Span, alloc[634035f5148dadfe]::string::String>
  12:     0x7fffb22e9dde - rustc_middle[c67740f5c5f02f0c]::util::bug::opt_span_bug_fmt::<rustc_span[b016b44763db93a8]::span_encoding::Span>::{closure#0}
  13:     0x7fffb22e9e2f - rustc_middle[c67740f5c5f02f0c]::ty::context::tls::with_opt::<rustc_middle[c67740f5c5f02f0c]::util::bug::opt_span_bug_fmt<rustc_span[b016b44763db93a8]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  14:     0x7fffb22e6db6 - rustc_middle[c67740f5c5f02f0c]::ty::context::tls::with_context_opt::<rustc_middle[c67740f5c5f02f0c]::ty::context::tls::with_opt<rustc_middle[c67740f5c5f02f0c]::util::bug::opt_span_bug_fmt<rustc_span[b016b44763db93a8]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  15:     0x7fffb22e61fd - rustc_middle[c67740f5c5f02f0c]::util::bug::span_bug_fmt::<rustc_span[b016b44763db93a8]::span_encoding::Span>
  16:     0x7fffb2325382 - <rustc_codegen_llvm[42bfc7aca3b3212e]::context::CodegenCx as rustc_middle[c67740f5c5f02f0c]::ty::layout::FnAbiOfHelpers>::handle_fn_abi_err
  17:     0x7fffb2325079 - <rustc_codegen_llvm[42bfc7aca3b3212e]::builder::Builder as rustc_middle[c67740f5c5f02f0c]::ty::layout::FnAbiOfHelpers>::handle_fn_abi_err
  18:     0x7fffb230ee82 - <rustc_codegen_llvm[42bfc7aca3b3212e]::builder::Builder as rustc_middle[c67740f5c5f02f0c]::ty::layout::FnAbiOf>::fn_abi_of_instance::{closure#0}
  19:     0x7fffb231bf9e - <rustc_codegen_ssa[f64aba77bf7afde8]::mir::FunctionCx<rustc_codegen_llvm[42bfc7aca3b3212e]::builder::Builder>>::codegen_terminator
  20:     0x7fffb230c001 - rustc_codegen_ssa[f64aba77bf7afde8]::mir::codegen_mir::<rustc_codegen_llvm[42bfc7aca3b3212e]::builder::Builder>
  21:     0x7fffb234f961 - rustc_codegen_ssa[f64aba77bf7afde8]::base::codegen_instance::<rustc_codegen_llvm[42bfc7aca3b3212e]::builder::Builder>
  22:     0x7fffb225f143 - <rustc_middle[c67740f5c5f02f0c]::mir::mono::MonoItem as rustc_codegen_ssa[f64aba77bf7afde8]::mono_item::MonoItemExt>::define::<rustc_codegen_llvm[42bfc7aca3b3212e]::builder::Builder>
  23:     0x7fffb2347bc7 - rustc_codegen_llvm[42bfc7aca3b3212e]::base::compile_codegen_unit::module_codegen
  24:     0x7fffb23470b0 - rustc_codegen_llvm[42bfc7aca3b3212e]::base::compile_codegen_unit
  25:     0x7fffb234ea12 - rustc_codegen_ssa[f64aba77bf7afde8]::base::codegen_crate::<rustc_codegen_llvm[42bfc7aca3b3212e]::LlvmCodegenBackend>
  26:     0x7fffb22df4ba - <rustc_codegen_llvm[42bfc7aca3b3212e]::LlvmCodegenBackend as rustc_codegen_ssa[f64aba77bf7afde8]::traits::backend::CodegenBackend>::codegen_crate
  27:     0x7fffb208b342 - <rustc_session[4c0d15dacd878bfb]::session::Session>::time::<alloc[634035f5148dadfe]::boxed::Box<dyn core[65543c08ff064a40]::any::Any>, rustc_interface[773e200dce750870]::passes::start_codegen::{closure#0}>
  28:     0x7fffb2147a82 - rustc_interface[773e200dce750870]::passes::start_codegen
  29:     0x7fffb20b599c - <rustc_interface[773e200dce750870]::queries::Linker>::codegen_and_build_linker
  30:     0x7fffb1e31eb3 - <rustc_middle[c67740f5c5f02f0c]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[26ca7f734f0e7e1d]::run_compiler::{closure#0}::{closure#1}::{closure#6}, core[65543c08ff064a40]::result::Result<core[65543c08ff064a40]::option::Option<rustc_interface[773e200dce750870]::queries::Linker>, rustc_span[b016b44763db93a8]::ErrorGuaranteed>>
  31:     0x7fffb1ebe3c9 - <rustc_interface[773e200dce750870]::queries::QueryResult<&rustc_middle[c67740f5c5f02f0c]::ty::context::GlobalCtxt>>::enter::<core[65543c08ff064a40]::result::Result<core[65543c08ff064a40]::option::Option<rustc_interface[773e200dce750870]::queries::Linker>, rustc_span[b016b44763db93a8]::ErrorGuaranteed>, rustc_driver_impl[26ca7f734f0e7e1d]::run_compiler::{closure#0}::{closure#1}::{closure#6}>
  32:     0x7fffb1e3c056 - <rustc_interface[773e200dce750870]::interface::Compiler>::enter::<rustc_driver_impl[26ca7f734f0e7e1d]::run_compiler::{closure#0}::{closure#1}, core[65543c08ff064a40]::result::Result<core[65543c08ff064a40]::option::Option<rustc_interface[773e200dce750870]::queries::Linker>, rustc_span[b016b44763db93a8]::ErrorGuaranteed>>
  33:     0x7fffb1e79d3f - rustc_span[b016b44763db93a8]::create_session_globals_then::<core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>, rustc_interface[773e200dce750870]::util::run_in_thread_with_globals<rustc_interface[773e200dce750870]::util::run_in_thread_pool_with_globals<rustc_interface[773e200dce750870]::interface::run_compiler<core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>, rustc_driver_impl[26ca7f734f0e7e1d]::run_compiler::{closure#0}>::{closure#1}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#0}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
  34:     0x7fffb1e73f9b - std[cc5a7edb46e5d43d]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[773e200dce750870]::util::run_in_thread_with_globals<rustc_interface[773e200dce750870]::util::run_in_thread_pool_with_globals<rustc_interface[773e200dce750870]::interface::run_compiler<core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>, rustc_driver_impl[26ca7f734f0e7e1d]::run_compiler::{closure#0}>::{closure#1}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#0}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>
  35:     0x7fffb1e76abe - <<std[cc5a7edb46e5d43d]::thread::Builder>::spawn_unchecked_<rustc_interface[773e200dce750870]::util::run_in_thread_with_globals<rustc_interface[773e200dce750870]::util::run_in_thread_pool_with_globals<rustc_interface[773e200dce750870]::interface::run_compiler<core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>, rustc_driver_impl[26ca7f734f0e7e1d]::run_compiler::{closure#0}>::{closure#1}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#0}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[65543c08ff064a40]::result::Result<(), rustc_span[b016b44763db93a8]::ErrorGuaranteed>>::{closure#1} as core[65543c08ff064a40]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  36:     0x7fffe0c2d99d - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb6cffdf165f316c3
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/alloc\src/boxed.rs:2150:9
  37:     0x7fffe0c2d99d - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h8a43edabbe288821
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/alloc\src/boxed.rs:2150:9
  38:     0x7fffe0c2d99d - std::sys::pal::windows::thread::Thread::new::thread_start::hca2051deb825b5c8
                               at /rustc/730d5d4095a264ef5f7c0a0781eea68c15431d45\library/std\src\sys\pal\windows/thread.rs:55:22
  39:     0x7ff8477c7344 - <unknown>
  40:     0x7ff8484426b1 - <unknown>


rustc version: 1.82.0-nightly (730d5d409 2024-08-10)
platform: x86_64-pc-windows-gnu

query stack during panic:
end of query stack

Backtrace


Config.toml

[unstable]
build-std-features = ["compiler-builtins-mem"]
build-std = ["core", "compiler_builtins", "alloc"]

[build]
target = "x86_64-rustos.json"
rustflags = ["-C", "link-arg=-Tlinker.ld"]

[target.x86_64-unknown-none]
runner = "qemu-system-x86_64 -kernel target/x86_64-rustos/debug/rust-os -d int,cpu_reset"

x86_64-rustos.json

{
    "llvm-target": "x86_64-unknown-none",
    "data-layout":"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
    "arch": "x86_64-unknown-none",
    "target-endian": "little",
    "target-pointer-width": "64",
    "target-c-int-width": "32",
    "os": "none",
    "executables": true,
    "linker-flavor": "ld.lld",
    "linker": "rust-lld",
    "panic-strategy": "abort",
    "disable-redzone": true,
    "features": "-mmx,-sse,+soft-float"
}

Linker file

ENTRY(_start)
 
SECTIONS {
    . = 1M;
 
    .text : ALIGN(4K) {
        KEEP(*(.multiboot))
        *(.text)
    }
 
    .rodata : ALIGN(4K) {
        *(.rodata)
    }
 
    .data : ALIGN(4K) {
        *(.data)
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-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