https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93384
Bug ID: 93384 Summary: Python 3.9.0a3 fails to build on ppc64le with GCC 10.0.1: redefined symbol cannot be used on reloc Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: vstinner at redhat dot com Target Milestone: --- Hi, We are working on upgrading Python 3.8 to 3.9 in Fedora Rawhide. Two builds ago, the build was fine on the 3 archs (x86-64, aarch64, ppc64), but when GCC has been upgraded from GCC 9.2.1 to GCC 10.0.1, we started the get the following error on ppc64le (and only on this arch, the two others are building successfully): /tmp/cc7LZ1xH.s: Assembler messages: /tmp/cc7LZ1xH.s:91549: Error: redefined symbol cannot be used on reloc /tmp/cc7LZ1xH.s:275099: Error: redefined symbol cannot be used on reloc lto-wrapper: fatal error: gcc returned 1 exit status compilation terminated. /usr/bin/ld: error: lto-wrapper failed collect2: error: ld returned 1 exit status Full build logs: https://kojipkgs.fedoraproject.org//work/tasks/606/40790606/build.log We build Python using LTO and PGO. The first step of PGO (-fprofile-generate) went fine, but the second step (-fprofile-use) is the one which failed. GCC error message is unclear :-( I'm not sure if the error comes from the build of a single .c file, or on the linking command creating libpython3.9.so from all .o files. A Python .c file is built with a command like (that's the second PGO step, using -fprofile-use -fprofile-correction): --- gcc -pthread -c -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -fprofile-use -fprofile-correction -I/builddir/build/BUILD/Python-3.9.0a2/Include/internal -IObjects -IInclude -IPython -I. -I/builddir/build/BUILD/Python-3.9.0a2/Include -fPIC -DPy_BUILD_CORE -o Python/Python-ast.o /builddir/build/BUILD/Python-3.9.0a2/Python/Python-ast.c --- Link libpython3.9.so: --- gcc -pthread -shared -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -g -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -g -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fno-semantic-interposition -g -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fno-semantic-interposition -g -o libpython3.9.so -lcrypt -lpthread -ldl -lutil -lm -lm Modules/getbuildinfo.o Parser/acceler.o Parser/grammar1.o Parser/listnode.o Parser/node.o Parser/parser.o Parser/token.o Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o Objects/abstract.o Objects/accu.o Objects/boolobject.o Objects/bytes_methods.o Objects/bytearrayobject.o Objects/bytesobject.o Objects/call.o Objects/capsule.o Objects/cellobject.o Objects/classobject.o Objects/codeobject.o Objects/complexobject.o Objects/descrobject.o Objects/enumobject.o Objects/exceptions.o Objects/genobject.o Objects/fileobject.o Objects/floatobject.o Objects/frameobject.o Objects/funcobject.o Objects/interpreteridobject.o Objects/iterobject.o Objects/listobject.o Objects/longobject.o Objects/dictobject.o Objects/odictobject.o Objects/memoryobject.o Objects/methodobject.o Objects/moduleobject.o Objects/namespaceobject.o Objects/object.o Objects/obmalloc.o Objects/picklebufobject.o Objects/rangeobject.o Objects/setobject.o Objects/sliceobject.o Objects/structseq.o Objects/tupleobject.o Objects/typeobject.o Objects/unicodeobject.o Objects/unicodectype.o Objects/weakrefobject.o Python/_warnings.o Python/Python-ast.o Python/asdl.o Python/ast.o Python/ast_opt.o Python/ast_unparse.o Python/bltinmodule.o Python/ceval.o Python/codecs.o Python/compile.o Python/context.o Python/dynamic_annotations.o Python/errors.o Python/frozenmain.o Python/future.o Python/getargs.o Python/getcompiler.o Python/getcopyright.o Python/getplatform.o Python/getversion.o Python/graminit.o Python/hamt.o Python/import.o Python/importdl.o Python/initconfig.o Python/marshal.o Python/modsupport.o Python/mysnprintf.o Python/mystrtoul.o Python/pathconfig.o Python/peephole.o Python/preconfig.o Python/pyarena.o Python/pyctype.o Python/pyfpe.o Python/pyhash.o Python/pylifecycle.o Python/pymath.o Python/pystate.o Python/pythonrun.o Python/pytime.o Python/bootstrap_hash.o Python/structmember.o Python/symtable.o Python/sysmodule.o Python/thread.o Python/traceback.o Python/getopt.o Python/pystrcmp.o Python/pystrtod.o Python/pystrhex.o Python/dtoa.o Python/formatter_unicode.o Python/fileutils.o Python/dynload_shlib.o Python/pydtrace.o Modules/config.o Modules/getpath.o Modules/main.o Modules/gcmodule.o Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o Python/frozen.o --- Python configure options: --- ./configure --build=ppc64le-redhat-linux-gnu --host=ppc64le-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-ipv6 --enable-shared --with-computed-gotos=yes --with-dbmliborder=gdbm:ndbm:bdb --with-system-expat --with-system-ffi --enable-loadable-sqlite-extensions --with-dtrace --with-lto --with-ssl-default-suites=openssl --with-valgrind --without-ensurepip --enable-optimizations --- I found the error message in GNU gas assembler: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gas/write.c;h=5d9a2394224d0c36129cc70f0d5755c7014ff9bb;hb=HEAD#l1169 The error message is quite old, it has been added in 2008: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=76d1293995586b060a2dc642a72c877db7092580;hp=b96e292732664fd8c63970ca11c3a9ac92f60ff9 -- Fedora builds of python39: https://koschei.fedoraproject.org/package/python39 Build 40639489 is green, build 40790556 is red. One interesting difference is GCC 9.2.1 upgraded to GCC 10.0.1. All differences (Dependency changes from previous build): glibc-devel 2.30.9000-29.fc32 2.30.9000-30.fc32 1 redhat-rpm-config 146-1.fc32 148-1.fc32 1 gcc-c++ 9.2.1-1.fc32.3 10.0.1-0.3.fc32 1 glibc-all-langpacks 2.30.9000-29.fc32 2.30.9000-30.fc32 1 sqlite-devel 3.30.1-2.fc32 3.30.1-3.fc32 1 glibc-common 2.30.9000-29.fc32 2.30.9000-30.fc32 2 perl-Exporter 5.73-440.fc31 5.74-1.fc32 2 gcc 9.2.1-1.fc32.3 10.0.1-0.3.fc32 2 annobin 8.92-1.fc32 9.01-1.fc32 2 sqlite 3.30.1-2.fc32 3.30.1-3.fc32 2 libxcrypt-devel 4.4.10-2.fc32 4.4.11-1.fc32 2 libstdc++-devel 9.2.1-1.fc32.3 10.0.1-0.3.fc32 2 libgcc 9.2.1-1.fc32.3 10.0.1-0.3.fc32 2 glibc 2.30.9000-29.fc32 2.30.9000-30.fc32 2 sqlite-libs 3.30.1-2.fc32 3.30.1-3.fc32 2 libxcrypt 4.4.10-2.fc32 4.4.11-1.fc32 2 glibc-headers 2.30.9000-29.fc32 2.30.9000-30.fc32 2 libstdc++ 9.2.1-1.fc32.3 10.0.1-0.3.fc32 2 fontconfig-devel 2.13.92-3.fc32 2.13.92-4.fc32 3 cpp 9.2.1-1.fc32.3 10.0.1-0.3.fc32 3 tzdata 2019c-1.fc32 2019c-2.fc32 3 kernel-headers 5.5.0-0.rc6.git0.1.... 5.5.0-0.rc7.git0.1.... 3 libgomp 9.2.1-1.fc32.3 10.0.1-0.3.fc32 3 fontconfig 2.13.92-3.fc32 2.13.92-4.fc32 3 glibc-minimal-langpack 2.30.9000-29.fc32 2.30.9000-30.fc32 3 libtool-ltdl 2.4.6-31.fc31 2.4.6-32.fc32