[PATCH] Do not use dummy bfd suffix for recognition, make it human-readable instead.
authorDave Korn <dave.korn@artimi.com>
Thu, 10 Mar 2011 10:22:24 +0000 (10:22 +0000)
committerDave Korn <dave.korn@artimi.com>
Thu, 10 Mar 2011 10:22:24 +0000 (10:22 +0000)
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.

ld/ChangeLog
ld/plugin.c

index d3c5235571d1ce707f7086526c60bd664a34bbe1..0fdbd4100f95d01dc7b82e50cb0aa53462e635ae 100644 (file)
@@ -1,3 +1,11 @@
+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
index a68aea3cf7a1e107a110865ced94d8978b189ada..2fd82910c5dd4346d312baea952e675aed385bcb 100644 (file)
@@ -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.  */