blob: ba50f66fbdda91f9bd4e1e1fee6b5bf837c363eb [file] [log] [blame]
# Linker script for Itanium VMS systems.
# Tristan Gingold <gingold@adacore.com>.
PAGESIZE=0x10000
BLOCKSIZE=0x200
cat <<EOF
OUTPUT_FORMAT("${OUTPUT_FORMAT}")
${LIB_SEARCH_DIRS}
ENTRY(__entry)
SECTIONS
{
/* RW segment. */
${RELOCATING+. = ${PAGESIZE};}
\$DATA\$ ALIGN (${BLOCKSIZE}) : {
*(\$DATA\$ .data .data.*)
*(\$BSS\$ .bss .bss.*)
}
/* Code segment. Note: name must be \$CODE\$ */
${RELOCATING+. = ALIGN (${PAGESIZE});}
\$CODE\$ ALIGN (${BLOCKSIZE}) : {
*(\$CODE\$ .text .text.*)
}
.plt ALIGN (8) : {
*(.plt)
}
/* RO segment. */
${RELOCATING+. = ALIGN (${PAGESIZE});}
/* RO initialized data. */
\$LITERAL\$ ALIGN (${BLOCKSIZE}) : {
*(\$LITERAL\$)
*(\$READONLY\$ .rodata .rodata.*)
*(.jcr)
*(.ctors)
*(.dtors)
*(.opd)
*(.gcc_except_table)
/* LIB$INITIALIZE stuff. */
*(LIB\$INITIALIZDZ) /* Start marker. */
*(LIB\$INITIALIZD_) /* Hi priority. */
*(LIB\$INITIALIZE) /* User. */
*(LIB\$INITIALIZE$) /* End marker. */
}
/* Short segment. */
${RELOCATING+. = ALIGN (${PAGESIZE});}
.srodata : {
*(.srodata .srodata.*)
}
.got ALIGN (8) : {
*(.got)
}
.IA_64.pltoff ALIGN (16) : {
*(.IA_64.pltoff)
}
\$TFR\$ ALIGN (16) : {
/* Tranfer vector. */
__entry = .;
*(.transfer)
}
${RELOCATING+. = ALIGN (${PAGESIZE});}
\$RW_SHORT\$ ALIGN (${BLOCKSIZE}) : {
*(.sdata .sdata.*)
*(.sbss .sbss.*)
}
${RELOCATING+. = ALIGN (${PAGESIZE});}
.IA_64.unwind ALIGN (${BLOCKSIZE}) : {
*(.IA_64.unwind .IA_64.unwind.*)
}
.IA_64.unwind_info ALIGN (8) : {
*(.IA_64.unwind_info .IA_64.unwind_info.*)
}
${RELOCATING+. = ALIGN (${PAGESIZE});}
.dynamic /* \$DYNAMIC\$ */ ALIGN (${BLOCKSIZE}) : {
*(.dynamic)
*(.vmsdynstr)
*(.fixups)
}
${RELOCATING+. = ALIGN (${PAGESIZE});}
.dynstr : { *(.dynstr) }
.dynsym ${RELOCATING-0} : { *(.dynsym) }
.rela.got : { *(.rela.got) }
.got.plt : { *(.got.plt) }
.gnu.version_d : { *(.gnu.version_d) }
.gnu.version : { *(.gnu.version) }
.gnu.version_r : { *(.gnu.version_r) }
.rela.IA_64.pltoff : { *(.rela.IA_64.pltoff) }
EOF
. $srcdir/scripttempl/DWARF.sc
cat <<EOF
.note : { *(.vms.note) }
/DISCARD/ : { *(.note) *(.vms_display_name_info) }
}
EOF