aboutsummaryrefslogtreecommitdiff
path: root/ld/ldmain.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-02-07 11:01:22 -0800
committerH.J. Lu <hjl.tools@gmail.com>2015-02-07 11:01:22 -0800
commit35a1e5f3055fc28f129e4d5d0a993218d8af1baf (patch)
tree620a7a1e2a37218fe5b68536d8586822f0b5940c /ld/ldmain.c
parent1952c5cd7d3d24b9647b396731bc4808a2d63d9c (diff)
downloadgdb-35a1e5f3055fc28f129e4d5d0a993218d8af1baf.zip
gdb-35a1e5f3055fc28f129e4d5d0a993218d8af1baf.tar.gz
gdb-35a1e5f3055fc28f129e4d5d0a993218d8af1baf.tar.bz2
Update plugin_maybe_claim
This patch removes the argument of pointer to struct ld_plugin_input_file. This is the first step to extract a plugin_object_p out of plugin_maybe_claim for BFD. * plugin.c: Include "libbfd.h". (plugin_strdup): New. (plugin_maybe_claim): Remove the argument of pointer to struct ld_plugin_input_file. Open and handle input entry. * plugin.h (plugin_maybe_claim): Updated. * ldfile.c (ldfile_try_open_bfd): Call plugin_maybe_claim directly without passing a pointer to struct ld_plugin_input_file. * ldmain.c: Don't include "libbfd.h". (add_archive_element): Call plugin_maybe_claim directly without passing a pointer to struct ld_plugin_input_file.
Diffstat (limited to 'ld/ldmain.c')
-rw-r--r--ld/ldmain.c25
1 files changed, 4 insertions, 21 deletions
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 86f02a6..4b41288 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -41,7 +41,6 @@
#ifdef ENABLE_PLUGINS
#include "plugin.h"
#include "plugin-api.h"
-#include "libbfd.h"
#endif /* ENABLE_PLUGINS */
/* Somewhere above, sys/stat.h got included. */
@@ -793,27 +792,11 @@ add_archive_element (struct bfd_link_info *info,
if (link_info.lto_plugin_active && !no_more_claiming)
{
/* We must offer this archive member to the plugins to claim. */
- const char *filename = (bfd_my_archive (abfd) != NULL
- ? bfd_my_archive (abfd)->filename : abfd->filename);
- int fd = open (filename, O_RDONLY | O_BINARY);
- if (fd >= 0)
+ plugin_maybe_claim (input);
+ if (input->flags.claimed)
{
- struct ld_plugin_input_file file;
-
- /* Offset and filesize must refer to the individual archive
- member, not the whole file, and must exclude the header.
- Fortunately for us, that is how the data is stored in the
- origin field of the bfd and in the arelt_data. */
- file.name = filename;
- file.offset = abfd->origin;
- file.filesize = arelt_size (abfd);
- file.fd = fd;
- plugin_maybe_claim (&file, input);
- if (input->flags.claimed)
- {
- input->flags.claim_archive = TRUE;
- *subsbfd = input->the_bfd;
- }
+ input->flags.claim_archive = TRUE;
+ *subsbfd = input->the_bfd;
}
}
#endif /* ENABLE_PLUGINS */