diff options
Diffstat (limited to 'ld/scripttempl/nw.sc')
-rw-r--r-- | ld/scripttempl/nw.sc | 75 |
1 files changed, 36 insertions, 39 deletions
diff --git a/ld/scripttempl/nw.sc b/ld/scripttempl/nw.sc index 3fb9bce..38174ab 100644 --- a/ld/scripttempl/nw.sc +++ b/ld/scripttempl/nw.sc @@ -23,8 +23,8 @@ test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT} test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT} test "$LD_FLAG" = "N" && DATA_ADDR=. -INTERP=".interp ${RELOCATING-0} : { *(.interp) }" -PLT=".plt ${RELOCATING-0} : { *(.plt) }" +INTERP=".interp : { *(.interp) }" +PLT=".plt : { *(.plt) }" cat <<EOF OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}", "${LITTLE_OUTPUT_FORMAT}") @@ -34,38 +34,35 @@ ${RELOCATING+${LIB_SEARCH_DIRS}} ${RELOCATING+/* Do we need any of these for elf? __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */} ${RELOCATING+${EXECUTABLE_SYMBOLS}} -${RELOCATING- /* For some reason, the Solaris linker makes bad executables - if gld -r is used and the intermediate file has sections starting - at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld - bug. But for now assigning the zero vmas works. */} + SECTIONS { /* Read-only sections, merged into text segment: */ ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_START_ADDR} + SIZEOF_HEADERS;}} ${CREATE_SHLIB+${RELOCATING+. = SIZEOF_HEADERS;}} ${CREATE_SHLIB-${INTERP}} - .hash ${RELOCATING-0} : { *(.hash) } - .dynsym ${RELOCATING-0} : { *(.dynsym) } - .dynstr ${RELOCATING-0} : { *(.dynstr) } - .rel.text ${RELOCATING-0} : { *(.rel.text) } - .rela.text ${RELOCATING-0} : { *(.rela.text) } - .rel.data ${RELOCATING-0} : { *(.rel.data) } - .rela.data ${RELOCATING-0} : { *(.rela.data) } - .rel.rodata ${RELOCATING-0} : { *(.rel.rodata) } - .rela.rodata ${RELOCATING-0} : { *(.rela.rodata) } - .rel.got ${RELOCATING-0} : { *(.rel.got) } - .rela.got ${RELOCATING-0} : { *(.rela.got) } - .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) } - .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) } - .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) } - .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) } - .rel.bss ${RELOCATING-0} : { *(.rel.bss) } - .rela.bss ${RELOCATING-0} : { *(.rela.bss) } - .rel.plt ${RELOCATING-0} : { *(.rel.plt) } - .rela.plt ${RELOCATING-0} : { *(.rela.plt) } - .init ${RELOCATING-0} : { *(.init) } =${NOP-0} + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } =${NOP-0} ${DATA_PLT-${PLT}} - .text ${RELOCATING-0} : + .text : { ${RELOCATING+${TEXT_START_SYMBOLS}} *(.text) @@ -82,36 +79,36 @@ SECTIONS } ${RELOCATING+_etext = .;} ${RELOCATING+PROVIDE (etext = .);} - .fini ${RELOCATING-0} : { *(.fini) } =${NOP-0} - .ctors ${RELOCATING-0} : { *(.ctors) } - .dtors ${RELOCATING-0} : { *(.dtors) } - .rodata ${RELOCATING-0} : { *(.rodata) } - .rodata1 ${RELOCATING-0} : { *(.rodata1) } + .fini : { *(.fini) } =${NOP-0} + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + .rodata : { *(.rodata) } + .rodata1 : { *(.rodata1) } ${OTHER_READONLY_SECTIONS} /* Read-write section, merged into data segment: */ ${RELOCATING+. = ${DATA_ADDR- ALIGN(8) + ${MAXPAGESIZE}};} - .data ${RELOCATING-0} : + .data : { ${RELOCATING+${DATA_START_SYMBOLS}} *(.data) ${CONSTRUCTING+CONSTRUCTORS} } - .data1 ${RELOCATING-0} : { *(.data1) } + .data1 : { *(.data1) } ${OTHER_READWRITE_SECTIONS} - .got ${RELOCATING-0} : { *(.got.plt) *(.got) } - .dynamic ${RELOCATING-0} : { *(.dynamic) } + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } ${DATA_PLT+${PLT}} /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ - .sdata ${RELOCATING-0} : { *(.sdata) } + .sdata : { *(.sdata) } ${RELOCATING+_edata = .;} ${RELOCATING+PROVIDE (edata = .);} ${RELOCATING+__bss_start = .;} ${RELOCATING+${OTHER_BSS_SYMBOLS}} - .sbss ${RELOCATING-0} : { *(.sbss) *(.scommon) } - .bss ${RELOCATING-0} : + .sbss : { *(.sbss) *(.scommon) } + .bss : { *(.dynbss) *(.bss) |