PCH and recursive dump
This commit is contained in:
parent
47d35aa3a2
commit
7fab525f42
|
@ -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>"
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#include "auto.h"
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue