123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #include <asm-generic/vmlinux.lds.h>
- OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT)
- #undef i386
- #include <asm/cache.h>
- #include <asm/page_types.h>
- #ifdef CONFIG_X86_64
- OUTPUT_ARCH(i386:x86-64)
- ENTRY(startup_64)
- #else
- OUTPUT_ARCH(i386)
- ENTRY(startup_32)
- #endif
- SECTIONS
- {
- /* Be careful parts of head_64.S assume startup_32 is at
- * address 0.
- */
- . = 0;
- .head.text : {
- _head = . ;
- HEAD_TEXT
- _ehead = . ;
- }
- .rodata..compressed : {
- *(.rodata..compressed)
- }
- .text : {
- _text = .; /* Text */
- *(.text)
- *(.text.*)
- _etext = . ;
- }
- .rodata : {
- _rodata = . ;
- *(.rodata) /* read-only data */
- *(.rodata.*)
- _erodata = . ;
- }
- .data : {
- _data = . ;
- *(.data)
- *(.data.*)
- *(.bss.efistub)
- _edata = . ;
- }
- . = ALIGN(L1_CACHE_BYTES);
- .bss : {
- _bss = . ;
- *(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(8); /* For convenience during zeroing */
- _ebss = .;
- }
- #ifdef CONFIG_X86_64
- . = ALIGN(PAGE_SIZE);
- .pgtable : {
- _pgtable = . ;
- *(.pgtable)
- _epgtable = . ;
- }
- #endif
- . = ALIGN(PAGE_SIZE); /* keep ZO size page aligned */
- _end = .;
- STABS_DEBUG
- DWARF_DEBUG
- ELF_DETAILS
- DISCARDS
- /DISCARD/ : {
- *(.dynamic) *(.dynsym) *(.dynstr) *(.dynbss)
- *(.hash) *(.gnu.hash)
- *(.note.*)
- }
- .got.plt (INFO) : {
- *(.got.plt)
- }
- ASSERT(SIZEOF(.got.plt) == 0 ||
- #ifdef CONFIG_X86_64
- SIZEOF(.got.plt) == 0x18,
- #else
- SIZEOF(.got.plt) == 0xc,
- #endif
- "Unexpected GOT/PLT entries detected!")
- /*
- * Sections that should stay zero sized, which is safer to
- * explicitly check instead of blindly discarding.
- */
- .got : {
- *(.got)
- }
- ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
- .plt : {
- *(.plt) *(.plt.*)
- }
- ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
- .rel.dyn : {
- *(.rel.*) *(.rel_*)
- }
- ASSERT(SIZEOF(.rel.dyn) == 0, "Unexpected run-time relocations (.rel) detected!")
- .rela.dyn : {
- *(.rela.*) *(.rela_*)
- }
- ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
- }
|