|
102 Patches: Detours to the Rescue
C reference for DttR maintainers and modders.
|
Go to the source code of this file.
Enumerations | |
| enum | { PKG_LOAD_ENTRY_TOC_OPERAND_OFFSET = 0x48u } |
Functions | |
| static DTTR_Util_PkgWalkResult | make_result (DTTR_Util_PkgVisitStatus status) |
| DTTR_Util_PkgWalkOptions | DTTR_Util_PkgWalk_DefaultOptions () |
| Return default options covering all known domains, entry loading included. | |
| const char * | DTTR_Util_PkgVisitStatusName (DTTR_Util_PkgVisitStatus status) |
| Return a static log-friendly name such as ok or load failed. | |
| static bool | default_load_entry (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *userdata, void **out_entry, size_t *out_size, DTTR_Util_PkgVisitStatus *out_status) |
| static void | default_free_entry (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *entry_data, void *userdata) |
| static bool | resolve_toc (const DTTR_Core_Context *ctx, const DTTR_Util_PkgWalkOptions *options, const DTTR_PCDOGS_T_PKG_TOCEntry **out_entries, uint32_t *out_count) |
| static DTTR_Util_PkgVisitAction | emit_visit (DTTR_Util_PkgWalkResult *result, DTTR_Util_PkgVisitor visitor, void *visitor_userdata, const DTTR_Util_PkgVisit *visit) |
| static DTTR_Util_PkgVisit | make_visit (const DTTR_Util_PkgWalkOptions *options, DTTR_Util_PkgVisitKind kind, DTTR_Util_PkgVisitStatus status, uint32_t depth, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *toc_entry, const void *ptr, const void *loaded_entry_base, size_t loaded_entry_size, const DTTR_Util_PkgVisit *parent) |
| static bool | should_recurse (DTTR_Util_PkgVisitAction action) |
| static bool | should_load (const DTTR_Util_PkgWalkOptions *options, DTTR_Util_PkgVisitAction action) |
| static bool | emit_decode_boundary (DTTR_Util_PkgWalkResult *result, const DTTR_Util_PkgWalkOptions *options, DTTR_Util_PkgVisitor visitor, void *visitor_userdata, const DTTR_Util_PkgVisit *loaded_visit) |
| DTTR_Util_PkgWalkResult | DTTR_Util_PkgWalk (const DTTR_Core_Context *ctx, const DTTR_Util_PkgWalkOptions *options, DTTR_Util_PkgVisitor visitor, void *userdata) |
| Walk live package structures and call the visitor for each visit. | |
| anonymous enum |
| Enumerator | |
|---|---|
| PKG_LOAD_ENTRY_TOC_OPERAND_OFFSET | |
Definition at line 10 of file util_pkg_walk.c.
|
static |
Definition at line 94 of file util_pkg_walk.c.
References BOOL, ctx, DTTR_PCDOGS_F_PKG_FreeResourceData, and FALSE.
Referenced by DTTR_Util_PkgWalk().
|
static |
Definition at line 49 of file util_pkg_walk.c.
References ctx, DTTR_PCDOGS_F_PKG_LoadEntry, DTTR_ResultOK(), DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT, DTTR_UTIL_PKG_STATUS_LOAD_FAILED, DTTR_UTIL_PKG_STATUS_OK, NULL, and DTTR_PCDOGS_T_PKG_TOCEntry::size.
Referenced by DTTR_Util_PkgWalk().
| const char * DTTR_Util_PkgVisitStatusName | ( | DTTR_Util_PkgVisitStatus | status | ) |
Return a static log-friendly name such as ok or load failed.
Definition at line 28 of file util_pkg_walk.c.
References DTTR_UTIL_PKG_STATUS_BOUNDS_INVALID, DTTR_UTIL_PKG_STATUS_DECODE_UNSUPPORTED, DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT, DTTR_UTIL_PKG_STATUS_LOAD_FAILED, DTTR_UTIL_PKG_STATUS_OK, DTTR_UTIL_PKG_STATUS_UNKNOWN_ENTRY_KIND, and DTTR_UTIL_PKG_STATUS_UNRESOLVED_SYMBOL.
| DTTR_Util_PkgWalkResult DTTR_Util_PkgWalk | ( | const DTTR_Core_Context * | ctx, |
| const DTTR_Util_PkgWalkOptions * | options, | ||
| DTTR_Util_PkgVisitor | visitor, | ||
| void * | userdata ) |
Walk live package structures and call the visitor for each visit.
Definition at line 258 of file util_pkg_walk.c.
References ctx, default_free_entry(), default_load_entry(), DTTR_Util_PkgWalkOptions::domains, DTTR_UTIL_PKG_DOMAIN_TOC, DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT, DTTR_UTIL_PKG_STATUS_LOAD_FAILED, DTTR_UTIL_PKG_STATUS_OK, DTTR_UTIL_PKG_STATUS_UNRESOLVED_SYMBOL, DTTR_UTIL_PKG_VISIT_LOADED_ENTRY, DTTR_UTIL_PKG_VISIT_SKIP_SUBTREE, DTTR_UTIL_PKG_VISIT_STOP, DTTR_UTIL_PKG_VISIT_TOC_ENTRY, DTTR_UTIL_PKG_VISIT_UNSUPPORTED, DTTR_Util_PkgWalk_DefaultOptions(), emit_decode_boundary(), emit_visit(), DTTR_Util_PkgWalkOptions::free_entry, DTTR_Util_PkgWalkOptions::io_userdata, DTTR_Util_PkgWalkOptions::load_entry, DTTR_Util_PkgWalkResult::loaded_count, make_result(), make_visit(), DTTR_Util_PkgWalkOptions::max_depth, NULL, resolve_toc(), should_load(), should_recurse(), and DTTR_Util_PkgWalkResult::stopped.
| DTTR_Util_PkgWalkOptions DTTR_Util_PkgWalk_DefaultOptions | ( | ) |
Return default options covering all known domains, entry loading included.
Definition at line 18 of file util_pkg_walk.c.
References DTTR_UTIL_PKG_DEFAULT_TOC_COUNT, and DTTR_UTIL_PKG_DOMAIN_ALL_KNOWN.
Referenced by DTTR_Util_PkgWalk().
|
static |
Definition at line 224 of file util_pkg_walk.c.
References DTTR_Util_PkgVisit::depth, DTTR_Util_PkgWalkOptions::domains, DTTR_UTIL_PKG_DOMAIN_KNOWN_CHILDREN, DTTR_UTIL_PKG_STATUS_OK, DTTR_UTIL_PKG_VISIT_STOP, DTTR_UTIL_PKG_VISIT_UNSUPPORTED, emit_visit(), DTTR_Util_PkgVisit::loaded_entry_base, DTTR_Util_PkgVisit::loaded_entry_size, make_visit(), DTTR_Util_PkgWalkOptions::max_depth, DTTR_Util_PkgVisit::ptr, DTTR_Util_PkgWalkResult::stopped, DTTR_Util_PkgVisit::toc_entry, and DTTR_Util_PkgVisit::toc_index.
Referenced by DTTR_Util_PkgWalk().
|
static |
Definition at line 155 of file util_pkg_walk.c.
References DTTR_UTIL_PKG_STATUS_OK, DTTR_UTIL_PKG_VISIT_CONTINUE, DTTR_Util_PkgWalkResult::failed_count, DTTR_Util_PkgVisit::status, and DTTR_Util_PkgWalkResult::visited_count.
Referenced by DTTR_Util_PkgWalk(), and emit_decode_boundary().
|
static |
Definition at line 14 of file util_pkg_walk.c.
Referenced by DTTR_Util_PkgWalk().
|
static |
Definition at line 169 of file util_pkg_walk.c.
References DTTR_Util_PkgVisit::depth, DTTR_Util_PkgWalkOptions::io_userdata, DTTR_Util_PkgVisit::kind, DTTR_Util_PkgVisit::loaded_entry_base, DTTR_Util_PkgVisit::loaded_entry_size, NULL, DTTR_PCDOGS_T_PKG_TOCEntry::offset, DTTR_Util_PkgVisit::parent, DTTR_Util_PkgVisit::pkg_offset, DTTR_Util_PkgVisit::pkg_size, DTTR_Util_PkgVisit::ptr, DTTR_PCDOGS_T_PKG_TOCEntry::size, DTTR_Util_PkgVisit::status, DTTR_Util_PkgVisit::struct_size, DTTR_Util_PkgVisit::toc_entry, DTTR_Util_PkgVisit::toc_index, and DTTR_Util_PkgVisit::userdata.
Referenced by DTTR_Util_PkgWalk(), and emit_decode_boundary().
|
static |
Definition at line 109 of file util_pkg_walk.c.
References ctx, DTTR_PCDOGS_FUNCTION_PKG_LOAD_ENTRY, DTTR_PCDOGS_FunctionResolve(), DTTR_ResultOK(), DTTR_UTIL_PKG_DEFAULT_TOC_COUNT, NULL, PKG_LOAD_ENTRY_TOC_OPERAND_OFFSET, DTTR_Util_PkgWalkOptions::toc_count, and DTTR_Util_PkgWalkOptions::toc_entries.
Referenced by DTTR_Util_PkgWalk().
|
static |
Definition at line 209 of file util_pkg_walk.c.
References DTTR_Util_PkgWalkOptions::domains, DTTR_UTIL_PKG_DOMAIN_ENTRY, DTTR_UTIL_PKG_VISIT_LOAD_AND_RECURSE, DTTR_UTIL_PKG_VISIT_RECURSE, and DTTR_Util_PkgWalkOptions::load_entries.
Referenced by DTTR_Util_PkgWalk().
|
static |
Definition at line 204 of file util_pkg_walk.c.
References DTTR_UTIL_PKG_VISIT_LOAD_AND_RECURSE, and DTTR_UTIL_PKG_VISIT_RECURSE.
Referenced by DTTR_Util_PkgWalk().