| # Linker script for Itanium VMS systems. |
| # Tristan Gingold <gingold@adacore.com>. |
| # |
| # Copyright (C) 2014-2021 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-2021 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 |