From 7a30ac441a4e776e68399cb916c4731b5192e931 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 6 Jul 2021 06:21:54 -0700 Subject: ld: Check archive only for archive member Since plugin_maybe_claim calls bfd_close on the original input BFD if it isn't an archive member, pass NULL to bfd_plugin_close_file_descriptor to indicate that the BFD isn't an archive member. bfd/ PR ld/18028 * plugin.c (bfd_plugin_close_file_descriptor): Check archive only of abfd != NULL. (try_claim): Pass NULL to bfd_plugin_close_file_descriptor if it isn't an archive member. ld/ PR ld/18028 * plugin.c (plugin_input_file): Add comments for abfd and ibfd. (plugin_object_p): Set input->ibfd to NULL if it isn't an archive member. --- ld/plugin.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ld') diff --git a/ld/plugin.c b/ld/plugin.c index bb369f46955..b91a958b812 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -102,7 +102,9 @@ typedef struct view_buffer pointer. */ typedef struct plugin_input_file { + /* The dummy BFD. */ bfd *abfd; + /* The original input BFD. Non-NULL if it is an archive member. */ bfd *ibfd; view_buffer_t view_buffer; char *name; @@ -1220,7 +1222,7 @@ plugin_object_p (bfd *ibfd) file.handle = input; input->abfd = abfd; - input->ibfd = ibfd; + input->ibfd = ibfd->my_archive != NULL ? ibfd : NULL; input->view_buffer.addr = NULL; input->view_buffer.filesize = 0; input->view_buffer.offset = 0; -- cgit v1.2.1