This is the mail archive of the binutils@sourceware.org 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 <Cupertino.Miranda@synopsys.com> [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/configure.ac 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.

Andrew

---

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.

ld/ChangeLog:

	* 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"
-- 
2.5.1


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