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