Skip to content

benesch/rust-zdebuginfo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust-zdebuginfo

A demonstration of using compressed debug info with Rust. The linker is instructed to compress the debug info via the flags in .cargo/config, which Cargo reads automatically.

The contained binary prints a symbolicated backtrace and exits. By default there are no symbols because none of the backtrace crate's symbolication features have been activated:

benesch@marmoset$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/rust-zdebuginfo`
   0: <unknown>
   1: <unknown>
   2: <unknown>
   3: <unknown>
   4: <unknown>
   5: <unknown>
   6: <unknown>
   7: <unknown>
   8: <unknown>

With the libbacktrace feature activated, symbolication works perfectly:

benesch@marmoset$ cargo run --features=libbacktrace
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/rust-zdebuginfo`
   0: rust_zdebuginfo::main
             at src/main.rs:2
   1: std::rt::lang_start::{{closure}}
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/rt.rs:67
   2: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:52
      std::panicking::try::do_call
             at src/libstd/panicking.rs:305
   3: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
   4: std::panicking::try
             at src/libstd/panicking.rs:281
      std::panic::catch_unwind
             at src/libstd/panic.rs:394
      std::rt::lang_start_internal
             at src/libstd/rt.rs:51
   5: std::rt::lang_start
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/rt.rs:67
   6: main
   7: __libc_start_main
   8: _start

With the gimli feature activated, symbolication almost entirely fails:

benesch@marmoset$ cargo run --features=gimli
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/rust-zdebuginfo`
   0: <unknown>
   1: <unknown>
   2: <unknown>
   3: <unknown>
   4: <unknown>
   5: <unknown>
   6: <unknown>
   7: __libc_start_main
   8: <unknown>

The gimli feature can be made to work by disabling compressed debug info. (Setting RUSTFLAGS to the empty string overrides the flags in `.cargo/config.)

$ RUSTFLAGS= cargo run --features=gimli
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/rust-zdebuginfo`
   0: rust_zdebuginfo::main
             at src/main.rs:2
   1: std::rt::lang_start::{{closure}}
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/rt.rs:67
   2: std::rt::lang_start_internal::{{closure}}
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/rt.rs:52
      std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
   3: __rust_maybe_catch_panic
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libpanic_unwind/lib.rs:86
   4: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
      std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
      std::rt::lang_start_internal
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/rt.rs:51
   5: std::rt::lang_start
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/rt.rs:67
   6: main
   7: __libc_start_main
   8: _start

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages