132 lines
2.9 KiB
Scala
132 lines
2.9 KiB
Scala
# Linker script for Itanium VMS systems.
|
|
# Tristan Gingold <gingold@adacore.com>.
|
|
#
|
|
# Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
|
#
|
|
# Copying and distribution of this file, with or without modification,
|
|
# are permitted in any medium without royalty provided the copyright
|
|
# notice and this notice are preserved.
|
|
|
|
# Using an empty script for ld -r is better than mashing together
|
|
# sections. This hack likely leaves ld -Ur broken.
|
|
test -n "${RELOCATING}" || exit 0
|
|
|
|
PAGESIZE=0x10000
|
|
BLOCKSIZE=0x200
|
|
|
|
cat <<EOF
|
|
/* Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
|
|
|
Copying and distribution of this script, with or without modification,
|
|
are permitted in any medium without royalty provided the copyright
|
|
notice and this notice are preserved. */
|
|
|
|
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) : {
|
|
/* Transfer 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
|