diff -crN binutils-/ld/scripttempl/elf.sc binutils-work/ld/scripttempl/elf.sc *** binutils-/ld/scripttempl/elf.sc 2012-12-18 21:42:44.000000000 +0100 --- binutils-work/ld/scripttempl/elf.sc 2013-01-09 19:14:48.000000000 +0100 *************** *** 213,220 **** .rela.lbss ${RELOCATING-0} : { *(.rela.lbss${RELOCATING+ .rela.lbss.* .rela.gnu.linkonce.lb.*}) } .rel.lrodata ${RELOCATING-0} : { *(.rel.lrodata${RELOCATING+ .rel.lrodata.* .rel.gnu.linkonce.lr.*}) } .rela.lrodata ${RELOCATING-0} : { *(.rela.lrodata${RELOCATING+ .rela.lrodata.* .rela.gnu.linkonce.lr.*}) }" ! test "${LARGE_SECTIONS}" = "yes" && OTHER_BSS_SECTIONS=" ! ${OTHER_BSS_SECTIONS} .lbss ${RELOCATING-0} : { *(.dynlbss) --- 213,219 ---- .rela.lbss ${RELOCATING-0} : { *(.rela.lbss${RELOCATING+ .rela.lbss.* .rela.gnu.linkonce.lb.*}) } .rel.lrodata ${RELOCATING-0} : { *(.rel.lrodata${RELOCATING+ .rel.lrodata.* .rel.gnu.linkonce.lr.*}) } .rela.lrodata ${RELOCATING-0} : { *(.rela.lrodata${RELOCATING+ .rela.lrodata.* .rela.gnu.linkonce.lr.*}) }" ! test "${LARGE_SECTIONS}" = "yes" && LARGE_BSS=" .lbss ${RELOCATING-0} : { *(.dynlbss) *************** *** 605,614 **** --- 604,631 ---- pad the .data section. */ ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);} } + ${OTHER_BSS_SECTIONS} + ${LARGE_BSS_LAST_IN_LARGE_DATA-${LARGE_BSS}} ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} + EOF + + if test -n "${LARGE_DATA_ADDR}"; then + LARGE_DATA_ADDR=". = \ + SEGMENT_START(\"ldata-segment\", ${LARGE_DATA_ADDR}) + SIZEOF_HEADERS;" + fi + if test -n "${SHLIB_LARGE_DATA_ADDR}"; then + SHLIB_LARGE_DATA_ADDR=". = \ + SEGMENT_START(\"ldata-segment\", ${SHLIB_LARGE_DATA_ADDR}) + SIZEOF_HEADERS;" + fi + cat <", required_argument, NULL, OPTION_UNRESOLVED_SYMBOLS}, '\0', NULL, N_("How to handle unresolved symbols. is:\n" *************** *** 1196,1201 **** --- 1198,1206 ---- case OPTION_TRODATA_SEGMENT: set_segment_start (".rodata-segment", optarg); break; + case OPTION_TLDATA_SEGMENT: + set_segment_start (".ldata-segment", optarg); + break; case OPTION_TRADITIONAL_FORMAT: link_info.traditional_format = TRUE; break; diff -crN binutils-/ld/ld.texinfo binutils-work/ld/ld.texinfo *** binutils-/ld/ld.texinfo 2012-12-18 21:42:44.000000000 +0100 --- binutils-work/ld/ld.texinfo 2013-01-09 19:38:18.000000000 +0100 *************** *** 1844,1849 **** --- 1844,1855 ---- the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment. + @kindex -Tldata-segment=@var{org} + @item -Tldata-segment=@var{org} + @cindex ldata segment origin, cmd line + When creating an ELF executable or shared object for x86-64 medium memory + model, it will set the address of the first byte of the ldata segment. + @kindex --unresolved-symbols @item --unresolved-symbols=@var{method} Determine how to handle unresolved symbols. There are four possible diff -crN binutils-/ld/ld.1 binutils-work/ld/ld.1 *** binutils-/ld/ld.1 2013-01-04 06:44:26.000000000 +0100 --- binutils-work/ld/ld.1 2013-01-09 20:11:14.000000000 +0100 *************** *** 1629,1634 **** --- 1629,1638 ---- When creating an \s-1ELF\s0 executable or shared object for a target where the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment. + .IP "\fB\-Tldata\-segment=\fR\fIorg\fR" 4 + .IX Item "-Tldata-segment=org" + When creating an ELF executable or shared object for x86-64 medium memory + model, it will set the address of the first byte of the ldata segment. .IP "\fB\-\-unresolved\-symbols=\fR\fImethod\fR" 4 .IX Item "--unresolved-symbols=method" Determine how to handle unresolved symbols. There are four possible diff -crN binutils-/ld/ld.info binutils-work/ld/ld.info *** binutils-/ld/ld.info 2013-01-04 06:44:28.000000000 +0100 --- binutils-work/ld/ld.info 2013-01-09 20:11:56.000000000 +0100 *************** *** 1397,1402 **** --- 1397,1406 ---- executable text, it will set the address of the first byte of the read-only data segment. + `-Tldata-segment=ORG' + When creating an ELF executable or shared object for x86-64 medium memory + model, it will set the address of the first byte of the ldata segment. + `--unresolved-symbols=METHOD' Determine how to handle unresolved symbols. There are four possible values for `method':