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 (2038B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * GNU linker script for the VDSO library.
      4*
      5 * Copyright (C) 2012 ARM Limited
      6 *
      7 * Author: Will Deacon <will.deacon@arm.com>
      8 * Heavily based on the vDSO linker scripts for other archs.
      9 */
     10
     11#include <linux/const.h>
     12#include <asm/page.h>
     13#include <asm/vdso.h>
     14
     15OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
     16OUTPUT_ARCH(aarch64)
     17
     18SECTIONS
     19{
     20	PROVIDE(_vdso_data = . - __VVAR_PAGES * PAGE_SIZE);
     21#ifdef CONFIG_TIME_NS
     22	PROVIDE(_timens_data = _vdso_data + PAGE_SIZE);
     23#endif
     24	. = VDSO_LBASE + SIZEOF_HEADERS;
     25
     26	.hash		: { *(.hash) }			:text
     27	.gnu.hash	: { *(.gnu.hash) }
     28	.dynsym		: { *(.dynsym) }
     29	.dynstr		: { *(.dynstr) }
     30	.gnu.version	: { *(.gnu.version) }
     31	.gnu.version_d	: { *(.gnu.version_d) }
     32	.gnu.version_r	: { *(.gnu.version_r) }
     33
     34	/*
     35	 * Discard .note.gnu.property sections which are unused and have
     36	 * different alignment requirement from vDSO note sections.
     37	 */
     38	/DISCARD/	: {
     39		*(.note.GNU-stack .note.gnu.property)
     40	}
     41	.note		: { *(.note.*) }		:text	:note
     42
     43	. = ALIGN(16);
     44
     45	.text		: { *(.text*) }			:text	=0xd503201f
     46	PROVIDE (__etext = .);
     47	PROVIDE (_etext = .);
     48	PROVIDE (etext = .);
     49
     50	.dynamic	: { *(.dynamic) }		:text	:dynamic
     51
     52	.rodata		: { *(.rodata*) }		:text
     53
     54	_end = .;
     55	PROVIDE(end = .);
     56
     57	/DISCARD/	: {
     58		*(.data .data.* .gnu.linkonce.d.* .sdata*)
     59		*(.bss .sbss .dynbss .dynsbss)
     60		*(.eh_frame .eh_frame_hdr)
     61	}
     62}
     63
     64/*
     65 * We must supply the ELF program headers explicitly to get just one
     66 * PT_LOAD segment, and set the flags explicitly to make segments read-only.
     67 */
     68PHDRS
     69{
     70	text		PT_LOAD		FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
     71	dynamic		PT_DYNAMIC	FLAGS(4);		/* PF_R */
     72	note		PT_NOTE		FLAGS(4);		/* PF_R */
     73}
     74
     75/*
     76 * This controls what symbols we export from the DSO.
     77 */
     78VERSION
     79{
     80	LINUX_2.6.39 {
     81	global:
     82		__kernel_rt_sigreturn;
     83		__kernel_gettimeofday;
     84		__kernel_clock_gettime;
     85		__kernel_clock_getres;
     86	local: *;
     87	};
     88}
     89
     90/*
     91 * Make the sigreturn code visible to the kernel.
     92 */
     93VDSO_sigtramp		= __kernel_rt_sigreturn;