]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/conf/vdso_amd64.ldscript
build: add -Wswitch to clang for more consistency with gcc
[FreeBSD/FreeBSD.git] / sys / conf / vdso_amd64.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 amd64 vdso.
33  */
34
35 /*
36  * The OUTPUT_ARCH and TARGET lines are for ld.bfd.
37  * lld doesn't do much with them, the only thing it does is producing ELF
38  * or binary based on TARGET.
39  */
40 OUTPUT_ARCH(i386:x86-64)
41 TARGET(elf64-x86-64-freebsd)
42
43 PHDRS
44 {
45         text            PT_LOAD         FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */
46         dynamic         PT_DYNAMIC      FLAGS(5);
47         eh_frame_hdr    PT_GNU_EH_FRAME FLAGS(5);
48 }
49
50 SECTIONS
51 {
52         . = . + SIZEOF_HEADERS;
53
54         .hash           : { *(.hash) }                  :text
55         .gnu.hash       : { *(.gnu.hash) }              :text
56         .dynsym         : { *(.dynsym) }                :text
57         .dynstr         : { *(.dynstr) }                :text
58         .gnu.version    : { *(.gnu.version) }           :text
59         .gnu.version_d  : { *(.gnu.version_d) }         :text
60         .gnu.version_r  : { *(.gnu.version_r) }         :text
61         .eh_frame_hdr   : { *(.eh_frame_hdr) }          :text   :eh_frame_hdr
62         .eh_frame       : { KEEP (*(.eh_frame)) }       :text
63         .dynamic        : { *(.dynamic) }               :text   :dynamic
64         .rodata         : { *(.rodata*) }               :text
65         .data : {
66               *(.got.plt) *(.got)
67         } :text
68         /DISCARD/ /* .data */: {
69               *(.data*)
70               *(.sdata*)
71               *(.gnu.linkonce.d.*)
72               *(.bss*)
73               *(.dynbss*)
74               *(.gnu.linkonce.b.*)
75               *(.ctors)
76               *(.dtors)
77               *(.jcr)
78               *(.init_array)
79               *(.init)
80               *(.fini)
81               *(.debug*)
82               *(.comment)
83         }
84
85         . = ALIGN(0x10);
86         .text           : { *(.text .text*) }           :text   =0x90909090
87 }
88
89 VERSION
90 {
91         FBSD_1.7 {
92                 global:
93                         __vdso_sigcode;
94                 local:
95                         *;
96         };
97 }