>> 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 1 /* 2 /* 2 * Linker script for 64-bit vDSO. !! 3 * Copyright (C) 2015 Imagination Technologies 3 * We #include the file to define the layout d !! 4 * Author: Alex Smith <alex.smith@imgtec.com> 4 * << 5 * This file defines the version script giving << 6 * the DSO. << 7 */ 5 */ 8 6 9 #define BUILD_VDSO64 !! 7 #include <asm/sgidefs.h> 10 8 11 #include "vdso-layout.lds.S" !! 9 #if _MIPS_SIM == _MIPS_SIM_ABI64 >> 10 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips", "elf64-tradlittlemips") >> 11 #elif _MIPS_SIM == _MIPS_SIM_NABI32 >> 12 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips", "elf32-ntradlittlemips") >> 13 #else >> 14 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips", "elf32-tradlittlemips") >> 15 #endif 12 16 13 /* !! 17 OUTPUT_ARCH(mips) 14 * This controls what userland symbols we expo !! 18 15 */ !! 19 SECTIONS 16 VERSION { !! 20 { >> 21 PROVIDE(_start = .); >> 22 . = SIZEOF_HEADERS; >> 23 >> 24 /* >> 25 * In order to retain compatibility with older toolchains we provide the >> 26 * ABI flags section ourself. Newer assemblers will automatically >> 27 * generate .MIPS.abiflags sections so we discard such input sections, >> 28 * and then manually define our own section here. genvdso will patch >> 29 * this section to have the correct name/type. >> 30 */ >> 31 .mips_abiflags : { *(.mips_abiflags) } :text :abiflags >> 32 >> 33 .reginfo : { *(.reginfo) } :text :reginfo >> 34 >> 35 .hash : { *(.hash) } :text >> 36 .gnu.hash : { *(.gnu.hash) } >> 37 .dynsym : { *(.dynsym) } >> 38 .dynstr : { *(.dynstr) } >> 39 .gnu.version : { *(.gnu.version) } >> 40 .gnu.version_d : { *(.gnu.version_d) } >> 41 .gnu.version_r : { *(.gnu.version_r) } >> 42 >> 43 .note : { *(.note.*) } :text :note >> 44 >> 45 .text : { *(.text*) } :text >> 46 PROVIDE (__etext = .); >> 47 PROVIDE (_etext = .); >> 48 PROVIDE (etext = .); >> 49 >> 50 .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr >> 51 .eh_frame : { KEEP (*(.eh_frame)) } :text >> 52 >> 53 .dynamic : { *(.dynamic) } :text :dynamic >> 54 >> 55 .rodata : { *(.rodata*) } :text >> 56 >> 57 _end = .; >> 58 PROVIDE(end = .); >> 59 >> 60 /DISCARD/ : { >> 61 *(.MIPS.abiflags) >> 62 *(.gnu.attributes) >> 63 *(.note.GNU-stack) >> 64 *(.data .data.* .gnu.linkonce.d.* .sdata*) >> 65 *(.bss .sbss .dynbss .dynsbss) >> 66 } >> 67 } >> 68 >> 69 PHDRS >> 70 { >> 71 /* >> 72 * Provide a PT_MIPS_ABIFLAGS header to assign the ABI flags section >> 73 * to. We can specify the header type directly here so no modification >> 74 * is needed later on. >> 75 */ >> 76 abiflags 0x70000003; >> 77 >> 78 /* >> 79 * The ABI flags header must exist directly after the PT_INTERP header, >> 80 * so we must explicitly place the PT_MIPS_REGINFO header after it to >> 81 * stop the linker putting one in at the start. >> 82 */ >> 83 reginfo 0x70000000; >> 84 >> 85 text PT_LOAD FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */ >> 86 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ >> 87 note PT_NOTE FLAGS(4); /* PF_R */ >> 88 eh_frame_hdr PT_GNU_EH_FRAME; >> 89 } >> 90 >> 91 VERSION >> 92 { 17 LINUX_2.6 { 93 LINUX_2.6 { >> 94 #ifndef CONFIG_MIPS_DISABLE_VDSO 18 global: 95 global: 19 clock_gettime; << 20 __vdso_clock_gettime; 96 __vdso_clock_gettime; 21 __vdso_clock_gettime_stick; !! 97 #ifdef CONFIG_MIPS_CLOCK_VSYSCALL 22 gettimeofday; << 23 __vdso_gettimeofday; 98 __vdso_gettimeofday; 24 __vdso_gettimeofday_stick; !! 99 #endif >> 100 __vdso_clock_getres; >> 101 #if _MIPS_SIM != _MIPS_SIM_ABI64 >> 102 __vdso_clock_gettime64; >> 103 #endif >> 104 #endif 25 local: *; 105 local: *; 26 }; 106 }; 27 } 107 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.