Skip to content

[LLVM 4.0] Symbol lookup error when linking dylibs #39782

@mattico

Description

@mattico

cc #37609

These two tests fail when testing the compiler with a current LLVM build from the release_40 branch.

run-make/llvm-pass
run-make/rustc-macro-dep-files

The two failures are similar enough that they're probably related.

test [run-make] run-make/llvm-pass ... FAILED

stdout:
------------------------------------------
c++ -ffunction-sections -fdata-sections -fPIC -m64  -I/home/matt/Code/llvm/include -I/home/matt/Code/llvm/build-40/include  -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=c++11 -g  -fno-exceptions -fno-rtti -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -c llvm-function-pass.so.cc -o /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libllvm-function-pass.o
ar crus /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libllvm-function-pass.a /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libllvm-function-pass.o
c++ -ffunction-sections -fdata-sections -fPIC -m64  -I/home/matt/Code/llvm/include -I/home/matt/Code/llvm/build-40/include  -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=c++11 -g  -fno-exceptions -fno-rtti -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -c llvm-module-pass.so.cc -o /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libllvm-module-pass.o
ar crus /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libllvm-module-pass.a /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libllvm-module-pass.o
LD_LIBRARY_PATH="/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib:" '/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc' --out-dir /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu -L /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu  plugin.rs -C prefer-dynamic
LD_LIBRARY_PATH="/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib:" '/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc' --out-dir /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu -L /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu  main.rs
Makefile:9: recipe for target 'all' failed

------------------------------------------
stderr:
------------------------------------------
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc: symbol lookup error: /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/llvm-pass.stage1-x86_64-unknown-linux-gnu/libsome_plugin.so: undefined symbol: _ZN12rustc_plugin8registry8Registry18register_llvm_pass17h3ddb9f4cf0e74ab9E
make: *** [all] Error 127
test [run-make] run-make/rustc-macro-dep-files ... FAILED

stdout:
------------------------------------------
LD_LIBRARY_PATH="/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib:" '/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc' --out-dir /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu -L /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu  foo.rs
LD_LIBRARY_PATH="/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps:/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib:" '/home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc' --out-dir /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu -L /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu  bar.rs --emit dep-info
Makefile:4: recipe for target 'all' failed

------------------------------------------
stderr:
------------------------------------------
error: /home/matt/Code/Rust/rust/build/x86_64-unknown-linux-gnu/test/run-make/rustc-macro-dep-files.stage1-x86_64-unknown-linux-gnu/libfoo.so: undefined symbol: _ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double14_MSG_FILE_LINE17h026b1bdceb71d8dcE
  --> bar.rs:12:1
   |
12 | extern crate foo;
   | ^^^^^^^^^^^^^^^^^

make: *** [all] Error 101

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions