diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustConstants.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustConstants.java index 9743b67f4a..968f6f0c62 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustConstants.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustConstants.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -21,6 +21,7 @@ public class RustConstants { public static final CategoryPath RUST_CATEGORYPATH = new CategoryPath("/rust"); public static final byte[] RUST_SIGNATURE_1 = "RUST_BACKTRACE".getBytes(); public static final byte[] RUST_SIGNATURE_2 = "/rustc/".getBytes(); + public static final byte[] RUST_SIGNATURE_3 = "RUST_MIN_STACK".getBytes(); public static final String RUST_EXTENSIONS_PATH = "extensions/rust/"; public static final String RUST_EXTENSIONS_UNIX = "unix"; public static final String RUST_EXTENSIONS_WINDOWS = "windows"; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustUtilities.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustUtilities.java index 08e5e29f13..0c44da5b48 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustUtilities.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/rust/RustUtilities.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -38,7 +38,11 @@ import ghidra.xml.XmlParseException; public class RustUtilities { /** * Checks if a given {@link MemoryBlock} contains a Rust signature - * + *

+ * This may be used by loaders to determine if a program was compiled with rust. + * If the program is determined to be rust, then the compiler property is set to + * {@link RustConstants#RUST_COMPILER}. + * * @param block The {@link MemoryBlock} to scan for Rust signatures * @return True if the given {@link MemoryBlock} is not null and contains a Rust signature; * otherwise, false @@ -55,6 +59,9 @@ public class RustUtilities { if (containsBytes(bytes, RustConstants.RUST_SIGNATURE_2)) { return true; } + if (containsBytes(bytes, RustConstants.RUST_SIGNATURE_3)) { + return true; + } return false; }