diff options
Diffstat (limited to 'src/kernel.ld')
-rw-r--r-- | src/kernel.ld | 71 |
1 files changed, 39 insertions, 32 deletions
diff --git a/src/kernel.ld b/src/kernel.ld index d1f2cef42..c2bcc2304 100644 --- a/src/kernel.ld +++ b/src/kernel.ld @@ -28,52 +28,59 @@ SECTIONS . = base_load_address; .text ALIGN(0x1000): { - *(.text.intvects) - . = text_load_address; + *(.text.intvects) + . = text_load_address; *(.text.kernelasm) - *(.text) - *(.text._*) + *(.text) + *(.text._*) *(.text.*) - *(.rodata) - *(.rodata.*) - . = ALIGN(0x8); - ctor_start_address = .; - *(.ctors) - ctor_end_address = .; } - - .data ALIGN(0x1000): { - data_load_address = .; - *(.data) - *(.data.*) - *(.branch_lt) - toc_load_address = .; - *(.toc) - *(.opd) - *(.got) + .rodata ALIGN(0x8): { + __minimum_data_start_addr = ALIGN(0x1000); + ctor_start_address = .; + *(.ctors) + ctor_end_address = .; + *(.rodata) + *(.rodata.*) + toc_load_address = .; + *(.toc) + *(.opd) + *(.got) + *(.plt) + *(.data.rel.ro.*) + *(.data.*traceData_codeInfo*) + + . = __minimum_data_start_addr > . ? __minimum_data_start_addr : .; + } + + .data ALIGN(0x8): { + data_load_address = .; + *(.data) + *(.data.*) - *(.bss) - *(.bss.*) + *(.bss) + *(.bss.*) } end_load_address = .; - .dynstr : { - *(.dynstr) - } - .rela : { - *(.rela.*) + *(.rela.*) } - + + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .eh_frame : { *(.eh_frame) } /DISCARD/ : { - *(.comment) - *(.gnu.attributes) - *(.dtors) - *(.interp) + *(.comment) + *(.gnu.attributes) + *(.dtors) + *(.interp) } } |