2021-03-03 23:40:55 +03:00
|
|
|
OUTPUT_FORMAT(elf32-i386)
|
2021-12-19 03:08:34 +03:00
|
|
|
OUTPUT_ARCH(i386)
|
2021-03-03 23:40:55 +03:00
|
|
|
ENTRY(_start)
|
|
|
|
|
2022-05-19 21:19:29 +03:00
|
|
|
PHDRS
|
|
|
|
{
|
2022-05-20 06:48:59 +03:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2021-03-03 23:40:55 +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
|
2021-03-03 23:40:55 +03:00
|
|
|
|
2022-05-20 06:17:46 +03:00
|
|
|
.data.stage2 : {
|
2021-11-08 11:42:41 +03:00
|
|
|
build_id_s2 = .;
|
2022-05-20 21:02:14 +03:00
|
|
|
KEEP(*build-id.s2.o(*))
|
2021-11-08 11:42:41 +03:00
|
|
|
|
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.*)
|
2022-02-02 20:18:49 +03:00
|
|
|
#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 = .;
|
2022-02-02 20:18:49 +03:00
|
|
|
stage3_addr = .;
|
|
|
|
data_begin = .;
|
|
|
|
#else
|
2021-03-12 07:19:56 +03:00
|
|
|
*(.stage2_map)
|
2022-02-02 20:18:49 +03:00
|
|
|
#endif
|
2022-05-19 21:19:29 +03:00
|
|
|
} :data_s2
|
2021-03-03 23:40:55 +03:00
|
|
|
|
2022-02-02 20:18:49 +03:00
|
|
|
#ifndef LINKER_STAGE2ONLY
|
2022-05-20 06:17:46 +03:00
|
|
|
.text.stage3 : {
|
2021-03-03 23:40:55 +03:00
|
|
|
stage3_addr = .;
|
2021-12-19 03:08:34 +03:00
|
|
|
*(.text .text.*)
|
2022-05-19 21:19:29 +03:00
|
|
|
} :text_s3
|
2021-03-03 23:40:55 +03:00
|
|
|
|
2022-05-20 06:17:46 +03:00
|
|
|
.data.stage3 : {
|
2021-11-08 11:42:41 +03:00
|
|
|
build_id_s3 = .;
|
2022-05-20 21:02:14 +03:00
|
|
|
KEEP(*build-id.s3.o(*))
|
2021-11-08 11:42:41 +03:00
|
|
|
|
2021-12-19 03:08:34 +03:00
|
|
|
*(.rodata .rodata.*)
|
2022-02-02 20:18:49 +03:00
|
|
|
#ifdef LINKER_NOMAP
|
|
|
|
full_map = .;
|
|
|
|
#else
|
2021-12-19 03:08:34 +03:00
|
|
|
*(.full_map)
|
2022-02-02 20:18:49 +03:00
|
|
|
#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
|
2022-02-02 20:18:49 +03:00
|
|
|
#endif
|
2021-03-03 23:40:55 +03:00
|
|
|
|
2022-05-20 06:17:46 +03:00
|
|
|
.note.gnu.build-id : {
|
|
|
|
*(.note.gnu.build-id)
|
|
|
|
limine_sys_size = . - 0x8000;
|
|
|
|
} :data_s3
|
2021-11-08 11:42:41 +03:00
|
|
|
|
2021-03-03 23:40:55 +03:00
|
|
|
.bss : {
|
|
|
|
bss_begin = .;
|
|
|
|
*(COMMON)
|
2021-12-19 03:08:34 +03:00
|
|
|
*(.bss .bss.*)
|
2021-03-03 23:40:55 +03:00
|
|
|
bss_end = .;
|
2021-12-12 20:40:27 +03:00
|
|
|
data_end = .;
|
2022-05-19 21:19:29 +03:00
|
|
|
} :data_s3
|
|
|
|
|
2022-07-05 17:41:27 +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)) }
|
|
|
|
|
2021-03-15 09:32:23 +03:00
|
|
|
/DISCARD/ : {
|
2022-07-05 17:41:27 +03:00
|
|
|
*.a:*(*)
|
2022-05-20 06:48:59 +03:00
|
|
|
*.o(*)
|
2021-03-15 09:32:23 +03:00
|
|
|
}
|
2021-03-03 23:40:55 +03:00
|
|
|
}
|