about summary refs log tree commit diff
path: root/src/rustllvm/ExecutionEngineWrapper.cpp
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-04-11 12:20:33 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-04-11 12:20:33 -0700
commite6072fa0c4c22d62acf3dcb78c8ee260a1368bd7 (patch)
treed315f98d14a09983abbd05f8ffdc22beb3666dbf /src/rustllvm/ExecutionEngineWrapper.cpp
parent8b6091e8f1f5531fe907f84b6a2b27af04a95e8f (diff)
downloadrust-e6072fa0c4c22d62acf3dcb78c8ee260a1368bd7.tar.gz
rust-e6072fa0c4c22d62acf3dcb78c8ee260a1368bd7.zip
rustc: Deterministically link upstream C libraries
Previously, upstream C libraries were linked in a nondeterministic fashion
because they were collected through iter_crate_data() which is a nodeterministic
traversal of a hash map. When upstream rlibs had interdependencies among their
native libraries (such as libfoo depending on libc), then the ordering would
occasionally be wrong, causing linkage to fail.

This uses the topologically sorted list of libraries to collect native
libraries, so if a native library depends on libc it just needs to make sure
that the rust crate depends on liblibc.
Diffstat (limited to 'src/rustllvm/ExecutionEngineWrapper.cpp')
0 files changed, 0 insertions, 0 deletions