xref: /openbmc/qemu/linux-user/ppc/vdso-32.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_gettime64;
15*e34136d9SRichard Henderson                __kernel_clock_getres;
16*e34136d9SRichard Henderson                __kernel_time;
17*e34136d9SRichard Henderson                __kernel_sync_dicache;
18*e34136d9SRichard Henderson                __kernel_sigtramp32;
19*e34136d9SRichard Henderson                __kernel_sigtramp_rt32;
20*e34136d9SRichard Henderson                __kernel_getcpu;
21*e34136d9SRichard Henderson        local: *;
22*e34136d9SRichard Henderson        };
23*e34136d9SRichard Henderson}
24*e34136d9SRichard Henderson
25*e34136d9SRichard HendersonPHDRS {
26*e34136d9SRichard Henderson        phdr            PT_PHDR         FLAGS(4) PHDRS;
27*e34136d9SRichard Henderson        load            PT_LOAD         FLAGS(7) FILEHDR PHDRS; /* FLAGS=RWX */
28*e34136d9SRichard Henderson        dynamic         PT_DYNAMIC      FLAGS(4);
29*e34136d9SRichard Henderson        eh_frame_hdr    PT_GNU_EH_FRAME;
30*e34136d9SRichard Henderson        note            PT_NOTE         FLAGS(4);
31*e34136d9SRichard Henderson}
32*e34136d9SRichard Henderson
33*e34136d9SRichard HendersonSECTIONS {
34*e34136d9SRichard Henderson        . = SIZEOF_HEADERS;
35*e34136d9SRichard Henderson
36*e34136d9SRichard Henderson        /*
37*e34136d9SRichard Henderson         * The following, including the FILEHDRS and PHDRS, are modified
38*e34136d9SRichard Henderson         * when we relocate the binary.  We want them to be initially
39*e34136d9SRichard Henderson         * writable for the relocation; we'll force them read-only after.
40*e34136d9SRichard Henderson         */
41*e34136d9SRichard Henderson        .note           : { *(.note*) }         :load :note
42*e34136d9SRichard Henderson        .dynamic        : { *(.dynamic) }       :load :dynamic
43*e34136d9SRichard Henderson        .dynsym         : { *(.dynsym) }        :load
44*e34136d9SRichard Henderson        .data           : {
45*e34136d9SRichard Henderson                /*
46*e34136d9SRichard Henderson                 * There ought not be any real read-write data.
47*e34136d9SRichard Henderson                 * But since we manipulated the segment layout,
48*e34136d9SRichard Henderson                 * we have to put these sections somewhere.
49*e34136d9SRichard Henderson                 */
50*e34136d9SRichard Henderson                *(.data*)
51*e34136d9SRichard Henderson                *(.sdata*)
52*e34136d9SRichard Henderson                *(.got.plt) *(.got)
53*e34136d9SRichard Henderson                *(.gnu.linkonce.d.*)
54*e34136d9SRichard Henderson                *(.bss*)
55*e34136d9SRichard Henderson                *(.dynbss*)
56*e34136d9SRichard Henderson                *(.gnu.linkonce.b.*)
57*e34136d9SRichard Henderson        }
58*e34136d9SRichard Henderson
59*e34136d9SRichard Henderson        .rodata         : { *(.rodata*) }
60*e34136d9SRichard Henderson        .hash           : { *(.hash) }
61*e34136d9SRichard Henderson        .gnu.hash       : { *(.gnu.hash) }
62*e34136d9SRichard Henderson        .dynstr         : { *(.dynstr) }
63*e34136d9SRichard Henderson        .gnu.version    : { *(.gnu.version) }
64*e34136d9SRichard Henderson        .gnu.version_d  : { *(.gnu.version_d) }
65*e34136d9SRichard Henderson        .gnu.version_r  : { *(.gnu.version_r) }
66*e34136d9SRichard Henderson        .eh_frame_hdr   : { *(.eh_frame_hdr) }  :load :eh_frame_hdr
67*e34136d9SRichard Henderson        .eh_frame       : { *(.eh_frame) }      :load
68*e34136d9SRichard Henderson
69*e34136d9SRichard Henderson        .text           : { *(.text*) }         :load
70*e34136d9SRichard Henderson}
71