aboutsummaryrefslogtreecommitdiff
path: root/bfd/targets.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-06-28 10:18:49 +0930
committerAlan Modra <amodra@gmail.com>2019-06-28 10:18:49 +0930
commit999d6dff80fab12d22c2a8d91923db6bde7fb3e5 (patch)
tree52f94654b2fd1984897dffd3a043f003e7c5b77a /bfd/targets.c
parentf60c61e60e59c2bfc5fdd1b448408c2af287899e (diff)
downloadgdb-999d6dff80fab12d22c2a8d91923db6bde7fb3e5.zip
gdb-999d6dff80fab12d22c2a8d91923db6bde7fb3e5.tar.gz
gdb-999d6dff80fab12d22c2a8d91923db6bde7fb3e5.tar.bz2
Plugin target handling
This patch fixes failures with LTO on mingw32 targets. Since git commit 7cf7fcc83c all possible targets (minus binary) are matched in bfd_check_format_matches rather than lower priority targets being excluded once a higher priority target matches. During linking that results in the ld/plugin.c plugin_object_p function being called with the input file xvec set to plugin_vec, which means plugin_get_ir_dummy_bfd doesn't see the real format of the file (pe-i386). It defaults to the output format instead, which happens to be pei-i386, and this wrong choice persists for the dummy bfd. pei-i386 isn't recognised as a valid linker input file. So, omit recognizing a plugin object in bfd_check_format_matches when some other object format matches, and make sure those other object formats are checked first. * format.c (bfd_check_format_matches): Don't match plugin target if another target matches. Expand comment. * targets.c (_bfd_target_vector): Move plugin_vec after all other non-corefile targets, outside !SELECT_VECS. * config.bfd: Don't handle targ=plugin here. * configure.ac: Don't add plugin to enable_targets or handle in target loop setting selvecs and other target vars. * configure: Regenerate.
Diffstat (limited to 'bfd/targets.c')
-rw-r--r--bfd/targets.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/bfd/targets.c b/bfd/targets.c
index d3d52a5..6b85c62 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -1149,10 +1149,6 @@ static const bfd_target * const _bfd_target_vector[] =
&pj_elf32_vec,
&pj_elf32_le_vec,
-#if BFD_SUPPORTS_PLUGINS
- &plugin_vec,
-#endif
-
&powerpc_boot_vec,
&powerpc_elf32_vec,
&powerpc_elf32_le_vec,
@@ -1305,6 +1301,10 @@ static const bfd_target * const _bfd_target_vector[] =
/* Likewise for ihex. */
&ihex_vec,
+#if BFD_SUPPORTS_PLUGINS
+ &plugin_vec,
+#endif
+
/* Add any required traditional-core-file-handler. */
#ifdef AIX386_CORE