From c1a622058ec12270142192ff37961d32ff03578d Mon Sep 17 00:00:00 2001 From: jdflyer Date: Sat, 30 Sep 2023 15:49:49 -0600 Subject: [PATCH] Begin Fixing files for -sym on (#1952) --- .gitignore | 1 + Makefile | 2 ++ include/DynamicLink.h | 18 +++++------ obj_files.mk | 4 +++ src/DynamicLink.cpp | 60 ------------------------------------- src/c/c_dylink.cpp | 69 ++----------------------------------------- 6 files changed, 19 insertions(+), 135 deletions(-) diff --git a/.gitignore b/.gitignore index 99b16cd3fa6..6a51c542f8c 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ docs/doxygen/ # Python __pycache__/ +venv/ m2ctx.py ctx.c diff --git a/Makefile b/Makefile index 61f104640bf..3d757198dfe 100644 --- a/Makefile +++ b/Makefile @@ -103,6 +103,8 @@ $(BUILD_DIR)/src/__start.o: CFLAGS := -Cpp_exceptions off -proc gekko -fp har $(BUILD_DIR)/src/__start.o: MWCC_VERSION := 1.2.5 $(BUILD_DIR)/src/__start.o: CC := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwcceppc.exe +$(O_FILES_SYM_ON): CFLAGS += -sym on + # elf2dol needs to know these in order to calculate sbss correctly. SDATA_PDHR := 9 SBSS_PDHR := 10 diff --git a/include/DynamicLink.h b/include/DynamicLink.h index 53bd8f20b14..b2b9810cfbc 100644 --- a/include/DynamicLink.h +++ b/include/DynamicLink.h @@ -17,16 +17,16 @@ struct DynamicModuleControlBase { /* 0x0C */ /*vtable*/ /* 802621CC */ virtual ~DynamicModuleControlBase(); /* 800188DC */ virtual const char* getModuleName() const { return NULL; }; - /* 80263210 */ virtual int getModuleSize() const; - /* 80263200 */ virtual const char* getModuleTypeString() const; + /* 80263210 */ virtual int getModuleSize() const { return 0; }; + /* 80263200 */ virtual const char* getModuleTypeString() const {return "Base";}; virtual void dump(); /* 80262470 */ static void dump(); - /* 802631FC */ virtual void dump2(); - /* 802631DC */ virtual bool do_load(); - /* 802631F4 */ virtual BOOL do_load_async(); - /* 802631E4 */ virtual bool do_unload(); - /* 802631D4 */ virtual BOOL do_link(); - /* 802631EC */ virtual bool do_unlink(); + /* 802631FC */ virtual void dump2() {}; + /* 802631DC */ virtual bool do_load() {return true;}; + /* 802631F4 */ virtual BOOL do_load_async() {return true;}; + /* 802631E4 */ virtual bool do_unload() {return true;}; + /* 802631D4 */ virtual BOOL do_link() {return TRUE;}; + /* 802631EC */ virtual bool do_unlink() {return true; }; /* 80262284 */ DynamicModuleControlBase(); /* 802622D0 */ BOOL link(); /* 80262364 */ BOOL unlink(); @@ -42,8 +42,8 @@ struct DynamicModuleControlBase { }; struct DynamicModuleControl : DynamicModuleControlBase { + /* 80263218 */ virtual const char* getModuleName() const { return mName; }; /* 800188E4 */ virtual ~DynamicModuleControl() {} - /* 80263218 */ virtual const char* getModuleName() const; /* 80263000 */ virtual int getModuleSize() const; /* 80263070 */ virtual const char* getModuleTypeString() const; // virtual void dump(); diff --git a/obj_files.mk b/obj_files.mk index 06a435819ab..13739301645 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -1045,3 +1045,7 @@ RELS := \ $(BUILD_DIR)/rel/d/a/d_a_tboxSw.plf \ $(BUILD_DIR)/rel/d/a/d_a_title.plf \ $(BUILD_DIR)/rel/d/a/d_a_warp_bug.plf \ + +O_FILES_SYM_ON := \ + $(BUILD_DIR)/src/c/c_dylink.o \ + $(BUILD_DIR)/src/DynamicLink.o \ diff --git a/src/DynamicLink.cpp b/src/DynamicLink.cpp index 2b64ed523ff..64283686c88 100644 --- a/src/DynamicLink.cpp +++ b/src/DynamicLink.cpp @@ -537,83 +537,23 @@ extern "C" void ModuleDestructorsX(void (**dtors)()) { } /* 802631D4-802631DC 25DB14 0008+00 1/0 0/0 0/0 .text do_link__24DynamicModuleControlBaseFv */ -BOOL DynamicModuleControlBase::do_link() { - return TRUE; -} /* 802631DC-802631E4 25DB1C 0008+00 1/0 0/0 0/0 .text do_load__24DynamicModuleControlBaseFv */ -bool DynamicModuleControlBase::do_load() { - return true; -} /* 802631E4-802631EC 25DB24 0008+00 1/0 0/0 0/0 .text do_unload__24DynamicModuleControlBaseFv */ -bool DynamicModuleControlBase::do_unload() { - return true; -} /* 802631EC-802631F4 25DB2C 0008+00 1/0 0/0 0/0 .text do_unlink__24DynamicModuleControlBaseFv */ -bool DynamicModuleControlBase::do_unlink() { - return true; -} /* 802631F4-802631FC 25DB34 0008+00 1/0 0/0 0/0 .text do_load_async__24DynamicModuleControlBaseFv */ -BOOL DynamicModuleControlBase::do_load_async() { - return true; -} /* 802631FC-80263200 25DB3C 0004+00 1/0 0/0 0/0 .text dump2__24DynamicModuleControlBaseFv */ -void DynamicModuleControlBase::dump2() { - /* empty function */ -} /* 80263200-80263210 25DB40 0010+00 1/0 0/0 0/0 .text * getModuleTypeString__24DynamicModuleControlBaseCFv */ -const char* DynamicModuleControlBase::getModuleTypeString() const { - return "Base"; -} /* 80263210-80263218 25DB50 0008+00 1/0 0/0 0/0 .text getModuleSize__24DynamicModuleControlBaseCFv */ -int DynamicModuleControlBase::getModuleSize() const { - return 0; -} /* 80263218-80263220 25DB58 0008+00 1/0 0/0 0/0 .text getModuleName__20DynamicModuleControlCFv */ -const char* DynamicModuleControl::getModuleName() const { - return mName; -} - -extern "C" void dump__24DynamicModuleControlBaseFv(); -extern "C" void __ct__20DynamicModuleControlFPCc(); -extern "C" void mountCallback__20DynamicModuleControlFPv(); -extern "C" void initialize__20DynamicModuleControlFv(); -extern "C" void callback__20DynamicModuleControlFPv(); -extern "C" void do_load__20DynamicModuleControlFv(); -extern "C" void do_load_async__20DynamicModuleControlFv(); -extern "C" void do_unload__20DynamicModuleControlFv(); -extern "C" void dump2__20DynamicModuleControlFv(); -extern "C" void do_link__20DynamicModuleControlFv(); -extern "C" void do_unlink__20DynamicModuleControlFv(); -extern "C" void getModuleSize__20DynamicModuleControlCFv(); -extern "C" void getModuleTypeString__20DynamicModuleControlCFv(); -extern "C" void getModuleName__20DynamicModuleControlCFv(); -extern "C" void __dt__20DynamicModuleControlFv(); - -/* 803C34C0-803C34F4 0205E0 0034+00 1/1 2/2 0/0 .data __vt__20DynamicModuleControl */ -SECTION_DATA extern void* __vt__20DynamicModuleControl[13] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__20DynamicModuleControlFv, - (void*)getModuleName__20DynamicModuleControlCFv, - (void*)getModuleSize__20DynamicModuleControlCFv, - (void*)getModuleTypeString__20DynamicModuleControlCFv, - (void*)dump__24DynamicModuleControlBaseFv, - (void*)dump2__20DynamicModuleControlFv, - (void*)do_load__20DynamicModuleControlFv, - (void*)do_load_async__20DynamicModuleControlFv, - (void*)do_unload__20DynamicModuleControlFv, - (void*)do_link__20DynamicModuleControlFv, - (void*)do_unlink__20DynamicModuleControlFv, -}; diff --git a/src/c/c_dylink.cpp b/src/c/c_dylink.cpp index 3e13f9ca849..f3bd0a5de08 100644 --- a/src/c/c_dylink.cpp +++ b/src/c/c_dylink.cpp @@ -14,57 +14,6 @@ #include "global.h" #include "m_Do/m_Do_ext.h" -// -// Forward References: -// - -extern "C" static void cCc_Init__Fv(); -extern "C" void cDyl_IsLinked__Fs(); -extern "C" void cDyl_Unlink__Fs(); -extern "C" void cDyl_LinkASync__Fs(); -extern "C" static void cDyl_InitCallback__FPv(); -extern "C" void cDyl_InitAsync__Fv(); -extern "C" void cDyl_InitAsyncIsDone__Fv(); -extern "C" s32 phase_01__7cDylPhsFPv(); -extern "C" void phase_02__7cDylPhsFPs(); -extern "C" bool phase_03__7cDylPhsFPv(); -extern "C" void Link__7cDylPhsFP30request_of_phase_process_classs(); -extern "C" void Unlink__7cDylPhsFP30request_of_phase_process_classs(); -extern "C" bool getModuleName__24DynamicModuleControlBaseCFv(); -extern "C" void __dt__20DynamicModuleControlFv(); -extern "C" extern char const* const c_c_dylink__stringBase0; - -// -// External References: -// - -extern "C" void mDoExt_getArchiveHeap__Fv(); -extern "C" void create__20mDoDvdThd_callback_cFPFPv_PvPv(); -extern "C" void fopScnM_CreateReq__FssUsUl(); -extern "C" void dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv(); -extern "C" void __dt__24DynamicModuleControlBaseFv(); -extern "C" void link__24DynamicModuleControlBaseFv(); -extern "C" void unlink__24DynamicModuleControlBaseFv(); -extern "C" void load_async__24DynamicModuleControlBaseFv(); -extern "C" void __ct__20DynamicModuleControlFPCc(); -extern "C" void initialize__20DynamicModuleControlFv(); -extern "C" void becomeCurrentHeap__7JKRHeapFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void create__12JKRSolidHeapFUlP7JKRHeapb(); -extern "C" void adjustSize__12JKRSolidHeapFv(); -extern "C" void getGlbResource__13JKRFileLoaderFPCc(); -extern "C" void detachResource__13JKRFileLoaderFPvP13JKRFileLoader(); -extern "C" void mount__12JKRFileCacheFPCcP7JKRHeapPCc(); -extern "C" void OSSetStringTable(void*); -extern "C" void _savegpr_23(); -extern "C" void _restgpr_23(); -extern "C" extern void* __vt__20DynamicModuleControl[13]; - -// -// Declarations: -// - /* 80374640-80375DE8 -00001 17A8+00 1/1 0/0 0/0 .rodata DynamicNameTable */ static DynamicNameTableEntry const DynamicNameTable[757] = { {PROC_ALLDIE, "d_a_alldie"}, @@ -827,7 +776,7 @@ static DynamicNameTableEntry const DynamicNameTable[757] = { }; /* 803F0F50-803F1BB0 01DC70 0C60+00 4/4 0/0 0/0 .bss DMC */ -static DynamicModuleControl* DMC[0x318]; +static DynamicModuleControlBase* DMC[0x318]; /* 80450CA8-80450CAC 0001A8 0004+00 1/1 0/0 0/0 .sbss None */ static bool DMC_initialized; @@ -894,7 +843,7 @@ int cDyl_LinkASync(s16 i_ProfName) { return cPhs_ERROR_e; } - DynamicModuleControl* d = DMC[i_ProfName]; + DynamicModuleControlBase* d = DMC[i_ProfName]; if (d != NULL) { if (d->load_async()) { if (d->link()) { @@ -1009,20 +958,8 @@ int cDylPhs::Unlink(request_of_phase_process_class* i_phase, s16 i_ProfName) { /* 800188DC-800188E4 01321C 0008+00 0/0 1/0 0/0 .text getModuleName__24DynamicModuleControlBaseCFv */ -// const char* DynamicModuleControlBase::getModuleName() const { -extern "C" bool getModuleName__24DynamicModuleControlBaseCFv() { - return false; -} /* 800188E4-80018944 013224 0060+00 0/0 1/0 0/0 .text __dt__20DynamicModuleControlFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm DynamicModuleControl::~DynamicModuleControl() { -extern "C" asm void __dt__20DynamicModuleControlFv() { - nofralloc -#include "asm/c/c_dylink/__dt__20DynamicModuleControlFv.s" -} -#pragma pop /* 80375DE8-80375DE8 002448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +