diff options
author | Dave Korn <dave.korn@artimi.com> | 2011-03-10 10:25:02 +0000 |
---|---|---|
committer | Dave Korn <dave.korn@artimi.com> | 2011-03-10 10:25:02 +0000 |
commit | 8543fde54aeb0a961400b8d0d14b89dcc7708a2f (patch) | |
tree | e405c3cfbdd9e595c0a59a505312fc5a63d2fbdd /ld/ldlang.h | |
parent | 8f7e76d0246964e28c57fcbbab65686efb8c10f8 (diff) | |
download | gdb-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/ldlang.h')
-rw-r--r-- | ld/ldlang.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/ld/ldlang.h b/ld/ldlang.h index 8aff0b3..db47af8 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -287,9 +287,14 @@ typedef struct lang_input_statement_struct /* Set if the file does not exist. */ unsigned int missing_file : 1; +#ifdef ENABLE_PLUGINS /* Set if the file was claimed by a plugin. */ unsigned int claimed : 1; + /* Set if the file was claimed from an archive. */ + unsigned int claim_archive : 1; +#endif /* ENABLE_PLUGINS */ + } lang_input_statement_type; typedef struct |