Skip to content

linkage weak_extern through generics breaks when -O absent on OS X #54153

Closed
@pnkfelix

Description

@pnkfelix

I am locally seeing test failures on OS X that seem like #18804 has regressed, or the shuffling of the run-pass to ui/run-pass somehow exposed a new bug there.

---- [ui] ui/run-pass/issues/issue-18804/main.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit code: 1
command: "/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/bin/rustc" "/Users/fklock/Dev/Mozilla/issue53528/rust-53528/src/test/ui/run-pass/issues/issue-18804/main.rs" "--target=x86_64-apple-darwin" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a" "-Crpath" "-Zunstable-options" "-Lnative=/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/native/rust-test-helpers" "-L" "/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/auxiliary" "-A" "unused"
stdout:
------------------------------------------

------------------------------------------
stderr:
------------------------------------------
{"message":"linking with `cc` failed: exit code: 1","code":null,"level":"error","spans":[],"children":[{"message":"\"cc\" \"-m64\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.0.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.1.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.2.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.3.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.4.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.5.rcgu.o\" \"-o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a\" \"-Wl,-dead_strip\" \"-nodefaultlibs\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/native/rust-test-helpers\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/auxiliary\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/auxiliary\" \"-llib\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"-lstd-bc4d93c7cd68669e\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-4219949d54044b85.rlib\" \"-lSystem\" \"-lresolv\" \"-lpthread\" \"-lc\" \"-lm\" \"-Wl,-rpath,@loader_path/auxiliary\" \"-Wl,-rpath,@loader_path/../../../../../../stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"-Wl,-rpath,/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/~/opt/rust-dbg/lib/rustlib/x86_64-apple-darwin/lib\"","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"Undefined symbols for architecture x86_64:\n  \"_FOO\", referenced from:\n      __rust_extern_with_linkage_FOO in a.main.7rcbfp3g-cgu.4.rcgu.o\nld: symbol(s) not found for architecture x86_64\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\n","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error: linking with `cc` failed: exit code: 1\n   |\n   = note: \"cc\" \"-m64\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.0.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.1.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.2.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.3.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.4.rcgu.o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a.main.7rcbfp3g-cgu.5.rcgu.o\" \"-o\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/a\" \"-Wl,-dead_strip\" \"-nodefaultlibs\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/native/rust-test-helpers\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/auxiliary\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/test/ui/run-pass/issues/issue-18804/main/auxiliary\" \"-llib\" \"-L\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"-lstd-bc4d93c7cd68669e\" \"/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/build/x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-4219949d54044b85.rlib\" \"-lSystem\" \"-lresolv\" \"-lpthread\" \"-lc\" \"-lm\" \"-Wl,-rpath,@loader_path/auxiliary\" \"-Wl,-rpath,@loader_path/../../../../../../stage1/lib/rustlib/x86_64-apple-darwin/lib\" \"-Wl,-rpath,/Users/fklock/Dev/Mozilla/issue53528/rust-53528/objdir-dbgopt/~/opt/rust-dbg/lib/rustlib/x86_64-apple-darwin/lib\"\n   = note: Undefined symbols for architecture x86_64:\n             \"_FOO\", referenced from:\n                 __rust_extern_with_linkage_FOO in a.main.7rcbfp3g-cgu.4.rcgu.o\n           ld: symbol(s) not found for architecture x86_64\n           clang: error: linker command failed with exit code 1 (use -v to see invocation)\n           \n\n"}
{"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}

------------------------------------------

thread '[ui] ui/run-pass/issues/issue-18804/main.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3196:9
note: Run with `RUST_BACKTRACE=1` for a backtrace.


failures:
    [ui] ui/run-pass/issues/issue-18804/main.rs

I am not certain what is happening yet. After reviewing #18804, I have looked briefly at the generated LLVM IR output for main.rs, and it seems like FOO is being "properly" tagged (see some discussion of the current approach here: #12556):

%"unwind::libunwind::_Unwind_Exception" = type { [0 x i64], i64, [0 x i64], void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [0 x i64], [6 x i64], [0 x i64] }
%"unwind::libunwind::_Unwind_Context" = type { [0 x i8] }

@FOO = extern_weak global {}
@_rust_extern_with_linkage_FOO = internal global {}* @FOO

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linkageArea: linking into static, shared libraries and binariesC-bugCategory: This is a bug.O-macosOperating system: macOST-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions