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 # Ignore -Wformat-security
target_compile_options(game_re PRIVATE -Wno-format-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 # Automatically re-run CMake if any gh_*.cxx files change
# due to ghidra script runs # due to ghidra script runs
set_property( set_property(
@ -59,3 +62,7 @@ set_property(
APPEND APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gh_cmake_timestamp 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<>(); HashSet<Address> functionAddrBlackList = new HashSet<>();
public boolean createdFile = false; 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]+)_$"); 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) public void dump(Function function)
throws Exception { throws Exception {
String sanitizedFunctionName = Utils.sanitizeIdentifier(function.getName()); String sanitizedFunctionName = Utils.sanitizeIdentifier(function.getName());
@ -111,6 +127,7 @@ public class FunctionDumper {
if (stubFile.exists()) { if (stubFile.exists()) {
script.println("Removing function stub " + stubFile); script.println("Removing function stub " + stubFile);
stubFile.delete(); stubFile.delete();
createdFile = true;
} }
File f0 = new File(RecompileConfig.INSTANCE.dirDecompFix, fileName); File f0 = new File(RecompileConfig.INSTANCE.dirDecompFix, fileName);