1*00cc2934SRichard Henderson/* 2*00cc2934SRichard Henderson * Linker script for linux loongarch64 replacement vdso. 3*00cc2934SRichard Henderson * 4*00cc2934SRichard Henderson * Copyright 2023 Linaro, Ltd. 5*00cc2934SRichard Henderson * 6*00cc2934SRichard Henderson * SPDX-License-Identifier: GPL-2.0-or-later 7*00cc2934SRichard Henderson */ 8*00cc2934SRichard Henderson 9*00cc2934SRichard HendersonVERSION { 10*00cc2934SRichard Henderson LINUX_5.10 { 11*00cc2934SRichard Henderson global: 12*00cc2934SRichard Henderson __vdso_getcpu; 13*00cc2934SRichard Henderson __vdso_clock_getres; 14*00cc2934SRichard Henderson __vdso_clock_gettime; 15*00cc2934SRichard Henderson __vdso_gettimeofday; 16*00cc2934SRichard Henderson __vdso_rt_sigreturn; 17*00cc2934SRichard Henderson 18*00cc2934SRichard Henderson local: *; 19*00cc2934SRichard Henderson }; 20*00cc2934SRichard Henderson} 21*00cc2934SRichard Henderson 22*00cc2934SRichard Henderson 23*00cc2934SRichard HendersonPHDRS { 24*00cc2934SRichard Henderson phdr PT_PHDR FLAGS(4) PHDRS; 25*00cc2934SRichard Henderson load PT_LOAD FLAGS(7) FILEHDR PHDRS; 26*00cc2934SRichard Henderson dynamic PT_DYNAMIC FLAGS(4); 27*00cc2934SRichard Henderson eh_frame_hdr PT_GNU_EH_FRAME; 28*00cc2934SRichard Henderson note PT_NOTE FLAGS(4); 29*00cc2934SRichard Henderson} 30*00cc2934SRichard Henderson 31*00cc2934SRichard HendersonSECTIONS { 32*00cc2934SRichard Henderson /* 33*00cc2934SRichard Henderson * We can't prelink to any address without knowing something about 34*00cc2934SRichard Henderson * the virtual memory space of the host, since that leaks over into 35*00cc2934SRichard Henderson * the available memory space of the guest. 36*00cc2934SRichard Henderson */ 37*00cc2934SRichard Henderson . = SIZEOF_HEADERS; 38*00cc2934SRichard Henderson 39*00cc2934SRichard Henderson /* 40*00cc2934SRichard Henderson * The following, including the FILEHDRS and PHDRS, are modified 41*00cc2934SRichard Henderson * when we relocate the binary. We want them to be initially 42*00cc2934SRichard Henderson * writable for the relocation; we'll force them read-only after. 43*00cc2934SRichard Henderson */ 44*00cc2934SRichard Henderson .note : { *(.note*) } :load :note 45*00cc2934SRichard Henderson .dynamic : { *(.dynamic) } :load :dynamic 46*00cc2934SRichard Henderson .dynsym : { *(.dynsym) } :load 47*00cc2934SRichard Henderson /* 48*00cc2934SRichard Henderson * There ought not be any real read-write data. 49*00cc2934SRichard Henderson * But since we manipulated the segment layout, 50*00cc2934SRichard Henderson * we have to put these sections somewhere. 51*00cc2934SRichard Henderson */ 52*00cc2934SRichard Henderson .data : { 53*00cc2934SRichard Henderson *(.data*) 54*00cc2934SRichard Henderson *(.sdata*) 55*00cc2934SRichard Henderson *(.got.plt) *(.got) 56*00cc2934SRichard Henderson *(.gnu.linkonce.d.*) 57*00cc2934SRichard Henderson *(.bss*) 58*00cc2934SRichard Henderson *(.dynbss*) 59*00cc2934SRichard Henderson *(.gnu.linkonce.b.*) 60*00cc2934SRichard Henderson } 61*00cc2934SRichard Henderson 62*00cc2934SRichard Henderson .rodata : { *(.rodata*) } 63*00cc2934SRichard Henderson .hash : { *(.hash) } 64*00cc2934SRichard Henderson .gnu.hash : { *(.gnu.hash) } 65*00cc2934SRichard Henderson .dynstr : { *(.dynstr) } 66*00cc2934SRichard Henderson .gnu.version : { *(.gnu.version) } 67*00cc2934SRichard Henderson .gnu.version_d : { *(.gnu.version_d) } 68*00cc2934SRichard Henderson .gnu.version_r : { *(.gnu.version_r) } 69*00cc2934SRichard Henderson .eh_frame_hdr : { *(.eh_frame_hdr) } :load :eh_frame_hdr 70*00cc2934SRichard Henderson .eh_frame : { *(.eh_frame) } :load 71*00cc2934SRichard Henderson 72*00cc2934SRichard Henderson .text : { *(.text*) } :load =0xd503201f 73*00cc2934SRichard Henderson} 74