Modified how patch elf is linked to prevent address conflicts with vanilla symbols, update RT64

This commit is contained in:
Mr-Wiseguy 2024-03-20 22:16:51 -04:00
parent 40d0b20939
commit 8db2c655c3
4 changed files with 14 additions and 7 deletions

@ -1 +1 @@
Subproject commit a14ada8fd7c8a9c93c896ee594fbaca583c02d17 Subproject commit 482b9c9e48e97627b374a997dc8e21116af712e7

View File

@ -7,7 +7,7 @@ OBJCOPY := llvm-objcopy
CFLAGS := -target mips -mips2 -mabi=32 -O2 -mno-abicalls -mno-odd-spreg -fomit-frame-pointer -ffast-math -fno-unsafe-math-optimizations -mno-check-zero-division -G0 -Wall -Wextra -Wno-incompatible-library-redeclaration -Wno-unused-parameter -Wno-unknown-pragmas -Wno-unused-variable -Wno-missing-braces -Wno-unsupported-floating-point-opt CFLAGS := -target mips -mips2 -mabi=32 -O2 -mno-abicalls -mno-odd-spreg -fomit-frame-pointer -ffast-math -fno-unsafe-math-optimizations -mno-check-zero-division -G0 -Wall -Wextra -Wno-incompatible-library-redeclaration -Wno-unused-parameter -Wno-unknown-pragmas -Wno-unused-variable -Wno-missing-braces -Wno-unsupported-floating-point-opt
CPPFLAGS := -nostdinc -D_LANGUAGE_C -DMIPS -I. -I ../lib/mm-decomp/include -I ../lib/mm-decomp/src -I ../lib/mm-decomp/assets -I../lib/rt64/include CPPFLAGS := -nostdinc -D_LANGUAGE_C -DMIPS -I. -I ../lib/mm-decomp/include -I ../lib/mm-decomp/src -I ../lib/mm-decomp/assets -I../lib/rt64/include
LDFLAGS := -nostdlib -T patches.ld -T syms.ld --just-symbols=../mm.us.rev1.elf --allow-multiple-definition LDFLAGS := -nostdlib -T patches.ld -T syms.ld --just-symbols=../mm.us.rev1.elf --allow-multiple-definition
BINFLAGS := -O binary BINFLAGS := -O binary --remove-section=.bss --remove-section=.pad --remove-section=.text
C_SRCS := $(wildcard *.c) C_SRCS := $(wildcard *.c)
C_OBJS := $(C_SRCS:.c=.o) C_OBJS := $(C_SRCS:.c=.o)

View File

@ -1,17 +1,24 @@
RAMBASE = 0x80800100; /* Used to hold any new symbols */ RAMBASE = 0x80800100; /* Used to hold any new symbols */
EXTRA_RAM_SIZE = 0x01000000; /* Amount of extra ram allocated by recomp */
MEMORY { MEMORY {
extram : ORIGIN = RAMBASE, LENGTH = 8M extram : ORIGIN = RAMBASE, LENGTH = 64M
rom : ORIGIN = 0, LENGTH = 1M rom : ORIGIN = 0, LENGTH = 64M
} }
SECTIONS { SECTIONS {
.text : { *(.text*) } >extram AT >rom
.ctors : { *(.ctors*) *(.init_array*) } >extram AT >rom .ctors : { *(.ctors*) *(.init_array*) } >extram AT >rom
.dtors : { *(.dtors*) } >extram AT >rom .dtors : { *(.dtors*) } >extram AT >rom
.rodata : { *(.rodata*) } >extram AT >rom .rodata : { *(.rodata*) } >extram AT >rom
.data : { *(.data*) } >extram AT >rom .data : { *(.data*) } >extram AT >rom
.bss (NOLOAD) : { *(.bss*) *(COMMON) } >extram
/* The following sections will be removed from the objcopy */
/* bss isn't noload to make .text rom addresses valid for the recompiler */
.bss : { *(.bss*) *(COMMON) } >extram AT >rom
ASSERT(. < RAMBASE + EXTRA_RAM_SIZE, "Maxed out recomp extra ram")
/* Padding to push .text to avoid conflicts with original function addresses */
.pad : { . += 0x1000000; } >extram AT >rom
.text : { *(.text*) } >extram AT >rom
.symtab 0 : { *(.symtab) } .symtab 0 : { *(.symtab) }
.strtab 0 : { *(.strtab) } .strtab 0 : { *(.strtab) }

View File

@ -6,7 +6,7 @@
#include "nfd.h" #include "nfd.h"
#include <filesystem> #include <filesystem>
std::string version_number = "v0.9.0"; std::string version_number = "v0.9.0-dirty";
Rml::DataModelHandle model_handle; Rml::DataModelHandle model_handle;
bool mm_rom_valid = false; bool mm_rom_valid = false;