aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2007-10-15 23:40:29 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-16 13:01:50 -0400
commit1a43be74a7597a1a1fdef73350bb143dd634ae07 (patch)
tree29f0151911a503a7ecc5e27a6f77a0eadc2b3e4b /arch/ia64
parent1e89a5e15a2c88b3fd1ed3fa17fd767efe44727a (diff)
ia64 vDSO: linker script indentation
This cleans up the formatting in the vDSO linker script, mostly just the use of whitespace. It's intended to approximate the kernel standard conventions for indenting C, treating elements of the linker script about like initialized variable definitions. Signed-off-by: Roland McGrath <roland@redhat.com> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/kernel/gate.lds.S135
1 files changed, 72 insertions, 63 deletions
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S
index 6d198339bf85..44817d97ab43 100644
--- a/arch/ia64/kernel/gate.lds.S
+++ b/arch/ia64/kernel/gate.lds.S
@@ -1,7 +1,8 @@
1/* 1/*
2 * Linker script for gate DSO. The gate pages are an ELF shared object prelinked to its 2 * Linker script for gate DSO. The gate pages are an ELF shared object
3 * virtual address, with only one read-only segment and one execute-only segment (both fit 3 * prelinked to its virtual address, with only one read-only segment and
4 * in one page). This script controls its layout. 4 * one execute-only segment (both fit in one page). This script controls
5 * its layout.
5 */ 6 */
6 7
7 8
@@ -9,72 +10,80 @@
9 10
10SECTIONS 11SECTIONS
11{ 12{
12 . = GATE_ADDR + SIZEOF_HEADERS; 13 . = GATE_ADDR + SIZEOF_HEADERS;
13 14
14 .hash : { *(.hash) } :readable 15 .hash : { *(.hash) } :readable
15 .gnu.hash : { *(.gnu.hash) } 16 .gnu.hash : { *(.gnu.hash) }
16 .dynsym : { *(.dynsym) } 17 .dynsym : { *(.dynsym) }
17 .dynstr : { *(.dynstr) } 18 .dynstr : { *(.dynstr) }
18 .gnu.version : { *(.gnu.version) } 19 .gnu.version : { *(.gnu.version) }
19 .gnu.version_d : { *(.gnu.version_d) } 20 .gnu.version_d : { *(.gnu.version_d) }
20 .gnu.version_r : { *(.gnu.version_r) } 21 .gnu.version_r : { *(.gnu.version_r) }
21 .dynamic : { *(.dynamic) } :readable :dynamic 22
22 23 .dynamic : { *(.dynamic) } :readable :dynamic
23 /* 24
24 * This linker script is used both with -r and with -shared. For the layouts to match, 25 /*
25 * we need to skip more than enough space for the dynamic symbol table et al. If this 26 * This linker script is used both with -r and with -shared. For
26 * amount is insufficient, ld -shared will barf. Just increase it here. 27 * the layouts to match, we need to skip more than enough space for
27 */ 28 * the dynamic symbol table et al. If this amount is insufficient,
28 . = GATE_ADDR + 0x500; 29 * ld -shared will barf. Just increase it here.
29 30 */
30 .data.patch : { 31 . = GATE_ADDR + 0x500;
31 __start_gate_mckinley_e9_patchlist = .; 32
32 *(.data.patch.mckinley_e9) 33 .data.patch : {
33 __end_gate_mckinley_e9_patchlist = .; 34 __start_gate_mckinley_e9_patchlist = .;
34 35 *(.data.patch.mckinley_e9)
35 __start_gate_vtop_patchlist = .; 36 __end_gate_mckinley_e9_patchlist = .;
36 *(.data.patch.vtop) 37
37 __end_gate_vtop_patchlist = .; 38 __start_gate_vtop_patchlist = .;
38 39 *(.data.patch.vtop)
39 __start_gate_fsyscall_patchlist = .; 40 __end_gate_vtop_patchlist = .;
40 *(.data.patch.fsyscall_table) 41
41 __end_gate_fsyscall_patchlist = .; 42 __start_gate_fsyscall_patchlist = .;
42 43 *(.data.patch.fsyscall_table)
43 __start_gate_brl_fsys_bubble_down_patchlist = .; 44 __end_gate_fsyscall_patchlist = .;
44 *(.data.patch.brl_fsys_bubble_down) 45
45 __end_gate_brl_fsys_bubble_down_patchlist = .; 46 __start_gate_brl_fsys_bubble_down_patchlist = .;
46 } :readable 47 *(.data.patch.brl_fsys_bubble_down)
47 .IA_64.unwind_info : { *(.IA_64.unwind_info*) } 48 __end_gate_brl_fsys_bubble_down_patchlist = .;
48 .IA_64.unwind : { *(.IA_64.unwind*) } :readable :unwind 49 } :readable
50
51 .IA_64.unwind_info : { *(.IA_64.unwind_info*) }
52 .IA_64.unwind : { *(.IA_64.unwind*) } :readable :unwind
49#ifdef HAVE_BUGGY_SEGREL 53#ifdef HAVE_BUGGY_SEGREL
50 .text (GATE_ADDR + PAGE_SIZE) : { *(.text) *(.text.*) } :readable 54 .text (GATE_ADDR + PAGE_SIZE) : { *(.text) *(.text.*) } :readable
51#else 55#else
52 . = ALIGN (PERCPU_PAGE_SIZE) + (. & (PERCPU_PAGE_SIZE - 1)); 56 . = ALIGN(PERCPU_PAGE_SIZE) + (. & (PERCPU_PAGE_SIZE - 1));
53 .text : { *(.text) *(.text.*) } :epc 57 .text : { *(.text) *(.text.*) } :epc
54#endif 58#endif
55 59
56 /DISCARD/ : { 60 /DISCARD/ : {
57 *(.got.plt) *(.got) 61 *(.got.plt) *(.got)
58 *(.data .data.* .gnu.linkonce.d.*) 62 *(.data .data.* .gnu.linkonce.d.*)
59 *(.dynbss) 63 *(.dynbss)
60 *(.bss .bss.* .gnu.linkonce.b.*) 64 *(.bss .bss.* .gnu.linkonce.b.*)
61 *(__ex_table) 65 *(__ex_table)
62 *(__mca_table) 66 *(__mca_table)
63 } 67 }
64} 68}
65 69
66/* 70/*
71 * ld does not recognize this name token; use the constant.
72 */
73#define PT_IA_64_UNWIND 0x70000001
74
75/*
67 * We must supply the ELF program headers explicitly to get just one 76 * We must supply the ELF program headers explicitly to get just one
68 * PT_LOAD segment, and set the flags explicitly to make segments read-only. 77 * PT_LOAD segment, and set the flags explicitly to make segments read-only.
69 */ 78 */
70PHDRS 79PHDRS
71{ 80{
72 readable PT_LOAD FILEHDR PHDRS FLAGS(4); /* PF_R */ 81 readable PT_LOAD FILEHDR PHDRS FLAGS(4); /* PF_R */
73#ifndef HAVE_BUGGY_SEGREL 82#ifndef HAVE_BUGGY_SEGREL
74 epc PT_LOAD FILEHDR PHDRS FLAGS(1); /* PF_X */ 83 epc PT_LOAD FILEHDR PHDRS FLAGS(1); /* PF_X */
75#endif 84#endif
76 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ 85 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
77 unwind 0x70000001; /* PT_IA_64_UNWIND, but ld doesn't match the name */ 86 unwind PT_IA_64_UNWIND;
78} 87}
79 88
80/* 89/*
@@ -82,14 +91,14 @@ PHDRS
82 */ 91 */
83VERSION 92VERSION
84{ 93{
85 LINUX_2.5 { 94 LINUX_2.5 {
86 global: 95 global:
87 __kernel_syscall_via_break; 96 __kernel_syscall_via_break;
88 __kernel_syscall_via_epc; 97 __kernel_syscall_via_epc;
89 __kernel_sigtramp; 98 __kernel_sigtramp;
90 99
91 local: *; 100 local: *;
92 }; 101 };
93} 102}
94 103
95/* The ELF entry point can be used to set the AT_SYSINFO value. */ 104/* The ELF entry point can be used to set the AT_SYSINFO value. */