patches/binutils/2.15.91.0.2/binutils-dup-sections.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue May 01 16:49:15 2007 +0000 (2007-05-01)
changeset 56 07a6a48962b7
permissions -rw-r--r--
Merge patches sent by Robert P. J. Day <rpjday@mindspring.com>.
Warning: the buildroot folks purposedly removed the skip-comment patch but didn't really said why. Keeping it for the sake of having it in svn just in case (removing it will be easier thant not having it at all).
yann@1
     1
See http://sources.redhat.com/ml/binutils/2004-08/msg00256.html
yann@1
     2
yann@1
     3
Date: Fri, 20 Aug 2004 21:13:43 -0400
yann@1
     4
From: Daniel Jacobowitz <drow at false dot org>
yann@1
     5
To: binutils at sources dot redhat dot com
yann@1
     6
Subject: Re: Handle SEC_LINK_DUPLICATES_SAME_CONTENTS for arm-linux
yann@1
     7
Message-ID: <20040821011342.GA30319@nevyn.them.org>
yann@1
     8
Mail-Followup-To: binutils at sources dot redhat dot com
yann@1
     9
References: <20040818145518.GA9774@nevyn.them.org> <20040819055040.GA11820@lucon.org> <20040819080034.GE21716@bubble.modra.org> <20040820173240.GA17678@nevyn.them.org> <20040821003737.GB16016@bubble.modra.org>
yann@1
    10
In-Reply-To: <20040821003737 dot GB16016 at bubble dot modra dot org>
yann@1
    11
yann@1
    12
On Sat, Aug 21, 2004 at 10:07:38AM +0930, Alan Modra wrote:
yann@1
    13
> On Fri, Aug 20, 2004 at 01:32:40PM -0400, Daniel Jacobowitz wrote:
yann@1
    14
> > Thanks.  How's this?
yann@1
    15
> 
yann@1
    16
> As you might have guessed from my rather slack review of your previous
yann@1
    17
> patch, I trust you enough to give the OK without proper review.  But
yann@1
    18
> since you asked...  :)
yann@1
    19
yann@1
    20
Checked in as so.
yann@1
    21
yann@1
    22
-- 
yann@1
    23
Daniel Jacobowitz
yann@1
    24
yann@1
    25
[ rediffed against binutils-2.15.91.0.2, with some elbow grease ]
yann@1
    26
yann@1
    27
2004-08-20  Daniel Jacobowitz  <dan@debian.org>
yann@1
    28
yann@1
    29
	* elflink.c (_bfd_elf_section_already_linked): Handle
yann@1
    30
	SEC_LINK_DUPLICATES_SAME_CONTENTS.
yann@1
    31
--- binutils-2.15.91.0.2/bfd/elflink.c.old	2004-07-27 21:36:08.000000000 -0700
yann@1
    32
+++ binutils-2.15.91.0.2/bfd/elflink.c	2004-08-26 06:38:07.000000000 -0700
yann@1
    33
@@ -9359,6 +9359,35 @@
yann@1
    34
 		  (_("%s: %s: warning: duplicate section `%s' has different size\n"),
yann@1
    35
 		   bfd_archive_filename (abfd), name);
yann@1
    36
 	      break;
yann@1
    37
+	    case SEC_LINK_DUPLICATES_SAME_CONTENTS:
yann@1
    38
+	      if (sec->size != l->sec->size)
yann@1
    39
+		(*_bfd_error_handler)
yann@1
    40
+		  (_("%B: duplicate section `%A' has different size\n"),
yann@1
    41
+		   bfd_archive_filename (abfd), sec);
yann@1
    42
+	      else if (sec->size != 0)
yann@1
    43
+		{
yann@1
    44
+		  bfd_byte *sec_contents, *l_sec_contents;
yann@1
    45
+
yann@1
    46
+		  if (!bfd_malloc_and_get_section (abfd, sec, &sec_contents))
yann@1
    47
+		    (*_bfd_error_handler)
yann@1
    48
+		      (_("%B: warning: could not read contents of section `%A'\n"),
yann@1
    49
+		       bfd_archive_filename (abfd), sec);
yann@1
    50
+		  else if (!bfd_malloc_and_get_section (l->sec->owner, l->sec,
yann@1
    51
+							&l_sec_contents))
yann@1
    52
+		    (*_bfd_error_handler)
yann@1
    53
+		      (_("%B: warning: could not read contents of section `%A'\n"),
yann@1
    54
+		       bfd_archive_filename(l->sec->owner), l->sec);
yann@1
    55
+		  else if (memcmp (sec_contents, l_sec_contents, sec->size) != 0)
yann@1
    56
+		    (*_bfd_error_handler)
yann@1
    57
+		      (_("%B: warning: duplicate section `%A' has different contents\n"),
yann@1
    58
+		       bfd_archive_filename (abfd), sec);
yann@1
    59
+
yann@1
    60
+		  if (sec_contents)
yann@1
    61
+		    free (sec_contents);
yann@1
    62
+		  if (l_sec_contents)
yann@1
    63
+		    free (l_sec_contents);
yann@1
    64
+		}
yann@1
    65
+	      break;
yann@1
    66
 	    }
yann@1
    67
 
yann@1
    68
 	  /* Set the output_section field so that lang_add_section