From 45a082d9a876434f3f8c3d38d7e07e07c11e2bfa Mon Sep 17 00:00:00 2001 From: xermicus Date: Wed, 10 Apr 2024 10:05:48 +0200 Subject: [PATCH] LLVM 18 Signed-off-by: xermicus --- Cargo.lock | 85 +++++---- Cargo.toml | 4 +- crates/extensions/Cargo.toml | 2 +- crates/lld-sys/src/linker.cpp | 2 + .../src/eravm/context/attribute.rs | 171 +++++++++--------- crates/pallet-contracts-pvm-llapi/Cargo.toml | 2 +- crates/stdlib/Cargo.toml | 2 +- 7 files changed, 141 insertions(+), 127 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee5d398..39c7f81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,7 +68,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", "syn-solidity", "tiny-keccak", ] @@ -229,14 +229,14 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "base16ct" @@ -327,9 +327,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.90" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" [[package]] name = "cfg-if" @@ -447,9 +447,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "zeroize", @@ -691,9 +691,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", @@ -832,7 +832,7 @@ dependencies = [ [[package]] name = "inkwell" version = "0.4.0" -source = "git+https://github.com/TheDan64/inkwell.git#69c5a3fcc3e8b997c36e20021c52adcff664d746" +source = "git+https://github.com/TheDan64/inkwell.git#d916c66d2cedb8bc58c187df8403d9fc71eb0ad4" dependencies = [ "either", "inkwell_internals", @@ -846,11 +846,11 @@ dependencies = [ [[package]] name = "inkwell_internals" version = "0.9.0" -source = "git+https://github.com/TheDan64/inkwell.git#69c5a3fcc3e8b997c36e20021c52adcff664d746" +source = "git+https://github.com/TheDan64/inkwell.git#d916c66d2cedb8bc58c187df8403d9fc71eb0ad4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] @@ -873,9 +873,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "k256" @@ -954,14 +954,15 @@ dependencies = [ [[package]] name = "llvm-sys" -version = "160.1.4" +version = "180.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f9888529887dfda6c59e20f0e0727b17e826cd54ae1ddf0d4c83850fa23b69" +checksum = "778fa5fa02e32728e718f11eec147e6f134137399ab02fd2c13d32476337affa" dependencies = [ + "anyhow", "cc", "lazy_static", "libc", - "regex", + "regex-lite", "semver 1.0.22", ] @@ -979,9 +980,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "mimalloc" @@ -1130,9 +1131,9 @@ checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" [[package]] name = "pest" -version = "2.7.8" +version = "2.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8" +checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" dependencies = [ "memchr", "thiserror", @@ -1152,7 +1153,7 @@ dependencies = [ [[package]] name = "polkavm" version = "0.9.3" -source = "git+https://github.com/koute/polkavm.git#1f74006e596bcdcc92856a14a115e285dfc3368e" +source = "git+https://github.com/koute/polkavm.git#852dd110b8e71f91c2e524207eb5003669437b67" dependencies = [ "libc", "log", @@ -1164,7 +1165,7 @@ dependencies = [ [[package]] name = "polkavm-assembler" version = "0.9.0" -source = "git+https://github.com/koute/polkavm.git#1f74006e596bcdcc92856a14a115e285dfc3368e" +source = "git+https://github.com/koute/polkavm.git#852dd110b8e71f91c2e524207eb5003669437b67" dependencies = [ "log", ] @@ -1172,7 +1173,7 @@ dependencies = [ [[package]] name = "polkavm-common" version = "0.9.0" -source = "git+https://github.com/koute/polkavm.git#1f74006e596bcdcc92856a14a115e285dfc3368e" +source = "git+https://github.com/koute/polkavm.git#852dd110b8e71f91c2e524207eb5003669437b67" dependencies = [ "log", ] @@ -1180,7 +1181,7 @@ dependencies = [ [[package]] name = "polkavm-linker" version = "0.9.2" -source = "git+https://github.com/koute/polkavm.git#1f74006e596bcdcc92856a14a115e285dfc3368e" +source = "git+https://github.com/koute/polkavm.git#852dd110b8e71f91c2e524207eb5003669437b67" dependencies = [ "gimli", "hashbrown 0.14.3", @@ -1194,7 +1195,7 @@ dependencies = [ [[package]] name = "polkavm-linux-raw" version = "0.9.0" -source = "git+https://github.com/koute/polkavm.git#1f74006e596bcdcc92856a14a115e285dfc3368e" +source = "git+https://github.com/koute/polkavm.git#852dd110b8e71f91c2e524207eb5003669437b67" [[package]] name = "ppv-lite86" @@ -1404,10 +1405,16 @@ dependencies = [ ] [[package]] -name = "regex-syntax" -version = "0.8.2" +name = "regex-lite" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "revive-builtins" @@ -1667,14 +1674,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ "itoa", "ryu", @@ -1822,9 +1829,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.55" +version = "2.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" dependencies = [ "proc-macro2", "quote", @@ -1840,7 +1847,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] @@ -1887,7 +1894,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] @@ -2193,7 +2200,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] @@ -2213,7 +2220,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.58", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2115096..762df99 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,6 +37,6 @@ serde_stacker = "0.1" [workspace.dependencies.inkwell] git = "https://github.com/TheDan64/inkwell.git" -commit = "69c5a3f" +commit = "d916c66" default-features = false -features = ["serde", "llvm16-0", "no-libffi-linking", "target-riscv"] +features = ["serde", "llvm18-0", "no-libffi-linking", "target-riscv"] diff --git a/crates/extensions/Cargo.toml b/crates/extensions/Cargo.toml index 2ede70b..2a77bec 100644 --- a/crates/extensions/Cargo.toml +++ b/crates/extensions/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -inkwell = { workspace = true, features = ["target-riscv", "no-libffi-linking", "llvm16-0"] } +inkwell = { workspace = true, features = ["target-riscv", "no-libffi-linking", "llvm18-0"] } diff --git a/crates/lld-sys/src/linker.cpp b/crates/lld-sys/src/linker.cpp index 11dbd54..eb58a72 100644 --- a/crates/lld-sys/src/linker.cpp +++ b/crates/lld-sys/src/linker.cpp @@ -2,6 +2,8 @@ #include "lld/Common/CommonLinkerContext.h" #include "llvm/Support/CrashRecoveryContext.h" +LLD_HAS_DRIVER(elf); + extern "C" bool LLDELFLink(const char *argv[], size_t length) { bool canRunAgain; diff --git a/crates/llvm-context/src/eravm/context/attribute.rs b/crates/llvm-context/src/eravm/context/attribute.rs index 6a94503..96ec1dc 100644 --- a/crates/llvm-context/src/eravm/context/attribute.rs +++ b/crates/llvm-context/src/eravm/context/attribute.rs @@ -5,13 +5,12 @@ use serde::Serialize; /// The LLVM attribute. /// -/// In order to check the real order in a new major version of LLVM, find the `Attribute.inc` file +/// In order to check the real order in a new major version of LLVM, find the `Attributes.inc` file /// inside of the LLVM build directory. This order is actually generated during the building. /// /// FIXME: Generate this in build.rs? #[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum Attribute { - /// Unused (attributes start at 1). Unused = 0, AllocAlign = 1, AllocatedPointer = 2, @@ -19,87 +18,93 @@ pub enum Attribute { Builtin = 4, Cold = 5, Convergent = 6, - DisableSanitizerInstrumentation = 7, - FnRetThunkExtern = 8, - Hot = 9, - ImmArg = 10, - InReg = 11, - InlineHint = 12, - JumpTable = 13, - MinSize = 14, - MustProgress = 15, - Naked = 16, - Nest = 17, - NoAlias = 18, - NoBuiltin = 19, - NoCallback = 20, - NoCapture = 21, - NoCfCheck = 22, - NoDuplicate = 23, - NoFree = 24, - NoImplicitFloat = 25, - NoInline = 26, - NoMerge = 27, - NoProfile = 28, - NoRecurse = 29, - NoRedZone = 30, - NoReturn = 31, - NoSanitizeBounds = 32, - NoSanitizeCoverage = 33, - NoSync = 34, - NoUndef = 35, - NoUnwind = 36, - NonLazyBind = 37, - NonNull = 38, - NullPointerIsValid = 39, - OptForFuzzing = 40, - OptimizeForSize = 41, - OptimizeNone = 42, - PresplitCoroutine = 43, - ReadNone = 44, - ReadOnly = 45, - Returned = 46, - ReturnsTwice = 47, - SExt = 48, - SafeStack = 49, - SanitizeAddress = 50, - SanitizeHWAddress = 51, - SanitizeMemTag = 52, - SanitizeMemory = 53, - SanitizeThread = 54, - ShadowCallStack = 55, - SkipProfile = 56, - Speculatable = 57, - SpeculativeLoadHardening = 58, - StackProtect = 59, - StackProtectReq = 60, - StackProtectStrong = 61, - StrictFP = 62, - SwiftAsync = 63, - SwiftError = 64, - SwiftSelf = 65, - WillReturn = 66, - WriteOnly = 67, - ZExt = 68, - // FirstTypeAttr = 69, - ByRef = 69, - ByVal = 70, - ElementType = 71, - InAlloca = 72, - Preallocated = 73, - StructRet = 74, - // LastTypeAttr = 74, - // FirstIntAttr = 75, - Alignment = 75, - AllocKind = 76, - AllocSize = 77, - Dereferenceable = 78, - DereferenceableOrNull = 79, - Memory = 80, - StackAlignment = 81, - UWTable = 82, - VScaleRange = 83, - // LastIntAttr = 83, + CoroDestroyOnlyWhenComplete = 7, + DeadOnUnwind = 8, + DisableSanitizerInstrumentation = 9, + FnRetThunkExtern = 10, + Hot = 11, + ImmArg = 12, + InReg = 13, + InlineHint = 14, + JumpTable = 15, + MinSize = 16, + MustProgress = 17, + Naked = 18, + Nest = 19, + NoAlias = 20, + NoBuiltin = 21, + NoCallback = 22, + NoCapture = 23, + NoCfCheck = 24, + NoDuplicate = 25, + NoFree = 26, + NoImplicitFloat = 27, + NoInline = 28, + NoMerge = 29, + NoProfile = 30, + NoRecurse = 31, + NoRedZone = 32, + NoReturn = 33, + NoSanitizeBounds = 34, + NoSanitizeCoverage = 35, + NoSync = 36, + NoUndef = 37, + NoUnwind = 38, + NonLazyBind = 39, + NonNull = 40, + NullPointerIsValid = 41, + OptForFuzzing = 42, + OptimizeForDebugging = 43, + OptimizeForSize = 44, + OptimizeNone = 45, + PresplitCoroutine = 46, + ReadNone = 47, + ReadOnly = 48, + Returned = 49, + ReturnsTwice = 50, + SExt = 51, + SafeStack = 52, + SanitizeAddress = 53, + SanitizeHWAddress = 54, + SanitizeMemTag = 55, + SanitizeMemory = 56, + SanitizeThread = 57, + ShadowCallStack = 58, + SkipProfile = 59, + Speculatable = 60, + SpeculativeLoadHardening = 61, + StackProtect = 62, + StackProtectReq = 63, + StackProtectStrong = 64, + StrictFP = 65, + SwiftAsync = 66, + SwiftError = 67, + SwiftSelf = 68, + WillReturn = 69, + Writable = 70, + WriteOnly = 71, + ZExt = 72, + //LastEnumAttr = 72, + // FirstTypeAttr = 73, + ByRef = 73, + ByVal = 74, + ElementType = 75, + InAlloca = 76, + Preallocated = 77, + StructRet = 78, + // LastTypeAttr = 78, + // FirstIntAttr = 79, + Alignment = 79, + AllocKind = 80, + AllocSize = 81, + Dereferenceable = 82, + DereferenceableOrNull = 83, + Memory = 84, + NoFPClass = 85, + StackAlignment = 86, + UWTable = 87, + VScaleRange = 88, + // LastIntAttr = 88, } impl TryFrom<&str> for Attribute { diff --git a/crates/pallet-contracts-pvm-llapi/Cargo.toml b/crates/pallet-contracts-pvm-llapi/Cargo.toml index 4c44a38..c337855 100644 --- a/crates/pallet-contracts-pvm-llapi/Cargo.toml +++ b/crates/pallet-contracts-pvm-llapi/Cargo.toml @@ -4,4 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] -inkwell = { workspace = true, features = ["target-riscv", "no-libffi-linking", "llvm16-0"] } \ No newline at end of file +inkwell = { workspace = true, features = ["target-riscv", "no-libffi-linking", "llvm18-0"] } \ No newline at end of file diff --git a/crates/stdlib/Cargo.toml b/crates/stdlib/Cargo.toml index 1a41182..2bcab72 100644 --- a/crates/stdlib/Cargo.toml +++ b/crates/stdlib/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -inkwell = { workspace = true, features = ["target-riscv", "no-libffi-linking", "llvm16-0"] } +inkwell = { workspace = true, features = ["target-riscv", "no-libffi-linking", "llvm18-0"] }