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