mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-26 15:22:25 +08:00
* config/obj-ecoff.c (ecoff_frob_file_before_fix): Correct section
list traversal. Use bfd_section_list_prepend. * config/tc-mmix.c (mmix_frob_file): Don't needlessly iterate over the section list. * config/tc-xtensa.c (xtensa_remove_section): Delete. (xtensa_insert_section): Delete. (xtensa_move_seg_list_to_beginning): Use bfd_section_list_remove and bfd_section_list_prepend. (xtensa_reorder_seg_list): Use bfd_section_list_remove and bfd_section_list_insert_after.
This commit is contained in:
@ -1,3 +1,16 @@
|
|||||||
|
2005-05-04 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* config/obj-ecoff.c (ecoff_frob_file_before_fix): Correct section
|
||||||
|
list traversal. Use bfd_section_list_prepend.
|
||||||
|
* config/tc-mmix.c (mmix_frob_file): Don't needlessly iterate
|
||||||
|
over the section list.
|
||||||
|
* config/tc-xtensa.c (xtensa_remove_section): Delete.
|
||||||
|
(xtensa_insert_section): Delete.
|
||||||
|
(xtensa_move_seg_list_to_beginning): Use bfd_section_list_remove
|
||||||
|
and bfd_section_list_prepend.
|
||||||
|
(xtensa_reorder_seg_list): Use bfd_section_list_remove and
|
||||||
|
bfd_section_list_insert_after.
|
||||||
|
|
||||||
2005-05-03 Nick Clifton <nickc@redhat.com>
|
2005-05-03 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* config/obj-ecoff.c (ecoff_frob_file_before_fix): Fix invocations
|
* config/obj-ecoff.c (ecoff_frob_file_before_fix): Fix invocations
|
||||||
|
@ -37,7 +37,7 @@ void
|
|||||||
ecoff_frob_file_before_fix (void)
|
ecoff_frob_file_before_fix (void)
|
||||||
{
|
{
|
||||||
bfd_vma addr;
|
bfd_vma addr;
|
||||||
asection **sec;
|
asection *sec;
|
||||||
|
|
||||||
/* Set the section VMA values. We force the .sdata and .sbss
|
/* Set the section VMA values. We force the .sdata and .sbss
|
||||||
sections to the end to ensure that their VMA addresses are close
|
sections to the end to ensure that their VMA addresses are close
|
||||||
@ -80,20 +80,19 @@ ecoff_frob_file_before_fix (void)
|
|||||||
for (i = 0; i < n_names; i++)
|
for (i = 0; i < n_names; i++)
|
||||||
secs[i] = NULL;
|
secs[i] = NULL;
|
||||||
|
|
||||||
for (sec = &stdoutput->sections; *sec != NULL;)
|
for (sec = stdoutput->sections; sec != NULL; sec = sec->next)
|
||||||
{
|
{
|
||||||
for (i = 0; i < n_names; i++)
|
for (i = 0; i < n_names; i++)
|
||||||
if (!strcmp ((*sec)->name, names[i]))
|
if (!strcmp (sec->name, names[i]))
|
||||||
{
|
{
|
||||||
secs[i] = *sec;
|
secs[i] = sec;
|
||||||
bfd_section_list_remove (stdoutput, *sec);
|
bfd_section_list_remove (stdoutput, sec);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == n_names)
|
if (i == n_names)
|
||||||
{
|
{
|
||||||
bfd_set_section_vma (stdoutput, *sec, addr);
|
bfd_set_section_vma (stdoutput, sec, addr);
|
||||||
addr += bfd_section_size (stdoutput, *sec);
|
addr += bfd_section_size (stdoutput, sec);
|
||||||
sec = &(*sec)->next;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = 0; i < n_names; i++)
|
for (i = 0; i < n_names; i++)
|
||||||
@ -104,7 +103,7 @@ ecoff_frob_file_before_fix (void)
|
|||||||
}
|
}
|
||||||
for (i = n_names - 1; i >= 0; i--)
|
for (i = n_names - 1; i >= 0; i--)
|
||||||
if (secs[i])
|
if (secs[i])
|
||||||
bfd_section_list_insert_after (stdoutput, stdoutput->sections, secs[i]);
|
bfd_section_list_prepend (stdoutput, secs[i]);
|
||||||
|
|
||||||
/* Fill in the register masks. */
|
/* Fill in the register masks. */
|
||||||
{
|
{
|
||||||
|
@ -3747,18 +3747,11 @@ mmix_frob_file (void)
|
|||||||
|
|
||||||
if (real_reg_section != NULL)
|
if (real_reg_section != NULL)
|
||||||
{
|
{
|
||||||
asection *secp;
|
|
||||||
|
|
||||||
/* FIXME: Pass error state gracefully. */
|
/* FIXME: Pass error state gracefully. */
|
||||||
if (bfd_get_section_flags (stdoutput, real_reg_section) & SEC_HAS_CONTENTS)
|
if (bfd_get_section_flags (stdoutput, real_reg_section) & SEC_HAS_CONTENTS)
|
||||||
as_fatal (_("register section has contents\n"));
|
as_fatal (_("register section has contents\n"));
|
||||||
|
|
||||||
/* Really remove the section. */
|
bfd_section_list_remove (stdoutput, real_reg_section);
|
||||||
for (secp = stdoutput->sections;
|
|
||||||
secp != real_reg_section;
|
|
||||||
secp = secp->next)
|
|
||||||
;
|
|
||||||
bfd_section_list_remove (stdoutput, secp);
|
|
||||||
--stdoutput->section_count;
|
--stdoutput->section_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9682,39 +9682,6 @@ set_subseg_freq (segT seg, subsegT subseg, float total_f, float target_f)
|
|||||||
|
|
||||||
/* Segment Lists and emit_state Stuff. */
|
/* Segment Lists and emit_state Stuff. */
|
||||||
|
|
||||||
/* Remove the segment from the global sections list. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
xtensa_remove_section (segT sec)
|
|
||||||
{
|
|
||||||
/* Handle brain-dead bfd_section_list_remove macro, which
|
|
||||||
expect the address of the prior section's "next" field, not
|
|
||||||
just the address of the section to remove. */
|
|
||||||
segT ps_next_ptr = stdoutput->sections;
|
|
||||||
|
|
||||||
while (ps_next_ptr != sec && ps_next_ptr != NULL)
|
|
||||||
ps_next_ptr = ps_next_ptr->next;
|
|
||||||
|
|
||||||
assert (ps_next_ptr != NULL);
|
|
||||||
|
|
||||||
bfd_section_list_remove (stdoutput, ps_next_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
xtensa_insert_section (segT after_sec, segT sec)
|
|
||||||
{
|
|
||||||
segT after_sec_next;
|
|
||||||
|
|
||||||
if (after_sec == NULL)
|
|
||||||
after_sec_next = stdoutput->sections;
|
|
||||||
else
|
|
||||||
after_sec_next = after_sec->next;
|
|
||||||
|
|
||||||
bfd_section_list_insert_after (stdoutput, after_sec_next, sec);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xtensa_move_seg_list_to_beginning (seg_list *head)
|
xtensa_move_seg_list_to_beginning (seg_list *head)
|
||||||
{
|
{
|
||||||
@ -9725,9 +9692,11 @@ xtensa_move_seg_list_to_beginning (seg_list *head)
|
|||||||
|
|
||||||
/* Move the literal section to the front of the section list. */
|
/* Move the literal section to the front of the section list. */
|
||||||
assert (literal_section);
|
assert (literal_section);
|
||||||
xtensa_remove_section (literal_section);
|
if (literal_section != stdoutput->sections)
|
||||||
xtensa_insert_section (NULL, literal_section);
|
{
|
||||||
|
bfd_section_list_remove (stdoutput, literal_section);
|
||||||
|
bfd_section_list_prepend (stdoutput, literal_section);
|
||||||
|
}
|
||||||
head = head->next;
|
head = head->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9893,8 +9862,8 @@ xtensa_reorder_seg_list (seg_list *head, segT after)
|
|||||||
assert (literal_section);
|
assert (literal_section);
|
||||||
if (literal_section != after)
|
if (literal_section != after)
|
||||||
{
|
{
|
||||||
xtensa_remove_section (literal_section);
|
bfd_section_list_remove (stdoutput, literal_section);
|
||||||
xtensa_insert_section (after, literal_section);
|
bfd_section_list_insert_after (stdoutput, after, literal_section);
|
||||||
}
|
}
|
||||||
|
|
||||||
head = head->next;
|
head = head->next;
|
||||||
|
Reference in New Issue
Block a user