9ab0475d94
When linking an archive statically to an rlib, the compiler will extract all contents of the archive and add them all to the rlib being generated. The current method of extraction is to run `ar x`, dumping all files into a temporary directory. Object archives, however, are allowed to have multiple entries with the same file name, so there is no method for them to extract their contents into a directory in a lossless fashion. This commit adds iterator support to the `ArchiveRO` structure which hooks into LLVM's support for reading object archives. This iterator is then used to inspect each object in turn and extract it to a unique location for later assembly. |
||
---|---|---|
.. | ||
alloc-extern-crates | ||
allow-non-lint-warnings-cmdline | ||
allow-warnings-cmdline-stability | ||
archive-duplicate-names | ||
bare-outfile | ||
c-dynamic-dylib | ||
c-dynamic-rlib | ||
c-link-to-rust-dylib | ||
c-link-to-rust-staticlib | ||
c-static-dylib | ||
c-static-rlib | ||
cannot-read-embedded-idents | ||
codegen-options-parsing | ||
compiler-lookup-paths | ||
compiler-lookup-paths-2 | ||
crate-data-smoke | ||
crate-name-priority | ||
debug-assertions | ||
dep-info | ||
dep-info-spaces | ||
duplicate-output-flavors | ||
dylib-chain | ||
error-found-staticlib-instead-crate | ||
error-writing-dependencies | ||
extern-diff-internal-name | ||
extern-flag-disambiguates | ||
extern-flag-fun | ||
extern-fn-generic | ||
extern-fn-mangle | ||
extern-fn-reachable | ||
extern-fn-with-packed-struct | ||
extern-fn-with-union | ||
extern-overrides-distribution | ||
extra-filename-with-temp-outputs | ||
graphviz-flowgraph | ||
include_bytes_deps | ||
interdependent-c-libraries | ||
intrinsic-unreachable | ||
invalid-library | ||
issue-7349 | ||
issue-11908 | ||
issue-12446 | ||
issue-14500 | ||
issue-15460 | ||
issue-19371 | ||
issue-22131 | ||
issue-24445 | ||
libs-and-bins | ||
libs-through-symlinks | ||
link-path-order | ||
linkage-attr-on-static | ||
ls-metadata | ||
lto-readonly-lib | ||
lto-smoke | ||
lto-smoke-c | ||
lto-syntax-extension | ||
manual-crate-name | ||
manual-link | ||
many-crates-but-no-match | ||
metadata-flag-frobs-symbols | ||
mismatching-target-triples | ||
missing-crate-dependency | ||
mixing-deps | ||
mixing-formats | ||
mixing-libs | ||
no-duplicate-libs | ||
no-intermediate-extras | ||
no-stack-check | ||
obey-crate-type-flag | ||
output-type-permutations | ||
output-with-hyphens | ||
prefer-dylib | ||
prefer-rlib | ||
pretty-expanded | ||
pretty-expanded-hygiene | ||
pretty-print-path-suffix | ||
pretty-print-to-file | ||
prune-link-args | ||
relocation-model | ||
rlib-chain | ||
rustdoc-json | ||
save-analysis | ||
sepcomp-cci-copies | ||
sepcomp-inlining | ||
sepcomp-separate | ||
simd-ffi | ||
simple-dylib | ||
simple-rlib | ||
static-dylib-by-default | ||
static-unwinding | ||
staticlib-blank-lib | ||
suspicious-library | ||
symbols-are-reasonable | ||
symlinked-extern | ||
symlinked-libraries | ||
target-cpu-native | ||
target-specs | ||
test-harness | ||
trace-macros-flag | ||
unicode-input | ||
use-extern-for-plugins | ||
version | ||
volatile-intrinsics | ||
weird-output-filenames | ||
tools.mk |