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
15OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
16OUTPUT_ARCH(arm)
17
18SECTIONS
19{
20 PROVIDE_HIDDEN(_vdso_data = . - __VVAR_PAGES * PAGE_SIZE);
21#ifdef CONFIG_TIME_NS
22 PROVIDE_HIDDEN(_timens_data = _vdso_data + PAGE_SIZE);
23#endif
24 . = VDSO_LBASE + SIZEOF_HEADERS;
25
26 .hash : { *(.hash) } :text
27 .gnu.hash : { *(.gnu.hash) }
28 .dynsym : { *(.dynsym) }
29 .dynstr : { *(.dynstr) }
30 .gnu.version : { *(.gnu.version) }
31 .gnu.version_d : { *(.gnu.version_d) }
32 .gnu.version_r : { *(.gnu.version_r) }
33
34 .note : { *(.note.*) } :text :note
35
36 .dynamic : { *(.dynamic) } :text :dynamic
37
38 .rodata : { *(.rodata*) } :text
39
40 .text : { *(.text*) } :text =0xe7f001f2
41
42 .got : { *(.got) }
43 .rel.plt : { *(.rel.plt) }
44
45 /DISCARD/ : {
46 *(.note.GNU-stack)
47 *(.data .data.* .gnu.linkonce.d.* .sdata*)
48 *(.bss .sbss .dynbss .dynsbss)
49 }
50}
51
52
53
54
55
56PHDRS
57{
58 text PT_LOAD FLAGS(5) FILEHDR PHDRS;
59 dynamic PT_DYNAMIC FLAGS(4);
60 note PT_NOTE FLAGS(4);
61}
62
63VERSION
64{
65 LINUX_2.6 {
66 global:
67 __vdso_clock_gettime;
68 __vdso_gettimeofday;
69 __vdso_clock_getres;
70 __vdso_clock_gettime64;
71 local: *;
72 };
73}
74