[binutils-gdb] Add a plugin for processing static library dependencies.

Nick Clifton nickc@sourceware.org
Mon Dec 14 14:26:38 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bf6d80378274fa33001f2ca1cef084eabc904178

commit bf6d80378274fa33001f2ca1cef084eabc904178
Author: Howard Chu <hyc@symas.com>
Date:   Mon Dec 14 14:26:11 2020 +0000

    Add a plugin for processing static library dependencies.
    
            * libdep_plugin.c: New file: Processes archives that contain a
            special library dependencies element.
            * Makefile.am: Add build rules for libdep_plugin.
            * Makefile.in: Regenerate.
            * NEWS: Mention the new plugin.
            * ld.texi: Document the new plugin.

Diff:
---
 ld/ChangeLog       |    9 +
 ld/Makefile.am     |    5 +
 ld/Makefile.in     |  158 ++-
 ld/NEWS            |    3 +
 ld/ld.texi         |   53 +
 ld/libdep_plugin.c |  366 ++++++
 ld/po/ld.pot       | 3112 +++++++++++++++++++++++++++-------------------------
 7 files changed, 2181 insertions(+), 1525 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 8792daf9c19..b649e6870b4 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,12 @@
+2020-12-14  Howard Chu  <hyc@symas.com>
+
+	* libdep_plugin.c: New file: Processes archives that contain a
+	special library dependencies element.
+	* Makefile.am: Add build rules for libdep_plugin.
+	* Makefile.in: Regenerate.
+	* NEWS: Mention the new plugin.
+	* ld.texi: Document the new plugin.
+
 2020-12-14  Alan Modra  <amodra@gmail.com>
 
 	PR 26836
diff --git a/ld/Makefile.am b/ld/Makefile.am
index c9f85e52923..2f59ee61697 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -998,6 +998,11 @@ libldtestplug4_la_SOURCES = testplug4.c
 libldtestplug4_la_CFLAGS= -g -O2
 libldtestplug4_la_LDFLAGS = -no-undefined -rpath /nowhere
 
+bfdplugindir = $(libdir)/bfd-plugins
+bfdplugin_LTLIBRARIES = libdep.la
+libdep_la_SOURCES = libdep_plugin.c
+libdep_la_LDFLAGS = -no-undefined -rpath /nowhere
+
 # DOCUMENTATION TARGETS
 # Manual configuration file; not usually attached to normal configuration,
 # because almost all configs use "gen" version of manual.
diff --git a/ld/Makefile.in b/ld/Makefile.in
index e5eea3886ca..c744701e0e4 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -137,14 +137,49 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = po/Makefile.in
 CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libldtestplug_la_LIBADD =
-am_libldtestplug_la_OBJECTS = libldtestplug_la-testplug.lo
-libldtestplug_la_OBJECTS = $(am_libldtestplug_la_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(bfdplugindir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"
+LTLIBRARIES = $(bfdplugin_LTLIBRARIES) $(noinst_LTLIBRARIES)
+libdep_la_LIBADD =
+am_libdep_la_OBJECTS = libdep_plugin.lo
+libdep_la_OBJECTS = $(am_libdep_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
+libdep_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libdep_la_LDFLAGS) $(LDFLAGS) -o $@
+libldtestplug_la_LIBADD =
+am_libldtestplug_la_OBJECTS = libldtestplug_la-testplug.lo
+libldtestplug_la_OBJECTS = $(am_libldtestplug_la_OBJECTS)
 libldtestplug_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libldtestplug_la_CFLAGS) $(CFLAGS) \
@@ -170,8 +205,6 @@ libldtestplug4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libldtestplug4_la_CFLAGS) $(CFLAGS) \
 	$(libldtestplug4_la_LDFLAGS) $(LDFLAGS) -o $@
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" \
-	"$(DESTDIR)$(man1dir)"
 PROGRAMS = $(bin_PROGRAMS)
 am_ld_new_OBJECTS = ldgram.$(OBJEXT) ldlex-wrapper.$(OBJEXT) \
 	lexsup.$(OBJEXT) ldlang.$(OBJEXT) mri.$(OBJEXT) \
@@ -235,9 +268,10 @@ AM_V_YACC = $(am__v_YACC_@AM_V@)
 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
 am__v_YACC_0 = @echo "  YACC    " $@;
 am__v_YACC_1 = 
-SOURCES = $(libldtestplug_la_SOURCES) $(libldtestplug2_la_SOURCES) \
-	$(libldtestplug3_la_SOURCES) $(libldtestplug4_la_SOURCES) \
-	$(ld_new_SOURCES) $(EXTRA_ld_new_SOURCES)
+SOURCES = $(libdep_la_SOURCES) $(libldtestplug_la_SOURCES) \
+	$(libldtestplug2_la_SOURCES) $(libldtestplug3_la_SOURCES) \
+	$(libldtestplug4_la_SOURCES) $(ld_new_SOURCES) \
+	$(EXTRA_ld_new_SOURCES)
 AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
 am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
 am__v_DVIPS_0 = @echo "  DVIPS   " $@;
@@ -290,33 +324,6 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
@@ -1013,6 +1020,10 @@ libldtestplug3_la_LDFLAGS = -no-undefined -rpath /nowhere
 libldtestplug4_la_SOURCES = testplug4.c
 libldtestplug4_la_CFLAGS = -g -O2
 libldtestplug4_la_LDFLAGS = -no-undefined -rpath /nowhere
+bfdplugindir = $(libdir)/bfd-plugins
+bfdplugin_LTLIBRARIES = libdep.la
+libdep_la_SOURCES = libdep_plugin.c
+libdep_la_LDFLAGS = -no-undefined -rpath /nowhere
 MAINTAINERCLEANFILES = configdoc.texi ld.1 ld.info
 
 # We want to reconfigure if configure.host or configure.tgt changes.
@@ -1088,6 +1099,41 @@ distclean-hdr:
 po/Makefile.in: $(top_builddir)/config.status $(top_srcdir)/po/Make-in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 
+install-bfdpluginLTLIBRARIES: $(bfdplugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(bfdplugin_LTLIBRARIES)'; test -n "$(bfdplugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bfdplugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bfdplugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(bfdplugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(bfdplugindir)"; \
+	}
+
+uninstall-bfdpluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bfdplugin_LTLIBRARIES)'; test -n "$(bfdplugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(bfdplugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(bfdplugindir)/$$f"; \
+	done
+
+clean-bfdpluginLTLIBRARIES:
+	-test -z "$(bfdplugin_LTLIBRARIES)" || rm -f $(bfdplugin_LTLIBRARIES)
+	@list='$(bfdplugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
 clean-noinstLTLIBRARIES:
 	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
 	@list='$(noinst_LTLIBRARIES)'; \
@@ -1099,6 +1145,9 @@ clean-noinstLTLIBRARIES:
 	  rm -f $${locs}; \
 	}
 
+libdep.la: $(libdep_la_OBJECTS) $(libdep_la_DEPENDENCIES) $(EXTRA_libdep_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libdep_la_LINK) -rpath $(bfdplugindir) $(libdep_la_OBJECTS) $(libdep_la_LIBADD) $(LIBS)
+
 libldtestplug.la: $(libldtestplug_la_OBJECTS) $(libldtestplug_la_DEPENDENCIES) $(EXTRA_libldtestplug_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(libldtestplug_la_LINK)  $(libldtestplug_la_OBJECTS) $(libldtestplug_la_LIBADD) $(LIBS)
 
@@ -1492,6 +1541,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldver.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldwrite.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lexsup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdep_plugin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libldtestplug2_la-testplug2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libldtestplug3_la-testplug3.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libldtestplug4_la-testplug4.Plo@am__quote@
@@ -1886,7 +1936,7 @@ all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(PROGRAMS) $(MANS) \
 		config.h
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \
+	for dir in "$(DESTDIR)$(bfdplugindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -1932,8 +1982,9 @@ maintainer-clean-generic:
 	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-recursive
 
-clean-am: clean-aminfo clean-binPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES mostlyclean-am
+clean-am: clean-aminfo clean-bfdpluginLTLIBRARIES clean-binPROGRAMS \
+	clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
 
 distclean: distclean-recursive
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1955,7 +2006,8 @@ info: info-recursive
 
 info-am: $(INFO_DEPS)
 
-install-data-am: install-data-local install-info-am install-man
+install-data-am: install-bfdpluginLTLIBRARIES install-data-local \
+	install-info-am install-man
 
 install-dvi: install-dvi-recursive
 
@@ -2095,9 +2147,9 @@ ps: ps-recursive
 
 ps-am: $(PSS)
 
-uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
-	uninstall-info-am uninstall-man uninstall-pdf-am \
-	uninstall-ps-am
+uninstall-am: uninstall-bfdpluginLTLIBRARIES uninstall-binPROGRAMS \
+	uninstall-dvi-am uninstall-html-am uninstall-info-am \
+	uninstall-man uninstall-pdf-am uninstall-ps-am
 
 uninstall-man: uninstall-man1
 
@@ -2106,12 +2158,13 @@ uninstall-man: uninstall-man1
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
 	am--refresh check check-DEJAGNU check-am clean clean-aminfo \
-	clean-binPROGRAMS clean-cscope clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \
-	dist-info distclean distclean-DEJAGNU distclean-compile \
-	distclean-generic distclean-hdr distclean-libtool \
-	distclean-local distclean-tags dvi dvi-am html html-am info \
-	info-am install install-am install-binPROGRAMS install-data \
+	clean-bfdpluginLTLIBRARIES clean-binPROGRAMS clean-cscope \
+	clean-generic clean-libtool clean-noinstLTLIBRARIES cscope \
+	cscopelist-am ctags ctags-am dist-info distclean \
+	distclean-DEJAGNU distclean-compile distclean-generic \
+	distclean-hdr distclean-libtool distclean-local distclean-tags \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-bfdpluginLTLIBRARIES install-binPROGRAMS install-data \
 	install-data-am install-data-local install-dvi install-dvi-am \
 	install-exec install-exec-am install-exec-local install-html \
 	install-html-am install-info install-info-am install-man \
@@ -2121,9 +2174,10 @@ uninstall-man: uninstall-man1
 	maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
 	mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \
 	mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
-	tags-am uninstall uninstall-am uninstall-binPROGRAMS \
-	uninstall-dvi-am uninstall-html-am uninstall-info-am \
-	uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am
+	tags-am uninstall uninstall-am uninstall-bfdpluginLTLIBRARIES \
+	uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
+	uninstall-info-am uninstall-man uninstall-man1 \
+	uninstall-pdf-am uninstall-ps-am
 
 .PRECIOUS: Makefile
 
diff --git a/ld/NEWS b/ld/NEWS
index 607030bddd9..1c3f9c156e4 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,8 @@
 -*- text -*-
 
+* Add libdep plugin, for linking dependencies of static libraries that
+  were recorded by ar in the __.LIBDEP archive member.
+
 * Add --error-handling-script=<NAME> command line option to allow a helper
   script to be invoked when an undefined symbol or a missing library is
   encountered.  This option can be suppressed via the configure time
diff --git a/ld/ld.texi b/ld/ld.texi
index 8e3c7da145e..51c51a3ec1f 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -126,6 +126,7 @@ in the section entitled ``GNU Free Documentation License''.
 * Overview::                    Overview
 * Invocation::                  Invocation
 * Scripts::                     Linker Scripts
+* Plugins::                     Linker Plugins
 @ifset GENERIC
 * Machine Dependent::           Machine Dependent Features
 @end ifset
@@ -6954,6 +6955,58 @@ Any input files read because of an implicit linker script will be read
 at the position in the command line where the implicit linker script was
 read.  This can affect archive searching.
 
+@node Plugins
+@chapter Linker Plugins
+
+@cindex plugins
+@cindex linker plugins
+The linker can use dynamically loaded plugins to modify its behavior.
+For example, the link-time optimization feature that some compilers
+support is implemented with a linker plugin.
+
+Currently there is only one plugin shipped by default, but more may
+be added here later.
+
+@menu
+* libdep Plugin::	Static Library Dependencies Plugin
+@end menu
+
+@node libdep Plugin
+@section Static Library Dependencies Plugin
+@cindex static library dependencies
+Originally, static libraries were contained in an archive file consisting
+just of a collection of relocatable object files.  Later they evolved to
+optionally include a symbol table, to assist in finding the needed objects
+within a library.  There their evolution ended, and dynamic libraries
+rose to ascendance.
+
+One useful feature of dynamic libraries was that, more than just collecting
+multiple objects into a single file, they also included a list of their
+dependencies, such that one could specify just the name of a single dynamic
+library at link time, and all of its dependencies would be implicitly
+referenced as well.  But static libraries lacked this feature, so if a
+link invocation was switched from using dynamic libraries to static
+libraries, the link command would usually fail unless it was rewritten to
+explicitly list the dependencies of the static library.
+
+The GNU @command{ar} utility now supports a @option{--record-libdeps} option
+to embed dependency lists into static libraries as well, and the @file{libdep}
+plugin may be used to read this dependency information at link time.  The
+dependency information is stored as a single string, carrying @option{-l}
+and @option{-L} arguments as they would normally appear in a linker
+command line.  As such, the information can be written with any text
+utility and stored into any archive, even if GNU @command{ar} is not
+being used to create the archive.  The information is stored in an
+archive member named @samp{__.LIBDEP}.
+
+For example, given a library @file{libssl.a} that depends on another
+library @file{libcrypto.a} which may be found in @file{/usr/local/lib},
+the @samp{__.LIBDEP} member of @file{libssl.a} would contain
+
+@smallexample
+-L/usr/local/lib -lcrypto
+@end smallexample
+
 @ifset GENERIC
 @node Machine Dependent
 @chapter Machine Dependent Features
diff --git a/ld/libdep_plugin.c b/ld/libdep_plugin.c
new file mode 100644
index 00000000000..2a7fdc4d0bf
--- /dev/null
+++ b/ld/libdep_plugin.c
@@ -0,0 +1,366 @@
+/* libdeps plugin for the GNU linker.
+   Copyright (C) 2020 Free Software Foundation, Inc.
+
+   This file is part of the GNU Binutils.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
+#include "plugin-api.h"
+
+#include <ctype.h> /* For isspace.  */
+
+extern enum ld_plugin_status onload (struct ld_plugin_tv *tv);
+
+/* Helper for calling plugin api message function.  */
+#define TV_MESSAGE if (tv_message) (*tv_message)
+
+/* Function pointers to cache hooks passed at onload time.  */
+static ld_plugin_register_claim_file tv_register_claim_file = 0;
+static ld_plugin_register_all_symbols_read tv_register_all_symbols_read = 0;
+static ld_plugin_register_cleanup tv_register_cleanup = 0;
+static ld_plugin_message tv_message = 0;
+static ld_plugin_add_input_library tv_add_input_library = 0;
+static ld_plugin_set_extra_library_path tv_set_extra_library_path = 0;
+
+/* Handle/record information received in a transfer vector entry.  */
+static enum ld_plugin_status
+parse_tv_tag (struct ld_plugin_tv *tv)
+{
+#define SETVAR(x) x = tv->tv_u.x
+  switch (tv->tv_tag)
+    {
+      case LDPT_REGISTER_CLAIM_FILE_HOOK:
+	SETVAR(tv_register_claim_file);
+	break;
+      case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK:
+	SETVAR(tv_register_all_symbols_read);
+	break;
+      case LDPT_REGISTER_CLEANUP_HOOK:
+	SETVAR(tv_register_cleanup);
+	break;
+      case LDPT_MESSAGE:
+	SETVAR(tv_message);
+	break;
+      case LDPT_ADD_INPUT_LIBRARY:
+	SETVAR(tv_add_input_library);
+	break;
+      case LDPT_SET_EXTRA_LIBRARY_PATH:
+	SETVAR(tv_set_extra_library_path);
+	break;
+      default:
+	break;
+    }
+#undef SETVAR
+  return LDPS_OK;
+}
+
+/* Defs for archive parsing.  */
+#define ARMAGSIZE	8
+typedef struct arhdr
+{
+  char ar_name[16];
+  char ar_date[12];
+  char ar_uid[6];
+  char ar_gid[6];
+  char ar_mode[8];
+  char ar_size[10];
+  char ar_fmag[2];
+} arhdr;
+
+typedef struct linerec
+{
+  struct linerec *next;
+  char line[];
+} linerec;
+
+#define LIBDEPS "__.LIBDEP/ "
+
+static linerec *line_head, **line_tail = &line_head;
+
+static enum ld_plugin_status
+get_libdeps (int fd)
+{
+  arhdr ah;
+  int len;
+  unsigned long mlen;
+  linerec *lr;
+  enum ld_plugin_status rc = LDPS_NO_SYMS;
+
+  lseek (fd, ARMAGSIZE, SEEK_SET);
+  for (;;)
+    {
+      len = read (fd, (void *) &ah, sizeof (ah));
+      if (len != sizeof (ah))
+	break;
+      mlen = strtoul (ah.ar_size, NULL, 10);
+      if (!mlen || strncmp (ah.ar_name, LIBDEPS, sizeof (LIBDEPS)-1))
+	{
+	  lseek (fd, mlen, SEEK_CUR);
+	  continue;
+	}
+      lr = malloc (sizeof (linerec) + mlen);
+      if (!lr)
+	return LDPS_ERR;
+      lr->next = NULL;
+      len = read (fd, lr->line, mlen);
+      lr->line[mlen-1] = '\0';
+      *line_tail = lr;
+      line_tail = &lr->next;
+      rc = LDPS_OK;
+      break;
+    }
+  return rc;
+}
+
+/* Turn a string into an argvec.  */
+static char **
+str2vec (char *in)
+{
+  char **res;
+  char *s, *first, *end;
+  char *sq, *dq;
+  int i;
+
+  end = in + strlen (in);
+  s = in;
+  while (isspace (*s)) s++;
+  first = s;
+
+  i = 1;
+  while ((s = strchr (s, ' ')))
+    {
+      s++;
+      i++;
+    }
+  res = (char **)malloc ((i+1) * sizeof (char *));
+  if (!res)
+    return res;
+
+  i = 0;
+  sq = NULL;
+  dq = NULL;
+  res[0] = first;
+  for (s = first; *s; s++)
+    {
+      if (*s == '\\')
+	{
+	  memmove (s, s+1, end-s-1);
+	  end--;
+	}
+      if (isspace (*s))
+	{
+	  if (sq || dq)
+	    continue;
+	  *s++ = '\0';
+	  while (isspace (*s)) s++;
+	  if (*s)
+	    res[++i] = s;
+	}
+      if (*s == '\'' && !dq)
+	{
+	  if (sq)
+	    {
+	      memmove (sq, sq+1, s-sq-1);
+	      memmove (s-2, s+1, end-s-1);
+	      end -= 2;
+	      s--;
+	      sq = NULL;
+	    }
+	  else
+	    {
+	      sq = s;
+	    }
+	}
+      if (*s == '"' && !sq)
+	{
+	  if (dq)
+	    {
+	      memmove (dq, dq+1, s-dq-1);
+	      memmove (s-2, s+1, end-s-1);
+	      end -= 2;
+	      s--;
+	      dq = NULL;
+	    }
+	  else
+	    {
+	      dq = s;
+	    }
+	}
+    }
+  res[++i] = NULL;
+  return res;
+}
+
+static char *prevfile;
+
+/* Standard plugin API registerable hook.  */
+static enum ld_plugin_status
+onclaim_file (const struct ld_plugin_input_file *file, int *claimed)
+{
+  enum ld_plugin_status rv;
+
+  *claimed = 0;
+
+  /* If we've already seen this file, ignore it.  */
+  if (prevfile && !strcmp (file->name, prevfile))
+    return LDPS_OK;
+
+  /* If it's not an archive member, ignore it.  */
+  if (!file->offset)
+    return LDPS_OK;
+
+  if (prevfile)
+    free (prevfile);
+
+  prevfile = strdup (file->name);
+  if (!prevfile)
+    return LDPS_ERR;
+
+  /* This hook only gets called on actual object files.
+   * We have to examine the archive ourselves, to find
+   * our LIBDEPS member.  */
+  rv = get_libdeps (file->fd);
+  if (rv == LDPS_ERR)
+    return rv;
+
+  if (rv == LDPS_OK)
+    {
+      linerec *lr = (linerec *)line_tail;
+      /* Inform the user/testsuite.  */
+      TV_MESSAGE (LDPL_INFO, "got deps for library %s: %s",
+		  file->name, lr->line);
+      fflush (NULL);
+    }
+
+  return LDPS_OK;
+}
+
+/* Standard plugin API registerable hook.  */
+static enum ld_plugin_status
+onall_symbols_read (void)
+{
+  linerec *lr;
+  char **vec;
+  enum ld_plugin_status rv = LDPS_OK;
+
+  while ((lr = line_head))
+    {
+      line_head = lr->next;
+      vec = str2vec (lr->line);
+      if (vec)
+	{
+	  int i;
+	  for (i = 0; vec[i]; i++)
+	    {
+	      if (vec[i][0] != '-')
+		{
+		  TV_MESSAGE (LDPL_WARNING, "ignoring libdep argument %s",
+			      vec[i]);
+		  fflush (NULL);
+		  continue;
+		}
+	      if (vec[i][1] == 'l')
+		rv = tv_add_input_library (vec[i]+2);
+	      else if (vec[i][1] == 'L')
+		rv = tv_set_extra_library_path (vec[i]+2);
+	      else
+		{
+		  TV_MESSAGE (LDPL_WARNING, "ignoring libdep argument %s",
+			      vec[i]);
+		  fflush (NULL);
+		}
+	      if (rv != LDPS_OK)
+		break;
+	    }
+	  free (vec);
+	}
+      free (lr);
+    }
+  line_tail = NULL;
+  return rv;
+}
+
+/* Standard plugin API registerable hook.  */
+static enum ld_plugin_status
+oncleanup (void)
+{
+  if (prevfile)
+    {
+      free (prevfile);
+      prevfile = NULL;
+    }
+  if (line_head)
+    {
+      linerec *lr;
+      while ((lr = line_head))
+	{
+	  line_head = lr->next;
+	  free (lr);
+	}
+      line_tail = NULL;
+    }
+  return LDPS_OK;
+}
+
+/* Standard plugin API entry point.  */
+enum ld_plugin_status
+onload (struct ld_plugin_tv *tv)
+{
+  enum ld_plugin_status rv;
+
+  /* This plugin requires a valid tv array.  */
+  if (!tv)
+    return LDPS_ERR;
+
+  /* First entry should always be LDPT_MESSAGE, letting us get
+     hold of it easily so we can send output straight away.  */
+  if (tv[0].tv_tag == LDPT_MESSAGE)
+    tv_message = tv[0].tv_u.tv_message;
+
+  do
+    if ((rv = parse_tv_tag (tv)) != LDPS_OK)
+      return rv;
+  while ((tv++)->tv_tag != LDPT_NULL);
+
+  /* Register hooks.  */
+  if (!tv_register_claim_file)
+    {
+      TV_MESSAGE (LDPL_FATAL, "No register_claim_file hook");
+      fflush (NULL);
+      return LDPS_ERR;
+    }
+  (*tv_register_claim_file) (onclaim_file);
+  if (!tv_register_all_symbols_read)
+    {
+      TV_MESSAGE (LDPL_FATAL, "No register_all_symbols_read hook");
+      fflush (NULL);
+      return LDPS_ERR;
+    }
+  (*tv_register_all_symbols_read) (onall_symbols_read);
+  if (!tv_register_cleanup)
+    {
+      TV_MESSAGE (LDPL_FATAL, "No register_cleanup hook");
+      fflush (NULL);
+      return LDPS_ERR;
+    }
+  (*tv_register_cleanup) (oncleanup);
+  fflush (NULL);
+  return LDPS_OK;
+}
+#endif /* BFD_SUPPORTS_PLUGINS */
diff --git a/ld/po/ld.pot b/ld/po/ld.pot
index 1561a3d4ee6..c619dffb23c 100644
--- a/ld/po/ld.pot
+++ b/ld/po/ld.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2020-07-06 10:52+0100\n"
+"POT-Creation-Date: 2020-12-14 14:16+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -56,16 +56,15 @@ msgstr ""
 msgid "%P: symbol `%pT' missing from main hash table\n"
 msgstr ""
 
-#: ldcref.c:518 ldcref.c:629 ldmain.c:1293 ldmisc.c:335 pe-dll.c:736
-#: pe-dll.c:1314 pe-dll.c:1435 pe-dll.c:1558 earm_wince_pe.c:1437
-#: earm_wince_pe.c:1644 earmpe.c:1437 earmpe.c:1644 ei386pe.c:1437
-#: ei386pe.c:1644 ei386pe_posix.c:1437 ei386pe_posix.c:1644 ei386pep.c:1422
-#: emcorepe.c:1437 emcorepe.c:1644 eppcpe.c:1437 eppcpe.c:1644 eshpe.c:1437
-#: eshpe.c:1644
+#: ldcref.c:518 ldcref.c:629 ldmain.c:1295 ldmisc.c:336 pe-dll.c:737
+#: pe-dll.c:1315 pe-dll.c:1436 pe-dll.c:1562 earm_wince_pe.c:1486
+#: earm_wince_pe.c:1693 earmpe.c:1486 earmpe.c:1693 ei386pe.c:1486
+#: ei386pe.c:1693 ei386pe_posix.c:1486 ei386pe_posix.c:1693 ei386pep.c:1475
+#: emcorepe.c:1486 emcorepe.c:1693 eshpe.c:1486 eshpe.c:1693
 msgid "%F%P: %pB: could not read symbols: %E\n"
 msgstr ""
 
-#: ldcref.c:691 ldcref.c:698 ldmain.c:1355 ldmain.c:1362
+#: ldcref.c:691 ldcref.c:698 ldmain.c:1357 ldmain.c:1364
 msgid "%F%P: %pB: could not read relocs: %E\n"
 msgstr ""
 
@@ -138,7 +137,7 @@ msgstr ""
 msgid "found %s at %s\n"
 msgstr ""
 
-#: ldelf.c:385 ldlang.c:3146 ldlang.c:3160
+#: ldelf.c:385 ldlang.c:3143 ldlang.c:3157
 msgid "%F%P: %pB: error adding symbols: %E\n"
 msgstr ""
 
@@ -154,88 +153,95 @@ msgstr ""
 msgid "%F%P: %s: can't open for writing: %E\n"
 msgstr ""
 
-#: ldelf.c:1050 ldelf.c:1084
+#: ldelf.c:1052
 msgid "%F%P: cannot use executable file '%pB' as input to a link\n"
 msgstr ""
 
-#: ldelf.c:1111
+#: ldelf.c:1106
 msgid ""
 "%F%P: compact frame descriptions incompatible with DWARF2 .eh_frame from "
 "%pB\n"
 msgstr ""
 
-#: ldelf.c:1147
+#: ldelf.c:1142
 msgid ""
 "%P: warning: cannot create .eh_frame_hdr section, --eh-frame-hdr ignored\n"
 msgstr ""
 
-#: ldelf.c:1203
+#: ldelf.c:1198
 #, c-format
 msgid "%s needed by %pB\n"
 msgstr ""
 
-#: ldelf.c:1312
+#: ldelf.c:1307
 msgid ""
 "%P: warning: %s, needed by %pB, not found (try using -rpath or -rpath-link)\n"
 msgstr ""
 
-#: ldelf.c:1325
+#: ldelf.c:1320
 msgid "%F%P: failed to add DT_NEEDED dynamic tag\n"
 msgstr ""
 
-#: ldelf.c:1333
+#: ldelf.c:1328
 msgid "%F%P: failed to parse EH frame entries\n"
 msgstr ""
 
-#: ldelf.c:1372
+#: ldelf.c:1367
 msgid "%P: warning: .note.gnu.build-id section discarded, --build-id ignored\n"
 msgstr ""
 
-#: ldelf.c:1418 earm_wince_pe.c:1228 earmpe.c:1228 ei386pe.c:1228
-#: ei386pe_posix.c:1228 ei386pep.c:1231 emcorepe.c:1228 eppcpe.c:1228
-#: eshpe.c:1228
+#: ldelf.c:1413 earm_wince_pe.c:1277 earmpe.c:1277 ei386pe.c:1277
+#: ei386pe_posix.c:1277 ei386pep.c:1284 emcorepe.c:1277 eshpe.c:1277
 msgid "%P: warning: unrecognized --build-id style ignored\n"
 msgstr ""
 
-#: ldelf.c:1436
+#: ldelf.c:1431
 msgid ""
 "%P: warning: cannot create .note.gnu.build-id section, --build-id ignored\n"
 msgstr ""
 
-#: ldelf.c:1468 eaix5ppc.c:1370 eaix5rs6.c:1370 eaixppc.c:1370 eaixrs6.c:1370
-#: eppcmacos.c:1370
+#: ldelf.c:1463 eaix5ppc.c:1371 eaix5rs6.c:1371 eaixppc.c:1371 eaixrs6.c:1371
+#: eppcmacos.c:1371
 msgid "%F%P: failed to record assignment to %s: %E\n"
 msgstr ""
 
-#: ldelf.c:1650 ldelf.c:1715 eaix5ppc.c:832 eaix5rs6.c:832 eaixppc.c:832
+#: ldelf.c:1647 ldelf.c:1712 eaix5ppc.c:832 eaix5rs6.c:832 eaixppc.c:832
 #: eaixrs6.c:832 eelf64_ia64_vms.c:209 eppcmacos.c:832
 msgid "%F%P: failed to set dynamic section sizes: %E\n"
 msgstr ""
 
-#: ldelf.c:1687
+#: ldelf.c:1684
 msgid "%F%P: %pB: can't read contents of section .gnu.warning: %E\n"
 msgstr ""
 
-#: ldelfgen.c:55
+#: ldelfgen.c:56
 msgid "%F%P: map sections to segments failed: %E\n"
 msgstr ""
 
-#: ldelfgen.c:75
+#: ldelfgen.c:76
 msgid "%F%P: looping in map_segments"
 msgstr ""
 
-#: ldelfgen.c:87
+#: ldelfgen.c:88
 msgid "%F%P: failed to strip zero-sized dynamic sections"
 msgstr ""
 
-#: ldelfgen.c:191
+#: ldelfgen.c:159
 msgid ""
 "%F%P: warning: CTF strtab association failed; strings will not be shared: "
 "%s\n"
 msgstr ""
 
-#: ldelfgen.c:197
-msgid "%F%P: warning: CTF symbol shuffling failed; slight space cost: %s\n"
+#: ldelfgen.c:186
+msgid ""
+"%F%P: warning: CTF symbol addition failed; CTF will not be tied to symbols: "
+"%s\n"
+msgstr ""
+
+#: ldelfgen.c:196
+msgid ""
+"%F%P: warning: CTF symbol shuffling failed; CTF will not be tied to symbols: "
+"%s\n"
 msgstr ""
 
 #: ldemul.c:314
@@ -281,9 +287,9 @@ msgstr ""
 msgid "%F%P:%pS / by zero\n"
 msgstr ""
 
-#: ldexp.c:736 ldlang.c:3922 ldmain.c:1260 earm_wince_pe.c:1772 earmpe.c:1772
-#: ei386pe.c:1772 ei386pe_posix.c:1772 ei386pep.c:1646 emcorepe.c:1772
-#: eppcpe.c:1772 eshpe.c:1772
+#: ldexp.c:736 ldlang.c:3977 ldmain.c:1262 earm_wince_pe.c:1804 earmpe.c:1804
+#: ei386pe.c:1804 ei386pe_posix.c:1804 ei386pep.c:1699 emcorepe.c:1804
+#: eshpe.c:1804
 msgid "%F%P: bfd_link_hash_lookup failed: %E\n"
 msgstr ""
 
@@ -331,7 +337,7 @@ msgstr ""
 msgid "%F%P:%pS: nonconstant expression for %s\n"
 msgstr ""
 
-#: ldexp.c:1666 ldlang.c:1281 ldlang.c:3464 ldlang.c:7848
+#: ldexp.c:1666 ldlang.c:1280 ldlang.c:3461 ldlang.c:7913
 msgid "%F%P: can not create hash table: %E\n"
 msgstr ""
 
@@ -364,68 +370,82 @@ msgstr ""
 msgid "%P: cannot find %s inside %s\n"
 msgstr ""
 
-#: ldfile.c:465
+#: ldfile.c:477 ldmain.c:1442
+msgid "%P: About to run error handling script '%s' with arguments: '%s' '%s'\n"
+msgstr ""
+
+#: ldfile.c:481 ldmain.c:1446
+msgid "error handling script"
+msgstr ""
+
+#: ldfile.c:487 ldmain.c:1452
+msgid "%P: Failed to run error handling script '%s', reason: "
+msgstr ""
+
+#. We ignore the return status of the script
+#. and always print the error message.
+#: ldfile.c:494 ldfile.c:498
 msgid "%P: cannot find %s\n"
 msgstr ""
 
-#: ldfile.c:475
+#: ldfile.c:508
 msgid "%P: note to link with %s use -l:%s or rename it to lib%s\n"
 msgstr ""
 
-#: ldfile.c:503
+#: ldfile.c:537
 #, c-format
 msgid "cannot find script file %s\n"
 msgstr ""
 
-#: ldfile.c:505
+#: ldfile.c:539
 #, c-format
 msgid "opened script file %s\n"
 msgstr ""
 
-#: ldfile.c:654
+#: ldfile.c:688
 msgid "%F%P: error: linker script file '%s' appears multiple times\n"
 msgstr ""
 
-#: ldfile.c:676
+#: ldfile.c:710
 msgid "%F%P: cannot open linker script file %s: %E\n"
 msgstr ""
 
-#: ldfile.c:749
+#: ldfile.c:783
 msgid "%F%P: cannot represent machine `%s'\n"
 msgstr ""
 
-#: ldlang.c:1365
+#: ldlang.c:1364
 msgid "%P:%pS: warning: redeclaration of memory region `%s'\n"
 msgstr ""
 
-#: ldlang.c:1371
+#: ldlang.c:1370
 msgid "%P:%pS: warning: memory region `%s' not declared\n"
 msgstr ""
 
-#: ldlang.c:1407
+#: ldlang.c:1406
 msgid "%F%P:%pS: error: alias for default memory region\n"
 msgstr ""
 
-#: ldlang.c:1418
+#: ldlang.c:1417
 msgid "%F%P:%pS: error: redefinition of memory region alias `%s'\n"
 msgstr ""
 
-#: ldlang.c:1425
+#: ldlang.c:1424
 msgid "%F%P:%pS: error: memory region `%s' for alias `%s' does not exist\n"
 msgstr ""
 
-#: ldlang.c:1484 ldlang.c:1523
+#: ldlang.c:1485 ldlang.c:1520
 msgid "%F%P: failed creating section `%s': %E\n"
 msgstr ""
 
-#: ldlang.c:2221
+#: ldlang.c:2218
 msgid ""
 "\n"
 "As-needed library included to satisfy reference by file (symbol)\n"
 "\n"
 msgstr ""
 
-#: ldlang.c:2288
+#: ldlang.c:2285
 #, c-format
 msgid ""
 "\n"
@@ -433,30 +453,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ldlang.c:2296
+#: ldlang.c:2293
 msgid ""
 "\n"
 "Memory Configuration\n"
 "\n"
 msgstr ""
 
-#: ldlang.c:2298
+#: ldlang.c:2295
 msgid "Name"
 msgstr ""
 
-#: ldlang.c:2298
+#: ldlang.c:2295
 msgid "Origin"
 msgstr ""
 
-#: ldlang.c:2298
+#: ldlang.c:2295
 msgid "Length"
 msgstr ""
 
-#: ldlang.c:2298
+#: ldlang.c:2295
 msgid "Attributes"
 msgstr ""
 
-#: ldlang.c:2338
+#: ldlang.c:2335
 #, c-format
 msgid ""
 "\n"
@@ -464,598 +484,617 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ldlang.c:2391
+#: ldlang.c:2388
 msgid "%F%P: illegal use of `%s' section\n"
 msgstr ""
 
-#: ldlang.c:2400
+#: ldlang.c:2397
 msgid "%F%P: output format %s cannot represent section called %s: %E\n"
 msgstr ""
 
-#: ldlang.c:2567
+#: ldlang.c:2564
 msgid ""
 "%P:%pS: warning: --enable-non-contiguous-regions makes section `%pA' from "
 "'%pB' match /DISCARD/ clause.\n"
 msgstr ""
 
-#: ldlang.c:2600
+#: ldlang.c:2597
 msgid ""
 "%P:%pS: warning: --enable-non-contiguous-regions may change behaviour for "
 "section `%pA' from '%pB' (assigned to %pA, but additional match: %pA)\n"
 msgstr ""
 
-#: ldlang.c:3050
+#: ldlang.c:3047
 msgid "%P: %pB: file not recognized: %E; matching formats:"
 msgstr ""
 
-#: ldlang.c:3058
+#: ldlang.c:3055
 msgid "%F%P: %pB: file not recognized: %E\n"
 msgstr ""
 
-#: ldlang.c:3131
+#: ldlang.c:3128
 msgid "%F%P: %pB: member %pB in archive is not an object\n"
 msgstr ""
 
-#: ldlang.c:3434
+#: ldlang.c:3431
 msgid ""
 "%P: warning: could not find any targets that match endianness requirement\n"
 msgstr ""
 
-#: ldlang.c:3448
+#: ldlang.c:3445
 msgid "%F%P: target %s not found\n"
 msgstr ""
 
-#: ldlang.c:3450
+#: ldlang.c:3447
 msgid "%F%P: cannot open output file %s: %E\n"
 msgstr ""
 
-#: ldlang.c:3456
+#: ldlang.c:3453
 msgid "%F%P: %s: can not make object file: %E\n"
 msgstr ""
 
-#: ldlang.c:3460
+#: ldlang.c:3457
 msgid "%F%P: %s: can not set architecture: %E\n"
 msgstr ""
 
-#: ldlang.c:3640
+#: ldlang.c:3637
 msgid "%P: warning: %s contains output sections; did you forget -T?\n"
 msgstr ""
 
-#: ldlang.c:3697
+#: ldlang.c:3684
+#, c-format
+msgid "%s: %s\n"
+msgstr ""
+
+#: ldlang.c:3684
+msgid "CTF warning"
+msgstr ""
+
+#: ldlang.c:3684
+msgid "CTF error"
+msgstr ""
+
+#: ldlang.c:3690
+#, c-format
+msgid "CTF error: cannot get CTF errors: `%s'\n"
+msgstr ""
+
+#: ldlang.c:3724
 msgid ""
-"%P: warning: CTF section in `%pI' not loaded: its types will be discarded: `"
-"%s'\n"
+"%P: warning: CTF section in %pB not loaded; its types will be discarded: %s\n"
 msgstr ""
 
-#: ldlang.c:3722
+#: ldlang.c:3753
 msgid "%P: warning: CTF output not created: `%s'\n"
 msgstr ""
 
-#: ldlang.c:3764
-msgid "%F%P: cannot link with CTF in %pB: %s\n"
+#: ldlang.c:3796
+msgid "%P: warning: CTF section in %pB cannot be linked: `%s'\n"
 msgstr ""
 
-#: ldlang.c:3774
-msgid "%F%P: CTF linking failed; output will have no CTF section: %s\n"
+#: ldlang.c:3814
+msgid "%P: warning: CTF linking failed; output will have no CTF section: %s\n"
 msgstr ""
 
-#: ldlang.c:3830
+#: ldlang.c:3885
 msgid ""
-"%F%P: CTF section emission failed; output will have no CTF section: %s\n"
+"%P: warning: CTF section emission failed; output will have no CTF section: "
+"%s\n"
 msgstr ""
 
-#: ldlang.c:3868
+#: ldlang.c:3924
 msgid ""
-"%P: warning: CTF section in `%pI' not linkable: %P was built without support "
+"%P: warning: CTF section in %pB not linkable: %P was built without support "
 "for CTF\n"
 msgstr ""
 
-#: ldlang.c:3992
+#: ldlang.c:4047
 msgid "%X%P: required symbol `%s' not defined\n"
 msgstr ""
 
-#: ldlang.c:4291
+#: ldlang.c:4342
 msgid ""
 "warning: INSERT statement in linker script is incompatible with --enable-non-"
 "contiguous-regions.\n"
 msgstr ""
 
-#: ldlang.c:4304
+#: ldlang.c:4355
 msgid "%F%P: %s not found for insert\n"
 msgstr ""
 
-#: ldlang.c:4544
+#: ldlang.c:4595
 msgid " load address 0x%V"
 msgstr ""
 
-#: ldlang.c:4777
+#: ldlang.c:4828
 msgid "%W (size before relaxing)\n"
 msgstr ""
 
-#: ldlang.c:4870
+#: ldlang.c:4921
 #, c-format
 msgid "Address of section %s set to "
 msgstr ""
 
-#: ldlang.c:5068
+#: ldlang.c:5119
 #, c-format
 msgid "Fail with %d\n"
 msgstr ""
 
-#: ldlang.c:5281
+#: ldlang.c:5332
 msgid ""
 "%F%P: Output section '%s' not large enough for the linker-created stubs "
 "section '%s'.\n"
 msgstr ""
 
-#: ldlang.c:5286
+#: ldlang.c:5337
 msgid ""
 "%F%P: Relaxation not supported with --enable-non-contiguous-regions (section "
 "'%s' would overflow '%s' after it changed size).\n"
 msgstr ""
 
-#: ldlang.c:5395
+#: ldlang.c:5446
 msgid "%X%P: section %s VMA wraps around address space\n"
 msgstr ""
 
-#: ldlang.c:5401
+#: ldlang.c:5452
 msgid "%X%P: section %s LMA wraps around address space\n"
 msgstr ""
 
-#: ldlang.c:5453
+#: ldlang.c:5504
 msgid "%X%P: section %s LMA [%V,%V] overlaps section %s LMA [%V,%V]\n"
 msgstr ""
 
-#: ldlang.c:5497
+#: ldlang.c:5548
 msgid "%X%P: section %s VMA [%V,%V] overlaps section %s VMA [%V,%V]\n"
 msgstr ""
 
-#: ldlang.c:5520
+#: ldlang.c:5571
 msgid "%X%P: region `%s' overflowed by %lu byte\n"
 msgid_plural "%X%P: region `%s' overflowed by %lu bytes\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ldlang.c:5545
+#: ldlang.c:5596
 msgid "%X%P: address 0x%v of %pB section `%s' is not within region `%s'\n"
 msgstr ""
 
-#: ldlang.c:5556
+#: ldlang.c:5607
 msgid "%X%P: %pB section `%s' will not fit in region `%s'\n"
 msgstr ""
 
-#: ldlang.c:5642
+#: ldlang.c:5693
 msgid ""
 "%F%P:%pS: non constant or forward reference address expression for section "
 "%s\n"
 msgstr ""
 
-#: ldlang.c:5667
+#: ldlang.c:5718
 msgid "%X%P: internal error on COFF shared library section %s\n"
 msgstr ""
 
-#: ldlang.c:5725
+#: ldlang.c:5776
 msgid "%F%P: error: no memory region specified for loadable section `%s'\n"
 msgstr ""
 
-#: ldlang.c:5729
+#: ldlang.c:5780
 msgid "%P: warning: no memory region specified for loadable section `%s'\n"
 msgstr ""
 
-#: ldlang.c:5763
+#: ldlang.c:5814
 msgid "%P: warning: start of section %s changed by %ld\n"
 msgstr ""
 
-#: ldlang.c:5855
+#: ldlang.c:5906
 msgid "%P: warning: dot moved backwards before `%s'\n"
 msgstr ""
 
-#: ldlang.c:6036
+#: ldlang.c:6087
 msgid "%F%P: can't relax section: %E\n"
 msgstr ""
 
-#: ldlang.c:6457
+#: ldlang.c:6508
 msgid "%F%P: invalid data statement\n"
 msgstr ""
 
-#: ldlang.c:6490
+#: ldlang.c:6541
 msgid "%F%P: invalid reloc statement\n"
 msgstr ""
 
-#: ldlang.c:6844
-msgid "%F%P: gc-sections requires either an entry or an undefined symbol\n"
+#: ldlang.c:6908
+msgid ""
+"%F%P: --gc-sections requires a defined symbol root specified by -e or -u\n"
 msgstr ""
 
-#: ldlang.c:6868
+#: ldlang.c:6933
 msgid "%F%P: %s: can't set start address\n"
 msgstr ""
 
-#: ldlang.c:6881 ldlang.c:6899
+#: ldlang.c:6946 ldlang.c:6964
 msgid "%F%P: can't set start address\n"
 msgstr ""
 
-#: ldlang.c:6893
+#: ldlang.c:6958
 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
 msgstr ""
 
-#: ldlang.c:6904
+#: ldlang.c:6969
 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
 msgstr ""
 
-#: ldlang.c:6960
+#: ldlang.c:7026
 msgid ""
 "%F%P: relocatable linking with relocations from format %s (%pB) to format %s "
 "(%pB) is not supported\n"
 msgstr ""
 
-#: ldlang.c:6970
+#: ldlang.c:7036
 msgid ""
 "%X%P: %s architecture of input file `%pB' is incompatible with %s output\n"
 msgstr ""
 
-#: ldlang.c:6993
+#: ldlang.c:7060
 msgid "%X%P: failed to merge target specific data of file %pB\n"
 msgstr ""
 
-#: ldlang.c:7064
+#: ldlang.c:7131
 msgid "%F%P: could not define common symbol `%pT': %E\n"
 msgstr ""
 
-#: ldlang.c:7076
+#: ldlang.c:7143
 msgid ""
 "\n"
 "Allocating common symbols\n"
 msgstr ""
 
-#: ldlang.c:7077
+#: ldlang.c:7144
 msgid ""
 "Common symbol       size              file\n"
 "\n"
 msgstr ""
 
-#: ldlang.c:7151
+#: ldlang.c:7217
 msgid "%X%P: error: unplaced orphan section `%pA' from `%pB'\n"
 msgstr ""
 
-#: ldlang.c:7169
+#: ldlang.c:7235
 msgid ""
 "%P: warning: orphan section `%pA' from `%pB' being placed in section `%s'\n"
 msgstr ""
 
-#: ldlang.c:7260
+#: ldlang.c:7325
 msgid "%F%P: invalid character %c (%d) in flags\n"
 msgstr ""
 
-#: ldlang.c:7369
+#: ldlang.c:7434
 msgid "%F%P:%pS: error: align with input and explicit align specified\n"
 msgstr ""
 
-#: ldlang.c:7875
+#: ldlang.c:7949
 msgid "%F%P: %s: plugin reported error after all symbols read\n"
 msgstr ""
 
-#: ldlang.c:8312
+#: ldlang.c:8387
 msgid "%F%P: multiple STARTUP files\n"
 msgstr ""
 
-#: ldlang.c:8358
+#: ldlang.c:8433
 msgid "%X%P:%pS: section has both a load address and a load region\n"
 msgstr ""
 
-#: ldlang.c:8464
+#: ldlang.c:8539
 msgid ""
 "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers "
 "lack them\n"
 msgstr ""
 
-#: ldlang.c:8537
+#: ldlang.c:8612
 msgid "%F%P: no sections assigned to phdrs\n"
 msgstr ""
 
-#: ldlang.c:8575
+#: ldlang.c:8650
 msgid "%F%P: bfd_record_phdr failed: %E\n"
 msgstr ""
 
-#: ldlang.c:8595
+#: ldlang.c:8670
 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
 msgstr ""
 
-#: ldlang.c:9018
+#: ldlang.c:9093
 msgid "%X%P: unknown language `%s' in version information\n"
 msgstr ""
 
-#: ldlang.c:9163
+#: ldlang.c:9238
 msgid ""
 "%X%P: anonymous version tag cannot be combined with other version tags\n"
 msgstr ""
 
-#: ldlang.c:9172
+#: ldlang.c:9247
 msgid "%X%P: duplicate version tag `%s'\n"
 msgstr ""
 
-#: ldlang.c:9193 ldlang.c:9202 ldlang.c:9220 ldlang.c:9230
+#: ldlang.c:9268 ldlang.c:9277 ldlang.c:9295 ldlang.c:9305
 msgid "%X%P: duplicate expression `%s' in version information\n"
 msgstr ""
 
-#: ldlang.c:9270
+#: ldlang.c:9345
 msgid "%X%P: unable to find version dependency `%s'\n"
 msgstr ""
 
-#: ldlang.c:9293
+#: ldlang.c:9368
 msgid "%X%P: unable to read .exports section contents\n"
 msgstr ""
 
-#: ldlang.c:9331
-msgid "%F%P: invalid origin for memory region %s\n"
+#: ldlang.c:9414
+msgid "%P: invalid origin for memory region %s\n"
 msgstr ""
 
-#: ldlang.c:9340
-msgid "%F%P: invalid length for memory region %s\n"
+#: ldlang.c:9426
+msgid "%P: invalid length for memory region %s\n"
 msgstr ""
 
-#: ldlang.c:9451
+#: ldlang.c:9538
 msgid "%X%P: unknown feature `%s'\n"
 msgstr ""
 
-#: ldmain.c:194
+#: ldmain.c:196
 msgid "%F%P: cannot open dependency file %s: %E\n"
 msgstr ""
 
-#: ldmain.c:264
+#: ldmain.c:266
 msgid "%F%P: fatal error: libbfd ABI mismatch\n"
 msgstr ""
 
-#: ldmain.c:300
+#: ldmain.c:302
 msgid "%X%P: can't set BFD default target to `%s': %E\n"
 msgstr ""
 
-#: ldmain.c:402
+#: ldmain.c:404
 msgid "built in linker script"
 msgstr ""
 
-#: ldmain.c:412
+#: ldmain.c:414
 msgid "using external linker script:"
 msgstr ""
 
-#: ldmain.c:414
+#: ldmain.c:416
 msgid "using internal linker script:"
 msgstr ""
 
-#: ldmain.c:461
+#: ldmain.c:463
 msgid "%F%P: --no-define-common may not be used without -shared\n"
 msgstr ""
 
-#: ldmain.c:467
+#: ldmain.c:469
 msgid "%F%P: no input files\n"
 msgstr ""
 
-#: ldmain.c:471
+#: ldmain.c:473
 msgid "%P: mode %s\n"
 msgstr ""
 
-#: ldmain.c:487 ends32belf.c:418 ends32belf16m.c:418 ends32belf_linux.c:547
-#: ends32elf.c:418 ends32elf16m.c:418 ends32elf_linux.c:547
+#: ldmain.c:489 ends32belf.c:422 ends32belf16m.c:422 ends32belf_linux.c:551
+#: ends32elf.c:422 ends32elf16m.c:422 ends32elf_linux.c:551
 msgid "%F%P: cannot open map file %s: %E\n"
 msgstr ""
 
-#: ldmain.c:540
+#: ldmain.c:542
 msgid "%P: link errors found, deleting executable `%s'\n"
 msgstr ""
 
-#: ldmain.c:549
+#: ldmain.c:551
 msgid "%F%P: %pB: final close failed: %E\n"
 msgstr ""
 
-#: ldmain.c:576
+#: ldmain.c:578
 msgid "%F%P: unable to open for source of copy `%s'\n"
 msgstr ""
 
-#: ldmain.c:579
+#: ldmain.c:581
 msgid "%F%P: unable to open for destination of copy `%s'\n"
 msgstr ""
 
-#: ldmain.c:586
+#: ldmain.c:588
 msgid "%P: error writing file `%s'\n"
 msgstr ""
 
-#: ldmain.c:591 pe-dll.c:1949
+#: ldmain.c:593 pe-dll.c:1953
 #, c-format
 msgid "%P: error closing file `%s'\n"
 msgstr ""
 
-#: ldmain.c:605
+#: ldmain.c:607
 #, c-format
 msgid "%s: total time in link: %ld.%06ld\n"
 msgstr ""
 
-#: ldmain.c:692
+#: ldmain.c:694
 msgid "%F%P: missing argument to -m\n"
 msgstr ""
 
-#: ldmain.c:742 ldmain.c:759 ldmain.c:779 ldmain.c:811 pe-dll.c:1395
+#: ldmain.c:744 ldmain.c:761 ldmain.c:781 ldmain.c:813 pe-dll.c:1396
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
 msgstr ""
 
-#: ldmain.c:746 ldmain.c:763 ldmain.c:783
+#: ldmain.c:748 ldmain.c:765 ldmain.c:785
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
 msgstr ""
 
-#: ldmain.c:797
+#: ldmain.c:799
 msgid "%X%P: error: duplicate retain-symbols-file\n"
 msgstr ""
 
-#: ldmain.c:841
+#: ldmain.c:843
 msgid "%F%P: bfd_hash_lookup for insertion failed: %E\n"
 msgstr ""
 
-#: ldmain.c:846
+#: ldmain.c:848
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
 msgstr ""
 
-#: ldmain.c:962
+#: ldmain.c:964
 msgid ""
 "Archive member included to satisfy reference by file (symbol)\n"
 "\n"
 msgstr ""
 
-#: ldmain.c:1071
+#: ldmain.c:1073
 msgid "%X%P: %C: multiple definition of `%pT'"
 msgstr ""
 
-#: ldmain.c:1074
+#: ldmain.c:1076
 msgid "; %D: first defined here"
 msgstr ""
 
-#: ldmain.c:1079
+#: ldmain.c:1081
 msgid "%P: disabling relaxation; it will not work with multiple definitions\n"
 msgstr ""
 
-#: ldmain.c:1132
+#: ldmain.c:1134
 msgid "%P: %pB: warning: definition of `%pT' overriding common from %pB\n"
 msgstr ""
 
-#: ldmain.c:1136
+#: ldmain.c:1138
 msgid "%P: %pB: warning: definition of `%pT' overriding common\n"
 msgstr ""
 
-#: ldmain.c:1145
+#: ldmain.c:1147
 msgid "%P: %pB: warning: common of `%pT' overridden by definition from %pB\n"
 msgstr ""
 
-#: ldmain.c:1149
+#: ldmain.c:1151
 msgid "%P: %pB: warning: common of `%pT' overridden by definition\n"
 msgstr ""
 
-#: ldmain.c:1158
+#: ldmain.c:1160
 msgid ""
 "%P: %pB: warning: common of `%pT' overridden by larger common from %pB\n"
 msgstr ""
 
-#: ldmain.c:1162
+#: ldmain.c:1164
 msgid "%P: %pB: warning: common of `%pT' overridden by larger common\n"
 msgstr ""
 
-#: ldmain.c:1169
+#: ldmain.c:1171
 msgid "%P: %pB: warning: common of `%pT' overriding smaller common from %pB\n"
 msgstr ""
 
-#: ldmain.c:1173
+#: ldmain.c:1175
 msgid "%P: %pB: warning: common of `%pT' overriding smaller common\n"
 msgstr ""
 
-#: ldmain.c:1180
+#: ldmain.c:1182
 msgid "%P: %pB and %pB: warning: multiple common of `%pT'\n"
 msgstr ""
 
-#: ldmain.c:1183
+#: ldmain.c:1185
 msgid "%P: %pB: warning: multiple common of `%pT'\n"
 msgstr ""
 
-#: ldmain.c:1202 ldmain.c:1238
+#: ldmain.c:1204 ldmain.c:1240
 msgid "%P: warning: global constructor %s used\n"
 msgstr ""
 
-#: ldmain.c:1248
+#: ldmain.c:1250
 msgid "%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"
 msgstr ""
 
 #. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1320 ldmain.c:1322 ldmain.c:1324 ldmain.c:1332 ldmain.c:1375
+#: ldmain.c:1322 ldmain.c:1324 ldmain.c:1326 ldmain.c:1334 ldmain.c:1377
 msgid "warning: "
 msgstr ""
 
-#: ldmain.c:1427
+#: ldmain.c:1467
 msgid "%X%P: %C: undefined reference to `%pT'\n"
 msgstr ""
 
-#: ldmain.c:1430
+#: ldmain.c:1470
 msgid "%P: %C: warning: undefined reference to `%pT'\n"
 msgstr ""
 
-#: ldmain.c:1436
+#: ldmain.c:1476
 msgid "%X%P: %D: more undefined references to `%pT' follow\n"
 msgstr ""
 
-#: ldmain.c:1439
+#: ldmain.c:1479
 msgid "%P: %D: warning: more undefined references to `%pT' follow\n"
 msgstr ""
 
-#: ldmain.c:1450
+#: ldmain.c:1490
 msgid "%X%P: %pB: undefined reference to `%pT'\n"
 msgstr ""
 
-#: ldmain.c:1453
+#: ldmain.c:1493
 msgid "%P: %pB: warning: undefined reference to `%pT'\n"
 msgstr ""
 
-#: ldmain.c:1459
+#: ldmain.c:1499
 msgid "%X%P: %pB: more undefined references to `%pT' follow\n"
 msgstr ""
 
-#: ldmain.c:1462
+#: ldmain.c:1502
 msgid "%P: %pB: warning: more undefined references to `%pT' follow\n"
 msgstr ""
 
-#: ldmain.c:1499
+#: ldmain.c:1539
 msgid " additional relocation overflows omitted from the output\n"
 msgstr ""
 
-#: ldmain.c:1512
+#: ldmain.c:1552
 #, c-format
 msgid " relocation truncated to fit: %s against undefined symbol `%pT'"
 msgstr ""
 
-#: ldmain.c:1518
+#: ldmain.c:1558
 #, c-format
 msgid ""
 " relocation truncated to fit: %s against symbol `%pT' defined in %pA section "
 "in %pB"
 msgstr ""
 
-#: ldmain.c:1531
+#: ldmain.c:1571
 #, c-format
 msgid " relocation truncated to fit: %s against `%pT'"
 msgstr ""
 
-#: ldmain.c:1547
+#: ldmain.c:1587
 msgid "%X%H: dangerous relocation: %s\n"
 msgstr ""
 
-#: ldmain.c:1561
+#: ldmain.c:1601
 msgid "%X%H: reloc refers to symbol `%pT' which is not being output\n"
 msgstr ""
 
-#: ldmain.c:1595
+#: ldmain.c:1635
 msgid "%P: %pB: reference to %s\n"
 msgstr ""
 
-#: ldmain.c:1597
+#: ldmain.c:1637
 msgid "%P: %pB: definition of %s\n"
 msgstr ""
 
-#: ldmisc.c:374
+#: ldmisc.c:375
 #, c-format
 msgid "%pB: in function `%pT':\n"
 msgstr ""
 
-#: ldmisc.c:512
+#: ldmisc.c:515
 #, c-format
 msgid "no symbol"
 msgstr ""
 
-#: ldmisc.c:619
+#: ldmisc.c:622
 msgid "%F%P: internal error %s %d\n"
 msgstr ""
 
-#: ldmisc.c:683
+#: ldmisc.c:686
 msgid "%P: internal error: aborting at %s:%d in %s\n"
 msgstr ""
 
-#: ldmisc.c:686
+#: ldmisc.c:689
 msgid "%P: internal error: aborting at %s:%d\n"
 msgstr ""
 
-#: ldmisc.c:688
+#: ldmisc.c:691
 msgid "%F%P: please report this bug\n"
 msgstr ""
 
@@ -1105,667 +1144,675 @@ msgstr ""
 msgid "%F%P: final link failed: %E\n"
 msgstr ""
 
-#: lexsup.c:103 lexsup.c:288
+#: lexsup.c:105 lexsup.c:290
 msgid "KEYWORD"
 msgstr ""
 
-#: lexsup.c:103
+#: lexsup.c:105
 msgid "Shared library control for HP/UX compatibility"
 msgstr ""
 
-#: lexsup.c:106
+#: lexsup.c:108
 msgid "ARCH"
 msgstr ""
 
-#: lexsup.c:106
+#: lexsup.c:108
 msgid "Set architecture"
 msgstr ""
 
-#: lexsup.c:108 lexsup.c:415
+#: lexsup.c:110 lexsup.c:422
 msgid "TARGET"
 msgstr ""
 
-#: lexsup.c:108
+#: lexsup.c:110
 msgid "Specify target for following input files"
 msgstr ""
 
-#: lexsup.c:111 lexsup.c:117 lexsup.c:174 lexsup.c:178 lexsup.c:214
-#: lexsup.c:227 lexsup.c:229 lexsup.c:433 lexsup.c:500 lexsup.c:513
-#: lexsup.c:517
+#: lexsup.c:113 lexsup.c:119 lexsup.c:176 lexsup.c:180 lexsup.c:216
+#: lexsup.c:229 lexsup.c:231 lexsup.c:440 lexsup.c:507 lexsup.c:520
+#: lexsup.c:524
 msgid "FILE"
 msgstr ""
 
-#: lexsup.c:111
+#: lexsup.c:113
 msgid "Read MRI format linker script"
 msgstr ""
 
-#: lexsup.c:113
+#: lexsup.c:115
 msgid "Force common symbols to be defined"
 msgstr ""
 
-#: lexsup.c:117
+#: lexsup.c:119
 msgid "Write dependency file"
 msgstr ""
 
-#: lexsup.c:120
+#: lexsup.c:122
 msgid "Force group members out of groups"
 msgstr ""
 
-#: lexsup.c:122 lexsup.c:477 lexsup.c:479 lexsup.c:481 lexsup.c:483
-#: lexsup.c:485 lexsup.c:487
+#: lexsup.c:124 lexsup.c:484 lexsup.c:486 lexsup.c:488 lexsup.c:490
+#: lexsup.c:492 lexsup.c:494
 msgid "ADDRESS"
 msgstr ""
 
-#: lexsup.c:122
+#: lexsup.c:124
 msgid "Set start address"
 msgstr ""
 
-#: lexsup.c:124
+#: lexsup.c:126
 msgid "Export all dynamic symbols"
 msgstr ""
 
-#: lexsup.c:126
+#: lexsup.c:128
 msgid "Undo the effect of --export-dynamic"
 msgstr ""
 
-#: lexsup.c:128
+#: lexsup.c:130
 msgid "Enable support of non-contiguous memory regions"
 msgstr ""
 
-#: lexsup.c:130
+#: lexsup.c:132
 msgid ""
 "Enable warnings when --enable-non-contiguous-regions may cause unexpected "
 "behaviour"
 msgstr ""
 
-#: lexsup.c:132
+#: lexsup.c:134
 msgid "Link big-endian objects"
 msgstr ""
 
-#: lexsup.c:134
+#: lexsup.c:136
 msgid "Link little-endian objects"
 msgstr ""
 
-#: lexsup.c:136 lexsup.c:139
+#: lexsup.c:138 lexsup.c:141
 msgid "SHLIB"
 msgstr ""
 
-#: lexsup.c:136
+#: lexsup.c:138
 msgid "Auxiliary filter for shared object symbol table"
 msgstr ""
 
-#: lexsup.c:139
+#: lexsup.c:141
 msgid "Filter for shared object symbol table"
 msgstr ""
 
-#: lexsup.c:142
+#: lexsup.c:144
 msgid "Ignored"
 msgstr ""
 
-#: lexsup.c:144
+#: lexsup.c:146
 msgid "SIZE"
 msgstr ""
 
-#: lexsup.c:144
+#: lexsup.c:146
 msgid "Small data size (if no size, same as --shared)"
 msgstr ""
 
-#: lexsup.c:147
+#: lexsup.c:149
 msgid "FILENAME"
 msgstr ""
 
-#: lexsup.c:147
+#: lexsup.c:149
 msgid "Set internal name of shared library"
 msgstr ""
 
-#: lexsup.c:149
+#: lexsup.c:151
 msgid "PROGRAM"
 msgstr ""
 
-#: lexsup.c:149
+#: lexsup.c:151
 msgid "Set PROGRAM as the dynamic linker to use"
 msgstr ""
 
-#: lexsup.c:152
+#: lexsup.c:154
 msgid "Produce an executable with no program interpreter header"
 msgstr ""
 
-#: lexsup.c:155
+#: lexsup.c:157
 msgid "LIBNAME"
 msgstr ""
 
-#: lexsup.c:155
+#: lexsup.c:157
 msgid "Search for library LIBNAME"
 msgstr ""
 
-#: lexsup.c:157
+#: lexsup.c:159
 msgid "DIRECTORY"
 msgstr ""
 
-#: lexsup.c:157
+#: lexsup.c:159
 msgid "Add DIRECTORY to library search path"
 msgstr ""
 
-#: lexsup.c:160
+#: lexsup.c:162
 msgid "Override the default sysroot location"
 msgstr ""
 
-#: lexsup.c:162
+#: lexsup.c:164
 msgid "EMULATION"
 msgstr ""
 
-#: lexsup.c:162
+#: lexsup.c:164
 msgid "Set emulation"
 msgstr ""
 
-#: lexsup.c:164
+#: lexsup.c:166
 msgid "Print map file on standard output"
 msgstr ""
 
-#: lexsup.c:166
+#: lexsup.c:168
 msgid "Do not page align data"
 msgstr ""
 
-#: lexsup.c:168
+#: lexsup.c:170
 msgid "Do not page align data, do not make text readonly"
 msgstr ""
 
-#: lexsup.c:171
+#: lexsup.c:173
 msgid "Page align data, make text readonly"
 msgstr ""
 
-#: lexsup.c:174
+#: lexsup.c:176
 msgid "Set output file name"
 msgstr ""
 
-#: lexsup.c:176
+#: lexsup.c:178
 msgid "Optimize output file"
 msgstr ""
 
-#: lexsup.c:178
+#: lexsup.c:180
 msgid "Generate import library"
 msgstr ""
 
-#: lexsup.c:181 lexsup.c:192
+#: lexsup.c:183 lexsup.c:194
 msgid "PLUGIN"
 msgstr ""
 
-#: lexsup.c:181
+#: lexsup.c:183
 msgid "Load named plugin"
 msgstr ""
 
-#: lexsup.c:183 lexsup.c:194
+#: lexsup.c:185 lexsup.c:196
 msgid "ARG"
 msgstr ""
 
-#: lexsup.c:183
+#: lexsup.c:185
 msgid "Send arg to last-loaded plugin"
 msgstr ""
 
-#: lexsup.c:185 lexsup.c:188
+#: lexsup.c:187 lexsup.c:190
 msgid "Ignored for GCC LTO option compatibility"
 msgstr ""
 
-#: lexsup.c:192
+#: lexsup.c:194
 msgid "Load named plugin (ignored)"
 msgstr ""
 
-#: lexsup.c:194
+#: lexsup.c:196
 msgid "Send arg to last-loaded plugin (ignored)"
 msgstr ""
 
-#: lexsup.c:197
+#: lexsup.c:199
 msgid "Ignored for GCC linker option compatibility"
 msgstr ""
 
-#: lexsup.c:200 lexsup.c:203
+#: lexsup.c:202 lexsup.c:205
 msgid "Ignored for gold option compatibility"
 msgstr ""
 
-#: lexsup.c:206
+#: lexsup.c:208
 msgid "Ignored for SVR4 compatibility"
 msgstr ""
 
-#: lexsup.c:210
+#: lexsup.c:212
 msgid "Generate relocatable output"
 msgstr ""
 
-#: lexsup.c:214
+#: lexsup.c:216
 msgid "Just link symbols (if directory, same as --rpath)"
 msgstr ""
 
-#: lexsup.c:217
+#: lexsup.c:219
 msgid "Strip all symbols"
 msgstr ""
 
-#: lexsup.c:219
+#: lexsup.c:221
 msgid "Strip debugging symbols"
 msgstr ""
 
-#: lexsup.c:221
+#: lexsup.c:223
 msgid "Strip symbols in discarded sections"
 msgstr ""
 
-#: lexsup.c:223
+#: lexsup.c:225
 msgid "Do not strip symbols in discarded sections"
 msgstr ""
 
-#: lexsup.c:225
+#: lexsup.c:227
 msgid "Trace file opens"
 msgstr ""
 
-#: lexsup.c:227
+#: lexsup.c:229
 msgid "Read linker script"
 msgstr ""
 
-#: lexsup.c:229
+#: lexsup.c:231
 msgid "Read default linker script"
 msgstr ""
 
-#: lexsup.c:233 lexsup.c:236 lexsup.c:254 lexsup.c:343 lexsup.c:367
-#: lexsup.c:470 lexsup.c:503 lexsup.c:515 lexsup.c:553 lexsup.c:556
+#: lexsup.c:235 lexsup.c:238 lexsup.c:256 lexsup.c:345 lexsup.c:369
+#: lexsup.c:477 lexsup.c:510 lexsup.c:522 lexsup.c:560 lexsup.c:563
 msgid "SYMBOL"
 msgstr ""
 
-#: lexsup.c:233
+#: lexsup.c:235
 msgid "Start with undefined reference to SYMBOL"
 msgstr ""
 
-#: lexsup.c:236
+#: lexsup.c:238
 msgid "Require SYMBOL be defined in the final output"
 msgstr ""
 
-#: lexsup.c:239
+#: lexsup.c:241
 msgid "[=SECTION]"
 msgstr ""
 
-#: lexsup.c:240
+#: lexsup.c:242
 msgid "Don't merge input [SECTION | orphan] sections"
 msgstr ""
 
-#: lexsup.c:242
+#: lexsup.c:244
 msgid "Build global constructor/destructor tables"
 msgstr ""
 
-#: lexsup.c:244
+#: lexsup.c:246
 msgid "Print version information"
 msgstr ""
 
-#: lexsup.c:246
+#: lexsup.c:248
 msgid "Print version and emulation information"
 msgstr ""
 
-#: lexsup.c:248
+#: lexsup.c:250
 msgid "Discard all local symbols"
 msgstr ""
 
-#: lexsup.c:250
+#: lexsup.c:252
 msgid "Discard temporary local symbols (default)"
 msgstr ""
 
-#: lexsup.c:252
+#: lexsup.c:254
 msgid "Don't discard any local symbols"
 msgstr ""
 
-#: lexsup.c:254
+#: lexsup.c:256
 msgid "Trace mentions of SYMBOL"
 msgstr ""
 
-#: lexsup.c:256 lexsup.c:435 lexsup.c:437
+#: lexsup.c:258 lexsup.c:442 lexsup.c:444
 msgid "PATH"
 msgstr ""
 
-#: lexsup.c:256
+#: lexsup.c:258
 msgid "Default search path for Solaris compatibility"
 msgstr ""
 
-#: lexsup.c:259
+#: lexsup.c:261
 msgid "Start a group"
 msgstr ""
 
-#: lexsup.c:261
+#: lexsup.c:263
 msgid "End a group"
 msgstr ""
 
-#: lexsup.c:265
+#: lexsup.c:267
 msgid "Accept input files whose architecture cannot be determined"
 msgstr ""
 
-#: lexsup.c:269
+#: lexsup.c:271
 msgid "Reject input files whose architecture is unknown"
 msgstr ""
 
-#: lexsup.c:281
+#: lexsup.c:283
 msgid "Only set DT_NEEDED for following dynamic libs if used"
 msgstr ""
 
-#: lexsup.c:284
+#: lexsup.c:286
 msgid ""
 "Always set DT_NEEDED for dynamic libraries mentioned on\n"
 "                                the command line"
 msgstr ""
 
-#: lexsup.c:288
+#: lexsup.c:290
 msgid "Ignored for SunOS compatibility"
 msgstr ""
 
-#: lexsup.c:290
+#: lexsup.c:292
 msgid "Link against shared libraries"
 msgstr ""
 
-#: lexsup.c:296
+#: lexsup.c:298
 msgid "Do not link against shared libraries"
 msgstr ""
 
-#: lexsup.c:304
+#: lexsup.c:306
 msgid "Bind global references locally"
 msgstr ""
 
-#: lexsup.c:306
+#: lexsup.c:308
 msgid "Bind global function references locally"
 msgstr ""
 
-#: lexsup.c:308
+#: lexsup.c:310
 msgid "Check section addresses for overlaps (default)"
 msgstr ""
 
-#: lexsup.c:311
+#: lexsup.c:313
 msgid "Do not check section addresses for overlaps"
 msgstr ""
 
-#: lexsup.c:315
+#: lexsup.c:317
 msgid "Copy DT_NEEDED links mentioned inside DSOs that follow"
 msgstr ""
 
-#: lexsup.c:319
+#: lexsup.c:321
 msgid "Do not copy DT_NEEDED links mentioned inside DSOs that follow"
 msgstr ""
 
-#: lexsup.c:323
+#: lexsup.c:325
 msgid "Output cross reference table"
 msgstr ""
 
-#: lexsup.c:325
+#: lexsup.c:327
 msgid "SYMBOL=EXPRESSION"
 msgstr ""
 
-#: lexsup.c:325
+#: lexsup.c:327
 msgid "Define a symbol"
 msgstr ""
 
-#: lexsup.c:327
+#: lexsup.c:329
 msgid "[=STYLE]"
 msgstr ""
 
-#: lexsup.c:327
+#: lexsup.c:329
 msgid "Demangle symbol names [using STYLE]"
 msgstr ""
 
-#: lexsup.c:331
+#: lexsup.c:333
 msgid ""
 "Do not allow multiple definitions with symbols included\n"
 "           in filename invoked by -R or --just-symbols"
 msgstr ""
 
-#: lexsup.c:335
+#: lexsup.c:337
 msgid "Generate embedded relocs"
 msgstr ""
 
-#: lexsup.c:337
+#: lexsup.c:339
 msgid "Treat warnings as errors"
 msgstr ""
 
-#: lexsup.c:340
+#: lexsup.c:342
 msgid "Do not treat warnings as errors (default)"
 msgstr ""
 
-#: lexsup.c:343
+#: lexsup.c:345
 msgid "Call SYMBOL at unload-time"
 msgstr ""
 
-#: lexsup.c:345
+#: lexsup.c:347
 msgid "Force generation of file with .exe suffix"
 msgstr ""
 
-#: lexsup.c:347
+#: lexsup.c:349
 msgid "Remove unused sections (on some targets)"
 msgstr ""
 
-#: lexsup.c:350
+#: lexsup.c:352
 msgid "Don't remove unused sections (default)"
 msgstr ""
 
-#: lexsup.c:353
+#: lexsup.c:355
 msgid "List removed unused sections on stderr"
 msgstr ""
 
-#: lexsup.c:356
+#: lexsup.c:358
 msgid "Do not list removed unused sections"
 msgstr ""
 
-#: lexsup.c:359
+#: lexsup.c:361
 msgid "Keep exported symbols when removing unused sections"
 msgstr ""
 
-#: lexsup.c:362
+#: lexsup.c:364
 msgid "Set default hash table size close to <NUMBER>"
 msgstr ""
 
-#: lexsup.c:365
+#: lexsup.c:367
 msgid "Print option help"
 msgstr ""
 
-#: lexsup.c:367
+#: lexsup.c:369
 msgid "Call SYMBOL at load-time"
 msgstr ""
 
-#: lexsup.c:369
+#: lexsup.c:371
 msgid "FILE/DIR"
 msgstr ""
 
-#: lexsup.c:369
+#: lexsup.c:371
 msgid "Write a linker map to FILE or DIR/<outputname>.map"
 msgstr ""
 
-#: lexsup.c:371
+#: lexsup.c:373
 msgid "Do not define Common storage"
 msgstr ""
 
-#: lexsup.c:373
+#: lexsup.c:375
 msgid "Do not demangle symbol names"
 msgstr ""
 
-#: lexsup.c:375
+#: lexsup.c:377
 msgid "Use less memory and more disk I/O"
 msgstr ""
 
-#: lexsup.c:377
+#: lexsup.c:379
 msgid "Do not allow unresolved references in object files"
 msgstr ""
 
-#: lexsup.c:380
+#: lexsup.c:382
 msgid "Allow unresolved references in shared libraries"
 msgstr ""
 
-#: lexsup.c:384
+#: lexsup.c:386
 msgid "Do not allow unresolved references in shared libs"
 msgstr ""
 
-#: lexsup.c:388
+#: lexsup.c:390
 msgid "Allow multiple definitions"
 msgstr ""
 
-#: lexsup.c:390
+#: lexsup.c:394
+msgid "SCRIPT"
+msgstr ""
+
+#: lexsup.c:394
+msgid "Provide a script to help with undefined symbol errors"
+msgstr ""
+
+#: lexsup.c:397
 msgid "Disallow undefined version"
 msgstr ""
 
-#: lexsup.c:392
+#: lexsup.c:399
 msgid "Create default symbol version"
 msgstr ""
 
-#: lexsup.c:395
+#: lexsup.c:402
 msgid "Create default symbol version for imported symbols"
 msgstr ""
 
-#: lexsup.c:398
+#: lexsup.c:405
 msgid "Don't warn about mismatched input files"
 msgstr ""
 
-#: lexsup.c:401
+#: lexsup.c:408
 msgid "Don't warn on finding an incompatible library"
 msgstr ""
 
-#: lexsup.c:404
+#: lexsup.c:411
 msgid "Turn off --whole-archive"
 msgstr ""
 
-#: lexsup.c:406
+#: lexsup.c:413
 msgid "Create an output file even if errors occur"
 msgstr ""
 
-#: lexsup.c:411
+#: lexsup.c:418
 msgid ""
 "Only use library directories specified on\n"
 "                                the command line"
 msgstr ""
 
-#: lexsup.c:415
+#: lexsup.c:422
 msgid "Specify target of output file"
 msgstr ""
 
-#: lexsup.c:418
+#: lexsup.c:425
 msgid "Print default output format"
 msgstr ""
 
-#: lexsup.c:420
+#: lexsup.c:427
 msgid "Print current sysroot"
 msgstr ""
 
-#: lexsup.c:422
+#: lexsup.c:429
 msgid "Ignored for Linux compatibility"
 msgstr ""
 
-#: lexsup.c:425
+#: lexsup.c:432
 msgid "Reduce memory overheads, possibly taking much longer"
 msgstr ""
 
-#: lexsup.c:428
+#: lexsup.c:435
 msgid "Reduce code size by using target specific optimizations"
 msgstr ""
 
-#: lexsup.c:430
+#: lexsup.c:437
 msgid "Do not use relaxation techniques to reduce code size"
 msgstr ""
 
-#: lexsup.c:433
+#: lexsup.c:440
 msgid "Keep only symbols listed in FILE"
 msgstr ""
 
-#: lexsup.c:435
+#: lexsup.c:442
 msgid "Set runtime shared library search path"
 msgstr ""
 
-#: lexsup.c:437
+#: lexsup.c:444
 msgid "Set link time shared library search path"
 msgstr ""
 
-#: lexsup.c:440
+#: lexsup.c:447
 msgid "Create a shared library"
 msgstr ""
 
-#: lexsup.c:444
+#: lexsup.c:451
 msgid "Create a position independent executable"
 msgstr ""
 
-#: lexsup.c:448
+#: lexsup.c:455
 msgid "[=ascending|descending]"
 msgstr ""
 
-#: lexsup.c:449
+#: lexsup.c:456
 msgid "Sort common symbols by alignment [in specified order]"
 msgstr ""
 
-#: lexsup.c:454
+#: lexsup.c:461
 msgid "name|alignment"
 msgstr ""
 
-#: lexsup.c:455
+#: lexsup.c:462
 msgid "Sort sections by name or maximum alignment"
 msgstr ""
 
-#: lexsup.c:457
+#: lexsup.c:464
 msgid "COUNT"
 msgstr ""
 
-#: lexsup.c:457
+#: lexsup.c:464
 msgid "How many tags to reserve in .dynamic section"
 msgstr ""
 
-#: lexsup.c:460
+#: lexsup.c:467
 msgid "[=SIZE]"
 msgstr ""
 
-#: lexsup.c:460
+#: lexsup.c:467
 msgid "Split output sections every SIZE octets"
 msgstr ""
 
-#: lexsup.c:463
+#: lexsup.c:470
 msgid "[=COUNT]"
 msgstr ""
 
-#: lexsup.c:463
+#: lexsup.c:470
 msgid "Split output sections every COUNT relocs"
 msgstr ""
 
-#: lexsup.c:466
+#: lexsup.c:473
 msgid "Print memory usage statistics"
 msgstr ""
 
-#: lexsup.c:468
+#: lexsup.c:475
 msgid "Display target specific options"
 msgstr ""
 
-#: lexsup.c:470
+#: lexsup.c:477
 msgid "Do task level linking"
 msgstr ""
 
-#: lexsup.c:472
+#: lexsup.c:479
 msgid "Use same format as native linker"
 msgstr ""
 
-#: lexsup.c:474
+#: lexsup.c:481
 msgid "SECTION=ADDRESS"
 msgstr ""
 
-#: lexsup.c:474
+#: lexsup.c:481
 msgid "Set address of named section"
 msgstr ""
 
-#: lexsup.c:477
+#: lexsup.c:484
 msgid "Set address of .bss section"
 msgstr ""
 
-#: lexsup.c:479
+#: lexsup.c:486
 msgid "Set address of .data section"
 msgstr ""
 
-#: lexsup.c:481
+#: lexsup.c:488
 msgid "Set address of .text section"
 msgstr ""
 
-#: lexsup.c:483
+#: lexsup.c:490
 msgid "Set address of text segment"
 msgstr ""
 
-#: lexsup.c:485
+#: lexsup.c:492
 msgid "Set address of rodata segment"
 msgstr ""
 
-#: lexsup.c:487
+#: lexsup.c:494
 msgid "Set address of ldata segment"
 msgstr ""
 
-#: lexsup.c:490
+#: lexsup.c:497
 msgid ""
 "How to handle unresolved symbols.  <method> is:\n"
 "                                ignore-all, report-all, ignore-in-object-"
@@ -1773,174 +1820,197 @@ msgid ""
 "                                ignore-in-shared-libs"
 msgstr ""
 
-#: lexsup.c:495
+#: lexsup.c:502
 msgid "[=NUMBER]"
 msgstr ""
 
-#: lexsup.c:496
+#: lexsup.c:503
 msgid "Output lots of information during link"
 msgstr ""
 
-#: lexsup.c:500
+#: lexsup.c:507
 msgid "Read version information script"
 msgstr ""
 
-#: lexsup.c:503
+#: lexsup.c:510
 msgid ""
 "Take export symbols list from .exports, using\n"
 "                                SYMBOL as the version."
 msgstr ""
 
-#: lexsup.c:507
+#: lexsup.c:514
 msgid "Add data symbols to dynamic list"
 msgstr ""
 
-#: lexsup.c:509
+#: lexsup.c:516
 msgid "Use C++ operator new/delete dynamic list"
 msgstr ""
 
-#: lexsup.c:511
+#: lexsup.c:518
 msgid "Use C++ typeinfo dynamic list"
 msgstr ""
 
-#: lexsup.c:513
+#: lexsup.c:520
 msgid "Read dynamic list"
 msgstr ""
 
-#: lexsup.c:515
+#: lexsup.c:522
 msgid "Export the specified symbol"
 msgstr ""
 
-#: lexsup.c:517
+#: lexsup.c:524
 msgid "Read export dynamic symbol list"
 msgstr ""
 
-#: lexsup.c:519
+#: lexsup.c:526
 msgid "Warn about duplicate common symbols"
 msgstr ""
 
-#: lexsup.c:521
+#: lexsup.c:528
 msgid "Warn if global constructors/destructors are seen"
 msgstr ""
 
-#: lexsup.c:524
+#: lexsup.c:531
 msgid "Warn if the multiple GP values are used"
 msgstr ""
 
-#: lexsup.c:526
+#: lexsup.c:533
 msgid "Warn only once per undefined symbol"
 msgstr ""
 
-#: lexsup.c:528
+#: lexsup.c:535
 msgid "Warn if start of section changes due to alignment"
 msgstr ""
 
-#: lexsup.c:533
+#: lexsup.c:540
 msgid "Warn if output has DT_TEXTREL (default)"
 msgstr ""
 
-#: lexsup.c:535
+#: lexsup.c:542
 msgid "Warn if output has DT_TEXTREL"
 msgstr ""
 
-#: lexsup.c:541
+#: lexsup.c:548
 msgid "Warn if an object has alternate ELF machine code"
 msgstr ""
 
-#: lexsup.c:545
+#: lexsup.c:552
 msgid "Report unresolved symbols as warnings"
 msgstr ""
 
-#: lexsup.c:548
+#: lexsup.c:555
 msgid "Report unresolved symbols as errors"
 msgstr ""
 
-#: lexsup.c:550
+#: lexsup.c:557
 msgid "Include all objects from following archives"
 msgstr ""
 
-#: lexsup.c:553
+#: lexsup.c:560
 msgid "Use wrapper functions for SYMBOL"
 msgstr ""
 
-#: lexsup.c:557
+#: lexsup.c:564
 msgid "Unresolved SYMBOL will not cause an error or warning"
 msgstr ""
 
-#: lexsup.c:559
+#: lexsup.c:566
 msgid "Push state of flags governing input file handling"
 msgstr ""
 
-#: lexsup.c:562
+#: lexsup.c:569
 msgid "Pop state of flags governing input file handling"
 msgstr ""
 
-#: lexsup.c:565
+#: lexsup.c:572
 msgid "Report target memory usage"
 msgstr ""
 
-#: lexsup.c:567
+#: lexsup.c:574
 msgid "=MODE"
 msgstr ""
 
-#: lexsup.c:567
+#: lexsup.c:574
 msgid "Control how orphan sections are handled."
 msgstr ""
 
-#: lexsup.c:570
+#: lexsup.c:577
 msgid "Show discarded sections in map file output (default)"
 msgstr ""
 
-#: lexsup.c:573
+#: lexsup.c:580
 msgid "Do not show discarded sections in map file output"
 msgstr ""
 
-#: lexsup.c:751
+#: lexsup.c:583
+msgid "Emit names and types of static variables in CTF"
+msgstr ""
+
+#: lexsup.c:586
+msgid "Do not emit names and types of static variables in CTF"
+msgstr ""
+
+#: lexsup.c:590
+msgid ""
+"How to share CTF types between translation units.\n"
+"                                <method> is: share-unconflicted (default),\n"
+"                                             share-duplicated"
+msgstr ""
+
+#: lexsup.c:754
+msgid "%F%P: Error: unable to disambiguate: %s (did you mean -%s ?)\n"
+msgstr ""
+
+#: lexsup.c:757
+msgid "%P: Warning: grouped short command line options are deprecated: %s\n"
+msgstr ""
+
+#: lexsup.c:784
 msgid "%P: %s: missing argument\n"
 msgstr ""
 
-#: lexsup.c:756
+#: lexsup.c:789
 msgid "%P: unrecognized option '%s'\n"
 msgstr ""
 
-#: lexsup.c:761
+#: lexsup.c:794
 msgid "%F%P: use the --help option for usage information\n"
 msgstr ""
 
-#: lexsup.c:780
+#: lexsup.c:813
 msgid "%F%P: unrecognized -a option `%s'\n"
 msgstr ""
 
-#: lexsup.c:793
+#: lexsup.c:826
 msgid "%F%P: unrecognized -assert option `%s'\n"
 msgstr ""
 
-#: lexsup.c:837
+#: lexsup.c:870
 msgid "%F%P: unknown demangling style `%s'\n"
 msgstr ""
 
-#: lexsup.c:913 lexsup.c:1372 eaarch64cloudabi.c:803 eaarch64cloudabib.c:803
-#: eaarch64elf.c:798 eaarch64elf32.c:798 eaarch64elf32b.c:798
-#: eaarch64elfb.c:798 eaarch64fbsd.c:803 eaarch64fbsdb.c:803
-#: eaarch64linux.c:803 eaarch64linux32.c:803 eaarch64linux32b.c:803
-#: eaarch64linuxb.c:803 earmelf.c:1064 earmelf_fbsd.c:1064
-#: earmelf_fuchsia.c:1069 earmelf_linux.c:1069 earmelf_linux_eabi.c:1069
-#: earmelf_linux_fdpiceabi.c:1069 earmelf_nacl.c:1069 earmelf_nbsd.c:1064
-#: earmelf_phoenix.c:1069 earmelf_vxworks.c:1100 earmelfb.c:1064
-#: earmelfb_fbsd.c:1064 earmelfb_fuchsia.c:1069 earmelfb_linux.c:1069
-#: earmelfb_linux_eabi.c:1069 earmelfb_linux_fdpiceabi.c:1069
-#: earmelfb_nacl.c:1069 earmelfb_nbsd.c:1064 earmnto.c:1039 earmsymbian.c:1064
-#: ecskyelf.c:530 ecskyelf_linux.c:693 eelf32metag.c:690 eelf64lppc.c:1149
-#: eelf64ppc.c:1149 eelf64ppc_fbsd.c:1149 ehppaelf.c:550 ehppalinux.c:728
-#: ehppanbsd.c:728 ehppaobsd.c:728
+#: lexsup.c:946 lexsup.c:1414 eaarch64cloudabi.c:807 eaarch64cloudabib.c:807
+#: eaarch64elf.c:802 eaarch64elf32.c:802 eaarch64elf32b.c:802
+#: eaarch64elfb.c:802 eaarch64fbsd.c:807 eaarch64fbsdb.c:807
+#: eaarch64linux.c:807 eaarch64linux32.c:807 eaarch64linux32b.c:807
+#: eaarch64linuxb.c:807 earmelf.c:1068 earmelf_fbsd.c:1068
+#: earmelf_fuchsia.c:1073 earmelf_linux.c:1073 earmelf_linux_eabi.c:1073
+#: earmelf_linux_fdpiceabi.c:1073 earmelf_nacl.c:1073 earmelf_nbsd.c:1068
+#: earmelf_phoenix.c:1073 earmelf_vxworks.c:1104 earmelfb.c:1068
+#: earmelfb_fbsd.c:1068 earmelfb_fuchsia.c:1073 earmelfb_linux.c:1073
+#: earmelfb_linux_eabi.c:1073 earmelfb_linux_fdpiceabi.c:1073
+#: earmelfb_nacl.c:1073 earmelfb_nbsd.c:1068 earmnto.c:1043 earmsymbian.c:1068
+#: ecskyelf.c:534 ecskyelf_linux.c:697 eelf32metag.c:694 eelf64lppc.c:1171
+#: eelf64lppc_fbsd.c:1171 eelf64ppc.c:1171 eelf64ppc_fbsd.c:1171 ehppaelf.c:554
+#: ehppalinux.c:732 ehppanbsd.c:732 ehppaobsd.c:732
 msgid "%F%P: invalid number `%s'\n"
 msgstr ""
 
-#: lexsup.c:1009
+#: lexsup.c:1042
 msgid "%F%P: bad --unresolved-symbols option: %s\n"
 msgstr ""
 
-#: lexsup.c:1077
+#: lexsup.c:1119
 msgid "%F%P: bad -plugin-opt option\n"
 msgstr ""
 
@@ -1952,147 +2022,159 @@ msgstr ""
 #. an error message here.  We cannot just make this a warning,
 #. increment optind, and continue because getopt is too confused
 #. and will seg-fault the next time around.
-#: lexsup.c:1094
+#: lexsup.c:1136
 msgid "%F%P: unrecognised option: %s\n"
 msgstr ""
 
-#: lexsup.c:1097 lexsup.c:1207 lexsup.c:1225 lexsup.c:1341
+#: lexsup.c:1139 lexsup.c:1249 lexsup.c:1267 lexsup.c:1383
 msgid "%F%P: -r and %s may not be used together\n"
 msgstr ""
 
-#: lexsup.c:1219
+#: lexsup.c:1261
 msgid "%F%P: -shared not supported\n"
 msgstr ""
 
-#: lexsup.c:1230
+#: lexsup.c:1272
 msgid "%F%P: -pie not supported\n"
 msgstr ""
 
-#: lexsup.c:1236
+#: lexsup.c:1278
 msgid "%P: SONAME must not be empty string; keeping previous one\n"
 msgstr ""
 
-#: lexsup.c:1242
+#: lexsup.c:1284
 msgid "descending"
 msgstr ""
 
-#: lexsup.c:1244
+#: lexsup.c:1286
 msgid "ascending"
 msgstr ""
 
-#: lexsup.c:1247
+#: lexsup.c:1289
 msgid "%F%P: invalid common section sorting option: %s\n"
 msgstr ""
 
-#: lexsup.c:1251
+#: lexsup.c:1293
 msgid "name"
 msgstr ""
 
-#: lexsup.c:1253
+#: lexsup.c:1295
 msgid "alignment"
 msgstr ""
 
-#: lexsup.c:1256
+#: lexsup.c:1298
 msgid "%F%P: invalid section sorting option: %s\n"
 msgstr ""
 
-#: lexsup.c:1290
+#: lexsup.c:1332
 msgid "%F%P: invalid argument to option \"--section-start\"\n"
 msgstr ""
 
-#: lexsup.c:1297
+#: lexsup.c:1339
 msgid "%F%P: missing argument(s) to option \"--section-start\"\n"
 msgstr ""
 
-#: lexsup.c:1562
+#: lexsup.c:1604
 msgid "%F%P: group ended before it began (--help for usage)\n"
 msgstr ""
 
-#: lexsup.c:1590
+#: lexsup.c:1632
 msgid "%X%P: --hash-size needs a numeric argument\n"
 msgstr ""
 
-#: lexsup.c:1602
+#: lexsup.c:1644
 msgid "%F%P: no state pushed before popping\n"
 msgstr ""
 
-#: lexsup.c:1625
+#: lexsup.c:1667
 msgid "%F%P: invalid argument to option \"--orphan-handling\"\n"
 msgstr ""
 
-#: lexsup.c:1648
+#: lexsup.c:1697
+msgid "%F%P: bad --ctf-share-types option: %s\n"
+msgstr ""
+
+#: lexsup.c:1715
 msgid "%P: no file/directory name provided for map output; ignored\n"
 msgstr ""
 
-#. If this alloc fails then something is probably very
+#: lexsup.c:1743
+msgid "%P: cannot stat linker map file: %E\n"
+msgstr ""
+
+#: lexsup.c:1755
+msgid "%P: linker map file is not a regular file\n"
+msgstr ""
+
+#. If the asprintf failed then something is probably very
 #. wrong.  Better to halt now rather than continue on
 #. into more problems.
-#: lexsup.c:1669
+#: lexsup.c:1766
 msgid "%P%F: cannot create name for linker map file: %E\n"
 msgstr ""
 
-#: lexsup.c:1680
+#: lexsup.c:1777
 msgid "%P: SONAME must not be empty string; ignored\n"
 msgstr ""
 
-#: lexsup.c:1686
+#: lexsup.c:1783
 msgid "%P: missing --end-group; added as last command line option\n"
 msgstr ""
 
-#: lexsup.c:1794
+#: lexsup.c:1891
 msgid "%F%P: -F may not be used without -shared\n"
 msgstr ""
 
-#: lexsup.c:1796
+#: lexsup.c:1893
 msgid "%F%P: -f may not be used without -shared\n"
 msgstr ""
 
-#: lexsup.c:1837 lexsup.c:1850
+#: lexsup.c:1934 lexsup.c:1947
 msgid "%F%P: invalid hex number `%s'\n"
 msgstr ""
 
-#: lexsup.c:1880
+#: lexsup.c:1977
 #, c-format
 msgid "  --audit=AUDITLIB            Specify a library to use for auditing\n"
 msgstr ""
 
-#: lexsup.c:1882
+#: lexsup.c:1979
 #, c-format
 msgid "  -Bgroup                     Selects group name lookup rules for DSO\n"
 msgstr ""
 
-#: lexsup.c:1884
+#: lexsup.c:1981
 #, c-format
 msgid "  --disable-new-dtags         Disable new dynamic tags\n"
 msgstr ""
 
-#: lexsup.c:1886
+#: lexsup.c:1983
 #, c-format
 msgid "  --enable-new-dtags          Enable new dynamic tags\n"
 msgstr ""
 
-#: lexsup.c:1888
+#: lexsup.c:1985
 #, c-format
 msgid "  --eh-frame-hdr              Create .eh_frame_hdr section\n"
 msgstr ""
 
-#: lexsup.c:1890
+#: lexsup.c:1987
 #, c-format
 msgid "  --no-eh-frame-hdr           Do not create .eh_frame_hdr section\n"
 msgstr ""
 
-#: lexsup.c:1892
+#: lexsup.c:1989
 #, c-format
 msgid "  --exclude-libs=LIBS         Make all symbols in LIBS hidden\n"
 msgstr ""
 
-#: lexsup.c:1894
+#: lexsup.c:1991
 #, c-format
 msgid ""
 "  --hash-style=STYLE          Set hash style to sysv/gnu/both.  Default: "
 msgstr ""
 
-#: lexsup.c:1913
+#: lexsup.c:2010
 #, c-format
 msgid ""
 "  -P AUDITLIB, --depaudit=AUDITLIB\n"
@@ -2100,20 +2182,20 @@ msgid ""
 "dependencies\n"
 msgstr ""
 
-#: lexsup.c:1916
+#: lexsup.c:2013
 #, c-format
 msgid ""
 "  -z combreloc                Merge dynamic relocs into one section and "
 "sort\n"
 msgstr ""
 
-#: lexsup.c:1918
+#: lexsup.c:2015
 #, c-format
 msgid ""
 "  -z nocombreloc              Don't merge dynamic relocs into one section\n"
 msgstr ""
 
-#: lexsup.c:1920
+#: lexsup.c:2017
 #, c-format
 msgid ""
 "  -z global                   Make symbols in DSO available for "
@@ -2121,236 +2203,247 @@ msgid ""
 "                                loaded objects\n"
 msgstr ""
 
-#: lexsup.c:1923
+#: lexsup.c:2020
 #, c-format
 msgid ""
 "  -z initfirst                Mark DSO to be initialized first at runtime\n"
 msgstr ""
 
-#: lexsup.c:1925
+#: lexsup.c:2022
 #, c-format
 msgid ""
 "  -z interpose                Mark object to interpose all DSOs but "
 "executable\n"
 msgstr ""
 
-#: lexsup.c:1927
+#: lexsup.c:2024
 #, c-format
 msgid ""
 "  -z lazy                     Mark object lazy runtime binding (default)\n"
 msgstr ""
 
-#: lexsup.c:1929
+#: lexsup.c:2026
 #, c-format
 msgid "  -z loadfltr                 Mark object requiring immediate process\n"
 msgstr ""
 
-#: lexsup.c:1931
+#: lexsup.c:2028
 #, c-format
 msgid "  -z nocopyreloc              Don't create copy relocs\n"
 msgstr ""
 
-#: lexsup.c:1933
+#: lexsup.c:2030
 #, c-format
 msgid ""
 "  -z nodefaultlib             Mark object not to use default search paths\n"
 msgstr ""
 
-#: lexsup.c:1935
+#: lexsup.c:2032
 #, c-format
 msgid "  -z nodelete                 Mark DSO non-deletable at runtime\n"
 msgstr ""
 
-#: lexsup.c:1937
+#: lexsup.c:2034
 #, c-format
 msgid "  -z nodlopen                 Mark DSO not available to dlopen\n"
 msgstr ""
 
-#: lexsup.c:1939
+#: lexsup.c:2036
 #, c-format
 msgid "  -z nodump                   Mark DSO not available to dldump\n"
 msgstr ""
 
-#: lexsup.c:1941
+#: lexsup.c:2038
 #, c-format
 msgid "  -z now                      Mark object non-lazy runtime binding\n"
 msgstr ""
 
-#: lexsup.c:1943
+#: lexsup.c:2040
 #, c-format
 msgid ""
 "  -z origin                   Mark object requiring immediate $ORIGIN\n"
 "                                processing at runtime\n"
 msgstr ""
 
-#: lexsup.c:1947
+#: lexsup.c:2044
 #, c-format
 msgid "  -z relro                    Create RELRO program header (default)\n"
 msgstr ""
 
-#: lexsup.c:1949
+#: lexsup.c:2046
 #, c-format
 msgid "  -z norelro                  Don't create RELRO program header\n"
 msgstr ""
 
-#: lexsup.c:1952
+#: lexsup.c:2049
 #, c-format
 msgid "  -z relro                    Create RELRO program header\n"
 msgstr ""
 
-#: lexsup.c:1954
+#: lexsup.c:2051
 #, c-format
 msgid ""
 "  -z norelro                  Don't create RELRO program header (default)\n"
 msgstr ""
 
-#: lexsup.c:1958
+#: lexsup.c:2055
 #, c-format
 msgid ""
 "  -z separate-code            Create separate code program header (default)\n"
 msgstr ""
 
-#: lexsup.c:1960
+#: lexsup.c:2057
 #, c-format
 msgid ""
 "  -z noseparate-code          Don't create separate code program header\n"
 msgstr ""
 
-#: lexsup.c:1963
+#: lexsup.c:2060
 #, c-format
 msgid "  -z separate-code            Create separate code program header\n"
 msgstr ""
 
-#: lexsup.c:1965
+#: lexsup.c:2062
 #, c-format
 msgid ""
 "  -z noseparate-code          Don't create separate code program header "
 "(default)\n"
 msgstr ""
 
-#: lexsup.c:1968
+#: lexsup.c:2065
 #, c-format
 msgid ""
 "  -z common                   Generate common symbols with STT_COMMON type\n"
 msgstr ""
 
-#: lexsup.c:1970
+#: lexsup.c:2067
 #, c-format
 msgid ""
 "  -z nocommon                 Generate common symbols with STT_OBJECT type\n"
 msgstr ""
 
-#: lexsup.c:1972
+#: lexsup.c:2069
 #, c-format
 msgid "  -z stack-size=SIZE          Set size of stack segment\n"
 msgstr ""
 
-#: lexsup.c:1975
+#: lexsup.c:2072
 #, c-format
 msgid ""
 "  -z text                     Treat DT_TEXTREL in output as error (default)\n"
 msgstr ""
 
-#: lexsup.c:1978
+#: lexsup.c:2075
 #, c-format
 msgid "  -z text                     Treat DT_TEXTREL in output as error\n"
 msgstr ""
 
-#: lexsup.c:1982
+#: lexsup.c:2079
 #, c-format
 msgid ""
 "  -z notext                   Don't treat DT_TEXTREL in output as error "
 "(default)\n"
 msgstr ""
 
-#: lexsup.c:1984
+#: lexsup.c:2081
 #, c-format
 msgid ""
 "  -z textoff                  Don't treat DT_TEXTREL in output as error "
 "(default)\n"
 msgstr ""
 
-#: lexsup.c:1989
+#: lexsup.c:2086
 #, c-format
 msgid ""
 "  -z notext                   Don't treat DT_TEXTREL in output as error\n"
 msgstr ""
 
-#: lexsup.c:1991
+#: lexsup.c:2088
 #, c-format
 msgid ""
 "  -z textoff                  Don't treat DT_TEXTREL in output as error\n"
 msgstr ""
 
-#: lexsup.c:1999
+#: lexsup.c:2096
 #, c-format
 msgid "  --build-id[=STYLE]          Generate build ID note\n"
 msgstr ""
 
-#: lexsup.c:2001
+#: lexsup.c:2098
 #, c-format
 msgid ""
 "  --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]\n"
 "                              Compress DWARF debug sections using zlib\n"
 msgstr ""
 
-#: lexsup.c:2005
+#: lexsup.c:2102
 #, c-format
 msgid "                                Default: zlib-gabi\n"
 msgstr ""
 
-#: lexsup.c:2008
+#: lexsup.c:2105
 #, c-format
 msgid "                                Default: none\n"
 msgstr ""
 
-#: lexsup.c:2011
+#: lexsup.c:2108
 #, c-format
 msgid "  -z common-page-size=SIZE    Set common page size to SIZE\n"
 msgstr ""
 
-#: lexsup.c:2013
+#: lexsup.c:2110
 #, c-format
 msgid "  -z max-page-size=SIZE       Set maximum page size to SIZE\n"
 msgstr ""
 
-#: lexsup.c:2015
+#: lexsup.c:2112
 #, c-format
 msgid ""
 "  -z defs                     Report unresolved symbols in object files\n"
 msgstr ""
 
-#: lexsup.c:2017
+#: lexsup.c:2114
 #, c-format
 msgid "  -z muldefs                  Allow multiple definitions\n"
 msgstr ""
 
-#: lexsup.c:2019
+#: lexsup.c:2116
 #, c-format
 msgid ""
 "  -z execstack                Mark executable as requiring executable stack\n"
 msgstr ""
 
-#: lexsup.c:2021
+#: lexsup.c:2118
 #, c-format
 msgid ""
 "  -z noexecstack              Mark executable as not requiring executable "
 "stack\n"
 msgstr ""
 
-#: lexsup.c:2023
+#: lexsup.c:2120
+#, c-format
+msgid "  -z unique-symbol            Avoid duplicated local symbol names\n"
+msgstr ""
+
+#: lexsup.c:2122
+#, c-format
+msgid ""
+"  -z nounique-symbol          Keep duplicated local symbol names (default)\n"
+msgstr ""
+
+#: lexsup.c:2124
 #, c-format
 msgid ""
 "  -z globalaudit              Mark executable requiring global auditing\n"
 msgstr ""
 
-#: lexsup.c:2030
+#: lexsup.c:2131
 #, c-format
 msgid ""
 "  --ld-generated-unwind-info  Generate exception handling info for PLT\n"
 msgstr ""
 
-#: lexsup.c:2032
+#: lexsup.c:2133
 #, c-format
 msgid ""
 "  --no-ld-generated-unwind-info\n"
@@ -2358,49 +2451,49 @@ msgid ""
 "PLT\n"
 msgstr ""
 
-#: lexsup.c:2043
+#: lexsup.c:2144
 #, c-format
 msgid "ELF emulations:\n"
 msgstr ""
 
-#: lexsup.c:2061
+#: lexsup.c:2162
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr ""
 
-#: lexsup.c:2063
+#: lexsup.c:2164
 #, c-format
 msgid "Options:\n"
 msgstr ""
 
-#: lexsup.c:2141
+#: lexsup.c:2242
 #, c-format
 msgid "  @FILE"
 msgstr ""
 
-#: lexsup.c:2144
+#: lexsup.c:2245
 #, c-format
 msgid "Read options from FILE\n"
 msgstr ""
 
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:2149
+#: lexsup.c:2250
 #, c-format
 msgid "%s: supported targets:"
 msgstr ""
 
-#: lexsup.c:2157
+#: lexsup.c:2258
 #, c-format
 msgid "%s: supported emulations: "
 msgstr ""
 
-#: lexsup.c:2162
+#: lexsup.c:2263
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr ""
 
-#: lexsup.c:2169
+#: lexsup.c:2270
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr ""
@@ -2413,41 +2506,41 @@ msgstr ""
 msgid "%X%P: unsupported PEI architecture: %s\n"
 msgstr ""
 
-#: pe-dll.c:825
+#: pe-dll.c:826
 msgid "%X%P: cannot export %s: invalid export name\n"
 msgstr ""
 
-#: pe-dll.c:877
+#: pe-dll.c:878
 #, c-format
 msgid "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
 msgstr ""
 
-#: pe-dll.c:884
+#: pe-dll.c:885
 #, c-format
 msgid "%P: warning, duplicate EXPORT: %s\n"
 msgstr ""
 
-#: pe-dll.c:991
+#: pe-dll.c:992
 #, c-format
 msgid "%X%P: cannot export %s: symbol not defined\n"
 msgstr ""
 
-#: pe-dll.c:997
+#: pe-dll.c:998
 #, c-format
 msgid "%X%P: cannot export %s: symbol wrong type (%d vs %d)\n"
 msgstr ""
 
-#: pe-dll.c:1004
+#: pe-dll.c:1005
 #, c-format
 msgid "%X%P: cannot export %s: symbol not found\n"
 msgstr ""
 
-#: pe-dll.c:1027 eaarch64cloudabi.c:360 eaarch64cloudabib.c:360
+#: pe-dll.c:1028 eaarch64cloudabi.c:360 eaarch64cloudabib.c:360
 #: eaarch64elf.c:359 eaarch64elf32.c:359 eaarch64elf32b.c:359
 #: eaarch64elfb.c:359 eaarch64fbsd.c:360 eaarch64fbsdb.c:360
 #: eaarch64linux.c:360 eaarch64linux32.c:360 eaarch64linux32b.c:360
-#: eaarch64linuxb.c:360 eaix5ppc.c:1432 eaix5ppc.c:1442 eaix5rs6.c:1432
-#: eaix5rs6.c:1442 eaixppc.c:1432 eaixppc.c:1442 eaixrs6.c:1432 eaixrs6.c:1442
+#: eaarch64linuxb.c:360 eaix5ppc.c:1433 eaix5ppc.c:1443 eaix5rs6.c:1433
+#: eaix5rs6.c:1443 eaixppc.c:1433 eaixppc.c:1443 eaixrs6.c:1433 eaixrs6.c:1443
 #: earmelf.c:568 earmelf_fbsd.c:568 earmelf_fuchsia.c:569 earmelf_linux.c:569
 #: earmelf_linux_eabi.c:569 earmelf_linux_fdpiceabi.c:569 earmelf_nacl.c:569
 #: earmelf_nbsd.c:568 earmelf_phoenix.c:569 earmelf_vxworks.c:568
@@ -2462,106 +2555,105 @@ msgstr ""
 #: eelf32lmip.c:172 eelf32lr5900.c:172 eelf32lr5900n32.c:172 eelf32lsmip.c:172
 #: eelf32ltsmip.c:172 eelf32ltsmip_fbsd.c:172 eelf32ltsmipn32.c:172
 #: eelf32ltsmipn32_fbsd.c:172 eelf32metag.c:87 eelf32mipswindiss.c:172
-#: eelf64bmip.c:186 eelf64btsmip.c:172 eelf64btsmip_fbsd.c:172 eelf64lppc.c:117
-#: eelf64ltsmip.c:172 eelf64ltsmip_fbsd.c:172 eelf64ppc.c:117
-#: eelf64ppc_fbsd.c:117 ehppaelf.c:110 ehppalinux.c:110 ehppanbsd.c:110
-#: ehppaobsd.c:110 em68hc11elf.c:170 em68hc11elfb.c:170 em68hc12elf.c:170
-#: em68hc12elfb.c:170 enios2elf.c:92 enios2linux.c:92 eppcmacos.c:1432
-#: eppcmacos.c:1442
+#: eelf64bmip.c:186 eelf64btsmip.c:172 eelf64btsmip_fbsd.c:172 eelf64lppc.c:119
+#: eelf64lppc_fbsd.c:119 eelf64ltsmip.c:172 eelf64ltsmip_fbsd.c:172
+#: eelf64ppc.c:119 eelf64ppc_fbsd.c:119 ehppaelf.c:110 ehppalinux.c:110
+#: ehppanbsd.c:110 ehppaobsd.c:110 em68hc11elf.c:170 em68hc11elfb.c:170
+#: em68hc12elf.c:170 em68hc12elfb.c:170 enios2elf.c:92 enios2linux.c:92
+#: eppcmacos.c:1433 eppcmacos.c:1443
 msgid "%F%P: can not create BFD: %E\n"
 msgstr ""
 
-#: pe-dll.c:1041
+#: pe-dll.c:1042
 msgid "%X%P: can not create .edata section: %E\n"
 msgstr ""
 
-#: pe-dll.c:1055
+#: pe-dll.c:1056
 msgid "%X%P: can not create .reloc section: %E\n"
 msgstr ""
 
-#: pe-dll.c:1116
+#: pe-dll.c:1117
 #, c-format
 msgid "%X%P: error: ordinal used twice: %d (%s vs %s)\n"
 msgstr ""
 
-#: pe-dll.c:1152
+#: pe-dll.c:1153
 #, c-format
 msgid "%X%P: error: export ordinal too large: %d\n"
 msgstr ""
 
-#: pe-dll.c:1475
+#: pe-dll.c:1476
 #, c-format
 msgid "Info: resolving %s by linking to %s (auto-import)\n"
 msgstr ""
 
-#: pe-dll.c:1481
+#: pe-dll.c:1482
 msgid ""
 "%P: warning: auto-importing has been activated without --enable-auto-import "
 "specified on the command line; this should work unless it involves constant "
 "data structures referencing symbols from auto-imported DLLs\n"
 msgstr ""
 
-#. Huh?  Shouldn't happen, but punt if it does.
-#: pe-dll.c:1550
+#: pe-dll.c:1553
 msgid "%P: zero vma section reloc detected: `%s' #%d f=%d\n"
 msgstr ""
 
-#: pe-dll.c:1666
+#: pe-dll.c:1670
 #, c-format
 msgid "%X%P: error: %d-bit reloc in dll\n"
 msgstr ""
 
-#: pe-dll.c:1794
+#: pe-dll.c:1798
 #, c-format
 msgid "%P: can't open output def file %s\n"
 msgstr ""
 
-#: pe-dll.c:1945
+#: pe-dll.c:1949
 #, c-format
 msgid "; no contents available\n"
 msgstr ""
 
-#: pe-dll.c:2804
+#: pe-dll.c:2808
 msgid ""
 "%X%P: %C: variable '%pT' can't be auto-imported; please read the "
 "documentation for ld's --enable-auto-import for details\n"
 msgstr ""
 
-#: pe-dll.c:2831
+#: pe-dll.c:2835
 #, c-format
 msgid "%X%P: can't open .lib file: %s\n"
 msgstr ""
 
-#: pe-dll.c:2837
+#: pe-dll.c:2841
 #, c-format
 msgid "Creating library file: %s\n"
 msgstr ""
 
-#: pe-dll.c:2867
+#: pe-dll.c:2871
 msgid "%X%P: bfd_openr %s: %E\n"
 msgstr ""
 
-#: pe-dll.c:2879
+#: pe-dll.c:2883
 msgid "%X%P: %s(%s): can't find member in non-archive file"
 msgstr ""
 
-#: pe-dll.c:2893
+#: pe-dll.c:2897
 msgid "%X%P: %s(%s): can't find member in archive"
 msgstr ""
 
-#: pe-dll.c:3156
+#: pe-dll.c:3160
 msgid "%X%P: add symbols %s: %E\n"
 msgstr ""
 
-#: pe-dll.c:3343
+#: pe-dll.c:3347
 msgid "%X%P: open %s: %E\n"
 msgstr ""
 
-#: pe-dll.c:3352
+#: pe-dll.c:3356
 msgid "%X%P: %s: this doesn't appear to be a DLL\n"
 msgstr ""
 
-#: pe-dll.c:3557
+#: pe-dll.c:3561
 msgid "%X%P: error: can't use long section names on this arch\n"
 msgstr ""
 
@@ -2667,11 +2759,11 @@ msgstr ""
 #: eelf32lr5900.c:205 eelf32lr5900n32.c:205 eelf32lsmip.c:205
 #: eelf32ltsmip.c:205 eelf32ltsmip_fbsd.c:205 eelf32ltsmipn32.c:205
 #: eelf32ltsmipn32_fbsd.c:205 eelf32metag.c:206 eelf32mipswindiss.c:205
-#: eelf64bmip.c:219 eelf64btsmip.c:205 eelf64btsmip_fbsd.c:205 eelf64lppc.c:470
-#: eelf64ltsmip.c:205 eelf64ltsmip_fbsd.c:205 eelf64ppc.c:470
-#: eelf64ppc_fbsd.c:470 ehppaelf.c:230 ehppalinux.c:230 ehppanbsd.c:230
-#: ehppaobsd.c:230 em68hc11elf.c:295 em68hc11elfb.c:295 em68hc12elf.c:295
-#: em68hc12elfb.c:295 enios2elf.c:223 enios2linux.c:223
+#: eelf64bmip.c:219 eelf64btsmip.c:205 eelf64btsmip_fbsd.c:205 eelf64lppc.c:482
+#: eelf64lppc_fbsd.c:482 eelf64ltsmip.c:205 eelf64ltsmip_fbsd.c:205
+#: eelf64ppc.c:482 eelf64ppc_fbsd.c:482 ehppaelf.c:230 ehppalinux.c:230
+#: ehppanbsd.c:230 ehppaobsd.c:230 em68hc11elf.c:295 em68hc11elfb.c:295
+#: em68hc12elf.c:295 em68hc12elfb.c:295 enios2elf.c:223 enios2linux.c:223
 msgid "%X%P: can not make stub section: %E\n"
 msgstr ""
 
@@ -2720,29 +2812,29 @@ msgstr ""
 #: eelf64_sparc.c:97 eelf64_sparc_fbsd.c:97 eelf64_sparc_sol2.c:228
 #: eelf64alpha.c:180 eelf64alpha_fbsd.c:180 eelf64alpha_nbsd.c:180
 #: eelf64bmip.c:307 eelf64bpf.c:96 eelf64btsmip.c:293 eelf64btsmip_fbsd.c:293
-#: eelf64hppa.c:96 eelf64lppc.c:580 eelf64lriscv.c:89 eelf64lriscv_lp64.c:89
-#: eelf64lriscv_lp64f.c:89 eelf64ltsmip.c:293 eelf64ltsmip_fbsd.c:293
-#: eelf64mmix.c:207 eelf64ppc.c:580 eelf64ppc_fbsd.c:580 eelf64rdos.c:112
-#: eelf64tilegx.c:97 eelf64tilegx_be.c:97 eelf_i386.c:121 eelf_i386_be.c:120
-#: eelf_i386_fbsd.c:121 eelf_i386_ldso.c:121 eelf_i386_sol2.c:252
-#: eelf_i386_vxworks.c:150 eelf_iamcu.c:121 eelf_k1om.c:121
-#: eelf_k1om_fbsd.c:121 eelf_l1om.c:121 eelf_l1om_fbsd.c:121 eelf_s390.c:97
-#: eelf_x86_64.c:121 eelf_x86_64_cloudabi.c:121 eelf_x86_64_fbsd.c:121
-#: eelf_x86_64_sol2.c:252 eh8300elf.c:96 eh8300elf_linux.c:96 eh8300helf.c:96
-#: eh8300helf_linux.c:96 eh8300hnelf.c:96 eh8300self.c:96 eh8300self_linux.c:96
-#: eh8300snelf.c:96 eh8300sxelf.c:96 eh8300sxelf_linux.c:96 eh8300sxnelf.c:96
-#: ehppa64linux.c:96 ehppaelf.c:280 ehppalinux.c:280 ehppanbsd.c:280
-#: ehppaobsd.c:280 ei386lynx.c:111 ei386moss.c:111 ei386nto.c:111 em32relf.c:96
-#: em32relf_linux.c:96 em32rlelf.c:96 em32rlelf_linux.c:96 em68hc11elf.c:373
-#: em68hc11elfb.c:373 em68hc12elf.c:373 em68hc12elfb.c:373 em68kelf.c:248
-#: em68kelfnbsd.c:248 emn10300.c:96 ends32belf.c:204 ends32belf16m.c:204
-#: ends32belf_linux.c:204 ends32elf.c:204 ends32elf16m.c:204
-#: ends32elf_linux.c:204 enios2elf.c:273 enios2linux.c:273 eppclynx.c:317
-#: epruelf.c:117 escore3_elf.c:117 escore7_elf.c:117 eshelf.c:96 eshelf_fd.c:97
-#: eshelf_linux.c:97 eshelf_nbsd.c:96 eshelf_nto.c:96 eshelf_uclinux.c:96
-#: eshelf_vxworks.c:125 eshlelf.c:96 eshlelf_fd.c:97 eshlelf_linux.c:97
-#: eshlelf_nbsd.c:96 eshlelf_nto.c:96 eshlelf_vxworks.c:125 ev850.c:143
-#: ev850_rh850.c:143
+#: eelf64hppa.c:96 eelf64lppc.c:592 eelf64lppc_fbsd.c:592 eelf64lriscv.c:89
+#: eelf64lriscv_lp64.c:89 eelf64lriscv_lp64f.c:89 eelf64ltsmip.c:293
+#: eelf64ltsmip_fbsd.c:293 eelf64mmix.c:207 eelf64ppc.c:592
+#: eelf64ppc_fbsd.c:592 eelf64rdos.c:112 eelf64tilegx.c:97 eelf64tilegx_be.c:97
+#: eelf_i386.c:121 eelf_i386_be.c:120 eelf_i386_fbsd.c:121 eelf_i386_ldso.c:121
+#: eelf_i386_sol2.c:252 eelf_i386_vxworks.c:150 eelf_iamcu.c:121
+#: eelf_k1om.c:121 eelf_k1om_fbsd.c:121 eelf_l1om.c:121 eelf_l1om_fbsd.c:121
+#: eelf_s390.c:97 eelf_x86_64.c:121 eelf_x86_64_cloudabi.c:121
+#: eelf_x86_64_fbsd.c:121 eelf_x86_64_sol2.c:252 eh8300elf.c:96
+#: eh8300elf_linux.c:96 eh8300helf.c:96 eh8300helf_linux.c:96 eh8300hnelf.c:96
+#: eh8300self.c:96 eh8300self_linux.c:96 eh8300snelf.c:96 eh8300sxelf.c:96
+#: eh8300sxelf_linux.c:96 eh8300sxnelf.c:96 ehppa64linux.c:96 ehppaelf.c:280
+#: ehppalinux.c:280 ehppanbsd.c:280 ehppaobsd.c:280 ei386lynx.c:111
+#: ei386moss.c:111 ei386nto.c:111 em32relf.c:96 em32relf_linux.c:96
+#: em32rlelf.c:96 em32rlelf_linux.c:96 em68hc11elf.c:373 em68hc11elfb.c:373
+#: em68hc12elf.c:373 em68hc12elfb.c:373 em68kelf.c:248 em68kelfnbsd.c:248
+#: emn10300.c:96 ends32belf.c:204 ends32belf16m.c:204 ends32belf_linux.c:204
+#: ends32elf.c:204 ends32elf16m.c:204 ends32elf_linux.c:204 enios2elf.c:273
+#: enios2linux.c:273 epruelf.c:117 escore3_elf.c:117 escore7_elf.c:117
+#: eshelf.c:96 eshelf_fd.c:97 eshelf_linux.c:97 eshelf_nbsd.c:96
+#: eshelf_nto.c:96 eshelf_uclinux.c:96 eshelf_vxworks.c:125 eshlelf.c:96
+#: eshlelf_fd.c:97 eshlelf_linux.c:97 eshlelf_nbsd.c:96 eshlelf_nto.c:96
+#: eshlelf_vxworks.c:125 ev850.c:143 ev850_rh850.c:143
 msgid "%X%P: .eh_frame/.stab edit: %E\n"
 msgstr ""
 
@@ -2778,9 +2870,10 @@ msgstr ""
 #: eavrxmega2.c:192 eavrxmega3.c:129 eavrxmega3.c:192 eavrxmega4.c:129
 #: eavrxmega4.c:192 eavrxmega5.c:129 eavrxmega5.c:192 eavrxmega6.c:129
 #: eavrxmega6.c:192 eavrxmega7.c:129 eavrxmega7.c:192 eelf32metag.c:271
-#: eelf32metag.c:285 eelf64lppc.c:523 eelf64lppc.c:542 eelf64lppc.c:569
-#: eelf64ppc.c:523 eelf64ppc.c:542 eelf64ppc.c:569 eelf64ppc_fbsd.c:523
-#: eelf64ppc_fbsd.c:542 eelf64ppc_fbsd.c:569 ehppaelf.c:295 ehppaelf.c:310
+#: eelf32metag.c:285 eelf64lppc.c:535 eelf64lppc.c:554 eelf64lppc.c:581
+#: eelf64lppc_fbsd.c:535 eelf64lppc_fbsd.c:554 eelf64lppc_fbsd.c:581
+#: eelf64ppc.c:535 eelf64ppc.c:554 eelf64ppc.c:581 eelf64ppc_fbsd.c:535
+#: eelf64ppc_fbsd.c:554 eelf64ppc_fbsd.c:581 ehppaelf.c:295 ehppaelf.c:310
 #: ehppalinux.c:295 ehppalinux.c:310 ehppanbsd.c:295 ehppanbsd.c:310
 #: ehppaobsd.c:295 ehppaobsd.c:310 em68hc11elf.c:90 em68hc11elf.c:100
 #: em68hc11elf.c:317 em68hc11elfb.c:90 em68hc11elfb.c:100 em68hc11elfb.c:317
@@ -2804,10 +2897,10 @@ msgstr ""
 #: eavr3.c:201 eavr31.c:201 eavr35.c:201 eavr4.c:201 eavr5.c:201 eavr51.c:201
 #: eavr6.c:201 eavrtiny.c:201 eavrxmega1.c:201 eavrxmega2.c:201
 #: eavrxmega3.c:201 eavrxmega4.c:201 eavrxmega5.c:201 eavrxmega6.c:201
-#: eavrxmega7.c:201 eelf32metag.c:300 eelf64lppc.c:619 eelf64ppc.c:619
-#: eelf64ppc_fbsd.c:619 ehppaelf.c:332 ehppalinux.c:332 ehppanbsd.c:332
-#: ehppaobsd.c:332 em68hc11elf.c:321 em68hc11elfb.c:321 em68hc12elf.c:321
-#: em68hc12elfb.c:321 enios2elf.c:318 enios2linux.c:318
+#: eavrxmega7.c:201 eelf32metag.c:300 eelf64lppc.c:631 eelf64lppc_fbsd.c:631
+#: eelf64ppc.c:631 eelf64ppc_fbsd.c:631 ehppaelf.c:332 ehppalinux.c:332
+#: ehppanbsd.c:332 ehppaobsd.c:332 em68hc11elf.c:321 em68hc11elfb.c:321
+#: em68hc12elf.c:321 em68hc12elfb.c:321 enios2elf.c:318 enios2linux.c:318
 msgid "%X%P: can not build stubs: %E\n"
 msgstr ""
 
@@ -2824,10 +2917,6 @@ msgstr ""
 #. hence we do not support linking and changing output formats at the
 #. same time.  Use a link followed by objcopy to change output formats.
 #. Check the output target is nds32.
-#. The arm backend needs special fields in the output hash structure.
-#. These will only be created if the output format is an arm format,
-#. hence we do not support linking and changing output formats at the
-#. same time.  Use a link followed by objcopy to change output formats.
 #. The score backend needs special fields in the output hash structure.
 #. These will only be created if the output format is an score format,
 #. hence we do not support linking and changing output formats at the
@@ -2844,22 +2933,22 @@ msgstr ""
 #: eaarch64elf32.c:333 eaarch64elf32b.c:333 eaarch64elfb.c:333
 #: eaarch64fbsd.c:334 eaarch64fbsdb.c:334 eaarch64linux.c:334
 #: eaarch64linux32.c:334 eaarch64linux32b.c:334 eaarch64linuxb.c:334
-#: earm_wince_pe.c:1377 earmelf.c:540 earmelf_fbsd.c:540 earmelf_fuchsia.c:541
+#: earm_wince_pe.c:1426 earmelf.c:540 earmelf_fbsd.c:540 earmelf_fuchsia.c:541
 #: earmelf_linux.c:541 earmelf_linux_eabi.c:541 earmelf_linux_fdpiceabi.c:541
 #: earmelf_nacl.c:541 earmelf_nbsd.c:540 earmelf_phoenix.c:541
 #: earmelf_vxworks.c:540 earmelfb.c:540 earmelfb_fbsd.c:540
 #: earmelfb_fuchsia.c:541 earmelfb_linux.c:541 earmelfb_linux_eabi.c:541
 #: earmelfb_linux_fdpiceabi.c:541 earmelfb_nacl.c:541 earmelfb_nbsd.c:540
-#: earmnto.c:540 earmpe.c:1377 earmsymbian.c:540 eavr1.c:142 eavr2.c:142
+#: earmnto.c:540 earmpe.c:1426 earmsymbian.c:540 eavr1.c:142 eavr2.c:142
 #: eavr25.c:142 eavr3.c:142 eavr31.c:142 eavr35.c:142 eavr4.c:142 eavr5.c:142
 #: eavr51.c:142 eavr6.c:142 eavrtiny.c:142 eavrxmega1.c:142 eavrxmega2.c:142
 #: eavrxmega3.c:142 eavrxmega4.c:142 eavrxmega5.c:142 eavrxmega6.c:142
 #: eavrxmega7.c:142 eelf32lriscv.c:110 eelf32lriscv_ilp32.c:110
 #: eelf32lriscv_ilp32f.c:110 eelf64lriscv.c:110 eelf64lriscv_lp64.c:110
-#: eelf64lriscv_lp64f.c:110 ei386pe.c:1377 ei386pe_posix.c:1377 emcorepe.c:1377
+#: eelf64lriscv_lp64f.c:110 ei386pe.c:1426 ei386pe_posix.c:1426 emcorepe.c:1426
 #: ends32belf.c:74 ends32belf16m.c:74 ends32belf_linux.c:74 ends32elf.c:74
-#: ends32elf16m.c:74 ends32elf_linux.c:74 eppcpe.c:1377 escore3_elf.c:75
-#: escore7_elf.c:75 eshpe.c:1377 ev850.c:91 ev850_rh850.c:91
+#: ends32elf16m.c:74 ends32elf_linux.c:74 escore3_elf.c:75 escore7_elf.c:75
+#: eshpe.c:1426 ev850.c:91 ev850_rh850.c:91
 msgid "%F%P: error: cannot change output format whilst linking %s binaries\n"
 msgstr ""
 
@@ -2910,10 +2999,11 @@ msgstr ""
 #: eelf64_sparc_fbsd.c:258 eelf64_sparc_sol2.c:389 eelf64alpha.c:351
 #: eelf64alpha_fbsd.c:351 eelf64alpha_nbsd.c:351 eelf64bmip.c:487
 #: eelf64bpf.c:186 eelf64btsmip.c:473 eelf64btsmip_fbsd.c:473 eelf64hppa.c:202
-#: eelf64lppc.c:952 eelf64lriscv.c:312 eelf64lriscv_lp64.c:312
-#: eelf64lriscv_lp64f.c:312 eelf64ltsmip.c:473 eelf64ltsmip_fbsd.c:473
-#: eelf64mmix.c:4009 eelf64ppc.c:952 eelf64ppc_fbsd.c:952 eelf64rdos.c:283
-#: eelf64tilegx.c:258 eelf64tilegx_be.c:258 eelf_i386.c:4817 eelf_i386_be.c:256
+#: eelf64lppc.c:970 eelf64lppc_fbsd.c:970 eelf64lriscv.c:312
+#: eelf64lriscv_lp64.c:312 eelf64lriscv_lp64f.c:312 eelf64ltsmip.c:473
+#: eelf64ltsmip_fbsd.c:473 eelf64mmix.c:4009 eelf64ppc.c:970
+#: eelf64ppc_fbsd.c:970 eelf64rdos.c:283 eelf64tilegx.c:258
+#: eelf64tilegx_be.c:258 eelf_i386.c:4817 eelf_i386_be.c:256
 #: eelf_i386_fbsd.c:292 eelf_i386_ldso.c:267 eelf_i386_sol2.c:423
 #: eelf_i386_vxworks.c:319 eelf_iamcu.c:4795 eelf_k1om.c:5151
 #: eelf_k1om_fbsd.c:5131 eelf_l1om.c:5151 eelf_l1om_fbsd.c:5131 eelf_s390.c:258
@@ -2928,11 +3018,11 @@ msgstr ""
 #: em68hc12elf.c:471 em68hc12elfb.c:471 em68kelf.c:415 em68kelfnbsd.c:415
 #: emn10300.c:232 ends32belf.c:322 ends32belf16m.c:322 ends32belf_linux.c:345
 #: ends32elf.c:322 ends32elf16m.c:322 ends32elf_linux.c:345 enios2elf.c:488
-#: [...]

[diff truncated at 100000 bytes]


More information about the Binutils-cvs mailing list