X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fscripttempl%2Felfd30v.sc;h=b5db0e6ca91105b06ee2b7e75a02bd24a92af3b9;hb=43e56c3465048924a6b985e0e75bfe2a7ccaef0e;hp=fe74e3de58841fbff3c610aaa3671ad36688ed1e;hpb=27be012212cccbdeda56117a31b8cb84c8a42094;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/scripttempl/elfd30v.sc b/ld/scripttempl/elfd30v.sc index fe74e3de58..b5db0e6ca9 100644 --- a/ld/scripttempl/elfd30v.sc +++ b/ld/scripttempl/elfd30v.sc @@ -1,63 +1,136 @@ + +CTOR=".ctors ${CONSTRUCTING-0} : + { + ${CONSTRUCTING+ __CTOR_LIST__ = .; } + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + ${CONSTRUCTING+ __CTOR_END__ = .; } + } ${RELOCATING+ > ${DATA_MEMORY}}" + +DTOR=" .dtors ${CONSTRUCTING-0} : + { + ${CONSTRUCTING+ __DTOR_LIST__ = .; } + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + ${CONSTRUCTING+ __DTOR_END__ = .; } + } ${RELOCATING+ > ${DATA_MEMORY}}" + cat < text} + .stext ${RELOCATING-0} : { *(.stext) } ${RELOCATING+ > text} /* Internal text space or external memory */ .text : { - ${RELOCATING+ PROVIDE (__text_start = .) ; } *(.text) *(.gnu.linkonce.t*) *(.init) *(.fini) - ${RELOCATING+ PROVIDE (__text_end = .) ; } ${RELOCATING+ _etext = . ; } } ${RELOCATING+ > ${TEXT_MEMORY}} /* Internal data space */ - .sdata ${RELOCATING-0} : - { - ${RELOCATING+ PROVIDE (__sdata_start = .) ; } - *(.sdata) - ${RELOCATING+ PROVIDE (__sdata_end = .) ; } - } ${RELOCATING+ > data} + .srodata ${RELOCATING-0} : { *(.srodata) } ${RELOCATING+ > data} + .sdata ${RELOCATING-0} : { *(.sdata) } ${RELOCATING+ > data} /* Internal data space or external memory */ - .strings ${RELOCATING-0} : { *(.strings) } ${RELOCATING+ > ${DATA_MEMORY}} .rodata ${RELOCATING-0} : { *(.rodata) } ${RELOCATING+ > ${DATA_MEMORY}} - .rodata1 ${RELOCATING-0} : { *(.rodata1) } ${RELOCATING+ > ${DATA_MEMORY}} - .data1 ${RELOCATING-0} : { *(.data1) } ${RELOCATING+ > ${DATA_MEMORY}} - .ctors ${RELOCATING-0} : - { - ${CONSTRUCTING+${CTOR_START}} - *(.ctors) - ${CONSTRUCTING+${CTOR_END}} - } ${RELOCATING+ > ${DATA_MEMORY}} + /* C++ exception support. */ + .eh_frame ${RELOCATING-0} : { KEEP (*(.eh_frame)) } ${RELOCATING+ > ${DATA_MEMORY}} + .gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) } ${RELOCATING+ > ${DATA_MEMORY}} - .dtors ${RELOCATING-0} : - { - ${CONSTRUCTING+${DTOR_START}} - *(.dtors) - ${CONSTRUCTING+${DTOR_END}} - } ${RELOCATING+ > ${DATA_MEMORY}} + /* Java class registration support. */ + .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) } ${RELOCATING+ >${DATA_MEMORY}} + + ${RELOCATING+${CTOR}} + ${RELOCATING+${DTOR}} .data ${RELOCATING-0} : { @@ -75,12 +148,8 @@ SECTIONS ${RELOCATING+ PROVIDE (__etext_end = .) ; } } ${RELOCATING+ > emem} - .edata ${RELOCATING-0} : - { - ${RELOCATING+ PROVIDE (__edata_start = .) ; } - *(.edata) - ${RELOCATING+ PROVIDE (__edata_end = .) ; } - } ${RELOCATING+ > emem} + .erodata ${RELOCATING-0} : { *(.erodata) } ${RELOCATING+ > emem} + .edata ${RELOCATING-0} : { *(.edata) } ${RELOCATING+ > emem} .sbss ${RELOCATING-0} : { @@ -105,6 +174,13 @@ SECTIONS ${RELOCATING+ _end = . ; } } ${RELOCATING+ > ${DATA_MEMORY}} + .eit_v ${RELOCATING-0} : + { + ${RELOCATING+ PROVIDE (__eit_start = .) ; } + *(.eit_v) + ${RELOCATING+ PROVIDE (__eit_end = .) ; } + } ${RELOCATING+ > eit} + /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } @@ -132,7 +208,7 @@ SECTIONS .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ - .debug_info 0 : { *(.debug_info) } + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) }