mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-01-22 11:04:35 +00:00
(WiiU) add missing file.
This commit is contained in:
parent
7ac906ea80
commit
3cb5ab32f5
253
wiiu/link_rpl.ld
Normal file
253
wiiu/link_rpl.ld
Normal file
@ -0,0 +1,253 @@
|
||||
OUTPUT_FORMAT("elf32-powerpc")
|
||||
OUTPUT_ARCH(powerpc:common)
|
||||
|
||||
ENTRY(_start)
|
||||
|
||||
MEMORY {
|
||||
system (rwx) : ORIGIN = 0x01000000, LENGTH = 32M
|
||||
code (rwx) : ORIGIN = 0x02000000, LENGTH = 224M
|
||||
data (rw) : ORIGIN = 0x10000000, LENGTH = 800M
|
||||
load (rwx) : ORIGIN = 0xC0000000, LENGTH = 128M
|
||||
}
|
||||
|
||||
PHDRS {
|
||||
hdr_text PT_LOAD FILEHDR PHDRS FLAGS(0x01 | 0x04);
|
||||
hdr_data PT_LOAD FLAGS(0x02 | 0x04);
|
||||
hdr_srodata PT_LOAD FLAGS(0x04);
|
||||
hdr_sdata PT_LOAD FLAGS(0x02 | 0x04);
|
||||
}
|
||||
|
||||
SECTIONS {
|
||||
. = ORIGIN(code);
|
||||
|
||||
.syscall ALIGN(32) : { *(.syscall) } : hdr_text
|
||||
|
||||
/* Standard code section */
|
||||
.text ALIGN(32) : {
|
||||
/* .init */
|
||||
KEEP( *(.crt0) )
|
||||
KEEP( *(.init) )
|
||||
. = ALIGN(4);
|
||||
|
||||
/* .text */
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.rodata .rodata.*)
|
||||
*(.gnu.linkonce.r.*)
|
||||
*(.rodata1)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.stub)
|
||||
*(.gnu.warning)
|
||||
*(.gnu.linkonce.t*)
|
||||
. = ALIGN(4);
|
||||
|
||||
*(.rplTramp.text)
|
||||
*(SORT(.rplTramp.text.*))
|
||||
. = ALIGN(4);
|
||||
|
||||
/* .fini */
|
||||
KEEP( *(.fini) )
|
||||
. = ALIGN(4);
|
||||
|
||||
} : hdr_text
|
||||
|
||||
/* Standard data sections */
|
||||
. = ORIGIN(data);
|
||||
|
||||
.data ALIGN(256) : {
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.eh_frame)
|
||||
*(.eh_frame_hdr)
|
||||
*(.gnu.linkonce.d.*)
|
||||
SORT(CONSTRUCTORS)
|
||||
|
||||
. = ALIGN(32);
|
||||
__sdata_start = .;
|
||||
*(.sdata)
|
||||
*(.sdata.*)
|
||||
__sdata_end = .;
|
||||
|
||||
. = ALIGN(32);
|
||||
__sdata2_start = .;
|
||||
*(.sdata2)
|
||||
*(.sdata2.*)
|
||||
*(.gnu.linkonce.s2.*)
|
||||
__sdata2_end = .;
|
||||
} : hdr_sdata
|
||||
|
||||
.tdata ALIGN(256) :
|
||||
{
|
||||
__tdata_lma = .;
|
||||
*(.tdata)
|
||||
*(.tdata.*)
|
||||
*(.gnu.linkonce.td.*)
|
||||
. = ALIGN(4);
|
||||
__tdata_lma_end = .;
|
||||
} : hdr_data
|
||||
|
||||
.preinit_array ALIGN(256) :
|
||||
{
|
||||
PROVIDE (__preinit_array_start = .);
|
||||
KEEP (*(.preinit_array))
|
||||
PROVIDE (__preinit_array_end = .);
|
||||
} : hdr_data
|
||||
|
||||
.init_array ALIGN(256) :
|
||||
{
|
||||
PROVIDE (__init_array_start = .);
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
PROVIDE (__init_array_end = .);
|
||||
} : hdr_data
|
||||
|
||||
.fini_array ALIGN(256) :
|
||||
{
|
||||
PROVIDE (__fini_array_start = .);
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
PROVIDE (__fini_array_end = .);
|
||||
} : hdr_data
|
||||
|
||||
.ctors ALIGN(256) :
|
||||
{
|
||||
KEEP (*crtbegin.o(.ctors)) /* MUST be first -- GCC requires it */
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
} : hdr_data
|
||||
|
||||
.dtors ALIGN(256) :
|
||||
{
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
} : hdr_data
|
||||
|
||||
__bss_start__ = .;
|
||||
.bss ALIGN(256) :
|
||||
{
|
||||
*(.dynbss)
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(.gnu.linkonce.b*)
|
||||
*(COMMON)
|
||||
. = ALIGN(32);
|
||||
|
||||
__sbss_start = .;
|
||||
*(.sbss)
|
||||
*(.sbss.*)
|
||||
__sbss_end = .;
|
||||
. = ALIGN(32);
|
||||
|
||||
__sbss2_start = .;
|
||||
*(.sbss2)
|
||||
*(.sbss2.*)
|
||||
*(.gnu.linkonce.sb2.*)
|
||||
__sbss2_end = .;
|
||||
. = ALIGN(32);
|
||||
|
||||
/* Reserve space for the TLS segment of the main thread */
|
||||
__tls_start = .;
|
||||
|
||||
__tbss_start = .;
|
||||
*(.tbss)
|
||||
*(.tbss.*)
|
||||
*(.gnu.linkonce.tb.*)
|
||||
*(.tcommon)
|
||||
__tbss_end = .;
|
||||
|
||||
. += + SIZEOF(.tdata);
|
||||
__tls_end = .;
|
||||
. = ALIGN(32);
|
||||
} : hdr_data
|
||||
__bss_end__ = .;
|
||||
|
||||
/* System stuff is for our elf2rpl converter to go through */
|
||||
. = ORIGIN(system);
|
||||
|
||||
/* Contains the name of RPLs, referenced by .lib.rplLibs */
|
||||
.rodata.rplNames ALIGN(32) : {
|
||||
*(.rodata.rplNames)
|
||||
} : hdr_data
|
||||
|
||||
/*
|
||||
* List of RPL libraries to import, in format:
|
||||
* uint32_t nameAddress -> .rodata.rplNames
|
||||
* uint32_t firstFuncEntry -> .data.rplFuncStubs
|
||||
*/
|
||||
.lib.rplLibs ALIGN(32) : {
|
||||
*(.lib.rplLibs)
|
||||
KEEP (*(.lib.rplLibs*))
|
||||
}
|
||||
|
||||
/*
|
||||
* List of functions an RPL exports, in format:
|
||||
* uint32_t trampAddress
|
||||
*/
|
||||
.data.rplFuncStubs ALIGN(32) : {
|
||||
*(.data.rplFuncStubs)
|
||||
}
|
||||
|
||||
/* Required compiler trash */
|
||||
.fixup ALIGN(32) : { *(.fixup*) }
|
||||
.got ALIGN(32) : { *(.got*) }
|
||||
.gcc_except_table ALIGN(32) : { *(.gcc_except_table*) }
|
||||
.hash ALIGN(32) : { *(.hash) }
|
||||
.dynsym ALIGN(32) : { *(.dynsym) }
|
||||
|
||||
/* Put all dynamic loader relocations into one section */
|
||||
.rela.dyn ALIGN(32) : {
|
||||
*(.rela.dyn)
|
||||
*(.rela.data.rplFuncStubs)
|
||||
*(.rela.lib.rplLibs)
|
||||
}
|
||||
|
||||
/* Relocations for .rodata sections */
|
||||
.rela.rodata ALIGN(32) :
|
||||
{
|
||||
*(.rela.rodata .rela.rodata.*)
|
||||
}
|
||||
|
||||
/* Relocations for .text sections */
|
||||
.rela.text ALIGN(32) :
|
||||
{
|
||||
*(.rela.text .rela.text.*)
|
||||
*(.rela.rplTramp.text)
|
||||
}
|
||||
|
||||
/* Relocations for .data sections */
|
||||
.rela.data ALIGN(32) :
|
||||
{
|
||||
*(.rela.data .rela.data.*)
|
||||
}
|
||||
|
||||
/* Relocations for .bss sections */
|
||||
.rela.bss ALIGN(32) :
|
||||
{
|
||||
*(.rela.bss .rela.bss.*)
|
||||
}
|
||||
|
||||
/* Symbol tables */
|
||||
.shstrtab ALIGN(32) : { *(.shstrtab) }
|
||||
.symtab ALIGN(32) : { *(.symtab) }
|
||||
.strtab ALIGN(32) : { *(.strtab) }
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.interp)
|
||||
*(.dynstr)
|
||||
*(.dynamic)
|
||||
*(.comment)
|
||||
}
|
||||
|
||||
__SDATA_START__ = __sdata_start;
|
||||
__SBSS_END__ = __sbss_end;
|
||||
|
||||
__SDATA2_START__ = __sdata2_start;
|
||||
__SBSS2_END__ = __sbss2_end;
|
||||
|
||||
_SDA_BASE_ = __sbss_end;
|
||||
_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user