OUTPUT_FORMAT(elf64-x86-64) ENTRY(_start) MEMORY { code (rx) : ORIGIN = 0x0dfe8000, LENGTH = 0x00001000 data (rw) : ORIGIN = 0x0dff0000, LENGTH = 0x00001000 } SECTIONS { .lnxhead 0x01f1 : ALIGN(1) { *(.lnxhead); } .rodata : ALIGN(1) { *(.rodata); } > data /* this section helps us to coerce the linker into not breaking down because of big addresses */ .text._start 0xdfe8000 : ALIGN(1) { *(.text._start); } > code .text : ALIGN(512) { *(.text); } > code .bss : { *(.bss); } .debug_info 0 : { *(.debug_info); } .debug_abbrev 0 : { *(.debug_abbrev); } .debug_aranges 0 : { *(.debug_aranges); } .debug_rnglists 0 : { *(.debug_rnglists); } .debug_line 0 : { *(.debug_line); } .debug_str 0 : { *(.debug_str); } .debug_line_str 0 : { *(.debug_line_str); } /DISCARD/ : { *(*); } }