Snap for 11400057 from 2c53a38ece51ba0bf3be734f174afd72b7dda685 to simpleperf-release

Change-Id: If2f5846e7a4834c280d9bfcfa470fba4d3d46078
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 40cce12..325b601 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,6 +1,6 @@
 {
   "git": {
-    "sha1": "5e3693a350f96244151081d2c030208cd15f9572"
+    "sha1": "de1a0fd64a1bcae9a1534ed4da1699632993cc26"
   },
   "path_in_vcs": "futures-task"
 }
\ No newline at end of file
diff --git a/Android.bp b/Android.bp
index 9d860b0..0bb3190 100644
--- a/Android.bp
+++ b/Android.bp
@@ -42,7 +42,7 @@
     host_supported: true,
     crate_name: "futures_task",
     cargo_env_compat: true,
-    cargo_pkg_version: "0.3.26",
+    cargo_pkg_version: "0.3.30",
     srcs: ["src/lib.rs"],
     test_suites: ["general-tests"],
     auto_gen_config: true,
@@ -62,7 +62,7 @@
     host_supported: true,
     crate_name: "futures_task",
     cargo_env_compat: true,
-    cargo_pkg_version: "0.3.26",
+    cargo_pkg_version: "0.3.30",
     srcs: ["src/lib.rs"],
     edition: "2018",
     features: [
diff --git a/Cargo.toml b/Cargo.toml
index 27a63b0..5208584 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,9 +11,9 @@
 
 [package]
 edition = "2018"
-rust-version = "1.45"
+rust-version = "1.56"
 name = "futures-task"
-version = "0.3.26"
+version = "0.3.30"
 description = """
 Tools for working with tasks.
 """
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 4c2d1df..4116a31 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,8 +1,8 @@
 [package]
 name = "futures-task"
-version = "0.3.26"
+version = "0.3.30"
 edition = "2018"
-rust-version = "1.45"
+rust-version = "1.56"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang/futures-rs"
 homepage = "https://rust-lang.github.io/futures-rs"
diff --git a/METADATA b/METADATA
index 4068190..129b19a 100644
--- a/METADATA
+++ b/METADATA
@@ -1,23 +1,20 @@
 # This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/futures-task
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
+# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-task
+# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
 
 name: "futures-task"
 description: "Tools for working with tasks."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/futures-task"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/futures-task/futures-task-0.3.26.crate"
-  }
-  version: "0.3.26"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2023
+    year: 2024
     month: 2
-    day: 15
+    day: 1
+  }
+  homepage: "https://crates.io/crates/futures-task"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/futures-task/futures-task-0.3.30.crate"
+    version: "0.3.30"
   }
 }
diff --git a/README.md b/README.md
index 8ceeba9..1ebec2d 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
 futures-task = "0.3"
 ```
 
-The current `futures-task` requires Rust 1.45 or later.
+The current `futures-task` requires Rust 1.56 or later.
 
 ## License
 
diff --git a/build.rs b/build.rs
deleted file mode 100644
index 05e0496..0000000
--- a/build.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// The rustc-cfg listed below are considered public API, but it is *unstable*
-// and outside of the normal semver guarantees:
-//
-// - `futures_no_atomic_cas`
-//      Assume the target does *not* support atomic CAS operations.
-//      This is usually detected automatically by the build script, but you may
-//      need to enable it manually when building for custom targets or using
-//      non-cargo build systems that don't run the build script.
-//
-// With the exceptions mentioned above, the rustc-cfg emitted by the build
-// script are *not* public API.
-
-#![warn(rust_2018_idioms, single_use_lifetimes)]
-
-use std::env;
-
-include!("no_atomic_cas.rs");
-
-fn main() {
-    let target = match env::var("TARGET") {
-        Ok(target) => target,
-        Err(e) => {
-            println!(
-                "cargo:warning={}: unable to get TARGET environment variable: {}",
-                env!("CARGO_PKG_NAME"),
-                e
-            );
-            return;
-        }
-    };
-
-    // Note that this is `no_*`, not `has_*`. This allows treating
-    // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't
-    // run. This is needed for compatibility with non-cargo build systems that
-    // don't run the build script.
-    if NO_ATOMIC_CAS.contains(&&*target) {
-        println!("cargo:rustc-cfg=futures_no_atomic_cas");
-    }
-
-    println!("cargo:rerun-if-changed=no_atomic_cas.rs");
-}
diff --git a/no_atomic_cas.rs b/no_atomic_cas.rs
deleted file mode 100644
index 16ec628..0000000
--- a/no_atomic_cas.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is @generated by no_atomic_cas.sh.
-// It is not intended for manual editing.
-
-const NO_ATOMIC_CAS: &[&str] = &[
-    "armv4t-none-eabi",
-    "armv5te-none-eabi",
-    "avr-unknown-gnu-atmega328",
-    "bpfeb-unknown-none",
-    "bpfel-unknown-none",
-    "msp430-none-elf",
-    "riscv32i-unknown-none-elf",
-    "riscv32im-unknown-none-elf",
-    "riscv32imc-unknown-none-elf",
-    "thumbv4t-none-eabi",
-    "thumbv5te-none-eabi",
-    "thumbv6m-none-eabi",
-];
diff --git a/src/lib.rs b/src/lib.rs
index c724607..33896d8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -18,24 +18,24 @@
 mod spawn;
 pub use crate::spawn::{LocalSpawn, Spawn, SpawnError};
 
-#[cfg(not(futures_no_atomic_cas))]
+#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
 #[cfg(feature = "alloc")]
 mod arc_wake;
-#[cfg(not(futures_no_atomic_cas))]
+#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
 #[cfg(feature = "alloc")]
 pub use crate::arc_wake::ArcWake;
 
-#[cfg(not(futures_no_atomic_cas))]
+#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
 #[cfg(feature = "alloc")]
 mod waker;
-#[cfg(not(futures_no_atomic_cas))]
+#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
 #[cfg(feature = "alloc")]
 pub use crate::waker::waker;
 
-#[cfg(not(futures_no_atomic_cas))]
+#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
 #[cfg(feature = "alloc")]
 mod waker_ref;
-#[cfg(not(futures_no_atomic_cas))]
+#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
 #[cfg(feature = "alloc")]
 pub use crate::waker_ref::{waker_ref, WakerRef};
 
diff --git a/src/spawn.rs b/src/spawn.rs
index f4e6339..4a9a45a 100644
--- a/src/spawn.rs
+++ b/src/spawn.rs
@@ -168,7 +168,7 @@
         }
     }
 
-    #[cfg(not(futures_no_atomic_cas))]
+    #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
     impl<Sp: ?Sized + Spawn> Spawn for alloc::sync::Arc<Sp> {
         fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {
             (**self).spawn_obj(future)
@@ -179,7 +179,7 @@
         }
     }
 
-    #[cfg(not(futures_no_atomic_cas))]
+    #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
     impl<Sp: ?Sized + LocalSpawn> LocalSpawn for alloc::sync::Arc<Sp> {
         fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError> {
             (**self).spawn_local_obj(future)