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

vdso.lds.S (2603B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Copyright (C) 2015 Imagination Technologies
      4 * Author: Alex Smith <alex.smith@imgtec.com>
      5 */
      6
      7#include <asm/sgidefs.h>
      8
      9#if _MIPS_SIM == _MIPS_SIM_ABI64
     10OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips", "elf64-tradlittlemips")
     11#elif _MIPS_SIM == _MIPS_SIM_NABI32
     12OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips", "elf32-ntradlittlemips")
     13#else
     14OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips", "elf32-tradlittlemips")
     15#endif
     16
     17OUTPUT_ARCH(mips)
     18
     19SECTIONS
     20{
     21	PROVIDE(_start = .);
     22	. = SIZEOF_HEADERS;
     23
     24	/*
     25	 * In order to retain compatibility with older toolchains we provide the
     26	 * ABI flags section ourself. Newer assemblers will automatically
     27	 * generate .MIPS.abiflags sections so we discard such input sections,
     28	 * and then manually define our own section here. genvdso will patch
     29	 * this section to have the correct name/type.
     30	 */
     31	.mips_abiflags	: { *(.mips_abiflags) } 	:text :abiflags
     32
     33	.reginfo	: { *(.reginfo) }		:text :reginfo
     34
     35	.hash		: { *(.hash) }			:text
     36	.gnu.hash	: { *(.gnu.hash) }
     37	.dynsym		: { *(.dynsym) }
     38	.dynstr		: { *(.dynstr) }
     39	.gnu.version	: { *(.gnu.version) }
     40	.gnu.version_d	: { *(.gnu.version_d) }
     41	.gnu.version_r	: { *(.gnu.version_r) }
     42
     43	.note		: { *(.note.*) }		:text :note
     44
     45	.text		: { *(.text*) }			:text
     46	PROVIDE (__etext = .);
     47	PROVIDE (_etext = .);
     48	PROVIDE (etext = .);
     49
     50	.eh_frame_hdr	: { *(.eh_frame_hdr) }		:text :eh_frame_hdr
     51	.eh_frame	: { KEEP (*(.eh_frame)) }	:text
     52
     53	.dynamic	: { *(.dynamic) }		:text :dynamic
     54
     55	.rodata		: { *(.rodata*) }		:text
     56
     57	_end = .;
     58	PROVIDE(end = .);
     59
     60	/DISCARD/	: {
     61		*(.MIPS.abiflags)
     62		*(.gnu.attributes)
     63		*(.note.GNU-stack)
     64		*(.data .data.* .gnu.linkonce.d.* .sdata*)
     65		*(.bss .sbss .dynbss .dynsbss)
     66	}
     67}
     68
     69PHDRS
     70{
     71	/*
     72	 * Provide a PT_MIPS_ABIFLAGS header to assign the ABI flags section
     73	 * to. We can specify the header type directly here so no modification
     74	 * is needed later on.
     75	 */
     76	abiflags	0x70000003;
     77
     78	/*
     79	 * The ABI flags header must exist directly after the PT_INTERP header,
     80	 * so we must explicitly place the PT_MIPS_REGINFO header after it to
     81	 * stop the linker putting one in at the start.
     82	 */
     83	reginfo		0x70000000;
     84
     85	text		PT_LOAD		FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
     86	dynamic		PT_DYNAMIC	FLAGS(4);		/* PF_R */
     87	note		PT_NOTE		FLAGS(4);		/* PF_R */
     88	eh_frame_hdr	PT_GNU_EH_FRAME;
     89}
     90
     91VERSION
     92{
     93	LINUX_2.6 {
     94#ifndef CONFIG_MIPS_DISABLE_VDSO
     95	global:
     96		__vdso_clock_gettime;
     97		__vdso_gettimeofday;
     98		__vdso_clock_getres;
     99#if _MIPS_SIM != _MIPS_SIM_ABI64
    100		__vdso_clock_gettime64;
    101#endif
    102#endif
    103	local: *;
    104	};
    105}