This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[2/6][PATCH] Do not use dummy bfd suffix for recognition, make it human-readable instead.
- From: Dave Korn <dave dot korn dot cygwin at gmail dot com>
- To: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Sat, 26 Feb 2011 00:45:36 +0000
- Subject: [2/6][PATCH] Do not use dummy bfd suffix for recognition, make it human-readable instead.
- References: <4D684CB8.6020106@gmail.com> <4D684D00.70803@gmail.com>
Hi list,
Removes the ugly name suffix from the dummy IR BFDs as previously discussed.
ld/ChangeLog:
2011-02-20 Dave Korn <...
* 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.
Think this one is straightforward and uncontroversial now.
cheers,
DaveK
>From 5284753e8fae37a619fee7683f234cfdf2dbc05d Mon Sep 17 00:00:00 2001
From: Dave Korn <dave.korn.cygwin@gmail.com>
Date: Sat, 19 Feb 2011 23:24:14 +0000
Subject: [PATCH] Do not use dummy bfd suffix for recognition, make it human-readable instead.
ld/ChangeLog:
2011-02-20 Dave Korn <...
* 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.
---
ld/plugin.c | 24 ++++++++++--------------
1 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/ld/plugin.c b/ld/plugin.c
index 6e3f923..c1672f6 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -38,12 +38,8 @@
/* 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
@@ -250,14 +246,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. */