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


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/dmv152
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/dmv152/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/dmv152/startup/linkcmds

    r69537ca9 rb2b4835  
    1313 */
    1414
     15/*
     16 * Declare some sizes.
     17 */
     18HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
    1519StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
    1620
    1721MEMORY
    18         {
    19         ram : org = 0x12800, l = 1M
    20         }
     22{
     23        ram : org = 0x0, l = 1M
     24}
    2125
    2226SECTIONS
    2327{
    24         .text 0x12800 :
    25         {
    26         text_start = . ;
    27         _text_start = . ;
    28         *(.text)
    29         . = ALIGN (16);
     28        ram : {
     29                . = 0x12800;
     30        } >ram
    3031
    31         *(.eh_fram)
    32         . = ALIGN (16);
     32        /*
     33         * Text, data and bss segments
     34         */
     35        .text : {
     36                *(.text)
    3337
    34         . = ALIGN (16);
    35         *(.gcc_exc)
     38                /*
     39                 * C++ constructors/destructors
     40                 */
     41                *(.gnu.linkonce.t.*)
    3642
    37         /*
    38          * C++ constructors
    39          */
    40         __CTOR_LIST__ = .;
    41         LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
    42         *(.ctors)
    43         LONG(0)
    44         __CTOR_END__ = .;
    45         __DTOR_LIST__ = .;
    46         LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
    47         *(.dtors)
    48         LONG(0)
    49         __DTOR_END__ = .;
    50         etext = ALIGN( 0x10 ) ;
    51         _etext = .;
    52         }
     43                /*
     44                 * Initialization and finalization code.
     45                 *
     46                 * Various files can provide initialization and finalization
     47                 * functions.  crtbegin.o and crtend.o are two instances. The
     48                 * body of these functions are in .init and .fini sections. We
     49                 * accumulate the bodies here, and prepend function prologues
     50                 * from crti.o and function epilogues from crtn.o. crti.o must
     51                 * be linked first; crtn.o must be linked last.  Because these
     52                 * are wildcards, it doesn't matter if the user does not
     53                 * actually link against crti.o and crtn.o; the linker won't
     54                 * look for a file to match a wildcard.  The wildcard also
     55                 * means that it doesn't matter which directory crti.o and
     56                 * crtn.o are in.
     57                 */
     58                PROVIDE (_init = .);
     59                *crti.o(.init)
     60                *(.init)
     61                *crtn.o(.init)
     62                PROVIDE (_fini = .);
     63                *crti.o(.fini)
     64                *(.fini)
     65                *crtn.o(.fini)
    5366
     67                /*
     68                 * C++ constructors/destructors
     69                 *
     70                 * gcc uses crtbegin.o to find the start of the constructors
     71                 * and destructors so we make sure it is first.  Because this
     72                 * is a wildcard, it doesn't matter if the user does not
     73                 * actually link against crtbegin.o; the linker won't look for
     74                 * a file to match a wildcard.  The wildcard also means that
     75                 * it doesn't matter which directory crtbegin.o is in. The
     76                 * constructor and destructor list are terminated in
     77                 * crtend.o.  The same comments apply to it.
     78                 */
     79                . = ALIGN (16);
     80                *crtbegin.o(.ctors)
     81                *(.ctors)
     82                *crtend.o(.ctors)
     83                *crtbegin.o(.dtors)
     84                *(.dtors)
     85                *crtend.o(.dtors)
    5486
     87                /*
     88                 * Exception frame info
     89                 */
     90                . = ALIGN (16);
     91                *(.eh_frame)
     92
     93                /*
     94                 * Read-only data
     95                 */
     96                . = ALIGN (16);
     97                _rodata_start = . ;
     98                *(.rodata)
     99                *(.gnu.linkonce.r*)
     100
     101                 . = ALIGN (16);
     102                PROVIDE (etext = .);
     103        } >ram
    55104        .data : {
    56                 data_start = . ;
    57                 _data_start = . ;
    58                 *(.data)
    59                 edata = ALIGN( 0x10 ) ;
    60                 _edata = .;
    61         }
     105                copy_start = .;
     106                *(.data)
     107                *(.gnu.linkonce.d*)
     108                *(.gcc_except_table)
     109                . = ALIGN (16);
     110                PROVIDE (_edata = .);
     111                copy_end = .;
     112        } >ram
    62113        .bss : {
    63                 bss_start = . ;
    64                 _bss_start = . ;
    65                 *(.bss)
    66                 *(COMMON)
    67                 . += StackSize; /* XXX -- Old gld can't handle this */
    68                 . = ALIGN (16);
    69                 stack_init = .;
    70                 end = . ;
    71                 _end = . ;
    72         }
     114                bss_start = .;
     115                . += (256 * 4);
     116                clear_start = .;
     117                *(.bss)
     118                *(COMMON)
     119                . = ALIGN (16);
     120                PROVIDE (end = .);
     121
     122                . += StackSize;
     123                PROVIDE (_stack_init = .);
     124
     125                . = ALIGN (16);
     126                PROVIDE (_HeapStart = .);
     127                . += HeapSize;
     128                PROVIDE (_HeapEnd = .);
     129
     130                clear_end = .;
     131
     132                _WorkspaceBase = .;
     133        } >ram
    73134}
Note: See TracChangeset for help on using the changeset viewer.