* [PATCH] Updated RDOS support
@ 2013-01-04 22:03 Leif Ekblad
2013-01-08 9:24 ` Alan Modra
0 siblings, 1 reply; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ messages in thread
end of thread, other threads:[~2013-01-14 13:38 UTC | newest]
Thread overview: 7+ 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
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).