diff --git a/project.raddbg b/project.raddbg index 4adbb44b..689b88cc 100644 --- a/project.raddbg +++ b/project.raddbg @@ -68,3 +68,8 @@ target: executable: "build/ryan_scratch.exe" working_directory: build } +target: +{ + executable: "../../Program Files/SuperTux/bin/supertux2.exe" + working_directory: "../../Program Files/SuperTux/bin/" +} diff --git a/src/codeview/codeview_parse.c b/src/codeview/codeview_parse.c index 1a44b83e..583666fb 100644 --- a/src/codeview/codeview_parse.c +++ b/src/codeview/codeview_parse.c @@ -1025,63 +1025,77 @@ internal U64 cv_name_offset_from_symbol(CV_SymKind kind, String8 data) { U64 offset = data.size; - switch (kind) { - case CV_SymKind_COMPILE: break; - case CV_SymKind_OBJNAME: break; - case CV_SymKind_THUNK32: { + switch(kind) + { + case CV_SymKind_COMPILE:{}break; + case CV_SymKind_OBJNAME:{}break; + case CV_SymKind_THUNK32: + { offset = sizeof(CV_SymThunk32); - } break; - case CV_SymKind_LABEL32: { + }break; + case CV_SymKind_LABEL32: + { offset = sizeof(CV_SymLabel32); - } break; - case CV_SymKind_REGISTER: { + }break; + case CV_SymKind_REGISTER: + { offset = sizeof(CV_SymRegister); - } break; - case CV_SymKind_CONSTANT: { + }break; + case CV_SymKind_CONSTANT: + { offset = sizeof(CV_SymConstant); CV_NumericParsed size; offset += cv_read_numeric(data, offset, &size); - } break; - case CV_SymKind_UDT: { + }break; + case CV_SymKind_UDT: + { offset = sizeof(CV_SymUDT); - } break; - case CV_SymKind_BPREL32: { + }break; + case CV_SymKind_BPREL32: + { offset = sizeof(CV_SymBPRel32); - } break; + }break; case CV_SymKind_LDATA32: - case CV_SymKind_GDATA32: { + case CV_SymKind_GDATA32: + { offset = sizeof(CV_SymData32); - } break; - case CV_SymKind_PUB32: { + }break; + case CV_SymKind_PUB32: + { offset = sizeof(CV_SymPub32); - } break; + }break; case CV_SymKind_LPROC32: case CV_SymKind_GPROC32: case CV_SymKind_LPROC32_ID: - case CV_SymKind_GPROC32_ID: { + case CV_SymKind_GPROC32_ID: + { offset = sizeof(CV_SymProc32); - } break; - case CV_SymKind_REGREL32: { + }break; + case CV_SymKind_REGREL32: + { offset = sizeof(CV_SymRegrel32); - } break; + }break; case CV_SymKind_LTHREAD32: - case CV_SymKind_GTHREAD32: { + case CV_SymKind_GTHREAD32: + { offset = sizeof(CV_SymData32); - } break; + }break; case CV_SymKind_COMPILE2: break; - case CV_SymKind_LOCALSLOT: { + case CV_SymKind_LOCALSLOT: + { offset = sizeof(CV_SymSlot); - } break; + }break; case CV_SymKind_PROCREF: case CV_SymKind_LPROCREF: - case CV_SymKind_DATAREF: { + case CV_SymKind_DATAREF: + { offset = sizeof(CV_SymRef2); - } break; + }break; case CV_SymKind_TRAMPOLINE: break; - case CV_SymKind_LOCAL: { + case CV_SymKind_LOCAL: + { offset = sizeof(CV_SymLocal); - } break; - default: InvalidPath; + }break; } return offset; } diff --git a/src/eval/eval_core.c b/src/eval/eval_core.c index c8d19db4..e46fcf29 100644 --- a/src/eval/eval_core.c +++ b/src/eval/eval_core.c @@ -709,8 +709,7 @@ e_oplist_from_location(Arena *arena, RDI_Parsed *rdi, RDI_Location loc) ARCH_RegCode reg_code = arch_reg_code_from_rdi(arch, rdi_regcode); Rng1U16 reg_rng = arch_info->reg_code_rng_table[reg_code]; U64 byte_size = (U64)dim_1u16(reg_rng); - U64 byte_pos = reg_rng.min; - e_oplist_push_op(arena, &result, RDI_EvalOp_RegRead, e_value_u64(RDI_EncodeRegReadParam(rdi_regcode, byte_size, byte_pos))); + e_oplist_push_op(arena, &result, RDI_EvalOp_RegRead, e_value_u64(RDI_EncodeRegReadParam(rdi_regcode, byte_size, 0))); }break; //- rjf: space offsets diff --git a/src/eval/eval_ir.c b/src/eval/eval_ir.c index ab1974f8..a7b8fe02 100644 --- a/src/eval/eval_ir.c +++ b/src/eval/eval_ir.c @@ -1874,6 +1874,7 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, E_I U64 ip_voff = e_base_ctx->thread_ip_voff; { mapped_location = rdi_location_from_location_voff(rdi, local->location, ip_voff); + mapped_bytecode_mode = E_Mode_Null; if(mapped_location != 0) { got_location_block = 1; diff --git a/src/text/text.c b/src/text/text.c index b48987a8..6b56598c 100644 --- a/src/text/text.c +++ b/src/text/text.c @@ -3983,6 +3983,7 @@ txt_artifact_create(String8 key, B32 *cancel_signal, AC_Status *status_out, U64 //- rjf: advance across many token candidates until we find the new line if(line_advance) { + B32 found = 0; U64 scan_cand_chunk_idx = cand_chunk_idx; for(TokenEndpointCandidateChunkNode *n = cand_chunk_n; n != 0; n = n->next) { @@ -3990,6 +3991,7 @@ txt_artifact_create(String8 key, B32 *cancel_signal, AC_Status *status_out, U64 { if(n->v[n_idx] >= active_token_end_off) { + found = 1; cand_chunk_n = n; cand_chunk_idx = n_idx; goto dbl_break_find_candidate_in_next_line; @@ -3998,6 +4000,11 @@ txt_artifact_create(String8 key, B32 *cancel_signal, AC_Status *status_out, U64 scan_cand_chunk_idx = 0; } dbl_break_find_candidate_in_next_line:; + if(!found) + { + cand_chunk_n = 0; + cand_chunk_idx = 0; + } } //- rjf: advance by token candidate