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 - schwab(a)suse.de
+
+- 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 <amodra(a)gmail.com>
+
+ 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 <amodra(a)gmail.com>
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: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org