OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.18.50/] [ld/] [scripttempl/] [ppcpe.sc] - Diff between revs 38 and 156

Only display areas with differences | Details | Blame | View Log

Rev 38 Rev 156
# A PE linker script for PowerPC.
# A PE linker script for PowerPC.
# Loosely based on Steve Chamberlain's pe.sc.
# Loosely based on Steve Chamberlain's pe.sc.
# All new mistakes should be credited to Kim Knuttila (krk@cygnus.com)
# All new mistakes should be credited to Kim Knuttila (krk@cygnus.com)
#
#
# These are substituted in as variables in order to get '}' in a shell
# These are substituted in as variables in order to get '}' in a shell
# conditional expansion.
# conditional expansion.
INIT='.init : { *(.init) }'
INIT='.init : { *(.init) }'
FINI='.fini : { *(.fini) }'
FINI='.fini : { *(.fini) }'
cat <
cat <
OUTPUT_FORMAT(${OUTPUT_FORMAT})
OUTPUT_FORMAT(${OUTPUT_FORMAT})
${LIB_SEARCH_DIRS}
${LIB_SEARCH_DIRS}
/* Much of this layout was determined by delving into .exe files for
/* Much of this layout was determined by delving into .exe files for
   the box generated by other compilers/linkers/etc. This means that
   the box generated by other compilers/linkers/etc. This means that
   if a particular feature did not happen to appear in one of the
   if a particular feature did not happen to appear in one of the
   subject files, then it may not be yet supported.
   subject files, then it may not be yet supported.
*/
*/
/* It's "mainCRTStartup", not "_mainCRTStartup", and it's located in
/* It's "mainCRTStartup", not "_mainCRTStartup", and it's located in
   one of the two .lib files (libc.lib and kernel32.lib) that currently
   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
   must be present on the link line. This means that you must use
   "-u mainCRTStartup" to make sure it gets included in the link.
   "-u mainCRTStartup" to make sure it gets included in the link.
*/
*/
ENTRY(mainCRTStartup)
ENTRY(mainCRTStartup)
SECTIONS
SECTIONS
{
{
  /* text - the usual meaning */
  /* text - the usual meaning */
  .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
  .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
        {
        {
            ${RELOCATING+ *(.init);}
            ${RELOCATING+ *(.init);}
            *(.text)
            *(.text)
            *(.gcc_except_table)
            *(.gcc_except_table)
            ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
            ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
                        LONG (-1); *(.ctors); *(.ctor); LONG (0); }
                        LONG (-1); *(.ctors); *(.ctor); LONG (0); }
            ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
            ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
                        LONG (-1); *(.dtors); *(.dtor);  LONG (0); }
                        LONG (-1); *(.dtors); *(.dtor);  LONG (0); }
            ${RELOCATING+ *(.fini);}
            ${RELOCATING+ *(.fini);}
            ${RELOCATING+ etext  =  .};
            ${RELOCATING+ etext  =  .};
        }
        }
  /* rdata - Read Only Runtime Data
  /* rdata - Read Only Runtime Data
     CTR sections: All of the CRT (read only C runtime data) sections
     CTR sections: All of the CRT (read only C runtime data) sections
        appear at the start of the .rdata (read only runtime data)
        appear at the start of the .rdata (read only runtime data)
        section, in the following order. Don't know if it matters or not.
        section, in the following order. Don't know if it matters or not.
        Not all sections are always present either.
        Not all sections are always present either.
     .rdata: compiler generated read only data
     .rdata: compiler generated read only data
     .xdata: compiler generated exception handling table. (Most docs
     .xdata: compiler generated exception handling table. (Most docs
        seem to suggest that this section is now deprecated infavor
        seem to suggest that this section is now deprecated infavor
        of the ydata section)
        of the ydata section)
     .edata: The exported names table.
     .edata: The exported names table.
  */
  */
  .rdata BLOCK(__section_alignment__) :
  .rdata BLOCK(__section_alignment__) :
        {
        {
            *(.CRT\$XCA);
            *(.CRT\$XCA);
            *(.CRT\$XCC);
            *(.CRT\$XCC);
            *(.CRT\$XCZ);
            *(.CRT\$XCZ);
            *(.CRT\$XIA);
            *(.CRT\$XIA);
            *(.CRT\$XIC);
            *(.CRT\$XIC);
            *(.CRT\$XIZ);
            *(.CRT\$XIZ);
            *(.CRT\$XLA);
            *(.CRT\$XLA);
            *(.CRT\$XLZ);
            *(.CRT\$XLZ);
            *(.CRT\$XPA);
            *(.CRT\$XPA);
            *(.CRT\$XPX);
            *(.CRT\$XPX);
            *(.CRT\$XPZ);
            *(.CRT\$XPZ);
            *(.CRT\$XTA);
            *(.CRT\$XTA);
            *(.CRT\$XTZ);
            *(.CRT\$XTZ);
            *(.rdata);
            *(.rdata);
            *(.xdata);
            *(.xdata);
        }
        }
  .edata BLOCK(__section_alignment__) :
  .edata BLOCK(__section_alignment__) :
        {
        {
            *(.edata);
            *(.edata);
        }
        }
  /* data - initialized data
  /* data - initialized data
     .ydata: exception handling information.
     .ydata: exception handling information.
     .data: the usual meaning.
     .data: the usual meaning.
     .data2: more of the same.
     .data2: more of the same.
     .bss: For some reason, bss appears to be included in the data
     .bss: For some reason, bss appears to be included in the data
        section, as opposed to being given a section of it's own.
        section, as opposed to being given a section of it's own.
     COMMON:
     COMMON:
  */
  */
  .data BLOCK(__section_alignment__) :
  .data BLOCK(__section_alignment__) :
        {
        {
            __data_start__ = . ;
            __data_start__ = . ;
            *(.ydata);
            *(.ydata);
            *(.data);
            *(.data);
            *(.data2);
            *(.data2);
            __bss_start__ = . ;
            __bss_start__ = . ;
            *(.bss) ;
            *(.bss) ;
            *(COMMON);
            *(COMMON);
            __bss_end__ = . ;
            __bss_end__ = . ;
            ${RELOCATING+ end =  .};
            ${RELOCATING+ end =  .};
            __data_end__ = . ;
            __data_end__ = . ;
        }
        }
  /* The exception handling table. A sequence of 5 word entries. Section
  /* The exception handling table. A sequence of 5 word entries. Section
     address and extent are placed in the DataDirectory.
     address and extent are placed in the DataDirectory.
  */
  */
  .pdata BLOCK(__section_alignment__) :
  .pdata BLOCK(__section_alignment__) :
        {
        {
            *(.pdata)
            *(.pdata)
            ;
            ;
        }
        }
  /* The idata section is chock full of magic bits.
  /* The idata section is chock full of magic bits.
        1. Boundaries around various idata parts are used to initialize
        1. Boundaries around various idata parts are used to initialize
           some of the fields of the DataDirectory. In particular, the
           some of the fields of the DataDirectory. In particular, the
           magic for 2, 4 and 5 are known to be used. Some compilers
           magic for 2, 4 and 5 are known to be used. Some compilers
           appear to generate magic section symbols for this purpose.
           appear to generate magic section symbols for this purpose.
           Where we can, we catch such symbols and use our own. This of
           Where we can, we catch such symbols and use our own. This of
           course is something less than a perfect strategy.
           course is something less than a perfect strategy.
        2. The table of contents is placed immediately after idata4.
        2. The table of contents is placed immediately after idata4.
           The ".private.toc" sections are generated by the ppc bfd. The
           The ".private.toc" sections are generated by the ppc bfd. The
           .toc variable is generated by gas, and resolved here. It is
           .toc variable is generated by gas, and resolved here. It is
           used to initialized function descriptors (and anyone else who
           used to initialized function descriptors (and anyone else who
           needs the address of the module's toc). The only thing
           needs the address of the module's toc). The only thing
           interesting about it at all? Most ppc instructions using it
           interesting about it at all? Most ppc instructions using it
           have a 16bit displacement field. The convention for addressing
           have a 16bit displacement field. The convention for addressing
           is to initialize the .toc value to 32K past the start of the
           is to initialize the .toc value to 32K past the start of the
           actual toc, and subtract 32K from all references, thus using
           actual toc, and subtract 32K from all references, thus using
           the entire 64K range. Naturally, the reloc code must agree
           the entire 64K range. Naturally, the reloc code must agree
           on this number or you get pretty stupid results.
           on this number or you get pretty stupid results.
  */
  */
  .idata BLOCK(__section_alignment__) :
  .idata BLOCK(__section_alignment__) :
        {
        {
            __idata2_magic__ = .;
            __idata2_magic__ = .;
            *(.idata\$2);
            *(.idata\$2);
            __idata3_magic__ = .;
            __idata3_magic__ = .;
            *(.idata\$3);
            *(.idata\$3);
            __idata4_magic__ = .;
            __idata4_magic__ = .;
            *(.idata\$4);
            *(.idata\$4);
            . = ALIGN(4);
            . = ALIGN(4);
            .toc = . + 32768;
            .toc = . + 32768;
            *(.private.toc);
            *(.private.toc);
            __idata5_magic__ = .;
            __idata5_magic__ = .;
            *(.idata\$5);
            *(.idata\$5);
            __idata6_magic__ = .;
            __idata6_magic__ = .;
            *(.idata\$6);
            *(.idata\$6);
            __idata7_magic__ = .;
            __idata7_magic__ = .;
            *(.idata\$7);
            *(.idata\$7);
            ;
            ;
        }
        }
  /* reldata -- data that requires relocation
  /* reldata -- data that requires relocation
  */
  */
  .reldata BLOCK(__section_alignment__) :
  .reldata BLOCK(__section_alignment__) :
        {
        {
            *(.reldata)
            *(.reldata)
            ;
            ;
        }
        }
  /* Resources */
  /* Resources */
  .rsrc BLOCK(__section_alignment__) :
  .rsrc BLOCK(__section_alignment__) :
        {
        {
            *(.rsrc\$01)
            *(.rsrc\$01)
            *(.rsrc\$02)
            *(.rsrc\$02)
            ;
            ;
        }
        }
  .stab BLOCK(__section_alignment__)  ${RELOCATING+(NOLOAD)} :
  .stab BLOCK(__section_alignment__)  ${RELOCATING+(NOLOAD)} :
  {
  {
    [ .stab ]
    [ .stab ]
  }
  }
  .stabstr BLOCK(__section_alignment__) ${RELOCATING+(NOLOAD)} :
  .stabstr BLOCK(__section_alignment__) ${RELOCATING+(NOLOAD)} :
  {
  {
    [ .stabstr ]
    [ .stabstr ]
  }
  }
  /* The .reloc section is currently generated by the dlltool from Steve
  /* The .reloc section is currently generated by the dlltool from Steve
     Chamberlain in a second pass of linking. Section address and extent
     Chamberlain in a second pass of linking. Section address and extent
     are placed in the DataDirectory.
     are placed in the DataDirectory.
  */
  */
  .reloc BLOCK(__section_alignment__) :
  .reloc BLOCK(__section_alignment__) :
        {
        {
            *(.reloc)
            *(.reloc)
            ;
            ;
        }
        }
  /* We don't do anything useful with codeview debugger support or the
  /* We don't do anything useful with codeview debugger support or the
     directive section (yet). Hopefully, we junk them correctly.
     directive section (yet). Hopefully, we junk them correctly.
  */
  */
  /DISCARD/ BLOCK(__section_alignment__) :
  /DISCARD/ BLOCK(__section_alignment__) :
        {
        {
            *(.debug\$S)
            *(.debug\$S)
            *(.debug\$T)
            *(.debug\$T)
            *(.debug\$F)
            *(.debug\$F)
            *(.drectve)
            *(.drectve)
            ;
            ;
        }
        }
}
}
EOF
EOF
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.