6c19b93bcd
* pe-dll.c: Formatting, whitespace fixes. * NEWS: Whitespace fixes. * configure.ac: Likewise. * configure.tgt: Likewise. * deffilep.y: Likewise. * genscripts.sh: Likewise. * ld.texinfo: Likewise. * ldgram.y: Likewise. * ldlang.c: Likewise. * ldlex.l: Likewise. * lexsup.c: Likewise. * plugin.c: Likewise. * emulparams/arc-endianness.sh: Likewise. * emulparams/elf32_x86_64.sh: Likewise. * emulparams/elf64mmix.sh: Likewise. * emulparams/elf_x86_64.sh: Likewise. * emulparams/h8300elf.sh: Likewise. * emulparams/h8300elf_linux.sh: Likewise. * emulparams/vxworks.sh: Likewise. * emultempl/aarch64elf.em: Likewise. * emultempl/aix.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/avrelf.em: Likewise. * emultempl/beos.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/m68kelf.em: Likewise. * emultempl/metagelf.em: Likewise. * emultempl/msp430.em: Likewise. * emultempl/nds32elf.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/sh64elf.em: Likewise. * emultempl/spu_ovl.S: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/tic6xdsbt.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/vms.em: Likewise. * po/Make-in: Likewise. * scripttempl/DWARF.sc: Likewise. * scripttempl/aix.sc: Likewise. * scripttempl/alpha.sc: Likewise. * scripttempl/alphavms.sc: Likewise. * scripttempl/aout.sc: Likewise. * scripttempl/arclinux.sc: Likewise. * scripttempl/armaout.sc: Likewise. * scripttempl/armbpabi.sc: Likewise. * scripttempl/armcoff.sc: Likewise. * scripttempl/avr.sc: Likewise. * scripttempl/crisaout.sc: Likewise. * scripttempl/delta68.sc: Likewise. * scripttempl/dlx.sc: Likewise. * scripttempl/elf.sc: Likewise. * scripttempl/elf32cr16.sc: Likewise. * scripttempl/elf32cr16c.sc: Likewise. * scripttempl/elf32crx.sc: Likewise. * scripttempl/elf32msp430.sc: Likewise. * scripttempl/elf32msp430_3.sc: Likewise. * scripttempl/elf32sh-symbian.sc: Likewise. * scripttempl/elf32xc16x.sc: Likewise. * scripttempl/elf32xc16xl.sc: Likewise. * scripttempl/elf32xc16xs.sc: Likewise. * scripttempl/elf64hppa.sc: Likewise. * scripttempl/elf_chaos.sc: Likewise. * scripttempl/elfarc.sc: Likewise. * scripttempl/elfarcv2.sc: Likewise. * scripttempl/elfd10v.sc: Likewise. * scripttempl/elfd30v.sc: Likewise. * scripttempl/elfi370.sc: Likewise. * scripttempl/elfm68hc11.sc: Likewise. * scripttempl/elfm68hc12.sc: Likewise. * scripttempl/elfmicroblaze.sc: Likewise. * scripttempl/elfxgate.sc: Likewise. * scripttempl/elfxtensa.sc: Likewise. * scripttempl/epiphany_4x4.sc: Likewise. * scripttempl/epocpe.sc: Likewise. * scripttempl/h8300.sc: Likewise. * scripttempl/h8300h.sc: Likewise. * scripttempl/h8300hn.sc: Likewise. * scripttempl/h8300s.sc: Likewise. * scripttempl/h8300sn.sc: Likewise. * scripttempl/h8300sx.sc: Likewise. * scripttempl/h8300sxn.sc: Likewise. * scripttempl/h8500.sc: Likewise. * scripttempl/h8500b.sc: Likewise. * scripttempl/h8500c.sc: Likewise. * scripttempl/h8500m.sc: Likewise. * scripttempl/h8500s.sc: Likewise. * scripttempl/hppaelf.sc: Likewise. * scripttempl/i386beos.sc: Likewise. * scripttempl/i386coff.sc: Likewise. * scripttempl/i386go32.sc: Likewise. * scripttempl/i386msdos.sc: Likewise. * scripttempl/i860coff.sc: Likewise. * scripttempl/i960.sc: Likewise. * scripttempl/ia64vms.sc: Likewise. * scripttempl/ip2k.sc: Likewise. * scripttempl/iq2000.sc: Likewise. * scripttempl/m68kaux.sc: Likewise. * scripttempl/m68kcoff.sc: Likewise. * scripttempl/m88kbcs.sc: Likewise. * scripttempl/mcorepe.sc: Likewise. * scripttempl/mep.sc: Likewise. * scripttempl/mips.sc: Likewise. * scripttempl/mipsbsd.sc: Likewise. * scripttempl/mmo.sc: Likewise. * scripttempl/moxie.sc: Likewise. * scripttempl/nds32elf.sc: Likewise. * scripttempl/nw.sc: Likewise. * scripttempl/pe.sc: Likewise. * scripttempl/pep.sc: Likewise. * scripttempl/pj.sc: Likewise. * scripttempl/ppcpe.sc: Likewise. * scripttempl/psos.sc: Likewise. * scripttempl/riscix.sc: Likewise. * scripttempl/sh.sc: Likewise. * scripttempl/sparccoff.sc: Likewise. * scripttempl/st2000.sc: Likewise. * scripttempl/tic30aout.sc: Likewise. * scripttempl/tic30coff.sc: Likewise. * scripttempl/tic4xcoff.sc: Likewise. * scripttempl/tic54xcoff.sc: Likewise. * scripttempl/tic80coff.sc: Likewise. * scripttempl/v850.sc: Likewise. * scripttempl/v850_rh850.sc: Likewise. * scripttempl/vanilla.sc: Likewise. * scripttempl/visium.sc: Likewise. * scripttempl/w65.sc: Likewise. * scripttempl/xstormy16.sc: Likewise. * scripttempl/z80.sc: Likewise. * scripttempl/z8000.sc: Likewise. * configure: Regenerate.
214 lines
5.9 KiB
Python
214 lines
5.9 KiB
Python
# A PE linker script for PowerPC.
|
|
# Loosely based on Steve Chamberlain's pe.sc.
|
|
# All new mistakes should be credited to Kim Knuttila (krk@cygnus.com)
|
|
#
|
|
# Copyright (C) 2014-2017 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.
|
|
#
|
|
# These are substituted in as variables in order to get '}' in a shell
|
|
# conditional expansion.
|
|
|
|
INIT='.init : { *(.init) }'
|
|
FINI='.fini : { *(.fini) }'
|
|
|
|
cat <<EOF
|
|
/* Copyright (C) 2014-2017 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}
|
|
|
|
/* Much of this layout was determined by delving into .exe files for
|
|
the box generated by other compilers/linkers/etc. This means that
|
|
if a particular feature did not happen to appear in one of the
|
|
subject files, then it may not be yet supported.
|
|
*/
|
|
|
|
/* It's "mainCRTStartup", not "_mainCRTStartup", and it's located in
|
|
one of the two .lib files (libc.lib and kernel32.lib) that currently
|
|
must be present on the link line. This means that you must use
|
|
"-u mainCRTStartup" to make sure it gets included in the link.
|
|
*/
|
|
|
|
${RELOCATING+ENTRY (mainCRTStartup)}
|
|
|
|
SECTIONS
|
|
{
|
|
|
|
/* text - the usual meaning */
|
|
.text ${RELOCATING+ __image_base__ + __section_alignment__ } :
|
|
{
|
|
${RELOCATING+ *(.init);}
|
|
*(.text)
|
|
${RELOCATING+ *(.text.*)}
|
|
*(.gcc_except_table)
|
|
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
|
LONG (-1); *(.ctors); *(.ctor); LONG (0); }
|
|
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
|
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
|
${RELOCATING+ *(.fini);}
|
|
${RELOCATING+ etext = .};
|
|
}
|
|
|
|
/* rdata - Read Only Runtime Data
|
|
CTR sections: All of the CRT (read only C runtime data) sections
|
|
appear at the start of the .rdata (read only runtime data)
|
|
section, in the following order. Don't know if it matters or not.
|
|
Not all sections are always present either.
|
|
.rdata: compiler generated read only data
|
|
.xdata: compiler generated exception handling table. (Most docs
|
|
seem to suggest that this section is now deprecated infavor
|
|
of the ydata section)
|
|
.edata: The exported names table.
|
|
*/
|
|
.rdata BLOCK(__section_alignment__) :
|
|
{
|
|
*(.CRT\$XCA);
|
|
*(.CRT\$XCC);
|
|
*(.CRT\$XCZ);
|
|
*(.CRT\$XIA);
|
|
*(.CRT\$XIC);
|
|
*(.CRT\$XIZ);
|
|
*(.CRT\$XLA);
|
|
*(.CRT\$XLZ);
|
|
*(.CRT\$XPA);
|
|
*(.CRT\$XPX);
|
|
*(.CRT\$XPZ);
|
|
*(.CRT\$XTA);
|
|
*(.CRT\$XTZ);
|
|
*(.rdata);
|
|
*(.xdata);
|
|
}
|
|
|
|
.edata BLOCK(__section_alignment__) :
|
|
{
|
|
*(.edata);
|
|
}
|
|
|
|
/* data - initialized data
|
|
.ydata: exception handling information.
|
|
.data: the usual meaning.
|
|
.data2: more of the same.
|
|
.bss: For some reason, bss appears to be included in the data
|
|
section, as opposed to being given a section of it's own.
|
|
COMMON:
|
|
*/
|
|
.data BLOCK(__section_alignment__) :
|
|
{
|
|
__data_start__ = . ;
|
|
*(.ydata);
|
|
*(.data);
|
|
*(.data2);
|
|
__bss_start__ = . ;
|
|
*(.bss) ;
|
|
*(COMMON);
|
|
__bss_end__ = . ;
|
|
${RELOCATING+ end = .};
|
|
__data_end__ = . ;
|
|
}
|
|
|
|
/* The exception handling table. A sequence of 5 word entries. Section
|
|
address and extent are placed in the DataDirectory.
|
|
*/
|
|
.pdata BLOCK(__section_alignment__) :
|
|
{
|
|
*(.pdata)
|
|
;
|
|
}
|
|
|
|
/* The idata section is chock full of magic bits.
|
|
1. Boundaries around various idata parts are used to initialize
|
|
some of the fields of the DataDirectory. In particular, the
|
|
magic for 2, 4 and 5 are known to be used. Some compilers
|
|
appear to generate magic section symbols for this purpose.
|
|
Where we can, we catch such symbols and use our own. This of
|
|
course is something less than a perfect strategy.
|
|
2. The table of contents is placed immediately after idata4.
|
|
The ".private.toc" sections are generated by the ppc bfd. The
|
|
.toc variable is generated by gas, and resolved here. It is
|
|
used to initialized function descriptors (and anyone else who
|
|
needs the address of the module's toc). The only thing
|
|
interesting about it at all? Most ppc instructions using it
|
|
have a 16bit displacement field. The convention for addressing
|
|
is to initialize the .toc value to 32K past the start of the
|
|
actual toc, and subtract 32K from all references, thus using
|
|
the entire 64K range. Naturally, the reloc code must agree
|
|
on this number or you get pretty stupid results.
|
|
*/
|
|
.idata BLOCK(__section_alignment__) :
|
|
{
|
|
__idata2_magic__ = .;
|
|
*(.idata\$2);
|
|
__idata3_magic__ = .;
|
|
*(.idata\$3);
|
|
__idata4_magic__ = .;
|
|
*(.idata\$4);
|
|
. = ALIGN(4);
|
|
.toc = . + 32768;
|
|
*(.private.toc);
|
|
__idata5_magic__ = .;
|
|
*(.idata\$5);
|
|
__idata6_magic__ = .;
|
|
*(.idata\$6);
|
|
__idata7_magic__ = .;
|
|
*(.idata\$7);
|
|
;
|
|
}
|
|
|
|
/* reldata -- data that requires relocation
|
|
*/
|
|
.reldata BLOCK(__section_alignment__) :
|
|
{
|
|
*(.reldata)
|
|
;
|
|
}
|
|
|
|
|
|
/* Resources */
|
|
.rsrc BLOCK(__section_alignment__) :
|
|
{
|
|
*(.rsrc\$01)
|
|
*(.rsrc\$02)
|
|
;
|
|
}
|
|
|
|
.stab BLOCK(__section_alignment__) ${RELOCATING+(NOLOAD)} :
|
|
{
|
|
[ .stab ]
|
|
}
|
|
|
|
.stabstr BLOCK(__section_alignment__) ${RELOCATING+(NOLOAD)} :
|
|
{
|
|
[ .stabstr ]
|
|
}
|
|
|
|
/* The .reloc section is currently generated by the dlltool from Steve
|
|
Chamberlain in a second pass of linking. Section address and extent
|
|
are placed in the DataDirectory.
|
|
*/
|
|
.reloc BLOCK(__section_alignment__) :
|
|
{
|
|
*(.reloc)
|
|
;
|
|
}
|
|
|
|
/* We don't do anything useful with codeview debugger support or the
|
|
directive section (yet). Hopefully, we junk them correctly.
|
|
*/
|
|
/DISCARD/ BLOCK(__section_alignment__) :
|
|
{
|
|
*(.debug\$S)
|
|
*(.debug\$T)
|
|
*(.debug\$F)
|
|
*(.drectve)
|
|
;
|
|
}
|
|
}
|
|
EOF
|