/*********************************************************************************/ /* Module Name: linker.ld */ /* Project: AurixOS */ /* */ /* Copyright (c) 2024-2025 Jozef Nagy */ /* */ /* This source is subject to the MIT License. */ /* See License.txt in the root of this repository. */ /* All other rights reserved. */ /* */ /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR */ /* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */ /* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */ /* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */ /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, */ /* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */ /* SOFTWARE. */ /*********************************************************************************/ OUTPUT_FORMAT(elf64-x86-64) OUTPUT_ARCH(i386:x86-64) ENTRY(_start) PHDRS { text PT_LOAD FLAGS((1 << 0) | (1 << 2)); rodata PT_LOAD FLAGS(1 << 2); data PT_LOAD FLAGS((1 << 1) | (1 << 2)); dynamic PT_DYNAMIC FLAGS((1 << 1) | (1 << 2)); } SECTIONS { /* AxBoot remaps this to 0xffffffff80000000 for us */ . = 0x1000; _linker_start_text = .; .text : { *(.text .text.*) } :text _linker_end_text = .; . = ALIGN(CONSTANT(MAXPAGESIZE)); _linker_start_rodata = .; .rodata : { *(.rodata .rodata.*) } :rodata _linker_end_rodata = .; . = ALIGN(CONSTANT(MAXPAGESIZE)); _linker_start_data = .; .data : { *(.data .data.*) } :data .dynamic : { *(.dynamic) } :data :dynamic .bss : { *(COMMON) *(.bss .bss.*) } :data _linker_end_data = .; /DISCARD/ : { *(.eh_frame) *(.note .note.*) } }