aboutsummaryrefslogtreecommitdiff
path: root/ld/ldmain.c
diff options
context:
space:
mode:
authorDave Korn <dave.korn@artimi.com>2011-03-10 10:25:02 +0000
committerDave Korn <dave.korn@artimi.com>2011-03-10 10:25:02 +0000
commit8543fde54aeb0a961400b8d0d14b89dcc7708a2f (patch)
treee405c3cfbdd9e595c0a59a505312fc5a63d2fbdd /ld/ldmain.c
parent8f7e76d0246964e28c57fcbbab65686efb8c10f8 (diff)
downloadgdb-8543fde54aeb0a961400b8d0d14b89dcc7708a2f.zip
gdb-8543fde54aeb0a961400b8d0d14b89dcc7708a2f.tar.gz
gdb-8543fde54aeb0a961400b8d0d14b89dcc7708a2f.tar.bz2
[PATCH] Revise linker plugin API to better preserve link order.
ld/ChangeLog: 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> * ldlang.h (lang_input_statement_type): Add new 'claim_archive' flag, wrapping both it and 'claim' flag in #ifdef ENABLE_PLUGINS. * ldmain.c (add_archive_element): Set it if the member is claimed. * ldlang.c (new_afile): Initialise claim_archive and claimed members. (find_replacements_insert_point): New helper function. (lang_process): After adding and opening replacement files passed from plugin, splice them into correct place in statement list and file chains to preserve critical link order. (lang_list_insert_after): New helper function. (lang_list_remove_tail): Likewise.
Diffstat (limited to 'ld/ldmain.c')
-rw-r--r--ld/ldmain.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 6e86c3d..005a894 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -833,6 +833,7 @@ add_archive_element (struct bfd_link_info *info,
/* Substitute the dummy BFD. */
input->the_bfd = file.handle;
input->claimed = TRUE;
+ input->claim_archive = TRUE;
bfd_make_readable (input->the_bfd);
*subsbfd = input->the_bfd;
}