Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No backtrace symbols on MacOS w/ Apple Silicon when cross-compiling to aarch64 Linux #18280

Open
ramosbugs opened this issue Dec 14, 2023 · 0 comments
Labels
bug Observed behavior contradicts documented or intended behavior

Comments

@ramosbugs
Copy link

ramosbugs commented Dec 14, 2023

Zig Version

0.11.0

Steps to Reproduce and Observed Behavior

I originally filed this issue as cargo-lambda/cargo-lambda#577, then rust-cross/cargo-zigbuild#204, but the issue is probably within the Zig toolchain somewhere.

I'm building an AWS Lambda function by invoking:

$ RUSTFLAGS="-C strip=none" cargo lambda build --arm64

I'm running on ARM64 MacOS:

$ uname -a
Darwin Ramos-M1 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000 arm64

As expected, this produces a binary that appears to contain debug symbols:

$ file ../../target/lambda/bootstrap/bootstrap 
../../target/lambda/bootstrap/bootstrap: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 2.0.0, with debug_info, not stripped

However, all of the backtraces I generate via the backtrace crate look like:

 0: <unknown>    
 1: <unknown>    
...
31: <unknown>    
32: __libc_start_call_main    
33: __libc_start_main_impl

Panics with RUST_BACKTRACE=1 are similarly empty:

thread 'main' panicked at 'not yet implemented', src/lib.rs:173:5
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Interestingly, everything works fine when I directly build the Lambda via the Homebrew musl-cross toolchain:

$ export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc
$ cargo build --target aarch64-unknown-linux-musl --release

Even in release mode, the Lambda built with musl-cross prints backtrace symbols.

I searched but wasn't able to find any relevant Zig issues related to missing debug symbols when cross-compiling from aarch64 Darwin to aarch64 Linux.

Expected Behavior

Stack trace should print symbol names

@ramosbugs ramosbugs added the bug Observed behavior contradicts documented or intended behavior label Dec 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Observed behavior contradicts documented or intended behavior
Projects
None yet
Development

No branches or pull requests

1 participant