Initial revision
[openwrt.git] / toolchain / binutils / 2.15.91.0.2 / 701-binutils-dup-sections.patch
1 See http://sources.redhat.com/ml/binutils/2004-08/msg00256.html
2
3 Date: Fri, 20 Aug 2004 21:13:43 -0400
4 From: Daniel Jacobowitz <drow at false dot org>
5 To: binutils at sources dot redhat dot com
6 Subject: Re: Handle SEC_LINK_DUPLICATES_SAME_CONTENTS for arm-linux
7 Message-ID: <20040821011342.GA30319@nevyn.them.org>
8 Mail-Followup-To: binutils at sources dot redhat dot com
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>
10 In-Reply-To: <20040821003737 dot GB16016 at bubble dot modra dot org>
11
12 On Sat, Aug 21, 2004 at 10:07:38AM +0930, Alan Modra wrote:
13 > On Fri, Aug 20, 2004 at 01:32:40PM -0400, Daniel Jacobowitz wrote:
14 > > Thanks.  How's this?
15
16 > As you might have guessed from my rather slack review of your previous
17 > patch, I trust you enough to give the OK without proper review.  But
18 > since you asked...  :)
19
20 Checked in as so.
21
22 -- 
23 Daniel Jacobowitz
24
25 [ rediffed against binutils-2.15.91.0.2, with some elbow grease ]
26
27 2004-08-20  Daniel Jacobowitz  <dan@debian.org>
28
29         * elflink.c (_bfd_elf_section_already_linked): Handle
30         SEC_LINK_DUPLICATES_SAME_CONTENTS.
31 --- binutils-2.15.91.0.2/bfd/elflink.c.old      2004-07-27 21:36:08.000000000 -0700
32 +++ binutils-2.15.91.0.2/bfd/elflink.c  2004-08-26 06:38:07.000000000 -0700
33 @@ -9359,6 +9359,35 @@
34                   (_("%s: %s: warning: duplicate section `%s' has different size\n"),
35                    bfd_archive_filename (abfd), name);
36               break;
37 +           case SEC_LINK_DUPLICATES_SAME_CONTENTS:
38 +             if (sec->size != l->sec->size)
39 +               (*_bfd_error_handler)
40 +                 (_("%B: duplicate section `%A' has different size\n"),
41 +                  bfd_archive_filename (abfd), sec);
42 +             else if (sec->size != 0)
43 +               {
44 +                 bfd_byte *sec_contents, *l_sec_contents;
45 +
46 +                 if (!bfd_malloc_and_get_section (abfd, sec, &sec_contents))
47 +                   (*_bfd_error_handler)
48 +                     (_("%B: warning: could not read contents of section `%A'\n"),
49 +                      bfd_archive_filename (abfd), sec);
50 +                 else if (!bfd_malloc_and_get_section (l->sec->owner, l->sec,
51 +                                                       &l_sec_contents))
52 +                   (*_bfd_error_handler)
53 +                     (_("%B: warning: could not read contents of section `%A'\n"),
54 +                      bfd_archive_filename(l->sec->owner), l->sec);
55 +                 else if (memcmp (sec_contents, l_sec_contents, sec->size) != 0)
56 +                   (*_bfd_error_handler)
57 +                     (_("%B: warning: duplicate section `%A' has different contents\n"),
58 +                      bfd_archive_filename (abfd), sec);
59 +
60 +                 if (sec_contents)
61 +                   free (sec_contents);
62 +                 if (l_sec_contents)
63 +                   free (l_sec_contents);
64 +               }
65 +             break;
66             }
67  
68           /* Set the output_section field so that lang_add_section