aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/ecoff.c6
-rw-r--r--bfd/elf32-tic6x.c5
-rw-r--r--bfd/elf32-v850.c2
-rw-r--r--bfd/elflink.c42
-rw-r--r--bfd/vms-alpha.c2
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)),