Fleshing out the symbol database.

Now detecting a lot of functions via method hints and generating stub
functions. A few holes (in the test xex), but enough to move forward with
codegen.
This commit is contained in:
Ben Vanik
2013-01-17 23:17:49 -08:00
parent f779adda55
commit c18e94c5be
10 changed files with 517 additions and 113 deletions

View File

@@ -58,12 +58,20 @@ struct xe_sdb_variable {
char *name;
};
typedef struct {
int type;
union {
xe_sdb_function_t* function;
xe_sdb_variable_t* variable;
};
} xe_sdb_symbol_t;
struct xe_sdb;
typedef struct xe_sdb* xe_sdb_ref;
xe_sdb_ref xe_sdb_create(xe_memory_ref memory);
xe_sdb_ref xe_sdb_create(xe_memory_ref memory, xe_module_ref module);
xe_sdb_ref xe_sdb_retain(xe_sdb_ref sdb);
void xe_sdb_release(xe_sdb_ref sdb);
@@ -73,9 +81,10 @@ xe_sdb_variable_t* xe_sdb_insert_variable(xe_sdb_ref sdb, uint32_t address);
xe_sdb_function_t* xe_sdb_get_function(xe_sdb_ref sdb, uint32_t address);
xe_sdb_variable_t* xe_sdb_get_variable(xe_sdb_ref sdb, uint32_t address);
void xe_sdb_dump(xe_sdb_ref sdb);
int xe_sdb_get_functions(xe_sdb_ref sdb, xe_sdb_function_t ***out_functions,
size_t *out_function_count);
int xe_sdb_analyze_module(xe_sdb_ref sdb, xe_module_ref module);
void xe_sdb_dump(xe_sdb_ref sdb);
#endif // XENIA_CPU_SDB_H_