Changeset b2b4835 in rtems for c/src/lib/libbsp/m68k/efi332


Ignore:
Timestamp:
Jan 12, 2000, 4:38:57 PM (21 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
c1d2cc9
Parents:
69537ca9
Message:

Eric Norum <eric@…> submitted linker script and bsp_specs
for the gen68360 that let it work with ELF and C++ exceptions. This
was used as the basis for changes to EVERY m68k bsp_specs and linkcmds.
Before this modification is over, the layout of the starting stack,
heap, and workspace will likely be modified for every m68k BSP. Then
they will all be very similar.

Location:
c/src/lib/libbsp/m68k/efi332
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/efi332/bsp_specs

    r69537ca9 rb2b4835  
    1717%{!qrtems: %(old_startfile)} %{qrtems: \
    1818%{!qrtems_debug: start.o%s} \
    19 %{qrtems_debug: start_g.o%s}}
     19%{qrtems_debug: start_g.o%s} \
     20crti.o%s crtbegin.o%s}
    2021
    2122*link:
    2223%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e start}
    2324
     25*endfile:
     26%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}
     27
  • c/src/lib/libbsp/m68k/efi332/startup/linkcmds

    r69537ca9 rb2b4835  
    3131 */
    3232
     33/*
     34 * Declare some sizes.
     35 */
     36HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
     37StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
     38
    3339MEMORY
    3440{
     
    4450SECTIONS
    4551{
    46   .text :
    47   {
    48     CREATE_OBJECT_SYMBOLS
    49     text_start = .;
    50     _text_start = .;
     52        ram : {
     53                . = .;
     54        } >ram
    5155
    52     *(.text)
    53     . = ALIGN (16);
     56        /*
     57         * Text, data and bss segments
     58         */
     59        .text : {
     60                *(.text)
    5461
    55     *(.eh_fram)
    56     . = ALIGN (16);
     62                /*
     63                 * C++ constructors/destructors
     64                 */
     65                *(.gnu.linkonce.t.*)
    5766
    58     etext = ALIGN(0x10);
    59     _etext = .;
    60     __CTOR_LIST__ = .;
    61     LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
    62     *(.ctors)
    63     LONG(0)
    64     __CTOR_END__ = .;
    65     __DTOR_LIST__ = .;
    66     LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
    67     *(.dtors)
    68     LONG(0)
    69     __DTOR_END__ = .;
    70     *(.lit)
    71     *(.shdata)
    72     _endtext = .;
    73   } > ram
    74   .gcc_exc :
    75   {
    76     *(.gcc_exc)
    77   } > ram
    78   .data :
    79   {
    80     data_start = .;
    81     _data_start = .;
    82     _sdata = . ;
    83     *(.data)
    84     CONSTRUCTORS
    85     edata = ALIGN(0x10);
    86     _edata = .;
    87   } > ram
    88   .shbss :
    89   {
    90     *(.shbss)
    91   } > ram
    92   .bss :
    93   {
    94     __bss_start = ALIGN(0x8);
    95     bss_start = .;
    96     _bss_start = .;
    97     *(.bss)
    98     *(COMMON)
    99     end = .;
    100     _end = ALIGN(0x8);
    101     __end = ALIGN(0x8);
    102   } > ram
    103   .stab . (NOLOAD) :
    104   {
    105     [ .stab ]
    106   }
    107   .stabstr . (NOLOAD) :
    108   {
    109     [ .stabstr ]
    110   }
     67                /*
     68                 * Initialization and finalization code.
     69                 *
     70                 * Various files can provide initialization and finalization
     71                 * functions.  crtbegin.o and crtend.o are two instances. The
     72                 * body of these functions are in .init and .fini sections. We
     73                 * accumulate the bodies here, and prepend function prologues
     74                 * from crti.o and function epilogues from crtn.o. crti.o must
     75                 * be linked first; crtn.o must be linked last.  Because these
     76                 * are wildcards, it doesn't matter if the user does not
     77                 * actually link against crti.o and crtn.o; the linker won't
     78                 * look for a file to match a wildcard.  The wildcard also
     79                 * means that it doesn't matter which directory crti.o and
     80                 * crtn.o are in.
     81                 */
     82                PROVIDE (_init = .);
     83                *crti.o(.init)
     84                *(.init)
     85                *crtn.o(.init)
     86                PROVIDE (_fini = .);
     87                *crti.o(.fini)
     88                *(.fini)
     89                *crtn.o(.fini)
     90
     91                /*
     92                 * C++ constructors/destructors
     93                 *
     94                 * gcc uses crtbegin.o to find the start of the constructors
     95                 * and destructors so we make sure it is first.  Because this
     96                 * is a wildcard, it doesn't matter if the user does not
     97                 * actually link against crtbegin.o; the linker won't look for
     98                 * a file to match a wildcard.  The wildcard also means that
     99                 * it doesn't matter which directory crtbegin.o is in. The
     100                 * constructor and destructor list are terminated in
     101                 * crtend.o.  The same comments apply to it.
     102                 */
     103                . = ALIGN (16);
     104                *crtbegin.o(.ctors)
     105                *(.ctors)
     106                *crtend.o(.ctors)
     107                *crtbegin.o(.dtors)
     108                *(.dtors)
     109                *crtend.o(.dtors)
     110
     111                /*
     112                 * Exception frame info
     113                 */
     114                . = ALIGN (16);
     115                *(.eh_frame)
     116
     117                /*
     118                 * Read-only data
     119                 */
     120                . = ALIGN (16);
     121                _rodata_start = . ;
     122                *(.rodata)
     123                *(.gnu.linkonce.r*)
     124
     125                 . = ALIGN (16);
     126                PROVIDE (_etext = .);
     127        } >ram
     128        .data : {
     129                PROVIDE (_copy_start = .);
     130                *(.data)
     131                *(.gnu.linkonce.d*)
     132                *(.gcc_except_table)
     133                . = ALIGN (16);
     134                PROVIDE (_edata = .);
     135                PROVIDE (_copy_end = .);
     136        } >ram
     137        .bss : {
     138                PROVIDE (_bss_start = .);
     139                PROVIDE (_clear_start = .);
     140                *(.bss)
     141                *(COMMON)
     142                . = ALIGN (16);
     143                PROVIDE (end = .);
     144
     145                . += StackSize;
     146                PROVIDE (_stack_init = .);
     147
     148                . = ALIGN (16);
     149                PROVIDE (_HeapStart = .);
     150                . += HeapSize;
     151                PROVIDE (_HeapEnd = .);
     152
     153                clear_end = .;
     154
     155                PROVIDE (_WorkspaceBase = .);
     156        } >ram
    111157}
Note: See TracChangeset for help on using the changeset viewer.