diff options
author | Dave Korn <dave.korn@artimi.com> | 2011-03-10 10:22:24 +0000 |
---|---|---|
committer | Dave Korn <dave.korn@artimi.com> | 2011-03-10 10:22:24 +0000 |
commit | cf4dc96f0f1bf17026c35a59ec7b2509ea88c64b (patch) | |
tree | 832a4f63802e1a6583e03ec19640556c68832f24 /ld | |
parent | 4bf0cafb353d8856baa25968877cd84f7a3504ae (diff) | |
download | binutils-cf4dc96f0f1bf17026c35a59ec7b2509ea88c64b.tar.gz binutils-cf4dc96f0f1bf17026c35a59ec7b2509ea88c64b.tar.bz2 binutils-cf4dc96f0f1bf17026c35a59ec7b2509ea88c64b.zip |
[PATCH] Do not use dummy bfd suffix for recognition, make it human-readable instead.
ld/ChangeLog:
2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com>
* plugin.c (IRONLY_SUFFIX): Revise to nicely human-readable form.
(IRONLY_SUFFIX_LEN): Delete.
(plugin_get_ir_dummy_bfd): Don't append IRONLY_SUFFIX.
(is_ir_dummy_bfd): Don't look for suffix; check claimed flag of
enclosing lang input statement instead.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/plugin.c | 24 |
2 files changed, 18 insertions, 14 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index d3c5235571d..0fdbd4100f9 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,13 @@ 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> + * plugin.c (IRONLY_SUFFIX): Revise to nicely human-readable form. + (IRONLY_SUFFIX_LEN): Delete. + (plugin_get_ir_dummy_bfd): Don't append IRONLY_SUFFIX. + (is_ir_dummy_bfd): Don't look for suffix; check claimed flag of + enclosing lang input statement instead. + +2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com> + * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Preserve alignment of input sections when creating orphan output sections during relocatable link. diff --git a/ld/plugin.c b/ld/plugin.c index a68aea3cf7a..2fd82910c5d 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -41,12 +41,8 @@ bfd_boolean report_plugin_symbols; /* The suffix to append to the name of the real (claimed) object file when generating a dummy BFD to hold the IR symbols sent from the - plugin. */ -#define IRONLY_SUFFIX ".ironly\004" - -/* This is sizeof an array of chars, not sizeof a const char *. We - also have to avoid inadvertently counting the trailing NUL. */ -#define IRONLY_SUFFIX_LEN (sizeof (IRONLY_SUFFIX) - 1) + plugin. For cosmetic use only; appears in maps, crefs etc. */ +#define IRONLY_SUFFIX " (symbol from plugin)" /* Stores a single argument passed to a plugin. */ typedef struct plugin_arg @@ -253,14 +249,14 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate) static bfd_boolean is_ir_dummy_bfd (const bfd *abfd) { - size_t namlen; - - if (abfd == NULL) - return FALSE; - namlen = strlen (abfd->filename); - if (namlen < IRONLY_SUFFIX_LEN) - return FALSE; - return !strcmp (abfd->filename + namlen - IRONLY_SUFFIX_LEN, IRONLY_SUFFIX); + /* ABFD can sometimes legitimately be NULL, e.g. when called from one + of the linker callbacks for a symbol in the *ABS* or *UND* sections. + Likewise, the usrdata field may be NULL if ABFD was added by the + backend without a corresponding input statement, as happens e.g. + when processing DT_NEEDED dependencies. */ + return abfd + && abfd->usrdata + && ((lang_input_statement_type *)(abfd->usrdata))->claimed; } /* Helpers to convert between BFD and GOLD symbol formats. */ |