198c8b625SKonstantin Belousov/*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 398c8b625SKonstantin Belousov * 498c8b625SKonstantin Belousov * Copyright (c) 2021 The FreeBSD Foundation 598c8b625SKonstantin Belousov * 698c8b625SKonstantin Belousov * This software was developed by Konstantin Belousov <kib@FreeBSD.org> 798c8b625SKonstantin Belousov * under sponsorship from the FreeBSD Foundation. 898c8b625SKonstantin Belousov * 998c8b625SKonstantin Belousov * Redistribution and use in source and binary forms, with or without 1098c8b625SKonstantin Belousov * modification, are permitted provided that the following conditions 1198c8b625SKonstantin Belousov * are met: 1298c8b625SKonstantin Belousov * 1. Redistributions of source code must retain the above copyright 1398c8b625SKonstantin Belousov * notice, this list of conditions and the following disclaimer. 1498c8b625SKonstantin Belousov * 2. Redistributions in binary form must reproduce the above copyright 1598c8b625SKonstantin Belousov * notice, this list of conditions and the following disclaimer in the 1698c8b625SKonstantin Belousov * documentation and/or other materials provided with the distribution. 1798c8b625SKonstantin Belousov * 1898c8b625SKonstantin Belousov * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1998c8b625SKonstantin Belousov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2098c8b625SKonstantin Belousov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2198c8b625SKonstantin Belousov * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2298c8b625SKonstantin Belousov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2398c8b625SKonstantin Belousov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2498c8b625SKonstantin Belousov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2598c8b625SKonstantin Belousov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2698c8b625SKonstantin Belousov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2798c8b625SKonstantin Belousov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2898c8b625SKonstantin Belousov * SUCH DAMAGE. 2998c8b625SKonstantin Belousov */ 3098c8b625SKonstantin Belousov 3198c8b625SKonstantin Belousov/* 3298c8b625SKonstantin Belousov * Linker script for ia32 (32bit) vdso on amd64. 3398c8b625SKonstantin Belousov */ 3498c8b625SKonstantin Belousov 35fd8d4e53SKonstantin Belousov/* 36fd8d4e53SKonstantin Belousov * The OUTPUT_ARCH and TARGET lines are for ld.bfd, which cannot determine 37fd8d4e53SKonstantin Belousov * the output format based on the first input file. 38fd8d4e53SKonstantin Belousov * lld doesn't do much with them, the only thing it does is produce ELF 39fd8d4e53SKonstantin Belousov * or binary based on TARGET. 40fd8d4e53SKonstantin Belousov */ 4198c8b625SKonstantin BelousovOUTPUT_ARCH(i386) 42fd8d4e53SKonstantin BelousovTARGET(elf32-i386-freebsd) 4398c8b625SKonstantin Belousov 4498c8b625SKonstantin BelousovPHDRS 4598c8b625SKonstantin Belousov{ 4698c8b625SKonstantin Belousov text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ 4798c8b625SKonstantin Belousov dynamic PT_DYNAMIC FLAGS(5); 4898c8b625SKonstantin Belousov eh_frame_hdr PT_GNU_EH_FRAME FLAGS(5); 4998c8b625SKonstantin Belousov} 5098c8b625SKonstantin Belousov 5198c8b625SKonstantin BelousovSECTIONS 5298c8b625SKonstantin Belousov{ 5398c8b625SKonstantin Belousov . = . + SIZEOF_HEADERS; 5498c8b625SKonstantin Belousov 5598c8b625SKonstantin Belousov .hash : { *(.hash) } :text 5698c8b625SKonstantin Belousov .gnu.hash : { *(.gnu.hash) } :text 5798c8b625SKonstantin Belousov .dynsym : { *(.dynsym) } :text 5898c8b625SKonstantin Belousov .dynstr : { *(.dynstr) } :text 5998c8b625SKonstantin Belousov .gnu.version : { *(.gnu.version) } :text 6098c8b625SKonstantin Belousov .gnu.version_d : { *(.gnu.version_d) } :text 6198c8b625SKonstantin Belousov .gnu.version_r : { *(.gnu.version_r) } :text 6298c8b625SKonstantin Belousov .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr 6398c8b625SKonstantin Belousov .eh_frame : { KEEP (*(.eh_frame)) } :text 6498c8b625SKonstantin Belousov .dynamic : { *(.dynamic) } :text :dynamic 6598c8b625SKonstantin Belousov .rodata : { *(.rodata*) } :text 6698c8b625SKonstantin Belousov .data : { 6798c8b625SKonstantin Belousov *(.got.plt) *(.got) 6898c8b625SKonstantin Belousov } :text 6998c8b625SKonstantin Belousov /DISCARD/ /* .data */: { 7098c8b625SKonstantin Belousov *(.data*) 7198c8b625SKonstantin Belousov *(.sdata*) 7298c8b625SKonstantin Belousov *(.gnu.linkonce.d.*) 7398c8b625SKonstantin Belousov *(.bss*) 7498c8b625SKonstantin Belousov *(.dynbss*) 7598c8b625SKonstantin Belousov *(.gnu.linkonce.b.*) 7698c8b625SKonstantin Belousov *(.ctors) 7798c8b625SKonstantin Belousov *(.dtors) 7898c8b625SKonstantin Belousov *(.jcr) 7998c8b625SKonstantin Belousov *(.init_array) 8098c8b625SKonstantin Belousov *(.init) 8198c8b625SKonstantin Belousov *(.fini) 8298c8b625SKonstantin Belousov *(.debug*) 8398c8b625SKonstantin Belousov *(.comment) 8498c8b625SKonstantin Belousov } 8598c8b625SKonstantin Belousov 8698c8b625SKonstantin Belousov . = ALIGN(0x10); 8798c8b625SKonstantin Belousov .text : { *(.text .text*) } :text =0x90909090 8898c8b625SKonstantin Belousov} 8998c8b625SKonstantin Belousov 9098c8b625SKonstantin BelousovVERSION 9198c8b625SKonstantin Belousov{ 9298c8b625SKonstantin Belousov FBSD_1.7 { 9398c8b625SKonstantin Belousov global: 9498c8b625SKonstantin Belousov __vdso_ia32_sigcode; 9598c8b625SKonstantin Belousov __vdso_freebsd4_ia32_sigcode; 9698c8b625SKonstantin Belousov __vdso_ia32_osigcode; 9798c8b625SKonstantin Belousov __vdso_lcall_tramp; 9898c8b625SKonstantin Belousov local: 9998c8b625SKonstantin Belousov *; 10098c8b625SKonstantin Belousov }; 10198c8b625SKonstantin Belousov} 102