Skip to content

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

Closed
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions