Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Upgrade to LLVM 12 #81451

Merged
merged 12 commits into from
Mar 4, 2021
Merged

Upgrade to LLVM 12 #81451

merged 12 commits into from
Mar 4, 2021

Conversation

nikic
Copy link
Contributor

@nikic nikic commented Jan 27, 2021

This implements the necessary adjustments to make rustc work with LLVM 12. I didn't encounter any major issues so far.

r? @cuviper

@rust-highfive
Copy link
Collaborator

⚠️ Warning ⚠️

  • These commits modify submodules.

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 27, 2021
@@ -5,6 +5,7 @@

#include "LLVMWrapper.h"

#include "llvm/Analysis/AliasAnalysis.h"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The NewPM support has turned into a big mess because there were major API changes in all of the recent releases. After the LLVM 12 upgrade, we should probably look into switching to NewPM by default (as clang will be doing so soon as well), and drop support for NewPM on older LLVM versions to reduce the mess.

@@ -3,6 +3,6 @@
# only-linux

all:
$(RUSTC) -Z split-dwarf=split foo.rs
$(RUSTC) -Z split-dwarf=split -C debuginfo=2 foo.rs
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-Z split-dwarf=split no longer automatically implies that debuginfo is enabled. This is in line with changes in GCC and clang (https://reviews.llvm.org/D80391), though I'm not sure what changed to affect rustc (the referenced revision only affects the frontend).

@nikic
Copy link
Contributor Author

nikic commented Jan 27, 2021

@bors try @rust-timer queue

@rust-timer
Copy link
Collaborator

Awaiting bors try build completion.

@bors
Copy link
Contributor

bors commented Jan 27, 2021

⌛ Trying commit 9d6d477232c745d961b5610be3e0c2c22672b901 with merge dea4d1f65a5c24b55d88ff3ce5d3c78bab1b270d...

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Jan 27, 2021

💔 Test failed - checks-actions

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 27, 2021
@nikic
Copy link
Contributor Author

nikic commented Jan 27, 2021

After updating the python version, the next issue is a linker error:

   Compiling rustc_driver v0.0.0 (/checkout/compiler/rustc_driver)
error: linking with `clang` failed: exit code: 1
  |
  = note: "clang" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-Wl,--eh-frame-hdr" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.0.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.1.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.10.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.11.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.12.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.13.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.14.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.15.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.2.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.3.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.4.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.5.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.6.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.7.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.8.rcgu.o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.rustc_driver.48a3f2f3-cgu.9.rcgu.o" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/librustc_driver-803a3283019c3250.so" "-Wl,--version-script=/tmp/rustctDvrLl/list" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps/rustc_driver-803a3283019c3250.180pwzs91guk7zoi.rcgu.o" "-shared" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/deps" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/release/deps" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/build/psm-0801fd907fc2a593/out" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/build/rustc_llvm-c0295b76b348a5b0/out" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/llvm/build/lib" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_error_codes-108ab703a6a12107.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_save_analysis-75299ceb9d2631f5.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librls_data-79f662c6d6c25eb6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librls_span-c3a339b60b9cce7b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_interface-a72c738a72dbc57b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_codegen_llvm-921cb72ff26d5544.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_llvm-a802e48348212683.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_ty_utils-f050c6e88b8f4230.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_traits-62c304e71758d83a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libchalk_engine-1f6d0c5c327106f3.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libchalk_solve-c36f04743ba26866.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtracing_tree-0bdaaee91a038413.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtracing_subscriber-5fa280303fed095c.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libchrono-373462484257b956.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libnum_integer-5458bf6ab6ab57dc.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libnum_traits-648965f692821750.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtime-b1f93a9fce5ff7a9.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libsharded_slab-fb1e2ce08980229e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtracing_serde-a4424abfefa9a1f2.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libserde_json-7ce81f26dd83834e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libryu-1c226879b83fa082.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libitoa-719922463ba2f3a8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtracing_log-537c9fddce3bde7d.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libansi_term-d8e319c34434fadf.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libmatchers-ec4983281b9516ce.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libregex_automata-86b702cc1b6a7442.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libbyteorder-adc043a4817bec4e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libpetgraph-f82b516ab2416466.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libfixedbitset-717dc48d9dd4586a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_privacy-330d5150b43ef911.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_builtin_macros-3412b9b9b1c676ba.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_typeck-3aafac25e234958c.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_resolve-0a0815cea1556729.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_ast_lowering-2326916978280e3a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_passes-6eef348c4ffb7ec5.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_mir_build-4700c894c2d1be4e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_mir-295bf9d8f2add87e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libgsgdt-a3a943b8ea4ff768.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libserde-f5107fa8559ffa93.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libregex-5e3dd9f10ca543e1.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libthread_local-bb357e762f8f5d5b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libregex_syntax-09b8a4bd3b646678.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libaho_corasick-9cfc41274b3b13a6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libmemchr-d01564ba87d0a5ca.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_codegen_ssa-1a5fecd806220ec9.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_symbol_mangling-d3adcec3cf63cef1.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_demangle-f67a272ec1d52a1d.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libpunycode-53ca5325ecabf3de.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_incremental-b92ddc8ccdf31044.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libpathdiff-e657bf930d1cfec4.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libcc-94440b142fd9e7a4.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_plugin_impl-b78f87706941feae.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_metadata-5e5a9cb9112e6f82.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libmemmap-25724d711f9d6546.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_hir_pretty-d0ad046be77b756d.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libsnap-feefb2f98cdca65e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_expand-aa6cbacb1da31e72.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_ast_passes-eb18dd3dd779d6d2.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libitertools-ec6674229f408fce.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libeither-13d4d3e96f5a7655.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_parse-6652ace5180316b4.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libproc_macro-88b64a19ba4aaf13.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_lint-58ce7bc438c56653.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libunicode_security-639d62e2f5036b01.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libunicode_script-690faff5f3646e02.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libunicode_normalization-62e46184083935a3.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtinyvec-13c828c93eead851.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_trait_selection-04d15e4019769acd.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_parse_format-863b8cceb53b79f0.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_infer-2ed1f13b23fcae04.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_middle-44c80c2e5f31b5d3.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libchalk_ir-3b8ad39983f9d713.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_type_ir-862e5a350f336b35.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_apfloat-66a6efed91bd61d7.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libpolonius_engine-2ba170dc23050433.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libdatafrog-3d92208ddcc91c9b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_attr-9962e85347afc455.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_ast_pretty-33f46d9dd61f5f36.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_session-fb197c7d2b49ed74.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libnum_cpus-4828c2710ff74acc.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libgetopts-f44e9553f3238d63.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_fs_util-ac9a59dccb79280a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_query_system-598288bb7f1522f9.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_errors-b0938dbb5d61e2e8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtermize-c1c9cd501c4adb7f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libatty-c2c3f2e092700d1b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libannotate_snippets-b98649c50555b3fa.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtermcolor-c313456a787c43fd.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_lint_defs-3cc9e3102bed9dcd.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_hir-5a47e1023e3be1b3.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_feature-ba39846bf55e5a74.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_target-4939ddf5c2b3a524.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_ast-e46af1e9bfbcde06.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_lexer-4e0cc48b9fc01025.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libunicode_xid-9fa13c2f0967ff93.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_span-9e9c70e7522e28e3.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libscoped_tls-0173009bf925a26d.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libsha2-387d3c3c7d2d3d6f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libsha1-e279ed0bda2ad105.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libcpuid_bool-347202a6285d34b5.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libmd5-66b2622e7216e752.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libopaque_debug-16aa257b7d402894.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libblock_buffer-c517ae731947f0ac.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libdigest-9df7703f52590e69.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libgeneric_array-2e92de094187d870.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtypenum-e69f89fd766c59ee.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libunicode_width-a8efbcb0a8d1037b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_arena-539e1434d42ba071.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_data_structures-61891046c663ebde.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libstacker-9f128c7c44f79ae8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libpsm-4226eacdbae4eb1a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtempfile-8763e639a311289f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librand-0802f7ff60a7e0ee.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librand_chacha-f4dec9916d0bf4ac.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libppv_lite86-a03cd9d174baa317.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librand_core-8b2561ba5dac234b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libgetrandom-3d38d7c781928140.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libremove_dir_all-4fe4bc8a3d60e1cd.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libmeasureme-f586eaeed7ca3333.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libparking_lot-cdb5c7dc9160f999.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libparking_lot_core-9c70284cfec406d6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/liblock_api-559ced9336e3526e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libscopeguard-eef96432f28bfbd2.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libinstant-27e73bba5825c421.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libena-798fee0e53e8afef.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/liblog-b818126360b12ec6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libstable_deref_trait-62655a21a24658ca.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_graphviz-2546ba261051f767.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libjobserver-a21042ee7181e7ca.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/liblibc-5699d7c29e760bdc.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_hash-60d53594785b6d3d.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_index-cf8d53cf2eba7f7c.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/librustc_serialize-9c2cc8e17ec86e2d.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libindexmap-88f4542643e3b49b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libhashbrown-22b69c1f10ebe375.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libsmallvec-98512b34b8e021a2.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libarrayvec-ef62f5836968cf92.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libbitflags-66e589df87b48b01.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtracing-e29fe3150b13d051.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libtracing_core-876406930194b3a6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/liblazy_static-8ce37108b53282f0.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "/tmp/rustctDvrLl/libcfg_if-f07b2fe3241cbdcb.rlib" "-Wl,--no-whole-archive" "-Wl,--start-group" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bdynamic" "-lstd-9eb0c8cf98e98fb9" "-Wl,--end-group" "-Wl,-Bstatic" "/tmp/rustctDvrLl/libcompiler_builtins-f132e8c76b384258.rlib" "-Wl,-Bdynamic" "-lLLVM-12-rust-1.51.0-nightly" "-lstdc++" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,-rpath,$ORIGIN/../lib"
  = note: /rustroot/bin/ld: /checkout/obj/build/x86_64-unknown-linux-gnu/llvm/build/lib/libLLVM-12-rust-1.51.0-nightly.so: __morestack: invalid needed version 2
          /checkout/obj/build/x86_64-unknown-linux-gnu/llvm/build/lib/libLLVM-12-rust-1.51.0-nightly.so: error adding symbols: Bad value
          clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

@nagisa
Copy link
Member

nagisa commented Jan 28, 2021

The python3 thing will definitely need changes to the readme and possibly a relnotes tag. The __morestack dependency in LLVM is curious, I would've expected it to not exist, but it its necessary now, I suspect changes to our compiler-builtins will be necessary.

@nikic
Copy link
Contributor Author

nikic commented Jan 28, 2021

Looks like using LLD as the linker instead avoids the error, so possibly it's a binutils linker bug?

@cuviper
Copy link
Member

cuviper commented Jan 28, 2021

That builder also uses a custom binutils, so that version could be updated if needed.

@nikic
Copy link
Contributor Author

nikic commented Jan 28, 2021

@cuviper Just tried that, but updating to the latest binutils version didn't help.

@klensy
Copy link
Contributor

klensy commented Jan 28, 2021

Found similar error https://bugs.gentoo.org/760324 , solved with -fuse-ld=lld in LDFLAGS

@nikic
Copy link
Contributor Author

nikic commented Jan 28, 2021

@bors try

@bors
Copy link
Contributor

bors commented Jan 28, 2021

⌛ Trying commit 5b736302e6fdb2ddd3ec89fad263131d13255e70 with merge a40b38546f6f09e9b2a6592ef391c84f74ab536d...

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Jan 28, 2021

💔 Test failed - checks-actions

@nikic
Copy link
Contributor Author

nikic commented Jan 28, 2021

@bors try

@bors
Copy link
Contributor

bors commented Jan 28, 2021

⌛ Trying commit 157e1062795b17758c9174c3925d366dc5e69199 with merge be3777f1a4bdb0417cca87d7c31d9fa85596bbad...

moz-v2v-gh pushed a commit to mozilla/gecko-dev that referenced this pull request Apr 29, 2021
… rust 1.52. r=firefox-build-system-reviewers,glandium

Credit goes to dmajor.
Rust gets LLVM 12 - rust-lang/rust#81451.
The PGO format changed between 11 and 12, and builds will have poor optimization if we mix versions in xLTO.
The above PR has landed on Rust nightly 1.52.
Until we move to 1.52 nightly we should have this landed.

In the meantime, for unblocking try builds, we can disable value-PGO in Rust.

Differential Revision: https://phabricator.services.mozilla.com/D113327
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request May 9, 2021
Package changes:
 * bump bootstraps to 1.51.0.
 * adjust patches and cargo checksums as required
 * 1.51 failed to build natively on 32-bit armv7, there is hope
   that this is fixed with 1.52.  (1.51 can be built with netbsd32
   emulation on a aarch64 system).

Upsteream changes:

Version 1.52.0 (2021-05-06)
============================

Language
--------
- [Added the `unsafe_op_in_unsafe_fn` lint, which checks whether the unsafe
  code in an `unsafe fn` is wrapped in a `unsafe` block.][79208] This lint
  is allowed by default, and may become a warning or hard error in a
  future edition.
- [You can now cast mutable references to arrays to a pointer of the same
  type as the element.][81479]

Compiler
--------
- [Upgraded the default LLVM to LLVM 12.][81451]

Added tier 3\* support for the following targets.

- [`s390x-unknown-linux-musl`][82166]
- [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`][82202]
- [`powerpc-unknown-openbsd`][82733]

\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.

Libraries
---------
- [`OsString` now implements `Extend` and `FromIterator`.][82121]
- [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879]
- [`Arc<impl Error>` now implements `error::Error`.][80553]
- [All integer division and remainder operations are now `const`.][80962]

Stabilised APIs
-------------
- [`Arguments::as_str`]
- [`char::MAX`]
- [`char::REPLACEMENT_CHARACTER`]
- [`char::UNICODE_VERSION`]
- [`char::decode_utf16`]
- [`char::from_digit`]
- [`char::from_u32_unchecked`]
- [`char::from_u32`]
- [`slice::partition_point`]
- [`str::rsplit_once`]
- [`str::split_once`]

The following previously stable APIs are now `const`.

- [`char::len_utf8`]
- [`char::len_utf16`]
- [`char::to_ascii_uppercase`]
- [`char::to_ascii_lowercase`]
- [`char::eq_ignore_ascii_case`]
- [`u8::to_ascii_uppercase`]
- [`u8::to_ascii_lowercase`]
- [`u8::eq_ignore_ascii_case`]

Rustdoc
-------
- [Rustdoc lints are now treated as a tool lint, meaning that lints are
  now prefixed with `rustdoc::`
  (e.g. `#[warn(rustdoc::non_autolinks)]`).][80527]

  Using the old style is still allowed, and will become a warning in
  a future release.
- [Rustdoc now supports argument files.][82261]
- [Rustdoc now generates smart punctuation for documentation.][79423]
- [You can now use "task lists" in Rustdoc Markdown.][81766] E.g.
  ```markdown
  - [x] Complete
  - [ ] Todo
  ```

Misc
----
- [You can now pass multiple filters to tests.][81356] E.g.
  `cargo test -- foo bar` will run all tests that match `foo` and `bar`.
- [Rustup now distributes PDB symbols for the `std` library on Windows,
  allowing you to see `std` symbols when debugging.][82218]

Internal Only
-------------
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.

- [Check the result cache before the DepGraph when ensuring queries][81855]
- [Try fast_reject::simplify_type in coherence before doing full check][81744]
- [Only store a LocalDefId in some HIR nodes][81611]
- [Store HIR attributes in a side table][79519]

Compatibility Notes
-------------------
- [Cargo build scripts are now forbidden from setting `RUSTC_BOOTSTRAP`.]
  [cargo/9181]
- [Removed support for the `x86_64-rumprun-netbsd` target.][82594]
- [Deprecated the `x86_64-sun-solaris` target in favor of `x86_64-pc-solaris`.]
  [82216]
- [Rustdoc now only accepts `,`, ` `, and `\t` as delimiters for specifying
  languages in code blocks.][78429]
- [Rustc now catches more cases of `pub_use_of_private_extern_crate`][80763]
- [Changes in how proc macros handle whitespace may lead to panics when used
  with older `proc-macro-hack` versions. A `cargo update` should be sufficient
  to fix this in all cases.][84136]

[84136]: rust-lang/rust#84136
[80763]: rust-lang/rust#80763
[82166]: rust-lang/rust#82166
[82121]: rust-lang/rust#82121
[81879]: rust-lang/rust#81879
[82261]: rust-lang/rust#82261
[82218]: rust-lang/rust#82218
[82216]: rust-lang/rust#82216
[82202]: rust-lang/rust#82202
[81855]: rust-lang/rust#81855
[81766]: rust-lang/rust#81766
[81744]: rust-lang/rust#81744
[81611]: rust-lang/rust#81611
[81479]: rust-lang/rust#81479
[81451]: rust-lang/rust#81451
[81356]: rust-lang/rust#81356
[80962]: rust-lang/rust#80962
[80553]: rust-lang/rust#80553
[80527]: rust-lang/rust#80527
[79519]: rust-lang/rust#79519
[79423]: rust-lang/rust#79423
[79208]: rust-lang/rust#79208
[78429]: rust-lang/rust#78429
[82733]: rust-lang/rust#82733
[82594]: rust-lang/rust#82594
[cargo/9181]: rust-lang/cargo#9181
[`char::MAX`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX
[`char::REPLACEMENT_CHARACTER`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER
[`char::UNICODE_VERSION`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION
[`char::decode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16
[`char::from_u32`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32
[`char::from_u32_unchecked`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked
[`char::from_digit`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_digit
[`Peekable::next_if`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if
[`Peekable::next_if_eq`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_eq
[`Arguments::as_str`]: https://doc.rust-lang.org/stable/std/fmt/struct.Arguments.html#method.as_str
[`str::split_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_once
[`str::rsplit_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit_once
[`slice::partition_point`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point
[`char::len_utf8`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf8
[`char::len_utf16`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf16
[`char::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_uppercase
[`char::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_lowercase
[`char::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.eq_ignore_ascii_case
[`u8::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_uppercase
[`u8::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_lowercase
[`u8::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.eq_ignore_ascii_case
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 31, 2021
Pkgsrc changes:
 * Bump bootstrap kit version to 1.51.0.
 * Adjust patches as needed.
 * Update checksum adjustments.
 * Fix syntax error in commands adjusting libserde_derive for Darwin

Upstream changes:

Version 1.52.1 (2021-05-10)
============================

This release disables incremental compilation, unless the user has explicitly
opted in via the newly added RUSTC_FORCE_INCREMENTAL=1 environment variable.

This is due to the widespread, and frequently occuring, breakage encountered by
Rust users due to newly enabled incremental verification in 1.52.0. Notably,
Rust users **should** upgrade to 1.52.0 or 1.52.1: the bugs that are detected by
newly added incremental verification are still present in past stable versions,
and are not yet fixed on any channel. These bugs can lead to miscompilation of
Rust binaries.

These problems only affect incremental builds, so release builds with Cargo
should not be affected unless the user has explicitly opted into incremental.
Debug and check builds are affected.

See [84970] for more details.

[84970]: rust-lang/rust#84970

Version 1.52.0 (2021-05-06)
============================

Language
--------
- [Added the `unsafe_op_in_unsafe_fn` lint, which checks whether
  the unsafe code in an `unsafe fn` is wrapped in a `unsafe`
  block.][79208] This lint is allowed by default, and may become
  a warning or hard error in a future edition.

- [You can now cast mutable references to arrays to a pointer of
  the same type as the element.][81479]

Compiler
--------
- [Upgraded the default LLVM to LLVM 12.][81451]

Added tier 3\* support for the following targets.

- [`s390x-unknown-linux-musl`][82166]
- [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`][82202]
- [`powerpc-unknown-openbsd`][82733]

\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.

Libraries
---------
- [`OsString` now implements `Extend` and `FromIterator`.][82121]
- [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879]
- [`Arc<impl Error>` now implements `error::Error`.][80553]
- [All integer division and remainder operations are now `const`.][80962]

Stabilised APIs
-------------
- [`Arguments::as_str`]
- [`char::MAX`]
- [`char::REPLACEMENT_CHARACTER`]
- [`char::UNICODE_VERSION`]
- [`char::decode_utf16`]
- [`char::from_digit`]
- [`char::from_u32_unchecked`]
- [`char::from_u32`]
- [`slice::partition_point`]
- [`str::rsplit_once`]
- [`str::split_once`]

The following previously stable APIs are now `const`.

- [`char::len_utf8`]
- [`char::len_utf16`]
- [`char::to_ascii_uppercase`]
- [`char::to_ascii_lowercase`]
- [`char::eq_ignore_ascii_case`]
- [`u8::to_ascii_uppercase`]
- [`u8::to_ascii_lowercase`]
- [`u8::eq_ignore_ascii_case`]

Rustdoc
-------
- [Rustdoc lints are now treated as a tool lint, meaning that
  lints are now prefixed with `rustdoc::` (e.g.
  `#[warn(rustdoc::non_autolinks)]`).][80527] Using the old style
  is still allowed, and will become a warning in a future release.
- [Rustdoc now supports argument files.][82261]
- [Rustdoc now generates smart punctuation for documentation.][79423]
- [You can now use "task lists" in Rustdoc Markdown.][81766] E.g.
  ```markdown
  - [x] Complete
  - [ ] Todo
  ```

Misc
----
- [You can now pass multiple filters to tests.][81356] E.g.
  `cargo test -- foo bar` will run all tests that match `foo` and `bar`.
- [Rustup now distributes PDB symbols for the `std` library on Windows,
  allowing you to see `std` symbols when debugging.][82218]

Internal Only
-------------
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.

- [Check the result cache before the DepGraph when ensuring queries][81855]
- [Try fast_reject::simplify_type in coherence before doing full check][81744]
- [Only store a LocalDefId in some HIR nodes][81611]
- [Store HIR attributes in a side table][79519]

Compatibility Notes
-------------------
- [Cargo build scripts are now forbidden from setting
  `RUSTC_BOOTSTRAP`.][cargo/9181]
- [Removed support for the `x86_64-rumprun-netbsd` target.][82594]
- [Deprecated the `x86_64-sun-solaris` target in favor of
  `x86_64-pc-solaris`.][82216]
- [Rustdoc now only accepts `,`, ` `, and `\t` as delimiters for specifying
  languages in code blocks.][78429]
- [Rustc now catches more cases of `pub_use_of_private_extern_crate`][80763]
- [Changes in how proc macros handle whitespace may lead to panics
  when used with older `proc-macro-hack` versions. A `cargo update` should
  be sufficient to fix this in all cases.][84136]

[84136]: rust-lang/rust#84136
[80763]: rust-lang/rust#80763
[82166]: rust-lang/rust#82166
[82121]: rust-lang/rust#82121
[81879]: rust-lang/rust#81879
[82261]: rust-lang/rust#82261
[82218]: rust-lang/rust#82218
[82216]: rust-lang/rust#82216
[82202]: rust-lang/rust#82202
[81855]: rust-lang/rust#81855
[81766]: rust-lang/rust#81766
[81744]: rust-lang/rust#81744
[81611]: rust-lang/rust#81611
[81479]: rust-lang/rust#81479
[81451]: rust-lang/rust#81451
[81356]: rust-lang/rust#81356
[80962]: rust-lang/rust#80962
[80553]: rust-lang/rust#80553
[80527]: rust-lang/rust#80527
[79519]: rust-lang/rust#79519
[79423]: rust-lang/rust#79423
[79208]: rust-lang/rust#79208
[78429]: rust-lang/rust#78429
[82733]: rust-lang/rust#82733
[82594]: rust-lang/rust#82594
[cargo/9181]: rust-lang/cargo#9181
[`char::MAX`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX
[`char::REPLACEMENT_CHARACTER`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER
[`char::UNICODE_VERSION`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION
[`char::decode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16
[`char::from_u32`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32
[`char::from_u32_unchecked`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked
[`char::from_digit`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_digit
[`Peekable::next_if`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if
[`Peekable::next_if_eq`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_eq
[`Arguments::as_str`]: https://doc.rust-lang.org/stable/std/fmt/struct.Arguments.html#method.as_str
[`str::split_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_once
[`str::rsplit_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit_once
[`slice::partition_point`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point
[`char::len_utf8`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf8
[`char::len_utf16`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf16
[`char::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_uppercase
[`char::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_lowercase
[`char::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.eq_ignore_ascii_case
[`u8::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_uppercase
[`u8::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_lowercase
[`u8::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.eq_ignore_ascii_case
lopopolo added a commit to artichoke/playground that referenced this pull request Aug 5, 2021
Artichoke only compiles with Rust 1.54.0. Rust 1.54.0 is based on LLVM
12 (rust-lang/rust#81451). To ensure the `emcc` compiled sources interop
with Rust code, it is important to use an `emsdk` version that is ~close
to when it was branched from LLVM 12.

According to the release notes [0], 2.0.23 - 05/26/2021 release is the
first to be based on LLVM 12.

However, Rust depends on a stubbed function in the emsdk c++ ABI that
was removed in 2.0.10. According to rust-lang/rust#85821, we might have
luck compiling with 2.0.9

[0]: https://emscripten.org/docs/introducing_emscripten/release_notes.html

emscripten-toolchain
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.