[gnome-continuous-yocto/gnomeostree-3.22-krogoth: 105/246] binutils: fix AR issue when opkg is unpacking IPKs containing empty entries



commit e93596fe74927e2e2f4dd7f671994ccb9744cff8
Author: Christophe Chapuis <chris chapuis gmail com>
Date:   Sun Jul 31 18:52:41 2016 +0000

    binutils: fix AR issue when opkg is unpacking IPKs containing empty entries
    
    * this patch is backported from 2.26.1 which is already in oe-core/master
      since this patch:
      commit 37e8b6ecf9f9163d7b5b3becdc2feba57df4838f
      Author: Khem Raj <raj khem gmail com>
      Date:   Thu Jul 7 11:08:29 2016 -0700
      Subject: binutils: Upgrade to 2.26.1
    
      -SRCREV = "71fa566a9cf2597b60a58c1d7c148bab637454a6"
      +SRCREV = "c29838e7f484e0b5714b02e7feb9a88d3a045dd2"
    
    * verified that the patch exists in this SRCREV range:
      ~/projects/binutils $ git log --oneline 
71fa566a9cf2597b60a58c1d7c148bab637454a6..c29838e7f484e0b5714b02e7feb9a88d3a045dd2^C
      ...
      343a405 Allow zero length archive elements
      ...
      so it isn't needed in master branch
    
    (From OE-Core rev: a8f44dff13481feaa97e494a3aeafb5b63d40f3f)
    
    Signed-off-by: Christophe Chapuis <chris chapuis gmail com>
    Signed-off-by: Martin Jansa <Martin Jansa gmail com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/recipes-devtools/binutils/binutils-2.26.inc   |    1 +
 .../binutils/0015-allow-zero-length-elements.patch |  130 ++++++++++++++++++++
 2 files changed, 131 insertions(+), 0 deletions(-)
---
diff --git a/meta/recipes-devtools/binutils/binutils-2.26.inc 
b/meta/recipes-devtools/binutils/binutils-2.26.inc
index 06ce245..4b33b04 100644
--- a/meta/recipes-devtools/binutils/binutils-2.26.inc
+++ b/meta/recipes-devtools/binutils/binutils-2.26.inc
@@ -34,6 +34,7 @@ SRC_URI = "\
      file://0012-Add-support-for-Netlogic-XLP.patch \
      file://0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch \
      file://0014-Correct-nios2-_gp-address-computation.patch \
+     file://0015-allow-zero-length-elements.patch \
      file://aarch64-tls.patch \
 "
 S  = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/binutils/binutils/0015-allow-zero-length-elements.patch 
b/meta/recipes-devtools/binutils/binutils/0015-allow-zero-length-elements.patch
new file mode 100644
index 0000000..3a19fca
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0015-allow-zero-length-elements.patch
@@ -0,0 +1,130 @@
+From 343a405c03ce478634d8ce5a38faae832d39b361 Mon Sep 17 00:00:00 2001
+From: Alan Modra <amodra gmail com>
+Date: Wed, 9 Mar 2016 17:01:54 +1030
+Subject: [PATCH] Allow zero length archive elements
+
+bfd/
+       PR binutils/19775
+       * archive.c (bfd_generic_openr_next_archived_file): Allow zero
+       length elements in the archive.
+       * coff-alpha.c (alpha_ecoff_openr_next_archived_file): Likewise.
+
+binutils/
+       PR binutils/19775
+       * testsuite/binutils-all/ar.exp (proc empty_archive): New proc.
+       Run the new proc.
+       * testsuite/binutils-all/empty: New, empty, file.
+---
+ bfd/ChangeLog                          |    8 ++++++
+ bfd/archive.c                          |    2 +-
+ bfd/coff-alpha.c                       |    2 +-
+ binutils/ChangeLog                     |    7 +++++
+ binutils/testsuite/binutils-all/ar.exp |   40 ++++++++++++++++++++++++++++++++
+ 5 files changed, 57 insertions(+), 2 deletions(-)
+ create mode 100644 binutils/testsuite/binutils-all/empty
+
+diff --git a/bfd/archive.c b/bfd/archive.c
+index b3d03d3..1fc3a94 100644
+--- a/bfd/archive.c
++++ b/bfd/archive.c
+@@ -802,7 +802,7 @@ bfd_generic_openr_next_archived_file (bfd *archive, bfd *last_file)
+            Note that last_file->origin can be odd in the case of
+            BSD-4.4-style element with a long odd size.  */
+         filestart += filestart % 2;
+-        if (filestart <= last_file->proxy_origin)
++        if (filestart < last_file->proxy_origin)
+           {
+             /* Prevent looping.  See PR19256.  */
+             bfd_set_error (bfd_error_malformed_archive);
+diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
+index 7478f2f..fffb9f7 100644
+--- a/bfd/coff-alpha.c
++++ b/bfd/coff-alpha.c
+@@ -2208,7 +2208,7 @@ alpha_ecoff_openr_next_archived_file (bfd *archive, bfd *last_file)
+        BSD-4.4-style element with a long odd size.  */
+       filestart = last_file->proxy_origin + size;
+       filestart += filestart % 2;
+-      if (filestart <= last_file->proxy_origin)
++      if (filestart < last_file->proxy_origin)
+       {
+         /* Prevent looping.  See PR19256.  */
+         bfd_set_error (bfd_error_malformed_archive);
+diff --git a/binutils/ChangeLog b/binutils/ChangeLog
+index 4648d93..b04c745 100644
+--- a/binutils/ChangeLog
++++ b/binutils/ChangeLog
+@@ -1,3 +1,10 @@
++2016-03-09  Nick Clifton  <nickc redhat com>
++
++      PR binutils/19775
++      * testsuite/binutils-all/ar.exp (proc empty_archive): New proc.
++      Run the new proc.
++      * testsuite/binutils-all/empty: New, empty, file.
++
+ 2016-02-12  H.J. Lu  <hongjiu lu intel com>
+ 
+       Backport from master
+diff --git a/binutils/testsuite/binutils-all/ar.exp b/binutils/testsuite/binutils-all/ar.exp
+index 4c33874..e971350 100644
+--- a/binutils/testsuite/binutils-all/ar.exp
++++ b/binutils/testsuite/binutils-all/ar.exp
+@@ -555,6 +555,45 @@ proc move_an_element { } {
+     pass $testname
+ }
+ 
++# PR 19775: Test creating and listing archives with an empty element.
++
++proc empty_archive { } {
++    global AR
++    global srcdir
++    global subdir
++
++    set testname "archive with empty element"
++
++    # FIXME: There ought to be a way to dynamically create an empty file.
++    set empty $srcdir/$subdir/empty
++    
++    if [is_remote host] {
++      set archive artest.a
++      set objfile [remote_download host $empty]
++      remote_file host delete $archive
++    } else {
++      set archive tmpdir/artest.a
++      set objfile $empty
++    }
++
++    remote_file build delete tmpdir/artest.a
++
++    set got [binutils_run $AR "-r -c $archive ${objfile}"]
++    if ![string match "" $got] {
++      fail $testname
++      return
++    }
++
++    # This commmand used to fail with: "Malformed archive".
++    set got [binutils_run $AR "-t $archive"]
++    if ![string match "empty" $got] {
++      fail $testname
++      return
++    }
++
++    pass $testname
++}
++
+ # Run the tests.
+ 
+ # Only run the bfdtest checks if the programs exist.  Since these
+@@ -574,6 +613,7 @@ argument_parsing
+ deterministic_archive
+ delete_an_element
+ move_an_element
++empty_archive
+ 
+ if { [is_elf_format]
+      && ![istarget "*-*-hpux*"]
+diff --git a/binutils/testsuite/binutils-all/empty b/binutils/testsuite/binutils-all/empty
+new file mode 100644
+index 0000000..e69de29
+-- 
+1.7.1
+


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]