9de4d8f1c0
* ldgram.y (statement_list_opt): New nonterminal, either empty or statement_list. (section): Use statement_list_opt, not statement_list. * m68kcoff.sc-sh: Gather constructors and destructors and define __CTOR_LIST__ and __DTOR_LIST__ appropriately. * sa29200.sc-sh: Gather constructors and destructors and define ___CTOR_LIST__ and ___DTOR_LIST__ appropriately.
52 lines
1.3 KiB
Plaintext
52 lines
1.3 KiB
Plaintext
# This is totally made up, from the a29k stuff. If you know better,
|
|
# tell us about it.
|
|
cat <<EOF
|
|
OUTPUT_FORMAT("${OUTPUT_FORMAT}")
|
|
${LIB_SEARCH_DIRS}
|
|
|
|
MEMORY {
|
|
text : ORIGIN = 0x1000000, LENGTH = 0x1000000
|
|
talias : ORIGIN = 0x2000000, LENGTH = 0x1000000
|
|
data : ORIGIN = 0x3000000, LENGTH = 0x1000000
|
|
mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000
|
|
rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000
|
|
}
|
|
SECTIONS
|
|
{
|
|
.text : {
|
|
*(.text)
|
|
${RELOCATING+ etext = .;}
|
|
${CONSTRUCTING+ __CTOR_LIST__ = .;}
|
|
${CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)}
|
|
*(.ctors)
|
|
${CONSTRUCTING+ LONG(0)}
|
|
${CONSTRUCTING+ __CTOR_END__ = .;}
|
|
${CONSTRUCTING+ __DTOR_LIST__ = .;}
|
|
${CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)}
|
|
*(.dtors)
|
|
${CONSTRUCTING+ LONG(0)}
|
|
${CONSTRUCTING+ __DTOR_END__ = .;}
|
|
*(.lit)
|
|
*(.shdata)
|
|
} ${RELOCATING+ > text}
|
|
.shbss SIZEOF(.text) + ADDR(.text) : {
|
|
*(.shbss)
|
|
}
|
|
.talias : { } ${RELOCATING+ > talias}
|
|
.data : {
|
|
*(.data)
|
|
${RELOCATING+ edata = .};
|
|
} ${RELOCATING+ > data}
|
|
.bss SIZEOF(.data) + ADDR(.data) :
|
|
{
|
|
${RELOCATING+ __bss_start = .};
|
|
*(.bss)
|
|
*(COMMON)
|
|
${RELOCATING+ end = ALIGN(0x8)};
|
|
${RELOCATING+ _end = ALIGN(0x8)};
|
|
}
|
|
.mstack : { } ${RELOCATING+ > mstack}
|
|
.rstack : { } ${RELOCATING+ > rstack}
|
|
}
|
|
EOF
|