118 lines
2.0 KiB
ArmAsm
118 lines
2.0 KiB
ArmAsm
|
/* 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!")
|
||
|
}
|