Better typed syx snapshot check result (#74)

* better typed snapshot check

* edit compile_commands.json to use the real compiler
This commit is contained in:
Romain Malmain 2024-05-22 18:49:59 +02:00 committed by GitHub
parent 9f3e2399ee
commit 9d2197b73b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 31 additions and 6 deletions

View File

@ -59,6 +59,10 @@ typedef struct SyxSnapshotState {
// Root
} SyxSnapshotState;
typedef struct SyxSnapshotCheckResult {
uint64_t nb_inconsistencies;
} SyxSnapshotCheckResult;
void syx_snapshot_init(bool cached_bdrvs);
//
@ -71,7 +75,7 @@ void syx_snapshot_free(SyxSnapshot *snapshot);
void syx_snapshot_root_restore(SyxSnapshot *snapshot);
uint64_t syx_snapshot_check_memory_consistency(SyxSnapshot *snapshot);
SyxSnapshotCheckResult syx_snapshot_check(SyxSnapshot* ref_snapshot);
// Push the current RAM state and saves it
void syx_snapshot_increment_push(SyxSnapshot *snapshot, DeviceSnapshotKind kind, char **devices);

View File

@ -577,7 +577,6 @@ static void root_restore_check_memory_rb(gpointer rb_idstr_hash, gpointer rb_dir
SyxSnapshot *snapshot = args->snapshot;
RAMBlock *rb = ramblock_lookup(rb_idstr_hash);
args->nb_inconsistent_pages = 0;
if (rb) {
SYX_PRINTF("Checking memory consistency of %s... ", rb->idstr);
SyxSnapshotRAMBlock *rb_snapshot = g_hash_table_lookup(snapshot->root_snapshot->rbs_snapshot, rb_idstr_hash);
@ -610,12 +609,19 @@ static void root_restore_check_memory_rb(gpointer rb_idstr_hash, gpointer rb_dir
}
}
uint64_t syx_snapshot_check_memory_consistency(SyxSnapshot *snapshot) {
SyxSnapshotCheckResult syx_snapshot_check(SyxSnapshot* ref_snapshot) {
struct rb_check_memory_args args = {
.snapshot = snapshot
.snapshot = ref_snapshot,
.nb_inconsistent_pages = 0,
};
g_hash_table_foreach(snapshot->rbs_dirty_list, root_restore_check_memory_rb, &args);
return args.nb_inconsistent_pages;
g_hash_table_foreach(ref_snapshot->rbs_dirty_list, root_restore_check_memory_rb, &args);
struct SyxSnapshotCheckResult res = {
.nb_inconsistencies = args.nb_inconsistent_pages
};
return res;
}
void syx_snapshot_root_restore(SyxSnapshot *snapshot) {

View File

@ -27,6 +27,19 @@ shared_library_pattern = r"^[^-].*/lib(.*)\.so(\.[0-9].*)?(?!rsp)$"
rpath_pattern = r"^'.*,-rpath,(.*)'$"
rpath_link_pattern = r"^.*,-rpath-link,(.*)$"
linker_interceptor_pattern = r"(\": \")(.*linker_interceptor.py)( )"
linker_interceptorpp_pattern = r"(\": \")(.*linker_interceptor\+\+.py)( )"
def fix_compile_commands():
with open("compile_commands.json", 'r') as f:
compile_commands = f.read()
res = re.sub(linker_interceptor_pattern, rf"\g<1>{CC}\g<3>", compile_commands)
res = re.sub(linker_interceptorpp_pattern, rf"\g<1>{CXX}\g<3>", res)
with open("compile_commands.json", 'w') as f:
f.write(res)
def process_args(args):
global out_args, shareds, search, is_linking_qemu
prev_o = False
@ -75,6 +88,8 @@ if is_linking_qemu:
for entry in compile_commands:
sources.append(entry["file"])
fix_compile_commands()
with open(OUT, 'w') as f:
json.dump({
'cmd': out_args,