This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: 32-bit PowerPC sdata linker problem
- From: Will Newton <will dot newton at linaro dot org>
- To: Will Newton <will dot newton at linaro dot org>, "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Mon, 16 Jun 2014 15:11:12 +0100
- Subject: Re: 32-bit PowerPC sdata linker problem
- Authentication-results: sourceware.org; auth=none
- References: <53918356 dot 3040102 at embedded-brains dot de> <20140606105420 dot GH5592 at bubble dot grove dot modra dot org> <5391A4BF dot 2030308 at embedded-brains dot de> <20140606121659 dot GJ5592 at bubble dot grove dot modra dot org> <20140607124711 dot GO5592 at bubble dot grove dot modra dot org> <CANu=Dmi46CDbvT3ozcjNJkyMY47Qh_TbgAgrAMPW1SpbeXX4mA at mail dot gmail dot com> <20140616130719 dot GK3462 at bubble dot grove dot modra dot org> <CANu=Dmi+4Hj=dxnBFeSGxs7unsKoqiFhVtuEt46Tr5poXBe3qQ at mail dot gmail dot com>
On 16 June 2014 15:09, Will Newton <will.newton@linaro.org> wrote:
> On 16 June 2014 14:07, Alan Modra <amodra@gmail.com> wrote:
>> On Mon, Jun 16, 2014 at 12:21:23PM +0100, Will Newton wrote:
>>> PROVIDE_HIDDEN (__rel_iplt_start = .);
>>> *(.rel.iplt)
>>> PROVIDE_HIDDEN (__rel_iplt_end = .);
>>> PROVIDE_HIDDEN (__rela_iplt_start = .);
>>> PROVIDE_HIDDEN (__rela_iplt_end = .);
>>
>> This should fix it. Committed.
>>
>> * scripttempl/elf.sc: Edit out __rela_iplt symbol assignments from
>> .rel sections, and __rel_iplt from .rela sections.
>> * scripttempl/nds32elf.sc: Likewise.
>> * Makefile.am (ends32*.c) Depend on nds32elf.sc.
>> * Makefile.in: Regenerate.
>
> Yes, this fixes the problem for me. Thanks!
Would it be possible to apply the fix to the stable branch too?
>> diff --git a/ld/Makefile.am b/ld/Makefile.am
>> index 66795b3..a22006c 100644
>> --- a/ld/Makefile.am
>> +++ b/ld/Makefile.am
>> @@ -1490,27 +1490,27 @@ emsp430X.c: $(srcdir)/emulparams/msp430.sh $(srcdir)/emulparams/msp430X.sh \
>>
>> ends32elf.c: $(srcdir)/emulparams/nds32elf.sh \
>> $(ELF_DEPS) $(srcdir)/emultempl/nds32elf.em \
>> - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>> + $(srcdir)/scripttempl/nds32elf.sc ${GEN_DEPENDS}
>>
>> ends32elf16m.c: $(srcdir)/emulparams/nds32elf16m.sh \
>> $(ELF_DEPS) $(srcdir)/emultempl/nds32elf.em \
>> - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>> + $(srcdir)/scripttempl/nds32elf.sc ${GEN_DEPENDS}
>>
>> ends32belf.c: $(srcdir)/emulparams/nds32belf.sh \
>> $(ELF_DEPS) $(srcdir)/emultempl/nds32elf.em \
>> - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>> + $(srcdir)/scripttempl/nds32elf.sc ${GEN_DEPENDS}
>>
>> ends32belf16m.c: $(srcdir)/emulparams/nds32belf16m.sh \
>> $(ELF_DEPS) $(srcdir)/emultempl/nds32elf.em \
>> - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>> + $(srcdir)/scripttempl/nds32elf.sc ${GEN_DEPENDS}
>>
>> ends32elf_linux.c: $(srcdir)/emulparams/nds32elf_linux.sh \
>> $(ELF_DEPS) $(srcdir)/emultempl/nds32elf.em \
>> - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>> + $(srcdir)/scripttempl/nds32elf.sc ${GEN_DEPENDS}
>>
>> ends32belf_linux.c: $(srcdir)/emulparams/nds32belf_linux.sh \
>> $(ELF_DEPS) $(srcdir)/emultempl/nds32elf.em \
>> - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>> + $(srcdir)/scripttempl/nds32elf.sc ${GEN_DEPENDS}
>>
>> enews.c: $(srcdir)/emulparams/news.sh \
>> $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
>> diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
>> index e8126cb..6d0d13d 100644
>> --- a/ld/scripttempl/elf.sc
>> +++ b/ld/scripttempl/elf.sc
>> @@ -410,13 +410,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF
>> .rel.dyn ${RELOCATING-0} :
>> {
>> EOF
>> -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;/__rela_iplt_/d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> cat >> ldscripts/dyntmp.$$ <<EOF
>> }
>> .rela.dyn ${RELOCATING-0} :
>> {
>> EOF
>> -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;/__rel_iplt_/d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> cat >> ldscripts/dyntmp.$$ <<EOF
>> }
>> EOF
>> @@ -446,10 +446,10 @@ emit_dyn()
>> cat ldscripts/dyntmp.$$
>> else
>> if test -z "${NO_REL_RELOCS}"; then
>> - sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
>> + sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d;/^[ ]*\.rela\./d;/__rela_iplt_/d' ldscripts/dyntmp.$$
>> fi
>> if test -z "${NO_RELA_RELOCS}"; then
>> - sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
>> + sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d;/^[ ]*\.rel\./d;/__rel_iplt_/d' ldscripts/dyntmp.$$
>> fi
>> fi
>> rm -f ldscripts/dyntmp.$$
>> diff --git a/ld/scripttempl/nds32elf.sc b/ld/scripttempl/nds32elf.sc
>> index 80f60a1..076e120 100644
>> --- a/ld/scripttempl/nds32elf.sc
>> +++ b/ld/scripttempl/nds32elf.sc
>> @@ -361,13 +361,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF
>> .rel.dyn ${RELOCATING-0} :
>> {
>> EOF
>> -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;/__rela_iplt_/d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> cat >> ldscripts/dyntmp.$$ <<EOF
>> }
>> .rela.dyn ${RELOCATING-0} :
>> {
>> EOF
>> -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;/__rel_iplt_/d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
>> cat >> ldscripts/dyntmp.$$ <<EOF
>> }
>> EOF
>> @@ -397,10 +397,10 @@ emit_dyn()
>> cat ldscripts/dyntmp.$$
>> else
>> if test -z "${NO_REL_RELOCS}"; then
>> - sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
>> + sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d;/^[ ]*\.rela\./d;/__rela_iplt_/d' ldscripts/dyntmp.$$
>> fi
>> if test -z "${NO_RELA_RELOCS}"; then
>> - sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
>> + sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d;/^[ ]*\.rel\./d;/__rel_iplt_/d' ldscripts/dyntmp.$$
>> fi
>> fi
>> rm -f ldscripts/dyntmp.$$
>>
>> --
>> Alan Modra
>> Australia Development Lab, IBM
>
>
>
> --
> Will Newton
> Toolchain Working Group, Linaro
--
Will Newton
Toolchain Working Group, Linaro