unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-16 18:00 [bug#33066] [PATCH 0/2] Workaround rust reproducibility issues Nikolai Merinov
@ 2018-10-15 21:32 ` Nikolai Merinov
  2018-10-17 11:14   ` Danny Milosavljevic
  2018-10-15 21:37 ` [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages Nikolai Merinov
  1 sibling, 1 reply; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-15 21:32 UTC (permalink / raw)
  To: 33066

* gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch:
patch that make "searchindex.js" reproducible in rust 1.27 and newer.
* gnu/local.mk (dist_patch_DATA): Add new patch file.
* gnu/packages/rust.scm (rust-1.19): Use system libssh2 library
during cargo build. Note: libgit2 still builded as part of cargo build,
because cargo tests assume specific libgit2 minor release.
(rust-1.23): inherit native-inputs from previous package.
(rust-1.25): switch back to llvm 3.9.1 as workaround for
https://github.com/rust-lang/rust/issues/50556 issue.
(rust-1.27): apply patch to make "searchindex.js" files reproducible.
---
 gnu/local.mk                                  |  1 +
 ...ible-builds-by-forcing-window.search.patch | 28 ++++++++++++++++
 gnu/packages/rust.scm                         | 32 ++++++-------------
 3 files changed, 38 insertions(+), 23 deletions(-)
 create mode 100644 gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1fa2eaba3..2150cbf13 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1130,6 +1130,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
   %D%/packages/patches/rust-bootstrap-stage0-test.patch		\
   %D%/packages/patches/rust-coresimd-doctest.patch		\
+  %D%/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch \
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
   %D%/packages/patches/scotch-test-threading.patch		\
diff --git a/gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch b/gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch
new file mode 100644
index 000000000..916662cbc
--- /dev/null
+++ b/gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch
@@ -0,0 +1,28 @@
+From b9ca108fcae2b738ca3f0c88c84ae5dc5a6f843f Mon Sep 17 00:00:00 2001
+From: Tim Ryan <id@timryan.org>
+Date: Mon, 14 May 2018 06:22:21 -0400
+Subject: [PATCH] Support reproducible builds by forcing window.search to use
+ stable key ordering. (#692)
+
+---
+ src/vendor/mdbook/src/renderer/html_handlebars/search.rs | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
+index d49772f8b..1ee66a511 100644
+--- a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
++++ b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
+@@ -205,6 +205,10 @@ fn write_to_js(index: Index, search_config: &Search) -> Result<String> {
+         searchoptions,
+         index,
+     };
++
++    // By converting to serde_json::Value as an intermediary, we use a
++    // BTreeMap internally and can force a stable ordering of map keys.
++    let json_contents = serde_json::to_value(&json_contents)?;
+     let json_contents = serde_json::to_string(&json_contents)?;
+ 
+     Ok(format!("window.search = {};", json_contents))
+-- 
+2.19.0
+
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 40633854a..cbfbdccf1 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -480,7 +480,8 @@ test = { path = \"../libtest\" }
      `(("jemalloc" ,jemalloc-4.5.0)
        ("llvm" ,llvm-3.9.1)
        ("openssl" ,openssl)
-       ("libcurl" ,curl))) ; For "cargo"
+       ("libssh2" ,libssh2) ; For "cargo"
+       ("libcurl" ,curl)))  ; For "cargo"
 
     ;; rustc invokes gcc, so we need to set its search paths accordingly.
     ;; Note: duplicate its value here to cope with circular dependencies among
@@ -649,18 +650,11 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
     (name "rust")
     (version "1.23.0")
     (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
+    ;; Use rust-bootstrap@1.22 package to build rust 1.23
     (native-inputs
-     `(("bison" ,bison) ; For the tests
-       ("cmake" ,cmake)
-       ("flex" ,flex) ; For the tests
-       ("gdb" ,gdb)   ; For the tests
-       ("git" ,git)
-       ("procps" ,procps) ; For the tests
-       ("python-2" ,python-2)
-       ("rustc-bootstrap" ,rust-bootstrap)
-       ("cargo-bootstrap" ,rust-bootstrap "cargo")
-       ("pkg-config" ,pkg-config) ; For "cargo"
-       ("which" ,which)))
+     (alist-replace "cargo-bootstrap" (list rust-bootstrap "cargo")
+                    (alist-replace "rustc-bootstrap" (list rust-bootstrap)
+                                   (package-native-inputs rust-1.20))))
     (arguments
      (substitute-keyword-arguments (package-arguments rust-1.20)
        ((#:phases phases)
@@ -699,10 +693,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
           #:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))
     (package
       (inherit base-rust)
-      (inputs
-       ;; Use LLVM 6.0
-       (alist-replace "llvm" (list llvm)
-                      (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -713,14 +703,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    ;; This test wants to update the crate index.
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t))
-             (add-after 'configure 'enable-codegen-tests
-               (lambda _
-                 (substitute* "config.toml"
-                   (("codegen-tests = false") ""))
-                 #t))
              ;; FIXME: Re-enable this test if it's indeed supposed to work.
              ;; See <https://github.com/rust-lang/rust/issues/54178>.
-             (add-after 'enable-codegen-tests 'disable-nil-enum-test
+             (add-after 'configure 'disable-nil-enum-test
                (lambda _
                  (substitute* "src/test/debuginfo/nil-enum.rs"
                    (("ignore-lldb") "ignore-gdb"))
@@ -795,7 +780,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                                     #:patches
                                     '("rust-coresimd-doctest.patch"
                                       "rust-bootstrap-stage0-test.patch"
-                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
+                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch"))))
     (package
       (inherit base-rust)
       (arguments
-- 
2.19.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages
  2018-10-16 18:00 [bug#33066] [PATCH 0/2] Workaround rust reproducibility issues Nikolai Merinov
  2018-10-15 21:32 ` [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 " Nikolai Merinov
@ 2018-10-15 21:37 ` Nikolai Merinov
  2018-10-17 11:15   ` Danny Milosavljevic
  2018-10-17 14:14   ` Joe Hillenbrand
  1 sibling, 2 replies; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-15 21:37 UTC (permalink / raw)
  To: 33066

* gnu/packages/rust.scm (rust-1.27): rename "rust" to "rust-1.27"
(rust-1.28): Use llvm-6.0 finally. Disable test that broken on x86_64 machines
without "avx". Disable test that required network support.
(rust): Package for rust 1.29.1.
---
 gnu/packages/rust.scm | 44 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index cbfbdccf1..d61b431e8 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -773,7 +773,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t)))))))))
 
-(define-public rust
+(define-public rust-1.27
   (let ((base-rust
          (rust-bootstrapped-package rust-1.26 "1.27.2"
                                     "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"
@@ -795,3 +795,45 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  (mkdir-p (assoc-ref outputs "out"))
                  (mkdir-p (assoc-ref outputs "cargo"))
                  #t)))))))))
+
+(define-public rust-1.28
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.27 "1.28.0"
+                                    "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"
+                                    #:patches
+                                    '("rust-coresimd-doctest.patch"
+                                      "rust-bootstrap-stage0-test.patch"
+                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch"))))
+    (package
+      (inherit base-rust)
+      (inputs
+       ;; Use LLVM 6.0
+       (alist-replace "llvm" (list llvm)
+                      (package-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'configure 'enable-codegen-tests
+               ;; codegen tests should work fine with llvm 6
+               (lambda* _
+                 (substitute* "config.toml"
+                   (("codegen-tests = false") ""))
+                 #t))
+             (add-after 'patch-tests 'disable-amd64-avx-test
+               ;; This test will fail on x86_64 machines without avx
+               (lambda* _
+                 (substitute* "src/test/run-pass/issue-44056.rs"
+                   (("only-x86_64") "ignore-test")))))))))))
+
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.28 "1.29.1"
+                                    "0jd3c57x3yndizns4pb68nh25si47agfmrdvf9nwwsyfcs5p5c7i"
+                                    #:patches
+                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch"))))
+    (package
+      (inherit base-rust))))
-- 
2.19.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCH 0/2] Workaround rust reproducibility issues
@ 2018-10-16 18:00 Nikolai Merinov
  2018-10-15 21:32 ` [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 " Nikolai Merinov
  2018-10-15 21:37 ` [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages Nikolai Merinov
  0 siblings, 2 replies; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-16 18:00 UTC (permalink / raw)
  To: 33066

Hi,

I prepared patches for Rust packages.

First patch move rust 1.25-1.27 packages back to llvm 3.9.1. I spend much time
tring to find root of non-reproducibility in this releases, but I did not
succeeded. So as easiest solution I suggest just keep old LLVM for this
packages. Drawback of this solution is impossibility to use
"#[target_feature]" will not work for this releases.

Second patch have new 1.28.0, 1.29.1 rust packages. They was reproducible in
my local tests with llvm 6.0.1, so this packages was switched to new LLVM.

Please, note: I tested packages with suggested changes only from
https://github.com/mnd/guix-mnd-pkgs/ repository. Full build chain
reproducibility test with exactly submitted patches currently in progress on
my laptop, but it can take another one or two days.

Regards,
Nikolai

Nikolai Merinov (2):
  gnu: rust: workaround rust 1.25-27 reproducibility issues
  gnu: rust: add rust 1.28 and rust 1.29 packages

 gnu/local.mk                                  |  1 +
 ...ible-builds-by-forcing-window.search.patch | 28 +++++++
 gnu/packages/rust.scm                         | 76 +++++++++++++------
 3 files changed, 81 insertions(+), 24 deletions(-)
 create mode 100644 gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch

-- 
2.19.0

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-15 21:32 ` [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 " Nikolai Merinov
@ 2018-10-17 11:14   ` Danny Milosavljevic
  2018-10-19 19:44     ` Nikolai Merinov
  0 siblings, 1 reply; 14+ messages in thread
From: Danny Milosavljevic @ 2018-10-17 11:14 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 33066

[-- Attachment #1: Type: text/plain, Size: 1863 bytes --]

Hi Nikolai,

On Tue, 16 Oct 2018 02:32:11 +0500
Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:

> * gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch:

Nitpick: No big "S" (file names are easier to find if they are all lower case).

> patch that make "searchindex.js" reproducible in rust 1.27 and newer.

"New file".

> * gnu/local.mk (dist_patch_DATA): Add new patch file.
> * gnu/packages/rust.scm (rust-1.19): Use system libssh2 library

Hmm, I'm not sure about doing this in the same commit.
Is it also related to reproducibility?

> during cargo build. Note: libgit2 still builded as part of cargo build,
> because cargo tests assume specific libgit2 minor release.

What does this mean?  Does it mean "bundled"?

> (rust-1.23): inherit native-inputs from previous package.

Ok.

> (rust-1.25): switch back to llvm 3.9.1 as workaround for
> https://github.com/rust-lang/rust/issues/50556 issue.

Please add the reasoning as a comment inside the source code instead.

> (rust-1.27): apply patch to make "searchindex.js" files reproducible.

Maybe add "[source]".

> -             (add-after 'configure 'enable-codegen-tests
> -               (lambda _
> -                 (substitute* "config.toml"
> -                   (("codegen-tests = false") ""))
> -                 #t))

I think I had reproducibility problems when enabling codegen tests and
parallel tests.  Is that not the case anymore?

>               ;; FIXME: Re-enable this test if it's indeed supposed to work.
>               ;; See <https://github.com/rust-lang/rust/issues/54178>.

Note to myself: I think the issue comments indicate that the newer gdb output
is better - so we should create a patch similar to
rust-1.25-accept-more-detailed-gdb-lines.patch to accept the newer output.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages
  2018-10-15 21:37 ` [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages Nikolai Merinov
@ 2018-10-17 11:15   ` Danny Milosavljevic
  2018-10-17 14:14   ` Joe Hillenbrand
  1 sibling, 0 replies; 14+ messages in thread
From: Danny Milosavljevic @ 2018-10-17 11:15 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 33066

[-- Attachment #1: Type: text/plain, Size: 340 bytes --]

> +             (add-after 'patch-tests 'disable-amd64-avx-test
> +               ;; This test will fail on x86_64 machines without avx
> +               (lambda* _
> +                 (substitute* "src/test/run-pass/issue-44056.rs"
> +                   (("only-x86_64") "ignore-test")))))))))))

Please return #t.

Otherwise ok!

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages
  2018-10-15 21:37 ` [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages Nikolai Merinov
  2018-10-17 11:15   ` Danny Milosavljevic
@ 2018-10-17 14:14   ` Joe Hillenbrand
  1 sibling, 0 replies; 14+ messages in thread
From: Joe Hillenbrand @ 2018-10-17 14:14 UTC (permalink / raw)
  To: nikolai.merinov; +Cc: 33066

On Tue, Oct 16, 2018 at 11:50 AM Nikolai Merinov
<nikolai.merinov@member.fsf.org> wrote:
>
> +(define-public rust
> +  (let ((base-rust
> +         (rust-bootstrapped-package rust-1.28 "1.29.1"

The latest version is now 1.29.2

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-17 11:14   ` Danny Milosavljevic
@ 2018-10-19 19:44     ` Nikolai Merinov
  2018-10-19 20:58       ` [bug#33066] [PATCHv3] " Nikolai Merinov
  0 siblings, 1 reply; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-19 19:44 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 33066

[-- Attachment #1: Type: text/plain, Size: 2990 bytes --]

Hi Danny,

I fixed patches according to your comments. Also I updated rust 1.29.1
to 1.29.2 and fixed test issue in 1.27: as I mentioned before I tested
reproducibility of each package previously only in private my private
repo where I disabled `check` phase for 1.25 and 1.27. I have pretty
slow machine, but currently I already checked reproducibility with
suggested patches for 1.23-1.26 releases. 1.27-1.29 in progress.

Both updated patches attached.

Danny Milosavljevic <dannym@scratchpost.org> writes:

> Hi Nikolai,
>
> On Tue, 16 Oct 2018 02:32:11 +0500
> Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:
>
>> * gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch:
>
> Nitpick: No big "S" (file names are easier to find if they are all lower case).
>
Fixed.

>> patch that make "searchindex.js" reproducible in rust 1.27 and newer.
>
> "New file".
Fixed.

>
>> * gnu/local.mk (dist_patch_DATA): Add new patch file.
>> * gnu/packages/rust.scm (rust-1.19): Use system libssh2 library
>
> Hmm, I'm not sure about doing this in the same commit.
> Is it also related to reproducibility?

Looks like it should not, but still I started investigation with
non-reproducible "libssh2" and "libgit2" rust libraries I made libssh2
related changes at very beginning and never tested wihtout it. I not
sure that it's good idea to remove it now.

>
>> during cargo build. Note: libgit2 still builded as part of cargo build,
>> because cargo tests assume specific libgit2 minor release.
>
> What does this mean?  Does it mean "bundled"?
Yes. Rust used bundled sources for "libgit2-sys" rust library (used by cargo).

>
>> (rust-1.23): inherit native-inputs from previous package.
>
> Ok.
>
>> (rust-1.25): switch back to llvm 3.9.1 as workaround for
>> https://github.com/rust-lang/rust/issues/50556 issue.
>
> Please add the reasoning as a comment inside the source code instead.
Added comment for rust-1.25 package.

>
>> (rust-1.27): apply patch to make "searchindex.js" files reproducible.
>
> Maybe add "[source]".
I repharase this comment and added source URL to patch file itself.

>
>> -             (add-after 'configure 'enable-codegen-tests
>> -               (lambda _
>> -                 (substitute* "config.toml"
>> -                   (("codegen-tests = false") ""))
>> -                 #t))
>
> I think I had reproducibility problems when enabling codegen tests and
> parallel tests.  Is that not the case anymore?
Neither me nor Joe Hillenbrand in
https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00292.html got
reproducibility issues with this tests.
>
>>               ;; FIXME: Re-enable this test if it's indeed supposed to work.
>>               ;; See <https://github.com/rust-lang/rust/issues/54178>.
>
> Note to myself: I think the issue comments indicate that the newer gdb output
> is better - so we should create a patch similar to
> rust-1.25-accept-more-detailed-gdb-lines.patch to accept the newer output.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: make rust 1.25-1.27 reproducible --]
[-- Type: text/x-patch, Size: 8174 bytes --]

From 253286c455a32007f28eeff965f4b33e07856f58 Mon Sep 17 00:00:00 2001
From: Nikolai Merinov <nikolai.merinov@member.fsf.org>
Date: Tue, 16 Oct 2018 02:32:11 +0500
Subject: [PATCH 1/2] gnu: rust: workaround rust 1.25-27 reproducibility issues
To: guix-patches@gnu.org

* gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add new patch file.
* gnu/packages/rust.scm (rust-1.19): Use system libssh2 library
during cargo build. Note: libgit2 still bundled, because cargo
tests assume specific libgit2 minor release.
(rust-1.23): Inherit native-inputs from previous package.
(rust-1.25): Switch back to llvm 3.9.1 as workaround for
https://github.com/rust-lang/rust/issues/50556 issue.
(rust-1.27): Apply changes from
https://github.com/rust-lang-nursery/mdBook/pull/692 to make
generation of "searchindex.js" files reproducible. Disable cargo
test that required llvm 6.
---
 gnu/local.mk                                  |  1 +
 ...ible-builds-by-forcing-window.search.patch | 28 +++++++++++++
 gnu/packages/rust.scm                         | 41 ++++++++-----------
 3 files changed, 47 insertions(+), 23 deletions(-)
 create mode 100644 gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1fa2eaba3..8695ce472 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1130,6 +1130,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
   %D%/packages/patches/rust-bootstrap-stage0-test.patch		\
   %D%/packages/patches/rust-coresimd-doctest.patch		\
+  %D%/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch \
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
   %D%/packages/patches/scotch-test-threading.patch		\
diff --git a/gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch b/gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch
new file mode 100644
index 000000000..b4ae3a4b8
--- /dev/null
+++ b/gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch
@@ -0,0 +1,28 @@
+From b9ca108fcae2b738ca3f0c88c84ae5dc5a6f843f Mon Sep 17 00:00:00 2001
+From: Tim Ryan <id@timryan.org>
+Date: Mon, 14 May 2018 06:22:21 -0400
+Subject: [PATCH] Support reproducible builds by forcing window.search to use
+ stable key ordering. (#692)
+See <https://github.com/rust-lang-nursery/mdBook/pull/692>
+---
+ src/vendor/mdbook/src/renderer/html_handlebars/search.rs | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
+index d49772f8b..1ee66a511 100644
+--- a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
++++ b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
+@@ -205,6 +205,10 @@ fn write_to_js(index: Index, search_config: &Search) -> Result<String> {
+         searchoptions,
+         index,
+     };
++
++    // By converting to serde_json::Value as an intermediary, we use a
++    // BTreeMap internally and can force a stable ordering of map keys.
++    let json_contents = serde_json::to_value(&json_contents)?;
+     let json_contents = serde_json::to_string(&json_contents)?;
+ 
+     Ok(format!("window.search = {};", json_contents))
+-- 
+2.19.0
+
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 40633854a..190dbcc3a 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -480,7 +480,8 @@ test = { path = \"../libtest\" }
      `(("jemalloc" ,jemalloc-4.5.0)
        ("llvm" ,llvm-3.9.1)
        ("openssl" ,openssl)
-       ("libcurl" ,curl))) ; For "cargo"
+       ("libssh2" ,libssh2) ; For "cargo"
+       ("libcurl" ,curl)))  ; For "cargo"
 
     ;; rustc invokes gcc, so we need to set its search paths accordingly.
     ;; Note: duplicate its value here to cope with circular dependencies among
@@ -649,18 +650,11 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
     (name "rust")
     (version "1.23.0")
     (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
+    ;; Use rust-bootstrap@1.22 package to build rust 1.23
     (native-inputs
-     `(("bison" ,bison) ; For the tests
-       ("cmake" ,cmake)
-       ("flex" ,flex) ; For the tests
-       ("gdb" ,gdb)   ; For the tests
-       ("git" ,git)
-       ("procps" ,procps) ; For the tests
-       ("python-2" ,python-2)
-       ("rustc-bootstrap" ,rust-bootstrap)
-       ("cargo-bootstrap" ,rust-bootstrap "cargo")
-       ("pkg-config" ,pkg-config) ; For "cargo"
-       ("which" ,which)))
+     (alist-replace "cargo-bootstrap" (list rust-bootstrap "cargo")
+                    (alist-replace "rustc-bootstrap" (list rust-bootstrap)
+                                   (package-native-inputs rust-1.20))))
     (arguments
      (substitute-keyword-arguments (package-arguments rust-1.20)
        ((#:phases phases)
@@ -692,6 +686,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
                  #t)))))))))
 
+;;; Rust 1.25 release support work with llvm 6, but builds with llvm 6 is
+;;; not determenistic due to https://github.com/rust-lang/rust/issues/50556
+;;; Keep using llvm 3.9.1 until builds become determenistic
 (define-public rust-1.25
   (let ((base-rust
          (rust-bootstrapped-package rust-1.24 "1.25.0"
@@ -699,10 +696,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
           #:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))
     (package
       (inherit base-rust)
-      (inputs
-       ;; Use LLVM 6.0
-       (alist-replace "llvm" (list llvm)
-                      (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -713,14 +706,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    ;; This test wants to update the crate index.
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t))
-             (add-after 'configure 'enable-codegen-tests
-               (lambda _
-                 (substitute* "config.toml"
-                   (("codegen-tests = false") ""))
-                 #t))
              ;; FIXME: Re-enable this test if it's indeed supposed to work.
              ;; See <https://github.com/rust-lang/rust/issues/54178>.
-             (add-after 'enable-codegen-tests 'disable-nil-enum-test
+             (add-after 'configure 'disable-nil-enum-test
                (lambda _
                  (substitute* "src/test/debuginfo/nil-enum.rs"
                    (("ignore-lldb") "ignore-gdb"))
@@ -795,7 +783,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                                     #:patches
                                     '("rust-coresimd-doctest.patch"
                                       "rust-bootstrap-stage0-test.patch"
-                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
+                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch"))))
     (package
       (inherit base-rust)
       (arguments
@@ -808,4 +797,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  ;; `prefix' directory should exist before `install' call
                  (mkdir-p (assoc-ref outputs "out"))
                  (mkdir-p (assoc-ref outputs "cargo"))
+                 #t))
+             (add-after 'patch-cargo-tests 'disable-thinlto-test
+               (lambda* _
+                 ;; thinlto required llvm 6.0 for work
+                 (substitute* "src/tools/cargo/tests/testsuite/path.rs"
+                   (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works"))
                  #t)))))))))
-- 
2.19.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: Add rust 1.28-1.29 packages --]
[-- Type: text/x-patch, Size: 3512 bytes --]

From 9cf7f62414c5e714d7bb0cc2874d91f561e418df Mon Sep 17 00:00:00 2001
From: Nikolai Merinov <nikolai.merinov@member.fsf.org>
Date: Tue, 16 Oct 2018 02:37:41 +0500
Subject: [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages
To: guix-patches@gnu.org

* gnu/packages/rust.scm (rust-1.27): rename "rust" to "rust-1.27"
(rust-1.28): Use llvm-6.0 finally. Disable test that broken on x86_64 machines
without "avx". Enable codegen tests. Enable cargo test for thinlto.
(rust): Package for rust 1.29.2.
---
 gnu/packages/rust.scm | 46 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 190dbcc3a..a0e891249 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -776,7 +776,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t)))))))))
 
-(define-public rust
+(define-public rust-1.27
   (let ((base-rust
          (rust-bootstrapped-package rust-1.26 "1.27.2"
                                     "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"
@@ -804,3 +804,47 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  (substitute* "src/tools/cargo/tests/testsuite/path.rs"
                    (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works"))
                  #t)))))))))
+
+(define-public rust-1.28
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.27 "1.28.0"
+                                    "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"
+                                    #:patches
+                                    '("rust-coresimd-doctest.patch"
+                                      "rust-bootstrap-stage0-test.patch"
+                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch"))))
+    (package
+      (inherit base-rust)
+      (inputs
+       ;; Use LLVM 6.0
+       (alist-replace "llvm" (list llvm)
+                      (package-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'configure 'enable-codegen-tests
+               ;; codegen tests should pass with llvm 6
+               (lambda* _
+                 (substitute* "config.toml"
+                   (("codegen-tests = false") ""))
+                 #t))
+             (add-after 'patch-tests 'disable-amd64-avx-test
+               ;; This test will fail on x86_64 machines without avx
+               (lambda* _
+                 (substitute* "src/test/run-pass/issue-44056.rs"
+                   (("only-x86_64") "ignore-test"))
+                 #t))
+             ;; thinlto test should pass with llvm 6
+             (delete 'disable-thinlto-test))))))))
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.28 "1.29.2"
+                                    "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"
+                                    #:patches
+                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch"))))
+    (package
+      (inherit base-rust))))
-- 
2.19.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCHv3] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-19 19:44     ` Nikolai Merinov
@ 2018-10-19 20:58       ` Nikolai Merinov
  2018-10-21  7:28         ` Nikolai Merinov
  0 siblings, 1 reply; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-19 20:58 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 33066

[-- Attachment #1: Type: text/plain, Size: 89 bytes --]

Hi,

Sorry, ignore my previous mail. There was wrong patch
export. Re-attached patches.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-rust-workaround-rust-1.25-27-reproducibility-iss.patch --]
[-- Type: text/x-patch, Size: 8174 bytes --]

From 6e593ffb8c1d9ecf4a1ed5e131a5c352a76fe986 Mon Sep 17 00:00:00 2001
From: Nikolai Merinov <nikolai.merinov@member.fsf.org>
Date: Tue, 16 Oct 2018 02:32:11 +0500
Subject: [PATCH 1/2] gnu: rust: workaround rust 1.25-27 reproducibility issues
To: guix-patches@gnu.org

* gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add new patch file.
* gnu/packages/rust.scm (rust-1.19): Use system libssh2 library
during cargo build. Note: libgit2 still bundled, because cargo
tests assume specific libgit2 minor release.
(rust-1.23): Inherit native-inputs from previous package.
(rust-1.25): Switch back to llvm 3.9.1 as workaround for
https://github.com/rust-lang/rust/issues/50556 issue.
(rust-1.27): Apply changes from
https://github.com/rust-lang-nursery/mdBook/pull/692 to make
generation of "searchindex.js" files reproducible. Disable cargo
test that required llvm 6.
---
 gnu/local.mk                                  |  1 +
 ...ible-builds-by-forcing-window.search.patch | 28 +++++++++++++
 gnu/packages/rust.scm                         | 41 ++++++++-----------
 3 files changed, 47 insertions(+), 23 deletions(-)
 create mode 100644 gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1fa2eaba3..8695ce472 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1130,6 +1130,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
   %D%/packages/patches/rust-bootstrap-stage0-test.patch		\
   %D%/packages/patches/rust-coresimd-doctest.patch		\
+  %D%/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch \
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
   %D%/packages/patches/scotch-test-threading.patch		\
diff --git a/gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch b/gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch
new file mode 100644
index 000000000..b4ae3a4b8
--- /dev/null
+++ b/gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch
@@ -0,0 +1,28 @@
+From b9ca108fcae2b738ca3f0c88c84ae5dc5a6f843f Mon Sep 17 00:00:00 2001
+From: Tim Ryan <id@timryan.org>
+Date: Mon, 14 May 2018 06:22:21 -0400
+Subject: [PATCH] Support reproducible builds by forcing window.search to use
+ stable key ordering. (#692)
+See <https://github.com/rust-lang-nursery/mdBook/pull/692>
+---
+ src/vendor/mdbook/src/renderer/html_handlebars/search.rs | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
+index d49772f8b..1ee66a511 100644
+--- a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
++++ b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
+@@ -205,6 +205,10 @@ fn write_to_js(index: Index, search_config: &Search) -> Result<String> {
+         searchoptions,
+         index,
+     };
++
++    // By converting to serde_json::Value as an intermediary, we use a
++    // BTreeMap internally and can force a stable ordering of map keys.
++    let json_contents = serde_json::to_value(&json_contents)?;
+     let json_contents = serde_json::to_string(&json_contents)?;
+ 
+     Ok(format!("window.search = {};", json_contents))
+-- 
+2.19.0
+
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 40633854a..cd2a8fb9a 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -480,7 +480,8 @@ test = { path = \"../libtest\" }
      `(("jemalloc" ,jemalloc-4.5.0)
        ("llvm" ,llvm-3.9.1)
        ("openssl" ,openssl)
-       ("libcurl" ,curl))) ; For "cargo"
+       ("libssh2" ,libssh2) ; For "cargo"
+       ("libcurl" ,curl)))  ; For "cargo"
 
     ;; rustc invokes gcc, so we need to set its search paths accordingly.
     ;; Note: duplicate its value here to cope with circular dependencies among
@@ -649,18 +650,11 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
     (name "rust")
     (version "1.23.0")
     (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
+    ;; Use rust-bootstrap@1.22 package to build rust 1.23
     (native-inputs
-     `(("bison" ,bison) ; For the tests
-       ("cmake" ,cmake)
-       ("flex" ,flex) ; For the tests
-       ("gdb" ,gdb)   ; For the tests
-       ("git" ,git)
-       ("procps" ,procps) ; For the tests
-       ("python-2" ,python-2)
-       ("rustc-bootstrap" ,rust-bootstrap)
-       ("cargo-bootstrap" ,rust-bootstrap "cargo")
-       ("pkg-config" ,pkg-config) ; For "cargo"
-       ("which" ,which)))
+     (alist-replace "cargo-bootstrap" (list rust-bootstrap "cargo")
+                    (alist-replace "rustc-bootstrap" (list rust-bootstrap)
+                                   (package-native-inputs rust-1.20))))
     (arguments
      (substitute-keyword-arguments (package-arguments rust-1.20)
        ((#:phases phases)
@@ -692,6 +686,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
                  #t)))))))))
 
+;;; Rust 1.25 release support work with llvm 6, but builds with llvm 6 is
+;;; not determenistic due to https://github.com/rust-lang/rust/issues/50556
+;;; Keep using llvm 3.9.1 until builds become determenistic
 (define-public rust-1.25
   (let ((base-rust
          (rust-bootstrapped-package rust-1.24 "1.25.0"
@@ -699,10 +696,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
           #:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))
     (package
       (inherit base-rust)
-      (inputs
-       ;; Use LLVM 6.0
-       (alist-replace "llvm" (list llvm)
-                      (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -713,14 +706,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    ;; This test wants to update the crate index.
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t))
-             (add-after 'configure 'enable-codegen-tests
-               (lambda _
-                 (substitute* "config.toml"
-                   (("codegen-tests = false") ""))
-                 #t))
              ;; FIXME: Re-enable this test if it's indeed supposed to work.
              ;; See <https://github.com/rust-lang/rust/issues/54178>.
-             (add-after 'enable-codegen-tests 'disable-nil-enum-test
+             (add-after 'configure 'disable-nil-enum-test
                (lambda _
                  (substitute* "src/test/debuginfo/nil-enum.rs"
                    (("ignore-lldb") "ignore-gdb"))
@@ -795,7 +783,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                                     #:patches
                                     '("rust-coresimd-doctest.patch"
                                       "rust-bootstrap-stage0-test.patch"
-                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
+                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch"))))
     (package
       (inherit base-rust)
       (arguments
@@ -808,4 +797,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  ;; `prefix' directory should exist before `install' call
                  (mkdir-p (assoc-ref outputs "out"))
                  (mkdir-p (assoc-ref outputs "cargo"))
+                 #t))
+             (add-after 'patch-cargo-tests 'disable-thinlto-test
+               (lambda* _
+                 ;; thinlto required llvm 6.0 for work
+                 (substitute* "src/tools/cargo/tests/testsuite/path.rs"
+                   (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works"))
                  #t)))))))))
-- 
2.19.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-rust-add-rust-1.28-and-rust-1.29-packages.patch --]
[-- Type: text/x-patch, Size: 3512 bytes --]

From 4eb82de9971c13323e7b0195f9f178282039ba35 Mon Sep 17 00:00:00 2001
From: Nikolai Merinov <nikolai.merinov@member.fsf.org>
Date: Tue, 16 Oct 2018 02:37:41 +0500
Subject: [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages
To: guix-patches@gnu.org

* gnu/packages/rust.scm (rust-1.27): rename "rust" to "rust-1.27"
(rust-1.28): Use llvm-6.0 finally. Disable test that broken on x86_64 machines
without "avx". Enable codegen tests. Enable cargo test for thinlto.
(rust): Package for rust 1.29.2.
---
 gnu/packages/rust.scm | 46 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index cd2a8fb9a..aafa3704b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -776,7 +776,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t)))))))))
 
-(define-public rust
+(define-public rust-1.27
   (let ((base-rust
          (rust-bootstrapped-package rust-1.26 "1.27.2"
                                     "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"
@@ -804,3 +804,47 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  (substitute* "src/tools/cargo/tests/testsuite/path.rs"
                    (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works"))
                  #t)))))))))
+
+(define-public rust-1.28
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.27 "1.28.0"
+                                    "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"
+                                    #:patches
+                                    '("rust-coresimd-doctest.patch"
+                                      "rust-bootstrap-stage0-test.patch"
+                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch"))))
+    (package
+      (inherit base-rust)
+      (inputs
+       ;; Use LLVM 6.0
+       (alist-replace "llvm" (list llvm)
+                      (package-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'configure 'enable-codegen-tests
+               ;; codegen tests should pass with llvm 6
+               (lambda* _
+                 (substitute* "config.toml"
+                   (("codegen-tests = false") ""))
+                 #t))
+             (add-after 'patch-tests 'disable-amd64-avx-test
+               ;; This test will fail on x86_64 machines without avx
+               (lambda* _
+                 (substitute* "src/test/run-pass/issue-44056.rs"
+                   (("only-x86_64") "ignore-test"))
+                 #t))
+             ;; thinlto test should pass with llvm 6
+             (delete 'disable-thinlto-test))))))))
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.28 "1.29.2"
+                                    "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"
+                                    #:patches
+                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch"))))
+    (package
+      (inherit base-rust))))
-- 
2.19.0


[-- Attachment #4: Type: text/plain, Size: 3171 bytes --]


Regards,
Nikolai

Nikolai Merinov <nikolai.merinov@member.fsf.org> writes:

> Hi Danny,
>
> I fixed patches according to your comments. Also I updated rust 1.29.1
> to 1.29.2 and fixed test issue in 1.27: as I mentioned before I tested
> reproducibility of each package previously only in private my private
> repo where I disabled `check` phase for 1.25 and 1.27. I have pretty
> slow machine, but currently I already checked reproducibility with
> suggested patches for 1.23-1.26 releases. 1.27-1.29 in progress.
>
> Both updated patches attached.
>
> Danny Milosavljevic <dannym@scratchpost.org> writes:
>
>> Hi Nikolai,
>>
>> On Tue, 16 Oct 2018 02:32:11 +0500
>> Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:
>>
>>> * gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch:
>>
>> Nitpick: No big "S" (file names are easier to find if they are all lower case).
>>
> Fixed.
>
>>> patch that make "searchindex.js" reproducible in rust 1.27 and newer.
>>
>> "New file".
> Fixed.
>
>>
>>> * gnu/local.mk (dist_patch_DATA): Add new patch file.
>>> * gnu/packages/rust.scm (rust-1.19): Use system libssh2 library
>>
>> Hmm, I'm not sure about doing this in the same commit.
>> Is it also related to reproducibility?
>
> Looks like it should not, but still I started investigation with
> non-reproducible "libssh2" and "libgit2" rust libraries I made libssh2
> related changes at very beginning and never tested wihtout it. I not
> sure that it's good idea to remove it now.
>
>>
>>> during cargo build. Note: libgit2 still builded as part of cargo build,
>>> because cargo tests assume specific libgit2 minor release.
>>
>> What does this mean?  Does it mean "bundled"?
> Yes. Rust used bundled sources for "libgit2-sys" rust library (used by cargo).
>
>>
>>> (rust-1.23): inherit native-inputs from previous package.
>>
>> Ok.
>>
>>> (rust-1.25): switch back to llvm 3.9.1 as workaround for
>>> https://github.com/rust-lang/rust/issues/50556 issue.
>>
>> Please add the reasoning as a comment inside the source code instead.
> Added comment for rust-1.25 package.
>
>>
>>> (rust-1.27): apply patch to make "searchindex.js" files reproducible.
>>
>> Maybe add "[source]".
> I repharase this comment and added source URL to patch file itself.
>
>>
>>> -             (add-after 'configure 'enable-codegen-tests
>>> -               (lambda _
>>> -                 (substitute* "config.toml"
>>> -                   (("codegen-tests = false") ""))
>>> -                 #t))
>>
>> I think I had reproducibility problems when enabling codegen tests and
>> parallel tests.  Is that not the case anymore?
> Neither me nor Joe Hillenbrand in
> https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00292.html got
> reproducibility issues with this tests.
>>
>>>               ;; FIXME: Re-enable this test if it's indeed supposed to work.
>>>               ;; See <https://github.com/rust-lang/rust/issues/54178>.
>>
>> Note to myself: I think the issue comments indicate that the newer gdb output
>> is better - so we should create a patch similar to
>> rust-1.25-accept-more-detailed-gdb-lines.patch to accept the newer output.

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCHv3] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-19 20:58       ` [bug#33066] [PATCHv3] " Nikolai Merinov
@ 2018-10-21  7:28         ` Nikolai Merinov
  2018-10-24 19:43           ` Danny Milosavljevic
  2018-10-25  5:44           ` Danny Milosavljevic
  0 siblings, 2 replies; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-21  7:28 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 33066

Hi,

Finally whole rust build chain 1.23-1.29 was built on my machine with next commands:
> guix pull --url=/path/to/guix-f9a8fce10/with/patches --commit=<commit-with-patches>
> for v in 1.2{3..9}; do echo guix build -K --rounds=2 rust@$v || break ; done
and all builds were reproducible.

Regards,
Nikolai

Nikolai Merinov <nikolai.merinov@member.fsf.org> writes:

> Hi,
>
> Sorry, ignore my previous mail. There was wrong patch
> export. Re-attached patches.
>
>
>
>
> Regards,
> Nikolai
>
> Nikolai Merinov <nikolai.merinov@member.fsf.org> writes:
>
>> Hi Danny,
>>
>> I fixed patches according to your comments. Also I updated rust 1.29.1
>> to 1.29.2 and fixed test issue in 1.27: as I mentioned before I tested
>> reproducibility of each package previously only in private my private
>> repo where I disabled `check` phase for 1.25 and 1.27. I have pretty
>> slow machine, but currently I already checked reproducibility with
>> suggested patches for 1.23-1.26 releases. 1.27-1.29 in progress.
>>
>> Both updated patches attached.
>>
>> Danny Milosavljevic <dannym@scratchpost.org> writes:
>>
>>> Hi Nikolai,
>>>
>>> On Tue, 16 Oct 2018 02:32:11 +0500
>>> Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:
>>>
>>>> * gnu/packages/patches/rust-mdbook-Support-reproducible-builds-by-forcing-window.search.patch:
>>>
>>> Nitpick: No big "S" (file names are easier to find if they are all lower case).
>>>
>> Fixed.
>>
>>>> patch that make "searchindex.js" reproducible in rust 1.27 and newer.
>>>
>>> "New file".
>> Fixed.
>>
>>>
>>>> * gnu/local.mk (dist_patch_DATA): Add new patch file.
>>>> * gnu/packages/rust.scm (rust-1.19): Use system libssh2 library
>>>
>>> Hmm, I'm not sure about doing this in the same commit.
>>> Is it also related to reproducibility?
>>
>> Looks like it should not, but still I started investigation with
>> non-reproducible "libssh2" and "libgit2" rust libraries I made libssh2
>> related changes at very beginning and never tested wihtout it. I not
>> sure that it's good idea to remove it now.
>>
>>>
>>>> during cargo build. Note: libgit2 still builded as part of cargo build,
>>>> because cargo tests assume specific libgit2 minor release.
>>>
>>> What does this mean?  Does it mean "bundled"?
>> Yes. Rust used bundled sources for "libgit2-sys" rust library (used by cargo).
>>
>>>
>>>> (rust-1.23): inherit native-inputs from previous package.
>>>
>>> Ok.
>>>
>>>> (rust-1.25): switch back to llvm 3.9.1 as workaround for
>>>> https://github.com/rust-lang/rust/issues/50556 issue.
>>>
>>> Please add the reasoning as a comment inside the source code instead.
>> Added comment for rust-1.25 package.
>>
>>>
>>>> (rust-1.27): apply patch to make "searchindex.js" files reproducible.
>>>
>>> Maybe add "[source]".
>> I repharase this comment and added source URL to patch file itself.
>>
>>>
>>>> -             (add-after 'configure 'enable-codegen-tests
>>>> -               (lambda _
>>>> -                 (substitute* "config.toml"
>>>> -                   (("codegen-tests = false") ""))
>>>> -                 #t))
>>>
>>> I think I had reproducibility problems when enabling codegen tests and
>>> parallel tests.  Is that not the case anymore?
>> Neither me nor Joe Hillenbrand in
>> https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00292.html got
>> reproducibility issues with this tests.
>>>
>>>>               ;; FIXME: Re-enable this test if it's indeed supposed to work.
>>>>               ;; See <https://github.com/rust-lang/rust/issues/54178>.
>>>
>>> Note to myself: I think the issue comments indicate that the newer gdb output
>>> is better - so we should create a patch similar to
>>> rust-1.25-accept-more-detailed-gdb-lines.patch to accept the newer output.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCHv3] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-21  7:28         ` Nikolai Merinov
@ 2018-10-24 19:43           ` Danny Milosavljevic
  2018-10-25  5:44           ` Danny Milosavljevic
  1 sibling, 0 replies; 14+ messages in thread
From: Danny Milosavljevic @ 2018-10-24 19:43 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 33066

[-- Attachment #1: Type: text/plain, Size: 200 bytes --]

Hi Nikolai,

I have reviewed the patchset and am currently building the entire rust chain
with your patches with several rounds and plan on merging rust after a
successful run (probably Friday).

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCHv3] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-21  7:28         ` Nikolai Merinov
  2018-10-24 19:43           ` Danny Milosavljevic
@ 2018-10-25  5:44           ` Danny Milosavljevic
  2018-10-26 11:40             ` Nikolai Merinov
  1 sibling, 1 reply; 14+ messages in thread
From: Danny Milosavljevic @ 2018-10-25  5:44 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 33066


[-- Attachment #1.1: Type: text/plain, Size: 207 bytes --]

Hi Nikolai,

I've got a cargo reproducibility failure in rust 1.29.2.   Attached is diffoscope output :(

Seems a little similar to what we had before (https://github.com/rust-lang/rust/issues/50556 ).

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: cargo-1.29.2.diff --]
[-- Type: text/x-patch, Size: 88339 bytes --]

--- /gnu/store/lpyvk8ls9ad760p4xvhrgchfa2yjbixg-rust-1.29.2-cargo
+++ /gnu/store/lpyvk8ls9ad760p4xvhrgchfa2yjbixg-rust-1.29.2-cargo-check
├── bin
│ ├── cargo
│ │ ├── /gnu/store/srmqh29dpm50j8kj1pbqg2rgh053wgyp-binutils-2.30/bin/readelf --wide --symbols {}
│ │ │ @@ -23414,15 +23414,15 @@
│ │ │   23006: 00000000005971f0   105 FUNC    GLOBAL HIDDEN    14 git_futils_cp
│ │ │   23007: 00000000006acb80  1064 FUNC    GLOBAL DEFAULT   14 _ZN3std3sys4unix6thread6Thread3new17h5e22220572dbccdeE
│ │ │   23008: 00000000006c8a20    23 FUNC    GLOBAL DEFAULT   14 _ZN63_$LT$std..env..JoinPathsError$u20$as$u20$core..fmt..Display$GT$3fmt17hc990e3fdbe762f53E
│ │ │   23009: 000000000050fef0   367 FUNC    GLOBAL HIDDEN    14 _ZN4core3ptr13drop_in_place17h02487691837caba8E.llvm.12270584439981797948
│ │ │   23010: 00000000003e0c80   370 FUNC    GLOBAL HIDDEN    14 _ZN4core3ops8function5impls91_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$$u27$a$u20$mut$u20$F$GT$9call_once17h8dca471e6475a1a1E
│ │ │   23011: 00000000004aadd0   877 FUNC    GLOBAL DEFAULT   14 _ZN3tar6header11UstarHeader10path_bytes17hf42e041359422b79E
│ │ │   23012: 0000000000708140   224 FUNC    GLOBAL HIDDEN    14 je_extent_tree_ad_iter
│ │ │ - 23013: 00000000006bf720  1218 FUNC    GLOBAL DEFAULT   14 _ZN3std2io5stdio7_eprint17hece219713fbaa1bdE
│ │ │ + 23013: 00000000006bf720  1220 FUNC    GLOBAL DEFAULT   14 _ZN3std2io5stdio7_eprint17hece219713fbaa1bdE
│ │ │   23014: 000000000036c410    27 FUNC    GLOBAL HIDDEN    14 _ZN4core3ptr13drop_in_place17h9ae3164047c700ccE.llvm.1376666688187151811
│ │ │   23015: 00000000006b6220     8 FUNC    GLOBAL HIDDEN    14 _ZN55_$LT$$RF$$u27$a$u20$T$u20$as$u20$core..fmt..Display$GT$3fmt17h024aae08af97efb6E
│ │ │   23016: 00000000004a5090    14 FUNC    GLOBAL DEFAULT   14 _ZN67_$LT$termcolor..StandardStream$u20$as$u20$termcolor..WriteColor$GT$9set_color17hdb1603380ce91521E
│ │ │   23017: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND posix_spawn_file_actions_adddup2@@GLIBC_2.2.5
│ │ │   23018: 000000000069bac0     9 FUNC    GLOBAL DEFAULT   14 _ZN151_$LT$clap..args..arg_builder..positional..PosBuilder$LT$$u27$n$C$$u20$$u27$e$GT$$u20$as$u20$clap..args..any_arg..AnyArg$LT$$u27$n$C$$u20$$u27$e$GT$$GT$4help17h336025f1e35c3d53E
│ │ │   23019: 0000000000639f30    32 FUNC    GLOBAL DEFAULT   14 _ZN99_$LT$failure..context..Either$LT$failure..backtrace..Backtrace$C$$u20$failure..error..Error$GT$$GT$8as_cause17h97cf943ab93b2398E
│ │ │   23020: 000000000010eaa0   308 FUNC    GLOBAL HIDDEN    14 _ZN12regex_syntax3hir8interval8Interval10difference17hac6a19f53f1c83afE
│ │ │ @@ -28985,15 +28985,15 @@
│ │ │   28577: 0000000000707e30   572 FUNC    GLOBAL HIDDEN    14 je_extent_tree_ad_iter_recurse
│ │ │   28578: 0000000000472ff0   255 FUNC    GLOBAL HIDDEN    14 _ZN284_$LT$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$LT$$u27$a$GT$$C$$u20$K$C$$u20$V$C$$u20$alloc..collections..btree..node..marker..Leaf$GT$$C$$u20$alloc..collections..btree..node..marker..KV$GT$$GT$6remove17hdfacddd2d191af9bE
│ │ │   28579: 000000000083579a     1 OBJECT  GLOBAL HIDDEN    16 byte_str.A.llvm.6118032624766288442
│ │ │   28580: 0000000000c15118     1 OBJECT  GLOBAL HIDDEN    29 git_repository__fsync_gitdir
│ │ │   28581: 0000000000604a70   138 FUNC    GLOBAL DEFAULT   14 _ZN3url3Url8host_str17h6b4197103b599bd4E
│ │ │   28582: 0000000000395b80   245 FUNC    GLOBAL HIDDEN    14 _ZN5serde3ser10Serializer11collect_str17h8e5bba3d2f6f2ceaE
│ │ │   28583: 0000000000234eb0   209 FUNC    GLOBAL HIDDEN    14 _ZN5cargo4util15process_builder7process17h94d97e70a60f8370E
│ │ │ - 28584: 00000000006bf250  1220 FUNC    GLOBAL DEFAULT   14 _ZN3std2io5stdio6_print17hab91687991079f4aE
│ │ │ + 28584: 00000000006bf250  1218 FUNC    GLOBAL DEFAULT   14 _ZN3std2io5stdio6_print17hab91687991079f4aE
│ │ │   28585: 00000000004ca590   534 FUNC    GLOBAL HIDDEN    14 _ZN77_$LT$thread_local..ThreadLocal$LT$T$GT$$u20$as$u20$core..default..Default$GT$7default17hb878163237ffb656E
│ │ │   28586: 00000000000c3580   349 FUNC    GLOBAL HIDDEN    14 _ZN5cargo15command_prelude6AppExt18arg_message_format17he7f01a1f202ebe83E
│ │ │   28587: 000000000073c1e8     4 OBJECT  GLOBAL HIDDEN    16 byte_str.7Z.llvm.4211043009957070647
│ │ │   28588: 000000000036fa80   117 FUNC    GLOBAL HIDDEN    14 _ZN53_$LT$$RF$$u27$a$u20$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h84b2d6ddb347dcd7E
│ │ │   28589: 0000000000387720  1782 FUNC    GLOBAL HIDDEN    14 _ZN156_$LT$$LT$toml..value..Value$u20$as$u20$serde..de..Deserialize$LT$$u27$de$GT$$GT$..deserialize..ValueVisitor$u20$as$u20$serde..de..Visitor$LT$$u27$de$GT$$GT$9visit_map17h10878352288b029cE
│ │ │   28590: 0000000000389be0   166 FUNC    GLOBAL HIDDEN    14 _ZN34_$LT$alloc..sync..Arc$LT$T$GT$$GT$9drop_slow17ha8d2fa6fe93ce39eE
│ │ │   28591: 00000000006ad2b0    16 FUNC    GLOBAL HIDDEN    14 _ZN4core3ptr13drop_in_place17h0f1384c897c7976dE.llvm.85114684290029414
│ │ ├── /gnu/store/srmqh29dpm50j8kj1pbqg2rgh053wgyp-binutils-2.30/bin/readelf --wide --debug-dump=frames {}
│ │ │ @@ -245682,15 +245682,15 @@
│ │ │    DW_CFA_advance_loc: 4 to 00000000006bf159
│ │ │    DW_CFA_def_cfa_offset: 64
│ │ │    DW_CFA_offset: r3 (rbx) at cfa-32
│ │ │    DW_CFA_offset: r14 (r14) at cfa-24
│ │ │    DW_CFA_offset: r15 (r15) at cfa-16
│ │ │    DW_CFA_nop
│ │ │  
│ │ │ -0009a3d0 000000000000002c 00099ec4 FDE cie=00000510 pc=00000000006bf250..00000000006bf714
│ │ │ +0009a3d0 000000000000002c 00099ec4 FDE cie=00000510 pc=00000000006bf250..00000000006bf712
│ │ │    Augmentation data:     03 1b 0b 00
│ │ │    DW_CFA_advance_loc: 2 to 00000000006bf252
│ │ │    DW_CFA_def_cfa_offset: 16
│ │ │    DW_CFA_advance_loc: 2 to 00000000006bf254
│ │ │    DW_CFA_def_cfa_offset: 24
│ │ │    DW_CFA_advance_loc: 2 to 00000000006bf256
│ │ │    DW_CFA_def_cfa_offset: 32
│ │ │ @@ -245702,15 +245702,15 @@
│ │ │    DW_CFA_offset: r12 (r12) at cfa-32
│ │ │    DW_CFA_offset: r14 (r14) at cfa-24
│ │ │    DW_CFA_offset: r15 (r15) at cfa-16
│ │ │    DW_CFA_nop
│ │ │    DW_CFA_nop
│ │ │    DW_CFA_nop
│ │ │  
│ │ │ -0009a400 000000000000002c 00099ef4 FDE cie=00000510 pc=00000000006bf720..00000000006bfbe2
│ │ │ +0009a400 000000000000002c 00099ef4 FDE cie=00000510 pc=00000000006bf720..00000000006bfbe4
│ │ │    Augmentation data:     c7 1b 0b 00
│ │ │    DW_CFA_advance_loc: 2 to 00000000006bf722
│ │ │    DW_CFA_def_cfa_offset: 16
│ │ │    DW_CFA_advance_loc: 2 to 00000000006bf724
│ │ │    DW_CFA_def_cfa_offset: 24
│ │ │    DW_CFA_advance_loc: 2 to 00000000006bf726
│ │ │    DW_CFA_def_cfa_offset: 32
│ │ ├── objdump --line-numbers --disassemble --demangle --section=.text {}
│ │ │ @@ -1741382,15 +1741382,15 @@
│ │ │    6bf295:	00 06 00 00 00 
│ │ │    6bf29a:	66 66 66 64 48 8b 04 	data16 data16 data16 mov %fs:0x0,%rax
│ │ │    6bf2a1:	25 00 00 00 00 
│ │ │    6bf2a6:	48 89 c3             	mov    %rax,%rbx
│ │ │    6bf2a9:	80 b8 e1 ff ff ff 00 	cmpb   $0x0,-0x1f(%rax)
│ │ │    6bf2b0:	74 09                	je     6bf2bb <std::io::stdio::_print+0x6b>
│ │ │    6bf2b2:	c6 04 24 04          	movb   $0x4,(%rsp)
│ │ │ -  6bf2b6:	e9 e5 01 00 00       	jmpq   6bf4a0 <std::io::stdio::_print+0x250>
│ │ │ +  6bf2b6:	e9 e3 01 00 00       	jmpq   6bf49e <std::io::stdio::_print+0x24e>
│ │ │    6bf2bb:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf2be:	80 b8 e0 ff ff ff 00 	cmpb   $0x0,-0x20(%rax)
│ │ │    6bf2c5:	75 46                	jne    6bf30d <std::io::stdio::_print+0xbd>
│ │ │    6bf2c7:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf2ca:	48 83 3d ce 4c 55 00 	cmpq   $0x0,0x554cce(%rip)        
│ │ │    6bf2d1:	00 
│ │ │    6bf2d2:	74 1c                	je     6bf2f0 <std::io::stdio::_print+0xa0>
│ │ │ @@ -1741403,255 +1741403,255 @@
│ │ │    6bf2f7:	48 8d 35 52 87 00 00 	lea    0x8752(%rip),%rsi        
│ │ │    6bf2fe:	e8 0d 66 00 00       	callq  6c5910 <std::sys_common::thread_local::register_dtor_fallback>
│ │ │    6bf303:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf306:	c6 80 e0 ff ff ff 01 	movb   $0x1,-0x20(%rax)
│ │ │    6bf30d:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf310:	48 83 b8 c0 ff ff ff 	cmpq   $0x1,-0x40(%rax)
│ │ │    6bf317:	01 
│ │ │ -  6bf318:	74 78                	je     6bf392 <std::io::stdio::_print+0x142>
│ │ │ +  6bf318:	74 76                	je     6bf390 <std::io::stdio::_print+0x140>
│ │ │    6bf31a:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf31d:	66 0f 6f 80 d0 ff ff 	movdqa -0x30(%rax),%xmm0
│ │ │    6bf324:	ff 
│ │ │    6bf325:	66 0f ef c9          	pxor   %xmm1,%xmm1
│ │ │    6bf329:	66 0f 7f 88 d0 ff ff 	movdqa %xmm1,-0x30(%rax)
│ │ │    6bf330:	ff 
│ │ │    6bf331:	b9 01 00 00 00       	mov    $0x1,%ecx
│ │ │    6bf336:	66 48 0f 6e c9       	movq   %rcx,%xmm1
│ │ │ -  6bf33b:	48 8b 88 c0 ff ff ff 	mov    -0x40(%rax),%rcx
│ │ │ -  6bf342:	66 0f 7f 88 c0 ff ff 	movdqa %xmm1,-0x40(%rax)
│ │ │ -  6bf349:	ff 
│ │ │ -  6bf34a:	48 85 c9             	test   %rcx,%rcx
│ │ │ -  6bf34d:	74 32                	je     6bf381 <std::io::stdio::_print+0x131>
│ │ │ -  6bf34f:	66 49 0f 7e c7       	movq   %xmm0,%r15
│ │ │ -  6bf354:	4d 85 ff             	test   %r15,%r15
│ │ │ -  6bf357:	74 28                	je     6bf381 <std::io::stdio::_print+0x131>
│ │ │ -  6bf359:	66 0f 70 c0 4e       	pshufd $0x4e,%xmm0,%xmm0
│ │ │ -  6bf35e:	66 49 0f 7e c4       	movq   %xmm0,%r12
│ │ │ -  6bf363:	4c 89 ff             	mov    %r15,%rdi
│ │ │ -  6bf366:	41 ff 14 24          	callq  *(%r12)
│ │ │ -  6bf36a:	49 8b 74 24 08       	mov    0x8(%r12),%rsi
│ │ │ -  6bf36f:	48 85 f6             	test   %rsi,%rsi
│ │ │ -  6bf372:	74 0d                	je     6bf381 <std::io::stdio::_print+0x131>
│ │ │ -  6bf374:	49 8b 54 24 10       	mov    0x10(%r12),%rdx
│ │ │ -  6bf379:	4c 89 ff             	mov    %r15,%rdi
│ │ │ -  6bf37c:	e8 3f de a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ -  6bf381:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf384:	48 83 b8 c0 ff ff ff 	cmpq   $0x1,-0x40(%rax)
│ │ │ -  6bf38b:	01 
│ │ │ -  6bf38c:	0f 85 d7 02 00 00    	jne    6bf669 <std::io::stdio::_print+0x419>
│ │ │ -  6bf392:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf395:	48 83 b8 c8 ff ff ff 	cmpq   $0x0,-0x38(%rax)
│ │ │ -  6bf39c:	00 
│ │ │ -  6bf39d:	74 70                	je     6bf40f <std::io::stdio::_print+0x1bf>
│ │ │ -  6bf39f:	48 8d 3d fa 5a 55 00 	lea    0x555afa(%rip),%rdi        
│ │ │ -  6bf3a6:	e8 15 f2 fe ff       	callq  6ae5c0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ -  6bf3ab:	48 89 c3             	mov    %rax,%rbx
│ │ │ -  6bf3ae:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ -  6bf3b3:	48 85 db             	test   %rbx,%rbx
│ │ │ -  6bf3b6:	0f 84 9a 02 00 00    	je     6bf656 <std::io::stdio::_print+0x406>
│ │ │ -  6bf3bc:	48 89 1c 24          	mov    %rbx,(%rsp)
│ │ │ -  6bf3c0:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ -  6bf3c6:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ -  6bf3cc:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ -  6bf3d3:	00 
│ │ │ -  6bf3d4:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ -  6bf3d9:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ -  6bf3df:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ -  6bf3e5:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf3ea:	48 89 e6             	mov    %rsp,%rsi
│ │ │ -  6bf3ed:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ -  6bf3f2:	e8 09 f4 ff ff       	callq  6be800 <<std::io::stdio::Stdout as std::io::Write>::write_fmt>
│ │ │ -  6bf3f7:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ -  6bf3fe:	00 
│ │ │ -  6bf3ff:	0f 85 86 00 00 00    	jne    6bf48b <std::io::stdio::_print+0x23b>
│ │ │ -  6bf405:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bf408:	e8 23 dc ff ff       	callq  6bd030 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ -  6bf40d:	eb 7c                	jmp    6bf48b <std::io::stdio::_print+0x23b>
│ │ │ -  6bf40f:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf412:	48 c7 80 c8 ff ff ff 	movq   $0xffffffffffffffff,-0x38(%rax)
│ │ │ -  6bf419:	ff ff ff ff 
│ │ │ -  6bf41d:	48 8d 88 c8 ff ff ff 	lea    -0x38(%rax),%rcx
│ │ │ -  6bf424:	48 8d 90 d0 ff ff ff 	lea    -0x30(%rax),%rdx
│ │ │ -  6bf42b:	48 89 14 24          	mov    %rdx,(%rsp)
│ │ │ -  6bf42f:	48 89 4c 24 08       	mov    %rcx,0x8(%rsp)
│ │ │ -  6bf434:	48 8b b0 d0 ff ff ff 	mov    -0x30(%rax),%rsi
│ │ │ -  6bf43b:	48 85 f6             	test   %rsi,%rsi
│ │ │ -  6bf43e:	0f 84 ec 01 00 00    	je     6bf630 <std::io::stdio::_print+0x3e0>
│ │ │ -  6bf444:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf447:	48 8b 80 d8 ff ff ff 	mov    -0x28(%rax),%rax
│ │ │ -  6bf44e:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ -  6bf454:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ -  6bf45a:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ -  6bf461:	00 
│ │ │ -  6bf462:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ -  6bf467:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ -  6bf46d:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ -  6bf473:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf478:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ -  6bf47d:	ff 50 30             	callq  *0x30(%rax)
│ │ │ -  6bf480:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf483:	48 83 80 c8 ff ff ff 	addq   $0x1,-0x38(%rax)
│ │ │ -  6bf48a:	01 
│ │ │ -  6bf48b:	f3 0f 6f 44 24 20    	movdqu 0x20(%rsp),%xmm0
│ │ │ -  6bf491:	66 0f 7f 04 24       	movdqa %xmm0,(%rsp)
│ │ │ -  6bf496:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ -  6bf49a:	0f 85 9e 00 00 00    	jne    6bf53e <std::io::stdio::_print+0x2ee>
│ │ │ -  6bf4a0:	48 8d 3d f9 59 55 00 	lea    0x5559f9(%rip),%rdi        
│ │ │ -  6bf4a7:	e8 14 f1 fe ff       	callq  6ae5c0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ -  6bf4ac:	48 89 c3             	mov    %rax,%rbx
│ │ │ -  6bf4af:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ -  6bf4b4:	48 85 db             	test   %rbx,%rbx
│ │ │ -  6bf4b7:	0f 84 86 01 00 00    	je     6bf643 <std::io::stdio::_print+0x3f3>
│ │ │ -  6bf4bd:	48 89 5c 24 20       	mov    %rbx,0x20(%rsp)
│ │ │ -  6bf4c2:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ -  6bf4c8:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ -  6bf4ce:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ -  6bf4d5:	00 
│ │ │ -  6bf4d6:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ -  6bf4db:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ -  6bf4e1:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ -  6bf4e7:	48 8d bc 24 90 00 00 	lea    0x90(%rsp),%rdi
│ │ │ -  6bf4ee:	00 
│ │ │ -  6bf4ef:	48 8d 74 24 20       	lea    0x20(%rsp),%rsi
│ │ │ -  6bf4f4:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ -  6bf4f9:	e8 02 f3 ff ff       	callq  6be800 <<std::io::stdio::Stdout as std::io::Write>::write_fmt>
│ │ │ -  6bf4fe:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ -  6bf505:	00 
│ │ │ -  6bf506:	75 0a                	jne    6bf512 <std::io::stdio::_print+0x2c2>
│ │ │ -  6bf508:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf50d:	e8 1e db ff ff       	callq  6bd030 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ -  6bf512:	8a 04 24             	mov    (%rsp),%al
│ │ │ -  6bf515:	3c 04                	cmp    $0x4,%al
│ │ │ -  6bf517:	0f 87 c7 00 00 00    	ja     6bf5e4 <std::io::stdio::_print+0x394>
│ │ │ -  6bf51d:	3c 02                	cmp    $0x2,%al
│ │ │ -  6bf51f:	0f 84 bf 00 00 00    	je     6bf5e4 <std::io::stdio::_print+0x394>
│ │ │ -  6bf525:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ -  6bf52c:	03 
│ │ │ -  6bf52d:	75 27                	jne    6bf556 <std::io::stdio::_print+0x306>
│ │ │ -  6bf52f:	48 81 c4 b8 00 00 00 	add    $0xb8,%rsp
│ │ │ -  6bf536:	5b                   	pop    %rbx
│ │ │ -  6bf537:	41 5c                	pop    %r12
│ │ │ -  6bf539:	41 5e                	pop    %r14
│ │ │ -  6bf53b:	41 5f                	pop    %r15
│ │ │ -  6bf53d:	c3                   	retq   
│ │ │ -  6bf53e:	66 0f 6f 04 24       	movdqa (%rsp),%xmm0
│ │ │ -  6bf543:	66 0f 7f 84 24 90 00 	movdqa %xmm0,0x90(%rsp)
│ │ │ -  6bf54a:	00 00 
│ │ │ -  6bf54c:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ -  6bf553:	03 
│ │ │ -  6bf554:	74 d9                	je     6bf52f <std::io::stdio::_print+0x2df>
│ │ │ -  6bf556:	66 0f 6f 84 24 90 00 	movdqa 0x90(%rsp),%xmm0
│ │ │ -  6bf55d:	00 00 
│ │ │ -  6bf55f:	66 0f 7f 44 24 20    	movdqa %xmm0,0x20(%rsp)
│ │ │ -  6bf565:	48 8d 84 24 a8 00 00 	lea    0xa8(%rsp),%rax
│ │ │ -  6bf56c:	00 
│ │ │ -  6bf56d:	48 89 04 24          	mov    %rax,(%rsp)
│ │ │ -  6bf571:	48 8d 05 78 aa ff ff 	lea    -0x5588(%rip),%rax        # 6b9ff0 <<&'a T as core::fmt::Display>::fmt>
│ │ │ -  6bf578:	48 89 44 24 08       	mov    %rax,0x8(%rsp)
│ │ │ -  6bf57d:	48 8d 44 24 20       	lea    0x20(%rsp),%rax
│ │ │ -  6bf582:	48 89 44 24 10       	mov    %rax,0x10(%rsp)
│ │ │ -  6bf587:	48 8d 05 82 61 ff ff 	lea    -0x9e7e(%rip),%rax        # 6b5710 <<std::io::error::Error as core::fmt::Display>::fmt>
│ │ │ -  6bf58e:	48 89 44 24 18       	mov    %rax,0x18(%rsp)
│ │ │ -  6bf593:	48 8d 05 b6 01 55 00 	lea    0x5501b6(%rip),%rax        
│ │ │ -  6bf59a:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
│ │ │ -  6bf59f:	48 c7 44 24 38 02 00 	movq   $0x2,0x38(%rsp)
│ │ │ -  6bf5a6:	00 00 
│ │ │ -  6bf5a8:	48 8d 05 11 68 17 00 	lea    0x176811(%rip),%rax        
│ │ │ -  6bf5af:	48 89 44 24 40       	mov    %rax,0x40(%rsp)
│ │ │ -  6bf5b4:	48 c7 44 24 48 02 00 	movq   $0x2,0x48(%rsp)
│ │ │ -  6bf5bb:	00 00 
│ │ │ -  6bf5bd:	48 89 e0             	mov    %rsp,%rax
│ │ │ -  6bf5c0:	48 89 44 24 50       	mov    %rax,0x50(%rsp)
│ │ │ -  6bf5c5:	48 c7 44 24 58 02 00 	movq   $0x2,0x58(%rsp)
│ │ │ -  6bf5cc:	00 00 
│ │ │ -  6bf5ce:	48 8d 35 9b 01 55 00 	lea    0x55019b(%rip),%rsi        
│ │ │ -  6bf5d5:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ -  6bf5da:	e8 71 ce fe ff       	callq  6ac450 <std::panicking::begin_panic_fmt>
│ │ │ -  6bf5df:	e9 83 00 00 00       	jmpq   6bf667 <std::io::stdio::_print+0x417>
│ │ │ -  6bf5e4:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
│ │ │ -  6bf5e9:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ -  6bf5ec:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ -  6bf5f0:	ff 10                	callq  *(%rax)
│ │ │ -  6bf5f2:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ -  6bf5f6:	48 8b 70 08          	mov    0x8(%rax),%rsi
│ │ │ -  6bf5fa:	48 85 f6             	test   %rsi,%rsi
│ │ │ -  6bf5fd:	74 0c                	je     6bf60b <std::io::stdio::_print+0x3bb>
│ │ │ -  6bf5ff:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ -  6bf602:	48 8b 50 10          	mov    0x10(%rax),%rdx
│ │ │ -  6bf606:	e8 b5 db a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ -  6bf60b:	be 18 00 00 00       	mov    $0x18,%esi
│ │ │ -  6bf610:	ba 08 00 00 00       	mov    $0x8,%edx
│ │ │ -  6bf615:	48 89 df             	mov    %rbx,%rdi
│ │ │ -  6bf618:	e8 a3 db a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ -  6bf61d:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ -  6bf624:	03 
│ │ │ -  6bf625:	0f 84 04 ff ff ff    	je     6bf52f <std::io::stdio::_print+0x2df>
│ │ │ -  6bf62b:	e9 26 ff ff ff       	jmpq   6bf556 <std::io::stdio::_print+0x306>
│ │ │ -  6bf630:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf633:	48 c7 80 c8 ff ff ff 	movq   $0x0,-0x38(%rax)
│ │ │ -  6bf63a:	00 00 00 00 
│ │ │ -  6bf63e:	e9 5c fd ff ff       	jmpq   6bf39f <std::io::stdio::_print+0x14f>
│ │ │ -  6bf643:	48 8d 3d 12 67 17 00 	lea    0x176712(%rip),%rdi        
│ │ │ -  6bf64a:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ -  6bf64f:	e8 3c ec 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ -  6bf654:	eb 11                	jmp    6bf667 <std::io::stdio::_print+0x417>
│ │ │ -  6bf656:	48 8d 3d ff 66 17 00 	lea    0x1766ff(%rip),%rdi        
│ │ │ -  6bf65d:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ -  6bf662:	e8 29 ec 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ -  6bf667:	0f 0b                	ud2    
│ │ │ -  6bf669:	48 8d 3d b8 00 55 00 	lea    0x5500b8(%rip),%rdi        
│ │ │ -  6bf670:	e8 0b ea 06 00       	callq  72e080 <core::panicking::panic>
│ │ │ -  6bf675:	0f 0b                	ud2    
│ │ │ -  6bf677:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf67a:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ -  6bf67f:	e8 1c df ff ff       	callq  6bd5a0 <core::ptr::drop_in_place>
│ │ │ -  6bf684:	e9 81 00 00 00       	jmpq   6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf689:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf68c:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ -  6bf691:	e8 0a df ff ff       	callq  6bd5a0 <core::ptr::drop_in_place>
│ │ │ -  6bf696:	eb 72                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf698:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf69b:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf6a0:	e8 2b dc ff ff       	callq  6bd2d0 <_ZN4core3ptr13drop_in_place17h7b42cf4c2ad5a985E.llvm.18058480970354335283>
│ │ │ -  6bf6a5:	eb 63                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf6a7:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf6aa:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bf6ad:	e8 ae dc ff ff       	callq  6bd360 <core::ptr::drop_in_place>
│ │ │ -  6bf6b2:	eb 56                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf6b4:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf6b7:	4c 89 ff             	mov    %r15,%rdi
│ │ │ -  6bf6ba:	4c 89 e6             	mov    %r12,%rsi
│ │ │ -  6bf6bd:	e8 2e df ff ff       	callq  6bd5f0 <alloc::alloc::box_free>
│ │ │ -  6bf6c2:	eb 46                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf6c4:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf6c7:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ -  6bf6ca:	48 8b 73 08          	mov    0x8(%rbx),%rsi
│ │ │ -  6bf6ce:	e8 ed de ff ff       	callq  6bd5c0 <_ZN5alloc5alloc8box_free17h0669bcb154503f16E.llvm.18058480970354335283>
│ │ │ -  6bf6d3:	48 89 df             	mov    %rbx,%rdi
│ │ │ -  6bf6d6:	e8 05 df ff ff       	callq  6bd5e0 <_ZN5alloc5alloc8box_free17h983f65f182ddafb6E.llvm.18058480970354335283>
│ │ │ -  6bf6db:	eb 2d                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf6dd:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf6e0:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bf6e3:	e8 88 dc ff ff       	callq  6bd370 <core::ptr::drop_in_place>
│ │ │ -  6bf6e8:	eb 20                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf6ea:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf6ed:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf6f2:	e8 79 dc ff ff       	callq  6bd370 <core::ptr::drop_in_place>
│ │ │ -  6bf6f7:	eb 11                	jmp    6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf6f9:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bf6fc:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ -  6bf700:	74 08                	je     6bf70a <std::io::stdio::_print+0x4ba>
│ │ │ -  6bf702:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bf705:	e8 e6 dd ff ff       	callq  6bd4f0 <_ZN4core3ptr13drop_in_place17hddc700aa544c7c73E.llvm.18058480970354335283>
│ │ │ -  6bf70a:	4c 89 f7             	mov    %r14,%rdi
│ │ │ -  6bf70d:	e8 be 38 9b ff       	callq  72fd0 <_Unwind_Resume@plt>
│ │ │ -  6bf712:	0f 0b                	ud2    
│ │ │ -  6bf714:	66 2e 0f 1f 84 00 00 	nopw   %cs:0x0(%rax,%rax,1)
│ │ │ -  6bf71b:	00 00 00 
│ │ │ -  6bf71e:	66 90                	xchg   %ax,%ax
│ │ │ +  6bf33b:	48 83 b8 c0 ff ff ff 	cmpq   $0x0,-0x40(%rax)
│ │ │ +  6bf342:	00 
│ │ │ +  6bf343:	66 0f 7f 88 c0 ff ff 	movdqa %xmm1,-0x40(%rax)
│ │ │ +  6bf34a:	ff 
│ │ │ +  6bf34b:	74 32                	je     6bf37f <std::io::stdio::_print+0x12f>
│ │ │ +  6bf34d:	66 49 0f 7e c7       	movq   %xmm0,%r15
│ │ │ +  6bf352:	4d 85 ff             	test   %r15,%r15
│ │ │ +  6bf355:	74 28                	je     6bf37f <std::io::stdio::_print+0x12f>
│ │ │ +  6bf357:	66 0f 70 c0 4e       	pshufd $0x4e,%xmm0,%xmm0
│ │ │ +  6bf35c:	66 49 0f 7e c4       	movq   %xmm0,%r12
│ │ │ +  6bf361:	4c 89 ff             	mov    %r15,%rdi
│ │ │ +  6bf364:	41 ff 14 24          	callq  *(%r12)
│ │ │ +  6bf368:	49 8b 74 24 08       	mov    0x8(%r12),%rsi
│ │ │ +  6bf36d:	48 85 f6             	test   %rsi,%rsi
│ │ │ +  6bf370:	74 0d                	je     6bf37f <std::io::stdio::_print+0x12f>
│ │ │ +  6bf372:	49 8b 54 24 10       	mov    0x10(%r12),%rdx
│ │ │ +  6bf377:	4c 89 ff             	mov    %r15,%rdi
│ │ │ +  6bf37a:	e8 41 de a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ +  6bf37f:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf382:	48 83 b8 c0 ff ff ff 	cmpq   $0x1,-0x40(%rax)
│ │ │ +  6bf389:	01 
│ │ │ +  6bf38a:	0f 85 d7 02 00 00    	jne    6bf667 <std::io::stdio::_print+0x417>
│ │ │ +  6bf390:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf393:	48 83 b8 c8 ff ff ff 	cmpq   $0x0,-0x38(%rax)
│ │ │ +  6bf39a:	00 
│ │ │ +  6bf39b:	74 70                	je     6bf40d <std::io::stdio::_print+0x1bd>
│ │ │ +  6bf39d:	48 8d 3d fc 5a 55 00 	lea    0x555afc(%rip),%rdi        
│ │ │ +  6bf3a4:	e8 17 f2 fe ff       	callq  6ae5c0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ +  6bf3a9:	48 89 c3             	mov    %rax,%rbx
│ │ │ +  6bf3ac:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ +  6bf3b1:	48 85 db             	test   %rbx,%rbx
│ │ │ +  6bf3b4:	0f 84 9a 02 00 00    	je     6bf654 <std::io::stdio::_print+0x404>
│ │ │ +  6bf3ba:	48 89 1c 24          	mov    %rbx,(%rsp)
│ │ │ +  6bf3be:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ +  6bf3c4:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ +  6bf3ca:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ +  6bf3d1:	00 
│ │ │ +  6bf3d2:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ +  6bf3d7:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ +  6bf3dd:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ +  6bf3e3:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf3e8:	48 89 e6             	mov    %rsp,%rsi
│ │ │ +  6bf3eb:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ +  6bf3f0:	e8 0b f4 ff ff       	callq  6be800 <<std::io::stdio::Stdout as std::io::Write>::write_fmt>
│ │ │ +  6bf3f5:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ +  6bf3fc:	00 
│ │ │ +  6bf3fd:	0f 85 86 00 00 00    	jne    6bf489 <std::io::stdio::_print+0x239>
│ │ │ +  6bf403:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bf406:	e8 25 dc ff ff       	callq  6bd030 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ +  6bf40b:	eb 7c                	jmp    6bf489 <std::io::stdio::_print+0x239>
│ │ │ +  6bf40d:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf410:	48 c7 80 c8 ff ff ff 	movq   $0xffffffffffffffff,-0x38(%rax)
│ │ │ +  6bf417:	ff ff ff ff 
│ │ │ +  6bf41b:	48 8d 88 c8 ff ff ff 	lea    -0x38(%rax),%rcx
│ │ │ +  6bf422:	48 8d 90 d0 ff ff ff 	lea    -0x30(%rax),%rdx
│ │ │ +  6bf429:	48 89 14 24          	mov    %rdx,(%rsp)
│ │ │ +  6bf42d:	48 89 4c 24 08       	mov    %rcx,0x8(%rsp)
│ │ │ +  6bf432:	48 8b b0 d0 ff ff ff 	mov    -0x30(%rax),%rsi
│ │ │ +  6bf439:	48 85 f6             	test   %rsi,%rsi
│ │ │ +  6bf43c:	0f 84 ec 01 00 00    	je     6bf62e <std::io::stdio::_print+0x3de>
│ │ │ +  6bf442:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf445:	48 8b 80 d8 ff ff ff 	mov    -0x28(%rax),%rax
│ │ │ +  6bf44c:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ +  6bf452:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ +  6bf458:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ +  6bf45f:	00 
│ │ │ +  6bf460:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ +  6bf465:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ +  6bf46b:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ +  6bf471:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf476:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ +  6bf47b:	ff 50 30             	callq  *0x30(%rax)
│ │ │ +  6bf47e:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf481:	48 83 80 c8 ff ff ff 	addq   $0x1,-0x38(%rax)
│ │ │ +  6bf488:	01 
│ │ │ +  6bf489:	f3 0f 6f 44 24 20    	movdqu 0x20(%rsp),%xmm0
│ │ │ +  6bf48f:	66 0f 7f 04 24       	movdqa %xmm0,(%rsp)
│ │ │ +  6bf494:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ +  6bf498:	0f 85 9e 00 00 00    	jne    6bf53c <std::io::stdio::_print+0x2ec>
│ │ │ +  6bf49e:	48 8d 3d fb 59 55 00 	lea    0x5559fb(%rip),%rdi        
│ │ │ +  6bf4a5:	e8 16 f1 fe ff       	callq  6ae5c0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ +  6bf4aa:	48 89 c3             	mov    %rax,%rbx
│ │ │ +  6bf4ad:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ +  6bf4b2:	48 85 db             	test   %rbx,%rbx
│ │ │ +  6bf4b5:	0f 84 86 01 00 00    	je     6bf641 <std::io::stdio::_print+0x3f1>
│ │ │ +  6bf4bb:	48 89 5c 24 20       	mov    %rbx,0x20(%rsp)
│ │ │ +  6bf4c0:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ +  6bf4c6:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ +  6bf4cc:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ +  6bf4d3:	00 
│ │ │ +  6bf4d4:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ +  6bf4d9:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ +  6bf4df:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ +  6bf4e5:	48 8d bc 24 90 00 00 	lea    0x90(%rsp),%rdi
│ │ │ +  6bf4ec:	00 
│ │ │ +  6bf4ed:	48 8d 74 24 20       	lea    0x20(%rsp),%rsi
│ │ │ +  6bf4f2:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ +  6bf4f7:	e8 04 f3 ff ff       	callq  6be800 <<std::io::stdio::Stdout as std::io::Write>::write_fmt>
│ │ │ +  6bf4fc:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ +  6bf503:	00 
│ │ │ +  6bf504:	75 0a                	jne    6bf510 <std::io::stdio::_print+0x2c0>
│ │ │ +  6bf506:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf50b:	e8 20 db ff ff       	callq  6bd030 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ +  6bf510:	8a 04 24             	mov    (%rsp),%al
│ │ │ +  6bf513:	3c 04                	cmp    $0x4,%al
│ │ │ +  6bf515:	0f 87 c7 00 00 00    	ja     6bf5e2 <std::io::stdio::_print+0x392>
│ │ │ +  6bf51b:	3c 02                	cmp    $0x2,%al
│ │ │ +  6bf51d:	0f 84 bf 00 00 00    	je     6bf5e2 <std::io::stdio::_print+0x392>
│ │ │ +  6bf523:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ +  6bf52a:	03 
│ │ │ +  6bf52b:	75 27                	jne    6bf554 <std::io::stdio::_print+0x304>
│ │ │ +  6bf52d:	48 81 c4 b8 00 00 00 	add    $0xb8,%rsp
│ │ │ +  6bf534:	5b                   	pop    %rbx
│ │ │ +  6bf535:	41 5c                	pop    %r12
│ │ │ +  6bf537:	41 5e                	pop    %r14
│ │ │ +  6bf539:	41 5f                	pop    %r15
│ │ │ +  6bf53b:	c3                   	retq   
│ │ │ +  6bf53c:	66 0f 6f 04 24       	movdqa (%rsp),%xmm0
│ │ │ +  6bf541:	66 0f 7f 84 24 90 00 	movdqa %xmm0,0x90(%rsp)
│ │ │ +  6bf548:	00 00 
│ │ │ +  6bf54a:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ +  6bf551:	03 
│ │ │ +  6bf552:	74 d9                	je     6bf52d <std::io::stdio::_print+0x2dd>
│ │ │ +  6bf554:	66 0f 6f 84 24 90 00 	movdqa 0x90(%rsp),%xmm0
│ │ │ +  6bf55b:	00 00 
│ │ │ +  6bf55d:	66 0f 7f 44 24 20    	movdqa %xmm0,0x20(%rsp)
│ │ │ +  6bf563:	48 8d 84 24 a8 00 00 	lea    0xa8(%rsp),%rax
│ │ │ +  6bf56a:	00 
│ │ │ +  6bf56b:	48 89 04 24          	mov    %rax,(%rsp)
│ │ │ +  6bf56f:	48 8d 05 7a aa ff ff 	lea    -0x5586(%rip),%rax        # 6b9ff0 <<&'a T as core::fmt::Display>::fmt>
│ │ │ +  6bf576:	48 89 44 24 08       	mov    %rax,0x8(%rsp)
│ │ │ +  6bf57b:	48 8d 44 24 20       	lea    0x20(%rsp),%rax
│ │ │ +  6bf580:	48 89 44 24 10       	mov    %rax,0x10(%rsp)
│ │ │ +  6bf585:	48 8d 05 84 61 ff ff 	lea    -0x9e7c(%rip),%rax        # 6b5710 <<std::io::error::Error as core::fmt::Display>::fmt>
│ │ │ +  6bf58c:	48 89 44 24 18       	mov    %rax,0x18(%rsp)
│ │ │ +  6bf591:	48 8d 05 b8 01 55 00 	lea    0x5501b8(%rip),%rax        
│ │ │ +  6bf598:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
│ │ │ +  6bf59d:	48 c7 44 24 38 02 00 	movq   $0x2,0x38(%rsp)
│ │ │ +  6bf5a4:	00 00 
│ │ │ +  6bf5a6:	48 8d 05 13 68 17 00 	lea    0x176813(%rip),%rax        
│ │ │ +  6bf5ad:	48 89 44 24 40       	mov    %rax,0x40(%rsp)
│ │ │ +  6bf5b2:	48 c7 44 24 48 02 00 	movq   $0x2,0x48(%rsp)
│ │ │ +  6bf5b9:	00 00 
│ │ │ +  6bf5bb:	48 89 e0             	mov    %rsp,%rax
│ │ │ +  6bf5be:	48 89 44 24 50       	mov    %rax,0x50(%rsp)
│ │ │ +  6bf5c3:	48 c7 44 24 58 02 00 	movq   $0x2,0x58(%rsp)
│ │ │ +  6bf5ca:	00 00 
│ │ │ +  6bf5cc:	48 8d 35 9d 01 55 00 	lea    0x55019d(%rip),%rsi        
│ │ │ +  6bf5d3:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ +  6bf5d8:	e8 73 ce fe ff       	callq  6ac450 <std::panicking::begin_panic_fmt>
│ │ │ +  6bf5dd:	e9 83 00 00 00       	jmpq   6bf665 <std::io::stdio::_print+0x415>
│ │ │ +  6bf5e2:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
│ │ │ +  6bf5e7:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ +  6bf5ea:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ +  6bf5ee:	ff 10                	callq  *(%rax)
│ │ │ +  6bf5f0:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ +  6bf5f4:	48 8b 70 08          	mov    0x8(%rax),%rsi
│ │ │ +  6bf5f8:	48 85 f6             	test   %rsi,%rsi
│ │ │ +  6bf5fb:	74 0c                	je     6bf609 <std::io::stdio::_print+0x3b9>
│ │ │ +  6bf5fd:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ +  6bf600:	48 8b 50 10          	mov    0x10(%rax),%rdx
│ │ │ +  6bf604:	e8 b7 db a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ +  6bf609:	be 18 00 00 00       	mov    $0x18,%esi
│ │ │ +  6bf60e:	ba 08 00 00 00       	mov    $0x8,%edx
│ │ │ +  6bf613:	48 89 df             	mov    %rbx,%rdi
│ │ │ +  6bf616:	e8 a5 db a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ +  6bf61b:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ +  6bf622:	03 
│ │ │ +  6bf623:	0f 84 04 ff ff ff    	je     6bf52d <std::io::stdio::_print+0x2dd>
│ │ │ +  6bf629:	e9 26 ff ff ff       	jmpq   6bf554 <std::io::stdio::_print+0x304>
│ │ │ +  6bf62e:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf631:	48 c7 80 c8 ff ff ff 	movq   $0x0,-0x38(%rax)
│ │ │ +  6bf638:	00 00 00 00 
│ │ │ +  6bf63c:	e9 5c fd ff ff       	jmpq   6bf39d <std::io::stdio::_print+0x14d>
│ │ │ +  6bf641:	48 8d 3d 14 67 17 00 	lea    0x176714(%rip),%rdi        
│ │ │ +  6bf648:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ +  6bf64d:	e8 3e ec 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ +  6bf652:	eb 11                	jmp    6bf665 <std::io::stdio::_print+0x415>
│ │ │ +  6bf654:	48 8d 3d 01 67 17 00 	lea    0x176701(%rip),%rdi        
│ │ │ +  6bf65b:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ +  6bf660:	e8 2b ec 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ +  6bf665:	0f 0b                	ud2    
│ │ │ +  6bf667:	48 8d 3d ba 00 55 00 	lea    0x5500ba(%rip),%rdi        
│ │ │ +  6bf66e:	e8 0d ea 06 00       	callq  72e080 <core::panicking::panic>
│ │ │ +  6bf673:	0f 0b                	ud2    
│ │ │ +  6bf675:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf678:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ +  6bf67d:	e8 1e df ff ff       	callq  6bd5a0 <core::ptr::drop_in_place>
│ │ │ +  6bf682:	e9 81 00 00 00       	jmpq   6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf687:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf68a:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ +  6bf68f:	e8 0c df ff ff       	callq  6bd5a0 <core::ptr::drop_in_place>
│ │ │ +  6bf694:	eb 72                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf696:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf699:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf69e:	e8 2d dc ff ff       	callq  6bd2d0 <_ZN4core3ptr13drop_in_place17h7b42cf4c2ad5a985E.llvm.18058480970354335283>
│ │ │ +  6bf6a3:	eb 63                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf6a5:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf6a8:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bf6ab:	e8 b0 dc ff ff       	callq  6bd360 <core::ptr::drop_in_place>
│ │ │ +  6bf6b0:	eb 56                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf6b2:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf6b5:	4c 89 ff             	mov    %r15,%rdi
│ │ │ +  6bf6b8:	4c 89 e6             	mov    %r12,%rsi
│ │ │ +  6bf6bb:	e8 30 df ff ff       	callq  6bd5f0 <alloc::alloc::box_free>
│ │ │ +  6bf6c0:	eb 46                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf6c2:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf6c5:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ +  6bf6c8:	48 8b 73 08          	mov    0x8(%rbx),%rsi
│ │ │ +  6bf6cc:	e8 ef de ff ff       	callq  6bd5c0 <_ZN5alloc5alloc8box_free17h0669bcb154503f16E.llvm.18058480970354335283>
│ │ │ +  6bf6d1:	48 89 df             	mov    %rbx,%rdi
│ │ │ +  6bf6d4:	e8 07 df ff ff       	callq  6bd5e0 <_ZN5alloc5alloc8box_free17h983f65f182ddafb6E.llvm.18058480970354335283>
│ │ │ +  6bf6d9:	eb 2d                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf6db:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf6de:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bf6e1:	e8 8a dc ff ff       	callq  6bd370 <core::ptr::drop_in_place>
│ │ │ +  6bf6e6:	eb 20                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf6e8:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf6eb:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf6f0:	e8 7b dc ff ff       	callq  6bd370 <core::ptr::drop_in_place>
│ │ │ +  6bf6f5:	eb 11                	jmp    6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf6f7:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bf6fa:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ +  6bf6fe:	74 08                	je     6bf708 <std::io::stdio::_print+0x4b8>
│ │ │ +  6bf700:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bf703:	e8 e8 dd ff ff       	callq  6bd4f0 <_ZN4core3ptr13drop_in_place17hddc700aa544c7c73E.llvm.18058480970354335283>
│ │ │ +  6bf708:	4c 89 f7             	mov    %r14,%rdi
│ │ │ +  6bf70b:	e8 c0 38 9b ff       	callq  72fd0 <_Unwind_Resume@plt>
│ │ │ +  6bf710:	0f 0b                	ud2    
│ │ │ +  6bf712:	66 2e 0f 1f 84 00 00 	nopw   %cs:0x0(%rax,%rax,1)
│ │ │ +  6bf719:	00 00 00 
│ │ │ +  6bf71c:	0f 1f 40 00          	nopl   0x0(%rax)
│ │ │  
│ │ │  00000000006bf720 <std::io::stdio::_eprint>:
│ │ │  _ZN3std2io5stdio7_eprint17hece219713fbaa1bdE():
│ │ │    6bf720:	41 57                	push   %r15
│ │ │    6bf722:	41 56                	push   %r14
│ │ │    6bf724:	41 54                	push   %r12
│ │ │    6bf726:	53                   	push   %rbx
│ │ │ @@ -1741670,15 +1741670,15 @@
│ │ │    6bf765:	00 06 00 00 00 
│ │ │    6bf76a:	66 66 66 64 48 8b 04 	data16 data16 data16 mov %fs:0x0,%rax
│ │ │    6bf771:	25 00 00 00 00 
│ │ │    6bf776:	48 89 c3             	mov    %rax,%rbx
│ │ │    6bf779:	80 b8 69 ff ff ff 00 	cmpb   $0x0,-0x97(%rax)
│ │ │    6bf780:	74 09                	je     6bf78b <std::io::stdio::_eprint+0x6b>
│ │ │    6bf782:	c6 04 24 04          	movb   $0x4,(%rsp)
│ │ │ -  6bf786:	e9 e3 01 00 00       	jmpq   6bf96e <std::io::stdio::_eprint+0x24e>
│ │ │ +  6bf786:	e9 e5 01 00 00       	jmpq   6bf970 <std::io::stdio::_eprint+0x250>
│ │ │    6bf78b:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf78e:	80 b8 68 ff ff ff 00 	cmpb   $0x0,-0x98(%rax)
│ │ │    6bf795:	75 46                	jne    6bf7dd <std::io::stdio::_eprint+0xbd>
│ │ │    6bf797:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf79a:	48 83 3d fe 47 55 00 	cmpq   $0x0,0x5547fe(%rip)        
│ │ │    6bf7a1:	00 
│ │ │    6bf7a2:	74 1c                	je     6bf7c0 <std::io::stdio::_eprint+0xa0>
│ │ │ @@ -1741691,255 +1741691,255 @@
│ │ │    6bf7c7:	48 8d 35 82 82 00 00 	lea    0x8282(%rip),%rsi        
│ │ │    6bf7ce:	e8 3d 61 00 00       	callq  6c5910 <std::sys_common::thread_local::register_dtor_fallback>
│ │ │    6bf7d3:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf7d6:	c6 80 68 ff ff ff 01 	movb   $0x1,-0x98(%rax)
│ │ │    6bf7dd:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf7e0:	48 83 b8 48 ff ff ff 	cmpq   $0x1,-0xb8(%rax)
│ │ │    6bf7e7:	01 
│ │ │ -  6bf7e8:	74 76                	je     6bf860 <std::io::stdio::_eprint+0x140>
│ │ │ +  6bf7e8:	74 78                	je     6bf862 <std::io::stdio::_eprint+0x142>
│ │ │    6bf7ea:	48 89 d8             	mov    %rbx,%rax
│ │ │    6bf7ed:	f3 0f 6f 80 58 ff ff 	movdqu -0xa8(%rax),%xmm0
│ │ │    6bf7f4:	ff 
│ │ │    6bf7f5:	66 0f ef c9          	pxor   %xmm1,%xmm1
│ │ │    6bf7f9:	f3 0f 7f 88 58 ff ff 	movdqu %xmm1,-0xa8(%rax)
│ │ │    6bf800:	ff 
│ │ │    6bf801:	b9 01 00 00 00       	mov    $0x1,%ecx
│ │ │    6bf806:	66 48 0f 6e c9       	movq   %rcx,%xmm1
│ │ │ -  6bf80b:	48 83 b8 48 ff ff ff 	cmpq   $0x0,-0xb8(%rax)
│ │ │ -  6bf812:	00 
│ │ │ -  6bf813:	f3 0f 7f 88 48 ff ff 	movdqu %xmm1,-0xb8(%rax)
│ │ │ -  6bf81a:	ff 
│ │ │ -  6bf81b:	74 32                	je     6bf84f <std::io::stdio::_eprint+0x12f>
│ │ │ -  6bf81d:	66 49 0f 7e c7       	movq   %xmm0,%r15
│ │ │ -  6bf822:	4d 85 ff             	test   %r15,%r15
│ │ │ -  6bf825:	74 28                	je     6bf84f <std::io::stdio::_eprint+0x12f>
│ │ │ -  6bf827:	66 0f 70 c0 4e       	pshufd $0x4e,%xmm0,%xmm0
│ │ │ -  6bf82c:	66 49 0f 7e c4       	movq   %xmm0,%r12
│ │ │ -  6bf831:	4c 89 ff             	mov    %r15,%rdi
│ │ │ -  6bf834:	41 ff 14 24          	callq  *(%r12)
│ │ │ -  6bf838:	49 8b 74 24 08       	mov    0x8(%r12),%rsi
│ │ │ -  6bf83d:	48 85 f6             	test   %rsi,%rsi
│ │ │ -  6bf840:	74 0d                	je     6bf84f <std::io::stdio::_eprint+0x12f>
│ │ │ -  6bf842:	49 8b 54 24 10       	mov    0x10(%r12),%rdx
│ │ │ -  6bf847:	4c 89 ff             	mov    %r15,%rdi
│ │ │ -  6bf84a:	e8 71 d9 a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ -  6bf84f:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf852:	48 83 b8 48 ff ff ff 	cmpq   $0x1,-0xb8(%rax)
│ │ │ -  6bf859:	01 
│ │ │ -  6bf85a:	0f 85 d7 02 00 00    	jne    6bfb37 <std::io::stdio::_eprint+0x417>
│ │ │ -  6bf860:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf863:	48 83 b8 50 ff ff ff 	cmpq   $0x0,-0xb0(%rax)
│ │ │ -  6bf86a:	00 
│ │ │ -  6bf86b:	74 70                	je     6bf8dd <std::io::stdio::_eprint+0x1bd>
│ │ │ -  6bf86d:	48 8d 3d 64 56 55 00 	lea    0x555664(%rip),%rdi        
│ │ │ -  6bf874:	e8 67 ec fe ff       	callq  6ae4e0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ -  6bf879:	48 89 c3             	mov    %rax,%rbx
│ │ │ -  6bf87c:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ -  6bf881:	48 85 db             	test   %rbx,%rbx
│ │ │ -  6bf884:	0f 84 9a 02 00 00    	je     6bfb24 <std::io::stdio::_eprint+0x404>
│ │ │ -  6bf88a:	48 89 1c 24          	mov    %rbx,(%rsp)
│ │ │ -  6bf88e:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ -  6bf894:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ -  6bf89a:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ -  6bf8a1:	00 
│ │ │ -  6bf8a2:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ -  6bf8a7:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ -  6bf8ad:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ -  6bf8b3:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf8b8:	48 89 e6             	mov    %rsp,%rsi
│ │ │ -  6bf8bb:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ -  6bf8c0:	e8 5b f6 ff ff       	callq  6bef20 <<std::io::stdio::Stderr as std::io::Write>::write_fmt>
│ │ │ -  6bf8c5:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ -  6bf8cc:	00 
│ │ │ -  6bf8cd:	0f 85 86 00 00 00    	jne    6bf959 <std::io::stdio::_eprint+0x239>
│ │ │ -  6bf8d3:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bf8d6:	e8 35 d8 ff ff       	callq  6bd110 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ -  6bf8db:	eb 7c                	jmp    6bf959 <std::io::stdio::_eprint+0x239>
│ │ │ -  6bf8dd:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf8e0:	48 c7 80 50 ff ff ff 	movq   $0xffffffffffffffff,-0xb0(%rax)
│ │ │ -  6bf8e7:	ff ff ff ff 
│ │ │ -  6bf8eb:	48 8d 88 50 ff ff ff 	lea    -0xb0(%rax),%rcx
│ │ │ -  6bf8f2:	48 8d 90 58 ff ff ff 	lea    -0xa8(%rax),%rdx
│ │ │ -  6bf8f9:	48 89 14 24          	mov    %rdx,(%rsp)
│ │ │ -  6bf8fd:	48 89 4c 24 08       	mov    %rcx,0x8(%rsp)
│ │ │ -  6bf902:	48 8b b0 58 ff ff ff 	mov    -0xa8(%rax),%rsi
│ │ │ -  6bf909:	48 85 f6             	test   %rsi,%rsi
│ │ │ -  6bf90c:	0f 84 ec 01 00 00    	je     6bfafe <std::io::stdio::_eprint+0x3de>
│ │ │ -  6bf912:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf915:	48 8b 80 60 ff ff ff 	mov    -0xa0(%rax),%rax
│ │ │ -  6bf91c:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ -  6bf922:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ -  6bf928:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ -  6bf92f:	00 
│ │ │ -  6bf930:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ -  6bf935:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ -  6bf93b:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ -  6bf941:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf946:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ -  6bf94b:	ff 50 30             	callq  *0x30(%rax)
│ │ │ -  6bf94e:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bf951:	48 83 80 50 ff ff ff 	addq   $0x1,-0xb0(%rax)
│ │ │ -  6bf958:	01 
│ │ │ -  6bf959:	f3 0f 6f 44 24 20    	movdqu 0x20(%rsp),%xmm0
│ │ │ -  6bf95f:	66 0f 7f 04 24       	movdqa %xmm0,(%rsp)
│ │ │ -  6bf964:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ -  6bf968:	0f 85 9e 00 00 00    	jne    6bfa0c <std::io::stdio::_eprint+0x2ec>
│ │ │ -  6bf96e:	48 8d 3d 63 55 55 00 	lea    0x555563(%rip),%rdi        
│ │ │ -  6bf975:	e8 66 eb fe ff       	callq  6ae4e0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ -  6bf97a:	48 89 c3             	mov    %rax,%rbx
│ │ │ -  6bf97d:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ -  6bf982:	48 85 db             	test   %rbx,%rbx
│ │ │ -  6bf985:	0f 84 86 01 00 00    	je     6bfb11 <std::io::stdio::_eprint+0x3f1>
│ │ │ -  6bf98b:	48 89 5c 24 20       	mov    %rbx,0x20(%rsp)
│ │ │ -  6bf990:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ -  6bf996:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ -  6bf99c:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ -  6bf9a3:	00 
│ │ │ -  6bf9a4:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ -  6bf9a9:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ -  6bf9af:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ -  6bf9b5:	48 8d bc 24 90 00 00 	lea    0x90(%rsp),%rdi
│ │ │ -  6bf9bc:	00 
│ │ │ -  6bf9bd:	48 8d 74 24 20       	lea    0x20(%rsp),%rsi
│ │ │ -  6bf9c2:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ -  6bf9c7:	e8 54 f5 ff ff       	callq  6bef20 <<std::io::stdio::Stderr as std::io::Write>::write_fmt>
│ │ │ -  6bf9cc:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ -  6bf9d3:	00 
│ │ │ -  6bf9d4:	75 0a                	jne    6bf9e0 <std::io::stdio::_eprint+0x2c0>
│ │ │ -  6bf9d6:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bf9db:	e8 30 d7 ff ff       	callq  6bd110 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ -  6bf9e0:	8a 04 24             	mov    (%rsp),%al
│ │ │ -  6bf9e3:	3c 04                	cmp    $0x4,%al
│ │ │ -  6bf9e5:	0f 87 c7 00 00 00    	ja     6bfab2 <std::io::stdio::_eprint+0x392>
│ │ │ -  6bf9eb:	3c 02                	cmp    $0x2,%al
│ │ │ -  6bf9ed:	0f 84 bf 00 00 00    	je     6bfab2 <std::io::stdio::_eprint+0x392>
│ │ │ -  6bf9f3:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ -  6bf9fa:	03 
│ │ │ -  6bf9fb:	75 27                	jne    6bfa24 <std::io::stdio::_eprint+0x304>
│ │ │ -  6bf9fd:	48 81 c4 b8 00 00 00 	add    $0xb8,%rsp
│ │ │ -  6bfa04:	5b                   	pop    %rbx
│ │ │ -  6bfa05:	41 5c                	pop    %r12
│ │ │ -  6bfa07:	41 5e                	pop    %r14
│ │ │ -  6bfa09:	41 5f                	pop    %r15
│ │ │ -  6bfa0b:	c3                   	retq   
│ │ │ -  6bfa0c:	66 0f 6f 04 24       	movdqa (%rsp),%xmm0
│ │ │ -  6bfa11:	66 0f 7f 84 24 90 00 	movdqa %xmm0,0x90(%rsp)
│ │ │ -  6bfa18:	00 00 
│ │ │ -  6bfa1a:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ -  6bfa21:	03 
│ │ │ -  6bfa22:	74 d9                	je     6bf9fd <std::io::stdio::_eprint+0x2dd>
│ │ │ -  6bfa24:	66 0f 6f 84 24 90 00 	movdqa 0x90(%rsp),%xmm0
│ │ │ -  6bfa2b:	00 00 
│ │ │ -  6bfa2d:	66 0f 7f 44 24 20    	movdqa %xmm0,0x20(%rsp)
│ │ │ -  6bfa33:	48 8d 84 24 a8 00 00 	lea    0xa8(%rsp),%rax
│ │ │ -  6bfa3a:	00 
│ │ │ -  6bfa3b:	48 89 04 24          	mov    %rax,(%rsp)
│ │ │ -  6bfa3f:	48 8d 05 aa a5 ff ff 	lea    -0x5a56(%rip),%rax        # 6b9ff0 <<&'a T as core::fmt::Display>::fmt>
│ │ │ -  6bfa46:	48 89 44 24 08       	mov    %rax,0x8(%rsp)
│ │ │ -  6bfa4b:	48 8d 44 24 20       	lea    0x20(%rsp),%rax
│ │ │ -  6bfa50:	48 89 44 24 10       	mov    %rax,0x10(%rsp)
│ │ │ -  6bfa55:	48 8d 05 b4 5c ff ff 	lea    -0xa34c(%rip),%rax        # 6b5710 <<std::io::error::Error as core::fmt::Display>::fmt>
│ │ │ -  6bfa5c:	48 89 44 24 18       	mov    %rax,0x18(%rsp)
│ │ │ -  6bfa61:	48 8d 05 e8 fc 54 00 	lea    0x54fce8(%rip),%rax        
│ │ │ -  6bfa68:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
│ │ │ -  6bfa6d:	48 c7 44 24 38 02 00 	movq   $0x2,0x38(%rsp)
│ │ │ -  6bfa74:	00 00 
│ │ │ -  6bfa76:	48 8d 05 43 63 17 00 	lea    0x176343(%rip),%rax        
│ │ │ -  6bfa7d:	48 89 44 24 40       	mov    %rax,0x40(%rsp)
│ │ │ -  6bfa82:	48 c7 44 24 48 02 00 	movq   $0x2,0x48(%rsp)
│ │ │ -  6bfa89:	00 00 
│ │ │ -  6bfa8b:	48 89 e0             	mov    %rsp,%rax
│ │ │ -  6bfa8e:	48 89 44 24 50       	mov    %rax,0x50(%rsp)
│ │ │ -  6bfa93:	48 c7 44 24 58 02 00 	movq   $0x2,0x58(%rsp)
│ │ │ -  6bfa9a:	00 00 
│ │ │ -  6bfa9c:	48 8d 35 cd fc 54 00 	lea    0x54fccd(%rip),%rsi        
│ │ │ -  6bfaa3:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ -  6bfaa8:	e8 a3 c9 fe ff       	callq  6ac450 <std::panicking::begin_panic_fmt>
│ │ │ -  6bfaad:	e9 83 00 00 00       	jmpq   6bfb35 <std::io::stdio::_eprint+0x415>
│ │ │ -  6bfab2:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
│ │ │ -  6bfab7:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ -  6bfaba:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ -  6bfabe:	ff 10                	callq  *(%rax)
│ │ │ -  6bfac0:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ -  6bfac4:	48 8b 70 08          	mov    0x8(%rax),%rsi
│ │ │ -  6bfac8:	48 85 f6             	test   %rsi,%rsi
│ │ │ -  6bfacb:	74 0c                	je     6bfad9 <std::io::stdio::_eprint+0x3b9>
│ │ │ -  6bfacd:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ -  6bfad0:	48 8b 50 10          	mov    0x10(%rax),%rdx
│ │ │ -  6bfad4:	e8 e7 d6 a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ -  6bfad9:	be 18 00 00 00       	mov    $0x18,%esi
│ │ │ -  6bfade:	ba 08 00 00 00       	mov    $0x8,%edx
│ │ │ -  6bfae3:	48 89 df             	mov    %rbx,%rdi
│ │ │ -  6bfae6:	e8 d5 d6 a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ -  6bfaeb:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ -  6bfaf2:	03 
│ │ │ -  6bfaf3:	0f 84 04 ff ff ff    	je     6bf9fd <std::io::stdio::_eprint+0x2dd>
│ │ │ -  6bfaf9:	e9 26 ff ff ff       	jmpq   6bfa24 <std::io::stdio::_eprint+0x304>
│ │ │ -  6bfafe:	48 89 d8             	mov    %rbx,%rax
│ │ │ -  6bfb01:	48 c7 80 50 ff ff ff 	movq   $0x0,-0xb0(%rax)
│ │ │ -  6bfb08:	00 00 00 00 
│ │ │ -  6bfb0c:	e9 5c fd ff ff       	jmpq   6bf86d <std::io::stdio::_eprint+0x14d>
│ │ │ -  6bfb11:	48 8d 3d 68 62 17 00 	lea    0x176268(%rip),%rdi        
│ │ │ -  6bfb18:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ -  6bfb1d:	e8 6e e7 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ -  6bfb22:	eb 11                	jmp    6bfb35 <std::io::stdio::_eprint+0x415>
│ │ │ -  6bfb24:	48 8d 3d 55 62 17 00 	lea    0x176255(%rip),%rdi        
│ │ │ -  6bfb2b:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ -  6bfb30:	e8 5b e7 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ -  6bfb35:	0f 0b                	ud2    
│ │ │ -  6bfb37:	48 8d 3d ea fb 54 00 	lea    0x54fbea(%rip),%rdi        
│ │ │ -  6bfb3e:	e8 3d e5 06 00       	callq  72e080 <core::panicking::panic>
│ │ │ -  6bfb43:	0f 0b                	ud2    
│ │ │ -  6bfb45:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfb48:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ -  6bfb4d:	e8 9e d8 ff ff       	callq  6bd3f0 <core::ptr::drop_in_place>
│ │ │ -  6bfb52:	e9 81 00 00 00       	jmpq   6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfb57:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfb5a:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ -  6bfb5f:	e8 8c d8 ff ff       	callq  6bd3f0 <core::ptr::drop_in_place>
│ │ │ -  6bfb64:	eb 72                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfb66:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfb69:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bfb6e:	e8 5d d7 ff ff       	callq  6bd2d0 <_ZN4core3ptr13drop_in_place17h7b42cf4c2ad5a985E.llvm.18058480970354335283>
│ │ │ -  6bfb73:	eb 63                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfb75:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfb78:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bfb7b:	e8 e0 d7 ff ff       	callq  6bd360 <core::ptr::drop_in_place>
│ │ │ -  6bfb80:	eb 56                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfb82:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfb85:	4c 89 ff             	mov    %r15,%rdi
│ │ │ -  6bfb88:	4c 89 e6             	mov    %r12,%rsi
│ │ │ -  6bfb8b:	e8 60 da ff ff       	callq  6bd5f0 <alloc::alloc::box_free>
│ │ │ -  6bfb90:	eb 46                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfb92:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfb95:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ -  6bfb98:	48 8b 73 08          	mov    0x8(%rbx),%rsi
│ │ │ -  6bfb9c:	e8 1f da ff ff       	callq  6bd5c0 <_ZN5alloc5alloc8box_free17h0669bcb154503f16E.llvm.18058480970354335283>
│ │ │ -  6bfba1:	48 89 df             	mov    %rbx,%rdi
│ │ │ -  6bfba4:	e8 37 da ff ff       	callq  6bd5e0 <_ZN5alloc5alloc8box_free17h983f65f182ddafb6E.llvm.18058480970354335283>
│ │ │ -  6bfba9:	eb 2d                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfbab:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfbae:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bfbb1:	e8 da d7 ff ff       	callq  6bd390 <core::ptr::drop_in_place>
│ │ │ -  6bfbb6:	eb 20                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfbb8:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfbbb:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ -  6bfbc0:	e8 cb d7 ff ff       	callq  6bd390 <core::ptr::drop_in_place>
│ │ │ -  6bfbc5:	eb 11                	jmp    6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfbc7:	49 89 c6             	mov    %rax,%r14
│ │ │ -  6bfbca:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ -  6bfbce:	74 08                	je     6bfbd8 <std::io::stdio::_eprint+0x4b8>
│ │ │ -  6bfbd0:	48 89 e7             	mov    %rsp,%rdi
│ │ │ -  6bfbd3:	e8 18 d9 ff ff       	callq  6bd4f0 <_ZN4core3ptr13drop_in_place17hddc700aa544c7c73E.llvm.18058480970354335283>
│ │ │ -  6bfbd8:	4c 89 f7             	mov    %r14,%rdi
│ │ │ -  6bfbdb:	e8 f0 33 9b ff       	callq  72fd0 <_Unwind_Resume@plt>
│ │ │ -  6bfbe0:	0f 0b                	ud2    
│ │ │ -  6bfbe2:	66 2e 0f 1f 84 00 00 	nopw   %cs:0x0(%rax,%rax,1)
│ │ │ -  6bfbe9:	00 00 00 
│ │ │ -  6bfbec:	0f 1f 40 00          	nopl   0x0(%rax)
│ │ │ +  6bf80b:	48 8b 88 48 ff ff ff 	mov    -0xb8(%rax),%rcx
│ │ │ +  6bf812:	f3 0f 7f 88 48 ff ff 	movdqu %xmm1,-0xb8(%rax)
│ │ │ +  6bf819:	ff 
│ │ │ +  6bf81a:	48 85 c9             	test   %rcx,%rcx
│ │ │ +  6bf81d:	74 32                	je     6bf851 <std::io::stdio::_eprint+0x131>
│ │ │ +  6bf81f:	66 49 0f 7e c7       	movq   %xmm0,%r15
│ │ │ +  6bf824:	4d 85 ff             	test   %r15,%r15
│ │ │ +  6bf827:	74 28                	je     6bf851 <std::io::stdio::_eprint+0x131>
│ │ │ +  6bf829:	66 0f 70 c0 4e       	pshufd $0x4e,%xmm0,%xmm0
│ │ │ +  6bf82e:	66 49 0f 7e c4       	movq   %xmm0,%r12
│ │ │ +  6bf833:	4c 89 ff             	mov    %r15,%rdi
│ │ │ +  6bf836:	41 ff 14 24          	callq  *(%r12)
│ │ │ +  6bf83a:	49 8b 74 24 08       	mov    0x8(%r12),%rsi
│ │ │ +  6bf83f:	48 85 f6             	test   %rsi,%rsi
│ │ │ +  6bf842:	74 0d                	je     6bf851 <std::io::stdio::_eprint+0x131>
│ │ │ +  6bf844:	49 8b 54 24 10       	mov    0x10(%r12),%rdx
│ │ │ +  6bf849:	4c 89 ff             	mov    %r15,%rdi
│ │ │ +  6bf84c:	e8 6f d9 a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ +  6bf851:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf854:	48 83 b8 48 ff ff ff 	cmpq   $0x1,-0xb8(%rax)
│ │ │ +  6bf85b:	01 
│ │ │ +  6bf85c:	0f 85 d7 02 00 00    	jne    6bfb39 <std::io::stdio::_eprint+0x419>
│ │ │ +  6bf862:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf865:	48 83 b8 50 ff ff ff 	cmpq   $0x0,-0xb0(%rax)
│ │ │ +  6bf86c:	00 
│ │ │ +  6bf86d:	74 70                	je     6bf8df <std::io::stdio::_eprint+0x1bf>
│ │ │ +  6bf86f:	48 8d 3d 62 56 55 00 	lea    0x555662(%rip),%rdi        
│ │ │ +  6bf876:	e8 65 ec fe ff       	callq  6ae4e0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ +  6bf87b:	48 89 c3             	mov    %rax,%rbx
│ │ │ +  6bf87e:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ +  6bf883:	48 85 db             	test   %rbx,%rbx
│ │ │ +  6bf886:	0f 84 9a 02 00 00    	je     6bfb26 <std::io::stdio::_eprint+0x406>
│ │ │ +  6bf88c:	48 89 1c 24          	mov    %rbx,(%rsp)
│ │ │ +  6bf890:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ +  6bf896:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ +  6bf89c:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ +  6bf8a3:	00 
│ │ │ +  6bf8a4:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ +  6bf8a9:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ +  6bf8af:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ +  6bf8b5:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf8ba:	48 89 e6             	mov    %rsp,%rsi
│ │ │ +  6bf8bd:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ +  6bf8c2:	e8 59 f6 ff ff       	callq  6bef20 <<std::io::stdio::Stderr as std::io::Write>::write_fmt>
│ │ │ +  6bf8c7:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ +  6bf8ce:	00 
│ │ │ +  6bf8cf:	0f 85 86 00 00 00    	jne    6bf95b <std::io::stdio::_eprint+0x23b>
│ │ │ +  6bf8d5:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bf8d8:	e8 33 d8 ff ff       	callq  6bd110 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ +  6bf8dd:	eb 7c                	jmp    6bf95b <std::io::stdio::_eprint+0x23b>
│ │ │ +  6bf8df:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf8e2:	48 c7 80 50 ff ff ff 	movq   $0xffffffffffffffff,-0xb0(%rax)
│ │ │ +  6bf8e9:	ff ff ff ff 
│ │ │ +  6bf8ed:	48 8d 88 50 ff ff ff 	lea    -0xb0(%rax),%rcx
│ │ │ +  6bf8f4:	48 8d 90 58 ff ff ff 	lea    -0xa8(%rax),%rdx
│ │ │ +  6bf8fb:	48 89 14 24          	mov    %rdx,(%rsp)
│ │ │ +  6bf8ff:	48 89 4c 24 08       	mov    %rcx,0x8(%rsp)
│ │ │ +  6bf904:	48 8b b0 58 ff ff ff 	mov    -0xa8(%rax),%rsi
│ │ │ +  6bf90b:	48 85 f6             	test   %rsi,%rsi
│ │ │ +  6bf90e:	0f 84 ec 01 00 00    	je     6bfb00 <std::io::stdio::_eprint+0x3e0>
│ │ │ +  6bf914:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf917:	48 8b 80 60 ff ff ff 	mov    -0xa0(%rax),%rax
│ │ │ +  6bf91e:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ +  6bf924:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ +  6bf92a:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ +  6bf931:	00 
│ │ │ +  6bf932:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ +  6bf937:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ +  6bf93d:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ +  6bf943:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf948:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ +  6bf94d:	ff 50 30             	callq  *0x30(%rax)
│ │ │ +  6bf950:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bf953:	48 83 80 50 ff ff ff 	addq   $0x1,-0xb0(%rax)
│ │ │ +  6bf95a:	01 
│ │ │ +  6bf95b:	f3 0f 6f 44 24 20    	movdqu 0x20(%rsp),%xmm0
│ │ │ +  6bf961:	66 0f 7f 04 24       	movdqa %xmm0,(%rsp)
│ │ │ +  6bf966:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ +  6bf96a:	0f 85 9e 00 00 00    	jne    6bfa0e <std::io::stdio::_eprint+0x2ee>
│ │ │ +  6bf970:	48 8d 3d 61 55 55 00 	lea    0x555561(%rip),%rdi        
│ │ │ +  6bf977:	e8 64 eb fe ff       	callq  6ae4e0 <<std::io::lazy::Lazy<T>>::get>
│ │ │ +  6bf97c:	48 89 c3             	mov    %rax,%rbx
│ │ │ +  6bf97f:	48 89 5c 24 30       	mov    %rbx,0x30(%rsp)
│ │ │ +  6bf984:	48 85 db             	test   %rbx,%rbx
│ │ │ +  6bf987:	0f 84 86 01 00 00    	je     6bfb13 <std::io::stdio::_eprint+0x3f3>
│ │ │ +  6bf98d:	48 89 5c 24 20       	mov    %rbx,0x20(%rsp)
│ │ │ +  6bf992:	66 0f 6f 44 24 60    	movdqa 0x60(%rsp),%xmm0
│ │ │ +  6bf998:	66 0f 6f 4c 24 70    	movdqa 0x70(%rsp),%xmm1
│ │ │ +  6bf99e:	0f 28 94 24 80 00 00 	movaps 0x80(%rsp),%xmm2
│ │ │ +  6bf9a5:	00 
│ │ │ +  6bf9a6:	0f 29 54 24 50       	movaps %xmm2,0x50(%rsp)
│ │ │ +  6bf9ab:	66 0f 7f 4c 24 40    	movdqa %xmm1,0x40(%rsp)
│ │ │ +  6bf9b1:	66 0f 7f 44 24 30    	movdqa %xmm0,0x30(%rsp)
│ │ │ +  6bf9b7:	48 8d bc 24 90 00 00 	lea    0x90(%rsp),%rdi
│ │ │ +  6bf9be:	00 
│ │ │ +  6bf9bf:	48 8d 74 24 20       	lea    0x20(%rsp),%rsi
│ │ │ +  6bf9c4:	48 8d 54 24 30       	lea    0x30(%rsp),%rdx
│ │ │ +  6bf9c9:	e8 52 f5 ff ff       	callq  6bef20 <<std::io::stdio::Stderr as std::io::Write>::write_fmt>
│ │ │ +  6bf9ce:	f0 48 81 2b 01 00 00 	lock subq $0x1,(%rbx)
│ │ │ +  6bf9d5:	00 
│ │ │ +  6bf9d6:	75 0a                	jne    6bf9e2 <std::io::stdio::_eprint+0x2c2>
│ │ │ +  6bf9d8:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bf9dd:	e8 2e d7 ff ff       	callq  6bd110 <<alloc::sync::Arc<T>>::drop_slow>
│ │ │ +  6bf9e2:	8a 04 24             	mov    (%rsp),%al
│ │ │ +  6bf9e5:	3c 04                	cmp    $0x4,%al
│ │ │ +  6bf9e7:	0f 87 c7 00 00 00    	ja     6bfab4 <std::io::stdio::_eprint+0x394>
│ │ │ +  6bf9ed:	3c 02                	cmp    $0x2,%al
│ │ │ +  6bf9ef:	0f 84 bf 00 00 00    	je     6bfab4 <std::io::stdio::_eprint+0x394>
│ │ │ +  6bf9f5:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ +  6bf9fc:	03 
│ │ │ +  6bf9fd:	75 27                	jne    6bfa26 <std::io::stdio::_eprint+0x306>
│ │ │ +  6bf9ff:	48 81 c4 b8 00 00 00 	add    $0xb8,%rsp
│ │ │ +  6bfa06:	5b                   	pop    %rbx
│ │ │ +  6bfa07:	41 5c                	pop    %r12
│ │ │ +  6bfa09:	41 5e                	pop    %r14
│ │ │ +  6bfa0b:	41 5f                	pop    %r15
│ │ │ +  6bfa0d:	c3                   	retq   
│ │ │ +  6bfa0e:	66 0f 6f 04 24       	movdqa (%rsp),%xmm0
│ │ │ +  6bfa13:	66 0f 7f 84 24 90 00 	movdqa %xmm0,0x90(%rsp)
│ │ │ +  6bfa1a:	00 00 
│ │ │ +  6bfa1c:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ +  6bfa23:	03 
│ │ │ +  6bfa24:	74 d9                	je     6bf9ff <std::io::stdio::_eprint+0x2df>
│ │ │ +  6bfa26:	66 0f 6f 84 24 90 00 	movdqa 0x90(%rsp),%xmm0
│ │ │ +  6bfa2d:	00 00 
│ │ │ +  6bfa2f:	66 0f 7f 44 24 20    	movdqa %xmm0,0x20(%rsp)
│ │ │ +  6bfa35:	48 8d 84 24 a8 00 00 	lea    0xa8(%rsp),%rax
│ │ │ +  6bfa3c:	00 
│ │ │ +  6bfa3d:	48 89 04 24          	mov    %rax,(%rsp)
│ │ │ +  6bfa41:	48 8d 05 a8 a5 ff ff 	lea    -0x5a58(%rip),%rax        # 6b9ff0 <<&'a T as core::fmt::Display>::fmt>
│ │ │ +  6bfa48:	48 89 44 24 08       	mov    %rax,0x8(%rsp)
│ │ │ +  6bfa4d:	48 8d 44 24 20       	lea    0x20(%rsp),%rax
│ │ │ +  6bfa52:	48 89 44 24 10       	mov    %rax,0x10(%rsp)
│ │ │ +  6bfa57:	48 8d 05 b2 5c ff ff 	lea    -0xa34e(%rip),%rax        # 6b5710 <<std::io::error::Error as core::fmt::Display>::fmt>
│ │ │ +  6bfa5e:	48 89 44 24 18       	mov    %rax,0x18(%rsp)
│ │ │ +  6bfa63:	48 8d 05 e6 fc 54 00 	lea    0x54fce6(%rip),%rax        
│ │ │ +  6bfa6a:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
│ │ │ +  6bfa6f:	48 c7 44 24 38 02 00 	movq   $0x2,0x38(%rsp)
│ │ │ +  6bfa76:	00 00 
│ │ │ +  6bfa78:	48 8d 05 41 63 17 00 	lea    0x176341(%rip),%rax        
│ │ │ +  6bfa7f:	48 89 44 24 40       	mov    %rax,0x40(%rsp)
│ │ │ +  6bfa84:	48 c7 44 24 48 02 00 	movq   $0x2,0x48(%rsp)
│ │ │ +  6bfa8b:	00 00 
│ │ │ +  6bfa8d:	48 89 e0             	mov    %rsp,%rax
│ │ │ +  6bfa90:	48 89 44 24 50       	mov    %rax,0x50(%rsp)
│ │ │ +  6bfa95:	48 c7 44 24 58 02 00 	movq   $0x2,0x58(%rsp)
│ │ │ +  6bfa9c:	00 00 
│ │ │ +  6bfa9e:	48 8d 35 cb fc 54 00 	lea    0x54fccb(%rip),%rsi        
│ │ │ +  6bfaa5:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ +  6bfaaa:	e8 a1 c9 fe ff       	callq  6ac450 <std::panicking::begin_panic_fmt>
│ │ │ +  6bfaaf:	e9 83 00 00 00       	jmpq   6bfb37 <std::io::stdio::_eprint+0x417>
│ │ │ +  6bfab4:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
│ │ │ +  6bfab9:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ +  6bfabc:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ +  6bfac0:	ff 10                	callq  *(%rax)
│ │ │ +  6bfac2:	48 8b 43 08          	mov    0x8(%rbx),%rax
│ │ │ +  6bfac6:	48 8b 70 08          	mov    0x8(%rax),%rsi
│ │ │ +  6bfaca:	48 85 f6             	test   %rsi,%rsi
│ │ │ +  6bfacd:	74 0c                	je     6bfadb <std::io::stdio::_eprint+0x3bb>
│ │ │ +  6bfacf:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ +  6bfad2:	48 8b 50 10          	mov    0x10(%rax),%rdx
│ │ │ +  6bfad6:	e8 e5 d6 a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ +  6bfadb:	be 18 00 00 00       	mov    $0x18,%esi
│ │ │ +  6bfae0:	ba 08 00 00 00       	mov    $0x8,%edx
│ │ │ +  6bfae5:	48 89 df             	mov    %rbx,%rdi
│ │ │ +  6bfae8:	e8 d3 d6 a0 ff       	callq  cd1c0 <__rust_dealloc>
│ │ │ +  6bfaed:	80 bc 24 90 00 00 00 	cmpb   $0x3,0x90(%rsp)
│ │ │ +  6bfaf4:	03 
│ │ │ +  6bfaf5:	0f 84 04 ff ff ff    	je     6bf9ff <std::io::stdio::_eprint+0x2df>
│ │ │ +  6bfafb:	e9 26 ff ff ff       	jmpq   6bfa26 <std::io::stdio::_eprint+0x306>
│ │ │ +  6bfb00:	48 89 d8             	mov    %rbx,%rax
│ │ │ +  6bfb03:	48 c7 80 50 ff ff ff 	movq   $0x0,-0xb0(%rax)
│ │ │ +  6bfb0a:	00 00 00 00 
│ │ │ +  6bfb0e:	e9 5c fd ff ff       	jmpq   6bf86f <std::io::stdio::_eprint+0x14f>
│ │ │ +  6bfb13:	48 8d 3d 66 62 17 00 	lea    0x176266(%rip),%rdi        
│ │ │ +  6bfb1a:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ +  6bfb1f:	e8 6c e7 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ +  6bfb24:	eb 11                	jmp    6bfb37 <std::io::stdio::_eprint+0x417>
│ │ │ +  6bfb26:	48 8d 3d 53 62 17 00 	lea    0x176253(%rip),%rdi        
│ │ │ +  6bfb2d:	be 24 00 00 00       	mov    $0x24,%esi
│ │ │ +  6bfb32:	e8 59 e7 06 00       	callq  72e290 <core::option::expect_failed>
│ │ │ +  6bfb37:	0f 0b                	ud2    
│ │ │ +  6bfb39:	48 8d 3d e8 fb 54 00 	lea    0x54fbe8(%rip),%rdi        
│ │ │ +  6bfb40:	e8 3b e5 06 00       	callq  72e080 <core::panicking::panic>
│ │ │ +  6bfb45:	0f 0b                	ud2    
│ │ │ +  6bfb47:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfb4a:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ +  6bfb4f:	e8 9c d8 ff ff       	callq  6bd3f0 <core::ptr::drop_in_place>
│ │ │ +  6bfb54:	e9 81 00 00 00       	jmpq   6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfb59:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfb5c:	48 8d 7c 24 30       	lea    0x30(%rsp),%rdi
│ │ │ +  6bfb61:	e8 8a d8 ff ff       	callq  6bd3f0 <core::ptr::drop_in_place>
│ │ │ +  6bfb66:	eb 72                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfb68:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfb6b:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bfb70:	e8 5b d7 ff ff       	callq  6bd2d0 <_ZN4core3ptr13drop_in_place17h7b42cf4c2ad5a985E.llvm.18058480970354335283>
│ │ │ +  6bfb75:	eb 63                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfb77:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfb7a:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bfb7d:	e8 de d7 ff ff       	callq  6bd360 <core::ptr::drop_in_place>
│ │ │ +  6bfb82:	eb 56                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfb84:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfb87:	4c 89 ff             	mov    %r15,%rdi
│ │ │ +  6bfb8a:	4c 89 e6             	mov    %r12,%rsi
│ │ │ +  6bfb8d:	e8 5e da ff ff       	callq  6bd5f0 <alloc::alloc::box_free>
│ │ │ +  6bfb92:	eb 46                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfb94:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfb97:	48 8b 3b             	mov    (%rbx),%rdi
│ │ │ +  6bfb9a:	48 8b 73 08          	mov    0x8(%rbx),%rsi
│ │ │ +  6bfb9e:	e8 1d da ff ff       	callq  6bd5c0 <_ZN5alloc5alloc8box_free17h0669bcb154503f16E.llvm.18058480970354335283>
│ │ │ +  6bfba3:	48 89 df             	mov    %rbx,%rdi
│ │ │ +  6bfba6:	e8 35 da ff ff       	callq  6bd5e0 <_ZN5alloc5alloc8box_free17h983f65f182ddafb6E.llvm.18058480970354335283>
│ │ │ +  6bfbab:	eb 2d                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfbad:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfbb0:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bfbb3:	e8 d8 d7 ff ff       	callq  6bd390 <core::ptr::drop_in_place>
│ │ │ +  6bfbb8:	eb 20                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfbba:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfbbd:	48 8d 7c 24 20       	lea    0x20(%rsp),%rdi
│ │ │ +  6bfbc2:	e8 c9 d7 ff ff       	callq  6bd390 <core::ptr::drop_in_place>
│ │ │ +  6bfbc7:	eb 11                	jmp    6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfbc9:	49 89 c6             	mov    %rax,%r14
│ │ │ +  6bfbcc:	80 3c 24 04          	cmpb   $0x4,(%rsp)
│ │ │ +  6bfbd0:	74 08                	je     6bfbda <std::io::stdio::_eprint+0x4ba>
│ │ │ +  6bfbd2:	48 89 e7             	mov    %rsp,%rdi
│ │ │ +  6bfbd5:	e8 16 d9 ff ff       	callq  6bd4f0 <_ZN4core3ptr13drop_in_place17hddc700aa544c7c73E.llvm.18058480970354335283>
│ │ │ +  6bfbda:	4c 89 f7             	mov    %r14,%rdi
│ │ │ +  6bfbdd:	e8 ee 33 9b ff       	callq  72fd0 <_Unwind_Resume@plt>
│ │ │ +  6bfbe2:	0f 0b                	ud2    
│ │ │ +  6bfbe4:	66 2e 0f 1f 84 00 00 	nopw   %cs:0x0(%rax,%rax,1)
│ │ │ +  6bfbeb:	00 00 00 
│ │ │ +  6bfbee:	66 90                	xchg   %ax,%ax
│ │ │  
│ │ │  00000000006bfbf0 <std::io::Write::write_all>:
│ │ │  _ZN3std2io5Write9write_all17h2e4f3a2c77466820E():
│ │ │    6bfbf0:	55                   	push   %rbp
│ │ │    6bfbf1:	41 57                	push   %r15
│ │ │    6bfbf3:	41 56                	push   %r14
│ │ │    6bfbf5:	41 55                	push   %r13
│ │ ├── /gnu/store/srmqh29dpm50j8kj1pbqg2rgh053wgyp-binutils-2.30/bin/readelf --wide --decompress --hex-dump=.eh_frame {}
│ │ │ @@ -39481,18 +39481,18 @@
│ │ │    0x0090ae78 28410e30 440e4083 068c058d 048e038f (A.0D.@.........
│ │ │    0x0090ae88 02000000 34000000 689e0900 8c40dbff ....4...h....@..
│ │ │    0x0090ae98 23020000 04f3190b 00410e10 420e1842 #........A..B..B
│ │ │    0x0090aea8 0e20420e 28420e30 410e3844 0ea00183 . B.(B.0A.8D....
│ │ │    0x0090aeb8 078c068d 058e048f 03860200 20000000 ............ ...
│ │ │    0x0090aec8 80a30900 8442dbff fb000000 00420e10 .....B.......B..
│ │ │    0x0090aed8 420e1841 0e20440e 4083048e 038f0200 B..A. D.@.......
│ │ │ -  0x0090aee8 2c000000 c49e0900 6043dbff c4040000 ,.......`C......
│ │ │ +  0x0090aee8 2c000000 c49e0900 6043dbff c2040000 ,.......`C......
│ │ │    0x0090aef8 04031b0b 00420e10 420e1842 0e20410e .....B..B..B. A.
│ │ │    0x0090af08 28470ee0 0183058c 048e038f 02000000 (G..............
│ │ │ -  0x0090af18 2c000000 f49e0900 0048dbff c2040000 ,........H......
│ │ │ +  0x0090af18 2c000000 f49e0900 0048dbff c4040000 ,........H......
│ │ │    0x0090af28 04c71b0b 00420e10 420e1842 0e20410e .....B..B..B. A.
│ │ │    0x0090af38 28470ee0 0183058c 048e038f 02000000 (G..............
│ │ │    0x0090af48 34000000 249f0900 a04cdbff df010000 4...$....L......
│ │ │    0x0090af58 048b1c0b 00410e10 420e1842 0e20420e .....A..B..B. B.
│ │ │    0x0090af68 28420e30 410e3844 0e708307 8c068d05 (B.0A.8D.p......
│ │ │    0x0090af78 8e048f03 86020000 34000000 5c9f0900 ........4...\...
│ │ │    0x0090af88 484edbff 85010000 04a71c0b 00410e10 HN...........A..
│ │ ├── /gnu/store/srmqh29dpm50j8kj1pbqg2rgh053wgyp-binutils-2.30/bin/readelf --wide --decompress --hex-dump=.gcc_except_table {}
│ │ │ @@ -42692,61 +42692,61 @@
│ │ │    0x009bc880 00000095 00000092 00000000 00000000 ................
│ │ │    0x009bc890 ff9bd000 034e0000 0000a500 00000000 .....N..........
│ │ │    0x009bc8a0 000000a5 0000003c 000000fd 01000000 .......<........
│ │ │    0x009bc8b0 30010000 02000000 e1010000 00320100 0............2..
│ │ │    0x009bc8c0 00ce0000 00000000 00000002 00000a00 ................
│ │ │    0x009bc8d0 00001e02 0000000a 02000019 00000000 ................
│ │ │    0x009bc8e0 00000000 ff9b8581 80800003 82014f00 ..............O.
│ │ │ -  0x009bc8f0 00003500 00008402 000000eb 00000007 ..5.............
│ │ │ -  0x009bc900 0000006c 02000000 6b010000 0d000000 ...l....k.......
│ │ │ -  0x009bc910 93020000 00910100 00020000 00530200 .............S..
│ │ │ -  0x009bc920 0000db01 00000600 00002f02 000000e1 ........../.....
│ │ │ -  0x009bc930 01000028 00000000 00000000 09020000 ...(............
│ │ │ -  0x009bc940 11000000 3f020000 001c0200 000c0000 ....?...........
│ │ │ -  0x009bc950 002a0200 00004202 00000a00 00004e02 .*....B.......N.
│ │ │ -  0x009bc960 0000004c 0200005c 00000000 00000000 ...L...\........
│ │ │ +  0x009bc8f0 00003500 00008202 000000e9 00000007 ..5.............
│ │ │ +  0x009bc900 0000006a 02000000 69010000 0d000000 ...j....i.......
│ │ │ +  0x009bc910 91020000 008f0100 00020000 00510200 .............Q..
│ │ │ +  0x009bc920 0000d901 00000600 00002d02 000000df ..........-.....
│ │ │ +  0x009bc930 01000028 00000000 00000000 07020000 ...(............
│ │ │ +  0x009bc940 11000000 3d020000 001a0200 000c0000 ....=...........
│ │ │ +  0x009bc950 00280200 00004002 00000a00 00004c02 .(....@.......L.
│ │ │ +  0x009bc960 0000004a 0200005c 00000000 00000000 ...J...\........
│ │ │    0x009bc970 ff9b8581 80800003 82014f00 00003500 ..........O...5.
│ │ │ -  0x009bc980 00008202 000000e9 00000007 0000006a ...............j
│ │ │ -  0x009bc990 02000000 69010000 0d000000 91020000 ....i...........
│ │ │ -  0x009bc9a0 008f0100 00020000 00510200 0000d901 .........Q......
│ │ │ -  0x009bc9b0 00000600 00002d02 000000df 01000028 ......-........(
│ │ │ -  0x009bc9c0 00000000 00000000 07020000 11000000 ................
│ │ │ -  0x009bc9d0 3d020000 001a0200 000c0000 00280200 =............(..
│ │ │ -  0x009bc9e0 00004002 00000a00 00004c02 0000004a ..@.......L....J
│ │ │ +  0x009bc980 00008402 000000eb 00000007 0000006c ...............l
│ │ │ +  0x009bc990 02000000 6b010000 0d000000 93020000 ....k...........
│ │ │ +  0x009bc9a0 00910100 00020000 00530200 0000db01 .........S......
│ │ │ +  0x009bc9b0 00000600 00002f02 000000e1 01000028 ....../........(
│ │ │ +  0x009bc9c0 00000000 00000000 09020000 11000000 ................
│ │ │ +  0x009bc9d0 3f020000 001c0200 000c0000 002a0200 ?............*..
│ │ │ +  0x009bc9e0 00004202 00000a00 00004e02 0000004c ..B.......N....L
│ │ │    0x009bc9f0 0200005c 00000000 00000000 ff9bed81 ...\............
│ │ │ -  0x009bca00 80800003 ea010000 00001301 00000000 ................
│ │ │ -  0x009bca10 00000013 01000007 00000064 04000000 ...........d....
│ │ │ -  0x009bca20 1a010000 7b000000 00000000 00950100 ....{...........
│ │ │ -  0x009bca30 00120000 008d0400 0000a701 00007c00 ..............|.
│ │ │ -  0x009bca40 00000000 00000023 0200000d 00000057 .......#.......W
│ │ │ -  0x009bca50 04000000 50020000 0f000000 a9040000 ....P...........
│ │ │ -  0x009bca60 00970200 00170000 009a0400 0000b802 ................
│ │ │ -  0x009bca70 00000a00 0000a904 0000007e 03000011 ...........~....
│ │ │ -  0x009bca80 00000048 04000000 a0030000 02000000 ...H............
│ │ │ -  0x009bca90 74040000 00f30300 00110000 00390400 t............9..
│ │ │ -  0x009bcaa0 00000604 00001100 00002704 00000017 ..........'.....
│ │ │ -  0x009bcab0 04000025 00000000 00000000 3c040000 ...%........<...
│ │ │ -  0x009bcac0 0a000000 a9040000 00460400 00570000 .........F...W..
│ │ │ -  0x009bcad0 00000000 00009d04 00000a00 0000a904 ................
│ │ │ -  0x009bcae0 000000a7 0400001d 00000000 00000000 ................
│ │ │ -  0x009bcaf0 ff9bed81 80800003 ea010000 00001101 ................
│ │ │ -  0x009bcb00 00000000 00000011 01000007 00000062 ...............b
│ │ │ -  0x009bcb10 04000000 18010000 7b000000 00000000 ........{.......
│ │ │ -  0x009bcb20 00930100 00120000 008b0400 0000a501 ................
│ │ │ -  0x009bcb30 00007c00 00000000 00000021 0200000d ..|........!....
│ │ │ -  0x009bcb40 00000055 04000000 4e020000 0f000000 ...U....N.......
│ │ │ -  0x009bcb50 a7040000 00950200 00170000 00980400 ................
│ │ │ -  0x009bcb60 0000b602 00000a00 0000a704 0000007c ...............|
│ │ │ -  0x009bcb70 03000011 00000046 04000000 9e030000 .......F........
│ │ │ -  0x009bcb80 02000000 72040000 00f10300 00110000 ....r...........
│ │ │ -  0x009bcb90 00370400 00000404 00001100 00002504 .7............%.
│ │ │ -  0x009bcba0 00000015 04000025 00000000 00000000 .......%........
│ │ │ -  0x009bcbb0 3a040000 0a000000 a7040000 00440400 :............D..
│ │ │ -  0x009bcbc0 00570000 00000000 00009b04 00000a00 .W..............
│ │ │ -  0x009bcbd0 0000a704 000000a5 0400001d 00000000 ................
│ │ │ +  0x009bca00 80800003 ea010000 00001101 00000000 ................
│ │ │ +  0x009bca10 00000011 01000007 00000062 04000000 ...........b....
│ │ │ +  0x009bca20 18010000 7b000000 00000000 00930100 ....{...........
│ │ │ +  0x009bca30 00120000 008b0400 0000a501 00007c00 ..............|.
│ │ │ +  0x009bca40 00000000 00000021 0200000d 00000055 .......!.......U
│ │ │ +  0x009bca50 04000000 4e020000 0f000000 a7040000 ....N...........
│ │ │ +  0x009bca60 00950200 00170000 00980400 0000b602 ................
│ │ │ +  0x009bca70 00000a00 0000a704 0000007c 03000011 ...........|....
│ │ │ +  0x009bca80 00000046 04000000 9e030000 02000000 ...F............
│ │ │ +  0x009bca90 72040000 00f10300 00110000 00370400 r............7..
│ │ │ +  0x009bcaa0 00000404 00001100 00002504 00000015 ..........%.....
│ │ │ +  0x009bcab0 04000025 00000000 00000000 3a040000 ...%........:...
│ │ │ +  0x009bcac0 0a000000 a7040000 00440400 00570000 .........D...W..
│ │ │ +  0x009bcad0 00000000 00009b04 00000a00 0000a704 ................
│ │ │ +  0x009bcae0 000000a5 0400001d 00000000 00000000 ................
│ │ │ +  0x009bcaf0 ff9bed81 80800003 ea010000 00001301 ................
│ │ │ +  0x009bcb00 00000000 00000013 01000007 00000064 ...............d
│ │ │ +  0x009bcb10 04000000 1a010000 7b000000 00000000 ........{.......
│ │ │ +  0x009bcb20 00950100 00120000 008d0400 0000a701 ................
│ │ │ +  0x009bcb30 00007c00 00000000 00000023 0200000d ..|........#....
│ │ │ +  0x009bcb40 00000057 04000000 50020000 0f000000 ...W....P.......
│ │ │ +  0x009bcb50 a9040000 00970200 00170000 009a0400 ................
│ │ │ +  0x009bcb60 0000b802 00000a00 0000a904 0000007e ...............~
│ │ │ +  0x009bcb70 03000011 00000048 04000000 a0030000 .......H........
│ │ │ +  0x009bcb80 02000000 74040000 00f30300 00110000 ....t...........
│ │ │ +  0x009bcb90 00390400 00000604 00001100 00002704 .9............'.
│ │ │ +  0x009bcba0 00000017 04000025 00000000 00000000 .......%........
│ │ │ +  0x009bcbb0 3c040000 0a000000 a9040000 00460400 <............F..
│ │ │ +  0x009bcbc0 00570000 00000000 00009d04 00000a00 .W..............
│ │ │ +  0x009bcbd0 0000a904 000000a7 0400001d 00000000 ................
│ │ │    0x009bcbe0 00000000 ff9bd000 034e5900 00000e00 .........NY.....
│ │ │    0x009bcbf0 0000c801 000000ad 00000002 000000ae ................
│ │ │    0x009bcc00 01000000 4b010000 1b000000 9f010000 ....K...........
│ │ │    0x009bcc10 00660100 002f0000 00000000 00009501 .f.../..........
│ │ │    0x009bcc20 00000800 00009f01 0000009d 01000042 ...............B
│ │ │    0x009bcc30 00000000 00000000 ff9bb680 80000334 ...............4
│ │ │    0x009bcc40 00000000 83000000 00000000 00830000 ................

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCHv3] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-25  5:44           ` Danny Milosavljevic
@ 2018-10-26 11:40             ` Nikolai Merinov
  2018-10-26 16:12               ` Danny Milosavljevic
  0 siblings, 1 reply; 14+ messages in thread
From: Nikolai Merinov @ 2018-10-26 11:40 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 33066

Hi Danny,

I'm sad to hear it. All this issues looks for me as LLVM reproducibility
issue and there was some reproducibility-related changes after LLVM
6.0.1 release, e.g. https://reviews.llvm.org/D48369
https://reviews.llvm.org/D48392 and others. Note: I checked previously
mentioned changes individually and it did not solved reproducibility
issue for rust.

Unfortunately I'll be not able to return to this reproducibility
investigation for a while. So currently I can suggest to merge changes
without rust 1.29 to have reproducible chain from 1.23 to 1.28.

Regards,
Nikolai

Danny Milosavljevic <dannym@scratchpost.org> writes:

> Hi Nikolai,
>
> I've got a cargo reproducibility failure in rust 1.29.2.   Attached is diffoscope output :(
>
> Seems a little similar to what we had before (https://github.com/rust-lang/rust/issues/50556 ).

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#33066] [PATCHv3] gnu: rust: workaround rust 1.25-27 reproducibility issues
  2018-10-26 11:40             ` Nikolai Merinov
@ 2018-10-26 16:12               ` Danny Milosavljevic
  2021-02-05 15:00                 ` bug#33066: [PATCH 0/2] Workaround rust " Maxim Cournoyer
  0 siblings, 1 reply; 14+ messages in thread
From: Danny Milosavljevic @ 2018-10-26 16:12 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 33066

[-- Attachment #1: Type: text/plain, Size: 365 bytes --]

Hi Nikolai,

On Fri, 26 Oct 2018 16:40:34 +0500
Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:

> Unfortunately I'll be not able to return to this reproducibility
> investigation for a while. So currently I can suggest to merge changes
> without rust 1.29 to have reproducible chain from 1.23 to 1.28.

I did so now.

Thanks for the hard work!

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#33066: [PATCH 0/2] Workaround rust reproducibility issues
  2018-10-26 16:12               ` Danny Milosavljevic
@ 2021-02-05 15:00                 ` Maxim Cournoyer
  0 siblings, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2021-02-05 15:00 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: Nikolai Merinov, 33066-done

Hello,

Danny Milosavljevic <dannym@scratchpost.org> writes:

> Hi Nikolai,
>
> On Fri, 26 Oct 2018 16:40:34 +0500
> Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:
>
>> Unfortunately I'll be not able to return to this reproducibility
>> investigation for a while. So currently I can suggest to merge changes
>> without rust 1.29 to have reproducible chain from 1.23 to 1.28.
>
> I did so now.
>
> Thanks for the hard work!

I'm closing this; the work to bootstrap using mrustc 0.9 to start from
rust 1.29.2 has been merged to core-updates; it brought many changes.

Thank you,

Maxim




^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2021-02-05 15:01 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-16 18:00 [bug#33066] [PATCH 0/2] Workaround rust reproducibility issues Nikolai Merinov
2018-10-15 21:32 ` [bug#33066] [PATCH 1/2] gnu: rust: workaround rust 1.25-27 " Nikolai Merinov
2018-10-17 11:14   ` Danny Milosavljevic
2018-10-19 19:44     ` Nikolai Merinov
2018-10-19 20:58       ` [bug#33066] [PATCHv3] " Nikolai Merinov
2018-10-21  7:28         ` Nikolai Merinov
2018-10-24 19:43           ` Danny Milosavljevic
2018-10-25  5:44           ` Danny Milosavljevic
2018-10-26 11:40             ` Nikolai Merinov
2018-10-26 16:12               ` Danny Milosavljevic
2021-02-05 15:00                 ` bug#33066: [PATCH 0/2] Workaround rust " Maxim Cournoyer
2018-10-15 21:37 ` [bug#33066] [PATCH 2/2] gnu: rust: add rust 1.28 and rust 1.29 packages Nikolai Merinov
2018-10-17 11:15   ` Danny Milosavljevic
2018-10-17 14:14   ` Joe Hillenbrand

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).