* scripttempl/elf.sc: Handle function names and other
[external/binutils.git] / ld / scripttempl / ia64vms.sc
1 # Linker script for Itanium VMS systems.
2 # Tristan Gingold <gingold@adacore.com>.
3
4 PAGESIZE=0x10000
5 BLOCKSIZE=0x200
6
7 cat <<EOF
8 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
9 ${LIB_SEARCH_DIRS}
10 ENTRY(__entry)
11
12 SECTIONS
13 {
14   /* RW segment.  */
15   ${RELOCATING+. = ${PAGESIZE};}
16
17   \$DATA\$ ALIGN (${BLOCKSIZE}) : {
18     *(\$DATA\$ .data .data.*)
19     *(\$BSS\$ .bss .bss.*)
20   }
21
22   /* Code segment.  Note: name must be \$CODE\$ */
23   ${RELOCATING+. = ALIGN (${PAGESIZE});}
24
25   \$CODE\$ ALIGN (${BLOCKSIZE}) : {
26     *(\$CODE\$ .text .text.*)
27   }
28   .plt ALIGN (8) : {
29     *(.plt)
30   }
31
32   /* RO segment.  */
33   ${RELOCATING+. = ALIGN (${PAGESIZE});}
34
35   /* RO initialized data.  */
36   \$LITERAL\$ ALIGN (${BLOCKSIZE}) : {
37     *(\$LITERAL\$)
38     *(\$READONLY\$ .rodata .rodata.*)
39     *(.jcr)
40     *(.ctors)
41     *(.dtors)
42     *(.opd)
43     *(.gcc_except_table)
44
45     /* LIB$INITIALIZE stuff.  */
46     *(LIB\$INITIALIZDZ) /* Start marker.  */
47     *(LIB\$INITIALIZD_) /* Hi priority.  */
48     *(LIB\$INITIALIZE)  /* User.  */
49     *(LIB\$INITIALIZE$) /* End marker.  */
50   }
51
52   /* Short segment.  */
53   ${RELOCATING+. = ALIGN (${PAGESIZE});}
54
55   .srodata : {
56     *(.srodata .srodata.*)
57   }
58   .got ALIGN (8) : {
59     *(.got)
60   }
61   .IA_64.pltoff ALIGN (16) : {
62     *(.IA_64.pltoff)
63   }
64   \$TFR\$ ALIGN (16) : {
65     /* Tranfer vector.  */
66     __entry = .;
67     *(.transfer)
68   }
69
70   ${RELOCATING+. = ALIGN (${PAGESIZE});}
71
72   \$RW_SHORT\$ ALIGN (${BLOCKSIZE}) : {
73     *(.sdata .sdata.*)
74     *(.sbss .sbss.*)
75   }
76
77   ${RELOCATING+. = ALIGN (${PAGESIZE});}
78
79   .IA_64.unwind ALIGN (${BLOCKSIZE}) : {
80     *(.IA_64.unwind .IA_64.unwind.*)
81   }
82
83   .IA_64.unwind_info ALIGN (8) : {
84     *(.IA_64.unwind_info .IA_64.unwind_info.*)
85   }
86
87   ${RELOCATING+. = ALIGN (${PAGESIZE});}
88
89   .dynamic /* \$DYNAMIC\$ */ ALIGN (${BLOCKSIZE}) : {
90     *(.dynamic)
91     *(.vmsdynstr)
92     *(.fixups)
93   }
94
95   ${RELOCATING+. = ALIGN (${PAGESIZE});}
96
97   .dynstr : { *(.dynstr) }
98
99   .dynsym       ${RELOCATING-0} : { *(.dynsym) }
100   .rela.got : { *(.rela.got) }
101   .got.plt : { *(.got.plt) }
102   .gnu.version_d : { *(.gnu.version_d) }
103   .gnu.version : { *(.gnu.version) }
104   .gnu.version_r : { *(.gnu.version_r) }
105   .rela.IA_64.pltoff : { *(.rela.IA_64.pltoff) }
106
107 EOF
108
109 . $srcdir/scripttempl/DWARF.sc
110
111 cat <<EOF  
112   .note : { *(.vms.note) }
113
114   /DISCARD/ : { *(.note) *(.vms_display_name_info) }
115 }
116 EOF