* [PATCH] Updated RDOS support @ 2013-01-04 22:03 Leif Ekblad 2013-01-08 9:24 ` Alan Modra 0 siblings, 1 reply; 9+ messages in thread From: Leif Ekblad @ 2013-01-04 22:03 UTC (permalink / raw) To: binutils [-- Attachment #1: Type: text/plain, Size: 521 bytes --] Change log: * bfd/config.bfd: Removed unsupported models for rdos. * ld/configure.tgt: Changed rdos target emulation to use a new file * ld/emulparams/elf64rdos.sh: New emulation file for target rdos. * ld/Makefile.am: Added target emulation file to makefile. * ld/scripttempl/elf.sc: Fixed error in RODATA_ADDR script. Added support for putting large data in separate segment at a fixed address. * ld/Makefile.in: Regenerated with autoconf from ld/Makefile.am Tested with target rdos and rdos32. Regards, Leif Ekblad [-- Attachment #2: binutils.diff --] [-- Type: application/octet-stream, Size: 6330 bytes --] diff -crN binutils-/bfd/config.bfd binutils-work/bfd/config.bfd *** binutils-/bfd/config.bfd 2013-01-02 14:13:36.000000000 +0100 --- binutils-work/bfd/config.bfd 2013-01-04 19:51:54.000000000 +0100 *************** *** 680,686 **** ;; x86_64-*-rdos*) targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec bfd_elf64_l1om_vec bfd_elf64_k1om_vec" want64=true ;; #endif --- 680,685 ---- diff -crN binutils-/ld/configure.tgt binutils-work/ld/configure.tgt *** binutils-/ld/configure.tgt 2012-12-05 06:48:20.000000000 +0100 --- binutils-work/ld/configure.tgt 2013-01-04 19:51:54.000000000 +0100 *************** *** 199,205 **** i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; i[3-7]86-*-aros*) targ_emul=elf_i386 ;; i[3-7]86-*-rdos*) targ_emul=elf_i386 ;; ! x86_64-*-rdos*) targ_emul=elf_x86_64 ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; i[3-7]86-*-bsd386) targ_emul=i386bsd ;; i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; --- 199,205 ---- i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; i[3-7]86-*-aros*) targ_emul=elf_i386 ;; i[3-7]86-*-rdos*) targ_emul=elf_i386 ;; ! x86_64-*-rdos*) targ_emul=elf64rdos ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; i[3-7]86-*-bsd386) targ_emul=i386bsd ;; i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; diff -crN binutils-/ld/emulparams/elf64rdos.sh binutils-work/ld/emulparams/elf64rdos.sh *** binutils-/ld/emulparams/elf64rdos.sh 1970-01-01 01:00:00.000000000 +0100 --- binutils-work/ld/emulparams/elf64rdos.sh 2013-01-04 20:30:28.000000000 +0100 *************** *** 0 **** --- 1,23 ---- + . ${srcdir}/emulparams/plt_unwind.sh + SCRIPT_NAME=elf + ELFSIZE=64 + OUTPUT_FORMAT="elf64-x86-64" + NO_REL_RELOCS=yes + MAXPAGESIZE=0x1000 + COMMONPAGESIZE=0x1000 + TEXT_START_ADDR=0x180E0000000 + LARGE_DATA_ADDR=0x30020000000 + ARCH="i386:x86-64" + MACHINE= + TEMPLATE_NAME=elf32 + GENERATE_SHLIB_SCRIPT=yes + GENERATE_PIE_SCRIPT=yes + LARGE_SECTIONS=yes + IREL_IN_PLT= + + if [ "x${host}" = "x${target}" ]; then + case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) + NATIVE=yes + esac + fi diff -crN binutils-/ld/Makefile.am binutils-work/ld/Makefile.am *** binutils-/ld/Makefile.am 2012-12-17 17:56:04.000000000 +0100 --- binutils-work/ld/Makefile.am 2013-01-04 19:51:54.000000000 +0100 *************** *** 512,517 **** --- 512,518 ---- eelf64mmix.c \ eelf64ppc.c \ eelf64ppc_fbsd.c \ + eelf64rdos.c \ eelf64tilegx.c \ eelf64tilegx_be.c \ eelf_l1om.c \ *************** *** 2084,2089 **** --- 2085,2093 ---- $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" + eelf64rdos.c: $(srcdir)/emulparams/elf64rdos.sh \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64tilegx "$(tdir_elf64rdos)" eelf64tilegx.c: $(srcdir)/emulparams/elf64tilegx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff -crN binutils-/ld/Makefile.in binutils-work/ld/Makefile.in *** binutils-/ld/Makefile.in 2012-12-17 17:56:04.000000000 +0100 --- binutils-work/ld/Makefile.in 2013-01-04 19:51:54.000000000 +0100 *************** *** 819,824 **** --- 819,825 ---- eelf64mmix.c \ eelf64ppc.c \ eelf64ppc_fbsd.c \ + eelf64rdos.c \ eelf64tilegx.c \ eelf64tilegx_be.c \ eelf_l1om.c \ *************** *** 1232,1237 **** --- 1233,1239 ---- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64mmix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ppc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ppc_fbsd.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64rdos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64tilegx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64tilegx_be.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386.Po@am__quote@ *************** *** 3558,3563 **** --- 3560,3568 ---- $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" + eelf64rdos.c: $(srcdir)/emulparams/elf64rdos.sh \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64rdos "$(tdir_elf64rdos)" eelf64tilegx.c: $(srcdir)/emulparams/elf64tilegx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} 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-04 20:17:00.000000000 +0100 *************** *** 496,502 **** RODATA_ADDR="\ SEGMENT_START(\"rodata-segment\", ${RODATA_ADDR}) + SIZEOF_HEADERS" else ! RODATA_ADDR="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))}" RODATA_ADDR="SEGMENT_START(\"rodata-segment\", ${RODATA_ADDR})" fi if test -n "${SHLIB_RODATA_ADDR}"; then --- 496,502 ---- RODATA_ADDR="\ SEGMENT_START(\"rodata-segment\", ${RODATA_ADDR}) + SIZEOF_HEADERS" else ! RODATA_ADDR="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))" RODATA_ADDR="SEGMENT_START(\"rodata-segment\", ${RODATA_ADDR})" fi if test -n "${SHLIB_RODATA_ADDR}"; then *************** *** 605,610 **** --- 605,626 ---- pad the .data section. */ ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);} } + + 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 <<EOF + ${RELOCATING+${CREATE_SHLIB-${CREATE_PIE-${LARGE_DATA_ADDR}}}} + ${RELOCATING+${CREATE_SHLIB+${SHLIB_LARGE_DATA_ADDR}}} + ${RELOCATING+${CREATE_PIE+${SHLIB_LARGE_DATA_ADDR}}} + ${OTHER_BSS_SECTIONS} ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Updated RDOS support 2013-01-04 22:03 [PATCH] Updated RDOS support Leif Ekblad @ 2013-01-08 9:24 ` Alan Modra 2013-01-08 20:43 ` Leif Ekblad 0 siblings, 1 reply; 9+ messages in thread From: Alan Modra @ 2013-01-08 9:24 UTC (permalink / raw) To: Leif Ekblad; +Cc: binutils On Fri, Jan 04, 2013 at 11:03:51PM +0100, Leif Ekblad wrote: > Change log: > * bfd/config.bfd: Removed unsupported models for rdos. > * ld/configure.tgt: Changed rdos target emulation to use a new file > * ld/emulparams/elf64rdos.sh: New emulation file for target rdos. > * ld/Makefile.am: Added target emulation file to makefile. > * ld/scripttempl/elf.sc: Fixed error in RODATA_ADDR script. Added > support for putting large data in separate segment at a fixed > address. > * ld/Makefile.in: Regenerated with autoconf from ld/Makefile.am > *** 2084,2089 **** > --- 2085,2093 ---- > $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ > $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} > ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" > + eelf64rdos.c: $(srcdir)/emulparams/elf64rdos.sh \ > + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} > + ${GENSCRIPTS} elf64tilegx "$(tdir_elf64rdos)" elf64tilegx? > + > + 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 <<EOF > + ${RELOCATING+${CREATE_SHLIB-${CREATE_PIE-${LARGE_DATA_ADDR}}}} > + ${RELOCATING+${CREATE_SHLIB+${SHLIB_LARGE_DATA_ADDR}}} > + ${RELOCATING+${CREATE_PIE+${SHLIB_LARGE_DATA_ADDR}}} > + > ${OTHER_BSS_SECTIONS} > ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} > ${RELOCATING+. = ALIGN(${ALIGNMENT});} Why should $LARGE_DATA_ADDR affect $OTHER_BSS_SECTIONS? Hmm, I see LARGE_SECTIONS=yes adds .lbss to OTHER_BSS_SECTIONS. That's not very nice as quite a few targets use OTHER_BSS_SECTIONS for other purposes. Your patch makes this even more confusing. Also, since you seem to want a separate large segment, do you really want to lay out your large sections as .lbss, .lrodata, .ldata? Wouldn't .lrodata, .ldata, .lbss make more sense? Also, there isn't much point in adding support for -Tldata-segment here without the rest of the support, so that needs adding or simply omit use of SEGMENT_START(). I committed your fix for RODATA_ADDR. Thanks! -- Alan Modra Australia Development Lab, IBM ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Updated RDOS support 2013-01-08 9:24 ` Alan Modra @ 2013-01-08 20:43 ` Leif Ekblad 2013-01-09 5:51 ` Alan Modra 0 siblings, 1 reply; 9+ messages in thread From: Leif Ekblad @ 2013-01-08 20:43 UTC (permalink / raw) To: Alan Modra; +Cc: binutils ----- Original Message ----- From: "Alan Modra" <amodra@gmail.com> > Why should $LARGE_DATA_ADDR affect $OTHER_BSS_SECTIONS? Hmm, I see > LARGE_SECTIONS=yes adds .lbss to OTHER_BSS_SECTIONS. That's not very > nice as quite a few targets use OTHER_BSS_SECTIONS for other purposes. > Your patch makes this even more confusing. Also, since you seem to > want a separate large segment, do you really want to lay out your > large sections as .lbss, .lrodata, .ldata? Wouldn't .lrodata, .ldata, > .lbss make more sense? Yes, absolutely. If the lbss area is large it will also increase executable size for no reason. But, shouldn't this be the order regardless of LARGE_DATA_ADDR setting? This seems like a bug. Thoughts? > Also, there isn't much point in adding support for -Tldata-segment > here without the rest of the support, so that needs adding or simply > omit use of SEGMENT_START(). I think that if the large segment is separated by some TBs of virtual memory, the executable file would become enormous without a new section. But I might be wrong here. I'll look into the additional support reqúired for -Tldata-segment. > I committed your fix for RODATA_ADDR. Thanks! There is also a problem with SEPARATE_CODE. First to achieve reasonable separation it is not enough to increase address by page-size. There needs to be at least on guard-page for effective separation. I would suggest the algorithm should be: 1. Page align 2. Add at least one page more Leif Ekblad ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Updated RDOS support 2013-01-08 20:43 ` Leif Ekblad @ 2013-01-09 5:51 ` Alan Modra 2013-01-09 15:51 ` H.J. Lu 2013-01-09 20:12 ` [PATCH] Large section data, was: " Leif Ekblad 0 siblings, 2 replies; 9+ messages in thread From: Alan Modra @ 2013-01-09 5:51 UTC (permalink / raw) To: Leif Ekblad; +Cc: binutils On Tue, Jan 08, 2013 at 09:43:16PM +0100, Leif Ekblad wrote: > > ----- Original Message ----- From: "Alan Modra" <amodra@gmail.com> > >Why should $LARGE_DATA_ADDR affect $OTHER_BSS_SECTIONS? Hmm, I see > >LARGE_SECTIONS=yes adds .lbss to OTHER_BSS_SECTIONS. That's not very > >nice as quite a few targets use OTHER_BSS_SECTIONS for other purposes. > >Your patch makes this even more confusing. Also, since you seem to > >want a separate large segment, do you really want to lay out your > >large sections as .lbss, .lrodata, .ldata? Wouldn't .lrodata, .ldata, > >.lbss make more sense? > > Yes, absolutely. If the lbss area is large it will also increase > executable size for no reason. > But, shouldn't this be the order regardless of LARGE_DATA_ADDR setting? This > seems like a bug. > > Thoughts? I don't know why the existing scripts put .lbss first. The patch adding x86_64 support for large sections is here: http://sourceware.org/ml/binutils/2005-07/msg00407.html Prior to that, hppa64 had a huge bss section placed more or less in the same location but no large data or rodata section as far as I know. Here's a tidy that should make adding LARGE_DATA_ADDR easy. * emulparams/elf_x86_64.sh (LARGE_BSS_AFTER_BSS): Define. * emulparams/elf32_x86_64.sh: Likewise. * emulparams/elf_k1om.sh: Likewise. * emulparams/elf_l1om.sh: Likewise. * scripttempl/elf.sc (LARGE_BSS): Define rather than appending to OTHER_BSS_SECTIONS. Substitute in script. > >Also, there isn't much point in adding support for -Tldata-segment > >here without the rest of the support, so that needs adding or simply > >omit use of SEGMENT_START(). > > I think that if the large segment is separated by some TBs of > virtual memory, > the executable file would become enormous without a new section. But > I might be wrong here. You'll get a new segment (program header) whether or not SEGMENT_START is used. See bfd/elf.c:_bfd_elf_map_sections_to_segments. I'll leave answering your concern about SEPARATE_CODE to Roland. Index: ld/emulparams/elf32_x86_64.sh =================================================================== RCS file: /cvs/src/src/ld/emulparams/elf32_x86_64.sh,v retrieving revision 1.5 diff -u -p -r1.5 elf32_x86_64.sh --- ld/emulparams/elf32_x86_64.sh 11 Jun 2012 13:23:50 -0000 1.5 +++ ld/emulparams/elf32_x86_64.sh 9 Jan 2013 03:51:27 -0000 @@ -13,6 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" IREL_IN_PLT= Index: ld/emulparams/elf_k1om.sh =================================================================== RCS file: /cvs/src/src/ld/emulparams/elf_k1om.sh,v retrieving revision 1.3 diff -u -p -r1.3 elf_k1om.sh --- ld/emulparams/elf_k1om.sh 11 Jun 2012 13:23:50 -0000 1.3 +++ ld/emulparams/elf_k1om.sh 9 Jan 2013 03:51:27 -0000 @@ -14,6 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" if [ "x${host}" = "x${target}" ]; then Index: ld/emulparams/elf_l1om.sh =================================================================== RCS file: /cvs/src/src/ld/emulparams/elf_l1om.sh,v retrieving revision 1.5 diff -u -p -r1.5 elf_l1om.sh --- ld/emulparams/elf_l1om.sh 11 Jun 2012 13:23:50 -0000 1.5 +++ ld/emulparams/elf_l1om.sh 9 Jan 2013 03:51:27 -0000 @@ -14,6 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" if [ "x${host}" = "x${target}" ]; then Index: ld/emulparams/elf_x86_64.sh =================================================================== RCS file: /cvs/src/src/ld/emulparams/elf_x86_64.sh,v retrieving revision 1.25 diff -u -p -r1.25 elf_x86_64.sh --- ld/emulparams/elf_x86_64.sh 11 Jun 2012 13:23:50 -0000 1.25 +++ ld/emulparams/elf_x86_64.sh 9 Jan 2013 03:51:27 -0000 @@ -13,6 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes LARGE_SECTIONS=yes +LARGE_BSS_AFTER_BSS= SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" IREL_IN_PLT= Index: ld/scripttempl/elf.sc =================================================================== RCS file: /cvs/src/src/ld/scripttempl/elf.sc,v retrieving revision 1.117 diff -u -p -r1.117 elf.sc --- ld/scripttempl/elf.sc 8 Jan 2013 09:23:07 -0000 1.117 +++ ld/scripttempl/elf.sc 9 Jan 2013 03:51:27 -0000 @@ -213,8 +213,7 @@ test "${LARGE_SECTIONS}" = "yes" && REL_ .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} +test "${LARGE_SECTIONS}" = "yes" && LARGE_BSS=" .lbss ${RELOCATING-0} : { *(.dynlbss) @@ -606,9 +605,11 @@ cat <<EOF ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);} } ${OTHER_BSS_SECTIONS} + ${LARGE_BSS_AFTER_BSS+${LARGE_BSS}} ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${LARGE_SECTIONS} + ${LARGE_BSS_AFTER_BSS-${LARGE_BSS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${RELOCATING+${OTHER_END_SYMBOLS}} ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}} -- Alan Modra Australia Development Lab, IBM ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Updated RDOS support 2013-01-09 5:51 ` Alan Modra @ 2013-01-09 15:51 ` H.J. Lu 2013-01-09 20:12 ` [PATCH] Large section data, was: " Leif Ekblad 1 sibling, 0 replies; 9+ messages in thread From: H.J. Lu @ 2013-01-09 15:51 UTC (permalink / raw) To: Leif Ekblad, binutils On Tue, Jan 8, 2013 at 9:51 PM, Alan Modra <amodra@gmail.com> wrote: > On Tue, Jan 08, 2013 at 09:43:16PM +0100, Leif Ekblad wrote: >> >> ----- Original Message ----- From: "Alan Modra" <amodra@gmail.com> >> >Why should $LARGE_DATA_ADDR affect $OTHER_BSS_SECTIONS? Hmm, I see >> >LARGE_SECTIONS=yes adds .lbss to OTHER_BSS_SECTIONS. That's not very >> >nice as quite a few targets use OTHER_BSS_SECTIONS for other purposes. >> >Your patch makes this even more confusing. Also, since you seem to >> >want a separate large segment, do you really want to lay out your >> >large sections as .lbss, .lrodata, .ldata? Wouldn't .lrodata, .ldata, >> >.lbss make more sense? >> >> Yes, absolutely. If the lbss area is large it will also increase >> executable size for no reason. >> But, shouldn't this be the order regardless of LARGE_DATA_ADDR setting? This >> seems like a bug. >> >> Thoughts? > > I don't know why the existing scripts put .lbss first. The patch > adding x86_64 support for large sections is here: > http://sourceware.org/ml/binutils/2005-07/msg00407.html > Prior to that, hppa64 had a huge bss section placed more or less in > the same location but no large data or rodata section as far as I > know. > It was done on purpose so that we may put ldata and lbss sections n the same segnment as bss/data sections. -- H.J. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] Large section data, was: [PATCH] Updated RDOS support 2013-01-09 5:51 ` Alan Modra 2013-01-09 15:51 ` H.J. Lu @ 2013-01-09 20:12 ` Leif Ekblad 2013-01-14 13:38 ` Alan Modra 1 sibling, 1 reply; 9+ messages in thread From: Leif Ekblad @ 2013-01-09 20:12 UTC (permalink / raw) To: Alan Modra; +Cc: binutils [-- Attachment #1: Type: text/plain, Size: 6646 bytes --] I've created a specific patch for large section data and provide it separately since it is not directly related to rdos. Change log (ld directory): * scripttempl/elf.sc (LARGE_BSS): Define rather than appending to OTHER_BSS_SECTIONS. Add support for LARGE_DATA_ADDR and position of lbss (LARGE_BSS_LAST_IN_LARGE_DATA). * ldlex.h: Define ldata-segment option. * lexsup.c: Process ldata-segment option. * ld.texinfo: Describe ldata-segment parameter. * ld.1: Regenerate. * ld.info: Regenerate. Tested with and without LARGE_BSS_LAST_IN_LARGE_DATA, and with address override for ldata-segment on target rdos. Leif Ekblad ----- Original Message ----- From: "Alan Modra" <amodra@gmail.com> To: "Leif Ekblad" <leif@rdos.net> Cc: <binutils@sourceware.org> Sent: Wednesday, January 09, 2013 6:51 AM Subject: Re: [PATCH] Updated RDOS support > On Tue, Jan 08, 2013 at 09:43:16PM +0100, Leif Ekblad wrote: >> >> ----- Original Message ----- From: "Alan Modra" <amodra@gmail.com> >> >Why should $LARGE_DATA_ADDR affect $OTHER_BSS_SECTIONS? Hmm, I see >> >LARGE_SECTIONS=yes adds .lbss to OTHER_BSS_SECTIONS. That's not very >> >nice as quite a few targets use OTHER_BSS_SECTIONS for other purposes. >> >Your patch makes this even more confusing. Also, since you seem to >> >want a separate large segment, do you really want to lay out your >> >large sections as .lbss, .lrodata, .ldata? Wouldn't .lrodata, .ldata, >> >.lbss make more sense? >> >> Yes, absolutely. If the lbss area is large it will also increase >> executable size for no reason. >> But, shouldn't this be the order regardless of LARGE_DATA_ADDR setting? >> This >> seems like a bug. >> >> Thoughts? > > I don't know why the existing scripts put .lbss first. The patch > adding x86_64 support for large sections is here: > http://sourceware.org/ml/binutils/2005-07/msg00407.html > Prior to that, hppa64 had a huge bss section placed more or less in > the same location but no large data or rodata section as far as I > know. > > Here's a tidy that should make adding LARGE_DATA_ADDR easy. > > * emulparams/elf_x86_64.sh (LARGE_BSS_AFTER_BSS): Define. > * emulparams/elf32_x86_64.sh: Likewise. > * emulparams/elf_k1om.sh: Likewise. > * emulparams/elf_l1om.sh: Likewise. > * scripttempl/elf.sc (LARGE_BSS): Define rather than appending to > OTHER_BSS_SECTIONS. Substitute in script. > >> >Also, there isn't much point in adding support for -Tldata-segment >> >here without the rest of the support, so that needs adding or simply >> >omit use of SEGMENT_START(). >> >> I think that if the large segment is separated by some TBs of >> virtual memory, >> the executable file would become enormous without a new section. But >> I might be wrong here. > > You'll get a new segment (program header) whether or not SEGMENT_START > is used. See bfd/elf.c:_bfd_elf_map_sections_to_segments. I'll leave > answering your concern about SEPARATE_CODE to Roland. > > > Index: ld/emulparams/elf32_x86_64.sh > =================================================================== > RCS file: /cvs/src/src/ld/emulparams/elf32_x86_64.sh,v > retrieving revision 1.5 > diff -u -p -r1.5 elf32_x86_64.sh > --- ld/emulparams/elf32_x86_64.sh 11 Jun 2012 13:23:50 -0000 1.5 > +++ ld/emulparams/elf32_x86_64.sh 9 Jan 2013 03:51:27 -0000 > @@ -13,6 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes > GENERATE_PIE_SCRIPT=yes > NO_SMALL_DATA=yes > LARGE_SECTIONS=yes > +LARGE_BSS_AFTER_BSS= > SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" > IREL_IN_PLT= > > Index: ld/emulparams/elf_k1om.sh > =================================================================== > RCS file: /cvs/src/src/ld/emulparams/elf_k1om.sh,v > retrieving revision 1.3 > diff -u -p -r1.3 elf_k1om.sh > --- ld/emulparams/elf_k1om.sh 11 Jun 2012 13:23:50 -0000 1.3 > +++ ld/emulparams/elf_k1om.sh 9 Jan 2013 03:51:27 -0000 > @@ -14,6 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes > GENERATE_PIE_SCRIPT=yes > NO_SMALL_DATA=yes > LARGE_SECTIONS=yes > +LARGE_BSS_AFTER_BSS= > SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" > > if [ "x${host}" = "x${target}" ]; then > Index: ld/emulparams/elf_l1om.sh > =================================================================== > RCS file: /cvs/src/src/ld/emulparams/elf_l1om.sh,v > retrieving revision 1.5 > diff -u -p -r1.5 elf_l1om.sh > --- ld/emulparams/elf_l1om.sh 11 Jun 2012 13:23:50 -0000 1.5 > +++ ld/emulparams/elf_l1om.sh 9 Jan 2013 03:51:27 -0000 > @@ -14,6 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes > GENERATE_PIE_SCRIPT=yes > NO_SMALL_DATA=yes > LARGE_SECTIONS=yes > +LARGE_BSS_AFTER_BSS= > SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" > > if [ "x${host}" = "x${target}" ]; then > Index: ld/emulparams/elf_x86_64.sh > =================================================================== > RCS file: /cvs/src/src/ld/emulparams/elf_x86_64.sh,v > retrieving revision 1.25 > diff -u -p -r1.25 elf_x86_64.sh > --- ld/emulparams/elf_x86_64.sh 11 Jun 2012 13:23:50 -0000 1.25 > +++ ld/emulparams/elf_x86_64.sh 9 Jan 2013 03:51:27 -0000 > @@ -13,6 +13,7 @@ GENERATE_SHLIB_SCRIPT=yes > GENERATE_PIE_SCRIPT=yes > NO_SMALL_DATA=yes > LARGE_SECTIONS=yes > +LARGE_BSS_AFTER_BSS= > SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0" > IREL_IN_PLT= > > Index: ld/scripttempl/elf.sc > =================================================================== > RCS file: /cvs/src/src/ld/scripttempl/elf.sc,v > retrieving revision 1.117 > diff -u -p -r1.117 elf.sc > --- ld/scripttempl/elf.sc 8 Jan 2013 09:23:07 -0000 1.117 > +++ ld/scripttempl/elf.sc 9 Jan 2013 03:51:27 -0000 > @@ -213,8 +213,7 @@ test "${LARGE_SECTIONS}" = "yes" && REL_ > .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} > +test "${LARGE_SECTIONS}" = "yes" && LARGE_BSS=" > .lbss ${RELOCATING-0} : > { > *(.dynlbss) > @@ -606,9 +605,11 @@ cat <<EOF > ${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);} > } > ${OTHER_BSS_SECTIONS} > + ${LARGE_BSS_AFTER_BSS+${LARGE_BSS}} > ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} > ${RELOCATING+. = ALIGN(${ALIGNMENT});} > ${LARGE_SECTIONS} > + ${LARGE_BSS_AFTER_BSS-${LARGE_BSS}} > ${RELOCATING+. = ALIGN(${ALIGNMENT});} > ${RELOCATING+${OTHER_END_SYMBOLS}} > ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE > (${USER_LABEL_PREFIX}end = .);}} > > -- > Alan Modra > Australia Development Lab, IBM [-- Attachment #2: binutils.diff --] [-- Type: application/octet-stream, Size: 6221 bytes --] 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 <<EOF + ${RELOCATING+${CREATE_SHLIB-${CREATE_PIE-${LARGE_DATA_ADDR}}}} + ${RELOCATING+${CREATE_SHLIB+${SHLIB_LARGE_DATA_ADDR}}} + ${RELOCATING+${CREATE_PIE+${SHLIB_LARGE_DATA_ADDR}}} + ${LARGE_SECTIONS} + ${LARGE_BSS_LAST_IN_LARGE_DATA+${LARGE_BSS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${RELOCATING+${OTHER_END_SYMBOLS}} ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}} diff -crN binutils-/ld/ldlex.h binutils-work/ld/ldlex.h *** binutils-/ld/ldlex.h 2012-12-18 21:42:44.000000000 +0100 --- binutils-work/ld/ldlex.h 2013-01-09 19:41:14.000000000 +0100 *************** *** 69,74 **** --- 69,75 ---- OPTION_TTEXT, OPTION_TTEXT_SEGMENT, OPTION_TRODATA_SEGMENT, + OPTION_TLDATA_SEGMENT, OPTION_TRADITIONAL_FORMAT, OPTION_UR, OPTION_VERBOSE, diff -crN binutils-/ld/lexsup.c binutils-work/ld/lexsup.c *** binutils-/ld/lexsup.c 2012-12-18 21:42:44.000000000 +0100 --- binutils-work/ld/lexsup.c 2013-01-09 19:42:04.000000000 +0100 *************** *** 443,448 **** --- 443,450 ---- '\0', N_("ADDRESS"), N_("Set address of text segment"), ONE_DASH }, { {"Trodata-segment", required_argument, NULL, OPTION_TRODATA_SEGMENT}, '\0', N_("ADDRESS"), N_("Set address of rodata segment"), ONE_DASH }, + { {"Tldata-segment", required_argument, NULL, OPTION_TLDATA_SEGMENT}, + '\0', N_("ADDRESS"), N_("Set address of ldata segment"), ONE_DASH }, { {"unresolved-symbols=<method>", required_argument, NULL, OPTION_UNRESOLVED_SYMBOLS}, '\0', NULL, N_("How to handle unresolved symbols. <method> 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': ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Large section data, was: [PATCH] Updated RDOS support 2013-01-09 20:12 ` [PATCH] Large section data, was: " Leif Ekblad @ 2013-01-14 13:38 ` Alan Modra 0 siblings, 0 replies; 9+ messages in thread From: Alan Modra @ 2013-01-14 13:38 UTC (permalink / raw) To: Leif Ekblad; +Cc: binutils Adjusted and applied as follows. You don't want to add SIZEOF_HEADERS to LARGE_DATA_ADDR. That's a special case for -Trodata-segment where the file headers are put in the rodata segment. (We really ought to have support in the script for the non-SEPARATE_CODE case.) * ld.texinfo (-Tldata-segment): Describe. * ldlex.h (OPTION_TLDATA_SEGMENT): New enum value. * lexsup.c (ld_options): Add -Tldata-segment. (parse_args): Handle OPTION_TLDATA_SEGMENT. * scripttempl/elf.sc: Support LARGE_DATA_ADDR. Index: ld/ld.texinfo =================================================================== RCS file: /cvs/src/src/ld/ld.texinfo,v retrieving revision 1.290 diff -u -p -r1.290 ld.texinfo --- ld/ld.texinfo 7 Jan 2013 12:11:11 -0000 1.290 +++ ld/ld.texinfo 14 Jan 2013 06:22:10 -0000 @@ -1846,6 +1846,12 @@ When creating an ELF executable or share 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 Index: ld/ldlex.h =================================================================== RCS file: /cvs/src/src/ld/ldlex.h,v retrieving revision 1.13 diff -u -p -r1.13 ldlex.h --- ld/ldlex.h 18 Dec 2012 20:42:43 -0000 1.13 +++ ld/ldlex.h 14 Jan 2013 06:22:10 -0000 @@ -69,6 +69,7 @@ enum option_values OPTION_TTEXT, OPTION_TTEXT_SEGMENT, OPTION_TRODATA_SEGMENT, + OPTION_TLDATA_SEGMENT, OPTION_TRADITIONAL_FORMAT, OPTION_UR, OPTION_VERBOSE, Index: ld/lexsup.c =================================================================== RCS file: /cvs/src/src/ld/lexsup.c,v retrieving revision 1.137 diff -u -p -r1.137 lexsup.c --- ld/lexsup.c 7 Jan 2013 16:58:59 -0000 1.137 +++ ld/lexsup.c 14 Jan 2013 06:22:11 -0000 @@ -446,6 +446,8 @@ static const struct ld_option ld_options '\0', N_("ADDRESS"), N_("Set address of text segment"), ONE_DASH }, { {"Trodata-segment", required_argument, NULL, OPTION_TRODATA_SEGMENT}, '\0', N_("ADDRESS"), N_("Set address of rodata segment"), ONE_DASH }, + { {"Tldata-segment", required_argument, NULL, OPTION_TLDATA_SEGMENT}, + '\0', N_("ADDRESS"), N_("Set address of ldata segment"), ONE_DASH }, { {"unresolved-symbols=<method>", required_argument, NULL, OPTION_UNRESOLVED_SYMBOLS}, '\0', NULL, N_("How to handle unresolved symbols. <method> is:\n" @@ -1199,6 +1201,9 @@ parse_args (unsigned argc, char **argv) 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; Index: ld/scripttempl/elf.sc =================================================================== RCS file: /cvs/src/src/ld/scripttempl/elf.sc,v retrieving revision 1.118 diff -u -p -r1.118 elf.sc --- ld/scripttempl/elf.sc 9 Jan 2013 05:51:32 -0000 1.118 +++ ld/scripttempl/elf.sc 14 Jan 2013 12:46:19 -0000 @@ -608,6 +608,15 @@ cat <<EOF ${LARGE_BSS_AFTER_BSS+${LARGE_BSS}} ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} +EOF + +LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${LARGE_DATA_ADDR-.});" +SHLIB_LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${SHLIB_LARGE_DATA_ADDR-.});" + + cat <<EOF + ${RELOCATING+${CREATE_SHLIB-${CREATE_PIE-${LARGE_DATA_ADDR}}}} + ${RELOCATING+${CREATE_SHLIB+${SHLIB_LARGE_DATA_ADDR}}} + ${RELOCATING+${CREATE_PIE+${SHLIB_LARGE_DATA_ADDR}}} ${LARGE_SECTIONS} ${LARGE_BSS_AFTER_BSS-${LARGE_BSS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} -- Alan Modra Australia Development Lab, IBM ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Updated RDOS support @ 2013-01-18 21:39 Leif Ekblad 2013-01-23 10:43 ` Alan Modra 0 siblings, 1 reply; 9+ messages in thread From: Leif Ekblad @ 2013-01-18 21:39 UTC (permalink / raw) To: binutils [-- Attachment #1: Type: text/plain, Size: 449 bytes --] With the ld-section patches in-place, here is the new patch for rdos: Change log: * bfd/config.bfd: Removed unsupported models for rdos. * ld/configure.tgt: Changed rdos target emulation to use a new file * ld/emulparams/elf64rdos.sh: Added new emulation file for target rdos. * ld/Makefile.am: Added target emulation file to makefile. * ld/Makefile.in: Regenerated with autoconf from ld/Makefile.am Tested with target rdos. Regards, Leif Ekblad [-- Attachment #2: binutils.diff --] [-- Type: application/octet-stream, Size: 4530 bytes --] diff -crN binutils-/bfd/config.bfd binutils-work/bfd/config.bfd *** binutils-/bfd/config.bfd Thu Jan 10 10:49:06 2013 --- binutils-work/bfd/config.bfd Fri Jan 18 20:48:58 2013 *************** *** 680,686 **** ;; x86_64-*-rdos*) targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec bfd_elf64_l1om_vec bfd_elf64_k1om_vec" want64=true ;; #endif --- 680,685 ---- diff -crN binutils-/ld/Makefile.am binutils-work/ld/Makefile.am *** binutils-/ld/Makefile.am Thu Jan 10 10:49:20 2013 --- binutils-work/ld/Makefile.am Fri Jan 18 20:48:58 2013 *************** *** 515,520 **** --- 515,521 ---- eelf64mmix.c \ eelf64ppc.c \ eelf64ppc_fbsd.c \ + eelf64rdos.c \ eelf64tilegx.c \ eelf64tilegx_be.c \ eelf_l1om.c \ *************** *** 2101,2106 **** --- 2102,2110 ---- $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" + eelf64rdos.c: $(srcdir)/emulparams/elf64rdos.sh \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64tilegx "$(tdir_elf64rdos)" eelf64tilegx.c: $(srcdir)/emulparams/elf64tilegx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff -crN binutils-/ld/Makefile.in binutils-work/ld/Makefile.in *** binutils-/ld/Makefile.in Thu Jan 10 10:49:22 2013 --- binutils-work/ld/Makefile.in Fri Jan 18 20:48:58 2013 *************** *** 822,827 **** --- 822,828 ---- eelf64mmix.c \ eelf64ppc.c \ eelf64ppc_fbsd.c \ + eelf64rdos.c \ eelf64tilegx.c \ eelf64tilegx_be.c \ eelf_l1om.c \ *************** *** 1245,1250 **** --- 1246,1252 ---- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64mmix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ppc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ppc_fbsd.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64rdos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64tilegx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64tilegx_be.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386.Po@am__quote@ *************** *** 3585,3590 **** --- 3587,3595 ---- $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" + eelf64rdos.c: $(srcdir)/emulparams/elf64rdos.sh \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64rdos "$(tdir_elf64rdos)" eelf64tilegx.c: $(srcdir)/emulparams/elf64tilegx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff -crN binutils-/ld/configure.tgt binutils-work/ld/configure.tgt *** binutils-/ld/configure.tgt Thu Jan 10 10:49:22 2013 --- binutils-work/ld/configure.tgt Fri Jan 18 20:48:58 2013 *************** *** 217,223 **** i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; i[3-7]86-*-aros*) targ_emul=elf_i386 ;; i[3-7]86-*-rdos*) targ_emul=elf_i386 ;; ! x86_64-*-rdos*) targ_emul=elf_x86_64 ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; i[3-7]86-*-bsd386) targ_emul=i386bsd ;; i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; --- 217,223 ---- i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; i[3-7]86-*-aros*) targ_emul=elf_i386 ;; i[3-7]86-*-rdos*) targ_emul=elf_i386 ;; ! x86_64-*-rdos*) targ_emul=elf64rdos ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; i[3-7]86-*-bsd386) targ_emul=i386bsd ;; i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; diff -crN binutils-/ld/emulparams/elf64rdos.sh binutils-work/ld/emulparams/elf64rdos.sh *** binutils-/ld/emulparams/elf64rdos.sh Thu Jan 1 01:00:00 1970 --- binutils-work/ld/emulparams/elf64rdos.sh Fri Jan 18 21:31:00 2013 *************** *** 0 **** --- 1,23 ---- + . ${srcdir}/emulparams/plt_unwind.sh + SCRIPT_NAME=elf + ELFSIZE=64 + OUTPUT_FORMAT="elf64-x86-64" + NO_REL_RELOCS=yes + MAXPAGESIZE=0x1000 + COMMONPAGESIZE=0x1000 + TEXT_START_ADDR=0x180E0000000 + LARGE_DATA_ADDR=0x80020000000 + ARCH="i386:x86-64" + MACHINE= + TEMPLATE_NAME=elf32 + GENERATE_SHLIB_SCRIPT=yes + GENERATE_PIE_SCRIPT=yes + LARGE_SECTIONS=yes + IREL_IN_PLT= + + if [ "x${host}" = "x${target}" ]; then + case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) + NATIVE=yes + esac + fi ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Updated RDOS support 2013-01-18 21:39 Leif Ekblad @ 2013-01-23 10:43 ` Alan Modra 0 siblings, 0 replies; 9+ messages in thread From: Alan Modra @ 2013-01-23 10:43 UTC (permalink / raw) To: Leif Ekblad; +Cc: binutils On Fri, Jan 18, 2013 at 10:39:27PM +0100, Leif Ekblad wrote: > With the ld-section patches in-place, here is the new patch for rdos: > > Change log: > * bfd/config.bfd: Removed unsupported models for rdos. > * ld/configure.tgt: Changed rdos target emulation to use a new file > * ld/emulparams/elf64rdos.sh: Added new emulation file for target rdos. > * ld/Makefile.am: Added target emulation file to makefile. > * ld/Makefile.in: Regenerated with autoconf from ld/Makefile.am > > Tested with target rdos. Your ld/Makefile.am addition results in no eelf64rdos.c, and a mess in eelf64tilegx.c if building all targets with make -j. This hunk + eelf64rdos.c: $(srcdir)/emulparams/elf64rdos.sh \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64tilegx "$(tdir_elf64rdos)" committed with s/elf64tilegx/elf64rdos/ -- Alan Modra Australia Development Lab, IBM ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-01-23 10:43 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-01-04 22:03 [PATCH] Updated RDOS support Leif Ekblad 2013-01-08 9:24 ` Alan Modra 2013-01-08 20:43 ` Leif Ekblad 2013-01-09 5:51 ` Alan Modra 2013-01-09 15:51 ` H.J. Lu 2013-01-09 20:12 ` [PATCH] Large section data, was: " Leif Ekblad 2013-01-14 13:38 ` Alan Modra 2013-01-18 21:39 Leif Ekblad 2013-01-23 10:43 ` Alan Modra
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).