xref: /openbmc/qemu/linux-user/ppc/vdso-64.ld (revision 516fffc9933cb21fad41ca8f7bf465d238d4d375)
1*e34136d9SRichard Henderson/*
2*e34136d9SRichard Henderson * Linker script for linux powerpc64 replacement vdso.
3*e34136d9SRichard Henderson *
4*e34136d9SRichard Henderson * Copyright 2023 Linaro, Ltd.
5*e34136d9SRichard Henderson *
6*e34136d9SRichard Henderson * SPDX-License-Identifier: GPL-2.0-or-later
7*e34136d9SRichard Henderson */
8*e34136d9SRichard Henderson
9*e34136d9SRichard HendersonVERSION {
10*e34136d9SRichard Henderson        LINUX_2.6.15 {
11*e34136d9SRichard Henderson        global:
12*e34136d9SRichard Henderson                __kernel_gettimeofday;
13*e34136d9SRichard Henderson                __kernel_clock_gettime;
14*e34136d9SRichard Henderson                __kernel_clock_getres;
15*e34136d9SRichard Henderson                __kernel_sync_dicache;
16*e34136d9SRichard Henderson                __kernel_sigtramp_rt64;
17*e34136d9SRichard Henderson                __kernel_getcpu;
18*e34136d9SRichard Henderson                __kernel_time;
19*e34136d9SRichard Henderson        local: *;
20*e34136d9SRichard Henderson        };
21*e34136d9SRichard Henderson}
22*e34136d9SRichard Henderson
23*e34136d9SRichard HendersonPHDRS {
24*e34136d9SRichard Henderson        phdr            PT_PHDR         FLAGS(4) PHDRS;
25*e34136d9SRichard Henderson        load            PT_LOAD         FLAGS(7) FILEHDR PHDRS; /* FLAGS=RWX */
26*e34136d9SRichard Henderson        dynamic         PT_DYNAMIC      FLAGS(4);
27*e34136d9SRichard Henderson        eh_frame_hdr    PT_GNU_EH_FRAME;
28*e34136d9SRichard Henderson        note            PT_NOTE         FLAGS(4);
29*e34136d9SRichard Henderson}
30*e34136d9SRichard Henderson
31*e34136d9SRichard HendersonSECTIONS {
32*e34136d9SRichard Henderson        . = SIZEOF_HEADERS;
33*e34136d9SRichard Henderson
34*e34136d9SRichard Henderson        /*
35*e34136d9SRichard Henderson         * The following, including the FILEHDRS and PHDRS, are modified
36*e34136d9SRichard Henderson         * when we relocate the binary.  We want them to be initially
37*e34136d9SRichard Henderson         * writable for the relocation; we'll force them read-only after.
38*e34136d9SRichard Henderson         */
39*e34136d9SRichard Henderson        .note           : { *(.note*) }         :load :note
40*e34136d9SRichard Henderson        .dynamic        : { *(.dynamic) }       :load :dynamic
41*e34136d9SRichard Henderson        .dynsym         : { *(.dynsym) }        :load
42*e34136d9SRichard Henderson        .data           : {
43*e34136d9SRichard Henderson                /*
44*e34136d9SRichard Henderson                 * There ought not be any real read-write data.
45*e34136d9SRichard Henderson                 * But since we manipulated the segment layout,
46*e34136d9SRichard Henderson                 * we have to put these sections somewhere.
47*e34136d9SRichard Henderson                 */
48*e34136d9SRichard Henderson                *(.data*)
49*e34136d9SRichard Henderson                *(.sdata*)
50*e34136d9SRichard Henderson                *(.got.plt) *(.got)
51*e34136d9SRichard Henderson                *(.gnu.linkonce.d.*)
52*e34136d9SRichard Henderson                *(.bss*)
53*e34136d9SRichard Henderson                *(.dynbss*)
54*e34136d9SRichard Henderson                *(.gnu.linkonce.b.*)
55*e34136d9SRichard Henderson        }
56*e34136d9SRichard Henderson
57*e34136d9SRichard Henderson        .rodata         : { *(.rodata*) }
58*e34136d9SRichard Henderson        .hash           : { *(.hash) }
59*e34136d9SRichard Henderson        .gnu.hash       : { *(.gnu.hash) }
60*e34136d9SRichard Henderson        .dynstr         : { *(.dynstr) }
61*e34136d9SRichard Henderson        .gnu.version    : { *(.gnu.version) }
62*e34136d9SRichard Henderson        .gnu.version_d  : { *(.gnu.version_d) }
63*e34136d9SRichard Henderson        .gnu.version_r  : { *(.gnu.version_r) }
64*e34136d9SRichard Henderson        .eh_frame_hdr   : { *(.eh_frame_hdr) }  :load :eh_frame_hdr
65*e34136d9SRichard Henderson        .eh_frame       : { *(.eh_frame) }      :load
66*e34136d9SRichard Henderson
67*e34136d9SRichard Henderson        .text           : { *(.text*) }         :load
68*e34136d9SRichard Henderson}
69