public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Plugin tests in ld testsuite
@ 2020-05-27  3:43 Stephen Casner
  2020-05-29  3:13 ` Alan Modra
  0 siblings, 1 reply; 12+ messages in thread
From: Stephen Casner @ 2020-05-27  3:43 UTC (permalink / raw)
  To: binutils

I'm trying to fix all the unexpected failures for the pdp11-aout
target in the gas, ld and binutils testsuites.  I fixed a bug in
bfd/pdp11.c that allowed "PASS: plugin claimfile lost symbol", but
I've been tracing the execution of the next test, "plugin claimfile
replace symbol", and I don't see how to fix it.  That test fails
because the func.o module is claimed by the plugin and yet execution
proceeds through loading all the symbols for that module.  The test
fails because the symbols is _not_ undefined.

I am also working on implementation of a pdp11-elf32 target.  That
target does not use the bfd/pdp11.c code at all, yet the same test
fails in the same manner.

Is there a target that passes this test so I can compare the execution
path?  I had hoped to use x86_64-linux-gnu but I have not succeeded in
building a cross for that on my MacOS system.

                                                        -- Steve

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

* Re: Plugin tests in ld testsuite
  2020-05-27  3:43 Plugin tests in ld testsuite Stephen Casner
@ 2020-05-29  3:13 ` Alan Modra
  2020-05-29  5:43   ` Stephen Casner
  2020-06-16  0:22   ` Stephen Casner
  0 siblings, 2 replies; 12+ messages in thread
From: Alan Modra @ 2020-05-29  3:13 UTC (permalink / raw)
  To: Stephen Casner; +Cc: binutils

On Tue, May 26, 2020 at 08:43:31PM -0700, Stephen Casner wrote:
> I'm trying to fix all the unexpected failures for the pdp11-aout
> target in the gas, ld and binutils testsuites.  I fixed a bug in
> bfd/pdp11.c that allowed "PASS: plugin claimfile lost symbol", but
> I've been tracing the execution of the next test, "plugin claimfile
> replace symbol", and I don't see how to fix it.  That test fails
> because the func.o module is claimed by the plugin and yet execution
> proceeds through loading all the symbols for that module.  The test
> fails because the symbols is _not_ undefined.
> 
> I am also working on implementation of a pdp11-elf32 target.  That
> target does not use the bfd/pdp11.c code at all, yet the same test
> fails in the same manner.
> 
> Is there a target that passes this test so I can compare the execution
> path?  I had hoped to use x86_64-linux-gnu but I have not succeeded in
> building a cross for that on my MacOS system.

$ grep 'PASS: plugin claimfile lost symbol' */ld/ld.log
aarch64-linux/ld/ld.log:PASS: plugin claimfile lost symbol
aarch64-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
arm-linuxeabi/ld/ld.log:PASS: plugin claimfile lost symbol
arm-linuxeabi/ld/ld.log:PASS: plugin claimfile lost symbol with source
hppa-linux/ld/ld.log:PASS: plugin claimfile lost symbol
hppa-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
m68k-linux/ld/ld.log:PASS: plugin claimfile lost symbol
m68k-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
microblaze-linux/ld/ld.log:PASS: plugin claimfile lost symbol
microblaze-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
mips64-linux/ld/ld.log:PASS: plugin claimfile lost symbol
mips64-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
mips-linux/ld/ld.log:PASS: plugin claimfile lost symbol
mips-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
powerpc64le-linux/ld/ld.log:PASS: plugin claimfile lost symbol
powerpc64le-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
powerpc64-linux/ld/ld.log:PASS: plugin claimfile lost symbol
powerpc64-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
powerpc-linux/ld/ld.log:PASS: plugin claimfile lost symbol
powerpc-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
riscv64-linux/ld/ld.log:PASS: plugin claimfile lost symbol
riscv64-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
s390-linux/ld/ld.log:PASS: plugin claimfile lost symbol
s390-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
s390x-linux/ld/ld.log:PASS: plugin claimfile lost symbol
s390x-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
sparc64-linux/ld/ld.log:PASS: plugin claimfile lost symbol
sparc64-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
tilepro-linux/ld/ld.log:PASS: plugin claimfile lost symbol
tilepro-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
x86_64-linux/ld/ld.log:PASS: plugin claimfile lost symbol
x86_64-linux/ld/ld.log:PASS: plugin claimfile lost symbol with source
x86_64-w64-mingw32/ld/ld.log:PASS: plugin claimfile lost symbol

-- 
Alan Modra
Australia Development Lab, IBM

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

* Re: Plugin tests in ld testsuite
  2020-05-29  3:13 ` Alan Modra
@ 2020-05-29  5:43   ` Stephen Casner
  2020-05-29  7:20     ` Alan Modra
  2020-06-16  0:22   ` Stephen Casner
  1 sibling, 1 reply; 12+ messages in thread
From: Stephen Casner @ 2020-05-29  5:43 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

On Fri, 29 May 2020, Alan Modra wrote:
> On Tue, May 26, 2020 at 08:43:31PM -0700, Stephen Casner wrote:
> > I'm trying to fix all the unexpected failures for the pdp11-aout
> > target in the gas, ld and binutils testsuites.  I fixed a bug in
> > bfd/pdp11.c that allowed "PASS: plugin claimfile lost symbol", but
> > I've been tracing the execution of the next test, "plugin claimfile
> > replace symbol", and I don't see how to fix it.  That test fails
> > because the func.o module is claimed by the plugin and yet execution
> > proceeds through loading all the symbols for that module.  The test
> > fails because the symbols is _not_ undefined.
> >
> > I am also working on implementation of a pdp11-elf32 target.  That
> > target does not use the bfd/pdp11.c code at all, yet the same test
> > fails in the same manner.
> >
> > Is there a target that passes this test so I can compare the execution
> > path?  I had hoped to use x86_64-linux-gnu but I have not succeeded in
> > building a cross for that on my MacOS system.
>
> $ grep 'PASS: plugin claimfile lost symbol' */ld/ld.log

Thanks for responding, but that's not the test I was asking about.  My
port also passes that one.  Please try:

grep 'PASS: plugin claimfile replace symbol' */ld/ld.log

Perhaps that test will also pass for your collection of test cases.
If so, then I just need to get a compiler built for one that does.

                                                        -- Steve

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

* Re: Plugin tests in ld testsuite
  2020-05-29  5:43   ` Stephen Casner
@ 2020-05-29  7:20     ` Alan Modra
  0 siblings, 0 replies; 12+ messages in thread
From: Alan Modra @ 2020-05-29  7:20 UTC (permalink / raw)
  To: Stephen Casner; +Cc: binutils

On Thu, May 28, 2020 at 10:43:17PM -0700, Stephen Casner wrote:
> Thanks for responding, but that's not the test I was asking about.

Indeed, sorry, I read through the email too quickly.  The set of
passing targets that I test is almost identical.

aarch64-linux/ld/ld.log:PASS: plugin claimfile replace symbol
aarch64-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
arm-linuxeabi/ld/ld.log:PASS: plugin claimfile replace symbol
arm-linuxeabi/ld/ld.log:PASS: plugin claimfile replace symbol with source
hppa-linux/ld/ld.log:PASS: plugin claimfile replace symbol
hppa-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
m68k-linux/ld/ld.log:PASS: plugin claimfile replace symbol
m68k-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
microblaze-linux/ld/ld.log:PASS: plugin claimfile replace symbol
microblaze-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
mips64-linux/ld/ld.log:PASS: plugin claimfile replace symbol
mips64-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
mips-linux/ld/ld.log:PASS: plugin claimfile replace symbol
mips-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
powerpc64le-linux/ld/ld.log:PASS: plugin claimfile replace symbol
powerpc64le-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
powerpc64-linux/ld/ld.log:PASS: plugin claimfile replace symbol
powerpc64-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
powerpc-linux/ld/ld.log:PASS: plugin claimfile replace symbol
powerpc-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
riscv64-linux/ld/ld.log:PASS: plugin claimfile replace symbol
riscv64-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
s390-linux/ld/ld.log:PASS: plugin claimfile replace symbol
s390-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
s390x-linux/ld/ld.log:PASS: plugin claimfile replace symbol
s390x-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
sparc64-linux/ld/ld.log:PASS: plugin claimfile replace symbol
sparc64-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
tilepro-linux/ld/ld.log:PASS: plugin claimfile replace symbol
tilepro-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source
x86_64-linux/ld/ld.log:PASS: plugin claimfile replace symbol
x86_64-linux/ld/ld.log:PASS: plugin claimfile replace symbol with source

-- 
Alan Modra
Australia Development Lab, IBM

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

* Re: Plugin tests in ld testsuite
  2020-05-29  3:13 ` Alan Modra
  2020-05-29  5:43   ` Stephen Casner
@ 2020-06-16  0:22   ` Stephen Casner
  2020-06-16  3:05     ` Alan Modra
  1 sibling, 1 reply; 12+ messages in thread
From: Stephen Casner @ 2020-06-16  0:22 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

I'm still working on the plugin tests in the ld testsuite for the
pdp11-aout target.  The test "plugin claimfile lost symbol" passes
because symbols for the claimed file are not loaded at all.  But the
next test, "plugin claimfile replace symbol" fails because the test
expects the "_func" symbol to still be undefined even though the link
includes the following option:  -plugin-opt sym:_func::0:0:0

So my first question is what are the semantics of that option?  The
zeros mean LDPK_DEF (definition), LDPV_DEFAULT (visibility), and size
0.  So I would expect this option to make the symbol defined.

I did manage to build binutils and gcc for the arm-none-eabi target
that passes this test, that is, leaving the symbol undefined.
Comparing the execution for that target with pdp11-aout I found what
appears to be the significant difference.  The plugin code creates a
dummy BFD to contain the symbol and then replaces the original BFD for
the claimed file with that dummy BFD which includes the flag
BFD_PLUGIN.  Then the plugin code calls bfd_make_readable() which
calls bfd_check_format_matches() which calls xxx_object_p for the
appropriate target.

In the case of elf_object_p() there is a comment, "We have to avoid
leaving any side effects in ABFD, or any data it points to (like
tdata), if the file does not match the target vector."  In particular,
the flag bits are preserved including BFD_PLUGIN.  Later, in
_bfd_generic_link_add_one_symbol() the symbol "func" is set to type
bfd_link_hash_defined, but in bfd_elf_final_link() the type is set to
bfd_link_hash_undefined because BFD_PLUGIN is set, as explained by the
comment "If a plugin symbol is referenced from a non-IR file, mark the
symbol as undefined."  That's how the test passes for the
arm-none-eabi target.

But in the case of aout_16_some_object_p() in pdp11.c the target is
more or less assumed to match and the incoming flag bits are
completely overwritten.  As for ELF, the type of the symbol is set to
bfd_link_hash_defined in _bfd_generic_link_add_one_symbol().  Then in
aout_16_final_link() there is no code to look for the BFD_PLUGIN flag
anyway, so the symbol is treated as defined and the test fails.

Now, you could just say that the pdp11-aout code is broken, but the
code is the same in aoutx.h for the other a.out formats and I don't
see any code in plugin.exp to exclude them.  Do all aout formats get
an unexpected FAIL for the plugin tests?

Should the pdp11-aout target be fixed to properly support plugins, or
is there no point and it should just be configured to disable plugin
support?

                                                        -- Steve

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

* Re: Plugin tests in ld testsuite
  2020-06-16  0:22   ` Stephen Casner
@ 2020-06-16  3:05     ` Alan Modra
  2020-06-16 19:20       ` Stephen Casner
  0 siblings, 1 reply; 12+ messages in thread
From: Alan Modra @ 2020-06-16  3:05 UTC (permalink / raw)
  To: Stephen Casner; +Cc: binutils

On Mon, Jun 15, 2020 at 05:22:09PM -0700, Stephen Casner wrote:
> Now, you could just say that the pdp11-aout code is broken, but the
> code is the same in aoutx.h for the other a.out formats and I don't
> see any code in plugin.exp to exclude them.  Do all aout formats get
> an unexpected FAIL for the plugin tests?

I can't answer that since I don't have compilers installed for any of
the few remaining AOUT targets supported by binutils.

> Should the pdp11-aout target be fixed to properly support plugins, or
> is there no point and it should just be configured to disable plugin
> support?

I think you would be pioneering AOUT plugin support if you chose to
support plugins on pdp11.  How much of a challenge do you enjoy?  :-)

-- 
Alan Modra
Australia Development Lab, IBM

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

* Re: Plugin tests in ld testsuite
  2020-06-16  3:05     ` Alan Modra
@ 2020-06-16 19:20       ` Stephen Casner
  2020-06-20 22:59         ` Stephen Casner
  0 siblings, 1 reply; 12+ messages in thread
From: Stephen Casner @ 2020-06-16 19:20 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

On Tue, 16 Jun 2020, Alan Modra wrote:
> On Mon, Jun 15, 2020 at 05:22:09PM -0700, Stephen Casner wrote:
> > Should the pdp11-aout target be fixed to properly support plugins, or
> > is there no point and it should just be configured to disable plugin
> > support?
>
> I think you would be pioneering AOUT plugin support if you chose to
> support plugins on pdp11.  How much of a challenge do you enjoy?  :-)

I should have asked my question explicitly at the start of this thread
and saved myself a bunch of time spent investigating how the test
failed.  I infer that there is no need to support plugins for pdp11.
It looks like the proper fix is to unconfigure --enable-plugins so the
tests are not attempted and to avoid creating invalid user
expectations.

The challenge I'm much more interested to work on (and was before
being distracted by trying to get all the binutils tests cleaned up)
is implementing ELF format for the pdp11 in gcc and binutils.  With a
couple of hacks I have that working to the extent of running a little
C++ test program on the PDP11.

                                                        -- Steve

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

* Re: Plugin tests in ld testsuite
  2020-06-16 19:20       ` Stephen Casner
@ 2020-06-20 22:59         ` Stephen Casner
  2020-06-21  7:43           ` Alan Modra
  0 siblings, 1 reply; 12+ messages in thread
From: Stephen Casner @ 2020-06-20 22:59 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

On Tue, 16 Jun 2020, Alan Modra wrote:
> I think you would be pioneering AOUT plugin support if you chose to
> support plugins on pdp11.  How much of a challenge do you enjoy?  :-)

My immediate goal is to avoid the unexpected failures for ld plugin
tests on the pdp11-aout target.  Probably the simplest fix would be to
add a check near the top of ld/plugin.exp for pdp11-*-aout or *-*-aout
to skip the tests.  However, it seems somewhat disingenuous for ld to
accept a -plugin option for the aout targets if the functionality is
broken, and removing it would allow the existing checks in plugin.exp
to skip the tests.

I don't know what range of functionality can be provided by plugins.
Are there some uses other than claiming files and defining symbols
that may be functional for aout targets?

If removing the -plugin option is the right course of action, I'm not
sure how that should be done.  I've looked at the configuration files
but I did not find any example of a target for which plugins are
disabled.  It's also not clear where it would be reasonable to insert
a target-specific check.  config/plugins.m4? config/largefile.m4?
Create a new variable to be set in ld/configure.tgt and checked in one
of the m4 files?

Also, the disabling could be by just changing the default for the aout
targets to be --disable-plugins or it could be to remove the
configuration option completely if it does not make sense to allow
building with --enable-plugins.

Alan, I noticed PR 26132 that you reported regarding problems in ar
for some targets with plugins enabled.  I was hoping to see whether
the fix for that PR might show the direction for my questions above.

                                                        -- Steve

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

* Re: Plugin tests in ld testsuite
  2020-06-20 22:59         ` Stephen Casner
@ 2020-06-21  7:43           ` Alan Modra
  2020-06-21 12:48             ` Do without ld ENABLE_PLUGINS Alan Modra
  2020-06-21 17:24             ` Plugin tests in ld testsuite Stephen Casner
  0 siblings, 2 replies; 12+ messages in thread
From: Alan Modra @ 2020-06-21  7:43 UTC (permalink / raw)
  To: Stephen Casner; +Cc: binutils

On Sat, Jun 20, 2020 at 03:59:16PM -0700, Stephen Casner wrote:
> On Tue, 16 Jun 2020, Alan Modra wrote:
> > I think you would be pioneering AOUT plugin support if you chose to
> > support plugins on pdp11.  How much of a challenge do you enjoy?  :-)
> 
> My immediate goal is to avoid the unexpected failures for ld plugin
> tests on the pdp11-aout target.  Probably the simplest fix would be to
> add a check near the top of ld/plugin.exp for pdp11-*-aout or *-*-aout
> to skip the tests.  However, it seems somewhat disingenuous for ld to
> accept a -plugin option for the aout targets if the functionality is
> broken, and removing it would allow the existing checks in plugin.exp
> to skip the tests.
> 
> I don't know what range of functionality can be provided by plugins.
> Are there some uses other than claiming files and defining symbols
> that may be functional for aout targets?

gcc's link time optimization is the major reason we have plugins.

> If removing the -plugin option is the right course of action, I'm not
> sure how that should be done.  I've looked at the configuration files
> but I did not find any example of a target for which plugins are
> disabled.  It's also not clear where it would be reasonable to insert
> a target-specific check.  config/plugins.m4? config/largefile.m4?
> Create a new variable to be set in ld/configure.tgt and checked in one
> of the m4 files?
> 
> Also, the disabling could be by just changing the default for the aout
> targets to be --disable-plugins or it could be to remove the
> configuration option completely if it does not make sense to allow
> building with --enable-plugins.
> 
> Alan, I noticed PR 26132 that you reported regarding problems in ar
> for some targets with plugins enabled.  I was hoping to see whether
> the fix for that PR might show the direction for my questions above.

I'm aiming to fix that PR by firstly making all files in ld/ that
currently test ENABLE_PLUGINS instead test BFD_SUPPORTS_PLUGINS.  That
will allow just one configure file to control the default for whether
plugins are enabled.  I think it would be reasonable for some targets
like pdp11 and alpha-vms to have plugins disabled by default, with
users getting a warning if they override the default with
--enable-plugins.

-- 
Alan Modra
Australia Development Lab, IBM

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

* Do without ld ENABLE_PLUGINS
  2020-06-21  7:43           ` Alan Modra
@ 2020-06-21 12:48             ` Alan Modra
  2020-06-21 12:49               ` PR26132, ar creates invalid libraries for some targets with plugins enabled Alan Modra
  2020-06-21 17:24             ` Plugin tests in ld testsuite Stephen Casner
  1 sibling, 1 reply; 12+ messages in thread
From: Alan Modra @ 2020-06-21 12:48 UTC (permalink / raw)
  To: binutils

Instead, use BFD_SUPPORTS_PLUGINS.

	* ldfile.c: Replace uses of ENABLE_PLUGINS with BFD_SUPPORTS_PLUGINS.
	* ldlang.c: Likewise.
	* ldlang.h: Likewise.
	* ldlex.h: Likewise.
	* ldmain.c: Likewise.
	* lexsup.c: Likewise.
	* plugin.c: Wrap body of file in #if BFD_SUPPORTS_PLUGINS.
	* testplug.c: Likewise.
	* testplug2.c: Likewise.
	* testplug3.c: Likewise.
	* testplug4.c: Likewise.
	* configure.ac (ENABLE_PLUGINS): Don't define AM_CONTITIONAL.
	* Makefile.am: Remove ENABLE_PLUGINS conditionals.
	(PLUGIN_CFLAGS): Don't define.
	(PLUGIN_C, PLUGIN_H, PLUGIN_OBJECT): Likewise.  Substitute all
	uses with plugin file name.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

diff --git a/ld/Makefile.am b/ld/Makefile.am
index ffff427bfb..f0767f2be3 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -47,19 +47,6 @@ WARN_CFLAGS = @WARN_CFLAGS@
 NO_WERROR = @NO_WERROR@
 AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
 
-# Conditionally enable the plugin interface.
-if ENABLE_PLUGINS
-PLUGIN_C = plugin.c
-PLUGIN_H = plugin.h
-PLUGIN_OBJECT = plugin.@OBJEXT@
-PLUGIN_CFLAGS = -DENABLE_PLUGINS
-else
-PLUGIN_C =
-PLUGIN_H =
-PLUGIN_OBJECT =
-PLUGIN_CFLAGS =
-endif
-
 # We put the scripts in the directory $(scriptdir)/ldscripts.
 # We can't put the scripts in $(datadir) because the SEARCH_DIR
 # directives need to be different for native and cross linkers.
@@ -152,7 +139,7 @@ TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I ../bfd/doc \
 		    -I $(top_srcdir)/../libiberty
 
 AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) @zlibinc@ \
-	@INCINTL@ $(HDEFINES) $(CFLAGS) $(PLUGIN_CFLAGS) \
+	@INCINTL@ $(HDEFINES) $(CFLAGS) \
 	-DLOCALEDIR="\"$(datadir)/locale\""
 
 BFDLIB = ../bfd/libbfd.la
@@ -482,12 +469,12 @@ ALL_64_EMUL_EXTRA_OFILES = \
 CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
 	ldmain.c ldmisc.c ldver.c ldwrite.c lexsup.c \
 	mri.c ldcref.c pe-dll.c pep-dll.c ldlex-wrapper.c \
-	$(PLUGIN_C) ldbuildid.c ldelf.c ldelfgen.c
+	plugin.c ldbuildid.c ldelf.c ldelfgen.c
 
 HFILES = ld.h ldctor.h ldemul.h ldexp.h ldfile.h \
 	ldlang.h ldlex.h ldmain.h ldmisc.h ldver.h \
 	ldwrite.h mri.h deffile.h pe-dll.h pep-dll.h \
-	elf-hints-local.h $(PLUGIN_H) ldbuildid.h ldelf.h ldelfgen.h
+	elf-hints-local.h plugin.h ldbuildid.h ldelf.h ldelfgen.h
 
 GENERATED_CFILES = ldgram.c ldlex.c deffilep.c
 GENERATED_HFILES = ldgram.h ldemul-list.h deffilep.h
@@ -497,7 +484,7 @@ GENERATED_HFILES = ldgram.h ldemul-list.h deffilep.h
 BUILT_SOURCES = $(GENERATED_HFILES)
 
 OFILES = ldgram.@OBJEXT@ ldlex-wrapper.@OBJEXT@ lexsup.@OBJEXT@ ldlang.@OBJEXT@ \
-	mri.@OBJEXT@ ldctor.@OBJEXT@ ldmain.@OBJEXT@ $(PLUGIN_OBJECT) \
+	mri.@OBJEXT@ ldctor.@OBJEXT@ ldmain.@OBJEXT@ plugin.@OBJEXT@ \
 	ldwrite.@OBJEXT@ ldexp.@OBJEXT@  ldemul.@OBJEXT@ ldver.@OBJEXT@ ldmisc.@OBJEXT@ \
 	ldfile.@OBJEXT@ ldcref.@OBJEXT@ ${EMULATION_OFILES} ${EMUL_EXTRA_OFILES} \
 	ldbuildid.@OBJEXT@
@@ -959,7 +946,7 @@ EXTRA_ld_new_SOURCES = deffilep.y ldlex.l
 EXTRA_ld_new_SOURCES += pep-dll.c pe-dll.c ldelf.c ldelfgen.c
 
 ld_new_SOURCES = ldgram.y ldlex-wrapper.c lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
-	ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c $(PLUGIN_C) \
+	ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c plugin.c \
 	ldbuildid.c
 ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) \
 		      $(BFDLIB) $(LIBCTF) $(LIBIBERTY) $(LIBINTL_DEP)
@@ -997,7 +984,6 @@ development.exp: $(BFDDIR)/development.sh
 #
 # Build a dummy plugin using libtool.
 #
-if ENABLE_PLUGINS
 noinst_LTLIBRARIES = libldtestplug.la libldtestplug2.la \
 		     libldtestplug3.la libldtestplug4.la
 libldtestplug_la_SOURCES = testplug.c
@@ -1012,7 +998,6 @@ libldtestplug3_la_LDFLAGS = -no-undefined -rpath /nowhere
 libldtestplug4_la_SOURCES = testplug4.c
 libldtestplug4_la_CFLAGS= -g -O2
 libldtestplug4_la_LDFLAGS = -no-undefined -rpath /nowhere
-endif
 
 # DOCUMENTATION TARGETS
 # Manual configuration file; not usually attached to normal configuration,
diff --git a/ld/configure.ac b/ld/configure.ac
index 99957df376..2b6c0480e9 100644
--- a/ld/configure.ac
+++ b/ld/configure.ac
@@ -274,7 +274,6 @@ dnl AC_CHECK_HEADERS(sys/mman.h)
 AC_FUNC_MMAP
 
 AC_SEARCH_LIBS([dlopen], [dl])
-AM_CONDITIONAL([ENABLE_PLUGINS], [test x$plugins = xyes])
 
 AC_ARG_ENABLE(initfini-array,
 [  --disable-initfini-array do not use .init_array/.fini_array sections],
diff --git a/ld/ldfile.c b/ld/ldfile.c
index 60b28d3f0c..f3de2c2356 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -34,10 +34,10 @@
 #include "ldemul.h"
 #include "libiberty.h"
 #include "filenames.h"
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin-api.h"
 #include "plugin.h"
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
 bfd_boolean ldfile_assumed_script = FALSE;
 const char *ldfile_output_machine_name = "";
@@ -148,7 +148,7 @@ ldfile_try_open_bfd (const char *attempt,
   /* This is a linker input BFD.  */
   entry->the_bfd->is_linker_input = 1;
 
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   if (entry->flags.lto_output)
     entry->the_bfd->lto_output = 1;
 #endif
@@ -302,7 +302,7 @@ ldfile_try_open_bfd (const char *attempt,
 	}
     }
  success:
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   /* If plugins are active, they get first chance to claim
      any successfully-opened input file.  We skip archives
      here; the plugin wants us to offer it the individual
@@ -316,7 +316,7 @@ ldfile_try_open_bfd (const char *attempt,
       && !no_more_claiming
       && bfd_check_format (entry->the_bfd, bfd_object))
     plugin_maybe_claim (entry);
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
   /* It opened OK, the format checked out, and the plugins have had
      their chance to claim it, so this is success.  */
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 14a6a577d2..8ab6a0b0c3 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -42,9 +42,9 @@
 #include "demangle.h"
 #include "hashtab.h"
 #include "elf-bfd.h"
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin.h"
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
 #ifndef offsetof
 #define offsetof(TYPE, MEMBER) ((size_t) & (((TYPE*) 0)->MEMBER))
@@ -3526,7 +3526,7 @@ enum open_bfd_mode
     OPEN_BFD_FORCE = 1,
     OPEN_BFD_RESCAN = 2
   };
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 static lang_input_statement_type *plugin_insert = NULL;
 static struct bfd_link_hash_entry *plugin_undefs = NULL;
 #endif
@@ -3556,7 +3556,7 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
 	case lang_group_statement_enum:
 	  {
 	    struct bfd_link_hash_entry *undefs;
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 	    lang_input_statement_type *plugin_insert_save;
 #endif
 
@@ -3566,7 +3566,7 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
 
 	    do
 	      {
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 		plugin_insert_save = plugin_insert;
 #endif
 		undefs = link_info.hash->undefs_tail;
@@ -3574,7 +3574,7 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
 				 mode | OPEN_BFD_FORCE);
 	      }
 	    while (undefs != link_info.hash->undefs_tail
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 		   /* Objects inserted by a plugin, which are loaded
 		      before we hit this loop, may have added new
 		      undefs.  */
@@ -3601,7 +3601,7 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
 		 has been loaded already.  Do the same for a rescan.
 		 Likewise reload --as-needed shared libs.  */
 	      if (mode != OPEN_BFD_NORMAL
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 		  && ((mode & OPEN_BFD_RESCAN) == 0
 		      || plugin_insert == NULL)
 #endif
@@ -3648,7 +3648,7 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
 		    }
 		}
 	    }
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 	  /* If we have found the point at which a plugin added new
 	     files, clear plugin_insert to enable archive rescan.  */
 	  if (&s->input_statement == plugin_insert)
@@ -6899,11 +6899,11 @@ lang_check (void)
        file != NULL;
        file = file->next)
     {
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
       /* Don't check format of files claimed by plugin.  */
       if (file->flags.claimed)
 	continue;
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
       input_bfd = file->the_bfd;
       compatible
 	= bfd_arch_get_compatible (input_bfd, link_info.output_bfd,
@@ -7438,7 +7438,7 @@ lang_gc_sections (void)
       LANG_FOR_EACH_INPUT_STATEMENT (f)
 	{
 	  asection *sec;
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 	  if (f->flags.claimed)
 	    continue;
 #endif
@@ -7585,7 +7585,7 @@ lang_relax_sections (bfd_boolean need_layout)
     }
 }
 
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 /* Find the insert point for the plugin's replacement files.  We
    place them after the first claimed real object file, or if the
    first claimed object is an archive member, after the last real
@@ -7728,7 +7728,7 @@ find_next_input_statement (lang_statement_union_type **s)
     }
   return s;
 }
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
 /* Add NAME to the list of garbage collection entry points.  */
 
@@ -7819,7 +7819,7 @@ lang_process (void)
      to symbolic origin/length now.  */
   lang_do_memory_regions ();
 
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   if (link_info.lto_plugin_active)
     {
       lang_statement_list_type added;
@@ -7922,7 +7922,7 @@ lang_process (void)
 	    }
 	}
     }
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
   /* Make sure that nobody has tried to add a symbol to this list
      before now.  */
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 529ccd1585..196debfa37 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -271,7 +271,7 @@ struct lang_input_statement_flags
   /* Set if reloading an archive or --as-needed lib.  */
   unsigned int reload : 1;
 
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   /* Set if the file was claimed by a plugin.  */
   unsigned int claimed : 1;
 
@@ -280,7 +280,7 @@ struct lang_input_statement_flags
 
   /* Set if added by the lto plugin add_input_file callback.  */
   unsigned int lto_output : 1;
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
   /* Head of list of pushed flags.  */
   struct lang_input_statement_flags *pushed;
diff --git a/ld/ldlex.h b/ld/ldlex.h
index 6388247b45..7868dca349 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -135,10 +135,10 @@ enum option_values
   OPTION_WARN_TEXTREL,
   OPTION_WARN_ALTERNATE_EM,
   OPTION_REDUCE_MEMORY_OVERHEADS,
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   OPTION_PLUGIN,
   OPTION_PLUGIN_OPT,
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
   OPTION_DEFAULT_SCRIPT,
   OPTION_PRINT_OUTPUT_FORMAT,
   OPTION_PRINT_SYSROOT,
diff --git a/ld/ldmain.c b/ld/ldmain.c
index b0ce69f118..d34d30ae33 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -40,10 +40,10 @@
 #include "ldfile.h"
 #include "ldemul.h"
 #include "ldctor.h"
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin.h"
 #include "plugin-api.h"
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
 /* Somewhere above, sys/stat.h got included.  */
 #if !defined(S_ISDIR) && defined(S_IFDIR)
@@ -164,7 +164,7 @@ static void
 ld_cleanup (void)
 {
   bfd_cache_close_all ();
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   plugin_call_cleanup ();
 #endif
   if (output_filename && delete_output_file_on_failure)
@@ -323,10 +323,10 @@ main (int argc, char **argv)
   if (config.hash_table_size != 0)
     bfd_hash_set_default_size (config.hash_table_size);
 
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   /* Now all the plugin arguments have been gathered, we can load them.  */
   plugin_load_plugins ();
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
   ldemul_set_symbols ();
 
@@ -830,7 +830,7 @@ add_archive_element (struct bfd_link_info *info,
      (if enabled) may possibly alter it to point to a replacement
      BFD, but we still want to output the original BFD filename.  */
   orig_input = *input;
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   if (link_info.lto_plugin_active)
     {
       /* We must offer this archive member to the plugins to claim.  */
@@ -851,7 +851,7 @@ add_archive_element (struct bfd_link_info *info,
 	  *subsbfd = input->the_bfd;
 	}
     }
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
   ldlang_add_file (input);
 
diff --git a/ld/lexsup.c b/ld/lexsup.c
index d84b334b34..65a9453185 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -39,9 +39,9 @@
 #include "ldver.h"
 #include "ldemul.h"
 #include "demangle.h"
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin.h"
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 
 #ifndef PATH_SEPARATOR
 #if defined (__MSDOS__) || (defined (_WIN32) && ! defined (__CYGWIN32__))
@@ -174,7 +174,7 @@ static const struct ld_option ld_options[] =
     'O', NULL, N_("Optimize output file"), ONE_DASH },
   { {"out-implib", required_argument, NULL, OPTION_OUT_IMPLIB},
     '\0', N_("FILE"), N_("Generate import library"), TWO_DASHES },
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
   { {"plugin", required_argument, NULL, OPTION_PLUGIN},
     '\0', N_("PLUGIN"), N_("Load named plugin"), ONE_DASH },
   { {"plugin-opt", required_argument, NULL, OPTION_PLUGIN_OPT},
@@ -190,7 +190,7 @@ static const struct ld_option ld_options[] =
     '\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 */
+#endif /* BFD_SUPPORTS_PLUGINS */
   { {"fuse-ld=", required_argument, NULL, OPTION_IGNORE},
     '\0', NULL, N_("Ignored for GCC linker option compatibility"),
     ONE_DASH },
@@ -1066,7 +1066,7 @@ parse_args (unsigned argc, char **argv)
 	case OPTION_PRINT_OUTPUT_FORMAT:
 	  command_line.print_output_format = TRUE;
 	  break;
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 	case OPTION_PLUGIN:
 	  plugin_opt_plugin (optarg);
 	  break;
@@ -1074,7 +1074,7 @@ parse_args (unsigned argc, char **argv)
 	  if (plugin_opt_plugin_arg (optarg))
 	    einfo (_("%F%P: bad -plugin-opt option\n"));
 	  break;
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 	case 'q':
 	  link_info.emitrelocations = TRUE;
 	  break;
@@ -1368,9 +1368,9 @@ parse_args (unsigned argc, char **argv)
 	      int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0);
 	      if (*end)
 		einfo (_("%F%P: invalid number `%s'\n"), optarg);
-#ifdef ENABLE_PLUGINS
+#if BFD_SUPPORTS_PLUGINS
 	      report_plugin_symbols = level > 1;
-#endif /* ENABLE_PLUGINS */
+#endif /* BFD_SUPPORTS_PLUGINS */
 	    }
 	  break;
 	case 'v':
diff --git a/ld/plugin.c b/ld/plugin.c
index 60beacd062..b455af6d67 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -21,6 +21,7 @@
 #include "sysdep.h"
 #include "libiberty.h"
 #include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
 #include "bfdlink.h"
 #include "bfdver.h"
 #include "ctf-api.h"
@@ -1462,3 +1463,4 @@ plugin_notice (struct bfd_link_info *info,
 				      abfd, section, value, flags);
   return TRUE;
 }
+#endif /* BFD_SUPPORTS_PLUGINS */
diff --git a/ld/testplug.c b/ld/testplug.c
index c126f03607..e386e8d478 100644
--- a/ld/testplug.c
+++ b/ld/testplug.c
@@ -20,6 +20,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin-api.h"
 /* For ARRAY_SIZE macro only - we don't link the library itself.  */
 #include "libiberty.h"
@@ -669,3 +670,4 @@ oncleanup (void)
   fflush (NULL);
   return cleanup_ret;
 }
+#endif /* BFD_SUPPORTS_PLUGINS */
diff --git a/ld/testplug2.c b/ld/testplug2.c
index 27553d0781..5b69d0e21b 100644
--- a/ld/testplug2.c
+++ b/ld/testplug2.c
@@ -21,6 +21,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin-api.h"
 #include "filenames.h"
 /* For ARRAY_SIZE macro only - we don't link the library itself.  */
@@ -669,3 +670,4 @@ oncleanup (void)
   fflush (NULL);
   return cleanup_ret;
 }
+#endif /* BFD_SUPPORTS_PLUGINS */
diff --git a/ld/testplug3.c b/ld/testplug3.c
index 928f4d6842..3b0e9b3b35 100644
--- a/ld/testplug3.c
+++ b/ld/testplug3.c
@@ -21,6 +21,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin-api.h"
 #include "filenames.h"
 /* For ARRAY_SIZE macro only - we don't link the library itself.  */
@@ -627,3 +628,4 @@ oncleanup (void)
   fflush (NULL);
   return cleanup_ret;
 }
+#endif /* BFD_SUPPORTS_PLUGINS */
diff --git a/ld/testplug4.c b/ld/testplug4.c
index ca899b11da..6e41f81298 100644
--- a/ld/testplug4.c
+++ b/ld/testplug4.c
@@ -21,6 +21,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
 #include "plugin-api.h"
 #include "filenames.h"
 /* For ARRAY_SIZE macro only - we don't link the library itself.  */
@@ -675,3 +676,4 @@ oncleanup (void)
   fflush (NULL);
   return cleanup_ret;
 }
+#endif /* BFD_SUPPORTS_PLUGINS */

-- 
Alan Modra
Australia Development Lab, IBM

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

* PR26132, ar creates invalid libraries for some targets with plugins enabled
  2020-06-21 12:48             ` Do without ld ENABLE_PLUGINS Alan Modra
@ 2020-06-21 12:49               ` Alan Modra
  0 siblings, 0 replies; 12+ messages in thread
From: Alan Modra @ 2020-06-21 12:49 UTC (permalink / raw)
  To: binutils

	PR 26132
	* configure.ac: Disable plugins by default for some targets.
	* plugin.c: Comment typo fix.
	* configure: Regenerate.

diff --git a/bfd/configure.ac b/bfd/configure.ac
index 755633bdd9..1b67cb6cac 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -44,6 +44,30 @@ LT_INIT([dlopen])
 # AC_PLUGINS setting $plugins is called by ACX_LARGEFILE.
 ACX_LARGEFILE
 
+changequote(,)dnl
+case "${target}" in
+    vax-*-netbsdelf*) ;;
+    *-*-*aout* | i[3-7]86-*-bsd* | i[3-7]86-*-msdos* | ns32k-*-* | \
+    pdp11-*-* | vax-*-*bsd*)
+changequote([,])dnl
+	if test "$plugins" = "yes"; then
+	    if test "${enable_plugins+set}" = set; then
+		AC_MSG_WARN(Enabling plugins for AOUT is experimental)
+	    else
+		plugins=no
+	    fi
+	fi ;;
+    *-*-*vms* | \
+    powerpc*-*-aix* | powerpc-*-beos* | powerpc-*-macos* | rs6000-*-*)
+	if test "$plugins" = "yes"; then
+	    if test "${enable_plugins+set}" = set; then
+		AC_MSG_WARN(Enabling plugins may result in ar creating non-standard archives for ${target})
+	    else
+		plugins=no
+	    fi
+	fi ;;
+esac
+
 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
 
 AC_ARG_ENABLE(64-bit-bfd,
diff --git a/bfd/plugin.c b/bfd/plugin.c
index 5ed8757809..593e277747 100644
--- a/bfd/plugin.c
+++ b/bfd/plugin.c
@@ -762,4 +762,4 @@ const bfd_target plugin_vec =
 
   NULL				/* backend_data.  */
 };
-#endif /* BFD_SUPPORTS_PLUGIN */
+#endif /* BFD_SUPPORTS_PLUGINS */

-- 
Alan Modra
Australia Development Lab, IBM

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

* Re: Plugin tests in ld testsuite
  2020-06-21  7:43           ` Alan Modra
  2020-06-21 12:48             ` Do without ld ENABLE_PLUGINS Alan Modra
@ 2020-06-21 17:24             ` Stephen Casner
  1 sibling, 0 replies; 12+ messages in thread
From: Stephen Casner @ 2020-06-21 17:24 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

On Sun, 21 Jun 2020, Alan Modra wrote:

> I'm aiming to fix that PR by firstly making all files in ld/ that
> currently test ENABLE_PLUGINS instead test BFD_SUPPORTS_PLUGINS.  That
> will allow just one configure file to control the default for whether
> plugins are enabled.  I think it would be reasonable for some targets
> like pdp11 and alpha-vms to have plugins disabled by default, with
> users getting a warning if they override the default with
> --enable-plugins.

Thank you for taking care of my problem at the same time!

                                                        -- Steve

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

end of thread, other threads:[~2020-06-21 17:24 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-27  3:43 Plugin tests in ld testsuite Stephen Casner
2020-05-29  3:13 ` Alan Modra
2020-05-29  5:43   ` Stephen Casner
2020-05-29  7:20     ` Alan Modra
2020-06-16  0:22   ` Stephen Casner
2020-06-16  3:05     ` Alan Modra
2020-06-16 19:20       ` Stephen Casner
2020-06-20 22:59         ` Stephen Casner
2020-06-21  7:43           ` Alan Modra
2020-06-21 12:48             ` Do without ld ENABLE_PLUGINS Alan Modra
2020-06-21 12:49               ` PR26132, ar creates invalid libraries for some targets with plugins enabled Alan Modra
2020-06-21 17:24             ` Plugin tests in ld testsuite Stephen Casner

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).