1
2
3
4
5
6
7
8
9
10
11 #include <linux/const.h>
12 #include <asm/page.h>
13 #include <asm/vdso.h>
14
15 OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
16 OUTPUT_ARCH(aarch64)
17
18 SECTIONS
19 {
20 PROVIDE(_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 . = ALIGN(16);
34
35 .text : { *(.text*) } :text =0xd503201f
36 PROVIDE (__etext = .);
37 PROVIDE (_etext = .);
38 PROVIDE (etext = .);
39
40 .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
41 .eh_frame : { KEEP (*(.eh_frame)) } :text
42
43 .dynamic : { *(.dynamic) } :text :dynamic
44
45 .rodata : { *(.rodata*) } :text
46
47 _end = .;
48 PROVIDE(end = .);
49
50 /DISCARD/ : {
51 *(.note.GNU-stack)
52 *(.data .data.* .gnu.linkonce.d.* .sdata*)
53 *(.bss .sbss .dynbss .dynsbss)
54 }
55 }
56
57
58
59
60
61 PHDRS
62 {
63 text PT_LOAD FLAGS(5) FILEHDR PHDRS;
64 dynamic PT_DYNAMIC FLAGS(4);
65 note PT_NOTE FLAGS(4);
66 eh_frame_hdr PT_GNU_EH_FRAME;
67 }
68
69
70
71
72 VERSION
73 {
74 LINUX_2.6.39 {
75 global:
76 __kernel_rt_sigreturn;
77 __kernel_gettimeofday;
78 __kernel_clock_gettime;
79 __kernel_clock_getres;
80 local: *;
81 };
82 }
83
84
85
86
87 VDSO_sigtramp = __kernel_rt_sigreturn;