Resolve uprev conflict

Change-Id: I1386f91eb584ed9db05c3061a3d8674751167c6f
diff --git a/dev-lang/rust-bootstrap/Manifest b/dev-lang/rust-bootstrap/Manifest
index a7f0561..c4da0ba 100644
--- a/dev-lang/rust-bootstrap/Manifest
+++ b/dev-lang/rust-bootstrap/Manifest
@@ -1,5 +1,6 @@
 DIST mrustc-0.9.tar.gz 905308 BLAKE2B 4e8829bce1d6a26028a4d8fb8373988e41989aaef4bdd21b3fcca1aee6f72d301b510ae4458502fc1be06c35601362ac5e23aeedfd0c099dd0d5414015f55c2a SHA512 7cefc6c1a4a6757b1b6351332fa2a71ea1eda0060d2d884f9e821fb17856f3ac26bdba7bde13e2c18bba9e243e5a599316e148479c3384d7899bc5223e9d5589
-DIST rust-bootstrap-1.60.0.tbz2 310285869 BLAKE2B 923e654655766bc7688b317e3d7d18b501f5e544688e141d2b70254a35ec12f46087a1e6d50b0b2d15a45a50d5aa930de5d1b5fae335cfee461c260beb77cebf SHA512 8318e4794caf6c6f0c1d0e4b91680077969fca7ec00ed297c49d063195b904dd10ffa4c1068bbd7363804f26ea2be6dee2749da8caa694277a821da7b7df89e1
+DIST rust-bootstrap-1.58.1.tbz2 269484609 BLAKE2B 6d29a937f22afb96636a74a8d865bd567982bf87cf86658f1636417a3b27c67aa6f8e07df73c95a787e43b958259e6fcfcc593f095ae5d5c9841b8f6e33c8557 SHA512 3b1409b9170e47065663b98dce748227cce78e9928632422a7b2acc0d690b09ed366cde2ecc1de31222b3c1dacc578ab948411c1ef05930e3d7080e2fadeee4a
+DIST rust-bootstrap-1.59.0.tbz2 308478627 BLAKE2B 1803903758a9208c7b4e52bc8f5c045d4a357726db856fef54b798d51c2db72f57f1ba4b5e013599781f66c4bc3b998b525d0bd57384d96b452ce67f2b757a25 SHA512 62d0c7c148ab07502aca1a5e073a028e72fd1a992a0ec3d86ca990829c31c18e110feefc55f5c9d913b7360168bfbb0fcb010ef94d6299ca4f7ad7250cb4f216
 DIST rustc-1.29.0-src.tar.gz 106092915 BLAKE2B 520bbbc49b130229e24a130cb7626184c9c06dfa07b50366d602e76e0005db2f996e7fc0da23de19e67783286caffaf4cb4ef830179f8e42efda1fed1542b248 SHA512 3c6b79cce5a42553bc4360591c6e6b42b36f035243b8cb688a0d4b08c10793e59d257bf9e781c9345c92f765a63a9e161e3e3346f02ddc733e4b401cb5aeb302
 DIST rustc-1.30.0-src.tar.gz 149490609 BLAKE2B 7b9403e40573b7bef82b850ed63a80fb75fed8839761de6da3a518584d2175ec681fb22b47b9a4bcd6fb7069c75e21821fc8fe1e9458f9e5c25ed7a56a553517 SHA512 a4737727818397a26974449e9e7ddc09ae7430a08102ae05729317b19675fa89ad82a8f5bc5b7c913d894866a30dfe3c539c80e29c2b0ade6ecde06db8216981
 DIST rustc-1.31.1-src.tar.gz 151163848 BLAKE2B 4d5712a4c85b49167577ecf5191792d9f437780c2c5dfecdb2582c5e49cfec8f6e6a92664e96a7fd552003eec9c2d6a9042ca1d17d9ba7dd00c6f5bfd74098a0 SHA512 76ca238c40694abab4982f4b788a0da34bbb3d8a6e4adb50b0b9138876407ac2cb4fc39cde057b8fa32729c543c5977d392167e96b82f76a01af31eaafe463cf
@@ -32,4 +33,3 @@
 DIST rustc-1.58.1-src.tar.gz 183834489 BLAKE2B ecc926726ac323cfadd72551ec6df7e435d1d4d6e57f4612d0959f3125182fcf98a4cd70fd25d09781bac22b9857a3a6629a97c7f902d71c345fc9c38dbaa21a SHA512 556de73500bb66796e1d6ec063f26d60e7fe03d496e0783b3b92b54d1aea8354999a6eff325a68eabdaa61cf2b356168768686bfc2ccb48766308490f9c4d945
 DIST rustc-1.59.0-src.tar.gz 190229590 BLAKE2B a477269286628e2d9101220dfae29caceb4e484052c3b24f6a1d25fd29ecae54fa49e16cdb685078aac64cfe5e47406aa11b56ef90c10c6689861913166430d0 SHA512 77e02226785e964750c89b8f27d6ee0546990919b8066889043145093b733e80edecb1fd81ae068e03943ded4692f28b2866cdaa8240a23f68968c235b0d1f8e
 DIST rustc-1.60.0-src.tar.gz 202376973 BLAKE2B 5e0f3aaab0ce87fc6068cdf1aa22f2e707cffe96584bc6d6bd75539c99aa39308d28e77efa5a32b2cfc7b595c0aa40ba4b3f860060f48ab4e79e9bfc85b77225 SHA512 ae626482287949eb73a5467245b8e21b7624713a29d4bbdf1c1e1232e10f5497ba3435427e08df4fd5d2277c456213e5d04529e841d50924a4211fdb8c6acfd0
-DIST rustc-1.61.0-src.tar.gz 203300188 BLAKE2B 71c1c6d14d9367a1b996d14eb302d6eaf6b83f968928639c5704028dfa05b1254d6bc951cb1c97fb8ee21b095071fdfb41b0f0ebd531dff301dc521fe30198fe SHA512 486f77041f664ea73aa7c97affd3916892c5218e69dee9c701d33e629e335d1b8da12a2d23d0c18d9e9dc75f12983f961f76006395324a705b1d15444d891640
diff --git a/dev-lang/rust-bootstrap/rust-bootstrap-1.59.0.ebuild b/dev-lang/rust-bootstrap/rust-bootstrap-1.59.0.ebuild
new file mode 120000
index 0000000..7634ff8
--- /dev/null
+++ b/dev-lang/rust-bootstrap/rust-bootstrap-1.59.0.ebuild
@@ -0,0 +1 @@
+rust-bootstrap-1.60.0.ebuild
\ No newline at end of file
diff --git a/dev-lang/rust-bootstrap/rust-bootstrap-1.61.0.ebuild b/dev-lang/rust-bootstrap/rust-bootstrap-1.60.0.ebuild
similarity index 97%
rename from dev-lang/rust-bootstrap/rust-bootstrap-1.61.0.ebuild
rename to dev-lang/rust-bootstrap/rust-bootstrap-1.60.0.ebuild
index dd3e7b2..d6b3d99 100644
--- a/dev-lang/rust-bootstrap/rust-bootstrap-1.61.0.ebuild
+++ b/dev-lang/rust-bootstrap/rust-bootstrap-1.60.0.ebuild
@@ -65,7 +65,6 @@
 	1.57.0
 	1.58.1
 	1.59.0
-	1.60.0
 )
 
 RUSTC_FULL_BOOTSTRAP_SEQUENCE=()
@@ -208,11 +207,6 @@
 	local next_version rustc_dir
 	for next_version in "${RUSTC_VERSION_SEQUENCE[@]}"; do
 		einfo "Building rustc-${next_version} using rustc-${prev_version}"
-		# This became necessary in Rust 1.61.0.
-		local static_libstdcpp='static-libstdcpp = false'
-		if [[ "${next_version}" < "1.61.0" ]]; then
-			static_libstdcpp=''
-		fi
 		rustc_dir="${WORKDIR}/rustc-${next_version}-src"
 		cd "${rustc_dir}" || die "Could not chdir to ${rustc_dir}"
 		cat > config.toml <<EOF
@@ -235,7 +229,6 @@
 [llvm]
 # For rust-bootstrap, we only need x86_64, which LLVM calls X86.
 targets = "X86"
-${static_libstdcpp}
 
 [target.x86_64-unknown-linux-gnu]
 cc = "${CC}"
diff --git a/dev-lang/rust-host/Manifest b/dev-lang/rust-host/Manifest
index 17cf2b6..7ce290b 100644
--- a/dev-lang/rust-host/Manifest
+++ b/dev-lang/rust-host/Manifest
@@ -1,3 +1 @@
-DIST rust-pgo-1.62.1-frontend.profdata.xz 8260824 BLAKE2B 3cc206fe6077798e95fad98b7b73d5b61f2055abb064a2fb06b6b94551ff0262f6944a2f3c004e62b932ea11d99124c673b97f1d5bc475ef23fe81917d7ab0f9 SHA512 f9a15fbd8f33f6eb855d9b86129d7da828af497e325430820849cb096bb14224c13dc277d87034c0250f467d729abb7568961f132a44bc1c956f0cd957d2a603
-DIST rust-pgo-1.62.1-llvm.profdata.xz 3292468 BLAKE2B ffcb0a485027d73886b62670b1764e15fe96fb4db4e61795011c4f8e85b01b418daacc9339ca5ed118254ce456669a7e6f0759c6ffa830f78c6c8a63bf013bbc SHA512 f440e3c0c44e6ecb97a6c27a595fd33c77aaefb8aea3ed64d33b2e2317f91445e1c09ca38a01328c2d80419b83821632f00ef514a43145b02c5592012b3445c9
-DIST rustc-1.62.1-src.tar.gz 202198995 BLAKE2B a347076a667b19d94146119cf134af29069bc63d9bac284e5c9e8c9d60f3e047c4ea58793f332ed6a7497cea1a97e6e74558744547d17581b6f7c07bb58ee893 SHA512 cbc8127145db1e3e6c3113fd3db44b500d9cac05e7a8b55cab63c6016d2de617c40786d77603b08c54a437f712f306a728cc1a7421de4c879ea4bb599e49d140
+DIST rustc-1.60.0-src.tar.gz 202376973 BLAKE2B 5e0f3aaab0ce87fc6068cdf1aa22f2e707cffe96584bc6d6bd75539c99aa39308d28e77efa5a32b2cfc7b595c0aa40ba4b3f860060f48ab4e79e9bfc85b77225 SHA512 ae626482287949eb73a5467245b8e21b7624713a29d4bbdf1c1e1232e10f5497ba3435427e08df4fd5d2277c456213e5d04529e841d50924a4211fdb8c6acfd0
diff --git a/dev-lang/rust-host/rust-host-1.60.0-r2.ebuild b/dev-lang/rust-host/rust-host-1.60.0-r2.ebuild
new file mode 120000
index 0000000..5d93486
--- /dev/null
+++ b/dev-lang/rust-host/rust-host-1.60.0-r2.ebuild
@@ -0,0 +1 @@
+rust-host-1.60.0.ebuild
\ No newline at end of file
diff --git a/dev-lang/rust-host/rust-host-1.62.1.ebuild b/dev-lang/rust-host/rust-host-1.60.0.ebuild
similarity index 87%
rename from dev-lang/rust-host/rust-host-1.62.1.ebuild
rename to dev-lang/rust-host/rust-host-1.60.0.ebuild
index 54ef76e..606f5ae 100644
--- a/dev-lang/rust-host/rust-host-1.62.1.ebuild
+++ b/dev-lang/rust-host/rust-host-1.60.0.ebuild
@@ -26,11 +26,8 @@
 	local tools="${obj}-tools/x86_64-unknown-linux-gnu/release/"
 	dobin "${obj}/bin/rustc" "${obj}/bin/rustdoc"
 	dobin "${tools}/cargo"
-	if ! use rust_profile_frontend_generate && ! use rust_profile_llvm_generate; then
-		# These won't be built for an instrumented build.
-		dobin "${tools}/rustfmt" "${tools}/cargo-fmt"
-		dobin "${tools}/clippy-driver" "${tools}/cargo-clippy"
-	fi
+	dobin "${tools}/rustfmt" "${tools}/cargo-fmt"
+	dobin "${tools}/clippy-driver" "${tools}/cargo-clippy"
 	dobin src/etc/rust-gdb src/etc/rust-lldb
 	insinto "/usr/$(get_libdir)"
 	doins -r "${obj}/lib/"*
diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 17cf2b6..7ce290b 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,3 +1 @@
-DIST rust-pgo-1.62.1-frontend.profdata.xz 8260824 BLAKE2B 3cc206fe6077798e95fad98b7b73d5b61f2055abb064a2fb06b6b94551ff0262f6944a2f3c004e62b932ea11d99124c673b97f1d5bc475ef23fe81917d7ab0f9 SHA512 f9a15fbd8f33f6eb855d9b86129d7da828af497e325430820849cb096bb14224c13dc277d87034c0250f467d729abb7568961f132a44bc1c956f0cd957d2a603
-DIST rust-pgo-1.62.1-llvm.profdata.xz 3292468 BLAKE2B ffcb0a485027d73886b62670b1764e15fe96fb4db4e61795011c4f8e85b01b418daacc9339ca5ed118254ce456669a7e6f0759c6ffa830f78c6c8a63bf013bbc SHA512 f440e3c0c44e6ecb97a6c27a595fd33c77aaefb8aea3ed64d33b2e2317f91445e1c09ca38a01328c2d80419b83821632f00ef514a43145b02c5592012b3445c9
-DIST rustc-1.62.1-src.tar.gz 202198995 BLAKE2B a347076a667b19d94146119cf134af29069bc63d9bac284e5c9e8c9d60f3e047c4ea58793f332ed6a7497cea1a97e6e74558744547d17581b6f7c07bb58ee893 SHA512 cbc8127145db1e3e6c3113fd3db44b500d9cac05e7a8b55cab63c6016d2de617c40786d77603b08c54a437f712f306a728cc1a7421de4c879ea4bb599e49d140
+DIST rustc-1.60.0-src.tar.gz 202376973 BLAKE2B 5e0f3aaab0ce87fc6068cdf1aa22f2e707cffe96584bc6d6bd75539c99aa39308d28e77efa5a32b2cfc7b595c0aa40ba4b3f860060f48ab4e79e9bfc85b77225 SHA512 ae626482287949eb73a5467245b8e21b7624713a29d4bbdf1c1e1232e10f5497ba3435427e08df4fd5d2277c456213e5d04529e841d50924a4211fdb8c6acfd0
diff --git a/dev-lang/rust/files/bisect-scripts/README.md b/dev-lang/rust/files/bisect-scripts/README.md
deleted file mode 100644
index 7a04a40..0000000
--- a/dev-lang/rust/files/bisect-scripts/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Rust Bisection
-
-It's sometimes necessary to bisect upstream Rust revisions in order to resolve
-problems we're seeing in ChromeOS. To this end, `cros-rustc.eclass` has built-in
-support for building arbitrary Rust sources. The scripts in this directory
-try to make use of that support in order to make bisection easier.
-
-## Quickstart
-
-NOTE: Rust bisection modifies `cros-rustc.eclass`. If you have local changes,
-please save them somehow before continuing.
-
-Setting up for Rust bisection is relatively straightforward:
-
-1. Enter the chroot.
-2. Run `./setup_rust_for_bisection.sh`.
-3. Modify `./run_bisection_step.sh` to reproduce the issue you're interested in.
-4. `cd your/path/to/dev-lang/rust/files/rust`.
-5. Run `git bisect start --first-parent`, being sure to provide old/new SHAs to
-   `git bisect`. `--first-parent` is highly recommended due to the structure of
-   some Rust merge commits; `git bisect` without `--first-parent` can end up
-   checking out a Clippy repository instead of `rustc` (see [first-parent
-   comments]), which is not what we want in general.
-6. Run `git bisect run /your/path/to/run_bisection_step.sh`.
-
-Wait for `git bisect` to discover where things started breaking.
-
-## How does bisection work?
-
-As referenced, `cros-rustc.eclass` has support for using an arbitrary Rust
-source directory. This support is intended for local debugging only, so the only
-way to access it is by modifying the eclass itself. Once this support is
-enabled, we clone a full Rust repository to `dev-lang/rust/files/rust`, which is
-where `cros-rustc.eclass` expects Rust sources to be located.
-`./setup_rust_for_bisection.sh` takes care of all of this.
-
-To prepare this checkout to be built by `emerge dev-lang/rust{,-host}`, we run
-`./clean_and_sync_rust_root.sh` to clean up any changes that've been made to the
-source tree, and ensure that all of Rust's submodules are synced appropriately,
-given the current HEAD of the main Rust checkout. Further, we run
-`./prepare_rust_for_offline_build.sh` to download the correct bootstrap
-compiler, and update all files in Rust's `vendor/` directory. These tools are
-**intentionally kept separate**, since it's expected that users may be
-interested in making changes to a clean source tree before we run `cargo
-vendor`.
-
-After all of the above setup is done, our Rust checkout at
-`dev-lang/rust/files/rust` can be successfully built offline, which is necessary
-to keep `emerge` happy. At this point, `emerge dev-lang/rust{,-host}` is run.
-This command installs the Rust version that was checked out by the user in
-`dev-lang/rust/files/rust`, rather than the version advertised by our Rust
-ebuild.
-
-Since the above establishes an environment where `emerge dev-lang/rust{,-host}`
-can build Rust at arbitrary commits of a Git repository, bisection proceeds as
-one might expect -- you simply run something that boils down to:
-
-```
-git -C dev-lang/rust/files/rust bisect run bash -c '
-  ../bisect-scripts/clean_and_sync_rust_root.sh || exit 128
-  ../bisect-scripts/prepare_rust_for_offline_build.sh || exit 128
-  # `git bisect run` needs the working tree to be sufficiently clean. If
-  # e.g., portage applied patches, those need to be unapplied in many cases for
-  # bisection to continue.
-  trap '../bisect-scripts/clean_and_sync_rust_root.sh || :' EXIT
-  emerge dev-lang/rust{,-host} || exit 125
-  ## Your test case goes here, setting $exit_status ##
-'
-```
-
-For convenience, `./run_bisection_step.sh` is available as a substitute for the
-`bash -c '...'` part of the above. It's written to be a stub that anyone can
-extend for their specific bisection needs; use of it is encouraged, since `git
-bisect run` has sharp corners when e.g., bisection setup commands unexpectedly
-fail.
-
-[first-parent comments]: https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/3733996/comments/e6e47a5d_41c282e8
diff --git a/dev-lang/rust/files/bisect-scripts/run_bisection_step.sh b/dev-lang/rust/files/bisect-scripts/run_bisection_step.sh
deleted file mode 100755
index 261b4c1..0000000
--- a/dev-lang/rust/files/bisect-scripts/run_bisection_step.sh
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2022 The ChromiumOS Authors.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Script intended to be hacked on by you and run by `git bisect run`, like so:
-# `git bisect run ./run_bisection_step.sh`.
-#
-# Note that `set -e` doesn't play well at all with `git bisect`, but letting
-# errors potentially pass silently seems really bad. We don't want to signal to
-# `git bisect` that a revision is new because we failed to `mktemp`.
-#
-# Hence, this script is structured so that you _must_ call one of
-# {bisect_new,bisect_old,bisect_skip} before this script exits. These functions
-# will all terminate the script immediately. If you do that, this script will
-# exit with the appropriate exit code. If not, it'll exit with a code that will
-# abort `git bisect`ion.
-
-# Internal details. Feel free to skip to the bottom of this script, which has
-# examples/commentary.
-BISECT_RESULT=abort
-
-# Make a temporary file for convenience, since it's likely the user will
-# need/want it for `grep`ing failing command output/etc.
-temp_file=
-
-cleanup() {
-	local exit_code=$?
-
-	if [[ -n "${temp_file:-}" ]]; then
-		rm -f "${temp_file}" || :
-	fi
-
-	local exit_code
-	case "${BISECT_RESULT}" in
-		abort )
-			echo "Internal error: script exited with code ${exit_code}." >&2
-			echo "Note: Users should call one of bisect_{old,new,skip} before exiting." >&2
-			exit 128
-			;;
-		old )
-			exit_code=0
-			;;
-		new )
-			exit_code=1
-			;;
-		skip )
-			exit_code=125
-			;;
-		* )
-			echo "Internal error: unknown BISECT_RESULT: ${BISECT_RESULT}" >&2
-			exit 128
-			;;
-	esac
-
-	# If we apply patches to Rust sources, we need to clean them up before
-	# returning control to `git bisect`. Otherwise, `git bisect`'s next
-	# `checkout` may fail due to modified files.
-	if ! "${my_dir}/clean_and_sync_rust_root.sh" >& /dev/null; then
-		echo "Failed cleaning/syncing Rust root; bisection might fail..." >&2
-		# Keep going anyway, knowing that at worst, `git bisect` will simply give up.
-	fi
-	exit "${exit_code}"
-}
-
-trap "cleanup" EXIT
-
-my_dir="$(dirname "$(readlink -m "$0")")"
-
-# Verify that cros-rust is set to build from "${FILESDIR}/rust" enabled. If
-# not, `git bisect` is unlikely to do anything of value.
-if ! grep -q '^CROS_RUSTC_BUILD_RAW_SOURCES=.' "${my_dir}/../../../../eclass/cros-rustc.eclass"; then
-	echo "It seems CROS_RUSTC_BUILD_RAW_SOURCES is unset. This is likely a mistake." >&2
-	exit 1
-fi
-
-# Running this from outside of the chroot is not supported.
-if [[ ! -e /etc/cros_chroot_version ]]; then
-  echo "It seems this script was invoked from outside of the chroot. This is unsupported." >&2
-  exit 1
-fi
-
-temp_file="$(mktemp)"
-
-bisect_old() { BISECT_RESULT=old; exit; }
-bisect_new() { BISECT_RESULT=new; exit; }
-bisect_skip() { BISECT_RESULT=skip; exit; }
-
-# Instruct dev-lang/rust to use ccache for LLVM builds. This saves considerable
-# time on incremental rebuilds.
-export FEATURES=ccache
-
-# Start by preparing our source directory. If any of these steps fail, we
-# want to abort bisection as a whole; something's gone very wrong.
-"${my_dir}/clean_and_sync_rust_root.sh"
-"${my_dir}/prepare_rust_for_offline_build.sh"
-
-# Now build Rust, skipping if this revision isn't buildable. Output is tee'd to
-# a temp file in case it's useful to you.
-#
-# If you want to check whether a build failed because patches failed to apply,
-# you can do something like:
-# ```
-# if sudo ebuild $(equery w dev-lang/rust-host) clean configure >& >(tee "${temp_file}"); then
-#   bisect_old
-# fi
-#
-# if grep -qF 'Applying Rust patches...' "${temp_file}" && ! grep -qF 'Rust patch application completed successfully' "${temp_file}"; then
-#   bisect_new
-# fi
-# bisect_skip
-# ```
-#
-# In general, it's recommended to `bisect_skip` on failed builds of Rust,
-# unless you're trying to troubleshoot something about the actual build of
-# dev-lang/rust{,-host}. ToT can always be red.
-sudo emerge dev-lang/rust{,-host} >& >(tee "${temp_file}") || bisect_skip
-
-# Put your test-case here. An example might be:
-# ```
-# setup_board --board=atlas || bisect_skip
-# emerge-atlas memd |& tee "${temp_file}"
-# if grep -q some-error "${temp_file}"; then
-#  bisect_new
-# else
-#  bisect_old
-# fi
-# ```
diff --git a/dev-lang/rust/files/bisect-scripts/setup_rust_for_bisection.sh b/dev-lang/rust/files/bisect-scripts/setup_rust_for_bisection.sh
deleted file mode 100755
index 61ea70c..0000000
--- a/dev-lang/rust/files/bisect-scripts/setup_rust_for_bisection.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash -eu
-# Copyright 2022 The ChromiumOS Authors.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-my_dir="$(dirname "$(readlink -m "$0")")"
-rust_dir="${my_dir}/../rust"
-
-if [[ -e "${rust_dir}/.git" ]]; then
-  echo "It seems that a Rust checkout at ${rust_dir} already exists. Skipping initial clone."
-else
-  # If any partially-formed (/empty) things are here, remove them.
-  rm -rf "${rust_dir}"
-  echo "Cloning a new Rust checkout at ${rust_dir} ..."
-  git clone https://github.com/rust-lang/rust "${rust_dir}"
-  git -C "${rust_dir}" submodule init
-fi
-
-echo "Cleaning + syncing Rust's root directory ..."
-(cd "${rust_dir}" && "${my_dir}/clean_and_sync_rust_root.sh")
-
-rust_eclass="${my_dir}/../../../../eclass/cros-rustc.eclass"
-if grep -q '^CROS_RUSTC_BUILD_RAW_SOURCES=$' "${rust_eclass}"; then
-  echo "Setting CROS_RUSTC_BUILD_RAW_SOURCES in ${rust_eclass} ..."
-  sed -i 's/^CROS_RUSTC_BUILD_RAW_SOURCES=$/\01/' "${rust_eclass}"
-else
-  echo "CROS_RUSTC_BUILD_RAW_SOURCES is already set in ${rust_eclass}"
-fi
diff --git a/dev-lang/rust/files/rust-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch b/dev-lang/rust/files/rust-1.60.0-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch
similarity index 92%
rename from dev-lang/rust/files/rust-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch
rename to dev-lang/rust/files/rust-1.60.0-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch
index 1aa9db1b..944bd76e 100644
--- a/dev-lang/rust/files/rust-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch
+++ b/dev-lang/rust/files/rust-1.60.0-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch
@@ -24,10 +24,10 @@
  [[package]]
  name = "cc"
 -version = "1.0.69"
-+version = "1.0.73"
++version = "1.0.72"
  source = "registry+https://github.com/rust-lang/crates.io-index"
 -checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2"
-+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
++checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
  dependencies = [
   "jobserver",
  ]
@@ -40,7 +40,7 @@
  num_cpus = "1.0"
  getopts = "0.2.19"
 -cc = "1.0.69"
-+cc = "1.0.73"
++cc = "1.0.72"
  libc = "0.2"
  serde = { version = "1.0.8", features = ["derive"] }
  serde_json = "1.0.2"
diff --git a/dev-lang/rust/files/rust-Don-t-build-std-for-uefi-targets.patch b/dev-lang/rust/files/rust-1.60.0-Don-t-build-std-for-uefi-targets.patch
similarity index 100%
rename from dev-lang/rust/files/rust-Don-t-build-std-for-uefi-targets.patch
rename to dev-lang/rust/files/rust-1.60.0-Don-t-build-std-for-uefi-targets.patch
diff --git a/dev-lang/rust/files/rust-Handle-sparse-git-repo-without-erroring.patch b/dev-lang/rust/files/rust-1.60.0-Handle-sparse-git-repo-without-erroring.patch
similarity index 100%
rename from dev-lang/rust/files/rust-Handle-sparse-git-repo-without-erroring.patch
rename to dev-lang/rust/files/rust-1.60.0-Handle-sparse-git-repo-without-erroring.patch
diff --git a/dev-lang/rust/files/rust-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch b/dev-lang/rust/files/rust-1.60.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
similarity index 100%
rename from dev-lang/rust/files/rust-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
rename to dev-lang/rust/files/rust-1.60.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
diff --git a/dev-lang/rust/files/rust-1.60.0-Revert-DebugInfo-Re-enable-instruction-referencing-f.patch b/dev-lang/rust/files/rust-1.60.0-Revert-DebugInfo-Re-enable-instruction-referencing-f.patch
new file mode 100644
index 0000000..bbc3974
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.60.0-Revert-DebugInfo-Re-enable-instruction-referencing-f.patch
@@ -0,0 +1,37 @@
+From fcfa6ac4ca21c9331f715ed2dc5f8feebef3754e Mon Sep 17 00:00:00 2001
+From: Michael Benfield <mbenfield@google.com>
+Date: Sat, 2 Jul 2022 20:18:01 +0000
+Subject: [PATCH] Revert "[DebugInfo] Re-enable instruction referencing for
+ x86_64"
+
+This reverts commit a03ffad5d34c6d1df14e25df17f18ea2fa437c0c.
+
+The above refers to a commit in the rust-lang clone of the llvm-project
+repository.
+
+See b/237879898.
+
+
+---
+ src/llvm-project/llvm/lib/CodeGen/LiveDebugValues/LiveDebugValues.cpp | 5 -----
+ 2 files changed, 0 insertions(+), 5 deletions(-)
+
+diff --git a/src/llvm-project/llvm/lib/CodeGen/LiveDebugValues/LiveDebugValues.cpp b/src/llvm-project/llvm/lib/CodeGen/LiveDebugValues/LiveDebugValues.cpp
+index 40770b15aa35..8f697611a82c 100644
+--- a/src/llvm-project/llvm/lib/CodeGen/LiveDebugValues/LiveDebugValues.cpp
++++ b/src/llvm-project/llvm/lib/CodeGen/LiveDebugValues/LiveDebugValues.cpp
+@@ -123,11 +123,6 @@ bool LiveDebugValues::runOnMachineFunction(MachineFunction &MF) {
+ }
+ 
+ bool llvm::debuginfoShouldUseDebugInstrRef(const Triple &T) {
+-  // Enable by default on x86_64, disable if explicitly turned off on cmdline.
+-  if (T.getArch() == llvm::Triple::x86_64 &&
+-      ValueTrackingVariableLocations != cl::boolOrDefault::BOU_FALSE)
+-    return true;
+-
+   // Enable if explicitly requested on command line.
+   return ValueTrackingVariableLocations == cl::boolOrDefault::BOU_TRUE;
+ }
+-- 
+2.37.0.rc0.161.g10f37bed90-goog
+
diff --git a/dev-lang/rust/files/rust-add-armv7a-sanitizers.patch b/dev-lang/rust/files/rust-1.60.0-add-armv7a-sanitizers.patch
similarity index 85%
rename from dev-lang/rust/files/rust-add-armv7a-sanitizers.patch
rename to dev-lang/rust/files/rust-1.60.0-add-armv7a-sanitizers.patch
index fd925c1..a4bfbb6 100644
--- a/dev-lang/rust/files/rust-add-armv7a-sanitizers.patch
+++ b/dev-lang/rust/files/rust-1.60.0-add-armv7a-sanitizers.patch
@@ -3,9 +3,9 @@
 --- a/compiler/rustc_target/src/spec/armv7a_cros_linux_gnueabihf.rs
 +++ b/compiler/rustc_target/src/spec/armv7a_cros_linux_gnueabihf.rs
 @@ -15,6 +15,11 @@ pub fn target() -> Target {
-             features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
+             features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
              max_atomic_width: Some(64),
-             mcount: "\u{1}__gnu_mcount_nc".into(),
+             mcount: "\u{1}__gnu_mcount_nc".to_string(),
 +            supported_sanitizers: crate::spec::SanitizerSet::ADDRESS
 +                | crate::spec::SanitizerSet::LEAK
 +                | crate::spec::SanitizerSet::MEMORY
diff --git a/dev-lang/rust/files/rust-add-cros-targets.patch b/dev-lang/rust/files/rust-1.60.0-add-cros-targets.patch
similarity index 82%
rename from dev-lang/rust/files/rust-add-cros-targets.patch
rename to dev-lang/rust/files/rust-1.60.0-add-cros-targets.patch
index d10680f..b4397ff 100644
--- a/dev-lang/rust/files/rust-add-cros-targets.patch
+++ b/dev-lang/rust/files/rust-1.60.0-add-cros-targets.patch
@@ -1,9 +1,9 @@
-From ccd659ec984c66f6f5e141b557ca612db424f388 Mon Sep 17 00:00:00 2001
+From b485b029e9c358516fb3483afc6d5374402d3862 Mon Sep 17 00:00:00 2001
 From: Michael Benfield <mbenfield@google.com>
-Date: Thu, 7 Jul 2022 19:49:25 +0000
-Subject: [PATCH] add-cros-targets
+Date: Fri, 12 Nov 2021 20:08:18 +0000
+Subject: [PATCH] applied
 
-Because of b/187783596, armv7 target triple's arch and ABI parts
+Because of crbug.com/711369, armv7 target triple's arch and ABI parts
 differ between chromeos and rust. Until that bug is fixed, we have to
 add our own triple for armv7.
 
@@ -16,10 +16,10 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
-index bd5b712c143..b5e2c403cc0 100644
+index 273221360b8..465a240d0bd 100644
 --- a/compiler/rustc_target/src/spec/mod.rs
 +++ b/compiler/rustc_target/src/spec/mod.rs
-@@ -810,6 +810,8 @@ fn $module() {
+@@ -740,6 +740,8 @@ fn $module() {
  supported_targets! {
      ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
      ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
@@ -27,8 +27,8 @@
 +    ("x86_64-cros-linux-gnu", x86_64_cros_linux_gnu),
      ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
      ("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
-     ("m68k-unknown-linux-gnu", m68k_unknown_linux_gnu),
-@@ -842,11 +844,13 @@ fn $module() {
+     ("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
+@@ -771,11 +773,13 @@ fn $module() {
      ("armv5te-unknown-linux-uclibceabi", armv5te_unknown_linux_uclibceabi),
      ("armv7-unknown-linux-gnueabi", armv7_unknown_linux_gnueabi),
      ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf),
@@ -43,5 +43,5 @@
      ("x86_64-unknown-linux-musl", x86_64_unknown_linux_musl),
      ("i686-unknown-linux-musl", i686_unknown_linux_musl),
 -- 
-2.37.0.rc0.161.g10f37bed90-goog
+2.31.0
 
diff --git a/dev-lang/rust/files/rust-cc.patch b/dev-lang/rust/files/rust-1.60.0-cc.patch
similarity index 100%
rename from dev-lang/rust/files/rust-cc.patch
rename to dev-lang/rust/files/rust-1.60.0-cc.patch
diff --git a/dev-lang/rust/files/rust-disable-mutable-noalias.patch b/dev-lang/rust/files/rust-1.60.0-disable-mutable-noalias.patch
similarity index 100%
rename from dev-lang/rust/files/rust-disable-mutable-noalias.patch
rename to dev-lang/rust/files/rust-1.60.0-disable-mutable-noalias.patch
diff --git a/dev-lang/rust/files/rust-1.60.0-fix-libunwind-backtrace-visibility.patch b/dev-lang/rust/files/rust-1.60.0-fix-libunwind-backtrace-visibility.patch
new file mode 100644
index 0000000..d5baff2
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.60.0-fix-libunwind-backtrace-visibility.patch
@@ -0,0 +1,13 @@
+A backport of https://github.com/rust-lang/rust/pull/93350 from rust.
+This was merged upstream as 1ca8d0bf8c154b0f602fadac8c38f14df5dea77a.
+
+--- a/library/unwind/src/libunwind.rs
++++ b/library/unwind/src/libunwind.rs
+@@ -246,6 +246,7 @@ if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
+     extern "C-unwind" {
+         pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+     }
++    #[link(name = "unwind", kind = "static", modifiers = "-bundle")]
+     extern "C" {
+         pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
+                                  trace_argument: *mut c_void)
diff --git a/dev-lang/rust/files/rust-fix-rpath.patch b/dev-lang/rust/files/rust-1.60.0-fix-rpath.patch
similarity index 100%
rename from dev-lang/rust/files/rust-fix-rpath.patch
rename to dev-lang/rust/files/rust-1.60.0-fix-rpath.patch
diff --git a/dev-lang/rust/files/rust-ld-argv0.patch b/dev-lang/rust/files/rust-1.60.0-ld-argv0.patch
similarity index 100%
rename from dev-lang/rust/files/rust-ld-argv0.patch
rename to dev-lang/rust/files/rust-1.60.0-ld-argv0.patch
diff --git a/dev-lang/rust/files/rust-no-test-on-build.patch b/dev-lang/rust/files/rust-1.60.0-no-test-on-build.patch
similarity index 100%
rename from dev-lang/rust/files/rust-no-test-on-build.patch
rename to dev-lang/rust/files/rust-1.60.0-no-test-on-build.patch
diff --git a/dev-lang/rust/files/rust-passes-only-in-pre-link.patch b/dev-lang/rust/files/rust-1.60.0-passes-only-in-pre-link.patch
similarity index 100%
rename from dev-lang/rust/files/rust-passes-only-in-pre-link.patch
rename to dev-lang/rust/files/rust-1.60.0-passes-only-in-pre-link.patch
diff --git a/dev-lang/rust/files/rust-revert-libunwind-build.patch b/dev-lang/rust/files/rust-1.60.0-revert-libunwind-build.patch
similarity index 100%
rename from dev-lang/rust/files/rust-revert-libunwind-build.patch
rename to dev-lang/rust/files/rust-1.60.0-revert-libunwind-build.patch
diff --git a/dev-lang/rust/files/rust-sanitizer-supported.patch b/dev-lang/rust/files/rust-1.60.0-sanitizer-supported.patch
similarity index 100%
rename from dev-lang/rust/files/rust-sanitizer-supported.patch
rename to dev-lang/rust/files/rust-1.60.0-sanitizer-supported.patch
diff --git a/dev-lang/rust/rust-1.60.0-r2.ebuild b/dev-lang/rust/rust-1.60.0-r2.ebuild
new file mode 120000
index 0000000..02c7ed5
--- /dev/null
+++ b/dev-lang/rust/rust-1.60.0-r2.ebuild
@@ -0,0 +1 @@
+rust-1.60.0.ebuild
\ No newline at end of file
diff --git a/dev-lang/rust/rust-1.62.1.ebuild b/dev-lang/rust/rust-1.60.0.ebuild
similarity index 100%
rename from dev-lang/rust/rust-1.62.1.ebuild
rename to dev-lang/rust/rust-1.60.0.ebuild
diff --git a/eclass/cros-rust.eclass b/eclass/cros-rust.eclass
index b540c8d..0c72e21 100644
--- a/eclass/cros-rust.eclass
+++ b/eclass/cros-rust.eclass
@@ -495,11 +495,6 @@
 
 	if use fuzzer; then
 		rustflags+=(
-			# We can get segfaults unless we turn this off; see
-			# https://github.com/rust-lang/rust/issues/99886
-			# Presumably we can remove this once that bug is
-			# resolved.
-			-Cllvm-args=-experimental-debug-variable-locations=0
 			--cfg fuzzing
 			-Cpasses=sancov-module
 			-Cllvm-args=-sanitizer-coverage-level=4
@@ -820,13 +815,6 @@
 	local name="${1:-${CROS_RUST_CRATE_NAME}}"
 	local version="${2:-${default_version}}"
 
-	# Cargo.toml.orig is now reserved by `cargo package`.
-	if [[ -e Cargo.toml.orig ]]; then
-		# Don't try to delete it if it isn't present, because that can
-		# be a permission error in the Portage sandbox.
-		rm -f Cargo.toml.orig || die
-	fi
-
 	# Create the .crate file.
 	ecargo package --allow-dirty --no-metadata --no-verify --offline || die
 
diff --git a/eclass/cros-rustc.eclass b/eclass/cros-rustc.eclass
index 6249c95..48843de 100644
--- a/eclass/cros-rustc.eclass
+++ b/eclass/cros-rustc.eclass
@@ -45,59 +45,6 @@
 PYTHON_COMPAT=( python3_{6..9} )
 inherit python-any-r1 toolchain-funcs
 
-# It's intended that only a person upgrading the Rust version used in ChromeOS
-# needs to worry about these flags.
-#
-# These flags control whether to build a compiler that will generate PGO
-# profiles, or build a compiler using PGO profiles obtained locally, or build a
-# compiler using PGO profiles obtained from gs (the default).
-#
-# rust_profile_frontend_generate causes the Rust compiler to be built
-# with instrumentation in the frontend code for generating PGO profiles,
-# which will be stored in "${CROS_RUSTC_PGO_LOCAL_BASE}/frontend-profraw"
-#
-# rust_profile_llvm_generate causes the Rust compiler to be built
-# with instrumentation in the LLVM code for generating PGO profiles,
-# which will be stored in "${CROS_RUSTC_PGO_LOCAL_BASE}/llvm-profraw"
-#
-# The two *_generate flags cannot be used together; the implementation here
-# asserts against this possibility. Currently if we try to instrument both
-# components at once, we get an error about different profiler versions. Maybe
-# this can be changed when Rust uses the same LLVM as sys-devel/llvm.
-#
-# rust_profile_frontend_use will cause a frontend profdata file to be
-# downloaded from
-# "gs://chromeos-localmirror/distfiles/rust-pgo-${PV}-frontend.profdata.xz" and
-# used for PGO optimization.
-#
-# rust_profile_frontend_use_local will instead use a frontend profdata file at
-# ${FILESDIR}/frontend.profdata
-#
-# rust_profile_llvm_use will cause an llvm profdata file to be downloaded from
-# "gs://chromeos-localmirror/distfiles/rust-pgo-${PV}-llvm.profdata.xz" and
-# used for PGO optimization.
-#
-# rust_profile_llvm_use_local will instead use a llvm profdata file at
-# ${FILESDIR}/llvm.profdata
-IUSE='rust_profile_frontend_generate rust_profile_llvm_generate rust_profile_frontend_use_local rust_profile_llvm_use_local +rust_profile_frontend_use +rust_profile_llvm_use'
-
-REQUIRED_USE="
-	rust_profile_frontend_generate? (
-		!rust_profile_frontend_use
-		!rust_profile_frontend_use_local
-		!rust_profile_llvm_use
-		!rust_profile_llvm_use_local
-	)
-	rust_profile_llvm_generate? (
-		!rust_profile_frontend_use
-		!rust_profile_frontend_use_local
-		!rust_profile_llvm_use
-		!rust_profile_llvm_use_local
-	)
-	rust_profile_llvm_use? ( !rust_profile_llvm_use_local )
-	rust_profile_frontend_use? ( !rust_profile_frontend_use_local )
-"
-
 # @ECLASS-VARIABLE: RUSTC_TARGET_TRIPLES
 # @DEFAULT_UNSET
 # @REQUIRED
@@ -148,7 +95,7 @@
 # The version of rust-bootstrap that we're using to build our current Rust
 # toolchain. This is generally the version released prior to the current one,
 # since Rust uses the beta compiler to build the nightly compiler.
-BOOTSTRAP_VERSION="1.61.0"
+BOOTSTRAP_VERSION="1.59.0"
 
 # If `CROS_RUSTC_BUILD_RAW_SOURCES` is nonempty, a full Rust source tree is
 # expected to be available here.
@@ -157,15 +104,8 @@
 HOMEPAGE="https://www.rust-lang.org/"
 
 if [[ -z "${CROS_RUSTC_BUILD_RAW_SOURCES}" ]]; then
-	SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.gz
-		rust_profile_frontend_use? ( gs://chromeos-localmirror/distfiles/rust-pgo-${PV}-frontend.profdata.xz )
-		rust_profile_llvm_use? ( gs://chromeos-localmirror/distfiles/rust-pgo-${PV}-llvm.profdata.xz )
-	"
+	SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.gz"
 else
-	SRC_URI="
-		rust_profile_frontend_use? ( gs://chromeos-localmirror/distfiles/rust-pgo-${PV}-frontend.profdata.xz )
-		rust_profile_llvm_use? ( gs://chromeos-localmirror/distfiles/rust-pgo-${PV}-llvm.profdata.xz )
-	"
 	# If a bisection is happening, we use the bootstrap compiler that upstream prefers.
 	# Clear this so we don't accidentally use it below.
 	BOOTSTRAP_VERSION=
@@ -185,20 +125,22 @@
 fi
 
 PATCHES=(
-	"${FILESDIR}/rust-add-cros-targets.patch"
-	"${FILESDIR}/rust-fix-rpath.patch"
-	"${FILESDIR}/rust-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch"
-	"${FILESDIR}/rust-no-test-on-build.patch"
-	"${FILESDIR}/rust-sanitizer-supported.patch"
-	"${FILESDIR}/rust-cc.patch"
-	"${FILESDIR}/rust-revert-libunwind-build.patch"
-	"${FILESDIR}/rust-ld-argv0.patch"
-	"${FILESDIR}/rust-Handle-sparse-git-repo-without-erroring.patch"
-	"${FILESDIR}/rust-disable-mutable-noalias.patch"
-	"${FILESDIR}/rust-add-armv7a-sanitizers.patch"
-	"${FILESDIR}/rust-passes-only-in-pre-link.patch"
-	"${FILESDIR}/rust-Don-t-build-std-for-uefi-targets.patch"
-	"${FILESDIR}/rust-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch"
+	"${FILESDIR}/rust-${PV}-add-cros-targets.patch"
+	"${FILESDIR}/rust-${PV}-fix-rpath.patch"
+	"${FILESDIR}/rust-${PV}-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch"
+	"${FILESDIR}/rust-${PV}-no-test-on-build.patch"
+	"${FILESDIR}/rust-${PV}-sanitizer-supported.patch"
+	"${FILESDIR}/rust-${PV}-cc.patch"
+	"${FILESDIR}/rust-${PV}-revert-libunwind-build.patch"
+	"${FILESDIR}/rust-${PV}-ld-argv0.patch"
+	"${FILESDIR}/rust-${PV}-Handle-sparse-git-repo-without-erroring.patch"
+	"${FILESDIR}/rust-${PV}-disable-mutable-noalias.patch"
+	"${FILESDIR}/rust-${PV}-add-armv7a-sanitizers.patch"
+	"${FILESDIR}/rust-${PV}-fix-libunwind-backtrace-visibility.patch"
+	"${FILESDIR}/rust-${PV}-passes-only-in-pre-link.patch"
+	"${FILESDIR}/rust-${PV}-Revert-DebugInfo-Re-enable-instruction-referencing-f.patch"
+	"${FILESDIR}/rust-${PV}-Don-t-build-std-for-uefi-targets.patch"
+	"${FILESDIR}/rust-${PV}-Bump-cc-version-in-bootstrap-to-fix-build-of-uefi-ta.patch"
 )
 
 # Locations where we cache our build/src dirs.
@@ -211,8 +153,6 @@
 _CROS_RUSTC_PREPARED_STAMP="${CROS_RUSTC_SRC_DIR}/cros-rust-prepared"
 _CROS_RUSTC_STAGE1_EXISTS_STAMP="${CROS_RUSTC_BUILD_DIR}/cros-rust-has-stage1-build"
 
-CROS_RUSTC_PGO_LOCAL_BASE='/tmp/rust-pgo'
-
 # @FUNCTION: cros-rustc_has_existing_checkout
 # @DESCRIPTION:
 # Tests whether we have a properly src_prepare'd checkout in ${CROS_RUSTC_DIR}.
@@ -299,7 +239,6 @@
 		cp -avu "${_CROS_RUSTC_RAW_SOURCES_ROOT}/build/cache" "${CROS_RUSTC_BUILD_DIR}" || die
 	fi
 
-	einfo "Applying Rust patches..."
 	# Copy "unknown" vendor targets to create cros_sdk target triple
 	# variants as referred to in 0001-add-cros-targets.patch and
 	# RUSTC_TARGET_TRIPLES. armv7a is treated specially because the cros
@@ -340,7 +279,6 @@
 	default
 
 	touch "${_CROS_RUSTC_PREPARED_STAMP}"
-	einfo "Rust patch application completed successfully."
 }
 
 cros-rustc_src_configure() {
@@ -362,133 +300,56 @@
 	done
 
 	local bootstrap_compiler_info
-	local llvm_options
-	local rust_options
-	local tools
-	local description
-
 	if [[ -z "${CROS_RUSTC_BUILD_RAW_SOURCES}" ]]; then
-		read -r -d '' bootstrap_compiler_info <<- EOF
-			cargo = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/cargo"
-			rustc = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/rustc"
-		EOF
-	fi
-
-	read -r -d '' tools <<- EOF
-		tools = ["cargo", "rustfmt", "clippy", "cargofmt"]
-	EOF
-
-	if use rust_profile_llvm_generate || use rust_profile_frontend_generate; then
-		ewarn 'This build is instrumented; please only use it to generate profiles.'
-		read -r -d '' tools <<- EOF
-			# This is an instrumented build, only meant to generate profiles, so we don't need the other tools.
-			tools = ["cargo"]
-		EOF
-
-		read -r -d '' description <<- EOF
-			description = "${PF} (instrumented build; don't use except to generate profiles)"
-		EOF
-	fi
-
-	local llvm_use_pgo_file="${CROS_RUSTC_SRC_DIR}/rust-pgo-${PV}-llvm.profdata"
-	local frontend_use_pgo_file="${CROS_RUSTC_SRC_DIR}/rust-pgo-${PV}-frontend.profdata"
-	if use rust_profile_llvm_use_local; then
-		llvm_use_pgo_file="${FILESDIR}/llvm.profdata"
-	fi
-
-	if use rust_profile_frontend_use_local; then
-		frontend_use_pgo_file="${FILESDIR}/frontend.profdata"
-	fi
-
-	# Either of the instrumented builds will apparently build an instrumented
-	# stage 1 compiler, and then use it to build an instrumented stage 2 compiler.
-	if use rust_profile_llvm_generate; then
-		read -r -d '' llvm_options <<- EOF
-			# Without the -vp-counters-per-site option, we get
-			# LLVM Profile Warning: Unable to track new values: Running out of static counters.
-			# Alternatively we could use -vp-static-alloc=false.
-			# The advantage of using one over the other is unclear.
-			cflags = "-fprofile-generate=${CROS_RUSTC_PGO_LOCAL_BASE}/llvm-profraw -mllvm -vp-counters-per-site=2"
-			cxxflags = "-fprofile-generate=${CROS_RUSTC_PGO_LOCAL_BASE}/llvm-profraw -mllvm -vp-counters-per-site=2"
-			link-shared = true
-		EOF
-	fi
-
-	if use rust_profile_frontend_generate; then
-		read -r -d '' llvm_options <<- EOF
-			# Without the -vp-counters-per-site option, we get
-			# LLVM Profile Warning: Unable to track new values: Running out of static counters.
-			# Alternatively we could use -vp-static-alloc=false.
-			cflags = "-mllvm -vp-counters-per-site=2"
-			cxxflags = "-mllvm -vp-counters-per-site=2"
-		EOF
-		read -r -d '' rust_options <<- EOF
-			profile-generate = "${CROS_RUSTC_PGO_LOCAL_BASE}/frontend-profraw"
-		EOF
-	fi
-
-	if use rust_profile_llvm_use || use rust_profile_llvm_use_local; then
-		[[ -f "${llvm_use_pgo_file}" ]] || die "No LLVM profdata file"
-		read -r -d '' llvm_options <<- EOF
-			cflags = "-fprofile-use=${llvm_use_pgo_file}"
-			cxxflags = "-fprofile-use=${llvm_use_pgo_file}"
-		EOF
-	fi
-
-	if use rust_profile_frontend_use || use rust_profile_frontend_use_local; then
-		[[ -f "${frontend_use_pgo_file}" ]] || die "No frontend profdata file"
-		read -r -d '' rust_options <<- EOF
-			profile-use = "${frontend_use_pgo_file}"
-		EOF
+		bootstrap_compiler_info="
+cargo = \"/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/cargo\"
+rustc = \"/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/rustc\""
 	fi
 
 	local config=cros-config.toml
-	cat > "${config}" <<- EOF
-		[build]
-		target = [${targets}]
-		docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		vendor = true
-		extended = true
-		${tools}
-		sanitizers = true
-		profiler = true
-		build-dir = "${CROS_RUSTC_BUILD_DIR}"
-		${bootstrap_compiler_info}
+	cat > "${config}" <<EOF
+[build]
+target = [${targets}]
+docs = false
+submodules = false
+python = "${EPYTHON}"
+vendor = true
+extended = true
+tools = ["cargo", "rustfmt", "clippy", "cargofmt"]
+sanitizers = true
+profiler = true
+build-dir = "${CROS_RUSTC_BUILD_DIR}"
+${bootstrap_compiler_info}
 
-		[llvm]
-		ccache = ${use_ccache}
-		ninja = true
-		targets = "AArch64;ARM;X86"
-		static-libstdcpp = false
-		${llvm_options}
+[llvm]
+ccache = ${use_ccache}
+ninja = true
+targets = "AArch64;ARM;X86"
 
-		[install]
-		prefix = "${ED}usr"
-		libdir = "$(get_libdir)"
-		mandir = "share/man"
+[install]
+prefix = "${ED}usr"
+libdir = "$(get_libdir)"
+mandir = "share/man"
 
-		[rust]
-		default-linker = "${CBUILD}-clang"
-		${description}
-		channel = "nightly"
-		codegen-units = 0
-		llvm-libunwind = 'in-tree'
-		codegen-tests = false
-		new-symbol-mangling = true
-		${rust_options}
+[rust]
+default-linker = "${CBUILD}-clang"
+description = "${PF}"
+channel = "nightly"
+codegen-units = 0
+llvm-libunwind = 'in-tree'
+codegen-tests = false
+new-symbol-mangling = true
 
-	EOF
+EOF
 
 	for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
-		cat >> "${config}" <<- EOF
-			[target."${tt}"]
-			cc = "${tt}-clang"
-			cxx = "${tt}-clang++"
-			linker = "${tt}-clang++"
+		cat >> "${config}" <<EOF
+[target."${tt}"]
+cc = "${tt}-clang"
+cxx = "${tt}-clang++"
+linker = "${tt}-clang++"
 
-		EOF
+EOF
 	done
 }
 
diff --git a/virtual/rust/rust-1.62.1.ebuild b/virtual/rust/rust-1.60.0-r2.ebuild
similarity index 100%
rename from virtual/rust/rust-1.62.1.ebuild
rename to virtual/rust/rust-1.60.0-r2.ebuild