X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fplugin.c;h=60beacd06276c292312aede9f3c78e301ce5663f;hb=607b483327fdfc75fb193870b3c4e7445ce3f64d;hp=c8ad732d7c538f1b41d9501ff77c9ec78e220e56;hpb=0410b45003d287eb29e9f2b949a29588c663bca1;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/plugin.c b/ld/plugin.c index c8ad732d7c..60beacd062 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -1,5 +1,5 @@ /* Plugin control for the GNU linker. - Copyright (C) 2010-2019 Free Software Foundation, Inc. + Copyright (C) 2010-2020 Free Software Foundation, Inc. This file is part of the GNU Binutils. @@ -23,6 +23,7 @@ #include "bfd.h" #include "bfdlink.h" #include "bfdver.h" +#include "ctf-api.h" #include "ld.h" #include "ldmain.h" #include "ldmisc.h" @@ -174,7 +175,7 @@ static bfd_boolean plugin_notice (struct bfd_link_info *, struct bfd_link_hash_entry *, bfd *, asection *, bfd_vma, flagword); -static const bfd_target * plugin_object_p (bfd *); +static bfd_cleanup plugin_object_p (bfd *); #if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) @@ -335,7 +336,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate) return abfd; } } -report_error: + report_error: einfo (_("%F%P: could not create dummy IR bfd: %E\n")); return NULL; } @@ -1163,7 +1164,12 @@ plugin_strdup (bfd *abfd, const char *str) return copy; } -static const bfd_target * +static void +plugin_cleanup (bfd *abfd ATTRIBUTE_UNUSED) +{ +} + +static bfd_cleanup plugin_object_p (bfd *ibfd) { int claimed; @@ -1178,14 +1184,14 @@ plugin_object_p (bfd *ibfd) if (ibfd->plugin_format != bfd_plugin_unknown) { if (ibfd->plugin_format == bfd_plugin_yes) - return ibfd->plugin_dummy_bfd->xvec; + return plugin_cleanup; else return NULL; } /* We create a dummy BFD, initially empty, to house whatever symbols the plugin may want to add. */ - abfd = plugin_get_ir_dummy_bfd (ibfd->filename, ibfd); + abfd = plugin_get_ir_dummy_bfd (bfd_get_filename (ibfd), ibfd); input = bfd_alloc (abfd, sizeof (*input)); if (input == NULL) @@ -1195,7 +1201,7 @@ plugin_object_p (bfd *ibfd) if (!bfd_plugin_open_input (ibfd, &file)) return NULL; - if (file.name == ibfd->filename) + if (file.name == bfd_get_filename (ibfd)) { /* We must copy filename attached to ibfd if it is not an archive member since it may be freed by bfd_close below. */ @@ -1211,7 +1217,7 @@ plugin_object_p (bfd *ibfd) input->use_mmap = FALSE; input->offset = file.offset; input->filesize = file.filesize; - input->name = plugin_strdup (abfd, ibfd->filename); + input->name = plugin_strdup (abfd, bfd_get_filename (ibfd)); claimed = 0; @@ -1238,7 +1244,8 @@ plugin_object_p (bfd *ibfd) ibfd->plugin_format = bfd_plugin_yes; ibfd->plugin_dummy_bfd = abfd; bfd_make_readable (abfd); - return abfd->xvec; + abfd->no_export = ibfd->no_export; + return plugin_cleanup; } else {