diff --git a/Cargo.lock b/Cargo.lock
index 41c149c11d41f1fe850242c862529feba981a670..9ae6624525393b4d2cb9fc965f17afaa92de3acf 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -14847,7 +14847,7 @@ dependencies = [
  "pallet-utility 28.0.0",
  "parity-scale-codec",
  "paste",
- "polkavm 0.17.0",
+ "polkavm 0.18.0",
  "pretty_assertions",
  "rlp 0.6.1",
  "scale-info",
@@ -14935,7 +14935,7 @@ name = "pallet-revive-fixtures"
 version = "0.1.0"
 dependencies = [
  "anyhow",
- "polkavm-linker 0.17.1",
+ "polkavm-linker 0.18.0",
  "sp-core 28.0.0",
  "sp-io 30.0.0",
  "toml 0.8.12",
@@ -15049,7 +15049,7 @@ dependencies = [
  "bitflags 1.3.2",
  "parity-scale-codec",
  "paste",
- "polkavm-derive 0.17.0",
+ "polkavm-derive 0.18.0",
  "scale-info",
 ]
 
@@ -19892,19 +19892,6 @@ dependencies = [
  "polkavm-linux-raw 0.10.0",
 ]
 
-[[package]]
-name = "polkavm"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84979be196ba2855f73616413e7b1d18258128aa396b3dc23f520a00a807720e"
-dependencies = [
- "libc",
- "log",
- "polkavm-assembler 0.17.0",
- "polkavm-common 0.17.0",
- "polkavm-linux-raw 0.17.0",
-]
-
 [[package]]
 name = "polkavm"
 version = "0.18.0"
@@ -19936,15 +19923,6 @@ dependencies = [
  "log",
 ]
 
-[[package]]
-name = "polkavm-assembler"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ba7b434ff630b0f73a1560e8baea807246ca22098abe49f97821e0e2d2accc4"
-dependencies = [
- "log",
-]
-
 [[package]]
 name = "polkavm-assembler"
 version = "0.18.0"
@@ -19979,16 +19957,6 @@ dependencies = [
  "polkavm-assembler 0.10.0",
 ]
 
-[[package]]
-name = "polkavm-common"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f0dbafef4ab6ceecb4982ac3b550df430ef4f9fdbf07c108b7d4f91a0682fce"
-dependencies = [
- "log",
- "polkavm-assembler 0.17.0",
-]
-
 [[package]]
 name = "polkavm-common"
 version = "0.18.0"
@@ -20026,15 +19994,6 @@ dependencies = [
  "polkavm-derive-impl-macro 0.10.0",
 ]
 
-[[package]]
-name = "polkavm-derive"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0c3dbb6c8c7bd3e5f5b05aa7fc9355acf14df7ce5d392911e77d01090a38d0d"
-dependencies = [
- "polkavm-derive-impl-macro 0.17.0",
-]
-
 [[package]]
 name = "polkavm-derive"
 version = "0.18.0"
@@ -20080,18 +20039,6 @@ dependencies = [
  "syn 2.0.87",
 ]
 
-[[package]]
-name = "polkavm-derive-impl"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42565aed4adbc4034612d0b17dea8db3681fb1bd1aed040d6edc5455a9f478a1"
-dependencies = [
- "polkavm-common 0.17.0",
- "proc-macro2 1.0.86",
- "quote 1.0.37",
- "syn 2.0.87",
-]
-
 [[package]]
 name = "polkavm-derive-impl"
 version = "0.18.0"
@@ -20134,16 +20081,6 @@ dependencies = [
  "syn 2.0.87",
 ]
 
-[[package]]
-name = "polkavm-derive-impl-macro"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86d9838e95241b0bce4fe269cdd4af96464160505840ed5a8ac8536119ba19e2"
-dependencies = [
- "polkavm-derive-impl 0.17.0",
- "syn 2.0.87",
-]
-
 [[package]]
 name = "polkavm-derive-impl-macro"
 version = "0.18.0"
@@ -20184,22 +20121,6 @@ dependencies = [
  "rustc-demangle",
 ]
 
-[[package]]
-name = "polkavm-linker"
-version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0422ead3030d5cde69e2206dbc7d65da872b121876507cd5363f6c6e6aa45157"
-dependencies = [
- "dirs",
- "gimli 0.31.1",
- "hashbrown 0.14.5",
- "log",
- "object 0.36.1",
- "polkavm-common 0.17.0",
- "regalloc2 0.9.3",
- "rustc-demangle",
-]
-
 [[package]]
 name = "polkavm-linker"
 version = "0.18.0"
@@ -20228,12 +20149,6 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126"
 
-[[package]]
-name = "polkavm-linux-raw"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e64c3d93a58ffbc3099d1227f0da9675a025a9ea6c917038f266920c1de1e568"
-
 [[package]]
 name = "polkavm-linux-raw"
 version = "0.18.0"
diff --git a/prdoc/pr_6937.prdoc b/prdoc/pr_6937.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..5c6806df0b5c04ef537313bb5185283a386f0bcf
--- /dev/null
+++ b/prdoc/pr_6937.prdoc
@@ -0,0 +1,12 @@
+title: '[pallet-revive] bump polkavm to 0.18'
+doc:
+- audience: Runtime Dev
+  description: Update to the latest polkavm version, containing a linker fix I need
+    for revive.
+crates:
+- name: pallet-revive
+  bump: patch
+- name: pallet-revive-fixtures
+  bump: patch
+- name: pallet-revive-uapi
+  bump: patch
diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml
index 6e244ad4d652d403b2b61f0fd614db9d9c0b52e6..5d2bfb4f795ebfb21ba88447e5776fd918c75ec4 100644
--- a/substrate/frame/revive/Cargo.toml
+++ b/substrate/frame/revive/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
 [dependencies]
 environmental = { workspace = true }
 paste = { workspace = true }
-polkavm = { version = "0.17.0", default-features = false }
+polkavm = { version = "0.18.0", default-features = false }
 codec = { features = ["derive", "max-encoded-len"], workspace = true }
 scale-info = { features = ["derive"], workspace = true }
 log = { workspace = true }
diff --git a/substrate/frame/revive/fixtures/Cargo.toml b/substrate/frame/revive/fixtures/Cargo.toml
index 459ec13694341be4dcbae23ea98ebc10179d3d5c..1095f962ac1b356e3a1a8d62016e1388933ff0ed 100644
--- a/substrate/frame/revive/fixtures/Cargo.toml
+++ b/substrate/frame/revive/fixtures/Cargo.toml
@@ -21,7 +21,7 @@ anyhow = { workspace = true, default-features = true, optional = true }
 
 [build-dependencies]
 toml = { workspace = true }
-polkavm-linker = { version = "0.17.0" }
+polkavm-linker = { version = "0.18.0" }
 anyhow = { workspace = true, default-features = true }
 
 [features]
diff --git a/substrate/frame/revive/fixtures/build/_Cargo.toml b/substrate/frame/revive/fixtures/build/_Cargo.toml
index 8dc38e14c14bdeb829b4ca70385a164d973e62a5..5d1c922f9002e45313b17d8850243eedf177b259 100644
--- a/substrate/frame/revive/fixtures/build/_Cargo.toml
+++ b/substrate/frame/revive/fixtures/build/_Cargo.toml
@@ -14,7 +14,7 @@ edition = "2021"
 [dependencies]
 uapi = { package = 'pallet-revive-uapi', path = "", features = ["unstable-api"], default-features = false }
 common = { package = 'pallet-revive-fixtures-common', path = "" }
-polkavm-derive = { version = "0.17.0" }
+polkavm-derive = { version = "0.18.0" }
 
 [profile.release]
 opt-level = 3
diff --git a/substrate/frame/revive/rpc/examples/js/pvm/ErrorTester.polkavm b/substrate/frame/revive/rpc/examples/js/pvm/ErrorTester.polkavm
index 5c3995bffe35c6595cf3758f7ac98f295c6e69a5..77de4ff3b1b3fe1f378ae31bbba24ddb38cc6300 100644
Binary files a/substrate/frame/revive/rpc/examples/js/pvm/ErrorTester.polkavm and b/substrate/frame/revive/rpc/examples/js/pvm/ErrorTester.polkavm differ
diff --git a/substrate/frame/revive/rpc/examples/js/pvm/EventExample.polkavm b/substrate/frame/revive/rpc/examples/js/pvm/EventExample.polkavm
index 7880647f379277d3bcb7f6aea40fc4ba52938b9c..6dbc5ca8b108c1ad04cc248b735b2d7d4f43f2a4 100644
Binary files a/substrate/frame/revive/rpc/examples/js/pvm/EventExample.polkavm and b/substrate/frame/revive/rpc/examples/js/pvm/EventExample.polkavm differ
diff --git a/substrate/frame/revive/rpc/examples/js/pvm/Flipper.polkavm b/substrate/frame/revive/rpc/examples/js/pvm/Flipper.polkavm
index 1f036fa37948fa66ab9928b41b8658718bfd513b..488ee684f0c4aee5d64f8b691d048ebefdd51044 100644
Binary files a/substrate/frame/revive/rpc/examples/js/pvm/Flipper.polkavm and b/substrate/frame/revive/rpc/examples/js/pvm/Flipper.polkavm differ
diff --git a/substrate/frame/revive/rpc/examples/js/pvm/FlipperCaller.polkavm b/substrate/frame/revive/rpc/examples/js/pvm/FlipperCaller.polkavm
index 92304419dda704a2d4de38445d3362d995ca6487..585fbb392a314c15a35e7e529106738bde3be02a 100644
Binary files a/substrate/frame/revive/rpc/examples/js/pvm/FlipperCaller.polkavm and b/substrate/frame/revive/rpc/examples/js/pvm/FlipperCaller.polkavm differ
diff --git a/substrate/frame/revive/rpc/examples/js/pvm/PiggyBank.polkavm b/substrate/frame/revive/rpc/examples/js/pvm/PiggyBank.polkavm
index b29c640a2fee562cca818f8289bcca2cbe285fa9..3f96fdfc21d8d8fc5bf68a34f0c9f7b055afa2a4 100644
Binary files a/substrate/frame/revive/rpc/examples/js/pvm/PiggyBank.polkavm and b/substrate/frame/revive/rpc/examples/js/pvm/PiggyBank.polkavm differ
diff --git a/substrate/frame/revive/uapi/Cargo.toml b/substrate/frame/revive/uapi/Cargo.toml
index 1af5b327dfc75d7c2d95914b5fc050df1367fa69..8274bf36204b6efadcfd1ae089ef015b053e6762 100644
--- a/substrate/frame/revive/uapi/Cargo.toml
+++ b/substrate/frame/revive/uapi/Cargo.toml
@@ -21,7 +21,7 @@ codec = { features = [
 ], optional = true, workspace = true }
 
 [target.'cfg(target_arch = "riscv64")'.dependencies]
-polkavm-derive = { version = "0.17.0" }
+polkavm-derive = { version = "0.18.0" }
 
 [package.metadata.docs.rs]
 default-target = ["riscv64imac-unknown-none-elf"]