This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] ld arm config update for FreeBSD
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Andreas Tobler <andreast-list at fgznet dot ch>
- Cc: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Wed, 18 Jun 2014 11:17:33 +0100
- Subject: Re: [PATCH] ld arm config update for FreeBSD
- Authentication-results: sourceware.org; auth=none
- References: <53A0A624 dot 10506 at fgznet dot ch>
On 17/06/14 21:33, Andreas Tobler wrote:
> Hello all,
>
> this patch updates the arm*-*-freebsd* target for ld.
>
> On one side I open the triple to allow more than only arm-*-freebsd and
> on the other side I add with this patch the big endian target for
> arm*b-*-freebsd*.
>
> Ok for trunk?
>
OK.
R.
> Thanks,
> Andreas
>
> 2014-06-17 Andreas Tobler <andreast@fgznet.ch>
>
> * configure.tgt (arm*-*-freebsd*): Update targ_extra_emuls.
> (arm*b-*-freebsd*): Add target.
> * emulparams/armelfb_fbsd.sh: Added.
> * emulparams/armelf_fbsd.sh: Updated.
> * Makefile.am (ALL_EMULATION_SOURCES): Add earmelfb_fbsd.c.
> * Makefile.in: Regenerate.
>
>
> arm_ld_fbsd.diff
>
>
> diff --git a/ld/Makefile.am b/ld/Makefile.am
> index a22006c..c537fa7 100644
> --- a/ld/Makefile.am
> +++ b/ld/Makefile.am
> @@ -167,6 +167,7 @@ ALL_EMULATION_SOURCES = \
> earmelf_nbsd.c \
> earmelf_vxworks.c \
> earmelfb.c \
> + earmelfb_fbsd.c \
> earmelfb_linux.c \
> earmelfb_linux_eabi.c \
> earmelfb_nacl.c \
> @@ -732,6 +733,11 @@ earmelfb.c: $(srcdir)/emulparams/armelfb.sh $(srcdir)/emulparams/armelf.sh \
> $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
> $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>
> +earmelfb_fbsd.c: $(srcdir)/emulparams/armelfb_fbsd.sh \
> + $(srcdir)/emulparams/armelf_fbsd.sh \
> + $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
> + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
> +
> earmelfb_linux.c: $(srcdir)/emulparams/armelfb_linux.sh \
> $(srcdir)/emulparams/armelf_linux.sh \
> $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
> diff --git a/ld/Makefile.in b/ld/Makefile.in
> index 1c43066..370a5a5 100644
> --- a/ld/Makefile.in
> +++ b/ld/Makefile.in
> @@ -474,6 +474,7 @@ ALL_EMULATION_SOURCES = \
> earmelf_nbsd.c \
> earmelf_vxworks.c \
> earmelfb.c \
> + earmelfb_fbsd.c \
> earmelfb_linux.c \
> earmelfb_linux_eabi.c \
> earmelfb_nacl.c \
> @@ -1065,6 +1066,7 @@ distclean-compile:
> @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_nbsd.Po@am__quote@
> @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_vxworks.Po@am__quote@
> @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb.Po@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_fbsd.Po@am__quote@
> @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux.Po@am__quote@
> @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux_eabi.Po@am__quote@
> @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nacl.Po@am__quote@
> @@ -2170,6 +2172,11 @@ earmelfb.c: $(srcdir)/emulparams/armelfb.sh $(srcdir)/emulparams/armelf.sh \
> $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
> $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
>
> +earmelfb_fbsd.c: $(srcdir)/emulparams/armelfb_fbsd.sh \
> + $(srcdir)/emulparams/armelf_fbsd.sh \
> + $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
> + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
> +
> earmelfb_linux.c: $(srcdir)/emulparams/armelfb_linux.sh \
> $(srcdir)/emulparams/armelf_linux.sh \
> $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
> diff --git a/ld/configure.tgt b/ld/configure.tgt
> index 0eb743d..a230207 100644
> --- a/ld/configure.tgt
> +++ b/ld/configure.tgt
> @@ -81,9 +81,11 @@ arm-*-pe) targ_emul=armpe ; targ_extra_ofiles="deffilep.o pe-dll.o" ;;
> arm-*-aout | armel-*-aout) targ_emul=armaoutl ;;
> armeb-*-aout) targ_emul=armaoutb ;;
> arm-*-coff) targ_emul=armcoff ;;
> -arm-*-freebsd* | arm-*-kfreebsd*-gnu)
> +arm*b-*-freebsd*) targ_emul=armelfb_fbsd
> + targ_extra_emuls="armelf_fbsd armelf" ;;
> +arm*-*-freebsd* | arm-*-kfreebsd*-gnu)
> targ_emul=armelf_fbsd
> - targ_extra_emuls="armelf" ;;
> + targ_extra_emuls="armelfb_fbsd armelf" ;;
> armeb-*-netbsdelf*) targ_emul=armelfb_nbsd;
> targ_extra_emuls="armelf_nbsd armelf armnbsd" ;;
> arm-*-netbsdelf*) targ_emul=armelf_nbsd;
> diff --git a/ld/emulparams/armelf_fbsd.sh b/ld/emulparams/armelf_fbsd.sh
> index ee9520d..5b3ccc6 100644
> --- a/ld/emulparams/armelf_fbsd.sh
> +++ b/ld/emulparams/armelf_fbsd.sh
> @@ -1,3 +1,8 @@
> . ${srcdir}/emulparams/armelf.sh
> . ${srcdir}/emulparams/elf_fbsd.sh
> TARGET2_TYPE=got-rel
> +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
> +GENERATE_PIE_SCRIPT=yes
> +
> +unset STACK_ADDR
> +unset EMBEDDED
> diff --git a/ld/emulparams/armelfb_fbsd.sh b/ld/emulparams/armelfb_fbsd.sh
> new file mode 100644
> index 0000000..a28b476
> --- /dev/null
> +++ b/ld/emulparams/armelfb_fbsd.sh
> @@ -0,0 +1,2 @@
> +. ${srcdir}/emulparams/armelf_fbsd.sh
> +OUTPUT_FORMAT="elf32-bigarm"
>