source: trunk/packages/xen-3.1/xen-3.1/linux-2.6-xen-sparse/arch/ia64/kernel/gate.lds.S @ 34

Last change on this file since 34 was 34, checked in by hartmans, 18 years ago

Add xen and xen-common

File size: 3.1 KB
Line 
1/*
2 * Linker script for gate DSO.  The gate pages are an ELF shared object prelinked to its
3 * virtual address, with only one read-only segment and one execute-only segment (both fit
4 * in one page).  This script controls its layout.
5 */
6
7
8#include <asm/system.h>
9
10SECTIONS
11{
12  . = GATE_ADDR + SIZEOF_HEADERS;
13
14  .hash                         : { *(.hash) }                          :readable
15  .gnu.hash                     : { *(.gnu.hash) }
16  .dynsym                       : { *(.dynsym) }
17  .dynstr                       : { *(.dynstr) }
18  .gnu.version                  : { *(.gnu.version) }
19  .gnu.version_d                : { *(.gnu.version_d) }
20  .gnu.version_r                : { *(.gnu.version_r) }
21  .dynamic                      : { *(.dynamic) }                       :readable :dynamic
22
23  /*
24   * This linker script is used both with -r and with -shared.  For the layouts to match,
25   * we need to skip more than enough space for the dynamic symbol table et al.  If this
26   * amount is insufficient, ld -shared will barf.  Just increase it here.
27   */
28  . = GATE_ADDR + 0x500;
29
30  .data.patch                   : {
31                                    __start_gate_mckinley_e9_patchlist = .;
32                                    *(.data.patch.mckinley_e9)
33                                    __end_gate_mckinley_e9_patchlist = .;
34
35                                    __start_gate_vtop_patchlist = .;
36                                    *(.data.patch.vtop)
37                                    __end_gate_vtop_patchlist = .;
38
39                                    __start_gate_fsyscall_patchlist = .;
40                                    *(.data.patch.fsyscall_table)
41                                    __end_gate_fsyscall_patchlist = .;
42
43                                    __start_gate_brl_fsys_bubble_down_patchlist = .;
44                                    *(.data.patch.brl_fsys_bubble_down)
45                                    __end_gate_brl_fsys_bubble_down_patchlist = .;
46
47#ifdef CONFIG_XEN_IA64_VDSO_PARAVIRT
48                                    __start_gate_running_on_xen_patchlist = .;
49                                    *(.data.patch.running_on_xen)
50                                    __end_gate_running_on_xen_patchlist = .;
51
52                                    __start_gate_brl_xen_ssm_i_0_patchlist = .;
53                                    *(.data.patch.brl_xen_ssm_i_0)
54                                    __end_gate_brl_xen_ssm_i_0_patchlist = .;
55
56                                    __start_gate_brl_xen_ssm_i_1_patchlist = .;
57                                    *(.data.patch.brl_xen_ssm_i_1)
58                                    __end_gate_brl_xen_ssm_i_1_patchlist = .;
59#endif
60  }                                                                     :readable
61  .IA_64.unwind_info            : { *(.IA_64.unwind_info*) }
62  .IA_64.unwind                 : { *(.IA_64.unwind*) }                 :readable :unwind
63#ifdef HAVE_BUGGY_SEGREL
64  .text (GATE_ADDR + PAGE_SIZE) : { *(.text) *(.text.*) }               :readable
65#else
66  . = ALIGN (PERCPU_PAGE_SIZE) + (. & (PERCPU_PAGE_SIZE - 1));
67  .text                         : { *(.text) *(.text.*) }               :epc
68#endif
69
70  /DISCARD/                     : {
71        *(.got.plt) *(.got)
72        *(.data .data.* .gnu.linkonce.d.*)
73        *(.dynbss)
74        *(.bss .bss.* .gnu.linkonce.b.*)
75        *(__ex_table)
76        *(__mca_table)
77  }
78}
79
80/*
81 * We must supply the ELF program headers explicitly to get just one
82 * PT_LOAD segment, and set the flags explicitly to make segments read-only.
83 */
84PHDRS
85{
86  readable  PT_LOAD     FILEHDR PHDRS   FLAGS(4);       /* PF_R */
87#ifndef HAVE_BUGGY_SEGREL
88  epc       PT_LOAD     FILEHDR PHDRS   FLAGS(1);       /* PF_X */
89#endif
90  dynamic   PT_DYNAMIC                  FLAGS(4);       /* PF_R */
91  unwind    0x70000001; /* PT_IA_64_UNWIND, but ld doesn't match the name */
92}
93
94/*
95 * This controls what symbols we export from the DSO.
96 */
97VERSION
98{
99  LINUX_2.5 {
100    global:
101        __kernel_syscall_via_break;
102        __kernel_syscall_via_epc;
103        __kernel_sigtramp;
104
105    local: *;
106  };
107}
108
109/* The ELF entry point can be used to set the AT_SYSINFO value.  */
110ENTRY(__kernel_syscall_via_epc)
Note: See TracBrowser for help on using the repository browser.