Skip to content

Undefined references to rust_eh_unwind_resume on x86_64-pc-windows-gnu #177

Closed
@alexcrichton

Description

@alexcrichton

Originally from rust-lang/rust#43095 the reason this doesn't "just work" is because of rust-lang/rust#43151 and rust-lang/rust#43150. We should find a workaround in this repository for avoiding those bugs and check this into the test suite:

diff --git a/ci/run.sh b/ci/run.sh
index 9a32ee9..1b2cd7f 100755
--- a/ci/run.sh
+++ b/ci/run.sh
@@ -116,7 +116,7 @@ if [ -z "$DEBUG_LTO_BUILD_DOESNT_WORK" ]; then
   RUSTFLAGS="-C debug-assertions=no" \
     $cargo rustc --features "$INTRINSICS_FEATURES" --target $1 --example intrinsics -- -C lto
 fi
 $cargo rustc --features "$INTRINSICS_FEATURES" --target $1 --example intrinsics --release -- -C lto

 # Ensure no references to a panicking function
 for rlib in $(echo $path); do
@@ -126,6 +126,12 @@ for rlib in $(echo $path); do
     if test $? = 0; then
         exit 1
     fi
+
+    $PREFIX$NM -u $rlib 2>&1 | grep unwind_resume
+
+    if test $? = 0; then
+        exit 1
+    fi
     set -ex
 done

One possible workaround may be to make these methods (I think the Int::aborting_* methods) generic with a random type parameter to force codegen to not generate landign pads here. Another "fix" would to actually fix these bugs upstream!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions