* write.c (write_object_file): Make use of bfd_section_list_remove.
* config/obj-ecoff.c (ecoff_frob_file): Likewise. * config/tc-mmix.c (mmix_frob_file): Likewise.
This commit is contained in:
parent
9e7b37b31f
commit
7c6beb6988
4 changed files with 41 additions and 55 deletions
|
@ -1,3 +1,9 @@
|
|||
2002-01-05 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* write.c (write_object_file): Make use of bfd_section_list_remove.
|
||||
* config/obj-ecoff.c (ecoff_frob_file): Likewise.
|
||||
* config/tc-mmix.c (mmix_frob_file): Likewise.
|
||||
|
||||
2002-01-04 Jason Thorpe <thorpej@wasabisystems.com>
|
||||
|
||||
* configure.in (i386-*-netbsdelf*): Collapse target into...
|
||||
|
|
|
@ -106,7 +106,7 @@ ecoff_frob_file ()
|
|||
const struct ecoff_debug_swap * const debug_swap
|
||||
= &ecoff_backend (stdoutput)->debug_swap;
|
||||
bfd_vma addr;
|
||||
asection *sec;
|
||||
asection **sec;
|
||||
HDRR *hdr;
|
||||
char *buf;
|
||||
char *set;
|
||||
|
@ -143,53 +143,39 @@ ecoff_frob_file ()
|
|||
};
|
||||
#define n_names ((int) (sizeof (names) / sizeof (names[0])))
|
||||
|
||||
/* Sections that match names, order to be straightened out later. */
|
||||
asection *secs[n_names];
|
||||
int i;
|
||||
|
||||
addr = 0;
|
||||
{
|
||||
/* Sections that match names, order to be straightened out later. */
|
||||
asection *secs[n_names];
|
||||
/* Linked list of sections with non-matching names. Random ordering. */
|
||||
asection *other_sections = 0;
|
||||
/* Pointer to next section, since we're destroying the original
|
||||
ordering. */
|
||||
asection *next;
|
||||
for (i = 0; i < n_names; i++)
|
||||
secs[i] = 0;
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n_names; i++)
|
||||
secs[i] = 0;
|
||||
for (sec = stdoutput->sections; sec != (asection *) NULL; sec = next)
|
||||
{
|
||||
next = sec->next;
|
||||
for (i = 0; i < n_names; i++)
|
||||
if (!strcmp (sec->name, names[i]))
|
||||
{
|
||||
secs[i] = sec;
|
||||
break;
|
||||
}
|
||||
if (i == n_names)
|
||||
for (sec = &stdoutput->sections; *sec != (asection *) NULL; )
|
||||
{
|
||||
for (i = 0; i < n_names; i++)
|
||||
if (!strcmp ((*sec)->name, names[i]))
|
||||
{
|
||||
bfd_set_section_vma (stdoutput, sec, addr);
|
||||
addr += bfd_section_size (stdoutput, sec);
|
||||
sec->next = other_sections;
|
||||
other_sections = sec;
|
||||
secs[i] = *sec;
|
||||
bfd_section_list_remove (stdoutput, sec);
|
||||
break;
|
||||
}
|
||||
if (i == n_names)
|
||||
{
|
||||
bfd_set_section_vma (stdoutput, *sec, addr);
|
||||
addr += bfd_section_size (stdoutput, *sec);
|
||||
sec = &(*sec)->next;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < n_names; i++)
|
||||
if (secs[i])
|
||||
{
|
||||
bfd_set_section_vma (stdoutput, secs[i], addr);
|
||||
addr += bfd_section_size (stdoutput, secs[i]);
|
||||
}
|
||||
for (i = 0; i < n_names; i++)
|
||||
if (secs[i])
|
||||
{
|
||||
sec = secs[i];
|
||||
bfd_set_section_vma (stdoutput, sec, addr);
|
||||
addr += bfd_section_size (stdoutput, sec);
|
||||
}
|
||||
for (i = n_names - 1; i >= 0; i--)
|
||||
if (secs[i])
|
||||
{
|
||||
sec = secs[i];
|
||||
sec->next = other_sections;
|
||||
other_sections = sec;
|
||||
}
|
||||
stdoutput->sections = other_sections;
|
||||
}
|
||||
for (i = n_names - 1; i >= 0; i--)
|
||||
if (secs[i])
|
||||
bfd_section_list_insert (stdoutput, &stdoutput->sections, secs[i]);
|
||||
|
||||
/* Build the ECOFF debugging information. */
|
||||
assert (ecoff_data (stdoutput) != 0);
|
||||
|
|
|
@ -3629,14 +3629,12 @@ mmix_frob_file ()
|
|||
if (bfd_get_section_flags (stdoutput, real_reg_section) & SEC_HAS_CONTENTS)
|
||||
as_fatal (_("register section has contents\n"));
|
||||
|
||||
/* FIXME: This does not seem like the proper way to kill a section,
|
||||
but it's the way it's done elsewhere, like elf64-alpha.c. */
|
||||
/* Really remove the section. */
|
||||
for (secpp = &stdoutput->sections;
|
||||
*secpp != real_reg_section;
|
||||
secpp = &(*secpp)->next)
|
||||
;
|
||||
*secpp = (*secpp)->next;
|
||||
bfd_section_list_remove (stdoutput, secpp);
|
||||
--stdoutput->section_count;
|
||||
}
|
||||
|
||||
|
|
14
gas/write.c
14
gas/write.c
|
@ -1507,22 +1507,18 @@ write_object_file ()
|
|||
#ifdef BFD_ASSEMBLER
|
||||
/* Remove the sections created by gas for its own purposes. */
|
||||
{
|
||||
asection **seclist, *sec;
|
||||
asection **seclist;
|
||||
int i;
|
||||
|
||||
seclist = &stdoutput->sections;
|
||||
while (seclist && *seclist)
|
||||
while (*seclist)
|
||||
{
|
||||
sec = *seclist;
|
||||
while (sec == reg_section || sec == expr_section)
|
||||
if (*seclist == reg_section || *seclist == expr_section)
|
||||
{
|
||||
sec = sec->next;
|
||||
*seclist = sec;
|
||||
bfd_section_list_remove (stdoutput, seclist);
|
||||
stdoutput->section_count--;
|
||||
if (!sec)
|
||||
break;
|
||||
}
|
||||
if (*seclist)
|
||||
else
|
||||
seclist = &(*seclist)->next;
|
||||
}
|
||||
i = 0;
|
||||
|
|
Loading…
Reference in a new issue