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:09:50 +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>
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!
> 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