This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] ld: Override default linker emulation at configure time

* Cupertino Miranda <> [2017-01-26 16:25:04 +0000]:

> Hi Andrew,
> Fair, over-engineering was an over-statement. ;-)
> I was simply, advocating for the triplet use in this case, however, I do
> agree with your reasoning.
> > My two mains dislikes for switching on the vendor string are, first,
> > it ties us to the vendor string, what if we don't want to use the
> > vendor name in the target for whatever reason, or what if the vendor
> > name changes in the future?  Second, having worked so hard to make the
> > configuration NOT depend on the vendor string in all other parts of
> > the toolchain, having the linker be the odd-one out feels like a
> > likely source of confusion.  Some end user builds the toolchain with
> > --with-cpu=nps400, but miss-spells, or drops the vendor string.
> > Everything else has configured/built correctly, except for the default
> > emulation.
> >
> I was also with the impression that:
>  - there was some other patch to expose the "with_cpu" variable and

This confusion was caused by me :-/ When I originally proposed my
patch I couldn't remember how --with-cpu was passed from the top level
configure script to the ld specific configure script, I didn't know if
extra code was required in ld/ to make --with-cpu an
option.  It's not.  Sorry for the confusion there.

>  - that no other target checked more than the triplet (I now see that
> powerpc*-*-elf* already does something).
> Just a suggestion, they do it with a "case" construct instead of the "if
> then else" ... seems cleaner. :-)

I think you're right.  Using "case" will make any future growth
easier.  I've reworked the patch inline with your suggestion.

Thanks for taking the time to review.



If we are configuring for an arc/linux target, and --with-cpu=nps400 is
used at configure time then change the default linker emulation to the
nps specific version.  All of the alternative linker emulations are
still available using the -mNAME option for ld.


	* configure.tgt (arc*-*-linux*): Change the default linker
	emulation based on --with-cpu selection.
	* NEWS: Mention new configuration option.
 ld/ChangeLog     |  6 ++++++
 ld/NEWS          |  3 +++
 ld/configure.tgt | 11 +++++++++--
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/ld/NEWS b/ld/NEWS
index d43f846..23ca25a 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -2,6 +2,9 @@
 * Add support for the Texas Instruments PRU processor.
+* When configuring for arc*-*-linux* targets the default linker emulation will
+  change if --with-cpu=nps400 is used at configure time.
 Changes in 2.28:
 * The EXCLUDE_FILE linker script construct can now be applied outside of the
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 5a68083..8e34b1f 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -80,8 +80,15 @@ alpha*-*-*vms*)		targ_emul=alphavms
 arc*-*-elf*)		targ_emul=arcelf
 			targ_extra_emuls="arcelf_prof arclinux arclinux_nps arclinux_prof arcv2elf arcv2elfx"
-arc*-*-linux*)		targ_emul=arclinux
-			targ_extra_emuls="arclinux_nps arclinux_prof arcelf arcelf_prof arcv2elf arcv2elfx"
+arc*-*-linux*)		case "${with_cpu}" in
+			nps400)	targ_emul=arclinux_nps
+				targ_extra_emuls=arclinux
+				;;
+			*)	targ_emul=arclinux
+				targ_extra_emuls=arclinux_nps
+				;;
+			esac
+			targ_extra_emuls="${targ_extra_emuls} arclinux_prof arcelf arcelf_prof arcv2elf arcv2elfx"
 arm-epoc-pe)		targ_emul=arm_epoc_pe ;	targ_extra_ofiles="deffilep.o pe-dll.o" ;;
 arm*-*-cegcc*)		targ_emul=arm_wince_pe ; targ_extra_ofiles="deffilep.o pe-dll.o"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]