forked from Imagelibrary/binutils-gdb
* ldlang.c: Formatting.
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
|
2006-07-26 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* ldlang.c: Formatting.
|
||||||
|
|
||||||
2006-07-25 Bob Wilson <bob.wilson@acm.org>
|
2006-07-25 Bob Wilson <bob.wilson@acm.org>
|
||||||
|
|
||||||
* emultempl/xtensaelf.em (xtensa_strip_inconsistent_linkonce_sections):
|
* emultempl/xtensaelf.em (xtensa_strip_inconsistent_linkonce_sections):
|
||||||
|
|||||||
83
ld/ldlang.c
83
ld/ldlang.c
@@ -288,7 +288,7 @@ find_section (lang_input_statement_type *file,
|
|||||||
{
|
{
|
||||||
section_iterator_callback_data cb_data = { NULL, FALSE };
|
section_iterator_callback_data cb_data = { NULL, FALSE };
|
||||||
|
|
||||||
bfd_get_section_by_name_if (file->the_bfd, sec->spec.name,
|
bfd_get_section_by_name_if (file->the_bfd, sec->spec.name,
|
||||||
section_iterator_callback, &cb_data);
|
section_iterator_callback, &cb_data);
|
||||||
*multiple_sections_found = cb_data.multiple_sections_found;
|
*multiple_sections_found = cb_data.multiple_sections_found;
|
||||||
return cb_data.found_section;
|
return cb_data.found_section;
|
||||||
@@ -365,35 +365,35 @@ compare_section (sort_type sort, asection *asec, asection *bsec)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Build a Binary Search Tree to sort sections, unlike insertion sort
|
/* Build a Binary Search Tree to sort sections, unlike insertion sort
|
||||||
used in wild_sort(). BST is considerably faster if the number of
|
used in wild_sort(). BST is considerably faster if the number of
|
||||||
of sections are large. */
|
of sections are large. */
|
||||||
|
|
||||||
static lang_section_bst_type **
|
static lang_section_bst_type **
|
||||||
wild_sort_fast (lang_wild_statement_type *wild,
|
wild_sort_fast (lang_wild_statement_type *wild,
|
||||||
struct wildcard_list *sec,
|
struct wildcard_list *sec,
|
||||||
lang_input_statement_type *file ATTRIBUTE_UNUSED,
|
lang_input_statement_type *file ATTRIBUTE_UNUSED,
|
||||||
asection *section)
|
asection *section)
|
||||||
{
|
{
|
||||||
lang_section_bst_type **tree
|
lang_section_bst_type **tree;
|
||||||
= (lang_section_bst_type **) (&(wild->handler_data[1]));
|
|
||||||
|
|
||||||
|
tree = (lang_section_bst_type **) &wild->handler_data[1];
|
||||||
if (!wild->filenames_sorted
|
if (!wild->filenames_sorted
|
||||||
&& (sec == NULL || sec->spec.sorted == none))
|
&& (sec == NULL || sec->spec.sorted == none))
|
||||||
{
|
{
|
||||||
/* Append at the right end of tree. */
|
/* Append at the right end of tree. */
|
||||||
while (*tree)
|
while (*tree)
|
||||||
tree = &((*tree)->right);
|
tree = &((*tree)->right);
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*tree)
|
while (*tree)
|
||||||
{
|
{
|
||||||
/* Find the correct node to append this section. */
|
/* Find the correct node to append this section. */
|
||||||
if (compare_section (sec->spec.sorted, section, (*tree)->section) < 0)
|
if (compare_section (sec->spec.sorted, section, (*tree)->section) < 0)
|
||||||
tree = &((*tree)->left);
|
tree = &((*tree)->left);
|
||||||
else
|
else
|
||||||
tree = &((*tree)->right);
|
tree = &((*tree)->right);
|
||||||
}
|
}
|
||||||
|
|
||||||
return tree;
|
return tree;
|
||||||
@@ -403,10 +403,10 @@ wild_sort_fast (lang_wild_statement_type *wild,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
output_section_callback_fast (lang_wild_statement_type *ptr,
|
output_section_callback_fast (lang_wild_statement_type *ptr,
|
||||||
struct wildcard_list *sec,
|
struct wildcard_list *sec,
|
||||||
asection *section,
|
asection *section,
|
||||||
lang_input_statement_type *file,
|
lang_input_statement_type *file,
|
||||||
void *output ATTRIBUTE_UNUSED)
|
void *output ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
lang_section_bst_type *node;
|
lang_section_bst_type *node;
|
||||||
lang_section_bst_type **tree;
|
lang_section_bst_type **tree;
|
||||||
@@ -427,15 +427,15 @@ output_section_callback_fast (lang_wild_statement_type *ptr,
|
|||||||
/* Convert a sorted sections' BST back to list form. */
|
/* Convert a sorted sections' BST back to list form. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
output_section_callback_tree_to_list (lang_wild_statement_type *ptr,
|
output_section_callback_tree_to_list (lang_wild_statement_type *ptr,
|
||||||
lang_section_bst_type *tree,
|
lang_section_bst_type *tree,
|
||||||
void *output)
|
void *output)
|
||||||
{
|
{
|
||||||
if (tree->left)
|
if (tree->left)
|
||||||
output_section_callback_tree_to_list (ptr, tree->left, output);
|
output_section_callback_tree_to_list (ptr, tree->left, output);
|
||||||
|
|
||||||
lang_add_section (& ptr->children, tree->section,
|
lang_add_section (&ptr->children, tree->section,
|
||||||
(lang_output_section_statement_type *) output);
|
(lang_output_section_statement_type *) output);
|
||||||
|
|
||||||
if (tree->right)
|
if (tree->right)
|
||||||
output_section_callback_tree_to_list (ptr, tree->right, output);
|
output_section_callback_tree_to_list (ptr, tree->right, output);
|
||||||
@@ -1014,7 +1014,7 @@ static struct bfd_hash_table output_section_statement_table;
|
|||||||
initialize the table, fill in an entry and remove the table. */
|
initialize the table, fill in an entry and remove the table. */
|
||||||
|
|
||||||
static struct bfd_hash_entry *
|
static struct bfd_hash_entry *
|
||||||
output_section_statement_newfunc (struct bfd_hash_entry *entry,
|
output_section_statement_newfunc (struct bfd_hash_entry *entry,
|
||||||
struct bfd_hash_table *table,
|
struct bfd_hash_table *table,
|
||||||
const char *string)
|
const char *string)
|
||||||
{
|
{
|
||||||
@@ -1578,15 +1578,15 @@ lang_insert_orphan (asection *s,
|
|||||||
as = *place->section;
|
as = *place->section;
|
||||||
|
|
||||||
if (!as)
|
if (!as)
|
||||||
{
|
{
|
||||||
/* Put the section at the end of the list. */
|
/* Put the section at the end of the list. */
|
||||||
|
|
||||||
/* Unlink the section. */
|
/* Unlink the section. */
|
||||||
bfd_section_list_remove (output_bfd, snew);
|
bfd_section_list_remove (output_bfd, snew);
|
||||||
|
|
||||||
/* Now tack it back on in the right place. */
|
/* Now tack it back on in the right place. */
|
||||||
bfd_section_list_append (output_bfd, snew);
|
bfd_section_list_append (output_bfd, snew);
|
||||||
}
|
}
|
||||||
else if (as != snew && as->prev != snew)
|
else if (as != snew && as->prev != snew)
|
||||||
{
|
{
|
||||||
/* Unlink the section. */
|
/* Unlink the section. */
|
||||||
@@ -2365,7 +2365,7 @@ add_excluded_libs (const char *list)
|
|||||||
entry->name[end - p] = '\0';
|
entry->name[end - p] = '\0';
|
||||||
excluded_libs = entry;
|
excluded_libs = entry;
|
||||||
if (*end == '\0')
|
if (*end == '\0')
|
||||||
break;
|
break;
|
||||||
p = end + 1;
|
p = end + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2553,18 +2553,19 @@ wild (lang_wild_statement_type *s,
|
|||||||
struct wildcard_list *sec;
|
struct wildcard_list *sec;
|
||||||
|
|
||||||
if (s->handler_data[0]
|
if (s->handler_data[0]
|
||||||
&& (s->handler_data[0]->spec.sorted == by_name)
|
&& s->handler_data[0]->spec.sorted == by_name
|
||||||
&& !s->filenames_sorted)
|
&& !s->filenames_sorted)
|
||||||
{
|
{
|
||||||
|
lang_section_bst_type *tree;
|
||||||
|
|
||||||
walk_wild (s, output_section_callback_fast, output);
|
walk_wild (s, output_section_callback_fast, output);
|
||||||
|
|
||||||
if (s->handler_data[1])
|
tree = (lang_section_bst_type *) s->handler_data[1];
|
||||||
output_section_callback_tree_to_list (s,
|
if (tree)
|
||||||
(lang_section_bst_type *) s->handler_data[1],
|
output_section_callback_tree_to_list (s, tree, output);
|
||||||
output);
|
|
||||||
s->handler_data[1] = NULL;
|
s->handler_data[1] = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
walk_wild (s, output_section_callback, output);
|
walk_wild (s, output_section_callback, output);
|
||||||
|
|
||||||
if (default_common_section == NULL)
|
if (default_common_section == NULL)
|
||||||
@@ -3289,7 +3290,7 @@ map_input_to_output_sections
|
|||||||
FAIL ();
|
FAIL ();
|
||||||
break;
|
break;
|
||||||
case lang_address_statement_enum:
|
case lang_address_statement_enum:
|
||||||
/* Mark the specified section with the supplied address.
|
/* Mark the specified section with the supplied address.
|
||||||
|
|
||||||
If this section was actually a segment marker, then the
|
If this section was actually a segment marker, then the
|
||||||
directive is ignored if the linker script explicitly
|
directive is ignored if the linker script explicitly
|
||||||
@@ -3299,13 +3300,13 @@ map_input_to_output_sections
|
|||||||
section directive semantics for backwards compatibilty;
|
section directive semantics for backwards compatibilty;
|
||||||
linker scripts that do not specifically check for
|
linker scripts that do not specifically check for
|
||||||
SEGMENT_START automatically get the old semantics. */
|
SEGMENT_START automatically get the old semantics. */
|
||||||
if (!s->address_statement.segment
|
if (!s->address_statement.segment
|
||||||
|| !s->address_statement.segment->used)
|
|| !s->address_statement.segment->used)
|
||||||
{
|
{
|
||||||
lang_output_section_statement_type *aos
|
lang_output_section_statement_type *aos
|
||||||
= (lang_output_section_statement_lookup
|
= (lang_output_section_statement_lookup
|
||||||
(s->address_statement.section_name));
|
(s->address_statement.section_name));
|
||||||
|
|
||||||
if (aos->bfd_section == NULL)
|
if (aos->bfd_section == NULL)
|
||||||
init_os (aos, NULL);
|
init_os (aos, NULL);
|
||||||
aos->addr_tree = s->address_statement.address;
|
aos->addr_tree = s->address_statement.address;
|
||||||
@@ -3440,7 +3441,7 @@ print_output_section_statement
|
|||||||
correct expression, since the value of DST that is used on
|
correct expression, since the value of DST that is used on
|
||||||
the right hand side will be its final value, not its value
|
the right hand side will be its final value, not its value
|
||||||
just before this expression is evaluated. */
|
just before this expression is evaluated. */
|
||||||
|
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
scan_for_self_assignment (const char * dst, etree_type * rhs)
|
scan_for_self_assignment (const char * dst, etree_type * rhs)
|
||||||
{
|
{
|
||||||
@@ -4146,7 +4147,7 @@ lang_check_section_addresses (void)
|
|||||||
sections[count] = s;
|
sections[count] = s;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count <= 1)
|
if (count <= 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -4163,7 +4164,7 @@ lang_check_section_addresses (void)
|
|||||||
addresses because overlay sections can have overlapping VMAs
|
addresses because overlay sections can have overlapping VMAs
|
||||||
but they must have distinct LMAs. */
|
but they must have distinct LMAs. */
|
||||||
os = s;
|
os = s;
|
||||||
os_start = s_start;
|
os_start = s_start;
|
||||||
os_end = s_end;
|
os_end = s_end;
|
||||||
s = *spp++;
|
s = *spp++;
|
||||||
s_start = bfd_section_lma (output_bfd, s);
|
s_start = bfd_section_lma (output_bfd, s);
|
||||||
@@ -5536,7 +5537,7 @@ relax_sections (void)
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
relax_again = FALSE;
|
relax_again = FALSE;
|
||||||
|
|
||||||
/* Note: pe-dll.c does something like this also. If you find
|
/* Note: pe-dll.c does something like this also. If you find
|
||||||
you need to change this code, you probably need to change
|
you need to change this code, you probably need to change
|
||||||
|
|||||||
Reference in New Issue
Block a user