1
2
3
4
5
6
7 #include <asm/asm-offsets.h>
8
9 #ifdef CONFIG_CPU_LITTLE_ENDIAN
10 OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
11 #else
12 OUTPUT_FORMAT("elf32-shbig-linux", "elf32-shbig-linux", "elf32-shbig-linux")
13 #endif
14 OUTPUT_ARCH(sh)
15
16
17 ENTRY(__kernel_vsyscall);
18
19 SECTIONS
20 {
21 . = 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
32
33
34
35
36
37 . = 0x400;
38
39 .text : { *(.text) } :text =0x90909090
40 .note : { *(.note.*) } :text :note
41 .eh_frame_hdr : { *(.eh_frame_hdr ) } :text :eh_frame_hdr
42 .eh_frame : {
43 KEEP (*(.eh_frame))
44 LONG (0)
45 } :text
46 .dynamic : { *(.dynamic) } :text :dynamic
47 .useless : {
48 *(.got.plt) *(.got)
49 *(.data .data.* .gnu.linkonce.d.*)
50 *(.dynbss)
51 *(.bss .bss.* .gnu.linkonce.b.*)
52 } :text
53 }
54
55
56
57
58 #define PT_GNU_EH_FRAME 0x6474e550
59
60
61
62
63
64 PHDRS
65 {
66 text PT_LOAD FILEHDR PHDRS FLAGS(5);
67 dynamic PT_DYNAMIC FLAGS(4);
68 note PT_NOTE FLAGS(4);
69 eh_frame_hdr PT_GNU_EH_FRAME;
70 }
71
72
73
74
75 VERSION
76 {
77 LINUX_2.6 {
78 global:
79 __kernel_vsyscall;
80 __kernel_sigreturn;
81 __kernel_rt_sigreturn;
82
83 local: *;
84 };
85 }