Skip to content

Rust tests/run-make/branch-protection-check-IBT fails with missing _start symbol #613

@mati865

Description

@mati865

The test fails with:

=== STDERR ===
error: linking with `cc` failed: exit status: 1
  |
  = note:  "cc" "-m64" "<1 object files omitted>" "-Wl,--as-needed" "-L" "/tmp/rustcDdWazH/raw-dylibs" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "main" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-nostartfiles"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments
  = note: Error: Failed to activate <prelude>

          Caused by:
              Missing _start symbol

          Stack backtrace:
             0: libwild::layout::PreludeLayoutState::activate
             1: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
             2: rayon::iter::plumbing::Folder::consume_iter
             3: rayon::iter::plumbing::bridge_producer_consumer::helper
             4: rayon_core::join::join_context::{{closure}}
             5: <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute
             6: rayon_core::registry::WorkerThread::wait_until_cold
             7: rayon_core::registry::ThreadBuilder::run
             8: std::sys::backtrace::__rust_begin_short_backtrace
             9: core::ops::function::FnOnce::call_once{{vtable.shim}}
            10: std::sys::pal::unix::thread::Thread::new::thread_start
            11: <unknown>
            12: <unknown>
          collect2: error: ld returned 255 exit status
          WARNING: wild: --plugin /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/liblto_plugin.so is not yet supported

Apparently LD doesn't threat missing _start as an error (at least in this case):

❯ ./run-with ~/Projects/wild/target/release/wild
WARNING: wild: --plugin /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/liblto_plugin.so is not yet supported
Error: Failed to activate <prelude>

Caused by:
    Missing _start symbol

Stack backtrace:
   0: libwild::layout::PreludeLayoutState::activate
   1: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
   2: rayon::iter::plumbing::Folder::consume_iter
   3: rayon::iter::plumbing::bridge_producer_consumer::helper
   4: rayon_core::join::join_context::{{closure}}
   5: <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute
   6: rayon_core::registry::WorkerThread::wait_until_cold
   7: rayon_core::registry::ThreadBuilder::run
   8: std::sys::backtrace::__rust_begin_short_backtrace
   9: core::ops::function::FnOnce::call_once{{vtable.shim}}
  10: std::sys::pal::unix::thread::Thread::new::thread_start
  11: <unknown>
  12: <unknown>

❯ ./run-with ld
ld: warning: cannot find entry symbol _start; not setting start address

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions