finishes sections definitions not using PHDRs

This commit is contained in:
2026-02-01 21:48:30 +01:00
parent f3232373fe
commit c691642555

View File

@@ -1,12 +1,3 @@
PHDRS
{
text PT_LOAD;
data PT_LOAD;
tls PT_TLS;
stack PT_NULL;
}
SECTIONS
{
__stack_size = DEFINED(__stack_size) ? __stack_size : 2K;
@@ -22,13 +13,13 @@ SECTIONS
*(.srodata .srodata.*)
KEEP(*(.init))
KEEP(*(.fini))
} > LOCATION_TEXT :text
} > LOCATION_TEXT
/* trap/interrupt vectors */
.vectors : ALIGN(256)
{
KEEP(*(.vectors .vectors.*))
} > LOCATION_TEXT
} > LOCATION_TEXT
/* C++ ctors/dtors */
.init_array : ALIGN(4)
@@ -37,7 +28,7 @@ SECTIONS
KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN(__init_array_end = .);
} > LOCATION_TEXT :text
} > LOCATION_TEXT
.fini_array : ALIGN(4)
{
@@ -45,21 +36,25 @@ SECTIONS
KEEP(*(SORT_BY_INIT_PRIORITY(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN(__fini_array_end = .);
} > LOCATION_TEXT :text
} > LOCATION_TEXT
.data_mark (NOLOAD) : ALIGN(4)
{
} > LOCATION_DATA
__data_offs = ((ADDR(.data_mark) == 0) ? 0x10 : 0);
.data_pad (NOLOAD) : ALIGN(4)
{
} > LOCATION_DATA :data
__data_offs = ((ADDR(.data_pad) == 0) ? 0x10 : 0);
. += __data_offs;
} > LOCATION_DATA
/* .data in LOCATION_DATA, Load-Image in LOCATION_TEXT, PHDR is data */
.data : ALIGN(4)
{
. += __data_offs;
__data_start = .;
*(.data .data.*)
*(.sdata .sdata.*)
__data_end = .;
} > LOCATION_DATA AT> LOCATION_TEXT :data
} > LOCATION_DATA AT> LOCATION_TEXT
__data_source = LOADADDR(.data);
/* TLS: in LOCATION_DATA, initial values are in LOCATION_TEXT, PHDR is tls */
@@ -78,18 +73,18 @@ SECTIONS
__tbss_size = __tbss_end - __tbss_start;
__tls_size = __tbss_end - __tls_base;
} > LOCATION_DATA AT> LOCATION_TEXT :tls
} > LOCATION_DATA AT> LOCATION_TEXT
__tdata_source = LOADADDR(.tls);
/* normales BSS (inkl. sbss), PHDR is data */
.bss (NOLOAD) : ALIGN(16)
{
__bss_start = .;
*(.sbss .sbss.*)
*(.bss .bss.*)
*(.sbss .sbss.*)
*(COMMON)
__bss_end = .;
} > LOCATION_DATA :data
} > LOCATION_DATA
__global_pointer$ = .;
@@ -105,7 +100,7 @@ SECTIONS
PROVIDE( _heap_end = . );
. = __stack_segment_size;
PROVIDE( _sp = . );
} >LOCATION_STACK AT>LOCATION_STACK :stack
} >LOCATION_STACK AT>LOCATION_STACK
PROVIDE( tohost = . );
PROVIDE( fromhost = . + 8 );