xref: /freebsd/sys/conf/vdso_amd64.ldscript (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
1ab4524b3SKonstantin Belousov/*-
2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause
3ab4524b3SKonstantin Belousov *
4ab4524b3SKonstantin Belousov * Copyright (c) 2021 The FreeBSD Foundation
5ab4524b3SKonstantin Belousov *
6ab4524b3SKonstantin Belousov * This software was developed by Konstantin Belousov <kib@FreeBSD.org>
7ab4524b3SKonstantin Belousov * under sponsorship from the FreeBSD Foundation.
8ab4524b3SKonstantin Belousov *
9ab4524b3SKonstantin Belousov * Redistribution and use in source and binary forms, with or without
10ab4524b3SKonstantin Belousov * modification, are permitted provided that the following conditions
11ab4524b3SKonstantin Belousov * are met:
12ab4524b3SKonstantin Belousov * 1. Redistributions of source code must retain the above copyright
13ab4524b3SKonstantin Belousov *    notice, this list of conditions and the following disclaimer.
14ab4524b3SKonstantin Belousov * 2. Redistributions in binary form must reproduce the above copyright
15ab4524b3SKonstantin Belousov *    notice, this list of conditions and the following disclaimer in the
16ab4524b3SKonstantin Belousov *    documentation and/or other materials provided with the distribution.
17ab4524b3SKonstantin Belousov *
18ab4524b3SKonstantin Belousov * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19ab4524b3SKonstantin Belousov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20ab4524b3SKonstantin Belousov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21ab4524b3SKonstantin Belousov * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22ab4524b3SKonstantin Belousov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23ab4524b3SKonstantin Belousov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24ab4524b3SKonstantin Belousov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25ab4524b3SKonstantin Belousov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26ab4524b3SKonstantin Belousov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27ab4524b3SKonstantin Belousov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28ab4524b3SKonstantin Belousov * SUCH DAMAGE.
29ab4524b3SKonstantin Belousov */
30ab4524b3SKonstantin Belousov
31ab4524b3SKonstantin Belousov/*
32ab4524b3SKonstantin Belousov * Linker script for amd64 vdso.
33ab4524b3SKonstantin Belousov */
34ab4524b3SKonstantin Belousov
35fd8d4e53SKonstantin Belousov/*
36fd8d4e53SKonstantin Belousov * The OUTPUT_ARCH and TARGET lines are for ld.bfd.
37fd8d4e53SKonstantin Belousov * lld doesn't do much with them, the only thing it does is producing ELF
38fd8d4e53SKonstantin Belousov * or binary based on TARGET.
39fd8d4e53SKonstantin Belousov */
40fd8d4e53SKonstantin BelousovOUTPUT_ARCH(i386:x86-64)
41fd8d4e53SKonstantin BelousovTARGET(elf64-x86-64-freebsd)
42fd8d4e53SKonstantin Belousov
43ab4524b3SKonstantin BelousovPHDRS
44ab4524b3SKonstantin Belousov{
45ab4524b3SKonstantin Belousov	text		PT_LOAD		FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */
46ab4524b3SKonstantin Belousov	dynamic		PT_DYNAMIC	FLAGS(5);
47ab4524b3SKonstantin Belousov	eh_frame_hdr	PT_GNU_EH_FRAME FLAGS(5);
48ab4524b3SKonstantin Belousov}
49ab4524b3SKonstantin Belousov
50ab4524b3SKonstantin BelousovSECTIONS
51ab4524b3SKonstantin Belousov{
52ab4524b3SKonstantin Belousov	. = . + SIZEOF_HEADERS;
53ab4524b3SKonstantin Belousov
54ab4524b3SKonstantin Belousov	.hash		: { *(.hash) }			:text
55ab4524b3SKonstantin Belousov	.gnu.hash	: { *(.gnu.hash) }		:text
56ab4524b3SKonstantin Belousov	.dynsym		: { *(.dynsym) }		:text
57ab4524b3SKonstantin Belousov	.dynstr		: { *(.dynstr) }		:text
58ab4524b3SKonstantin Belousov	.gnu.version	: { *(.gnu.version) }		:text
59ab4524b3SKonstantin Belousov	.gnu.version_d	: { *(.gnu.version_d) }		:text
60ab4524b3SKonstantin Belousov	.gnu.version_r	: { *(.gnu.version_r) }		:text
61ab4524b3SKonstantin Belousov	.eh_frame_hdr	: { *(.eh_frame_hdr) }		:text	:eh_frame_hdr
62ab4524b3SKonstantin Belousov	.eh_frame	: { KEEP (*(.eh_frame)) }	:text
63ab4524b3SKonstantin Belousov	.dynamic	: { *(.dynamic) }		:text	:dynamic
64ab4524b3SKonstantin Belousov	.rodata		: { *(.rodata*) }		:text
65ab4524b3SKonstantin Belousov	.data : {
66ab4524b3SKonstantin Belousov	      *(.got.plt) *(.got)
67ab4524b3SKonstantin Belousov	} :text
68ab4524b3SKonstantin Belousov	/DISCARD/ /* .data */: {
69ab4524b3SKonstantin Belousov	      *(.data*)
70ab4524b3SKonstantin Belousov	      *(.sdata*)
71ab4524b3SKonstantin Belousov	      *(.gnu.linkonce.d.*)
72ab4524b3SKonstantin Belousov	      *(.bss*)
73ab4524b3SKonstantin Belousov	      *(.dynbss*)
74ab4524b3SKonstantin Belousov	      *(.gnu.linkonce.b.*)
75ab4524b3SKonstantin Belousov	      *(.ctors)
76ab4524b3SKonstantin Belousov	      *(.dtors)
77ab4524b3SKonstantin Belousov	      *(.jcr)
78ab4524b3SKonstantin Belousov	      *(.init_array)
79ab4524b3SKonstantin Belousov	      *(.init)
80ab4524b3SKonstantin Belousov	      *(.fini)
81ab4524b3SKonstantin Belousov	      *(.debug*)
82ab4524b3SKonstantin Belousov	      *(.comment)
83ab4524b3SKonstantin Belousov	}
84ab4524b3SKonstantin Belousov
85ab4524b3SKonstantin Belousov	. = ALIGN(0x10);
86ab4524b3SKonstantin Belousov	.text		: { *(.text .text*) }		:text	=0x90909090
87ab4524b3SKonstantin Belousov}
88ab4524b3SKonstantin Belousov
89ab4524b3SKonstantin BelousovVERSION
90ab4524b3SKonstantin Belousov{
91ab4524b3SKonstantin Belousov	FBSD_1.7 {
92ab4524b3SKonstantin Belousov		global:
93ab4524b3SKonstantin Belousov			__vdso_sigcode;
94ab4524b3SKonstantin Belousov		local:
95ab4524b3SKonstantin Belousov			*;
96ab4524b3SKonstantin Belousov	};
97ab4524b3SKonstantin Belousov}
98