OUTPUT_FORMAT(elf32-i386) OUTPUT_ARCH(i386) ENTRY(_start) PHDRS { 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_start = ABSOLUTE(.); *(.text .text.*) } :text . = ALIGN(0x1000); __text_end = .; __text_size = __text_end - __text_start; .data : { __sbat_start = ABSOLUTE(.); *(.data.sbat) . = ALIGN(0x1000); __sbat_end = ABSOLUTE(.); __sbat_size = ABSOLUTE(__sbat_end - __sbat_start); PROVIDE(__sbat_sizev = ABSOLUTE(0)); __reloc_start = ABSOLUTE(.); *(.data.reloc) . = ALIGN(0x1000); __reloc_end = ABSOLUTE(.); __reloc_size = ABSOLUTE(__reloc_end - __reloc_start); __data_start = ABSOLUTE(.); *(.rodata .rodata.*) #ifdef LINKER_NOMAP full_map = .; #else *(.full_map) #endif *(.no_unwind) data_begin = .; *(.data .data.*) *(.bss .bss.*) *(COMMON) data_end = .; } :data .rel : { *(.rel .rel.*) } :data .got : { *(.got .got.*) } :data .dynamic : { *(.dynamic) . = ALIGN(0x1000); } :data :dynamic __data_end = .; __data_size = __data_end - __data_start; __image_end = .; /DISCARD/ : { *(.eh_frame) *(.note .note.*) } }