limine/common/linker_bios.ld.in

139 lines
3.8 KiB
Plaintext
Raw Normal View History

OUTPUT_FORMAT(elf32-i386)
2021-12-19 03:08:34 +03:00
OUTPUT_ARCH(i386)
ENTRY(_start)
2022-05-19 21:19:29 +03:00
PHDRS
{
text_s2 PT_LOAD FLAGS((1 << 0) | (1 << 2)) ;
data_s2 PT_LOAD FLAGS((1 << 1) | (1 << 2)) ;
text_s3 PT_LOAD FLAGS((1 << 0) | (1 << 2)) ;
data_s3 PT_LOAD FLAGS((1 << 1) | (1 << 2)) ;
2022-05-19 21:19:29 +03:00
}
SECTIONS
{
. = 0x8000;
2022-05-20 06:17:46 +03:00
.text.stage2 : {
2021-12-19 03:08:34 +03:00
*(.entry)
*(.realmode)
*.s2.o(.text .text.*)
2022-06-21 09:47:48 +03:00
*libgcc*.a:*(.text .text.*)
2022-05-19 21:19:29 +03:00
} :text_s2
2022-05-20 06:17:46 +03:00
.data.stage2 : {
build_id_s2 = .;
KEEP(*build-id.s2.o(*))
2021-12-19 03:08:34 +03:00
*.s2.o(.no_unwind)
s2_data_begin = .;
*.s2.o(.data .data.*)
2022-06-21 09:47:48 +03:00
*libgcc*.a:*(.data .data.*)
2021-12-19 03:08:34 +03:00
s2_data_end = .;
*.s2.o(.rodata .rodata.*)
2022-06-21 09:47:48 +03:00
*libgcc*.a:*(.rodata .rodata.*)
#ifdef LINKER_STAGE2ONLY
/* stage2 missing symbols overrides */
stage2_map = .;
stage3_common = .;
build_id_s3 = .;
full_map = .;
getchar_internal = .;
getchar = .;
menu = .;
term_write = .;
term_textmode = .;
2022-03-14 14:03:12 +03:00
term_vbe = .;
stage3_addr = .;
data_begin = .;
#else
*(.stage2_map)
#endif
2022-05-19 21:19:29 +03:00
} :data_s2
#ifndef LINKER_STAGE2ONLY
2022-05-20 06:17:46 +03:00
.text.stage3 : {
stage3_addr = .;
2021-12-19 03:08:34 +03:00
*(.text .text.*)
2022-05-19 21:19:29 +03:00
} :text_s3
2022-05-20 06:17:46 +03:00
.data.stage3 : {
build_id_s3 = .;
KEEP(*build-id.s3.o(*))
2021-12-19 03:08:34 +03:00
*(.rodata .rodata.*)
#ifdef LINKER_NOMAP
full_map = .;
#else
2021-12-19 03:08:34 +03:00
*(.full_map)
#endif
2021-12-19 03:08:34 +03:00
*(.no_unwind)
2021-12-12 20:40:27 +03:00
data_begin = .;
2021-12-19 03:08:34 +03:00
*(.data .data.*)
2022-05-19 21:19:29 +03:00
} :data_s3
#endif
2022-05-20 06:17:46 +03:00
.note.gnu.build-id : {
*(.note.gnu.build-id)
limine_sys_size = . - 0x8000;
} :data_s3
.bss : {
bss_begin = .;
*(COMMON)
2021-12-19 03:08:34 +03:00
*(.bss .bss.*)
bss_end = .;
2021-12-12 20:40:27 +03:00
data_end = .;
2022-05-19 21:19:29 +03:00
} :data_s3
/* 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)) }
/DISCARD/ : {
*.a:*(*)
*.o(*)
}
}