PCH and recursive dump

This commit is contained in:
Guus Waals 2024-09-25 23:50:01 +08:00
parent 47d35aa3a2
commit 7fab525f42
3 changed files with 25 additions and 0 deletions

View File

@ -52,6 +52,9 @@ target_sources(game_re PRIVATE
# Ignore -Wformat-security
target_compile_options(game_re PRIVATE -Wno-format-security)
# Ignore -Wmicrosoft-cast
target_compile_options(game_re PRIVATE -Wno-microsoft-cast)
# Automatically re-run CMake if any gh_*.cxx files change
# due to ghidra script runs
set_property(
@ -59,3 +62,7 @@ set_property(
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gh_cmake_timestamp
)
target_precompile_headers(game_re PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/r3/binders/auto_pch.cxx>"
)

View File

@ -0,0 +1 @@
#include "auto.h"

View File

@ -31,6 +31,8 @@ public class FunctionDumper {
HashSet<Address> functionAddrBlackList = new HashSet<>();
public boolean createdFile = false;
// Collects functions called by the current function
public HashSet<Function> functionReferences = new HashSet<>();
static final Pattern fieldAccessRegex = Pattern.compile("^_([0-9]+)_([0-9]+)_$");
@ -101,6 +103,20 @@ public class FunctionDumper {
}
}
public static boolean isDumpedFix(Function function) {
String sanitizedFunctionName = Utils.sanitizeIdentifier(function.getName());
String fileName = sanitizedFunctionName + ".cxx";
File f0 = new File(RecompileConfig.INSTANCE.dirDecompFix, fileName);
return f0.exists();
}
public static boolean isDumpedAuto(Function function) {
String sanitizedFunctionName = Utils.sanitizeIdentifier(function.getName());
String fileName = sanitizedFunctionName + ".cxx";
File f0 = new File(RecompileConfig.INSTANCE.dirDecompAuto, fileName);
return f0.exists();
}
public void dump(Function function)
throws Exception {
String sanitizedFunctionName = Utils.sanitizeIdentifier(function.getName());
@ -111,6 +127,7 @@ public class FunctionDumper {
if (stubFile.exists()) {
script.println("Removing function stub " + stubFile);
stubFile.delete();
createdFile = true;
}
File f0 = new File(RecompileConfig.INSTANCE.dirDecompFix, fileName);