2024-05-07 08:39:57 -05:00
# Exercise unwinding a panic. This catches a panic across an FFI boundary and downcasts it into an integer. The Rust code that panics is in a separate crate.
# See https://github.com/rust-lang/rust/commit/baf227ea0c1e07fc54395a51e4b3881d701180cb
2023-03-30 08:46:31 -05:00
# ignore-cross-compile
2023-05-02 05:53:09 -05:00
# needs-unwind
2022-08-22 19:00:00 -05:00
i n c l u d e . . / t o o l s . m k
2020-12-11 19:54:47 -06:00
all : archive
# Compile `main.rs`, which will link into our library, and run it.
$( RUSTC) main.rs
$( call RUN,main)
i f d e f I S _ M S V C
archive : add .o panic .o
# Now, create an archive using these two objects.
$( AR) crus $( TMPDIR) /add.lib $( TMPDIR) /add.o $( TMPDIR) /panic.o
e l s e
archive : add .o panic .o
# Now, create an archive using these two objects.
$( AR) crus $( TMPDIR) /libadd.a $( TMPDIR) /add.o $( TMPDIR) /panic.o
e n d i f
# Compile `panic.rs` into an object file.
#
# Note that we invoke `rustc` directly, so we may emit an object rather
# than an archive. We'll do that later.
panic.o :
$( BARE_RUSTC) $( RUSTFLAGS) \
--out-dir $( TMPDIR) \
--emit= obj panic.rs
# Compile `add.c` into an object file.
add.o :
$( call COMPILE_OBJ,$( TMPDIR) /add.o,add.c)