limine/common/linker_uefi_x86_64.ld.in

137 lines
3.6 KiB
Plaintext
Raw Normal View History

2022-04-20 05:00:00 +03:00
OUTPUT_FORMAT(elf64-x86-64)
2021-04-08 02:15:35 +03:00
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
2022-04-20 05:00:00 +03:00
PHDRS
{
2022-04-25 00:30:28 +03:00
text PT_LOAD FLAGS((1 << 0) | (1 << 2)) ;
data PT_LOAD FLAGS((1 << 1) | (1 << 2)) ;
dynamic PT_DYNAMIC FLAGS((1 << 1) | (1 << 2)) ;
2022-04-20 05:00:00 +03:00
}
2021-04-08 02:15:35 +03:00
SECTIONS
{
2022-04-20 05:00:00 +03:00
. = 0;
__image_base = .;
__image_size = __image_end - __image_base;
2022-04-25 00:30:28 +03:00
.text : {
2022-04-20 05:00:00 +03:00
*(.pe_header)
. = ALIGN(0x1000);
*(.text .text.*)
. = ALIGN(0x1000);
2022-04-25 00:30:28 +03:00
} :text
__text_start = __image_base + 0x1000;
__text_size = SIZEOF(.text) - 0x1000;
__text_end = __text_start + __text_size;
2022-04-20 05:00:00 +03:00
2022-04-25 00:30:28 +03:00
.data.sbat : {
*(.data.sbat)
2022-04-20 05:00:00 +03:00
. = ALIGN(0x1000);
2022-04-25 00:30:28 +03:00
} :data
PROVIDE(__sbat_sizev = 1);
2022-04-20 05:00:00 +03:00
2022-04-25 00:30:28 +03:00
__sbat_start = __text_end;
__sbat_size = SIZEOF(.data.sbat);
__sbat_end = __sbat_start + __sbat_size;
.data.reloc : {
*(.data.reloc)
2022-04-20 05:00:00 +03:00
. = ALIGN(0x1000);
2022-04-25 00:30:28 +03:00
} :data
__reloc_start = __sbat_end;
__reloc_size = SIZEOF(.data.reloc);
__reloc_end = __reloc_start + __reloc_size;
2022-04-20 05:00:00 +03:00
2022-04-25 00:30:28 +03:00
.data : {
2022-04-20 05:00:00 +03:00
*(.rodata .rodata.*)
#ifdef LINKER_NOMAP
2021-12-19 04:22:21 +03:00
full_map = .;
#else
*(.full_map)
#endif
2022-04-20 05:00:00 +03:00
2021-12-19 04:22:21 +03:00
*(.no_unwind)
2022-04-20 05:00:00 +03:00
2021-12-12 20:40:27 +03:00
data_begin = .;
2022-04-20 05:00:00 +03:00
*(.data .data.*)
*(.bss .bss.*)
*(COMMON)
2021-12-12 20:40:27 +03:00
data_end = .;
2022-04-25 00:30:28 +03:00
} :data
2022-04-20 05:00:00 +03:00
.rela : {
*(.rela .rela.*)
2022-04-25 00:30:28 +03:00
} :data
2022-04-20 05:00:00 +03:00
.got : {
*(.got .got.*)
2022-04-25 00:30:28 +03:00
} :data
2022-04-20 05:00:00 +03:00
.dynamic : {
*(.dynamic)
. = ALIGN(0x1000);
2022-04-25 00:30:28 +03:00
} :data :dynamic
__data_start = __reloc_end;
__data_size = SIZEOF(.data) + SIZEOF(.rela) + SIZEOF(.got) + SIZEOF(.dynamic);
__data_end = __data_start + __data_size;
2022-04-20 05:00:00 +03:00
2022-04-25 00:30:28 +03:00
__image_end = __data_end;
2022-04-20 05:00:00 +03:00
/* DWARF section definitions from GNU binutils */
/* Copyright (C) 2014-2022 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. */
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1. */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions. */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2. */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2. */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions. */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/* DWARF 3. */
.debug_pubtypes 0 : { *(.debug_pubtypes) }
.debug_ranges 0 : { *(.debug_ranges) }
/* DWARF 5. */
.debug_addr 0 : { *(.debug_addr) }
.debug_line_str 0 : { *(.debug_line_str) }
.debug_loclists 0 : { *(.debug_loclists) }
.debug_macro 0 : { *(.debug_macro) }
.debug_names 0 : { *(.debug_names) }
.debug_rnglists 0 : { *(.debug_rnglists) }
.debug_str_offsets 0 : { *(.debug_str_offsets) }
.debug_sup 0 : { *(.debug_sup) }
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
2022-04-20 05:00:00 +03:00
/DISCARD/ : {
*.a:*(*)
2022-05-20 07:02:30 +03:00
*.o(*)
2022-04-20 05:00:00 +03:00
}
2021-04-08 02:15:35 +03:00
}