Closed
Description
I tried this code:
[package]
name = "test5"
version = "0.1.0"
authors = ["Mateusz Mikuła <[email protected]>"]
edition = "2018"
[lib]
crate-type = ["cdylib"]
// LLVM unwind library from MSYS2 repo
#[link(name = "unwind", kind = "static")]
extern "C" {}
#[no_mangle]
pub fn foo() {
println!("Hello, world!");
}
I expected to see this happen:
$ cargo +stage2 b && nm target/debug/libtest5.dll.a | grep foo || echo "not found"
Compiling test5 v0.1.0 (D:\msys64\tmp\test5)
Finished dev [unoptimized + debuginfo] target(s) in 0.87s
0000000000000000 I __imp_foo
0000000000000000 T foo
stage2 is #72049
Instead, this happened:
$ cargo b && nm target/debug/libtest5.dll.a | grep foo || echo "not found"
Compiling test5 v0.1.0 (D:\msys64\tmp\test5)
Finished dev [unoptimized + debuginfo] target(s) in 0.57s
not found
Meta
rustc --version --verbose
:
$ rustc -vV
rustc 1.45.0-nightly (a74d1862d 2020-05-14)
binary: rustc
commit-hash: a74d1862d4d87a56244958416fd05976c58ca1a8
commit-date: 2020-05-14
host: x86_64-pc-windows-gnu
release: 1.45.0-nightly
LLVM version: 9.0
All symbols from import libraries
$ cargo b && nm target/debug/libtest5.dll.a
Compiling test5 v0.1.0 (D:\msys64\tmp\test5)
Finished dev [unoptimized + debuginfo] target(s) in 0.60s
d000034.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$7
0000000000000000 I test5_dll_iname
d000000.o:
0000000000000000 i .idata$2
0000000000000000 b .idata$4
0000000000000000 b .idata$5
0000000000000000 I _head_test5_dll
U test5_dll_iname
d000033.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_step
U _head_test5_dll
0000000000000000 T unw_step
d000032.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_set_reg
U _head_test5_dll
0000000000000000 T unw_set_reg
d000031.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_set_fpreg
U _head_test5_dll
0000000000000000 T unw_set_fpreg
d000030.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_resume
U _head_test5_dll
0000000000000000 T unw_resume
d000029.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_regname
U _head_test5_dll
0000000000000000 T unw_regname
d000028.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_local_addr_space
0000000000000000 I __nm_unw_local_addr_space
U _head_test5_dll
d000027.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_is_signal_frame
U _head_test5_dll
0000000000000000 T unw_is_signal_frame
d000026.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_is_fpreg
U _head_test5_dll
0000000000000000 T unw_is_fpreg
d000025.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_init_local
U _head_test5_dll
0000000000000000 T unw_init_local
d000024.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_getcontext
U _head_test5_dll
0000000000000000 T unw_getcontext
d000023.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_reg
U _head_test5_dll
0000000000000000 T unw_get_reg
d000022.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_proc_name
U _head_test5_dll
0000000000000000 T unw_get_proc_name
d000021.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_proc_info
U _head_test5_dll
0000000000000000 T unw_get_proc_info
d000020.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_fpreg
U _head_test5_dll
0000000000000000 T unw_get_fpreg
d000019.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_SetIP
U _head_test5_dll
0000000000000000 T _Unwind_SetIP
d000018.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_SetGR
U _head_test5_dll
0000000000000000 T _Unwind_SetGR
d000017.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Resume_or_Rethrow
U _head_test5_dll
0000000000000000 T _Unwind_Resume_or_Rethrow
d000016.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Resume
U _head_test5_dll
0000000000000000 T _Unwind_Resume
d000015.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_RaiseException
U _head_test5_dll
0000000000000000 T _Unwind_RaiseException
d000014.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetTextRelBase
U _head_test5_dll
0000000000000000 T _Unwind_GetTextRelBase
d000013.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetRegionStart
U _head_test5_dll
0000000000000000 T _Unwind_GetRegionStart
d000012.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetLanguageSpecificData
U _head_test5_dll
0000000000000000 T _Unwind_GetLanguageSpecificData
d000011.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetIPInfo
U _head_test5_dll
0000000000000000 T _Unwind_GetIPInfo
d000010.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetIP
U _head_test5_dll
0000000000000000 T _Unwind_GetIP
d000009.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetGR
U _head_test5_dll
0000000000000000 T _Unwind_GetGR
d000008.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetDataRelBase
U _head_test5_dll
0000000000000000 T _Unwind_GetDataRelBase
d000007.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetCFA
U _head_test5_dll
0000000000000000 T _Unwind_GetCFA
d000006.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_ForcedUnwind
U _head_test5_dll
0000000000000000 T _Unwind_ForcedUnwind
d000005.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Find_FDE
U _head_test5_dll
0000000000000000 T _Unwind_Find_FDE
d000004.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_FindEnclosingFunction
U _head_test5_dll
0000000000000000 T _Unwind_FindEnclosingFunction
d000003.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_DeleteException
U _head_test5_dll
0000000000000000 T _Unwind_DeleteException
d000002.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Backtrace
U _head_test5_dll
0000000000000000 T _Unwind_Backtrace
d000001.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__GCC_specific_handler
0000000000000000 T _GCC_specific_handler
U _head_test5_dll
$ cargo +stage2 b && nm target/debug/libtest5.dll.a
Compiling test5 v0.1.0 (D:\msys64\tmp\test5)
Finished dev [unoptimized + debuginfo] target(s) in 0.84s
d000036.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$7
0000000000000000 I test5_dll_iname
d000000.o:
0000000000000000 i .idata$2
0000000000000000 b .idata$4
0000000000000000 b .idata$5
0000000000000000 I _head_test5_dll
U test5_dll_iname
d000035.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_step
U _head_test5_dll
0000000000000000 T unw_step
d000034.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_set_reg
U _head_test5_dll
0000000000000000 T unw_set_reg
d000033.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_set_fpreg
U _head_test5_dll
0000000000000000 T unw_set_fpreg
d000032.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_resume
U _head_test5_dll
0000000000000000 T unw_resume
d000031.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_regname
U _head_test5_dll
0000000000000000 T unw_regname
d000030.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_local_addr_space
0000000000000000 I __nm_unw_local_addr_space
U _head_test5_dll
d000029.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_is_signal_frame
U _head_test5_dll
0000000000000000 T unw_is_signal_frame
d000028.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_is_fpreg
U _head_test5_dll
0000000000000000 T unw_is_fpreg
d000027.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_init_local
U _head_test5_dll
0000000000000000 T unw_init_local
d000026.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_getcontext
U _head_test5_dll
0000000000000000 T unw_getcontext
d000025.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_reg
U _head_test5_dll
0000000000000000 T unw_get_reg
d000024.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_proc_name
U _head_test5_dll
0000000000000000 T unw_get_proc_name
d000023.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_proc_info
U _head_test5_dll
0000000000000000 T unw_get_proc_info
d000022.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_unw_get_fpreg
U _head_test5_dll
0000000000000000 T unw_get_fpreg
d000021.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_rust_eh_personality
U _head_test5_dll
0000000000000000 T rust_eh_personality
d000020.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp_foo
U _head_test5_dll
0000000000000000 T foo
d000019.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_SetIP
U _head_test5_dll
0000000000000000 T _Unwind_SetIP
d000018.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_SetGR
U _head_test5_dll
0000000000000000 T _Unwind_SetGR
d000017.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Resume_or_Rethrow
U _head_test5_dll
0000000000000000 T _Unwind_Resume_or_Rethrow
d000016.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Resume
U _head_test5_dll
0000000000000000 T _Unwind_Resume
d000015.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_RaiseException
U _head_test5_dll
0000000000000000 T _Unwind_RaiseException
d000014.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetTextRelBase
U _head_test5_dll
0000000000000000 T _Unwind_GetTextRelBase
d000013.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetRegionStart
U _head_test5_dll
0000000000000000 T _Unwind_GetRegionStart
d000012.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetLanguageSpecificData
U _head_test5_dll
0000000000000000 T _Unwind_GetLanguageSpecificData
d000011.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetIPInfo
U _head_test5_dll
0000000000000000 T _Unwind_GetIPInfo
d000010.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetIP
U _head_test5_dll
0000000000000000 T _Unwind_GetIP
d000009.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetGR
U _head_test5_dll
0000000000000000 T _Unwind_GetGR
d000008.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetDataRelBase
U _head_test5_dll
0000000000000000 T _Unwind_GetDataRelBase
d000007.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_GetCFA
U _head_test5_dll
0000000000000000 T _Unwind_GetCFA
d000006.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_ForcedUnwind
U _head_test5_dll
0000000000000000 T _Unwind_ForcedUnwind
d000005.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Find_FDE
U _head_test5_dll
0000000000000000 T _Unwind_Find_FDE
d000004.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_FindEnclosingFunction
U _head_test5_dll
0000000000000000 T _Unwind_FindEnclosingFunction
d000003.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_DeleteException
U _head_test5_dll
0000000000000000 T _Unwind_DeleteException
d000002.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__Unwind_Backtrace
U _head_test5_dll
0000000000000000 T _Unwind_Backtrace
d000001.o:
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 i .idata$7
0000000000000000 t .text
0000000000000000 I __imp__GCC_specific_handler
0000000000000000 T _GCC_specific_handler
U _head_test5_dll