public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* ld -plugin options when plugins are disabled
@ 2020-06-03  9:24 Alan Modra
  2020-06-06  5:09 ` Alan Modra
  0 siblings, 1 reply; 2+ messages in thread
From: Alan Modra @ 2020-06-03  9:24 UTC (permalink / raw)
  To: binutils

This patch makes ld accept and ignore -plugin options when configured
with --disable-plugins.  The idea is to allow using a linker built
without plugin support with a gcc built with plugin support.  Quite
obviously such a combination won't work if using LTO, but gcc has a
habit of passing a bunch of -plugin and -plugin-opt arguments to ld
even when not generating or linking LTO objects.

Why do I want to do this?  Well, it lets me and other binutils
developers answer the question as to whether plugin support breaks
binutils in some areas, without recompiling gcc or arranging to
pass -fno-use-linker-plugin to gcc for testsuite runs.

Does anyone know of a project that tests for linker plugin support
by looking at ld -help output similarly to check_plugin_api_available
below?  If so then the patch may need more tweaking.

	* lexsup.c (ld_options): Accept -plugin and -plugin-opt when
	!ENABLE_PLUGINS.
	* testsuite/lib/ld-lib.exp (check_plugin_api_available): Adjust.

diff --git a/ld/lexsup.c b/ld/lexsup.c
index 412e2e6026..c651a1ccbe 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -185,6 +185,11 @@ static const struct ld_option ld_options[] =
   { {"flto-partition=", required_argument, NULL, OPTION_IGNORE},
     '\0', NULL, N_("Ignored for GCC LTO option compatibility"),
     ONE_DASH },
+#else
+  { {"plugin", required_argument, NULL, OPTION_IGNORE},
+    '\0', N_("PLUGIN"), N_("Load named plugin (ignored)"), ONE_DASH },
+  { {"plugin-opt", required_argument, NULL, OPTION_IGNORE},
+    '\0', N_("ARG"), N_("Send arg to last-loaded plugin (ignored)"), ONE_DASH },
 #endif /* ENABLE_PLUGINS */
   { {"fuse-ld=", required_argument, NULL, OPTION_IGNORE},
     '\0', NULL, N_("Ignored for GCC linker option compatibility"),
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 015eda6eb9..6535881dd1 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -1135,7 +1135,8 @@ proc check_plugin_api_available { } {
     if {![info exists plugin_api_available_saved]} {
 	# Check if the ld used by gcc supports --plugin.
 	set ld_output [remote_exec host $ld "--help"]
-	if { [ string first "-plugin PLUGIN" $ld_output ] >= 0 } {
+	if { [regexp -- "-plugin PLUGIN \[^\n\r\]*" $ld_output line]
+	     && ![regexp "ignored" $line] } {
 	    set plugin_api_available_saved 1
 	} else {
 	    set plugin_api_available_saved 0

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: ld -plugin options when plugins are disabled
  2020-06-03  9:24 ld -plugin options when plugins are disabled Alan Modra
@ 2020-06-06  5:09 ` Alan Modra
  0 siblings, 0 replies; 2+ messages in thread
From: Alan Modra @ 2020-06-06  5:09 UTC (permalink / raw)
  To: binutils

On Wed, Jun 03, 2020 at 06:54:19PM +0930, Alan Modra wrote:
> 	* lexsup.c (ld_options): Accept -plugin and -plugin-opt when
> 	!ENABLE_PLUGINS.
> 	* testsuite/lib/ld-lib.exp (check_plugin_api_available): Adjust.

I didn't hear any objections to this patch, so let's see if committing
it results in howls of protest.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-06-06  5:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-03  9:24 ld -plugin options when plugins are disabled Alan Modra
2020-06-06  5:09 ` Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).