limine/common/linker_bios.ld.in

109 lines
2.0 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)) ;
rodata_s2 PT_LOAD FLAGS((1 << 2)) ;
data_s2 PT_LOAD FLAGS((1 << 1) | (1 << 2)) ;
text_s3 PT_LOAD FLAGS((1 << 0) | (1 << 2)) ;
rodata_s3 PT_LOAD FLAGS((1 << 2)) ;
data_s3 PT_LOAD FLAGS((1 << 1) | (1 << 2)) ;
2022-05-19 21:19:29 +03:00
}
SECTIONS
{
. = 0xf000;
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-05-19 21:19:29 +03:00
} :text_s2
.rodata.stage2 : {
*.s2.o(.rodata .rodata.*)
build_id_s2 = .;
KEEP(*build-id.s2.o(*))
#ifdef LINKER_STAGE2ONLY
/* stage2 missing symbols overrides */
stage2_map = .;
stage3_common = .;
build_id_s3 = .;
full_map = .;
getchar = .;
menu = .;
2023-03-29 23:43:06 +03:00
flanterm_write = .;
2022-09-23 21:53:14 +03:00
term_backend = .;
term_fallback = .;
term_notready = .;
terms = .;
terms_i = .;
serial_out = .;
stage3_addr = .;
2022-09-14 03:16:05 +03:00
#else
#ifdef LINKER_NOS2MAP
2022-09-14 03:16:05 +03:00
stage2_map = .;
#else
*(.stage2_map)
2022-09-14 03:16:05 +03:00
#endif
#endif
} :rodata_s2
.data.stage2 : {
s2_data_begin = .;
*.s2.o(.data .data.*)
s2_data_end = .;
*.s2.o(.no_unwind)
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
.rodata.stage3 : {
*(.rodata .rodata.*)
build_id_s3 = .;
KEEP(*build-id.s3.o(*))
#ifdef LINKER_NOMAP
full_map = .;
#else
2021-12-19 03:08:34 +03:00
*(.full_map)
#endif
} :rodata_s3
.data.stage3 : {
2021-12-12 20:40:27 +03:00
data_begin = .;
2021-12-19 03:08:34 +03:00
*(.data .data.*)
data_end = .;
*(.no_unwind)
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)
2023-06-15 03:02:32 +03:00
limine_bios_sys_size = . - 0xf000;
2022-05-20 06:17:46 +03:00
} :data_s3
.bss : {
bss_begin = .;
2021-12-19 03:08:34 +03:00
*(.bss .bss.*)
2023-07-15 02:10:06 +03:00
*(COMMON)
bss_end = .;
2022-05-19 21:19:29 +03:00
} :data_s3
/DISCARD/ : {
*(.eh_frame)
*(.note .note.*)
}
}