Message ID | 20191118215617.395319-1-fontaine.fabrice@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Makefile.am: filter -Wl,--no-undefined | expand |
On Mon, Nov 18, 2019 at 1:59 PM Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote: > > Commit 1d14ef82f4a3be741bcdf6b1c6d51ce9dce43567 does not completely fix CC'ing Thomas. Lucas De Marchi > the build with python 3.8 as we still get link failure due to > '-z undefs' being ignored by some versions of ld. > > Indeed, -z undefs was added by commit > 97a232d7335f3bd0231fd9cd39455bde1d563922 in upstream binutils, and this > commit was first present in binutils 2.30. > So any toolchain using binutils version older than that won't have > -z undefs and will build fail on: > > /home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: warning: -z undefs ignored. > > /home/naourr/work/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/aarch64_be-linux-gnu/7.3.1/../../../../aarch64_be-linux-gnu/bin/ld: warning: -z undefs ignored. > > So filter -Wl,--no-undefined to fix the issue > > Fixes: > - http://autobuild.buildroot.org/results/e9645d9969481b09f507f6e0d0b35faaa283eb60 > - http://autobuild.buildroot.org/results/06a6d865b6b7d8ebd793bde214f4a4c40e0962e1 > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> > --- > Makefile.am | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/Makefile.am b/Makefile.am > index 8e9c90d..47505c1 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -173,7 +173,10 @@ CPYTHON_MODULE_CFLAGS = \ > $(AM_CFLAGS) -DCPYTHON_COMPILING_IN_PYPY=0 \ > $(PYTHON_NOWARN) $(PYTHON_CFLAGS) \ > -fvisibility=default > -CPYTHON_MODULE_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version -shared -Wl,-z,undefs > +# Filter -Wl,--no-undefined to fix build with python 3.8 > +comma = , > +CPYTHON_MODULE_LDFLAGS = $(subst -Wl$(comma)--no-undefined,,$(AM_LDFLAGS)) > +CPYTHON_MODULE_LDFLAGS += -module -avoid-version -shared > > if BUILD_PYTHON > pkgpyexec_LTLIBRARIES = \ > -- > 2.24.0 >
Hello Lucas, On Mon, 18 Nov 2019 14:18:07 -0800 Lucas De Marchi <lucas.de.marchi@gmail.com> wrote: > On Mon, Nov 18, 2019 at 1:59 PM Fabrice Fontaine > <fontaine.fabrice@gmail.com> wrote: > > > > Commit 1d14ef82f4a3be741bcdf6b1c6d51ce9dce43567 does not completely fix > > CC'ing Thomas. > > Lucas De Marchi Fabrice also submitted this patch to Buildroot, and I merged it. Indeed, the -z undefs option was only introduced in binutils 2.30, so any toolchain using a binutils older than that is not able to use -z undefs. So I'd say that Fabrice's proposal is fine. Another option would be to detect if the toolchain support -z undefs, and only use --no-undefined if -z undefs is supported, for example. Thomas
diff --git a/Makefile.am b/Makefile.am index 8e9c90d..47505c1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -173,7 +173,10 @@ CPYTHON_MODULE_CFLAGS = \ $(AM_CFLAGS) -DCPYTHON_COMPILING_IN_PYPY=0 \ $(PYTHON_NOWARN) $(PYTHON_CFLAGS) \ -fvisibility=default -CPYTHON_MODULE_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version -shared -Wl,-z,undefs +# Filter -Wl,--no-undefined to fix build with python 3.8 +comma = , +CPYTHON_MODULE_LDFLAGS = $(subst -Wl$(comma)--no-undefined,,$(AM_LDFLAGS)) +CPYTHON_MODULE_LDFLAGS += -module -avoid-version -shared if BUILD_PYTHON pkgpyexec_LTLIBRARIES = \
Commit 1d14ef82f4a3be741bcdf6b1c6d51ce9dce43567 does not completely fix the build with python 3.8 as we still get link failure due to '-z undefs' being ignored by some versions of ld. Indeed, -z undefs was added by commit 97a232d7335f3bd0231fd9cd39455bde1d563922 in upstream binutils, and this commit was first present in binutils 2.30. So any toolchain using binutils version older than that won't have -z undefs and will build fail on: /home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: warning: -z undefs ignored. /home/naourr/work/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/aarch64_be-linux-gnu/7.3.1/../../../../aarch64_be-linux-gnu/bin/ld: warning: -z undefs ignored. So filter -Wl,--no-undefined to fix the issue Fixes: - http://autobuild.buildroot.org/results/e9645d9969481b09f507f6e0d0b35faaa283eb60 - http://autobuild.buildroot.org/results/06a6d865b6b7d8ebd793bde214f4a4c40e0962e1 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> --- Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)