root/arch/arm64/kernel/vdso32/vdso.lds.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Adapted from arm64 version.
   4  *
   5  * GNU linker script for the VDSO library.
   6  * Heavily based on the vDSO linker scripts for other archs.
   7  *
   8  * Copyright (C) 2012-2018 ARM Limited
   9  */
  10 
  11 #include <linux/const.h>
  12 #include <asm/page.h>
  13 #include <asm/vdso.h>
  14 
  15 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
  16 OUTPUT_ARCH(arm)
  17 
  18 SECTIONS
  19 {
  20         PROVIDE_HIDDEN(_vdso_data = . - PAGE_SIZE);
  21         . = VDSO_LBASE + SIZEOF_HEADERS;
  22 
  23         .hash           : { *(.hash) }                  :text
  24         .gnu.hash       : { *(.gnu.hash) }
  25         .dynsym         : { *(.dynsym) }
  26         .dynstr         : { *(.dynstr) }
  27         .gnu.version    : { *(.gnu.version) }
  28         .gnu.version_d  : { *(.gnu.version_d) }
  29         .gnu.version_r  : { *(.gnu.version_r) }
  30 
  31         .note           : { *(.note.*) }                :text   :note
  32 
  33         .dynamic        : { *(.dynamic) }               :text   :dynamic
  34 
  35         .rodata         : { *(.rodata*) }               :text
  36 
  37         .text           : { *(.text*) }                 :text   =0xe7f001f2
  38 
  39         .got            : { *(.got) }
  40         .rel.plt        : { *(.rel.plt) }
  41 
  42         /DISCARD/       : {
  43                 *(.note.GNU-stack)
  44                 *(.data .data.* .gnu.linkonce.d.* .sdata*)
  45                 *(.bss .sbss .dynbss .dynsbss)
  46         }
  47 }
  48 
  49 /*
  50  * We must supply the ELF program headers explicitly to get just one
  51  * PT_LOAD segment, and set the flags explicitly to make segments read-only.
  52  */
  53 PHDRS
  54 {
  55         text            PT_LOAD         FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
  56         dynamic         PT_DYNAMIC      FLAGS(4);               /* PF_R */
  57         note            PT_NOTE         FLAGS(4);               /* PF_R */
  58 }
  59 
  60 VERSION
  61 {
  62         LINUX_2.6 {
  63         global:
  64                 __vdso_clock_gettime;
  65                 __vdso_gettimeofday;
  66                 __vdso_clock_getres;
  67                 __kernel_sigreturn_arm;
  68                 __kernel_sigreturn_thumb;
  69                 __kernel_rt_sigreturn_arm;
  70                 __kernel_rt_sigreturn_thumb;
  71                 __vdso_clock_gettime64;
  72         local: *;
  73         };
  74 }
  75 
  76 /*
  77  * Make the sigreturn code visible to the kernel.
  78  */
  79 VDSO_compat_sigreturn_arm       = __kernel_sigreturn_arm;
  80 VDSO_compat_sigreturn_thumb     = __kernel_sigreturn_thumb;
  81 VDSO_compat_rt_sigreturn_arm    = __kernel_rt_sigreturn_arm;
  82 VDSO_compat_rt_sigreturn_thumb  = __kernel_rt_sigreturn_thumb;

/* [<][>][^][v][top][bottom][index][help] */