diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/simple.c | 1 | ||||
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/bfdlink.h | 1 | ||||
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | ld/ldlang.c | 8 | ||||
-rw-r--r-- | ld/ldmain.c | 5 |
7 files changed, 25 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a754213..e291ff1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2007-06-01 Alan Modra <amodra@bigpond.net.au> + + * simple.c (bfd_simple_get_relocated_section_contents): Init + input_bfds_tail. + 2007-05-30 Alan Modra <amodra@bigpond.net.au> * elf.c (elf_fake_sections): Adjust test for SHT_NOBITS sections diff --git a/bfd/simple.c b/bfd/simple.c index fd2fca5..8ebc47e 100644 --- a/bfd/simple.c +++ b/bfd/simple.c @@ -183,6 +183,7 @@ bfd_simple_get_relocated_section_contents (bfd *abfd, /* Fill in the bare minimum number of fields for our purposes. */ memset (&link_info, 0, sizeof (link_info)); link_info.input_bfds = abfd; + link_info.input_bfds_tail = &abfd->link_next; link_info.hash = _bfd_generic_link_hash_table_create (abfd); link_info.callbacks = &callbacks; diff --git a/include/ChangeLog b/include/ChangeLog index 297e8b3..8ab2717 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2007-06-01 Noah Misch <noah@cs.caltech.edu> + Alan Modra <amodra@bigpond.net.au> + + * bfdlink.h (struct bfd_link_info): Add input_bfds_tail. + 2007-05-07 Nathan Froyd <froydnj@codesourcery.com> * libiberty.h (writeargv): Declare. diff --git a/include/bfdlink.h b/include/bfdlink.h index 82fdc5c..a373225 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -395,6 +395,7 @@ struct bfd_link_info /* The list of input BFD's involved in the link. These are chained together via the link_next field. */ bfd *input_bfds; + bfd **input_bfds_tail; /* If a symbol should be created for each input BFD, this is section where those symbols should be placed. It must be a section in diff --git a/ld/ChangeLog b/ld/ChangeLog index c2a1470..17cec65 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2007-06-01 Noah Misch <noah@cs.caltech.edu> + Alan Modra <amodra@bigpond.net.au> + + * ldlang.c (ldlang_add_file): Use input_bfds_tail. + * ldmain.c (main): Init input_bfds_tail. Sort link_info + initialization. + 2007-05-29 Alan Modra <amodra@bigpond.net.au> * emultempl/spuelf.em (base_name): New function, split out from.. diff --git a/ld/ldlang.c b/ld/ldlang.c index dfaf19b..a732525 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -5435,8 +5435,6 @@ lang_for_each_file (void (*func) (lang_input_statement_type *)) void ldlang_add_file (lang_input_statement_type *entry) { - bfd **pp; - lang_statement_append (&file_chain, (lang_statement_union_type *) entry, &entry->next); @@ -5445,9 +5443,9 @@ ldlang_add_file (lang_input_statement_type *entry) a link. */ ASSERT (entry->the_bfd->link_next == NULL); ASSERT (entry->the_bfd != output_bfd); - for (pp = &link_info.input_bfds; *pp != NULL; pp = &(*pp)->link_next) - ; - *pp = entry->the_bfd; + + *link_info.input_bfds_tail = entry->the_bfd; + link_info.input_bfds_tail = &entry->the_bfd->link_next; entry->the_bfd->usrdata = entry; bfd_set_gp_size (entry->the_bfd, g_switch_value); diff --git a/ld/ldmain.c b/ld/ldmain.c index bbd769f..354c41a 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -265,15 +265,16 @@ main (int argc, char **argv) link_info.keep_memory = TRUE; link_info.combreloc = TRUE; link_info.strip_discarded = TRUE; - link_info.callbacks = &link_callbacks; link_info.emit_hash = TRUE; + link_info.callbacks = &link_callbacks; + link_info.input_bfds_tail = &link_info.input_bfds; /* SVR4 linkers seem to set DT_INIT and DT_FINI based on magic _init and _fini symbols. We are compatible. */ link_info.init_function = "_init"; link_info.fini_function = "_fini"; + link_info.relax_pass = 1; link_info.pei386_auto_import = -1; link_info.spare_dynamic_tags = 5; - link_info.relax_pass = 1; ldfile_add_arch (""); emulation = get_emulation (argc, argv); |