OUTPUT_FORMAT(elf64-x86-64) OUTPUT_ARCH(i386:x86-64) ENTRY(_start) PHDRS { null PT_NULL FLAGS(0) ; text PT_LOAD FLAGS((1 << 0) | (1 << 2)) ; data PT_LOAD FLAGS((1 << 1) | (1 << 2)) ; dynamic PT_DYNAMIC FLAGS((1 << 1) | (1 << 2)) ; } SECTIONS { . = 0; __image_base = .; __image_size = __image_end - __image_base; .text : { *(.pe_header) . = ALIGN(0x1000); *(.text .text.*) . = ALIGN(0x1000); } :text __text_start = __image_base + 0x1000; __text_size = SIZEOF(.text) - 0x1000; __text_end = __text_start + __text_size; .data.sbat : { *(.data.sbat) . = ALIGN(0x1000); } :data PROVIDE(__sbat_sizev = 1); __sbat_start = __text_end; __sbat_size = SIZEOF(.data.sbat); __sbat_end = __sbat_start + __sbat_size; .data.reloc : { *(.data.reloc) . = ALIGN(0x1000); } :data __reloc_start = __sbat_end; __reloc_size = SIZEOF(.data.reloc); __reloc_end = __reloc_start + __reloc_size; .data : { *(.rodata .rodata.*) #ifdef LINKER_NOMAP full_map = .; #else *(.full_map) #endif *(.no_unwind) data_begin = .; *(.data .data.*) *(.bss .bss.*) *(COMMON) data_end = .; } :data .rela : { *(.rela .rela.*) } :data .got : { *(.got .got.*) } :data .dynamic : { *(.dynamic) . = ALIGN(0x1000); } :data :dynamic __data_start = __reloc_end; __data_size = SIZEOF(.data) + SIZEOF(.rela) + SIZEOF(.got) + SIZEOF(.dynamic); __data_end = __data_start + __data_size; __image_end = __data_end; .symtab 0 : { *(.symtab) } :null .strtab 0 : { *(.strtab) } :null .shstrtab 0 : { *(.shstrtab) } :null /DISCARD/ : { *.32.o(.debug*) } .debug_aranges 0 : { *(.debug_aranges) } :null .debug_pubnames 0 : { *(.debug_pubnames) } :null .debug_info 0 : { *(.debug_info) } :null .debug_abbrev 0 : { *(.debug_abbrev) } :null .debug_line 0 : { *(.debug_line) } :null .debug_loclists 0 : { *(.debug_loclists) } :null .debug_rnglists 0 : { *(.debug_rnglists) } :null .debug_frame 0 : { *(.debug_frame) } :null .debug_loc 0 : { *(.debug_loc) } :null .debug_ranges 0 : { *(.debug_ranges) } :null .debug_str 0 : { *(.debug_str) } :null .debug_line_str 0 : { *(.debug_line_str) } :null /DISCARD/ : { *(*) } }