summaryrefslogtreecommitdiff
path: root/system/binutils/srec.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/binutils/srec.patch')
-rw-r--r--system/binutils/srec.patch127
1 files changed, 0 insertions, 127 deletions
diff --git a/system/binutils/srec.patch b/system/binutils/srec.patch
deleted file mode 100644
index ce3eac10b..000000000
--- a/system/binutils/srec.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-X-Git-Url: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blobdiff_plain;f=bfd%2Fmerge.c;h=632c852390355829f95e149b7d72f0982a1a0b2b;hp=fb7c0858bebb27b5375564054c148b2b68124554;hb=ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e;hpb=65d8004072ccb15441c143c380949d785a8446cd
-
-diff --git a/bfd/merge.c b/bfd/merge.c
-index fb7c085..632c852 100644
---- a/bfd/merge.c
-+++ b/bfd/merge.c
-@@ -621,7 +621,7 @@ is_suffix (const struct sec_merge_hash_entry *A,
-
- /* This is a helper function for _bfd_merge_sections. It attempts to
- merge strings matching suffixes of longer strings. */
--static bfd_boolean
-+static struct sec_merge_sec_info *
- merge_strings (struct sec_merge_info *sinfo)
- {
- struct sec_merge_hash_entry **array, **a, *e;
-@@ -633,7 +633,7 @@ merge_strings (struct sec_merge_info *sinfo)
- amt = sinfo->htab->size * sizeof (struct sec_merge_hash_entry *);
- array = (struct sec_merge_hash_entry **) bfd_malloc (amt);
- if (array == NULL)
-- return FALSE;
-+ return NULL;
-
- for (e = sinfo->htab->first, a = array; e; e = e->next)
- if (e->alignment)
-@@ -703,11 +703,6 @@ merge_strings (struct sec_merge_info *sinfo)
- }
- }
- secinfo->sec->size = size;
-- if (secinfo->sec->alignment_power != 0)
-- {
-- bfd_size_type align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
-- secinfo->sec->size = (secinfo->sec->size + align - 1) & -align;
-- }
-
- /* And now adjust the rest, removing them from the chain (but not hashtable)
- at the same time. */
-@@ -724,7 +719,7 @@ merge_strings (struct sec_merge_info *sinfo)
- e->u.index = e->u.suffix->u.index + (e->u.suffix->len - e->len);
- }
- }
-- return TRUE;
-+ return secinfo;
- }
-
- /* This function is called once after all SEC_MERGE sections are registered
-@@ -740,7 +735,8 @@ _bfd_merge_sections (bfd *abfd,
-
- for (sinfo = (struct sec_merge_info *) xsinfo; sinfo; sinfo = sinfo->next)
- {
-- struct sec_merge_sec_info * secinfo;
-+ struct sec_merge_sec_info *secinfo;
-+ bfd_size_type align;
-
- if (! sinfo->chain)
- continue;
-@@ -751,6 +747,7 @@ _bfd_merge_sections (bfd *abfd,
- secinfo->next = NULL;
-
- /* Record the sections into the hash table. */
-+ align = 1;
- for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
- if (secinfo->sec->flags & SEC_EXCLUDE)
- {
-@@ -758,18 +755,25 @@ _bfd_merge_sections (bfd *abfd,
- if (remove_hook)
- (*remove_hook) (abfd, secinfo->sec);
- }
-- else if (! record_section (sinfo, secinfo))
-- return FALSE;
--
-- if (secinfo)
-- continue;
-+ else
-+ {
-+ if (!record_section (sinfo, secinfo))
-+ return FALSE;
-+ if (align)
-+ {
-+ align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
-+ if ((secinfo->sec->size & (align - 1)) != 0)
-+ align = 0;
-+ }
-+ }
-
- if (sinfo->htab->first == NULL)
- continue;
-
- if (sinfo->htab->strings)
- {
-- if (!merge_strings (sinfo))
-+ secinfo = merge_strings (sinfo);
-+ if (!secinfo)
- return FALSE;
- }
- else
-@@ -789,8 +793,7 @@ _bfd_merge_sections (bfd *abfd,
- e->secinfo->first_str = e;
- size = 0;
- }
-- size = (size + e->alignment - 1)
-- & ~((bfd_vma) e->alignment - 1);
-+ size = (size + e->alignment - 1) & ~((bfd_vma) e->alignment - 1);
- e->u.index = size;
- size += e->len;
- secinfo = e->secinfo;
-@@ -798,11 +801,16 @@ _bfd_merge_sections (bfd *abfd,
- secinfo->sec->size = size;
- }
-
-- /* Finally remove all input sections which have not made it into
-- the hash table at all. */
-- for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-- if (secinfo->first_str == NULL)
-- secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP;
-+ /* If the input sections were padded according to their alignments,
-+ then pad the output too. */
-+ if (align)
-+ secinfo->sec->size = (secinfo->sec->size + align - 1) & -align;
-+
-+ /* Finally remove all input sections which have not made it into
-+ the hash table at all. */
-+ for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-+ if (secinfo->first_str == NULL)
-+ secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP;
- }
-
- return TRUE;