Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rustc: Fix mixing crates with different `share_generics` #64324

Open
wants to merge 2 commits into
base: master
from

Conversation

@alexcrichton
Copy link
Member

commented Sep 9, 2019

This commit addresses #64319 by removing the dylib crate type from the
list of crate type that exports generic symbols. The bug in #64319
arises because a dylib crate type was trying to export a symbol in an
uptream crate but it miscalculated the symbol name of the uptream
symbol. This isn't really necessary, though, since dylib crates aren't
that heavily used, so we can just conservatively say that the dylib
crate type never exports generic symbols, forcibly removing them from
the exported symbol lists if were to otherwise find them.

The fix here happens in two places:

  • First is in the local_crate_exports_generics method, indicating that
    it's now false for the Dylib crate type. Only rlibs actually
    export generics at this point.

  • Next is when we load exported symbols from upstream crate. If, for our
    compilation session, the crate may be included from a dynamic library,
    then its generic symbols are removed. When the crate was linked into a
    dynamic library its symbols weren't exported, so we can't consider
    them a candidate to link against.

Overally this should avoid situations where we incorrectly calculate the
upstream symbol names in the face of differnet share_generics options,
ultimately...

Closes #64319

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Sep 9, 2019

r? @estebank

(rust_highfive has picked a reviewer for you, use r? to override)

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 9, 2019

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Sep 10, 2019

The job x86_64-gnu-llvm-6.0 of your PR failed (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-09T22:28:19.2792910Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-09T22:28:19.2993851Z ##[command]git config gc.auto 0
2019-09-09T22:28:19.3093102Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-09T22:28:19.3146527Z ##[command]git config --get-all http.proxy
2019-09-09T22:28:19.3290718Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64324/merge:refs/remotes/pull/64324/merge
---
2019-09-09T23:37:10.9751784Z .................................................................................................... 1500/9006
2019-09-09T23:37:17.4432679Z .................................................................................................... 1600/9006
2019-09-09T23:37:31.5211096Z .......................................................i...............i............................ 1700/9006
2019-09-09T23:37:40.0127308Z .................................................................................................... 1800/9006
2019-09-09T23:37:56.2760443Z ..............................................iiiii................................................. 1900/9006
2019-09-09T23:38:08.4897595Z .................................................................................................... 2100/9006
2019-09-09T23:38:11.3242797Z .................................................................................................... 2200/9006
2019-09-09T23:38:15.6508130Z .................................................................................................... 2300/9006
2019-09-09T23:38:24.3508932Z .................................................................................................... 2400/9006
---
2019-09-09T23:41:42.4979853Z .................................i...............i.................................................. 4700/9006
2019-09-09T23:41:55.4831313Z .................................................................................................... 4800/9006
2019-09-09T23:42:02.4382936Z .................................................................................................... 4900/9006
2019-09-09T23:42:14.3621849Z .................................................................................................... 5000/9006
2019-09-09T23:42:21.0673240Z ................ii.ii............................................................................... 5100/9006
2019-09-09T23:42:32.7375999Z .................................................................................................... 5300/9006
2019-09-09T23:42:43.9024390Z ...............................................................................i.................... 5400/9006
2019-09-09T23:42:52.5020076Z .................................................................................................... 5500/9006
2019-09-09T23:42:59.0454052Z .................................................................................................... 5600/9006
2019-09-09T23:42:59.0454052Z .................................................................................................... 5600/9006
2019-09-09T23:43:10.8893645Z .........................................................................ii...i..ii...........i..... 5700/9006
2019-09-09T23:43:38.8853314Z .................................................................................................... 5900/9006
2019-09-09T23:43:49.5272620Z .................................................................................................... 6000/9006
2019-09-09T23:43:49.5272620Z .................................................................................................... 6000/9006
2019-09-09T23:43:57.0752239Z ...........................................................................i..ii.................... 6100/9006
2019-09-09T23:44:29.9159247Z .................................................................................................... 6300/9006
2019-09-09T23:44:32.2467126Z ..................................i................................................................. 6400/9006
2019-09-09T23:44:34.6787352Z .................................................................................................... 6500/9006
2019-09-09T23:44:37.5803806Z ......i............................................................................................. 6600/9006
---
2019-09-09T23:49:53.2478504Z  finished in 21.302
2019-09-09T23:49:53.2479798Z Check compiletest suite=codegen mode=codegen (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-09T23:49:53.2480077Z 
2019-09-09T23:49:53.2480235Z running 150 tests
2019-09-09T23:49:57.2422086Z i....iii......iii..iiii.....i............................i..i..................i....i.........ii.i.i 100/150
2019-09-09T23:49:58.7578538Z ..iiii..............i.........iii..i......ii......
2019-09-09T23:49:58.7584206Z 
2019-09-09T23:49:58.7586438Z  finished in 6.032
2019-09-09T23:49:58.7831317Z Check compiletest suite=codegen-units mode=codegen-units (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-09T23:49:58.9640515Z 
---
2019-09-09T23:50:01.2460640Z  finished in 2.463
2019-09-09T23:50:01.2671333Z Check compiletest suite=assembly mode=assembly (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-09T23:50:01.4469202Z 
2019-09-09T23:50:01.4469505Z running 9 tests
2019-09-09T23:50:01.4471009Z iiiiiiiii
2019-09-09T23:50:01.4471474Z 
2019-09-09T23:50:01.4472151Z  finished in 0.180
2019-09-09T23:50:01.4680271Z Check compiletest suite=incremental mode=incremental (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-09T23:50:01.6534494Z 
---
2019-09-09T23:50:21.7348041Z  finished in 20.266
2019-09-09T23:50:21.7578556Z Check compiletest suite=debuginfo mode=debuginfo-gdb+lldb (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-09T23:50:21.9482894Z 
2019-09-09T23:50:21.9483165Z running 123 tests
2019-09-09T23:50:48.4575812Z .iiiii...i.....i..i...i..i.i.i..i.ii..i.i.....i..i....ii..........iiii..........i...ii...i.......ii. 100/123
2019-09-09T23:50:53.5910683Z i.i.i......iii.i.....ii
2019-09-09T23:50:53.5911342Z 
2019-09-09T23:50:53.5911392Z  finished in 31.833
2019-09-09T23:50:53.5922646Z Uplifting stage1 rustc (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-09T23:50:53.5923610Z Copying stage2 rustc from stage1 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-gnu)
---
2019-09-10T00:06:21.6457359Z 
2019-09-10T00:06:21.6462060Z    Doc-tests core
2019-09-10T00:06:27.4393371Z 
2019-09-10T00:06:27.4400181Z running 2400 tests
2019-09-10T00:06:39.7861786Z ......iiiii......................................................................................... 100/2400
2019-09-10T00:06:51.7363261Z ...........................................................................ii....................... 200/2400
2019-09-10T00:07:05.0871198Z .................................................................................................i.. 300/2400
2019-09-10T00:07:19.7539724Z .................................................................................................... 400/2400
2019-09-10T00:07:31.2529745Z ............................................i..i.................iiii............................... 500/2400
2019-09-10T00:07:53.7999974Z .................................................................................................... 700/2400
2019-09-10T00:08:05.1757609Z .................................................................................................... 800/2400
2019-09-10T00:08:16.8675103Z .................................................................................................... 900/2400
2019-09-10T00:08:28.3553305Z .................................................................................................... 1000/2400
---
2019-09-10T00:13:50.2921131Z 
2019-09-10T00:13:50.2921339Z running 763 tests
2019-09-10T00:13:50.3282353Z .................................................................................................... 100/763
2019-09-10T00:13:50.7613589Z .................................................................................................... 200/763
2019-09-10T00:13:50.9158551Z ......................................................thread '.<unnamed>' panicked at 'explicit panic', src/libstd/io/buffered.rs:1403:17
2019-09-10T00:13:50.9258680Z ..thread '<unnamed>' panicked at 'explicit panic', src/libstd/io/stdio.rs:854:13
2019-09-10T00:13:50.9731793Z .................................................................................................. 400/763
2019-09-10T00:13:53.0530769Z .................................................................................................... 500/763
2019-09-10T00:13:53.0893648Z ....................thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RecvError', src/libcore/result.rs:1165:5
---
2019-09-10T00:14:05.0010476Z 
2019-09-10T00:14:05.0011529Z running 991 tests
2019-09-10T00:14:28.8300580Z i................................................................................................... 100/991
2019-09-10T00:14:41.6740685Z .................................................................................................... 200/991
2019-09-10T00:14:50.9059211Z .................iii......i......i...i......i....................................................... 300/991
2019-09-10T00:14:57.4169354Z .................................................................................................... 400/991
2019-09-10T00:15:06.1920676Z ..................................i..i.................................ii........................... 500/991
2019-09-10T00:15:22.9853452Z .................................................................................................... 700/991
2019-09-10T00:15:22.9853452Z .................................................................................................... 700/991
2019-09-10T00:15:32.0743588Z .................iiii............................................................................... 800/991
2019-09-10T00:15:48.5742032Z .................................................................................................... 900/991
2019-09-10T00:15:57.0793893Z .......................................iiii................................................
2019-09-10T00:15:57.0796827Z 
2019-09-10T00:15:57.0921155Z  finished in 274.788
2019-09-10T00:15:57.0943521Z Testing term stage1 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-10T00:15:57.4558003Z    Compiling term v0.0.0 (/checkout/src/libterm)
---
2019-09-10T00:33:53.1274758Z  finished in 40.223
2019-09-10T00:33:53.1653964Z Check compiletest suite=run-make-fulldeps mode=run-make (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-10T00:33:53.3440853Z 
2019-09-10T00:33:53.3441487Z running 202 tests
2019-09-10T00:34:30.6114207Z ....................i...ii.................................................................i........ 100/202
2019-09-10T00:35:25.4571968Z ................................iiii.......i...........iiii.iii......F.............................i 200/202
2019-09-10T00:35:28.5552577Z failures:
2019-09-10T00:35:28.5555931Z thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:536:22
2019-09-10T00:35:28.5556573Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
2019-09-10T00:35:28.5568011Z 
2019-09-10T00:35:28.5568011Z 
2019-09-10T00:35:28.5569896Z ---- [run-make] run-make-fulldeps/save-analysis stdout ----
2019-09-10T00:35:28.5572131Z 
2019-09-10T00:35:28.5572442Z error: make failed
2019-09-10T00:35:28.5572638Z status: exit code: 2
2019-09-10T00:35:28.5572833Z command: "make"
2019-09-10T00:35:28.5572979Z stdout:
2019-09-10T00:35:28.5573540Z ------------------------------------------
2019-09-10T00:35:28.5574820Z LD_LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis:/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu/release/deps:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib" '/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc' --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis -L /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis  krate2.rs
2019-09-10T00:35:28.5575984Z LD_LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis:/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu/release/deps:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib" '/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc' --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis -L /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis  foo.rs -Zsave-analysis
2019-09-10T00:35:28.5576518Z Makefile:6: recipe for target 'code' failed
2019-09-10T00:35:28.5577275Z ------------------------------------------
2019-09-10T00:35:28.5577657Z stderr:
2019-09-10T00:35:28.5578037Z ------------------------------------------
2019-09-10T00:35:28.5578240Z warning: unused `std::result::Result` that must be used
2019-09-10T00:35:28.5578240Z warning: unused `std::result::Result` that must be used
2019-09-10T00:35:28.5578630Z  --> krate2.rs:7:5
2019-09-10T00:35:28.5578832Z   |
2019-09-10T00:35:28.5579006Z 7 |     std::io::stdout().write_all(b"hello world!\n");
2019-09-10T00:35:28.5579317Z   |
2019-09-10T00:35:28.5579482Z   = note: `#[warn(unused_must_use)]` on by default
2019-09-10T00:35:28.5579482Z   = note: `#[warn(unused_must_use)]` on by default
2019-09-10T00:35:28.5579638Z   = note: this `Result` may be an `Err` variant, which should be handled
2019-09-10T00:35:28.5579770Z 
2019-09-10T00:35:28.5579942Z warning: unused import: `graphviz::RenderOption`
2019-09-10T00:35:28.5580308Z   --> foo.rs:13:5
2019-09-10T00:35:28.5580503Z    |
2019-09-10T00:35:28.5580673Z 13 | use graphviz::RenderOption;
2019-09-10T00:35:28.5580970Z    |
2019-09-10T00:35:28.5581763Z    = note: `#[warn(unused_imports)]` on by default
2019-09-10T00:35:28.5581950Z 
2019-09-10T00:35:28.5582102Z warning: unused import: `HashSet`
2019-09-10T00:35:28.5582102Z warning: unused import: `HashSet`
2019-09-10T00:35:28.5582521Z   --> foo.rs:14:32
2019-09-10T00:35:28.5582723Z    |
2019-09-10T00:35:28.5582874Z 14 | use std::collections::{HashMap,HashSet};
2019-09-10T00:35:28.5583176Z 
2019-09-10T00:35:28.5583322Z warning: unused import: `std::mem::size_of`
2019-09-10T00:35:28.5583946Z   --> foo.rs:23:5
2019-09-10T00:35:28.5584148Z    |
2019-09-10T00:35:28.5584148Z    |
2019-09-10T00:35:28.5584296Z 23 | use std::mem::size_of;
2019-09-10T00:35:28.5584458Z    |     ^^^^^^^^^^^^^^^^^
2019-09-10T00:35:28.5584599Z 
2019-09-10T00:35:28.5584753Z warning: trait objects without an explicit `dyn` are deprecated
2019-09-10T00:35:28.5586066Z   --> foo.rs:38:16
2019-09-10T00:35:28.5589556Z    |
2019-09-10T00:35:28.5590095Z 38 |     fn foo(x: &Write) {}
2019-09-10T00:35:28.5590693Z    |
2019-09-10T00:35:28.5591385Z    = note: `#[warn(bare_trait_objects)]` on by default
2019-09-10T00:35:28.5591602Z 
2019-09-10T00:35:28.5591856Z warning: unused import: `std::io::Write`
---
2019-09-10T00:35:28.5601844Z    |
2019-09-10T00:35:28.5602311Z 70 |             use std::io::Write;
2019-09-10T00:35:28.5602671Z    |                 ^^^^^^^^^^^^^^
2019-09-10T00:35:28.5602850Z 
2019-09-10T00:35:28.5603037Z warning: type `nested_struct` should have an upper camel case name
2019-09-10T00:35:28.5603521Z   --> foo.rs:79:20
2019-09-10T00:35:28.5603935Z 79 |         pub struct nested_struct {
2019-09-10T00:35:28.5603935Z 79 |         pub struct nested_struct {
2019-09-10T00:35:28.5604091Z    |                    ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `NestedStruct`
2019-09-10T00:35:28.5604420Z    = note: `#[warn(non_camel_case_types)]` on by default
2019-09-10T00:35:28.5604706Z 
2019-09-10T00:35:28.5604706Z 
2019-09-10T00:35:28.5604868Z warning: type `nested_enum` should have an upper camel case name
2019-09-10T00:35:28.5605228Z   --> foo.rs:83:18
2019-09-10T00:35:28.5605415Z    |
2019-09-10T00:35:28.5605784Z 83 |         pub enum nested_enum {
2019-09-10T00:35:28.5606101Z    |                  ^^^^^^^^^^^ help: convert the identifier to upper camel case: `NestedEnum`
2019-09-10T00:35:28.5606231Z 
2019-09-10T00:35:28.5606628Z warning: unused import: `sub::sub2 as msalias`
2019-09-10T00:35:28.5607001Z  --> SubDir/mod.rs:3:5
2019-09-10T00:35:28.5607196Z   |
2019-09-10T00:35:28.5607388Z 3 | use sub::sub2 as msalias;
2019-09-10T00:35:28.5607670Z 
2019-09-10T00:35:28.5607670Z 
2019-09-10T00:35:28.5607836Z warning: unused import: `sub::sub2`
2019-09-10T00:35:28.5608786Z  --> SubDir/mod.rs:4:5
2019-09-10T00:35:28.5609050Z   |
2019-09-10T00:35:28.5609201Z 4 | use sub::sub2;
2019-09-10T00:35:28.5609503Z 
2019-09-10T00:35:28.5609503Z 
2019-09-10T00:35:28.5609653Z warning: type `nested_struct` should have an upper camel case name
2019-09-10T00:35:28.5610070Z   --> SubDir/mod.rs:19:20
2019-09-10T00:35:28.5610449Z 19 |         pub struct nested_struct {
2019-09-10T00:35:28.5610449Z 19 |         pub struct nested_struct {
2019-09-10T00:35:28.5610630Z    |                    ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `NestedStruct`
2019-09-10T00:35:28.5610768Z 
2019-09-10T00:35:28.5611214Z warning: type `nofields` should have an upper camel case name
2019-09-10T00:35:28.5611670Z   --> foo.rs:96:8
2019-09-10T00:35:28.5611872Z    |
2019-09-10T00:35:28.5612042Z 96 | struct nofields;
2019-09-10T00:35:28.5612199Z    |        ^^^^^^^^ help: convert the identifier to upper camel case: `Nofields`
2019-09-10T00:35:28.5612485Z warning: type `some_fields` should have an upper camel case name
2019-09-10T00:35:28.5612991Z   --> foo.rs:99:8
2019-09-10T00:35:28.5613216Z    |
2019-09-10T00:35:28.5613366Z 99 | struct some_fields {
2019-09-10T00:35:28.5613366Z 99 | struct some_fields {
2019-09-10T00:35:28.5613522Z    |        ^^^^^^^^^^^ help: convert the identifier to upper camel case: `SomeFields`
2019-09-10T00:35:28.5613677Z 
2019-09-10T00:35:28.5613828Z warning: trait objects without an explicit `dyn` are deprecated
2019-09-10T00:35:28.5615517Z    --> foo.rs:251:16
2019-09-10T00:35:28.5615815Z     |
2019-09-10T00:35:28.5616004Z 251 |     let s: Box<SomeTrait> = box some_fields {field1: 43};
2019-09-10T00:35:28.5616872Z 
2019-09-10T00:35:28.5617044Z warning: trait objects without an explicit `dyn` are deprecated
2019-09-10T00:35:28.5617517Z    --> foo.rs:267:24
2019-09-10T00:35:28.5617738Z     |
2019-09-10T00:35:28.5617738Z     |
2019-09-10T00:35:28.5617915Z 267 |     let s4 = s3 as Box<SomeTrait>;
2019-09-10T00:35:28.5618206Z 
2019-09-10T00:35:28.5618359Z warning: trait objects without an explicit `dyn` are deprecated
2019-09-10T00:35:28.5618763Z    --> foo.rs:273:32
2019-09-10T00:35:28.5618966Z     |
2019-09-10T00:35:28.5618966Z     |
2019-09-10T00:35:28.5619273Z 273 |     let closure = |x: u32, s: &SomeTrait| {
2019-09-10T00:35:28.5619566Z 
2019-09-10T00:35:28.5619566Z 
2019-09-10T00:35:28.5619711Z warning: type `blah` should have an upper camel case name
2019-09-10T00:35:28.5620115Z    --> foo.rs:281:12
2019-09-10T00:35:28.5620800Z 281 | pub struct blah {
2019-09-10T00:35:28.5621243Z     |            ^^^^ help: convert the identifier to upper camel case: `Blah`
2019-09-10T00:35:28.5621873Z 
2019-09-10T00:35:28.5622060Z warning: trait objects without an explicit `dyn` are deprecated
---
2019-09-10T00:35:28.5629805Z 
2019-09-10T00:35:28.5634053Z warning: trait objects without an explicit `dyn` are deprecated
2019-09-10T00:35:28.5634668Z    --> foo.rs:418:10
2019-09-10T00:35:28.5634902Z     |
2019-09-10T00:35:28.5636202Z 418 |         <Error + 'static>::is::<T>(self)
2019-09-10T00:35:28.5637887Z 
2019-09-10T00:35:28.5638045Z warning: unused variable: `s`
2019-09-10T00:35:28.5638414Z   --> foo.rs:35:9
2019-09-10T00:35:28.5638640Z    |
2019-09-10T00:35:28.5638640Z    |
2019-09-10T00:35:28.5638789Z 35 |     let s = sub_struct{ field2: 45u32, };
2019-09-10T00:35:28.5638935Z    |         ^ help: consider prefixing with an underscore: `_s`
2019-09-10T00:35:28.5640204Z    = note: `#[warn(unused_variables)]` on by default
2019-09-10T00:35:28.5640340Z 
2019-09-10T00:35:28.5640510Z warning: unused variable: `x`
2019-09-10T00:35:28.5641480Z   --> foo.rs:41:9
2019-09-10T00:35:28.5641480Z   --> foo.rs:41:9
2019-09-10T00:35:28.5641734Z    |
2019-09-10T00:35:28.5641894Z 41 |     let x = 42usize;
2019-09-10T00:35:28.5642068Z    |         ^ help: consider prefixing with an underscore: `_x`
2019-09-10T00:35:28.5643010Z warning: unused variable: `y`
2019-09-10T00:35:28.5643474Z   --> foo.rs:47:9
2019-09-10T00:35:28.5643694Z    |
2019-09-10T00:35:28.5643694Z    |
2019-09-10T00:35:28.5643869Z 47 |     let y = x.1;
2019-09-10T00:35:28.5644021Z    |         ^ help: consider prefixing with an underscore: `_y`
2019-09-10T00:35:28.5644308Z warning: unused variable: `i`
2019-09-10T00:35:28.5644842Z   --> foo.rs:34:28
2019-09-10T00:35:28.5645037Z    |
2019-09-10T00:35:28.5645037Z    |
2019-09-10T00:35:28.5645873Z 34 | fn test_alias<I: Iterator>(i: Option<<I as Iterator>::Item>) {
2019-09-10T00:35:28.5646074Z    |                            ^ help: consider prefixing with an underscore: `_i`
2019-09-10T00:35:28.5646405Z warning: unused variable: `x`
2019-09-10T00:35:28.5647088Z   --> foo.rs:38:12
2019-09-10T00:35:28.5647297Z    |
2019-09-10T00:35:28.5647297Z    |
2019-09-10T00:35:28.5647444Z 38 |     fn foo(x: &Write) {}
2019-09-10T00:35:28.5647791Z    |            ^ help: consider prefixing with an underscore: `_x`
2019-09-10T00:35:28.5648091Z warning: unused variable: `f1`
2019-09-10T00:35:28.5648464Z    --> foo.rs:212:40
2019-09-10T00:35:28.5648688Z     |
2019-09-10T00:35:28.5648688Z     |
2019-09-10T00:35:28.5649536Z 212 |         SomeStructEnum::EnumStruct2{f1:f1, f2:f_2} => println(&f_2.field1.to_string()),
2019-09-10T00:35:28.5649744Z     |                                        ^^ help: consider prefixing with an underscore: `_f1`
2019-09-10T00:35:28.5650036Z warning: unused variable: `f2`
2019-09-10T00:35:28.5650464Z    --> foo.rs:222:29
2019-09-10T00:35:28.5650723Z     |
2019-09-10T00:35:28.5650723Z     |
2019-09-10T00:35:28.5651165Z 222 |         EnumStruct2{f1, f2: f2} => println(&f1.field1.to_string()),
2019-09-10T00:35:28.5651339Z     |                             ^^ help: consider prefixing with an underscore: `_f2`
2019-09-10T00:35:28.5651671Z warning: unused variable: `f2`
2019-09-10T00:35:28.5652731Z    --> foo.rs:223:49
2019-09-10T00:35:28.5653026Z     |
2019-09-10T00:35:28.5653026Z     |
2019-09-10T00:35:28.5656460Z 223 |         EnumStruct3{f1, f3: SomeEnum::Ints(..), f2} => println(&f1.field1.to_string()),
2019-09-10T00:35:28.5656884Z     |                                                 ^^ help: try ignoring the field: `f2: _`
2019-09-10T00:35:28.5657207Z warning: unused variable: `y`
2019-09-10T00:35:28.5657710Z    --> foo.rs:240:13
2019-09-10T00:35:28.5657924Z     |
2019-09-10T00:35:28.5657924Z     |
2019-09-10T00:35:28.5659918Z 240 |     let (x, y): (u32, u32) = (5, 3);
2019-09-10T00:35:28.5660019Z     |             ^ help: consider prefixing with an underscore: `_y`
2019-09-10T00:35:28.5660137Z warning: unused variable: `r`
2019-09-10T00:35:28.5660680Z    --> foo.rs:263:9
2019-09-10T00:35:28.5660731Z     |
2019-09-10T00:35:28.5660731Z     |
2019-09-10T00:35:28.5661407Z 263 |     let r = some_fields::stat(y);
2019-09-10T00:35:28.5661490Z     |         ^ help: consider prefixing with an underscore: `_r`
2019-09-10T00:35:28.5661566Z warning: unused variable: `r`
2019-09-10T00:35:28.5662940Z    --> foo.rs:265:9
2019-09-10T00:35:28.5663002Z     |
2019-09-10T00:35:28.5663002Z     |
2019-09-10T00:35:28.5663046Z 265 |     let r = SubTrait::stat2(&*s3);
2019-09-10T00:35:28.5663689Z     |         ^ help: consider prefixing with an underscore: `_r`
2019-09-10T00:35:28.5663770Z warning: unused variable: `z`
2019-09-10T00:35:28.5664047Z    --> foo.rs:278:9
2019-09-10T00:35:28.5664109Z     |
2019-09-10T00:35:28.5664109Z     |
2019-09-10T00:35:28.5664154Z 278 |     let z = closure(10, &*s);
2019-09-10T00:35:28.5664204Z     |         ^ help: consider prefixing with an underscore: `_z`
2019-09-10T00:35:28.5664295Z warning: unused variable: `a`
2019-09-10T00:35:28.5664506Z    --> foo.rs:236:28
2019-09-10T00:35:28.5664551Z     |
2019-09-10T00:35:28.5664551Z     |
2019-09-10T00:35:28.5664615Z 236 | fn hello<X: SomeTrait>((z, a) : (u32, String), ex: X) {
2019-09-10T00:35:28.5664681Z     |                            ^ help: consider prefixing with an underscore: `_a`
2019-09-10T00:35:28.5664773Z warning: unused variable: `ut`
2019-09-10T00:35:28.5664991Z    --> foo.rs:315:9
2019-09-10T00:35:28.5665035Z     |
2019-09-10T00:35:28.5665035Z     |
2019-09-10T00:35:28.5665284Z 315 |     let ut = "Les Miséééééééérables";
2019-09-10T00:35:28.5665357Z     |         ^^ help: consider prefixing with an underscore: `_ut`
2019-09-10T00:35:28.5665431Z warning: unused variable: `vs`
2019-09-10T00:35:28.5665816Z    --> foo.rs:324:9
2019-09-10T00:35:28.5665859Z     |
2019-09-10T00:35:28.5665859Z     |
2019-09-10T00:35:28.5665900Z 324 |     let vs = variable_str!(32);
2019-09-10T00:35:28.5665948Z     |         ^^ help: consider prefixing with an underscore: `_vs`
2019-09-10T00:35:28.5666038Z warning: unused variable: `candidates`
2019-09-10T00:35:28.5666240Z    --> foo.rs:326:13
2019-09-10T00:35:28.5666299Z     |
2019-09-10T00:35:28.5666299Z     |
2019-09-10T00:35:28.5666840Z 326 |     let mut candidates: RefCell<HashMap<&'static str, &'static str>> = RefCell::new(HashMap::new());
2019-09-10T00:35:28.5666906Z     |             ^^^^^^^^^^ help: consider prefixing with an underscore: `_candidates`
2019-09-10T00:35:28.5667012Z warning: unused variable: `s1`
2019-09-10T00:35:28.5667221Z    --> foo.rs:330:9
2019-09-10T00:35:28.5667264Z     |
2019-09-10T00:35:28.5667264Z     |
2019-09-10T00:35:28.5667321Z 330 |     let s1 = nofields;
2019-09-10T00:35:28.5667368Z     |         ^^ help: consider prefixing with an underscore: `_s1`
2019-09-10T00:35:28.5667513Z warning: unused variable: `s3`
2019-09-10T00:35:28.5667718Z    --> foo.rs:332:9
2019-09-10T00:35:28.5667760Z     |
2019-09-10T00:35:28.5667760Z     |
2019-09-10T00:35:28.5667806Z 332 |     let s3: some_fields = some_fields{ field1: 55};
2019-09-10T00:35:28.5667872Z     |         ^^ help: consider prefixing with an underscore: `_s3`
2019-09-10T00:35:28.5667943Z warning: unused variable: `s4`
2019-09-10T00:35:28.5668170Z    --> foo.rs:333:9
2019-09-10T00:35:28.5668213Z     |
2019-09-10T00:35:28.5668213Z     |
2019-09-10T00:35:28.5668259Z 333 |     let s4: msalias::nested_struct = sub::sub2::nested_struct{ field2: 55};
2019-09-10T00:35:28.5668420Z     |         ^^ help: consider prefixing with an underscore: `_s4`
2019-09-10T00:35:28.5668521Z warning: unused variable: `s4`
2019-09-10T00:35:28.5668749Z    --> foo.rs:334:9
2019-09-10T00:35:28.5668809Z     |
2019-09-10T00:35:28.5668809Z     |
2019-09-10T00:35:28.5668855Z 334 |     let s4: msalias::nested_struct = sub2::nested_struct{ field2: 55};
2019-09-10T00:35:28.5668906Z     |         ^^ help: consider prefixing with an underscore: `_s4`
2019-09-10T00:35:28.5668996Z warning: unused variable: `s`
2019-09-10T00:35:28.5669196Z    --> foo.rs:337:9
2019-09-10T00:35:28.5669239Z     |
2019-09-10T00:35:28.5669239Z     |
2019-09-10T00:35:28.5669300Z 337 |     let s = SameDir::SameStruct{name: "Bob".to_string()};
2019-09-10T00:35:28.5669350Z     |         ^ help: consider prefixing with an underscore: `_s`
2019-09-10T00:35:28.5669428Z warning: unused variable: `s`
2019-09-10T00:35:28.5669647Z    --> foo.rs:338:9
2019-09-10T00:35:28.5669690Z     |
2019-09-10T00:35:28.5669690Z     |
2019-09-10T00:35:28.5669742Z 338 |     let s = SubDir::SubStruct{name:"Bob".to_string()};
2019-09-10T00:35:28.5669809Z     |         ^ help: consider prefixing with an underscore: `_s`
2019-09-10T00:35:28.5669882Z warning: variable `x` is assigned to, but never used
2019-09-10T00:35:28.5670088Z    --> foo.rs:299:21
2019-09-10T00:35:28.5670149Z     |
2019-09-10T00:35:28.5670149Z     |
2019-09-10T00:35:28.5670190Z 299 |             let mut x = $src;
2019-09-10T00:35:28.5670292Z ...
2019-09-10T00:35:28.5670292Z ...
2019-09-10T00:35:28.5670335Z 378 |     internal_vars!(x);
2019-09-10T00:35:28.5670613Z     |
2019-09-10T00:35:28.5670613Z     |
2019-09-10T00:35:28.5670854Z     = note: consider using `_x` instead
2019-09-10T00:35:28.5670926Z warning: value assigned to `x` is never read
2019-09-10T00:35:28.5671496Z    --> foo.rs:300:13
2019-09-10T00:35:28.5671546Z     |
2019-09-10T00:35:28.5671587Z 300 |             x += 100;
2019-09-10T00:35:28.5671587Z 300 |             x += 100;
2019-09-10T00:35:28.5671631Z     |             ^
2019-09-10T00:35:28.5671700Z ...
2019-09-10T00:35:28.5671743Z 378 |     internal_vars!(x);
2019-09-10T00:35:28.5672051Z     |
2019-09-10T00:35:28.5672096Z     = note: `#[warn(unused_assignments)]` on by default
2019-09-10T00:35:28.5672096Z     = note: `#[warn(unused_assignments)]` on by default
2019-09-10T00:35:28.5672145Z     = help: maybe it is overwritten before being read?
2019-09-10T00:35:28.5672236Z warning: unused variable: `x`
2019-09-10T00:35:28.5672443Z    --> foo.rs:122:14
2019-09-10T00:35:28.5672488Z     |
2019-09-10T00:35:28.5672488Z     |
2019-09-10T00:35:28.5672730Z 122 |     fn stat2(x: &Self) -> u32 {
2019-09-10T00:35:28.5672784Z     |              ^ help: consider prefixing with an underscore: `_x`
2019-09-10T00:35:28.5672858Z warning: unused variable: `x`
2019-09-10T00:35:28.5673236Z    --> foo.rs:144:14
2019-09-10T00:35:28.5673281Z     |
2019-09-10T00:35:28.5673281Z     |
2019-09-10T00:35:28.5673512Z 144 |     fn stat2(x: &some_fields) -> u32 {
2019-09-10T00:35:28.5673594Z     |              ^ help: consider prefixing with an underscore: `_x`
2019-09-10T00:35:28.5673670Z warning: function cannot return without recursing
2019-09-10T00:35:28.5673880Z    --> foo.rs:160:5
2019-09-10T00:35:28.5673941Z     |
2019-09-10T00:35:28.5673941Z     |
2019-09-10T00:35:28.5674167Z 160 |     fn Method(&self, x: u32) -> u32 {
2019-09-10T00:35:28.5674222Z     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
2019-09-10T00:35:28.5674286Z 161 |         self.Method(x);
2019-09-10T00:35:28.5674518Z     |         -------------- recursive call site
2019-09-10T00:35:28.5674679Z     = note: `#[warn(unconditional_recursion)]` on by default
2019-09-10T00:35:28.5674679Z     = note: `#[warn(unconditional_recursion)]` on by default
2019-09-10T00:35:28.5674732Z     = help: a `loop` may express intention better if this is on purpose
2019-09-10T00:35:28.5674816Z warning: variable does not need to be mutable
2019-09-10T00:35:28.5675049Z    --> foo.rs:326:9
2019-09-10T00:35:28.5675094Z     |
2019-09-10T00:35:28.5675094Z     |
2019-09-10T00:35:28.5678237Z 326 |     let mut candidates: RefCell<HashMap<&'static str, &'static str>> = RefCell::new(HashMap::new());
2019-09-10T00:35:28.5679984Z     |         |
2019-09-10T00:35:28.5680029Z     |         help: remove this `mut`
2019-09-10T00:35:28.5680093Z     |
2019-09-10T00:35:28.5680139Z     = note: `#[warn(unused_mut)]` on by default
---
2019-09-10T00:35:28.5681516Z 
2019-09-10T00:35:28.5681576Z warning: static item is never used: `uni`
2019-09-10T00:35:28.5681789Z   --> foo.rs:27:1
2019-09-10T00:35:28.5681834Z    |
2019-09-10T00:35:28.5682390Z 27 | static uni: &'static str = "Les Miséééééééérables";
2019-09-10T00:35:28.5682517Z    |
2019-09-10T00:35:28.5682586Z    = note: `#[warn(dead_code)]` on by default
2019-09-10T00:35:28.5682617Z 
2019-09-10T00:35:28.5682660Z warning: static item is never used: `bob`
2019-09-10T00:35:28.5682660Z warning: static item is never used: `bob`
2019-09-10T00:35:28.5683425Z   --> foo.rs:30:1
2019-09-10T00:35:28.5683522Z    |
2019-09-10T00:35:28.5683570Z 30 | static bob: Option<graphviz::RenderOption> = None;
2019-09-10T00:35:28.5683667Z 
2019-09-10T00:35:28.5683712Z warning: function is never used: `test_alias`
2019-09-10T00:35:28.5684043Z   --> foo.rs:34:1
2019-09-10T00:35:28.5684090Z    |
2019-09-10T00:35:28.5684090Z    |
2019-09-10T00:35:28.5684155Z 34 | fn test_alias<I: Iterator>(i: Option<<I as Iterator>::Item>) {
2019-09-10T00:35:28.5684255Z 
2019-09-10T00:35:28.5684255Z 
2019-09-10T00:35:28.5684315Z warning: field is never used: `ac_lut`
2019-09-10T00:35:28.5684540Z   --> foo.rs:53:5
2019-09-10T00:35:28.5684585Z    |
2019-09-10T00:35:28.5684630Z 53 |     ac_lut: Option<[(i16, u8); 1 << LUT_BITS]>,
2019-09-10T00:35:28.5684727Z 
2019-09-10T00:35:28.5684727Z 
2019-09-10T00:35:28.5684770Z warning: struct is never constructed: `TupStruct`
2019-09-10T00:35:28.5684995Z   --> foo.rs:56:1
2019-09-10T00:35:28.5685040Z    |
2019-09-10T00:35:28.5685084Z 56 | struct TupStruct(isize, isize, Box<str>);
2019-09-10T00:35:28.5685178Z 
2019-09-10T00:35:28.5685178Z 
2019-09-10T00:35:28.5685221Z warning: function is never used: `test_tup_struct`
2019-09-10T00:35:28.5685426Z   --> foo.rs:58:1
2019-09-10T00:35:28.5685470Z    |
2019-09-10T00:35:28.5685932Z 58 | fn test_tup_struct(x: TupStruct) -> isize {
2019-09-10T00:35:28.5686014Z 
2019-09-10T00:35:28.5686014Z 
2019-09-10T00:35:28.5686075Z warning: enum is never used: `nested_enum`
2019-09-10T00:35:28.5686291Z   --> foo.rs:83:9
2019-09-10T00:35:28.5686336Z    |
2019-09-10T00:35:28.5686379Z 83 |         pub enum nested_enum {
2019-09-10T00:35:28.5686472Z 
2019-09-10T00:35:28.5686515Z warning: static item is never used: `yy`
2019-09-10T00:35:28.5686743Z  --> SubDir/mod.rs:6:1
2019-09-10T00:35:28.5686788Z   |
2019-09-10T00:35:28.5686788Z   |
2019-09-10T00:35:28.5686831Z 6 | static yy: usize = 25;
2019-09-10T00:35:28.5686921Z 
2019-09-10T00:35:28.5686921Z 
2019-09-10T00:35:28.5686964Z warning: function is never used: `hello`
2019-09-10T00:35:28.5687979Z   --> SubDir/mod.rs:11:13
2019-09-10T00:35:28.5688111Z 11 |             pub fn hello() {
2019-09-10T00:35:28.5688173Z    |             ^^^^^^^^^^^^^^
2019-09-10T00:35:28.5688203Z 
2019-09-10T00:35:28.5688203Z 
2019-09-10T00:35:28.5688265Z warning: function is never used: `hello`
2019-09-10T00:35:28.5688496Z   --> SubDir/mod.rs:15:9
2019-09-10T00:35:28.5688710Z 15 |         pub fn hello() {
2019-09-10T00:35:28.5688840Z    |         ^^^^^^^^^^^^^^
2019-09-10T00:35:28.5688869Z 
2019-09-10T00:35:28.5688913Z warning: struct is never constructed: `nested_struct`
2019-09-10T00:35:28.5688913Z warning: struct is never constructed: `nested_struct`
2019-09-10T00:35:28.5689179Z   --> SubDir/mod.rs:19:9
2019-09-10T00:35:28.5689224Z    |
2019-09-10T00:35:28.5689267Z 19 |         pub struct nested_struct {
2019-09-10T00:35:28.5689312Z    |         ^^^^^^^^^^^^^^^^^^^^^^^^
2019-09-10T00:35:28.5689360Z 
2019-09-10T00:35:28.5689403Z warning: method is never used: `stat2`
2019-09-10T00:35:28.5689612Z    --> foo.rs:144:5
2019-09-10T00:35:28.5689674Z     |
2019-09-10T00:35:28.5689907Z 144 |     fn stat2(x: &some_fields) -> u32 {
2019-09-10T00:35:28.5689996Z 
2019-09-10T00:35:28.5689996Z 
2019-09-10T00:35:28.5690056Z warning: method is never used: `align_to`
2019-09-10T00:35:28.5690269Z    --> foo.rs:148:5
2019-09-10T00:35:28.5690313Z     |
2019-09-10T00:35:28.5690372Z 148 |     fn align_to<T>(&mut self) {
2019-09-10T00:35:28.5690775Z 
2019-09-10T00:35:28.5690835Z warning: method is never used: `test`
2019-09-10T00:35:28.5691115Z    --> foo.rs:152:5
2019-09-10T00:35:28.5691160Z     |
2019-09-10T00:35:28.5691160Z     |
2019-09-10T00:35:28.5691203Z 152 |     fn test(&mut self) {
2019-09-10T00:35:28.5691247Z     |     ^^^^^^^^^^^^^^^^^^
2019-09-10T00:35:28.5691297Z 
2019-09-10T00:35:28.5691342Z warning: function is never used: `f_with_params`
2019-09-10T00:35:28.5691554Z    --> foo.rs:174:1
2019-09-10T00:35:28.5691615Z     |
2019-09-10T00:35:28.5691659Z 174 | fn f_with_params<T: SomeTrait>(x: &T) {
2019-09-10T00:35:28.5691736Z 
2019-09-10T00:35:28.5691796Z warning: variant is never constructed: `Ints`
2019-09-10T00:35:28.5692015Z    --> foo.rs:181:5
2019-09-10T00:35:28.5692060Z     |
2019-09-10T00:35:28.5692060Z     |
2019-09-10T00:35:28.5692118Z 181 |     Ints(isize, isize),
2019-09-10T00:35:28.5692191Z 
2019-09-10T00:35:28.5692191Z 
2019-09-10T00:35:28.5692242Z warning: variant is never constructed: `Floats`
2019-09-10T00:35:28.5692470Z    --> foo.rs:182:5
2019-09-10T00:35:28.5692514Z     |
2019-09-10T00:35:28.5692556Z 182 |     Floats(f64, f64),
2019-09-10T00:35:28.5692645Z 
2019-09-10T00:35:28.5692689Z warning: variant is never constructed: `SomeConst1`
2019-09-10T00:35:28.5692896Z    --> foo.rs:189:5
2019-09-10T00:35:28.5692958Z     |
2019-09-10T00:35:28.5692958Z     |
2019-09-10T00:35:28.5692999Z 189 |     SomeConst1,
2019-09-10T00:35:28.5693043Z     |     ^^^^^^^^^^
2019-09-10T00:35:28.5693071Z 
2019-09-10T00:35:28.5693133Z warning: variant is never constructed: `EnumStruct`
2019-09-10T00:35:28.5693339Z    --> foo.rs:195:5
2019-09-10T00:35:28.5693383Z     |
2019-09-10T00:35:28.5693559Z 195 |     EnumStruct{a:isize, b:isize},
2019-09-10T00:35:28.5693635Z 
2019-09-10T00:35:28.5693635Z 
2019-09-10T00:35:28.5693679Z warning: variant is never constructed: `EnumStruct3`
2019-09-10T00:35:28.5694152Z    --> foo.rs:197:5
2019-09-10T00:35:28.5694196Z     |
2019-09-10T00:35:28.5694447Z 197 |     EnumStruct3{f1:MyType, f2:MyType, f3:SomeEnum<'static>}
2019-09-10T00:35:28.5694546Z 
2019-09-10T00:35:28.5694546Z 
2019-09-10T00:35:28.5694589Z warning: function is never used: `matchSomeStructEnum2`
2019-09-10T00:35:28.5694788Z    --> foo.rs:218:1
2019-09-10T00:35:28.5694846Z     |
2019-09-10T00:35:28.5694889Z 218 | fn matchSomeStructEnum2(se: SomeStructEnum) {
2019-09-10T00:35:28.5694964Z 
2019-09-10T00:35:28.5695023Z warning: field is never used: `used_link_args`
2019-09-10T00:35:28.5695225Z    --> foo.rs:282:5
2019-09-10T00:35:28.5695275Z     |
2019-09-10T00:35:28.5695275Z     |
2019-09-10T00:35:28.5695521Z 282 |     used_link_args: RefCell<[&'static str; 0]>,
2019-09-10T00:35:28.5695601Z 
2019-09-10T00:35:28.5695717Z warning: struct is never constructed: `CharSearcher`
2019-09-10T00:35:28.5695969Z    --> foo.rs:405:1
2019-09-10T00:35:28.5696012Z     |
2019-09-10T00:35:28.5696012Z     |
2019-09-10T00:35:28.5696259Z 405 | struct CharSearcher<'a>(<CharEqPattern as Pattern<'a>>::Searcher);
2019-09-10T00:35:28.5696361Z 
2019-09-10T00:35:28.5696403Z warning: function is never used: `test_format_args`
2019-09-10T00:35:28.5696604Z    --> foo.rs:426:1
2019-09-10T00:35:28.5696663Z     |
---
2019-09-10T00:35:28.5697086Z     |
2019-09-10T00:35:28.5697143Z 437 | union TestUnion {
2019-09-10T00:35:28.5697184Z     | ^^^^^^^^^^^^^^^
2019-09-10T00:35:28.5697211Z 
2019-09-10T00:35:28.5697261Z warning: struct is never constructed: `StructWithDocs`
2019-09-10T00:35:28.5697784Z    --> foo.rs:458:1
2019-09-10T00:35:28.5697842Z     |
2019-09-10T00:35:28.5697883Z 458 | struct StructWithDocs;
2019-09-10T00:35:28.5697974Z 
2019-09-10T00:35:28.5698017Z warning: static variable `uni` should have an upper case name
2019-09-10T00:35:28.5698491Z   --> foo.rs:27:8
2019-09-10T00:35:28.5698570Z    |
2019-09-10T00:35:28.5698570Z    |
2019-09-10T00:35:28.5698829Z 27 | static uni: &'static str = "Les Miséééééééérables";
2019-09-10T00:35:28.5698883Z    |        ^^^ help: convert the identifier to upper case: `UNI`
2019-09-10T00:35:28.5698988Z    = note: `#[warn(non_upper_case_globals)]` on by default
2019-09-10T00:35:28.5699018Z 
2019-09-10T00:35:28.5699018Z 
2019-09-10T00:35:28.5699077Z warning: static variable `yy` should have an upper case name
2019-09-10T00:35:28.5699297Z   --> foo.rs:28:8
2019-09-10T00:35:28.5699340Z    |
2019-09-10T00:35:28.5699381Z 28 | static yy: usize = 25;
2019-09-10T00:35:28.5699454Z    |        ^^ help: convert the identifier to upper case: `YY`
2019-09-10T00:35:28.5699485Z 
2019-09-10T00:35:28.5699529Z warning: static variable `bob` should have an upper case name
2019-09-10T00:35:28.5700011Z   --> foo.rs:30:8
2019-09-10T00:35:28.5700059Z    |
2019-09-10T00:35:28.5700103Z 30 | static bob: Option<graphviz::RenderOption> = None;
2019-09-10T00:35:28.5700153Z    |        ^^^ help: convert the identifier to upper case: `BOB`
2019-09-10T00:35:28.5700244Z warning: unused `std::result::Result` that must be used
2019-09-10T00:35:28.5701835Z   --> foo.rs:63:5
2019-09-10T00:35:28.5701915Z    |
2019-09-10T00:35:28.5701915Z    |
2019-09-10T00:35:28.5701960Z 63 |     std::io::stdout().write_all(s.as_bytes());
2019-09-10T00:35:28.5702219Z    |
2019-09-10T00:35:28.5702285Z    = note: `#[warn(unused_must_use)]` on by default
2019-09-10T00:35:28.5702285Z    = note: `#[warn(unused_must_use)]` on by default
2019-09-10T00:35:28.5702345Z    = note: this `Result` may be an `Err` variant, which should be handled
2019-09-10T00:35:28.5702380Z 
2019-09-10T00:35:28.5702443Z warning: module `SameDir` should have a snake case name
2019-09-10T00:35:28.5702687Z   --> foo.rs:90:9
2019-09-10T00:35:28.5702733Z    |
2019-09-10T00:35:28.5702774Z 90 | pub mod SameDir;
2019-09-10T00:35:28.5702842Z    |         ^^^^^^^ help: convert the identifier to snake case: `same_dir`
2019-09-10T00:35:28.5702932Z    = note: `#[warn(non_snake_case)]` on by default
2019-09-10T00:35:28.5702981Z 
2019-09-10T00:35:28.5702981Z 
2019-09-10T00:35:28.5703025Z warning: module `SubDir` should have a snake case name
2019-09-10T00:35:28.5703233Z   --> foo.rs:91:9
2019-09-10T00:35:28.5703277Z    |
2019-09-10T00:35:28.5703335Z 91 | pub mod SubDir;
2019-09-10T00:35:28.5703384Z    |         ^^^^^^ help: convert the identifier to snake case: `sub_dir`
2019-09-10T00:35:28.5703425Z 
2019-09-10T00:35:28.5703487Z warning: module `SameDir2` should have a snake case name
2019-09-10T00:35:28.5703697Z   --> foo.rs:94:9
2019-09-10T00:35:28.5703741Z    |
2019-09-10T00:35:28.5703866Z 94 | pub mod SameDir2;
2019-09-10T00:35:28.5703944Z    |         ^^^^^^^^ help: convert the identifier to snake case: `same_dir2`
2019-09-10T00:35:28.5703977Z 
2019-09-10T00:35:28.5704023Z warning: trait method `Method` should have a snake case name
2019-09-10T00:35:28.5704434Z    --> foo.rs:110:8
2019-09-10T00:35:28.5704478Z     |
2019-09-10T00:35:28.5704692Z 110 |     fn Method(&self, x: u32) -> u32;
2019-09-10T00:35:28.5704744Z     |        ^^^^^^ help: convert the identifier to snake case: `method`
2019-09-10T00:35:28.5704794Z 
2019-09-10T00:35:28.5704836Z warning: function `matchSomeEnum` should have a snake case name
2019-09-10T00:35:28.5705033Z    --> foo.rs:200:4
2019-09-10T00:35:28.5705091Z     |
2019-09-10T00:35:28.5705132Z 200 | fn matchSomeEnum(val: SomeEnum) {
2019-09-10T00:35:28.5705191Z     |    ^^^^^^^^^^^^^ help: convert the identifier to snake case: `match_some_enum`
2019-09-10T00:35:28.5705222Z 
2019-09-10T00:35:28.5705290Z warning: function `matchSomeStructEnum` should have a snake case name
2019-09-10T00:35:28.5705490Z    --> foo.rs:209:4
2019-09-10T00:35:28.5705531Z     |
2019-09-10T00:35:28.5705592Z 209 | fn matchSomeStructEnum(se: SomeStructEnum) {
2019-09-10T00:35:28.5705642Z     |    ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `match_some_struct_enum`
2019-09-10T00:35:28.5705674Z 
2019-09-10T00:35:28.5705715Z warning: the `a:` in this pattern is redundant
2019-09-10T00:35:28.5705929Z    --> foo.rs:211:36
2019-09-10T00:35:28.5705970Z     |
2019-09-10T00:35:28.5706014Z 211 |         SomeStructEnum::EnumStruct{a:a, ..} => println(&a.to_string()),
2019-09-10T00:35:28.5706246Z     |                                    --^
2019-09-10T00:35:28.5706345Z     |                                    help: remove this
2019-09-10T00:35:28.5706404Z     |
2019-09-10T00:35:28.5706447Z     = note: `#[warn(non_shorthand_field_patterns)]` on by default
2019-09-10T00:35:28.5706477Z 
2019-09-10T00:35:28.5706477Z 
2019-09-10T00:35:28.5706524Z warning: the `f1:` in this pattern is redundant
2019-09-10T00:35:28.5706742Z    --> foo.rs:212:37
2019-09-10T00:35:28.5706785Z     |
2019-09-10T00:35:28.5706830Z 212 |         SomeStructEnum::EnumStruct2{f1:f1, f2:f_2} => println(&f_2.field1.to_string()),
2019-09-10T00:35:28.5707068Z     |                                     ---^^
2019-09-10T00:35:28.5707163Z     |                                     help: remove this
2019-09-10T00:35:28.5707191Z 
2019-09-10T00:35:28.5707191Z 
2019-09-10T00:35:28.5707253Z warning: function `matchSomeStructEnum2` should have a snake case name
2019-09-10T00:35:28.5707451Z    --> foo.rs:218:4
2019-09-10T00:35:28.5707491Z     |
2019-09-10T00:35:28.5707550Z 218 | fn matchSomeStructEnum2(se: SomeStructEnum) {
2019-09-10T00:35:28.5707681Z     |    ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `match_some_struct_enum2`
2019-09-10T00:35:28.5707713Z 
2019-09-10T00:35:28.5707778Z warning: the `f2:` in this pattern is redundant
2019-09-10T00:35:28.5707999Z    --> foo.rs:222:25
2019-09-10T00:35:28.5708041Z     |
2019-09-10T00:35:28.5708085Z 222 |         EnumStruct2{f1, f2: f2} => println(&f1.field1.to_string()),
2019-09-10T00:35:28.5708314Z     |                         ---^^^
2019-09-10T00:35:28.5708402Z     |                         help: remove this
2019-09-10T00:35:28.5708447Z 
2019-09-10T00:35:28.5708447Z 
2019-09-10T00:35:28.5708491Z warning: function `matchSomeOtherEnum` should have a snake case name
2019-09-10T00:35:28.5708687Z    --> foo.rs:228:4
2019-09-10T00:35:28.5708728Z     |
2019-09-10T00:35:28.5708787Z 228 | fn matchSomeOtherEnum(val: SomeOtherEnum) {
2019-09-10T00:35:28.5708838Z     |    ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `match_some_other_enum`
2019-09-10T00:35:28.5708879Z 
2019-09-10T00:35:28.5708938Z warning: static variable `yy` should have an upper case name
2019-09-10T00:35:28.5709137Z  --> SubDir/mod.rs:6:8
2019-09-10T00:35:28.5709178Z   |
2019-09-10T00:35:28.5709310Z 6 | static yy: usize = 25;
2019-09-10T00:35:28.5709384Z   |        ^^ help: convert the identifier to upper case: `YY`
2019-09-10T00:35:28.5709414Z 
2019-09-10T00:35:28.5709454Z error: linking with `cc` failed: exit code: 1
2019-09-10T00:35:28.5709510Z   |
2019-09-10T00:35:28.5718615Z   = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.0.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.1.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.10.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.11.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.12.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.13.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.14.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.15.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.2.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.3.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.4.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.5.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.6.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.9.rcgu.o" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.5fi6c8ty3hqyycqf.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libserialize-922ba5a8487a86af.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libindexmap-c7ffd1092563ac1c.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libsmallvec-2a02c4f79fd57f8b.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/libkrate2.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgraphviz-89a164ecaebec2fb.rlib" "-Wl,--start-group" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-f9b617df2984b356.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-20e2e4785955f81c.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-5d2e6abdcedb4560.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-cdc831f04b4a3819.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-23045b88d4ebee67.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-25d9113cc1ef00bb.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-3a85536b61ae0e40.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-4d2d97b344584f9a.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-548afeb14fd50921.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-bf144450add4e9a8.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-8497c85b2ba10b15.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-4487ce9362257478.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-8cd91dda673d8dee.rlib" "-Wl,--end-group" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-f12376b6efc4c5d2.rlib" "-Wl,-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
2019-09-10T00:35:28.5720439Z   = note: /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.1.rcgu.o: In function `alloc::raw_vec::RawVec$LT$T$C$A$GT$::allocate_in::h69122b649edf9ced':
2019-09-10T00:35:28.5721567Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h69122b649edf9cedE+0xd): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5721984Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h69122b649edf9cedE+0xa5): undefined reference to `core::mem::align_of::h14a1c803d51fe1d0'
2019-09-10T00:35:28.5722416Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h69122b649edf9cedE+0x1ad): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::cast::h7e21af515f59b9b4'
2019-09-10T00:35:28.5722843Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.1.rcgu.o: In function `alloc::raw_vec::RawVec$LT$T$C$A$GT$::shrink_to_fit::h2b60d9f0776e77a9':
2019-09-10T00:35:28.5723239Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h2b60d9f0776e77a9E+0x21): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5723844Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h2b60d9f0776e77a9E+0xed): undefined reference to `alloc::raw_vec::RawVec$LT$T$C$A$GT$::dealloc_buffer::h28c7f510e48d7e13'
2019-09-10T00:35:28.5724273Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h2b60d9f0776e77a9E+0x17f): undefined reference to `core::mem::align_of::h14a1c803d51fe1d0'
2019-09-10T00:35:28.5724781Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h2b60d9f0776e77a9E+0x1bb): undefined reference to `_$LT$core..ptr..non_null..NonNull$LT$T$GT$$u20$as$u20$core..convert..From$LT$core..ptr..unique..Unique$LT$T$GT$$GT$$GT$::from::h866f3400d539a124'
2019-09-10T00:35:28.5725224Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h2b60d9f0776e77a9E+0x1cb): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::cast::h7e21af515f59b9b4'
2019-09-10T00:35:28.5725887Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h2b60d9f0776e77a9E+0x24f): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::cast::h7e21af515f59b9b4'
2019-09-10T00:35:28.5726520Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.1.rcgu.o: In function `alloc::raw_vec::RawVec$LT$T$C$A$GT$::reserve_internal::h605d7f231c07790d':
2019-09-10T00:35:28.5726925Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17h605d7f231c07790dE+0x5b): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5727370Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17h605d7f231c07790dE+0x491): undefined reference to `alloc::raw_vec::RawVec$LT$T$C$A$GT$::current_layout::h0ff8c6e0a9bb7808'
2019-09-10T00:35:28.5728066Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17h605d7f231c07790dE+0x59f): undefined reference to `_$LT$core..ptr..non_null..NonNull$LT$T$GT$$u20$as$u20$core..convert..From$LT$core..ptr..unique..Unique$LT$T$GT$$GT$$GT$::from::h866f3400d539a124'
2019-09-10T00:35:28.5728530Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17h605d7f231c07790dE+0x5af): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::cast::h7e21af515f59b9b4'
2019-09-10T00:35:28.5728959Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_internal17h605d7f231c07790dE+0x707): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::cast::h7e21af515f59b9b4'
2019-09-10T00:35:28.5729397Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.1.rcgu.o: In function `alloc::raw_vec::RawVec$LT$T$C$A$GT$::new_in::h0c017f603acb3b60':
2019-09-10T00:35:28.5729797Z           test.7rcbfp3g-cgu.1:(.text._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6new_in17h0c017f603acb3b60E+0x31): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5730259Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.10.rcgu.o: In function `_$LT$alloc..string..String$u20$as$u20$core..ops..deref..Deref$GT$::deref::hacd117db479b5963':
2019-09-10T00:35:28.5730976Z           test.7rcbfp3g-cgu.10:(.text._ZN65_$LT$alloc..string..String$u20$as$u20$core..ops..deref..Deref$GT$5deref17hacd117db479b5963E+0x10): undefined reference to `_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..deref..Deref$GT$::deref::heff913a8252fda2f'
2019-09-10T00:35:28.5731422Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.11.rcgu.o: In function `core::char::methods::_$LT$impl$u20$char$GT$::encode_utf8::hed6c0c1152245e9b':
2019-09-10T00:35:28.5732036Z           test.7rcbfp3g-cgu.11:(.text._ZN4core4char7methods22_$LT$impl$u20$char$GT$11encode_utf817hed6c0c1152245e9bE+0x105): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5732470Z           test.7rcbfp3g-cgu.11:(.text._ZN4core4char7methods22_$LT$impl$u20$char$GT$11encode_utf817hed6c0c1152245e9bE+0x211): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5732921Z           test.7rcbfp3g-cgu.11:(.text._ZN4core4char7methods22_$LT$impl$u20$char$GT$11encode_utf817hed6c0c1152245e9bE+0x24d): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5733345Z           test.7rcbfp3g-cgu.11:(.text._ZN4core4char7methods22_$LT$impl$u20$char$GT$11encode_utf817hed6c0c1152245e9bE+0x4da): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5733875Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.12.rcgu.o: In function `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::is_null::h149e9f09101323af':
2019-09-10T00:35:28.5734441Z           test.7rcbfp3g-cgu.12:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h149e9f09101323afE+0xb): undefined reference to `core::ptr::null::hf51553ddcde97cc6'
2019-09-10T00:35:28.5734883Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.12.rcgu.o: In function `_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Alloc$GT$::dealloc::hed3fe0def10d99f7':
2019-09-10T00:35:28.5735305Z           test.7rcbfp3g-cgu.12:(.text._ZN59_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Alloc$GT$7dealloc17hed3fe0def10d99f7E+0x18): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::as_ptr::h041d09bc9247ed64'
2019-09-10T00:35:28.5735746Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.12.rcgu.o: In function `_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Alloc$GT$::realloc::hc86e6cecbf8fbd73':
2019-09-10T00:35:28.5736185Z           test.7rcbfp3g-cgu.12:(.text._ZN59_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Alloc$GT$7realloc17hc86e6cecbf8fbd73E+0x1d): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::as_ptr::h041d09bc9247ed64'
2019-09-10T00:35:28.5736571Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.12.rcgu.o: In function `alloc::alloc::exchange_malloc::h0c0b15d1cfd8fea2':
2019-09-10T00:35:28.5736976Z           test.7rcbfp3g-cgu.12:(.text._ZN5alloc5alloc15exchange_malloc17h0c0b15d1cfd8fea2E+0x56): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::is_null::h4b2319e961fa59ca'
2019-09-10T00:35:28.5737389Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.13.rcgu.o: In function `core::num::_$LT$impl$u20$usize$GT$::saturating_mul::h0c1ceabda0ca4524':
2019-09-10T00:35:28.5737804Z           test.7rcbfp3g-cgu.13:(.text._ZN4core3num23_$LT$impl$u20$usize$GT$14saturating_mul17h0c1ceabda0ca4524E+0x2e): undefined reference to `core::option::Option$LT$T$GT$::unwrap_or::hf02c3ecc44bfa7e3'
2019-09-10T00:35:28.5738376Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.13.rcgu.o: In function `alloc::slice::hack::to_vec::h6c41b2354900febf':
2019-09-10T00:35:28.5738774Z           test.7rcbfp3g-cgu.13:(.text._ZN5alloc5slice4hack6to_vec17h6c41b2354900febfE+0x23): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5739288Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.15.rcgu.o: In function `_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$::spec_extend::h0d9ea3fdb5ea7058':
2019-09-10T00:35:28.5739923Z           test.7rcbfp3g-cgu.15:(.text._ZN109_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$11spec_extend17h0d9ea3fdb5ea7058E+0x36): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5740416Z           test.7rcbfp3g-cgu.15:(.text._ZN109_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$11spec_extend17h0d9ea3fdb5ea7058E+0x55): undefined reference to `alloc::vec::Vec$LT$T$GT$::len::h9781d2179156a357'
2019-09-10T00:35:28.5741203Z           test.7rcbfp3g-cgu.15:(.text._ZN109_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$11spec_extend17h0d9ea3fdb5ea7058E+0x6a): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5741806Z           test.7rcbfp3g-cgu.15:(.text._ZN109_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$11spec_extend17h0d9ea3fdb5ea7058E+0x8a): undefined reference to `alloc::vec::Vec$LT$T$GT$::set_len::ha9d73e334df4f90d'
2019-09-10T00:35:28.5742393Z           test.7rcbfp3g-cgu.15:(.text._ZN109_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..SpecExtend$LT$$RF$T$C$core..slice..Iter$LT$T$GT$$GT$$GT$11spec_extend17h0d9ea3fdb5ea7058E+0x95): undefined reference to `_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..deref..DerefMut$GT$::deref_mut::h2d660c54752beca3'
2019-09-10T00:35:28.5742822Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.15.rcgu.o: In function `alloc::vec::Vec$LT$T$GT$::shrink_to_fit::hfdaec60307d7f6e3':
2019-09-10T00:35:28.5743249Z           test.7rcbfp3g-cgu.15:(.text._ZN5alloc3vec12Vec$LT$T$GT$13shrink_to_fit17hfdaec60307d7f6e3E+0x10): undefined reference to `alloc::vec::Vec$LT$T$GT$::capacity::hf9ab8af3cc8f1e40'
2019-09-10T00:35:28.5743678Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.15.rcgu.o: In function `alloc::vec::Vec$LT$T$GT$::extend_from_slice::h9c2b18245c1476f0':
2019-09-10T00:35:28.5744114Z           test.7rcbfp3g-cgu.15:(.text._ZN5alloc3vec12Vec$LT$T$GT$17extend_from_slice17h9c2b18245c1476f0E+0x11): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::iter::hef60bc82daabb4b9'
2019-09-10T00:35:28.5744518Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.15.rcgu.o: In function `alloc::vec::Vec$LT$T$GT$::push::he5b2458f2e9cc24a':
2019-09-10T00:35:28.5744917Z           test.7rcbfp3g-cgu.15:(.text._ZN5alloc3vec12Vec$LT$T$GT$4push17he5b2458f2e9cc24aE+0x22): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5745320Z           test.7rcbfp3g-cgu.15:(.text._ZN5alloc3vec12Vec$LT$T$GT$4push17he5b2458f2e9cc24aE+0xa5): undefined reference to `alloc::vec::Vec$LT$T$GT$::as_mut_ptr::h51f08586c48958e6'
2019-09-10T00:35:28.5745734Z           test.7rcbfp3g-cgu.15:(.text._ZN5alloc3vec12Vec$LT$T$GT$4push17he5b2458f2e9cc24aE+0xbe): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5746211Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.2.rcgu.o: In function `_$LT$hashbrown..raw..RawIterRange$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next::h6ce235d838be7987':
2019-09-10T00:35:28.5746692Z           test.7rcbfp3g-cgu.2:(.text._ZN96_$LT$hashbrown..raw..RawIterRange$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6ce235d838be7987E+0x117): undefined reference to `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::add::h2dbe0152528440ce'
2019-09-10T00:35:28.5747257Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.2.rcgu.o: In function `hashbrown::raw::RawTable$LT$T$GT$::free_buckets::hfc2ac1669b9165f5':
2019-09-10T00:35:28.5747699Z           test.7rcbfp3g-cgu.2:(.text._ZN9hashbrown3raw17RawTable$LT$T$GT$12free_buckets17hfc2ac1669b9165f5E+0x55): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::as_ptr::h041d09bc9247ed64'
2019-09-10T00:35:28.5748114Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.2.rcgu.o: In function `hashbrown::raw::RawTable$LT$T$GT$::new::hf890982931ed18d8':
2019-09-10T00:35:28.5748521Z           test.7rcbfp3g-cgu.2:(.text._ZN9hashbrown3raw17RawTable$LT$T$GT$3new17hf890982931ed18d8E+0x36): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::as_ptr::h08c55c5fbf64d2c8'
2019-09-10T00:35:28.5748957Z           test.7rcbfp3g-cgu.2:(.text._ZN9hashbrown3raw17RawTable$LT$T$GT$3new17hf890982931ed18d8E+0x46): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::new_unchecked::h28c864dad0e4f6ae'
2019-09-10T00:35:28.5749439Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.2.rcgu.o: In function `hashbrown::raw::RawTable$LT$T$GT$::iter::hfb96d9e873f495e4':
2019-09-10T00:35:28.5749893Z           test.7rcbfp3g-cgu.2:(.text._ZN9hashbrown3raw17RawTable$LT$T$GT$4iter17hfb96d9e873f495e4E+0x4a): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::as_ptr::h041d09bc9247ed64'
2019-09-10T00:35:28.5750308Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.2.rcgu.o: In function `hashbrown::raw::RawIterRange$LT$T$GT$::new::hb366b91ecf88f251':
2019-09-10T00:35:28.5750957Z           test.7rcbfp3g-cgu.2:(.text._ZN9hashbrown3raw21RawIterRange$LT$T$GT$3new17hb366b91ecf88f251E+0x334): undefined reference to `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::add::h2dbe0152528440ce'
2019-09-10T00:35:28.5751646Z           test.7rcbfp3g-cgu.2:(.text._ZN9hashbrown3raw21RawIterRange$LT$T$GT$3new17hb366b91ecf88f251E+0x375): undefined reference to `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::add::h2dbe0152528440ce'
2019-09-10T00:35:28.5752066Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.3.rcgu.o: In function `core::ptr::swap_nonoverlapping_bytes::h1098f613a2b2ac91':
2019-09-10T00:35:28.5752497Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0x9d): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5752900Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0xb2): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5753330Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0xcc): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5753726Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0xe1): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5755102Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0xf6): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5756218Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0x160): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5756609Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0x175): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5757210Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0x18f): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5757806Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0x1a4): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5758391Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr25swap_nonoverlapping_bytes17h1098f613a2b2ac91E+0x1b9): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5759137Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.3.rcgu.o: In function `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::is_null::h7cfb77646fc15872':
2019-09-10T00:35:28.5759544Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h7cfb77646fc15872E+0xb): undefined reference to `core::ptr::null_mut::hdd4d9703ea9be6e8'
2019-09-10T00:35:28.5760138Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.3.rcgu.o: In function `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::is_null::h0bdae0dece1a7810':
2019-09-10T00:35:28.5760557Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h0bdae0dece1a7810E+0xb): undefined reference to `core::ptr::null::hf51553ddcde97cc6'
2019-09-10T00:35:28.5761236Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.3.rcgu.o: In function `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::is_null::h9219ac2b267c5a2a':
2019-09-10T00:35:28.5761636Z           test.7rcbfp3g-cgu.3:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h9219ac2b267c5a2aE+0xb): undefined reference to `core::ptr::null::hf51553ddcde97cc6'
2019-09-10T00:35:28.5762072Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.4.rcgu.o: In function `core::intrinsics::overlaps::h3d32d622eb2e25a3':
2019-09-10T00:35:28.5762461Z           test.7rcbfp3g-cgu.4:(.text._ZN4core10intrinsics8overlaps17h3d32d622eb2e25a3E+0x42): undefined reference to `core::option::Option$LT$T$GT$::unwrap::h943dff53c03c0d9c'
2019-09-10T00:35:28.5762856Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.4.rcgu.o: In function `core::intrinsics::overlaps::h6e2632e652ea9eec':
2019-09-10T00:35:28.5763262Z           test.7rcbfp3g-cgu.4:(.text._ZN4core10intrinsics8overlaps17h6e2632e652ea9eecE+0x42): undefined reference to `core::option::Option$LT$T$GT$::unwrap::h943dff53c03c0d9c'
2019-09-10T00:35:28.5763668Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.4.rcgu.o: In function `core::intrinsics::overlaps::h91322a0e59200a61':
2019-09-10T00:35:28.5764803Z           test.7rcbfp3g-cgu.4:(.text._ZN4core10intrinsics8overlaps17h91322a0e59200a61E+0x42): undefined reference to `core::option::Option$LT$T$GT$::unwrap::h943dff53c03c0d9c'
2019-09-10T00:35:28.5765231Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.4.rcgu.o: In function `core::intrinsics::overlaps::hefad4e67a2042381':
2019-09-10T00:35:28.5765796Z           test.7rcbfp3g-cgu.4:(.text._ZN4core10intrinsics8overlaps17hefad4e67a2042381E+0x42): undefined reference to `core::option::Option$LT$T$GT$::unwrap::h943dff53c03c0d9c'
2019-09-10T00:35:28.5766353Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.5.rcgu.o: In function `core::alloc::size_align::h0dc36d34b3c516de':
2019-09-10T00:35:28.5766871Z           test.7rcbfp3g-cgu.5:(.text._ZN4core5alloc10size_align17h0dc36d34b3c516deE+0x6): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5767262Z           test.7rcbfp3g-cgu.5:(.text._ZN4core5alloc10size_align17h0dc36d34b3c516deE+0x11): undefined reference to `core::mem::align_of::h14a1c803d51fe1d0'
2019-09-10T00:35:28.5767657Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.5.rcgu.o: In function `core::alloc::Layout::new::h4f0d3be8f6f5d4a7':
2019-09-10T00:35:28.5768055Z           test.7rcbfp3g-cgu.5:(.text._ZN4core5alloc6Layout3new17h4f0d3be8f6f5d4a7E+0x3e): undefined reference to `core::result::Result$LT$T$C$E$GT$::is_ok::h1d4f9c2a3fe5094c'
2019-09-10T00:35:28.5768452Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.5.rcgu.o: In function `core::alloc::Layout::new::h5ca1e6dc65f89973':
2019-09-10T00:35:28.5768842Z           test.7rcbfp3g-cgu.5:(.text._ZN4core5alloc6Layout3new17h5ca1e6dc65f89973E+0x3e): undefined reference to `core::result::Result$LT$T$C$E$GT$::is_ok::h1d4f9c2a3fe5094c'
2019-09-10T00:35:28.5769391Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.5.rcgu.o: In function `core::alloc::Layout::array::_$u7b$$u7b$closure$u7d$$u7d$::hf1800f92655ae951':
2019-09-10T00:35:28.5770162Z           test.7rcbfp3g-cgu.5:(.text._ZN4core5alloc6Layout5array28_$u7b$$u7b$closure$u7d$$u7d$17hf1800f92655ae951E+0x2b): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5770644Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.6.rcgu.o: In function `_$LT$core..ptr..unique..Unique$LT$T$GT$$u20$as$u20$core..convert..From$LT$core..ptr..non_null..NonNull$LT$T$GT$$GT$$GT$::from::h82593cc2dd012ecc':
2019-09-10T00:35:28.5771686Z           test.7rcbfp3g-cgu.6:(.text._ZN119_$LT$core..ptr..unique..Unique$LT$T$GT$$u20$as$u20$core..convert..From$LT$core..ptr..non_null..NonNull$LT$T$GT$$GT$$GT$4from17h82593cc2dd012eccE+0x6): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::as_ptr::h041d09bc9247ed64'
2019-09-10T00:35:28.5772141Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.6.rcgu.o: In function `core::ptr::unique::Unique$LT$T$GT$::empty::h495b100fe7b408fc':
2019-09-10T00:35:28.5772530Z           test.7rcbfp3g-cgu.6:(.text._ZN4core3ptr6unique15Unique$LT$T$GT$5empty17h495b100fe7b408fcE+0x6): undefined reference to `core::mem::align_of::h14a1c803d51fe1d0'
2019-09-10T00:35:28.5772964Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.6.rcgu.o: In function `core::ptr::non_null::NonNull$LT$T$GT$::new::hd6ab96318192cd86':
2019-09-10T00:35:28.5773389Z           test.7rcbfp3g-cgu.6:(.text._ZN4core3ptr8non_null16NonNull$LT$T$GT$3new17hd6ab96318192cd86E+0xb): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::is_null::h4b2319e961fa59ca'
2019-09-10T00:35:28.5773825Z           test.7rcbfp3g-cgu.6:(.text._ZN4core3ptr8non_null16NonNull$LT$T$GT$3new17hd6ab96318192cd86E+0x2f): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::new_unchecked::h28c864dad0e4f6ae'
2019-09-10T00:35:28.5774405Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.6.rcgu.o: In function `core::ptr::non_null::NonNull$LT$T$GT$::cast::h297a6b62982b178f':
2019-09-10T00:35:28.5774792Z           test.7rcbfp3g-cgu.6:(.text._ZN4core3ptr8non_null16NonNull$LT$T$GT$4cast17h297a6b62982b178fE+0x18): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::new_unchecked::h28c864dad0e4f6ae'
2019-09-10T00:35:28.5775324Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.6.rcgu.o: In function `core::ptr::non_null::NonNull$LT$T$GT$::dangling::h1219d3c03b437bcb':
2019-09-10T00:35:28.5775833Z           test.7rcbfp3g-cgu.6:(.text._ZN4core3ptr8non_null16NonNull$LT$T$GT$8dangling17h1219d3c03b437bcbE+0x6): undefined reference to `core::mem::align_of::h14a1c803d51fe1d0'
2019-09-10T00:35:28.5782553Z           test.7rcbfp3g-cgu.6:(.text._ZN4core3ptr8non_null16NonNull$LT$T$GT$8dangling17h1219d3c03b437bcbE+0x16): undefined reference to `core::ptr::non_null::NonNull$LT$T$GT$::new_unchecked::h28c864dad0e4f6ae'
2019-09-10T00:35:28.5782994Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o: In function `core::slice::Iter$LT$T$GT$::as_slice::h6426768e38b382bf':
2019-09-10T00:35:28.5783405Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice13Iter$LT$T$GT$8as_slice17h6426768e38b382bfE+0x1b): undefined reference to `core::mem::size_of::h24f76e87ce94f163'
2019-09-10T00:35:28.5784547Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice13Iter$LT$T$GT$8as_slice17h6426768e38b382bfE+0x7c): undefined reference to `core::slice::from_raw_parts::hf0d730899ec46fec'
2019-09-10T00:35:28.5785659Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o: In function `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::copy_from_slice::hcbd90352dbe083f2':
2019-09-10T00:35:28.5786150Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcbd90352dbe083f2E+0x2c): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5786708Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcbd90352dbe083f2E+0x4a): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5787460Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcbd90352dbe083f2E+0xb6): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::as_ptr::h08c55c5fbf64d2c8'
2019-09-10T00:35:28.5787869Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcbd90352dbe083f2E+0x272): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5788466Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcbd90352dbe083f2E+0x28c): undefined reference to `core::intrinsics::copy_nonoverlapping::h441141e4520bf0f7'
2019-09-10T00:35:28.5788863Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o: In function `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::iter::h865c7c6597430f04':
2019-09-10T00:35:28.5789284Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4iter17h865c7c6597430f04E+0x7b): undefined reference to `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::wrapping_add::h892792b26985fe19'
2019-09-10T00:35:28.5789701Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o: In function `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::is_empty::hc83865f7bc86318c':
2019-09-10T00:35:28.5790276Z           test.7rcbfp3g-cgu.7:(.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8is_empty17hc83865f7bc86318cE+0x3): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5791761Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o: In function `_$LT$usize$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$::get_unchecked_mut::h713472801d51352d':
2019-09-10T00:35:28.5792265Z           test.7rcbfp3g-cgu.7:(.text._ZN68_$LT$usize$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17h713472801d51352dE+0x25): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5792921Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.7.rcgu.o: In function `_$LT$core..slice..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next::h47c0f7871e3e6e7b':
2019-09-10T00:35:28.5793403Z           test.7rcbfp3g-cgu.7:(.text._ZN85_$LT$core..slice..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47c0f7871e3e6e7bE+0xb2): undefined reference to `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::wrapping_offset::h2861440e6a0730dd'
2019-09-10T00:35:28.5794367Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$::get_unchecked_mut::hd971883371087ccf':
2019-09-10T00:35:28.5795173Z           test.7rcbfp3g-cgu.8:(.text._ZN103_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17hd971883371087ccfE+0x1b): undefined reference to `core::slice::_$LT$impl$u20$$u5b$T$u5d$$GT$::len::h104fe3f43ff1433f'
2019-09-10T00:35:28.5795982Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `core::ptr::real_drop_in_place::h143c4d6c95009250':
2019-09-10T00:35:28.5796912Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17h143c4d6c95009250E+0x30): undefined reference to `alloc::alloc::box_free::h6130a097f0c48389'
2019-09-10T00:35:28.5797783Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17h143c4d6c95009250E+0x3f): undefined reference to `alloc::alloc::box_free::h6130a097f0c48389'
2019-09-10T00:35:28.5799092Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `core::ptr::real_drop_in_place::h1ce4e1b24ad941f9':
2019-09-10T00:35:28.5799989Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17h1ce4e1b24ad941f9E+0x3): undefined reference to `_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h7a9234e765c74ee3'
2019-09-10T00:35:28.5800401Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `core::ptr::real_drop_in_place::h6df7676df351ccf7':
2019-09-10T00:35:28.5800821Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17h6df7676df351ccf7E+0x3): undefined reference to `_$LT$alloc..sync..Arc$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::haae9bd773f2516bd'
2019-09-10T00:35:28.5801579Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `core::ptr::real_drop_in_place::hf55d37a374eded4c':
2019-09-10T00:35:28.5802031Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17hf55d37a374eded4cE+0xf): undefined reference to `_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h94b7127c15661924'
2019-09-10T00:35:28.5802454Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `core::ptr::real_drop_in_place::hfc8b1ff0fff51fbd':
2019-09-10T00:35:28.5802826Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17hfc8b1ff0fff51fbdE+0x48): undefined reference to `alloc::alloc::box_free::h6977d40e969cfbb6'
2019-09-10T00:35:28.5803209Z           test.7rcbfp3g-cgu.8:(.text._ZN4core3ptr18real_drop_in_place17hfc8b1ff0fff51fbdE+0x5c): undefined reference to `alloc::alloc::box_free::h6977d40e969cfbb6'
2019-09-10T00:35:28.5803931Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.8.rcgu.o: In function `_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$::get_unchecked_mut::h9a2d4539b14160d9':
2019-09-10T00:35:28.5804451Z           test.7rcbfp3g-cgu.8:(.text._ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17h9a2d4539b14160d9E+0x2a): undefined reference to `core::ptr::_$LT$impl$u20$$BP$mut$u20$T$GT$::add::hb64d3cce4f76af8f'
2019-09-10T00:35:28.5805061Z           test.7rcbfp3g-cgu.8:(.text._ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17h9a2d4539b14160d9E+0x4a): undefined reference to `core::slice::from_raw_parts_mut::h3d2d06c31f34522b'
2019-09-10T00:35:28.5805485Z           /checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/save-analysis/save-analysis/test.test.7rcbfp3g-cgu.9.rcgu.o: In function `core::ptr::_$LT$impl$u20$$BP$const$u20$T$GT$::is_null::h427771c609fa5567':
2019-09-10T00:35:28.5806029Z           test.7rcbfp3g-cgu.9:(.text._ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h427771c609fa5567E+0xb): undefined reference to `core::ptr::null::hf51553ddcde97cc6'
2019-09-10T00:35:28.5806599Z           collect2: error: ld returned 1 exit status
2019-09-10T00:35:28.5806700Z 
2019-09-10T00:35:28.5806742Z error: aborting due to previous error
2019-09-10T00:35:28.5806791Z 
2019-09-10T00:35:28.5806831Z make: *** [code] Error 1
---
2019-09-10T00:35:28.5808480Z test result: FAILED. 184 passed; 1 failed; 17 ignored; 0 measured; 0 filtered out
2019-09-10T00:35:28.5808538Z 
2019-09-10T00:35:28.5808562Z 
2019-09-10T00:35:28.5808587Z 
2019-09-10T00:35:28.5814298Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--rustdoc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustdoc" "--src-base" "/checkout/src/test/run-make-fulldeps" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "run-make" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "cc" "--cxx" "c++" "--cflags" "-ffunction-sections -fdata-sections -fPIC -m64" "--llvm-components" "aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils all all-targets amdgpu amdgpuasmparser amdgpuasmprinter amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils analysis arm armasmparser armasmprinter armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitwriter bpf bpfasmparser bpfasmprinter bpfcodegen bpfdesc bpfdisassembler bpfinfo codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interpreter ipo irreader lanai lanaiasmparser lanaiasmprinter lanaicodegen lanaidesc lanaidisassembler lanaiinfo libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser mips mipsasmparser mipsasmprinter mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmprinter msp430codegen msp430desc msp430info native nativecodegen nvptx nvptxasmprinter nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit passes powerpc powerpcasmparser powerpcasmprinter powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata runtimedyld scalaropts selectiondag sparc sparcasmparser sparcasmprinter sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzasmprinter systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target transformutils vectorize windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils xcore xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo" "--llvm-cxxflags" "-I/usr/lib/llvm-6.0/include -std=c++0x -fuse-ld=gold -Wl,--no-keep-files-mapped -Wl,--no-map-whole-files -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -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 -ffunction-sections -fdata-sections -O2 -DNDEBUG  -fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" "--ar" "ar" "--llvm-bin-dir" "/usr/lib/llvm-6.0/bin" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-09-10T00:35:28.5815400Z 
2019-09-10T00:35:28.5815430Z 
2019-09-10T00:35:28.5815476Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-09-10T00:35:28.5815542Z Build completed unsuccessfully in 1:59:25
2019-09-10T00:35:28.5815542Z Build completed unsuccessfully in 1:59:25
2019-09-10T00:35:28.5815595Z == clock drift check ==
2019-09-10T00:35:28.5815696Z   local time: Tue Sep 10 00:35:28 UTC 2019
2019-09-10T00:35:28.7219320Z   network time: Tue, 10 Sep 2019 00:35:28 GMT
2019-09-10T00:35:28.7223325Z == end clock drift check ==
2019-09-10T00:35:35.4746089Z ##[error]Bash exited with code '1'.
2019-09-10T00:35:35.4862191Z ##[section]Starting: Checkout
2019-09-10T00:35:35.4864031Z ==============================================================================
2019-09-10T00:35:35.4864088Z Task         : Get sources
2019-09-10T00:35:35.4864137Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@michaelwoerister
Copy link
Contributor

left a comment

Thanks, @alexcrichton! The fix looks good. r=me with the comments addressed.

src/librustc_codegen_utils/symbol_names.rs Outdated Show resolved Hide resolved
@est31 est31 referenced this pull request Sep 10, 2019
3 of 5 tasks complete

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from c0547bb to 0ca8430 Sep 10, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 10, 2019

So it turns out the previous version of this PR was also incorrect (hence the test failure on CI). The problem was that it was testing whether the defining crate was in share-generics mode, but actually we want to query whether the instantiating crate is in share-generics mode.

@michaelwoerister this actually I think poses an interesting question for everything in the standard library because the standard library is basically never built in -Zshare-generics mode (since it's optimized), but that's one of the biggest benefits which is to reuse crate monomorphizations of standard library symbols. I think this means that -Zshare-generics=yes (or just debug builds by default) will now actually share monomorphizations of standard library functions, whereas previously they didn't.

Still running the full test suite locally, but @michaelwoerister if you wouldn't mind giving another look at this I'm a bit hesitant to carry over the r+!

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from 0ca8430 to 189805b Sep 10, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 10, 2019

Alright now I'm actually just hurting myself in my own confusion. Standard library generics are indeed shared today, my comment above was actually about a previous version of my patch. I'm basically throwing logic at the wall right now and seeing what sticks, and this definitely isn't great.

Taking a step back it seems like there's logically some duplication between this function and this deduction. I'm confusing myself now as to why symbol names need to account for share-generics settings of upstream crates but the collector doesn't.

Thinking about this more I think that this is sort of a fundamental problem with how the linker is requesting symbol names today. For some crate types (like dylibs) the compiler needs to generate an exhaustive symbol list to export, and for dylibs this means exported upstream symbols as well. The problem here is that we're dynamically calculating the actual name of the symbol (via the symbol_name query). This means we have one of two situations:

  • First, we're the linker. This means that we just want to figure out the name of the symbol from the context of the crate we're linking.
  • Second, we're the compiler referencing another crate's symbol. This is where I'm confusing myself with share_generics, and it's also where I'm confusing myself with the collector. If share_generics is turned on then if we find a symbol that has an upstream monomorphization, that was actually only possible if the upstream crate had share_generics turned on, and we want to use that crate's. If share_generics is turned off, though, then we always want to use a local copy, and the collector always generated a local copy.

The problem here is that these two contexts are subtly different around how they're supposed to calculate the symbol name. The main piece of this boils down to what crate instantiated the symbol, where in the case of linked symbols we've always got it but today it's always inferred and is dependent on the share_generics setting. The inference runs the risk of being wrong for the linker case though if the share_generics settings are different. I'll need to think more about how to solve this...

Note that this patch is green on CI, but fails on Windows, because for whatever reason the test case I have passes on Linux but not on macOS or Windows.

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 11, 2019

I'm sorry this is giving you trouble, @alexcrichton. I remember fighting with the logic quite a bit during the initial implementation.

OK, so the problem is that

  • the list of exported symbols contains names that don't actually exits,
  • which occurs if an upstream crate shares a generic instance and a downstream crate tries to create its own, private copy of the same instance.

Do we know if both symbols show up in the export list? Or just the upstream or downstream one?
We do know that the upstream one should show up (because it is shared) while the upstream one should not show up.

This is another problem that only exists because of Rust dylibs :)

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 11, 2019

Somewhat related: We might want to give using weak_odr linkage for generics a try again. That would simplify symbol name generation.

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 11, 2019

One thing that might be happening:

  • The linker script contains the symbol name of the upstream generic because it is added here:

    // For each dependency that we are linking to statically ...
    if *dep_format == Linkage::Static {
    // ... we add its symbol list to our export list.
    for &(symbol, level) in tcx.exported_symbols(cnum).iter() {
    if level.is_below_threshold(export_threshold) {
    symbols.push(symbol.symbol_name(tcx).to_string());
    }
    }
    }

  • but since the local crate has it's private copy of the generic, the upstream one is actually never referenced anywhere, and thus is never pulled out of the upstream archive.

I don't know if linkers actually work that way. But archives are treated more lazily than object files, right?

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 11, 2019

OK, I was able to reproduce the problem on Windows and here is my analysis (which I think is the same as yours, @alexcrichton):

  • the compiler tries to generate the list of exported symbols for the downstream crate.
  • because the downstream crate is a Rust dylib, this list should also contain the exported generics from upstream rlibs that are included in the dylib, so
  • the compiler iterates the exported instances in the upstream rlib and tries to build the symbol name for each.
  • the symbol_name query tries to infer the instantiating crate from the compiler's current settings and gets it wrong, because what we want to export is the upstream symbol, not the local, private copy in the downstream crate.

So in essence, there are two symbol names for the same instance, both of which the compiler needs in different contexts, but the symbol_name query has no parameter to disambiguate the two versions.

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 11, 2019

Oh man believe me I'd be the first person to throw my weight behind any "remove rust dylibs once and for all" proposal, they do indeed seem to only cause endless effort and pain for not a lot of gain!

In any case, putting that aside, sounds like we're definitely on the same page. Agreed with everything you've said :)

I was thinking a bit about how to best solve this yesterday, but I wasn't really able to come up with something great. I'll look to see if there's a low-impact second query argument we could add or maybe a low-impact way to add a second query.

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 11, 2019

👍

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from 189805b to 78ede6d Sep 11, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 11, 2019

Ok I've edited the PR description and I've also pushed up a new commit, and I believe that this should address the issue.

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Sep 11, 2019

The job x86_64-gnu-llvm-6.0 of your PR failed (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-11T15:56:01.2404224Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-11T15:56:01.2606157Z ##[command]git config gc.auto 0
2019-09-11T15:56:01.2752981Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-11T15:56:01.2836084Z ##[command]git config --get-all http.proxy
2019-09-11T15:56:01.3005308Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64324/merge:refs/remotes/pull/64324/merge
---
2019-09-11T17:01:43.8061685Z .................................................................................................... 1500/9008
2019-09-11T17:01:50.1395429Z .................................................................................................... 1600/9008
2019-09-11T17:02:03.5354285Z .........................................................i...............i.......................... 1700/9008
2019-09-11T17:02:11.8851767Z .................................................................................................... 1800/9008
2019-09-11T17:02:27.7157684Z ................................................iiiii............................................... 1900/9008
2019-09-11T17:02:39.5951519Z .................................................................................................... 2100/9008
2019-09-11T17:02:42.4728483Z .................................................................................................... 2200/9008
2019-09-11T17:02:46.4980097Z .................................................................................................... 2300/9008
2019-09-11T17:02:55.0771400Z .................................................................................................... 2400/9008
---
2019-09-11T17:06:05.6932099Z ...................................i...............i................................................ 4700/9008
2019-09-11T17:06:18.0184691Z .................................................................................................... 4800/9008
2019-09-11T17:06:25.0676514Z .................................................................................................... 4900/9008
2019-09-11T17:06:36.5134439Z .................................................................................................... 5000/9008
2019-09-11T17:06:43.0679972Z ..................ii.ii............................................................................. 5100/9008
2019-09-11T17:06:54.4239288Z .................................................................................................... 5300/9008
2019-09-11T17:07:05.1946045Z .................................................................................i.................. 5400/9008
2019-09-11T17:07:13.6167798Z .................................................................................................... 5500/9008
2019-09-11T17:07:19.8685551Z .................................................................................................... 5600/9008
2019-09-11T17:07:19.8685551Z .................................................................................................... 5600/9008
2019-09-11T17:07:31.2635789Z ...........................................................................ii...i..ii...........i... 5700/9008
2019-09-11T17:07:57.9274442Z .................................................................................................... 5900/9008
2019-09-11T17:08:08.3538769Z .................................................................................................... 6000/9008
2019-09-11T17:08:08.3538769Z .................................................................................................... 6000/9008
2019-09-11T17:08:17.0242541Z .............................................................................i..ii.................. 6100/9008
2019-09-11T17:08:48.6784029Z .................................................................................................... 6300/9008
2019-09-11T17:08:51.0950233Z ....................................i............................................................... 6400/9008
2019-09-11T17:08:53.4868070Z .................................................................................................... 6500/9008
2019-09-11T17:08:56.3029322Z ........i........................................................................................... 6600/9008
---
2019-09-11T17:13:45.2119928Z  finished in 5.501
2019-09-11T17:13:45.2325292Z Check compiletest suite=codegen mode=codegen (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-11T17:13:45.4314993Z 
2019-09-11T17:13:45.4315928Z running 150 tests
2019-09-11T17:13:48.9389988Z i....iii......iii..iiii....i.............................i..i..................i....i.........ii.i.i 100/150
2019-09-11T17:13:51.1440422Z ..iiii..............i..........iiii.......ii......
2019-09-11T17:13:51.1444214Z 
2019-09-11T17:13:51.1448930Z  finished in 5.913
2019-09-11T17:13:51.1687977Z Check compiletest suite=codegen-units mode=codegen-units (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-09-11T17:13:51.3471427Z 
---
2019-09-11T17:13:54.5441005Z ---- [codegen-units] codegen-units/partitioning/shared-generics.rs stdout ----
2019-09-11T17:13:54.5441362Z 
2019-09-11T17:13:54.5441503Z These items were contained but should not have been:
2019-09-11T17:13:54.5441538Z 
2019-09-11T17:13:54.5441982Z MONO_ITEM fn shared_generics_aux::generic_fn[0]<f32> @@ shared_generics_aux.3a1fbbbh-in-shared_generics.3a1fbbbh.volatile[External]
2019-09-11T17:13:54.5442234Z 
2019-09-11T17:13:54.5443034Z thread '[codegen-units] codegen-units/partitioning/shared-generics.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:2601:13
2019-09-11T17:13:54.5443119Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
2019-09-11T17:13:54.5443151Z 
---
2019-09-11T17:13:54.5444226Z 
2019-09-11T17:13:54.5444614Z thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:536:22
2019-09-11T17:13:54.5444647Z 
2019-09-11T17:13:54.5444672Z 
2019-09-11T17:13:54.5447714Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/codegen-units" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-units" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "codegen-units" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-09-11T17:13:54.5448284Z 
2019-09-11T17:13:54.5448338Z 
2019-09-11T17:13:54.5448386Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-09-11T17:13:54.5448435Z Build completed unsuccessfully in 1:10:30
2019-09-11T17:13:54.5448435Z Build completed unsuccessfully in 1:10:30
2019-09-11T17:13:54.5448633Z == clock drift check ==
2019-09-11T17:13:54.5448791Z   local time: Wed Sep 11 17:13:53 UTC 2019
2019-09-11T17:13:54.5448876Z   network time: Wed, 11 Sep 2019 17:13:53 GMT
2019-09-11T17:13:54.5448964Z == end clock drift check ==
2019-09-11T17:13:57.3877945Z ##[error]Bash exited with code '1'.
2019-09-11T17:13:57.3918922Z ##[section]Starting: Checkout
2019-09-11T17:13:57.3920980Z ==============================================================================
2019-09-11T17:13:57.3921061Z Task         : Get sources
2019-09-11T17:13:57.3921115Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 11, 2019

... or this strategy completely breaks sharing of generics in the first place. Still working!

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from 78ede6d to aae90a8 Sep 12, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 12, 2019

Ok nth time's the charm, I think this one actually works

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Sep 12, 2019

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-12T15:47:50.3529663Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-12T15:47:50.3700530Z ##[command]git config gc.auto 0
2019-09-12T15:47:50.3782239Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-12T15:47:50.3839187Z ##[command]git config --get-all http.proxy
2019-09-12T15:47:50.3983314Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64324/merge:refs/remotes/pull/64324/merge
---
2019-09-12T15:54:48.8597363Z    Compiling serde_json v1.0.40
2019-09-12T15:54:50.7236294Z    Compiling tidy v0.1.0 (/checkout/src/tools/tidy)
2019-09-12T15:55:01.8601462Z     Finished release [optimized] target(s) in 1m 32s
2019-09-12T15:55:01.8688741Z tidy check
2019-09-12T15:55:02.3676176Z tidy error: /checkout/src/librustc_metadata/encoder.rs:1632: line longer than 100 chars
2019-09-12T15:55:03.8432893Z some tidy checks failed
2019-09-12T15:55:03.8437622Z 
2019-09-12T15:55:03.8437622Z 
2019-09-12T15:55:03.8438739Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor"
2019-09-12T15:55:03.8439611Z 
2019-09-12T15:55:03.8439783Z 
2019-09-12T15:55:03.8447626Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
2019-09-12T15:55:03.8449238Z Build completed unsuccessfully in 0:01:35
2019-09-12T15:55:03.8449238Z Build completed unsuccessfully in 0:01:35
2019-09-12T15:55:03.8501467Z == clock drift check ==
2019-09-12T15:55:03.8515654Z   local time: Thu Sep 12 15:55:03 UTC 2019
2019-09-12T15:55:04.0087458Z   network time: Thu, 12 Sep 2019 15:55:04 GMT
2019-09-12T15:55:04.0089942Z == end clock drift check ==
2019-09-12T15:55:05.2921473Z ##[error]Bash exited with code '1'.
2019-09-12T15:55:05.2955804Z ##[section]Starting: Checkout
2019-09-12T15:55:05.2957524Z ==============================================================================
2019-09-12T15:55:05.2957597Z Task         : Get sources
2019-09-12T15:55:05.2957645Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from aae90a8 to c7da417 Sep 12, 2019

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 13, 2019

Am I reading this right that the changes here store all symbol names as strings in metadata? That must be a lot of data. Let's do a perf run.

@bors try

@bors

This comment has been minimized.

Copy link
Contributor

commented Sep 13, 2019

⌛️ Trying commit c7da417 with merge fdcee83...

bors added a commit that referenced this pull request Sep 13, 2019
Auto merge of #64324 - alexcrichton:share-generics-again, r=<try>
rustc: Fix mixing crates with different `share_generics`

This commit addresses #64319 by ensuring that when we generate a list of
symbols to export from a Rust `dylib` that the symbol names exported for
upstream crates always match the upstream crate, regardless of how
`share_generics` compiler settings are mixed. Previously a downstream
crate compilation would attempt to recalculate symbol names for upstream
crates, but when doing so it mistakenly took into account its own
`share_generics` setting, fooling the downstream crate to thinking that
it monomorphized the symbol when actually we're looking for the symbol
name in the upstream crate.

The fix applied here is to encode symbol names into metadata next to
`ExportedSymbol`, ensuring that downstream crates don't have to
recompute symbol names. This way the `symbol_name` query is always
within the context of "I'm instantiating in this crate" whereas
`exported_symbols` returns the symbol in the origin crate.

Closes #64319
@bors

This comment has been minimized.

Copy link
Contributor

commented Sep 13, 2019

☀️ Try build successful - checks-azure
Build commit: fdcee83

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 13, 2019

@rust-timer

This comment has been minimized.

Copy link

commented Sep 13, 2019

Success: Queued fdcee83 with parent f43ac06, comparison URL.

@rust-timer

This comment has been minimized.

Copy link

commented Sep 13, 2019

Finished benchmarking try commit fdcee83, comparison URL.

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 16, 2019

It looks like performance regresses just a little bit for a handful of test cases while for the rest it stays the same. @alexcrichton, did you happen to compare rlib/rmeta sizes with and without the patch?

rustc: Convert `dependency_formats` to a query
This commit converts a field of `Session`, `dependency_formats`, into a
query of `TyCtxt`. This information then also needed to be threaded
through to other remaining portions of the linker, but it's relatively
straightforward. The only change here is that instead of
`HashMap<CrateType, T>` the data structure changed to `Vec<(CrateType,
T)>` to make it easier to deal with in queries.
@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 16, 2019

Given a pretty unscientific measurement, I used Cargo as a test bed and got:

$ du -s before/debug/deps after/debug/deps
866792  before/debug/deps
889324  after/debug/deps

which is 2.5% larger overall.

However libcargo-*.rmeta increased from 9765824 to 14763317, a 34% increase.

That seems like it's probably not a great idea given the niche of the problem space this is fixing.

I've got an idea of how to fix this entirely differently, so let me see if I can get that working.

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from c7da417 to ef6af26 Sep 16, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 16, 2019

Ok here's another attempt, entirely new strategy. The first commit is a refactoring of dependency formats into a query, and the second leverages this to use dependency formats to inform symbol exports here and there. The tl;dr; is that dylib crate types no longer export generics, and so the share_generics setting is basically ignored there.

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Sep 16, 2019

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-16T22:32:32.4667522Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-16T22:32:32.4893791Z ##[command]git config gc.auto 0
2019-09-16T22:32:32.4986037Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-16T22:32:32.5051859Z ##[command]git config --get-all http.proxy
2019-09-16T22:32:32.5214602Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64324/merge:refs/remotes/pull/64324/merge
---
2019-09-16T22:39:39.0139018Z    Compiling serde_json v1.0.40
2019-09-16T22:39:40.9211621Z    Compiling tidy v0.1.0 (/checkout/src/tools/tidy)
2019-09-16T22:39:52.4291484Z     Finished release [optimized] target(s) in 1m 34s
2019-09-16T22:39:52.4386062Z tidy check
2019-09-16T22:39:52.8600087Z tidy error: /checkout/src/librustc/query/mod.rs:643: line longer than 100 chars
2019-09-16T22:39:52.9781087Z tidy error: /checkout/src/librustc_metadata/dependency_format.rs: too many trailing newlines (2)
2019-09-16T22:39:54.5964035Z some tidy checks failed
2019-09-16T22:39:54.5966633Z 
2019-09-16T22:39:54.5966633Z 
2019-09-16T22:39:54.5968298Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor"
2019-09-16T22:39:54.5969376Z 
2019-09-16T22:39:54.5969522Z 
2019-09-16T22:39:54.5983957Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
2019-09-16T22:39:54.5984425Z Build completed unsuccessfully in 0:01:37
2019-09-16T22:39:54.5984425Z Build completed unsuccessfully in 0:01:37
2019-09-16T22:39:54.6047011Z == clock drift check ==
2019-09-16T22:39:54.6072612Z   local time: Mon Sep 16 22:39:54 UTC 2019
2019-09-16T22:39:54.7845988Z   network time: Mon, 16 Sep 2019 22:39:54 GMT
2019-09-16T22:39:54.7850430Z == end clock drift check ==
2019-09-16T22:39:56.1348663Z ##[error]Bash exited with code '1'.
2019-09-16T22:39:56.1409259Z ##[section]Starting: Checkout
2019-09-16T22:39:56.1411407Z ==============================================================================
2019-09-16T22:39:56.1411466Z Task         : Get sources
2019-09-16T22:39:56.1411535Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 17, 2019

Yes, I'm not surprised that rmeta files grow quite a bit. I think at one point I had implemented the same solution (i.e. storing exported generics as symbol name strings instead of DefIds) and just felt bad about the amount of redundant data.

Regarding a different solution: I haven't actually tried this but might it be possible to just add a parameter for the instantiating crate to the query and then pull out the logic into a helper method? Something like:

// The query
fn symbol_name(tcx: TyCtxt<'tcx>, instance: Instance<'tcx>, instantiating_crate: Option<CrateNum>) -> InternedString {
    // ...
}

// Helper method
impl TyCtxt {
    // What an awesome method name!
    fn symbol_name_as_used_locally(self, instance: Instance) -> InternedString {
        // Do the deduction of the instantiating crate here.
        // This is moved out of the query provider above.
        let is_generic = substs.non_erasable_generics().next().is_some();
        let avoid_cross_crate_conflicts =
            // If this is an instance of a generic function, we also hash in
            // the ID of the instantiating crate. This avoids symbol conflicts
            // in case the same instances is emitted in two crates of the same
            // project.
            is_generic ||

            // If we're dealing with an instance of a function that's inlined from
            // another crate but we're marking it as globally shared to our
            // compliation (aka we're not making an internal copy in each of our
            // codegen units) then this symbol may become an exported (but hidden
            // visibility) symbol. This means that multiple crates may do the same
            // and we want to be sure to avoid any symbol conflicts here.
            match MonoItem::Fn(instance).instantiation_mode(tcx) {
                InstantiationMode::GloballyShared { may_conflict: true } => true,
                _ => false,
            };

        let instantiating_crate = if avoid_cross_crate_conflicts {
            Some(if is_generic {
                if !def_id.is_local() && tcx.sess.opts.share_generics() {
                    // If we are re-using a monomorphization from another crate,
                    // we have to compute the symbol hash accordingly.
                    let upstream_monomorphizations = tcx.upstream_monomorphizations_for(def_id);

                    upstream_monomorphizations
                        .and_then(|monos| monos.get(&substs).cloned())
                        .unwrap_or(LOCAL_CRATE)
                } else {
                    LOCAL_CRATE
                }
            } else {
                LOCAL_CRATE
            })
        } else {
            None
        };

        self.symbol_name(instance, instantiating_crate)
    }
}


/// and then in back/linker.rs

fn exported_symbols(tcx: TyCtxt<'_>, crate_type: CrateType) -> Vec<String> {

    // ...

    // For each dependency that we are linking to statically ... 
    if *dep_format == Linkage::Static { 
        // ... we add its symbol list to our export list. 
        for &(symbol, level) in tcx.exported_symbols(cnum).iter() { 
            if level.is_below_threshold(export_threshold) { 
                symbols.push(tcx.symbol_name(symbol, cnum).to_string());
            } 
        } 
    }

    // ...
}

That being said, if you have a clean solution that just makes dylibs not participate in the sharing, I'd be happy with that too.

rustc: Fix mixing crates with different `share_generics`
This commit addresses #64319 by removing the `dylib` crate type from the
list of crate type that exports generic symbols. The bug in #64319
arises because a `dylib` crate type was trying to export a symbol in an
uptream crate but it miscalculated the symbol name of the uptream
symbol. This isn't really necessary, though, since `dylib` crates aren't
that heavily used, so we can just conservatively say that the `dylib`
crate type never exports generic symbols, forcibly removing them from
the exported symbol lists if were to otherwise find them.

The fix here happens in two places:

* First is in the `local_crate_exports_generics` method, indicating that
  it's now `false` for the `Dylib` crate type. Only rlibs actually
  export generics at this point.

* Next is when we load exported symbols from upstream crate. If, for our
  compilation session, the crate may be included from a dynamic library,
  then its generic symbols are removed. When the crate was linked into a
  dynamic library its symbols weren't exported, so we can't consider
  them a candidate to link against.

Overally this should avoid situations where we incorrectly calculate the
upstream symbol names in the face of differnet `share_generics` options,
ultimately...

Closes #64319

@alexcrichton alexcrichton force-pushed the alexcrichton:share-generics-again branch from ef6af26 to f564090 Sep 17, 2019

@alexcrichton

This comment has been minimized.

Copy link
Member Author

commented Sep 17, 2019

I was initially thinking that strategy too, but honestly I thought queries couldn't take more than one parameter so I didn't pursue it very far. I see now that the one parameter can be a tuple, and it probably works the way I would expect. d'oh!

In the end though I feel like this current strategy with dylibs ended up working alright and was relatively low-impact. I'm curious what you think though with regards to the implementation? I don't mind rewriting to use the two-argument method instead if this looks too hairy.

@michaelwoerister

This comment has been minimized.

Copy link
Contributor

commented Sep 17, 2019

Yes, I'll take a look at your solution tomorrow.

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Sep 17, 2019

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-09-17T15:18:06.5610378Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-09-17T15:18:06.5794298Z ##[command]git config gc.auto 0
2019-09-17T15:18:06.5888239Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-09-17T15:18:06.5965031Z ##[command]git config --get-all http.proxy
2019-09-17T15:18:06.6137326Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/64324/merge:refs/remotes/pull/64324/merge
---
2019-09-17T16:24:39.5688204Z .................................................................................................... 1500/9023
2019-09-17T16:24:45.9476058Z .................................................................................................... 1600/9023
2019-09-17T16:24:59.3149644Z ...............................................................i...............i.................... 1700/9023
2019-09-17T16:25:07.0279970Z .................................................................................................... 1800/9023
2019-09-17T16:25:23.3415422Z ......................................................iiiii......................................... 1900/9023
2019-09-17T16:25:35.4898360Z .................................................................................................... 2100/9023
2019-09-17T16:25:38.2573662Z .................................................................................................... 2200/9023
2019-09-17T16:25:41.9053257Z .................................................................................................... 2300/9023
2019-09-17T16:25:50.6989715Z .................................................................................................... 2400/9023
---
2019-09-17T16:29:00.5093226Z ...........................................i...............i........................................ 4700/9023
2019-09-17T16:29:11.8999463Z .................................................................................................... 4800/9023
2019-09-17T16:29:19.3020633Z .................................................................................................... 4900/9023
2019-09-17T16:29:29.7012594Z .................................................................................................... 5000/9023
2019-09-17T16:29:37.9314325Z ...........................ii.ii.................................................................... 5100/9023
2019-09-17T16:29:48.5940655Z .................................................................................................... 5300/9023
2019-09-17T16:29:59.6174189Z ...........................................................................................i........ 5400/9023
2019-09-17T16:30:08.4659613Z .................................................................................................... 5500/9023
2019-09-17T16:30:13.7089353Z .................................................................................................... 5600/9023
2019-09-17T16:30:13.7089353Z .................................................................................................... 5600/9023
2019-09-17T16:30:25.8436965Z ......................................................................................ii...i..ii.... 5700/9023
2019-09-17T16:30:51.8776905Z .................................................................................................... 5900/9023
2019-09-17T16:31:02.6303027Z .................................................................................................... 6000/9023
2019-09-17T16:31:02.6303027Z .................................................................................................... 6000/9023
2019-09-17T16:31:10.2850550Z ........................................................................................i..ii....... 6100/9023
2019-09-17T16:31:40.8087325Z .................................................................................................... 6300/9023
2019-09-17T16:31:44.8641154Z ...............................................i.................................................... 6400/9023
2019-09-17T16:31:47.1880442Z .................................................................................................... 6500/9023
2019-09-17T16:31:49.8538812Z ...................i................................................................................ 6600/9023
---
2019-09-17T16:36:11.1519901Z failures:
2019-09-17T16:36:11.1519980Z 
2019-09-17T16:36:11.1520254Z ---- [compile-fail] compile-fail/two-panic-runtimes.rs stdout ----
2019-09-17T16:36:11.1520288Z 
2019-09-17T16:36:11.1520739Z error: error pattern 'cannot link together two panic runtimes: panic_runtime_unwind and panic_runtime_unwind2' not found!
2019-09-17T16:36:11.1520929Z status: exit code: 1
2019-09-17T16:36:11.1523025Z command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/compile-fail/two-panic-runtimes.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "-Zui-testing" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/compile-fail/two-panic-runtimes" "-Crpath" "-O" "-Cdebuginfo=0" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/compile-fail/two-panic-runtimes/auxiliary" "-A" "unused"
2019-09-17T16:36:11.1523927Z ------------------------------------------
2019-09-17T16:36:11.1523968Z 
2019-09-17T16:36:11.1524370Z ------------------------------------------
2019-09-17T16:36:11.1524577Z stderr:
2019-09-17T16:36:11.1524577Z stderr:
2019-09-17T16:36:11.1525209Z ------------------------------------------
2019-09-17T16:36:11.1525394Z error: requires `start` lang_item
2019-09-17T16:36:11.1525524Z error: aborting due to previous error
2019-09-17T16:36:11.1525551Z 
2019-09-17T16:36:11.1525633Z 
2019-09-17T16:36:11.1525859Z ------------------------------------------
---
2019-09-17T16:36:11.1526772Z test result: FAILED. 30 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out
2019-09-17T16:36:11.1528159Z 
2019-09-17T16:36:11.1528241Z 
2019-09-17T16:36:11.1528315Z 
2019-09-17T16:36:11.1529769Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/compile-fail" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/compile-fail" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "compile-fail" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2019-09-17T16:36:11.1530169Z 
2019-09-17T16:36:11.1530213Z 
2019-09-17T16:36:11.1538037Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
2019-09-17T16:36:11.1538120Z Build completed unsuccessfully in 1:10:40
2019-09-17T16:36:11.1538120Z Build completed unsuccessfully in 1:10:40
2019-09-17T16:36:11.1593337Z == clock drift check ==
2019-09-17T16:36:11.1617066Z   local time: Tue Sep 17 16:36:11 UTC 2019
2019-09-17T16:36:11.3155565Z   network time: Tue, 17 Sep 2019 16:36:11 GMT
2019-09-17T16:36:11.3155639Z == end clock drift check ==
2019-09-17T16:36:12.0476639Z ##[error]Bash exited with code '1'.
2019-09-17T16:36:12.0517562Z ##[section]Starting: Checkout
2019-09-17T16:36:12.0519380Z ==============================================================================
2019-09-17T16:36:12.0519444Z Task         : Get sources
2019-09-17T16:36:12.0519511Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
7 participants
You can’t perform that action at this time.