Hello community,

here is the log from the commit of package binutils for openSUSE:Factory 
checked in at 2013-07-31 18:31:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/binutils (Old)
 and      /work/SRC/openSUSE:Factory/.binutils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "binutils"

Changes:
--------
--- /work/SRC/openSUSE:Factory/binutils/binutils.changes        2013-07-23 
12:29:50.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.binutils.new/binutils.changes   2013-07-31 
18:31:55.000000000 +0200
@@ -1,0 +2,5 @@
+Mon Jul 29 18:13:43 UTC 2013 - [email protected]
+
+- warning-symbol-sections.patch: correct test in last change
+
+-------------------------------------------------------------------
cross-aarch64-binutils.changes: same change
cross-arm-binutils.changes: same change
cross-avr-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-mips-binutils.changes: same change
cross-ppc-binutils.changes: same change
cross-ppc64-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

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

Other differences:
------------------
cross-aarch64-binutils.spec: same change
cross-arm-binutils.spec: same change
cross-avr-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-mips-binutils.spec: same change
cross-ppc-binutils.spec: same change
cross-ppc64-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
++++++ warning-symbol-sections.patch ++++++
--- /var/tmp/diff_new_pack.7CaTW9/_old  2013-07-31 18:31:57.000000000 +0200
+++ /var/tmp/diff_new_pack.7CaTW9/_new  2013-07-31 18:31:57.000000000 +0200
@@ -1,3 +1,10 @@
+2013-07-25  Alan Modra  <[email protected]>
+
+       PR ld/15762
+       PR ld/12761
+       * elflink.c (elf_link_add_object_symbols): Correct test in
+       last patch.  Remove unnecessary code.
+
 2013-07-20  Alan Modra  <[email protected]>
 
        PR ld/15762
@@ -9,12 +16,146 @@
 ===================================================================
 --- binutils-2.23.2.orig/bfd/elflink.c
 +++ binutils-2.23.2/bfd/elflink.c
-@@ -3468,7 +3468,7 @@ elf_link_add_object_symbols (bfd *abfd,
-                     FALSE, bed->collect, NULL)))
-               goto error_return;
+@@ -3368,6 +3368,7 @@ elf_link_add_object_symbols (bfd *abfd,
+   bfd_size_type old_dynstr_size = 0;
+   size_t tabsize = 0;
+   size_t hashsize = 0;
++  asection *s;
+ 
+   htab = elf_hash_table (info);
+   bed = get_elf_backend_data (abfd);
+@@ -3409,75 +3410,64 @@ elf_link_add_object_symbols (bfd *abfd,
+      symbol.  This differs from .gnu.warning sections, which generate
+      warnings when they are included in an output file.  */
+   /* PR 12761: Also generate this warning when building shared libraries.  */
+-  if (info->executable || info->shared)
++  for (s = abfd->sections; s != NULL; s = s->next)
+     {
+-      asection *s;
++      const char *name;
+ 
+-      for (s = abfd->sections; s != NULL; s = s->next)
++      name = bfd_get_section_name (abfd, s);
++      if (CONST_STRNEQ (name, ".gnu.warning."))
+       {
+-        const char *name;
++        char *msg;
++        bfd_size_type sz;
+ 
+-        name = bfd_get_section_name (abfd, s);
+-        if (CONST_STRNEQ (name, ".gnu.warning."))
++        name += sizeof ".gnu.warning." - 1;
++
++        /* If this is a shared object, then look up the symbol
++           in the hash table.  If it is there, and it is already
++           been defined, then we will not be using the entry
++           from this shared object, so we don't need to warn.
++           FIXME: If we see the definition in a regular object
++           later on, we will warn, but we shouldn't.  The only
++           fix is to keep track of what warnings we are supposed
++           to emit, and then handle them all at the end of the
++           link.  */
++        if (dynamic)
+           {
+-            char *msg;
+-            bfd_size_type sz;
++            struct elf_link_hash_entry *h;
++
++            h = elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE);
++
++            /* FIXME: What about bfd_link_hash_common?  */
++            if (h != NULL
++                && (h->root.type == bfd_link_hash_defined
++                    || h->root.type == bfd_link_hash_defweak))
++              continue;
++          }
+ 
+-            name += sizeof ".gnu.warning." - 1;
++        sz = s->size;
++        msg = (char *) bfd_alloc (abfd, sz + 1);
++        if (msg == NULL)
++          goto error_return;
  
+-            /* If this is a shared object, then look up the symbol
+-               in the hash table.  If it is there, and it is already
+-               been defined, then we will not be using the entry
+-               from this shared object, so we don't need to warn.
+-               FIXME: If we see the definition in a regular object
+-               later on, we will warn, but we shouldn't.  The only
+-               fix is to keep track of what warnings we are supposed
+-               to emit, and then handle them all at the end of the
+-               link.  */
+-            if (dynamic)
+-              {
+-                struct elf_link_hash_entry *h;
+-
+-                h = elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE);
+-
+-                /* FIXME: What about bfd_link_hash_common?  */
+-                if (h != NULL
+-                    && (h->root.type == bfd_link_hash_defined
+-                        || h->root.type == bfd_link_hash_defweak))
+-                  {
+-                    /* We don't want to issue this warning.  Clobber
+-                       the section size so that the warning does not
+-                       get copied into the output file.  */
+-                    s->size = 0;
+-                    continue;
+-                  }
+-              }
+-
+-            sz = s->size;
+-            msg = (char *) bfd_alloc (abfd, sz + 1);
+-            if (msg == NULL)
+-              goto error_return;
+-
+-            if (! bfd_get_section_contents (abfd, s, msg, 0, sz))
+-              goto error_return;
+-
+-            msg[sz] = '\0';
+-
+-            if (! (_bfd_generic_link_add_one_symbol
+-                   (info, abfd, name, BSF_WARNING, s, 0, msg,
+-                    FALSE, bed->collect, NULL)))
+-              goto error_return;
+-
 -            if (! info->relocatable)
-+            if (!info->relocatable && !info->shared)
-               {
-                 /* Clobber the section size so that the warning does
-                    not get copied into the output file.  */
+-              {
+-                /* Clobber the section size so that the warning does
+-                   not get copied into the output file.  */
+-                s->size = 0;
+-
+-                /* Also set SEC_EXCLUDE, so that symbols defined in
+-                   the warning section don't get copied to the output.  */
+-                s->flags |= SEC_EXCLUDE;
+-              }
++        if (! bfd_get_section_contents (abfd, s, msg, 0, sz))
++          goto error_return;
++
++        msg[sz] = '\0';
++
++        if (! (_bfd_generic_link_add_one_symbol
++               (info, abfd, name, BSF_WARNING, s, 0, msg,
++                FALSE, bed->collect, NULL)))
++          goto error_return;
++
++        if (!info->relocatable && info->executable)
++          {
++            /* Clobber the section size so that the warning does
++               not get copied into the output file.  */
++            s->size = 0;
++
++            /* Also set SEC_EXCLUDE, so that symbols defined in
++               the warning section don't get copied to the output.  */
++            s->flags |= SEC_EXCLUDE;
+           }
+       }
+     }
+@@ -3503,7 +3493,6 @@ elf_link_add_object_symbols (bfd *abfd,
+     goto error_return;
+   else
+     {
+-      asection *s;
+       const char *soname = NULL;
+       char *audit = NULL;
+       struct bfd_link_needed_list *rpath = NULL, *runpath = NULL;

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to