diff options
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/ecoff.c | 6 | ||||
-rw-r--r-- | bfd/elf32-tic6x.c | 5 | ||||
-rw-r--r-- | bfd/elf32-v850.c | 2 | ||||
-rw-r--r-- | bfd/elflink.c | 42 | ||||
-rw-r--r-- | bfd/vms-alpha.c | 2 |
6 files changed, 51 insertions, 13 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0c62889..7322659 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2013-04-19 Luca Pizzamiglio <luca.pizzamiglio@gmail.com> + + * ecoff.c: casting the return value of BFD_ALIGN to int + * elf32-tic6x.c: removing unused variables + * elf32-v850.c: redefine the type of a variable (int -> bfd_vma) + * vms-alpha.c: initialize a variable + 2013-04-22 Alan Modra <amodra@gmail.com> PR ld/15382 diff --git a/bfd/ecoff.c b/bfd/ecoff.c index eaf8ada..5add50c 100644 --- a/bfd/ecoff.c +++ b/bfd/ecoff.c @@ -1,7 +1,5 @@ /* Generic ECOFF (Extended-COFF) routines. - Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 - Free Software Foundation, Inc. + Copyright 1990-2013 Free Software Foundation, Inc. Original version by Per Bothner. Full support added by Ian Lance Taylor, ian@cygnus.com. @@ -1888,7 +1886,7 @@ _bfd_ecoff_sizeof_headers (bfd *abfd, ret = (bfd_coff_filhsz (abfd) + bfd_coff_aoutsz (abfd) + c * bfd_coff_scnhsz (abfd)); - return BFD_ALIGN (ret, 16); + return (int) BFD_ALIGN (ret, 16); } /* Get the contents of a section. */ diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index 77c6ad1..7ac6325 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -3313,8 +3313,6 @@ elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) { bfd_signed_vma *local_got; bfd_signed_vma *end_local_got; - char *local_tls_type; - bfd_vma *local_tlsdesc_gotent; bfd_size_type locsymcount; Elf_Internal_Shdr *symtab_hdr; asection *srel; @@ -3355,8 +3353,7 @@ elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) end_local_got = local_got + locsymcount; s = htab->elf.sgot; srel = htab->elf.srelgot; - for (; local_got < end_local_got; - ++local_got, ++local_tls_type, ++local_tlsdesc_gotent) + for (; local_got < end_local_got; ++local_got) { if (*local_got > 0) { diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c index 7516ceb..89724ad 100644 --- a/bfd/elf32-v850.c +++ b/bfd/elf32-v850.c @@ -3141,7 +3141,7 @@ v850_elf_relax_section (bfd *abfd, if (alignmoveto < alignto) { - unsigned int i; + bfd_vma i; align_pad_size = alignto - alignmoveto; #ifdef DEBUG_RELAX diff --git a/bfd/elflink.c b/bfd/elflink.c index 99a1ddf..138c18e 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -1,7 +1,5 @@ /* ELF linking support for BFD. - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 - Free Software Foundation, Inc. + Copyright 1995-2013 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -11844,6 +11842,44 @@ _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info, && ((isec->flags & SEC_DEBUGGING) != 0 || (isec->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)) isec->gc_mark = 1; + /* Look for CODE sections which are going to be discarded. */ + for (isec = ibfd->sections; isec != NULL; isec = isec->next) + if ((isec->flags & SEC_CODE) != 0 + && isec->gc_mark == 0) + { + unsigned int ilen; + asection *dsec; + + ilen = strlen (isec->name); + + /* Determine if there are any debug sections associated + with this code section. If so, remove their mark + (which may have been set above) so that they can be + garbage collected as well. + + Association is determined by the name of the debug section + containing the name of the code section as a suffix. For + example .debug_line.text.foo is a debug section associated + with .text.foo. */ + for (dsec = ibfd->sections; dsec != NULL; dsec = dsec->next) + { + unsigned int dlen; + + if (dsec->gc_mark == 0 + || (dsec->flags & SEC_DEBUGGING) == 0) + continue; + + dlen = strlen (dsec->name); + + if (dlen > ilen + && strncmp (dsec->name + (dlen - ilen), + isec->name, ilen) == 0) + { + dsec->gc_mark = 0; + break; + } + } + } } return TRUE; } diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c index 4edc226..2d757da 100644 --- a/bfd/vms-alpha.c +++ b/bfd/vms-alpha.c @@ -6043,7 +6043,7 @@ evax_bfd_print_etir (FILE *file, const char *name, unsigned char *rec, unsigned int rec_len) { unsigned int off = sizeof (struct vms_egsd); - unsigned int sec_len; + unsigned int sec_len = 0; fprintf (file, _(" %s (len=%u+%u):\n"), name, (unsigned)(rec_len - sizeof (struct vms_eobjrec)), |