cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vmlinux.lds.S (2062B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <asm-generic/vmlinux.lds.h>
      3
      4OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT)
      5
      6#undef i386
      7
      8#include <asm/cache.h>
      9#include <asm/page_types.h>
     10
     11#ifdef CONFIG_X86_64
     12OUTPUT_ARCH(i386:x86-64)
     13ENTRY(startup_64)
     14#else
     15OUTPUT_ARCH(i386)
     16ENTRY(startup_32)
     17#endif
     18
     19SECTIONS
     20{
     21	/* Be careful parts of head_64.S assume startup_32 is at
     22	 * address 0.
     23	 */
     24	. = 0;
     25	.head.text : {
     26		_head = . ;
     27		HEAD_TEXT
     28		_ehead = . ;
     29	}
     30	.rodata..compressed : {
     31		*(.rodata..compressed)
     32	}
     33	.text :	{
     34		_text = .; 	/* Text */
     35		*(.text)
     36		*(.text.*)
     37		_etext = . ;
     38	}
     39	.rodata : {
     40		_rodata = . ;
     41		*(.rodata)	 /* read-only data */
     42		*(.rodata.*)
     43		_erodata = . ;
     44	}
     45	.data :	{
     46		_data = . ;
     47		*(.data)
     48		*(.data.*)
     49		*(.bss.efistub)
     50		_edata = . ;
     51	}
     52	. = ALIGN(L1_CACHE_BYTES);
     53	.bss : {
     54		_bss = . ;
     55		*(.bss)
     56		*(.bss.*)
     57		*(COMMON)
     58		. = ALIGN(8);	/* For convenience during zeroing */
     59		_ebss = .;
     60	}
     61#ifdef CONFIG_X86_64
     62       . = ALIGN(PAGE_SIZE);
     63       .pgtable : {
     64		_pgtable = . ;
     65		*(.pgtable)
     66		_epgtable = . ;
     67	}
     68#endif
     69	. = ALIGN(PAGE_SIZE);	/* keep ZO size page aligned */
     70	_end = .;
     71
     72	STABS_DEBUG
     73	DWARF_DEBUG
     74	ELF_DETAILS
     75
     76	DISCARDS
     77	/DISCARD/ : {
     78		*(.dynamic) *(.dynsym) *(.dynstr) *(.dynbss)
     79		*(.hash) *(.gnu.hash)
     80		*(.note.*)
     81	}
     82
     83	.got.plt (INFO) : {
     84		*(.got.plt)
     85	}
     86	ASSERT(SIZEOF(.got.plt) == 0 ||
     87#ifdef CONFIG_X86_64
     88	       SIZEOF(.got.plt) == 0x18,
     89#else
     90	       SIZEOF(.got.plt) == 0xc,
     91#endif
     92	       "Unexpected GOT/PLT entries detected!")
     93
     94	/*
     95	 * Sections that should stay zero sized, which is safer to
     96	 * explicitly check instead of blindly discarding.
     97	 */
     98	.got : {
     99		*(.got)
    100	}
    101	ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
    102
    103	.plt : {
    104		*(.plt) *(.plt.*)
    105	}
    106	ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
    107
    108	.rel.dyn : {
    109		*(.rel.*) *(.rel_*)
    110	}
    111	ASSERT(SIZEOF(.rel.dyn) == 0, "Unexpected run-time relocations (.rel) detected!")
    112
    113	.rela.dyn : {
    114		*(.rela.*) *(.rela_*)
    115	}
    116	ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
    117}