Hello community,

here is the log from the commit of package binutils for openSUSE:Factory 
checked in at 2020-03-30 22:51:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/binutils (Old)
 and      /work/SRC/openSUSE:Factory/.binutils.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "binutils"

Mon Mar 30 22:51:46 2020 rev:143 rq:788599 version:2.34

Changes:
--------
--- /work/SRC/openSUSE:Factory/binutils/binutils.changes        2020-01-10 
18:41:04.987506575 +0100
+++ /work/SRC/openSUSE:Factory/.binutils.new.3160/binutils.changes      
2020-03-30 22:51:51.139787714 +0200
@@ -1,0 +2,53 @@
+Wed Mar 25 14:12:50 UTC 2020 - Martin Liška <[email protected]>
+
+- Update binutils-2.34-branch.diff.gz.
+
+-------------------------------------------------------------------
+Fri Feb 28 16:20:14 UTC 2020 - Martin Liška <[email protected]>
+
+- Remove fix-try_load_plugin.patch as it is part
+  of the updated binutils-2.34-branch.diff.gz patch.
+
+-------------------------------------------------------------------
+Wed Feb 26 08:13:33 UTC 2020 - Richard Biener <[email protected]>
+
+- Add binutils-pr25593.diff to fix DT_NEEDED order with -flto
+  [bsc#1163744]
+
+-------------------------------------------------------------------
+Tue Feb 18 16:12:52 UTC 2020 - Martin Liška <[email protected]>
+
+- Update fix-try_load_plugin.patch to latest version.
+
+-------------------------------------------------------------------
+Tue Feb 18 12:48:26 UTC 2020 - Martin Liška <[email protected]>
+
+- Add fix-try_load_plugin.patch in order to fix fallback caused
+  by backport for PR25355.
+
+-------------------------------------------------------------------
+Sat Feb  1 17:46:57 UTC 2020 - Martin Liška <[email protected]>
+
+- Update to binutils 2.34:
+  * The disassembler (objdump --disassemble) now has an option to
+    generate ascii art thats show the arcs between that start and end
+    points of control flow instructions.
+
+  * The binutils tools now have support for debuginfod.  Debuginfod is a 
+    HTTP service for distributing ELF/DWARF debugging information as
+    well as source code.  The tools can now connect to debuginfod
+    servers in order to download debug information about the files that
+    they are processing.
+
+  * The assembler and linker now support the generation of ELF format
+    files for the Z80 architecture.
+- Rename and get binutils-2.34-branch.diff.gz (boo#1160254).
+- Rebase add-ulp-section.diff, binutils-revert-plt32-in-branches.diff,
+  cross-avr-size.patch and binutils-skip-rpaths.patch.
+- Add new subpackages for libctf and libctf-nobfd.
+- Disable LTO due to boo#1163333.
+- Includes fixes for these CVEs:
+  bnc#1153768 aka CVE-2019-17451 aka PR25070
+  bnc#1153770 aka CVE-2019-17450 aka PR25078
+
+-------------------------------------------------------------------
cross-aarch64-binutils.changes: same change
cross-arm-binutils.changes: same change
cross-avr-binutils.changes: same change
cross-epiphany-binutils.changes: same change
cross-hppa-binutils.changes: same change
cross-hppa64-binutils.changes: same change
cross-i386-binutils.changes: same change
cross-ia64-binutils.changes: same change
cross-m68k-binutils.changes: same change
cross-mips-binutils.changes: same change
cross-ppc-binutils.changes: same change
cross-ppc64-binutils.changes: same change
cross-ppc64le-binutils.changes: same change
cross-riscv64-binutils.changes: same change
cross-rx-binutils.changes: same change
cross-s390-binutils.changes: same change
cross-s390x-binutils.changes: same change
cross-sparc-binutils.changes: same change
cross-sparc64-binutils.changes: same change
cross-spu-binutils.changes: same change
cross-x86_64-binutils.changes: same change
cross-xtensa-binutils.changes: same change

Old:
----
  binutils-2.33-branch.diff.gz
  binutils-2.33.1.tar.bz2
  binutils-2.33.1.tar.bz2.sig

New:
----
  binutils-2.34-branch.diff.gz
  binutils-2.34.tar.bz2
  binutils-2.34.tar.bz2.sig
  binutils-pr25593.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ binutils.spec ++++++
--- /var/tmp/diff_new_pack.RsOCyI/_old  2020-03-30 22:52:18.079802406 +0200
+++ /var/tmp/diff_new_pack.RsOCyI/_new  2020-03-30 22:52:18.087802410 +0200
@@ -33,7 +33,7 @@
 %else
 BuildRequires:  zlib-devel
 %endif
-Version:        2.33.1
+Version:        2.34
 Release:        0
 #
 # RUN_TESTS
@@ -81,7 +81,7 @@
 Source1:        pre_checkin.sh
 Source2:        README.First-for.SUSE.packagers
 Source3:        baselibs.conf
-Patch1:         binutils-2.33-branch.diff.gz
+Patch1:         binutils-2.34-branch.diff.gz
 Patch3:         binutils-skip-rpaths.patch
 Patch4:         s390-biarch.diff
 Patch5:         x86-64-biarch.patch
@@ -96,6 +96,7 @@
 Patch36:        binutils-pr22868.diff
 Patch37:        binutils-revert-plt32-in-branches.diff
 Patch38:        binutils-fix-invalid-op-errata.diff
+Patch40:        binutils-pr25593.diff
 Patch100:       add-ulp-section.diff
 Patch90:        cross-avr-nesc-as.patch
 Patch92:        cross-avr-omit_section_dynsym.patch
@@ -139,6 +140,23 @@
 build programs which use the GNU BFD library, which is part of
 binutils.
 
+%package -n libctf0
+Summary:        Compact C Type Format library (runtime, BFD dependency)
+License:        GFDL-1.3-only AND GPL-3.0-or-later
+Group:          Development/Tools/Building
+
+%description -n libctf0
+This package includes the libctf shared library.
+The Compact C Type Format (CTF) is a way of representing information about a 
binary program
+
+%package -n libctf-nobfd0
+Summary:        Compact C Type Format library (runtime, no BFD dependency)
+License:        GFDL-1.3-only AND GPL-3.0-or-later
+Group:          Development/Tools/Building
+
+%description -n libctf-nobfd0
+This package includes the libctf-nobfd shared library.
+The Compact C Type Format (CTF) is a way of representing information about a 
binary program
 
 %ifarch %arm
 %define HOST %{_target_cpu}-suse-linux-gnueabi
@@ -154,7 +172,7 @@
 # patch bringing the tarball to the newest upstream version
 %patch1 -p1
 %if !%{test_vanilla}
-%patch3
+%patch3 -p1
 %patch4
 %patch5
 %patch6
@@ -170,6 +188,7 @@
 %patch37 -p1
 %endif
 %patch38
+%patch40 -p1
 %patch100
 %if "%{TARGET}" == "avr"
 cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
@@ -182,11 +201,9 @@
 %endif
 
 %build
+%define _lto_cflags %{nil}
 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' 
bfd/version.h
 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
-%if 0%{suse_version} > 1110
-RPM_OPT_FLAGS="$RPM_OPT_FLAGS -ffat-lto-objects"
-%endif
 
 %if 0%{!?cross:1}
 # Building native binutils
@@ -346,9 +363,6 @@
 %if 0%{?cross:1}
 make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" 
CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling}
 %else
-%if "%{?_lto_cflags}" != ""
-RPM_OPT_FLAGS+=" -fno-lto"
-%endif
 make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" 
CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || 
%{make_check_handling}
 %endif
 
@@ -457,6 +471,9 @@
 "%_sbindir/update-alternatives" --install \
        "%_bindir/ld" ld "%_bindir/ld.gold" 1
 
+%post -n libctf0 -p /sbin/ldconfig
+%post -n libctf-nobfd0 -p /sbin/ldconfig
+
 %preun
 %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz
 %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz
@@ -472,6 +489,9 @@
        "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
 fi;
 
+%postun -n libctf0 -p /sbin/ldconfig
+%postun -n libctf-nobfd0 -p /sbin/ldconfig
+
 %postun
 /sbin/ldconfig
 %endif
@@ -510,6 +530,14 @@
 %defattr(-,root,root)
 %{_prefix}/include/*.h
 %{_libdir}/lib*.*a
+%{_libdir}/libctf.so
+%{_libdir}/libctf-nobfd.so
+
+%files -n libctf0
+%{_libdir}/libctf.so.*
+
+%files -n libctf-nobfd0
+%{_libdir}/libctf-nobfd.so.*
 %endif
 
 %changelog

++++++ cross-aarch64-binutils.spec ++++++
--- /var/tmp/diff_new_pack.RsOCyI/_old  2020-03-30 22:52:18.103802419 +0200
+++ /var/tmp/diff_new_pack.RsOCyI/_new  2020-03-30 22:52:18.103802419 +0200
@@ -36,7 +36,7 @@
 %else
 BuildRequires:  zlib-devel
 %endif
-Version:        2.33.1
+Version:        2.34
 Release:        0
 #
 # RUN_TESTS
@@ -84,7 +84,7 @@
 Source1:        pre_checkin.sh
 Source2:        README.First-for.SUSE.packagers
 Source3:        baselibs.conf
-Patch1:         binutils-2.33-branch.diff.gz
+Patch1:         binutils-2.34-branch.diff.gz
 Patch3:         binutils-skip-rpaths.patch
 Patch4:         s390-biarch.diff
 Patch5:         x86-64-biarch.patch
@@ -99,6 +99,7 @@
 Patch36:        binutils-pr22868.diff
 Patch37:        binutils-revert-plt32-in-branches.diff
 Patch38:        binutils-fix-invalid-op-errata.diff
+Patch40:        binutils-pr25593.diff
 Patch100:       add-ulp-section.diff
 Patch90:        cross-avr-nesc-as.patch
 Patch92:        cross-avr-omit_section_dynsym.patch
@@ -142,6 +143,23 @@
 build programs which use the GNU BFD library, which is part of
 binutils.
 
+%package -n libctf0
+Summary:        Compact C Type Format library (runtime, BFD dependency)
+License:        GFDL-1.3-only AND GPL-3.0-or-later
+Group:          Development/Tools/Building
+
+%description -n libctf0
+This package includes the libctf shared library.
+The Compact C Type Format (CTF) is a way of representing information about a 
binary program
+
+%package -n libctf-nobfd0
+Summary:        Compact C Type Format library (runtime, no BFD dependency)
+License:        GFDL-1.3-only AND GPL-3.0-or-later
+Group:          Development/Tools/Building
+
+%description -n libctf-nobfd0
+This package includes the libctf-nobfd shared library.
+The Compact C Type Format (CTF) is a way of representing information about a 
binary program
 
 %ifarch %arm
 %define HOST %{_target_cpu}-suse-linux-gnueabi
@@ -157,7 +175,7 @@
 # patch bringing the tarball to the newest upstream version
 %patch1 -p1
 %if !%{test_vanilla}
-%patch3
+%patch3 -p1
 %patch4
 %patch5
 %patch6
@@ -173,6 +191,7 @@
 %patch37 -p1
 %endif
 %patch38
+%patch40 -p1
 %patch100
 %if "%{TARGET}" == "avr"
 cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
@@ -185,11 +204,9 @@
 %endif
 
 %build
+%define _lto_cflags %{nil}
 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' 
bfd/version.h
 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
-%if 0%{suse_version} > 1110
-RPM_OPT_FLAGS="$RPM_OPT_FLAGS -ffat-lto-objects"
-%endif
 
 %if 0%{!?cross:1}
 # Building native binutils
@@ -349,9 +366,6 @@
 %if 0%{?cross:1}
 make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" 
CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling}
 %else
-%if "%{?_lto_cflags}" != ""
-RPM_OPT_FLAGS+=" -fno-lto"
-%endif
 make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" 
CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || 
%{make_check_handling}
 %endif
 
@@ -460,6 +474,9 @@
 "%_sbindir/update-alternatives" --install \
        "%_bindir/ld" ld "%_bindir/ld.gold" 1
 
+%post -n libctf0 -p /sbin/ldconfig
+%post -n libctf-nobfd0 -p /sbin/ldconfig
+
 %preun
 %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz
 %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz
@@ -475,6 +492,9 @@
        "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
 fi;
 
+%postun -n libctf0 -p /sbin/ldconfig
+%postun -n libctf-nobfd0 -p /sbin/ldconfig
+
 %postun
 /sbin/ldconfig
 %endif
@@ -513,6 +533,14 @@
 %defattr(-,root,root)
 %{_prefix}/include/*.h
 %{_libdir}/lib*.*a
+%{_libdir}/libctf.so
+%{_libdir}/libctf-nobfd.so
+
+%files -n libctf0
+%{_libdir}/libctf.so.*
+
+%files -n libctf-nobfd0
+%{_libdir}/libctf-nobfd.so.*
 %endif
 
 %changelog

cross-arm-binutils.spec: same change
cross-avr-binutils.spec: same change
cross-epiphany-binutils.spec: same change
cross-hppa-binutils.spec: same change
cross-hppa64-binutils.spec: same change
cross-i386-binutils.spec: same change
cross-ia64-binutils.spec: same change
cross-m68k-binutils.spec: same change
cross-mips-binutils.spec: same change
cross-ppc-binutils.spec: same change
cross-ppc64-binutils.spec: same change
cross-ppc64le-binutils.spec: same change
cross-riscv64-binutils.spec: same change
cross-rx-binutils.spec: same change
cross-s390-binutils.spec: same change
cross-s390x-binutils.spec: same change
cross-sparc-binutils.spec: same change
cross-sparc64-binutils.spec: same change
cross-spu-binutils.spec: same change
cross-x86_64-binutils.spec: same change
cross-xtensa-binutils.spec: same change
++++++ add-ulp-section.diff ++++++
--- /var/tmp/diff_new_pack.RsOCyI/_old  2020-03-30 22:52:18.587802683 +0200
+++ /var/tmp/diff_new_pack.RsOCyI/_new  2020-03-30 22:52:18.591802685 +0200
@@ -117,7 +117,7 @@
 +              if (sec == NULL)
 +                info->callbacks->einfo (_("%F%P: failed to create ULP 
section\n"));
 +
-+              if (!bfd_set_section_alignment (dynobj, sec,  plt_alignment))
++              if (!bfd_set_section_alignment (sec,  plt_alignment))
 +                goto error_alignment;
 +
 +              htab->ulp = sec;

++++++ binutils-2.33-branch.diff.gz -> binutils-2.34-branch.diff.gz ++++++
Binary files /work/SRC/openSUSE:Factory/binutils/binutils-2.33-branch.diff.gz 
and /work/SRC/openSUSE:Factory/.binutils.new.3160/binutils-2.34-branch.diff.gz 
differ

++++++ binutils-2.33.1.tar.bz2 -> binutils-2.34.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/binutils/binutils-2.33.1.tar.bz2 
/work/SRC/openSUSE:Factory/.binutils.new.3160/binutils-2.34.tar.bz2 differ: 
char 11, line 1

++++++ binutils-pr25593.diff ++++++
commit e310298cf3fc02112ac0018260748828affa4061
Author: Alan Modra <[email protected]>
Date:   Tue Feb 25 12:50:10 2020 +1030

    PR25593, --as-needed breaks DT_NEEDED order with linker plugin
    
    This patch delays setting up DT_NEEDED dynamic tags until all object
    files and libraries have been opened and their symbols processed,
    rather than adding the tags while processing symbols.  Tags are
    ordered according to the position of the associated library on the
    command line and linker scripts.  It is still possible with
    --as-needed libs that are mentioned more than once for tags to be
    ordered according to which mention was needed.  For example with
    "--as-needed a.so b.so c.so b.so" when b.so is not needed by a.so or
    any other prior object file but is needed by c.so, the order of tags
    will be "A C B".
    
    bfd/
            PR 25593
            * elf-bfd.h (struct elf_link_hash_table): Rename "loaded" to
            "dyn_loaded".
            (bfd_elf_add_dt_needed_tag): Declare.
            * elf-strtab.c (_bfd_elf_strtab_restore): Handle NULL buf.
            * elflink.c (bfd_elf_add_dt_needed_tag): Make global and rename
            from elf_add_dt_needed_tag.  Remove soname and doit param.
            (elf_link_add_object_symbols): Don't use elf_add_dt_needed_tag
            to see whether as-needed lib is already loaded, use dyn_loaded
            list instead.  When saving and restoring around as-needed lib
            handle possibility that dynstr has not been initialised.  Don't
            add DT_NEEDED tags here.  Limit dyn_loaded list to dynamic libs.
            Mark libs loaded via DT_NEEDED entries of other libs with
            DYN_NO_NEEDED if they should not be mentioned in DT_NEEDED of
            the output.
            (elf_link_check_versioned_symbol): Remove now unneccesary
            DYNAMIC check when traversing dyn_loaded list.
    ld/
            PR 25593
            * ldelf.c (ldelf_try_needed): Add DT_NEEDED lib to input_bfds.
            (ldelf_after_open): Save state of input_bfds list before loading
            DT_NEEDED libs.  Traverse input_bfds list adding DT_NEEDED tags.
            Restore input_bfds list.
            * testsuite/ld-cris/gotplt1.d: Adjust for changed .dynstr order.

diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 7d36e23ea1..b930761363 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -637,8 +637,8 @@ struct elf_link_hash_table
   asection *tls_sec;
   bfd_size_type tls_size;
 
-  /* A linked list of BFD's loaded in the link.  */
-  struct elf_link_loaded_list *loaded;
+  /* A linked list of dynamic BFD's loaded in the link.  */
+  struct elf_link_loaded_list *dyn_loaded;
 
   /* Short-cuts to get to dynamic linker sections.  */
   asection *sgot;
@@ -2510,6 +2510,8 @@ extern bfd_boolean bfd_elf_link_add_symbols
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_elf_add_dynamic_entry
   (struct bfd_link_info *, bfd_vma, bfd_vma);
+extern int bfd_elf_add_dt_needed_tag
+  (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_elf_link_check_relocs
   (bfd *, struct bfd_link_info *);
 
diff --git a/bfd/elf-strtab.c b/bfd/elf-strtab.c
index d3e50c76cf..c397180dcc 100644
--- a/bfd/elf-strtab.c
+++ b/bfd/elf-strtab.c
@@ -245,13 +245,16 @@ _bfd_elf_strtab_save (struct elf_strtab_hash *tab)
 void
 _bfd_elf_strtab_restore (struct elf_strtab_hash *tab, void *buf)
 {
-  size_t idx, curr_size = tab->size;
+  size_t idx, curr_size = tab->size, save_size;
   struct strtab_save *save = (struct strtab_save *) buf;
 
   BFD_ASSERT (tab->sec_size == 0);
-  BFD_ASSERT (save->size <= curr_size);
-  tab->size = save->size;
-  for (idx = 1; idx < save->size; ++idx)
+  save_size = 1;
+  if (save != NULL)
+    save_size = save->size;
+  BFD_ASSERT (save_size <= curr_size);
+  tab->size = save_size;
+  for (idx = 1; idx < save_size; ++idx)
     tab->array[idx]->refcount = save->refcount[idx];
 
   for (; idx < curr_size; ++idx)
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 8e7ae2a160..6f03c5c09f 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -3501,23 +3501,21 @@ _bfd_elf_add_dynamic_entry (struct bfd_link_info *info,
   return TRUE;
 }
 
-/* Add a DT_NEEDED entry for this dynamic object if DO_IT is true,
-   otherwise just check whether one already exists.  Returns -1 on error,
+/* Add a DT_NEEDED entry for this dynamic object.  Returns -1 on error,
    1 if a DT_NEEDED tag already exists, and 0 on success.  */
 
-static int
-elf_add_dt_needed_tag (bfd *abfd,
-                      struct bfd_link_info *info,
-                      const char *soname,
-                      bfd_boolean do_it)
+int
+bfd_elf_add_dt_needed_tag (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *hash_table;
   size_t strindex;
+  const char *soname;
 
   if (!_bfd_elf_link_create_dynstrtab (abfd, info))
     return -1;
 
   hash_table = elf_hash_table (info);
+  soname = elf_dt_name (abfd);
   strindex = _bfd_elf_strtab_add (hash_table->dynstr, soname, FALSE);
   if (strindex == (size_t) -1)
     return -1;
@@ -3547,17 +3545,11 @@ elf_add_dt_needed_tag (bfd *abfd,
          }
     }
 
-  if (do_it)
-    {
-      if (!_bfd_elf_link_create_dynamic_sections (hash_table->dynobj, info))
-       return -1;
+  if (!_bfd_elf_link_create_dynamic_sections (hash_table->dynobj, info))
+    return -1;
 
-      if (!_bfd_elf_add_dynamic_entry (info, DT_NEEDED, strindex))
-       return -1;
-    }
-  else
-    /* We were just checking for existence of the tag.  */
-    _bfd_elf_strtab_delref (hash_table->dynstr, strindex);
+  if (!_bfd_elf_add_dynamic_entry (info, DT_NEEDED, strindex))
+    return -1;
 
   return 0;
 }
@@ -4069,7 +4061,7 @@ elf_link_add_object_symbols (bfd *abfd, struct 
bfd_link_info *info)
       char *audit = NULL;
       struct bfd_link_needed_list *rpath = NULL, *runpath = NULL;
       const Elf_Internal_Phdr *phdr;
-      int ret;
+      struct elf_link_loaded_list *loaded_lib;
 
       /* ld --just-symbols and dynamic objects don't mix very well.
         ld shouldn't allow it.  */
@@ -4258,15 +4250,22 @@ error_free_dyn:
         will need to know it.  */
       elf_dt_name (abfd) = soname;
 
-      ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed);
-      if (ret < 0)
-       goto error_return;
-
       /* If we have already included this dynamic object in the
         link, just ignore it.  There is no reason to include a
         particular dynamic object more than once.  */
-      if (ret > 0)
-       return TRUE;
+      for (loaded_lib = htab->dyn_loaded;
+          loaded_lib != NULL;
+          loaded_lib = loaded_lib->next)
+       {
+         if (strcmp (elf_dt_name (loaded_lib->abfd), soname) == 0)
+           return TRUE;
+       }
+
+      /* Create dynamic sections for backends that require that be done
+        before setup_gnu_properties.  */
+      if (add_needed
+         && !_bfd_elf_link_create_dynamic_sections (abfd, info))
+       return FALSE;
 
       /* Save the DT_AUDIT entry for the linker emulation code. */
       elf_dt_audit (abfd) = audit;
@@ -4389,9 +4388,13 @@ error_free_dyn:
       old_table = htab->root.table.table;
       old_size = htab->root.table.size;
       old_count = htab->root.table.count;
-      old_strtab = _bfd_elf_strtab_save (htab->dynstr);
-      if (old_strtab == NULL)
-       goto error_free_vers;
+      old_strtab = NULL;
+      if (htab->dynstr != NULL)
+       {
+         old_strtab = _bfd_elf_strtab_save (htab->dynstr);
+         if (old_strtab == NULL)
+           goto error_free_vers;
+       }
 
       for (i = 0; i < htab->root.table.size; i++)
        {
@@ -5102,7 +5105,6 @@ error_free_dyn:
                      && !on_needed_list (elf_dt_name (abfd),
                                          htab->needed, NULL))))
            {
-             int ret;
              const char *soname = elf_dt_name (abfd);
 
              info->callbacks->minfo ("%!", soname, old_bfd,
@@ -5127,12 +5129,11 @@ error_free_dyn:
              elf_dyn_lib_class (abfd) = (enum dynamic_lib_link_class)
                (elf_dyn_lib_class (abfd) & ~DYN_AS_NEEDED);
 
+             /* Create dynamic sections for backends that require
+                that be done before setup_gnu_properties.  */
+             if (!_bfd_elf_link_create_dynamic_sections (abfd, info))
+               return FALSE;
              add_needed = TRUE;
-             ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed);
-             if (ret < 0)
-               goto error_free_vers;
-
-             BFD_ASSERT (ret == 0);
            }
        }
     }
@@ -5222,7 +5223,8 @@ error_free_dyn:
       memcpy (htab->root.table.table, old_tab, tabsize);
       htab->root.undefs = old_undefs;
       htab->root.undefs_tail = old_undefs_tail;
-      _bfd_elf_strtab_restore (htab->dynstr, old_strtab);
+      if (htab->dynstr != NULL)
+       _bfd_elf_strtab_restore (htab->dynstr, old_strtab);
       free (old_strtab);
       old_strtab = NULL;
       for (i = 0; i < htab->root.table.size; i++)
@@ -5550,7 +5552,7 @@ error_free_dyn:
        }
     }
 
-  if (is_elf_hash_table (htab) && add_needed)
+  if (dynamic && add_needed)
     {
       /* Add this bfd to the loaded list.  */
       struct elf_link_loaded_list *n;
@@ -5559,9 +5561,12 @@ error_free_dyn:
       if (n == NULL)
        goto error_return;
       n->abfd = abfd;
-      n->next = htab->loaded;
-      htab->loaded = n;
+      n->next = htab->dyn_loaded;
+      htab->dyn_loaded = n;
     }
+  if (dynamic && !add_needed
+      && (elf_dyn_lib_class (abfd) & DYN_DT_NEEDED) != 0)
+    elf_dyn_lib_class (abfd) |= DYN_NO_NEEDED;
 
   return TRUE;
 
@@ -9689,7 +9694,7 @@ elf_link_check_versioned_symbol (struct bfd_link_info 
*info,
     }
   BFD_ASSERT (abfd != NULL);
 
-  for (loaded = elf_hash_table (info)->loaded;
+  for (loaded = elf_hash_table (info)->dyn_loaded;
        loaded != NULL;
        loaded = loaded->next)
     {
@@ -9709,7 +9714,6 @@ elf_link_check_versioned_symbol (struct bfd_link_info 
*info,
 
       /* We check each DSO for a possible hidden versioned definition.  */
       if (input == abfd
-         || (input->flags & DYNAMIC) == 0
          || elf_dynversym (input) == 0)
        continue;
 
diff --git a/ld/ldelf.c b/ld/ldelf.c
index 3ac3bb4e0a..b055929d02 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -375,6 +375,9 @@ ldelf_try_needed (struct dt_needed *needed, int force, int 
is_linux)
 
   bfd_elf_set_dyn_lib_class (abfd, (enum dynamic_lib_link_class) link_class);
 
+  *link_info.input_bfds_tail = abfd;
+  link_info.input_bfds_tail = &abfd->link.next;
+
   /* Add this file into the symbol table.  */
   if (! bfd_link_add_symbols (abfd, &link_info))
     einfo (_("%F%P: %pB: error adding symbols: %E\n"), abfd);
@@ -992,6 +995,7 @@ ldelf_after_open (int use_libpath, int native, int 
is_linux, int is_freebsd,
   struct elf_link_hash_table *htab;
   asection *s;
   bfd *abfd;
+  bfd **save_input_bfd_tail;
 
   after_open_default ();
 
@@ -1134,6 +1138,7 @@ ldelf_after_open (int use_libpath, int native, int 
is_linux, int is_freebsd,
      special action by the person doing the link.  Note that the
      needed list can actually grow while we are stepping through this
      loop.  */
+  save_input_bfd_tail = link_info.input_bfds_tail;
   needed = bfd_elf_get_needed_list (link_info.output_bfd, &link_info);
   for (l = needed; l != NULL; l = l->next)
     {
@@ -1290,6 +1295,20 @@ ldelf_after_open (int use_libpath, int native, int 
is_linux, int is_freebsd,
             l->name, l->by);
     }
 
+  for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
+    if (bfd_get_format (abfd) == bfd_object
+       && ((abfd->flags) & DYNAMIC) != 0
+       && bfd_get_flavour (abfd) == bfd_target_elf_flavour
+       && (elf_dyn_lib_class (abfd) & (DYN_AS_NEEDED | DYN_NO_NEEDED)) == 0
+       && elf_dt_name (abfd) != NULL)
+      {
+       if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0)
+         einfo (_("%F%P: failed to add DT_NEEDED dynamic tag\n"));
+      }
+
+  link_info.input_bfds_tail = save_input_bfd_tail;
+  *save_input_bfd_tail = NULL;
+
   if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR)
     if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info))
       einfo (_("%F%P: failed to parse EH frame entries\n"));
diff --git a/ld/testsuite/ld-cris/gotplt1.d b/ld/testsuite/ld-cris/gotplt1.d
index 28724d7004..defba8ad6a 100644
--- a/ld/testsuite/ld-cris/gotplt1.d
+++ b/ld/testsuite/ld-cris/gotplt1.d
@@ -34,7 +34,7 @@ Contents of section \.text:
  80178 6f0d1000 0000611a 6f2e5401 08000000  .*
  80188 6f3e70df ffff0000                    .*
 Contents of section \.dynamic:
- 82190 01000000 01000000 04000000 e4000800  .*
+ 82190 01000000 07000000 04000000 e4000800  .*
  821a0 05000000 18010800 06000000 f8000800  .*
  821b0 0a000000 1a000000 0b000000 10000000  .*
  821c0 15000000 00000000 03000000 18220800  .*
++++++ binutils-revert-plt32-in-branches.diff ++++++
--- /var/tmp/diff_new_pack.RsOCyI/_old  2020-03-30 22:52:18.655802720 +0200
+++ /var/tmp/diff_new_pack.RsOCyI/_new  2020-03-30 22:52:18.655802720 +0200
@@ -78,10 +78,10 @@
        * testsuite/ld-x86-64/pr22791-2c.s: Likewise.
        * testsuite/ld-x86-64/x86-64.exp: Run PR ld/22791 tests.
 
-Index: binutils-2.33.1/bfd/elf64-x86-64.c
-===================================================================
---- binutils-2.33.1.orig/bfd/elf64-x86-64.c    2019-09-09 15:19:43.000000000 
+0200
-+++ binutils-2.33.1/bfd/elf64-x86-64.c 2019-10-30 14:26:33.000000000 +0100
+diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
+index 79e68ff476..cee387da7d 100644
+--- a/bfd/elf64-x86-64.c
++++ b/bfd/elf64-x86-64.c
 @@ -1798,6 +1798,24 @@ rewrite_modrm_rex:
    return TRUE;
  }
@@ -158,11 +158,11 @@
                }
  
              if (fail)
-Index: binutils-2.33.1/gas/config/tc-i386.c
-===================================================================
---- binutils-2.33.1.orig/gas/config/tc-i386.c  2019-10-07 11:53:50.000000000 
+0200
-+++ binutils-2.33.1/gas/config/tc-i386.c       2019-10-30 14:26:33.000000000 
+0100
-@@ -7877,52 +7877,12 @@ output_branch (void)
+diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
+index 8728725b82..527ae0b701 100644
+--- a/gas/config/tc-i386.c
++++ b/gas/config/tc-i386.c
+@@ -7954,52 +7954,12 @@ output_branch (void)
    frag_var (rs_machine_dependent, 5, i.reloc[0], subtype, sym, off, p);
  }
  
@@ -213,9 +213,9 @@
    fixS *fixP;
 -  bfd_reloc_code_real_type jump_reloc = i.reloc[0];
  
-   if (i.tm.opcode_modifier.jumpbyte)
+   if (i.tm.opcode_modifier.jump == JUMP_BYTE)
      {
-@@ -7990,17 +7950,8 @@ output_jump (void)
+@@ -8067,17 +8027,8 @@ output_jump (void)
        abort ();
      }
  
@@ -234,7 +234,7 @@
  
    /* All jumps handled here are signed, but don't use a signed limit
       check for 32 and 16 bit jumps as we want to allow wrap around at
-@@ -10430,10 +10381,6 @@ md_estimate_size_before_relax (fragS *fr
+@@ -11263,10 +11214,6 @@ md_estimate_size_before_relax (fragS *fragP, segT 
segment)
        reloc_type = (enum bfd_reloc_code_real) fragP->fr_var;
        else if (size == 2)
        reloc_type = BFD_RELOC_16_PCREL;
@@ -245,10 +245,10 @@
        else
        reloc_type = BFD_RELOC_32_PCREL;
  
-Index: binutils-2.33.1/gas/testsuite/gas/i386/ilp32/reloc64.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/ilp32/reloc64.d        
2019-09-09 15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/ilp32/reloc64.d     2019-10-30 
14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.d 
b/gas/testsuite/gas/i386/ilp32/reloc64.d
+index 78ca3fd9e3..a961679754 100644
+--- a/gas/testsuite/gas/i386/ilp32/reloc64.d
++++ b/gas/testsuite/gas/i386/ilp32/reloc64.d
 @@ -17,7 +17,7 @@ Disassembly of section \.text:
  .*[   ]+R_X86_64_PC8[         ]+xtrn\+0x0*1
  .*[   ]+R_X86_64_PC32[        ]+xtrn-0x0*4
@@ -258,10 +258,10 @@
  .*[   ]+R_X86_64_PC8[         ]+xtrn-0x0*1
  .*[   ]+R_X86_64_GOT32[       ]+xtrn
  .*[   ]+R_X86_64_GOT32[       ]+xtrn
-Index: binutils-2.33.1/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/ilp32/x86-64-branch.d  
2019-09-09 15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/ilp32/x86-64-branch.d       
2019-10-30 14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d 
b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
+index 45ab6178b9..915dbf3f1c 100644
+--- a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
++++ b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d
 @@ -20,9 +20,9 @@ Disassembly of section .text:
  [     ]*[a-f0-9]+:    66 ff 20                data16 jmpq \*\(%rax\)
  [     ]*[a-f0-9]+:    e8 00 00 00 00          callq  0x1f     1b: 
R_X86_64_PC32       \*ABS\*\+0x10003c
@@ -275,10 +275,10 @@
  [     ]*[a-f0-9]+:    ff d0                   callq  \*%rax
  [     ]*[a-f0-9]+:    ff d0                   callq  \*%rax
  [     ]*[a-f0-9]+:    66 ff d0                data16 callq \*%rax
-Index: binutils-2.33.1/gas/testsuite/gas/i386/reloc64.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/reloc64.d      2019-09-09 
15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/reloc64.d   2019-10-30 
14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/reloc64.d 
b/gas/testsuite/gas/i386/reloc64.d
+index 540a9b77d3..ea16c68de4 100644
+--- a/gas/testsuite/gas/i386/reloc64.d
++++ b/gas/testsuite/gas/i386/reloc64.d
 @@ -20,7 +20,7 @@ Disassembly of section \.text:
  .*[   ]+R_X86_64_PC8[         ]+xtrn\+0x0*1
  .*[   ]+R_X86_64_PC32[        ]+xtrn-0x0*4
@@ -288,10 +288,10 @@
  .*[   ]+R_X86_64_PC8[         ]+xtrn-0x0*1
  .*[   ]+R_X86_64_GOT64[       ]+xtrn
  .*[   ]+R_X86_64_GOT32[       ]+xtrn
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-jump.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-jump.d  2019-09-09 
15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-jump.d       2019-10-30 
14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/x86-64-jump.d 
b/gas/testsuite/gas/i386/x86-64-jump.d
+index 1a1521d278..b898d7d5eb 100644
+--- a/gas/testsuite/gas/i386/x86-64-jump.d
++++ b/gas/testsuite/gas/i386/x86-64-jump.d
 @@ -9,7 +9,7 @@ Disassembly of section .text:
  
  0+ <.text>:
@@ -310,44 +310,27 @@
  [     ]*[a-f0-9]+:    ff 14 25 00 00 00 00    callq  \*0x0    3d: 
R_X86_64_32S        xxx
  [     ]*[a-f0-9]+:    ff d7                   callq  \*%rdi
  [     ]*[a-f0-9]+:    ff 17                   callq  \*\(%rdi\)
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d  
2019-09-09 15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d       
2019-10-30 14:26:33.000000000 +0100
-@@ -21,9 +21,9 @@ Disassembly of section .text:
- [     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 24 <foo2>
- 
- 0+24 <foo2>:
--[     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 2a <foo2\+0x6> 26: 
R_X86_64_PLT32      foo-0x4
--[     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 31 <foo2\+0xd>   2d: 
R_X86_64_PLT32      foo-0x4
--[     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 37 <foo2\+0x13>       
33: R_X86_64_PLT32      foo-0x4
-+[     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 2a <foo2\+0x6> 26: 
R_X86_64_PC32       foo-0x4
-+[     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 31 <foo2\+0xd>   2d: 
R_X86_64_PC32       foo-0x4
-+[     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 37 <foo2\+0x13>       
33: R_X86_64_PC32       foo-0x4
- [     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 3d <foo2\+0x19>        
39: R_X86_64_PLT32      foo-0x4
- [     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 44 <foo2\+0x20>  40: 
R_X86_64_PLT32      foo-0x4
- [     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 4a <foo2\+0x26>       
46: R_X86_64_PLT32      foo-0x4
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d  
2019-09-09 15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d       
2019-10-30 14:26:33.000000000 +0100
-@@ -21,9 +21,9 @@ Disassembly of section .text:
- [     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 24 <foo2>
- 
- 0+24 <foo2>:
--[     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 2a <foo2\+0x6> 26: 
R_X86_64_PLT32      foo-0x4
--[     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 31 <foo2\+0xd>   2d: 
R_X86_64_PLT32      foo-0x4
--[     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 37 <foo2\+0x13>       
33: R_X86_64_PLT32      foo-0x4
-+[     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 2a <foo2\+0x6> 26: 
R_X86_64_PC32       foo-0x4
-+[     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 31 <foo2\+0xd>   2d: 
R_X86_64_PC32       foo-0x4
-+[     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 37 <foo2\+0x13>       
33: R_X86_64_PC32       foo-0x4
- [     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 3d <foo2\+0x19>        
39: R_X86_64_PLT32      foo-0x4
- [     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 44 <foo2\+0x20>  40: 
R_X86_64_PLT32      foo-0x4
- [     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 4a <foo2\+0x26>       
46: R_X86_64_PLT32      foo-0x4
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-nop-3.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-nop-3.d 2019-09-09 
15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-nop-3.d      2019-10-30 
14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d 
b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
+index 03e9675217..9d2ec05b7e 100644
+--- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
++++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
+@@ -23,9 +23,9 @@ Disassembly of section .text:
+ [     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 34 <foo2>
+ 
+ 0+34 <foo2>:
+-[     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 3a <foo2\+0x6> 36: 
R_X86_64_PLT32      foo-0x4
+-[     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 41 <foo2\+0xd>   3d: 
R_X86_64_PLT32      foo-0x4
+-[     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 47 <foo2\+0x13>       
43: R_X86_64_PLT32      foo-0x4
++[     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 3a <foo2\+0x6> 36: 
R_X86_64_PC32       foo-0x4
++[     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 41 <foo2\+0xd>   3d: 
R_X86_64_PC32       foo-0x4
++[     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 47 <foo2\+0x13>       
43: R_X86_64_PC32       foo-0x4
+ [     ]*[a-f0-9]+:    f2 e9 00 00 00 00       bnd jmpq 4d <foo2\+0x19>        
49: R_X86_64_PLT32      foo-0x4
+ [     ]*[a-f0-9]+:    f2 0f 82 00 00 00 00    bnd jb 54 <foo2\+0x20>  50: 
R_X86_64_PLT32      foo-0x4
+ [     ]*[a-f0-9]+:    f2 e8 00 00 00 00       bnd callq 5a <foo2\+0x26>       
56: R_X86_64_PLT32      foo-0x4
+diff --git a/gas/testsuite/gas/i386/x86-64-nop-3.d 
b/gas/testsuite/gas/i386/x86-64-nop-3.d
+index 8514c4d077..617033a8ac 100644
+--- a/gas/testsuite/gas/i386/x86-64-nop-3.d
++++ b/gas/testsuite/gas/i386/x86-64-nop-3.d
 @@ -18,5 +18,5 @@ Disassembly of section .text:
  Disassembly of section .altinstr_replacement:
  
@@ -355,32 +338,32 @@
 - +[a-f0-9]+:  e9 00 00 00 00          jmpq   5 <_start\+0x5>  1: 
R_X86_64_PLT32       foo-0x4
 + +[a-f0-9]+:  e9 00 00 00 00          jmpq   5 <_start\+0x5>  1: 
R_X86_64_PC32        foo-0x4
  #pass
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-nop-4.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-nop-4.d 2019-09-09 
15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-nop-4.d      2019-10-30 
14:26:33.000000000 +0100
-@@ -21,5 +21,5 @@ Disassembly of section .altinstr_replace
+diff --git a/gas/testsuite/gas/i386/x86-64-nop-4.d 
b/gas/testsuite/gas/i386/x86-64-nop-4.d
+index 7b696624cf..8610fc4303 100644
+--- a/gas/testsuite/gas/i386/x86-64-nop-4.d
++++ b/gas/testsuite/gas/i386/x86-64-nop-4.d
+@@ -21,5 +21,5 @@ Disassembly of section .altinstr_replacement:
   +[a-f0-9]+:  89 c0                   mov    %eax,%eax
   +[a-f0-9]+:  89 c0                   mov    %eax,%eax
   +[a-f0-9]+:  89 c0                   mov    %eax,%eax
 - +[a-f0-9]+:  e9 00 00 00 00          jmpq   b <_start\+0xb>  7: 
R_X86_64_PLT32       foo-0x4
 + +[a-f0-9]+:  e9 00 00 00 00          jmpq   b <_start\+0xb>  7: 
R_X86_64_PC32        foo-0x4
  #pass
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-nop-5.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-nop-5.d 2019-09-09 
15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-nop-5.d      2019-10-30 
14:26:33.000000000 +0100
-@@ -24,5 +24,5 @@ Disassembly of section .altinstr_replace
+diff --git a/gas/testsuite/gas/i386/x86-64-nop-5.d 
b/gas/testsuite/gas/i386/x86-64-nop-5.d
+index b0b7854f8a..333263bd93 100644
+--- a/gas/testsuite/gas/i386/x86-64-nop-5.d
++++ b/gas/testsuite/gas/i386/x86-64-nop-5.d
+@@ -24,5 +24,5 @@ Disassembly of section .altinstr_replacement:
   +[a-f0-9]+:  89 c0                   mov    %eax,%eax
   +[a-f0-9]+:  89 c0                   mov    %eax,%eax
   +[a-f0-9]+:  89 c0                   mov    %eax,%eax
 - +[a-f0-9]+:  e9 00 00 00 00          jmpq   d <_start\+0xd>  9: 
R_X86_64_PLT32       foo-0x4
 + +[a-f0-9]+:  e9 00 00 00 00          jmpq   d <_start\+0xd>  9: 
R_X86_64_PC32        foo-0x4
  #pass
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-relax-2.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-relax-2.d       
2019-09-09 15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-relax-2.d    2019-10-30 
14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/x86-64-relax-2.d 
b/gas/testsuite/gas/i386/x86-64-relax-2.d
+index 8f432dff52..6c7651886f 100644
+--- a/gas/testsuite/gas/i386/x86-64-relax-2.d
++++ b/gas/testsuite/gas/i386/x86-64-relax-2.d
 @@ -11,12 +11,12 @@ Disassembly of section .text:
  0+ <foo>:
  [     ]*[a-f0-9]+:    eb 24                   jmp    26 <local>
@@ -399,10 +382,10 @@
  
  0+22 <hidden_def>:
  [     ]*[a-f0-9]+:    c3                      retq   
-Index: binutils-2.33.1/gas/testsuite/gas/i386/x86-64-relax-3.d
-===================================================================
---- binutils-2.33.1.orig/gas/testsuite/gas/i386/x86-64-relax-3.d       
2019-09-09 15:19:44.000000000 +0200
-+++ binutils-2.33.1/gas/testsuite/gas/i386/x86-64-relax-3.d    2019-10-30 
14:26:33.000000000 +0100
+diff --git a/gas/testsuite/gas/i386/x86-64-relax-3.d 
b/gas/testsuite/gas/i386/x86-64-relax-3.d
+index bb60508145..f1ffdb89f6 100644
+--- a/gas/testsuite/gas/i386/x86-64-relax-3.d
++++ b/gas/testsuite/gas/i386/x86-64-relax-3.d
 @@ -12,10 +12,10 @@ Disassembly of section .text:
  [     ]*[a-f0-9]+:    eb 1b                   jmp    1f <hidden_def>
  [     ]*[a-f0-9]+:    eb 1b                   jmp    21 <global_def>
@@ -418,28 +401,38 @@
  
  0+1f <hidden_def>:
  [     ]*[a-f0-9]+:    c3                      retq   
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/mpx1c.rd
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/mpx1c.rd       2019-09-09 
15:19:45.000000000 +0200
-+++ binutils-2.33.1/ld/testsuite/ld-x86-64/mpx1c.rd    2019-10-30 
14:26:33.000000000 +0100
+diff --git a/ld/testsuite/ld-x86-64/mpx1c.rd b/ld/testsuite/ld-x86-64/mpx1c.rd
+index d66524c883..d3b292cbdc 100644
+--- a/ld/testsuite/ld-x86-64/mpx1c.rd
++++ b/ld/testsuite/ld-x86-64/mpx1c.rd
 @@ -1,3 +1,3 @@
  #...
 -[0-9a-f ]+R_X86_64_PLT32 +0+ +.*
 +[0-9a-f ]+R_X86_64_PC32 +0+ +.*
  #...
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-1a.c
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-1a.c   2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+diff --git a/ld/testsuite/ld-x86-64/pr22791-1.err 
b/ld/testsuite/ld-x86-64/pr22791-1.err
+deleted file mode 100644
+index 8c5565992e..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-1.err
++++ /dev/null
+@@ -1,2 +0,0 @@
+-.*relocation R_X86_64_PC32 against symbol `foo' can not be used when making a 
PIE object; recompile with -fPIE
+-#...
+diff --git a/ld/testsuite/ld-x86-64/pr22791-1a.c 
b/ld/testsuite/ld-x86-64/pr22791-1a.c
+deleted file mode 100644
+index cd0130cacd..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-1a.c
++++ /dev/null
 @@ -1,4 +0,0 @@
 -void
 -foo (void)
 -{
 -}
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-1b.s
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-1b.s   2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+diff --git a/ld/testsuite/ld-x86-64/pr22791-1b.s 
b/ld/testsuite/ld-x86-64/pr22791-1b.s
+deleted file mode 100644
+index 9751db49aa..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-1b.s
++++ /dev/null
 @@ -1,6 +0,0 @@
 -      .text
 -      .globl  main
@@ -447,10 +440,11 @@
 -main:
 -      movl    foo(%rip), %eax
 -      .size   main, .-main
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-2.rd
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-2.rd   2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+diff --git a/ld/testsuite/ld-x86-64/pr22791-2.rd 
b/ld/testsuite/ld-x86-64/pr22791-2.rd
+deleted file mode 100644
+index 70deb30d84..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-2.rd
++++ /dev/null
 @@ -1,6 +0,0 @@
 -#failif
 -#...
@@ -458,10 +452,11 @@
 -#...
 -[0-9a-f ]+R_X86_64_NONE.*
 -#...
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-2a.s
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-2a.s   2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+diff --git a/ld/testsuite/ld-x86-64/pr22791-2a.s 
b/ld/testsuite/ld-x86-64/pr22791-2a.s
+deleted file mode 100644
+index 0a855024d7..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-2a.s
++++ /dev/null
 @@ -1,8 +0,0 @@
 -      .text
 -      .p2align 4,,15
@@ -471,10 +466,11 @@
 -      jmp     bar
 -      .size   foo, .-foo
 -      .section        .note.GNU-stack,"",@progbits
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-2b.c
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-2b.c   2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+diff --git a/ld/testsuite/ld-x86-64/pr22791-2b.c 
b/ld/testsuite/ld-x86-64/pr22791-2b.c
+deleted file mode 100644
+index 79ef27c085..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-2b.c
++++ /dev/null
 @@ -1,7 +0,0 @@
 -#include <stdio.h>
 -
@@ -483,10 +479,11 @@
 -{
 -  puts ("PASS");
 -}
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-2c.s
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-2c.s   2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+diff --git a/ld/testsuite/ld-x86-64/pr22791-2c.s 
b/ld/testsuite/ld-x86-64/pr22791-2c.s
+deleted file mode 100644
+index 1460d1b828..0000000000
+--- a/ld/testsuite/ld-x86-64/pr22791-2c.s
++++ /dev/null
 @@ -1,12 +0,0 @@
 -      .text
 -      .p2align 4,,15
@@ -500,10 +497,10 @@
 -      ret
 -      .size   main, .-main
 -      .section        .note.GNU-stack,"",@progbits
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22842b.S
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22842b.S     2019-09-09 
15:19:45.000000000 +0200
-+++ binutils-2.33.1/ld/testsuite/ld-x86-64/pr22842b.S  2019-10-30 
14:26:33.000000000 +0100
+diff --git a/ld/testsuite/ld-x86-64/pr22842b.S 
b/ld/testsuite/ld-x86-64/pr22842b.S
+index f0659cd901..b9dd81345b 100644
+--- a/ld/testsuite/ld-x86-64/pr22842b.S
++++ b/ld/testsuite/ld-x86-64/pr22842b.S
 @@ -7,7 +7,7 @@ main:
          leaq    bar(%rip), %rdi
        addq    %rax, %rdi
@@ -513,14 +510,15 @@
        xorl    %eax, %eax
        popq    %rcx
        retq
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/x86-64.exp
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/x86-64.exp     2019-09-09 
15:19:45.000000000 +0200
-+++ binutils-2.33.1/ld/testsuite/ld-x86-64/x86-64.exp  2019-10-30 
14:26:33.000000000 +0100
-@@ -1244,44 +1244,6 @@ if { [isnative] && [check_compiler_avail
+diff --git a/ld/testsuite/ld-x86-64/x86-64.exp 
b/ld/testsuite/ld-x86-64/x86-64.exp
+index 88f75e0e43..c632fe932c 100644
+--- a/ld/testsuite/ld-x86-64/x86-64.exp
++++ b/ld/testsuite/ld-x86-64/x86-64.exp
+@@ -1244,44 +1244,6 @@ if { [isnative] && [check_compiler_available] } {
+            {readelf -lW pr22393-3b.rd}} \
            "pr22393-3-static" \
        ] \
-       [list \
+-      [list \
 -          "Build pr22791-1.so" \
 -          "-shared" \
 -          "-fPIC -Wa,-mx86-used-note=yes" \
@@ -558,14 +556,14 @@
 -          {{readelf -drW pr22791-2.rd}} \
 -          "pr22791-2" \
 -      ] \
--      [list \
+       [list \
            "Build pr22842.so" \
            "-shared" \
-           "-fPIC -Wa,-mx86-used-note=yes" \
-@@ -1624,15 +1586,6 @@ if { [isnative] && [check_compiler_avail
+@@ -1624,15 +1586,6 @@ if { [isnative] && [check_compiler_available] } {
+           "pr22393-3-static" \
            "pass.out" \
        ] \
-       [list \
+-      [list \
 -          "Run pr22791-2" \
 -          "-pie -Wl,--no-as-needed tmpdir/pr22791-2.so" \
 -          "-Wa,-mx86-used-note=yes" \
@@ -574,14 +572,8 @@
 -          "pass.out" \
 -          "$NOPIE_CFLAGS" \
 -      ] \
--      [list \
+       [list \
            "Run pr22842" \
            "-pie -Wl,--no-as-needed tmpdir/pr22842.so" \
-           "-Wa,-mx86-used-note=yes" \
-Index: binutils-2.33.1/ld/testsuite/ld-x86-64/pr22791-1.err
-===================================================================
---- binutils-2.33.1.orig/ld/testsuite/ld-x86-64/pr22791-1.err  2019-09-09 
15:19:45.000000000 +0200
-+++ /dev/null  1970-01-01 00:00:00.000000000 +0000
-@@ -1,2 +0,0 @@
--.*relocation R_X86_64_PC32 against symbol `foo' can not be used when making a 
PIE object; recompile with -fPIE
--#...
+-- 
+2.25.0

++++++ binutils-skip-rpaths.patch ++++++
--- /var/tmp/diff_new_pack.RsOCyI/_old  2020-03-30 22:52:18.675802731 +0200
+++ /var/tmp/diff_new_pack.RsOCyI/_new  2020-03-30 22:52:18.675802731 +0200
@@ -1,17 +1,26 @@
-diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
-index f4f7ad6b4e..7b0f86031a 100644
---- ld/emultempl/elf32.em
-+++ ld/emultempl/elf32.em
-@@ -1638,8 +1638,35 @@ if test x"$LDEMUL_BEFORE_ALLOCATION" != 
xgld"$EMULATION_NAME"_before_allocation;
-   else
-     ELF_INTERPRETER_SET_DEFAULT=
+diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
+index 42c552b36e..dd0a6b1e60 100644
+--- a/ld/emultempl/elf.em
++++ b/ld/emultempl/elf.em
+@@ -135,6 +135,8 @@ if test x"$LDEMUL_BEFORE_ALLOCATION" != 
xgld"$EMULATION_NAME"_before_allocation;
+   if test x"${ELF_INTERPRETER_NAME}" = x; then
+     ELF_INTERPRETER_NAME=NULL
    fi
 +
 +  libpath_nl=`echo ${NATIVE_LIB_DIRS// /\\\n}`
  fragment <<EOF
  
+ /* This is called after the sections have been attached to output
+diff --git a/ld/ldelf.c b/ld/ldelf.c
+index 2e27cf48a8..7162d0cf91 100644
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -1506,6 +1506,31 @@ ldelf_append_to_separated_string (char **to, char 
*op_arg)
+     }
+ }
+ 
 +static int
-+gld${EMULATION_NAME}_is_contained (const char *path, const char *dc)
++ldelf_is_contained (const char *path, const char *dc)
 +{
 +  while (*dc)
 +    {
@@ -35,19 +44,19 @@
 +  return 0;
 +}
 +
- /* used by before_allocation and handle_option. */
- static void
- gld${EMULATION_NAME}_append_to_separated_string (char **to, char *op_arg)
-@@ -1686,7 +1713,7 @@ gld${EMULATION_NAME}_append_to_separated_string (char 
**to, char *op_arg)
- static void
- gld${EMULATION_NAME}_before_allocation (void)
+ /* This is called after the sections have been attached to output
+    sections, but before any sizes or addresses have been set.  */
+ 
+@@ -1513,7 +1538,7 @@ void
+ ldelf_before_allocation (char *audit, char *depaudit,
+                        const char *default_interpreter_name)
  {
 -  const char *rpath;
 +  char *rpath;
    asection *sinterp;
    bfd *abfd;
    struct bfd_link_hash_entry *ehdr_start = NULL;
-@@ -1745,7 +1772,65 @@ gld${EMULATION_NAME}_before_allocation (void)
+@@ -1572,7 +1597,65 @@ ldelf_before_allocation (char *audit, char *depaudit,
       by dynamic linking.  */
    rpath = command_line.rpath;
    if (rpath == NULL)
@@ -79,8 +88,8 @@
 +
 +         while (*cr)
 +            {
-+             if (gld${EMULATION_NAME}_is_contained (cr, dirs)
-+                 || gld${EMULATION_NAME}_is_contained (cr, "$libpath_nl"))
++             if (ldelf_is_contained (cr, dirs)
++                 || ldelf_is_contained (cr, "$libpath_nl"))
 +               {
 +                 char *cc = cr, *cw = cr;
 +                 while (*cc && *cc != ':')


++++++ cross-avr-size.patch ++++++
--- /var/tmp/diff_new_pack.RsOCyI/_old  2020-03-30 22:52:18.707802748 +0200
+++ /var/tmp/diff_new_pack.RsOCyI/_new  2020-03-30 22:52:18.707802748 +0200
@@ -370,17 +370,17 @@
 +  }
 +
 +  if ((section = bfd_get_section_by_name (file, ".data")) != NULL)
-+    datasize = bfd_section_size (file, section);
++    datasize = bfd_section_size (section);
 +  if ((section = bfd_get_section_by_name (file, ".text")) != NULL)
-+    textsize = bfd_section_size (file, section);
++    textsize = bfd_section_size (section);
 +  if ((section = bfd_get_section_by_name (file, ".bss")) != NULL)
-+    bsssize = bfd_section_size (file, section);
++    bsssize = bfd_section_size (section);
 +  if ((section = bfd_get_section_by_name (file, ".bootloader")) != NULL)
-+    bootloadersize = bfd_section_size (file, section);
++    bootloadersize = bfd_section_size (section);
 +  if ((section = bfd_get_section_by_name (file, ".noinit")) != NULL)
-+    noinitsize = bfd_section_size (file, section);
++    noinitsize = bfd_section_size (section);
 +  if ((section = bfd_get_section_by_name (file, ".eeprom")) != NULL)
-+    eepromsize = bfd_section_size (file, section);
++    eepromsize = bfd_section_size (section);
 +  
 +  bfd_size_type text = textsize + datasize + bootloadersize;
 +  bfd_size_type data = datasize + bsssize + noinitsize;


Reply via email to