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