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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/mvme136/startup/linkcmds

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