ld lang_statement_union lists
Alan Modra
amodra@bigpond.net.au
Sun Aug 19 19:10:00 GMT 2001
This patch removes "next" from lang_statement_union, which is just an
alias for "header.next". I'm doing this because I remember being
confused at one time (I confuse easily ;-) ), over the fact that
output statements and input statements have a "next" pointer distinct
from header.next to link just those statement types. More importantly,
this allows lang_statement_header_type to change, possibly moving it's
next pointer, without running into trouble with the alias.
ld/ChangeLog
* ldlang.c: When traversing lang_statement_union_type lists,
consistently use "header.next" rather than "next".
* mpw-eppcmac.c: Likewise.
* emultempl/beos.em: Likewise.
* emultempl/hppaelf.em: Likewise.
* emultempl/pe.em: Likewise.
* ldlang.h (union lang_statement_union): Remove "next" field.
--
Alan Modra
Index: ld/ldlang.h
===================================================================
RCS file: /cvs/src/src/ld/ldlang.h,v
retrieving revision 1.13
diff -u -p -r1.13 ldlang.h
--- ldlang.h 2001/08/18 14:54:26 1.13
+++ ldlang.h 2001/08/20 01:23:55
@@ -290,7 +290,6 @@ typedef struct {
typedef union lang_statement_union {
lang_statement_header_type header;
- union lang_statement_union *next;
lang_wild_statement_type wild_statement;
lang_data_statement_type data_statement;
lang_reloc_statement_type reloc_statement;
Index: ld/ldlang.c
===================================================================
RCS file: /cvs/src/src/ld/ldlang.c,v
retrieving revision 1.59
diff -u -p -r1.59 ldlang.c
--- ldlang.c 2001/08/20 01:21:06 1.59
+++ ldlang.c 2001/08/20 01:23:55
@@ -377,7 +377,7 @@ lang_for_each_statement_worker (func, s)
void (*func) PARAMS ((lang_statement_union_type *));
lang_statement_union_type *s;
{
- for (; s != (lang_statement_union_type *) NULL; s = s->next)
+ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
{
func (s);
@@ -1259,7 +1259,7 @@ wild_sort (wild, sec, file, section)
return NULL;
section_name = bfd_get_section_name (file->the_bfd, section);
- for (l = wild->children.head; l != NULL; l = l->next)
+ for (l = wild->children.head; l != NULL; l = l->header.next)
{
lang_input_section_type *ls;
@@ -1389,14 +1389,14 @@ output_section_callback (ptr, sec, secti
be NULL. */
if (list.head != NULL)
{
- ASSERT (list.head->next == NULL);
+ ASSERT (list.head->header.next == NULL);
for (pp = &ptr->children.head;
*pp != before;
- pp = &(*pp)->next)
+ pp = &(*pp)->header.next)
ASSERT (*pp != NULL);
- list.head->next = *pp;
+ list.head->header.next = *pp;
*pp = list.head;
}
}
@@ -1906,7 +1906,7 @@ open_input_bfds (s, force)
lang_statement_union_type *s;
boolean force;
{
- for (; s != (lang_statement_union_type *) NULL; s = s->next)
+ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
{
switch (s->header.type)
{
@@ -1967,8 +1967,8 @@ open_input_bfds (s, force)
if (add.head != NULL)
{
- *add.tail = s->next;
- s->next = add.head;
+ *add.tail = s->header.next;
+ s->header.next = add.head;
}
}
break;
@@ -2062,7 +2062,7 @@ map_input_to_output_sections (s, target,
const char *target;
lang_output_section_statement_type *output_section_statement;
{
- for (; s != (lang_statement_union_type *) NULL; s = s->next)
+ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
{
switch (s->header.type)
{
@@ -2513,7 +2513,7 @@ print_statement_list (s, os)
while (s != NULL)
{
print_statement (s, os);
- s = s->next;
+ s = s->header.next;
}
}
@@ -2619,7 +2619,7 @@ dprint_statement (s, n)
while (s && --n >= 0)
{
print_statement (s, abs_output_section);
- s = s->next;
+ s = s->header.next;
}
}
@@ -2832,7 +2832,7 @@ lang_size_sections (s, output_section_st
ldfile_output_machine);
/* Size up the sections from their constituent parts. */
- for (; s != (lang_statement_union_type *) NULL; s = s->next)
+ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
{
switch (s->header.type)
{
@@ -2855,7 +2855,7 @@ lang_size_sections (s, output_section_st
asection *input;
if (os->children.head == NULL
- || os->children.head->next != NULL
+ || os->children.head->header.next != NULL
|| os->children.head->header.type != lang_input_section_enum)
einfo (_("%P%X: Internal error on COFF shared library section %s\n"),
os->name);
@@ -3197,7 +3197,7 @@ lang_do_assignments (s, output_section_s
unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
ldfile_output_machine);
- for (; s != (lang_statement_union_type *) NULL; s = s->next)
+ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
{
switch (s->header.type)
{
@@ -4006,7 +4006,7 @@ static void
lang_gc_sections_1 (s)
lang_statement_union_type *s;
{
- for (; s != (lang_statement_union_type *) NULL; s = s->next)
+ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
{
switch (s->header.type)
{
Index: ld/mpw-eppcmac.c
===================================================================
RCS file: /cvs/src/src/ld/mpw-eppcmac.c,v
retrieving revision 1.4
diff -u -p -r1.4 mpw-eppcmac.c
--- mpw-eppcmac.c 2001/05/02 16:42:55 1.4
+++ mpw-eppcmac.c 2001/08/20 01:23:56
@@ -572,13 +572,13 @@ gldppcmacos_before_allocation ()
if (os == NULL)
einfo (_("%P%F: can't find output section %s\n"),
sec->output_section->name);
- for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->next)
+ for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next)
{
if ((*pls)->header.type == lang_input_section_enum
&& (*pls)->input_section.section == sec)
{
is = (lang_input_section_type *) *pls;
- *pls = (*pls)->next;
+ *pls = (*pls)->header.next;
break;
}
if ((*pls)->header.type == lang_wild_statement_enum)
@@ -587,13 +587,13 @@ gldppcmacos_before_allocation ()
for (pwls = &(*pls)->wild_statement.children.head;
*pwls != NULL;
- pwls = &(*pwls)->next)
+ pwls = &(*pwls)->header.next)
{
if ((*pwls)->header.type == lang_input_section_enum
&& (*pwls)->input_section.section == sec)
{
is = (lang_input_section_type *) *pwls;
- *pwls = (*pwls)->next;
+ *pwls = (*pwls)->header.next;
break;
}
}
Index: ld/emultempl/beos.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/beos.em,v
retrieving revision 1.12
diff -u -p -r1.12 beos.em
--- beos.em 2001/08/14 02:01:31 1.12
+++ beos.em 2001/08/20 01:23:56
@@ -554,7 +554,7 @@ sort_sections_1 (startptr, next_after, c
vec = ((lang_statement_union_type **)
xmalloc (count * sizeof (lang_statement_union_type *)));
- for (p = *startptr, i = 0; i < count; i++, p = p->next)
+ for (p = *startptr, i = 0; i < count; i++, p = p->header.next)
vec[i] = p;
qsort (vec, count, sizeof (vec[0]), sort_func);
@@ -587,7 +587,7 @@ static void
sort_sections (s)
lang_statement_union_type *s;
{
- for (; s ; s = s->next)
+ for (; s ; s = s->header.next)
switch (s->header.type)
{
case lang_output_section_statement_enum:
@@ -625,7 +625,7 @@ sort_sections (s)
for (end = start, count = 0;
end && (end->header.type
== lang_input_section_enum);
- end = end->next)
+ end = end->header.next)
count++;
p = sort_sections_1 (p, end, count,
@@ -652,7 +652,7 @@ sort_sections (s)
lang_statement_union_type *end;
int count;
- for (end = *p, count = 0; end; end = end->next)
+ for (end = *p, count = 0; end; end = end->header.next)
{
if (end->header.type != lang_input_section_enum)
abort ();
@@ -772,7 +772,7 @@ gld${EMULATION_NAME}_place_orphan (file,
ps[0] = '\$';
ps[1] = 0;
- for (l = os->children.head; l; l = l->next)
+ for (l = os->children.head; l; l = l->header.next)
if (l->header.type == lang_wild_statement_enum)
{
struct wildcard_list *sec;
Index: ld/emultempl/hppaelf.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/hppaelf.em,v
retrieving revision 1.14
diff -u -p -r1.14 hppaelf.em
--- hppaelf.em 2001/08/20 01:21:08 1.14
+++ hppaelf.em 2001/08/20 01:23:57
@@ -106,7 +106,7 @@ hook_in_stub (info, lp)
lang_statement_union_type *l;
boolean ret;
- for (; (l = *lp) != NULL; lp = &l->next)
+ for (; (l = *lp) != NULL; lp = &l->header.next)
{
switch (l->header.type)
{
Index: ld/emultempl/pe.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/pe.em,v
retrieving revision 1.48
diff -u -p -r1.48 pe.em
--- pe.em 2001/08/20 00:22:41 1.48
+++ pe.em 2001/08/20 01:23:59
@@ -1703,7 +1703,7 @@ gld_${EMULATION_NAME}_place_orphan (file
sections. */
found_dollar = false;
- for ( ; *pl != NULL; pl = &(*pl)->next)
+ for ( ; *pl != NULL; pl = &(*pl)->header.next)
{
lang_input_section_type *ls;
const char *lname;
@@ -1730,7 +1730,7 @@ gld_${EMULATION_NAME}_place_orphan (file
if (add_child.head != NULL)
{
- add_child.head->next = *pl;
+ add_child.head->header.next = *pl;
*pl = add_child.head;
}
}
More information about the Binutils
mailing list