ppc64el gold linker produces unusable clang-16 binary

Bug #2023437 reported by Gianfranco Costamagna
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
binutils
Fix Released
Medium
binutils (Ubuntu)
Fix Released
High
Unassigned

Bug Description

root@Unimatrix08-Jammy:/clang# /usr/bin/g++-12 -O3 -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -ffile-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -ffile-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -fno-common -Woverloaded-virtual -fno-strict-aliasing -O3 -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--build-id -fuse-ld=bfd -Wl,--gc-sections tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/clang-driver.cpp.o -o bin/clang-16-bfd -Wl,-rpath,"\$ORIGIN/../lib:" lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTargetParser.a lib/libLLVMTransformUtils.a lib/libLLVMVectorize.a lib/libclangBasic.a lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a lib/libclangFrontendTool.a lib/libclangSerialization.a lib/libLLVMAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a lib/libLLVMLTO.a lib/libLLVMExtensions.a lib/libPolly.a lib/libPollyISL.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMObjCARCOpts.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a lib/libLLVMBitWriter.a lib/libLLVMLinker.a lib/libLLVMIRPrinter.a lib/libclangExtractAPI.a lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a lib/libLLVMWindowsDriver.a lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a lib/libclangSema.a lib/libclangAnalysis.a lib/libclangASTMatchers.a lib/libLLVMFrontendHLSL.a lib/libclangEdit.a lib/libclangSupport.a lib/libclangAST.a lib/libLLVMFrontendOpenMP.a lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMProfileData.a lib/libLLVMSymbolize.a lib/libLLVMDebugInfoDWARF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMObject.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMIRReader.a lib/libLLVMBitReader.a lib/libLLVMAsmParser.a lib/libLLVMTextAPI.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a lib/libLLVMCore.a lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libclangFormat.a lib/libclangToolingInclusions.a lib/libclangToolingCore.a lib/libclangRewrite.a lib/libclangLex.a lib/libclangBasic.a lib/libLLVMTargetParser.a lib/libLLVMSupport.a lib/libLLVMDemangle.a -lrt -ldl -lm /usr/lib/powerpc64le-linux-gnu/libz.so /usr/lib/powerpc64le-linux-gnu/libtinfo.so
root@Unimatrix08-Jammy:/clang# /usr/bin/g++-12 -O3 -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -ffile-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -ffile-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -fno-common -Woverloaded-virtual -fno-strict-aliasing -O3 -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--build-id -fuse-ld=gold -Wl,--gc-sections tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/clang-driver.cpp.o -o bin/clang-16 -Wl,-rpath,"\$ORIGIN/../lib:" lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTargetParser.a lib/libLLVMTransformUtils.a lib/libLLVMVectorize.a lib/libclangBasic.a lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a lib/libclangFrontendTool.a lib/libclangSerialization.a lib/libLLVMAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a lib/libLLVMLTO.a lib/libLLVMExtensions.a lib/libPolly.a lib/libPollyISL.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMObjCARCOpts.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a lib/libLLVMBitWriter.a lib/libLLVMLinker.a lib/libLLVMIRPrinter.a lib/libclangExtractAPI.a lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a lib/libLLVMWindowsDriver.a lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a lib/libclangSema.a lib/libclangAnalysis.a lib/libclangASTMatchers.a lib/libLLVMFrontendHLSL.a lib/libclangEdit.a lib/libclangSupport.a lib/libclangAST.a lib/libLLVMFrontendOpenMP.a lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMProfileData.a lib/libLLVMSymbolize.a lib/libLLVMDebugInfoDWARF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMObject.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMIRReader.a lib/libLLVMBitReader.a lib/libLLVMAsmParser.a lib/libLLVMTextAPI.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a lib/libLLVMCore.a lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libclangFormat.a lib/libclangToolingInclusions.a lib/libclangToolingCore.a lib/libclangRewrite.a lib/libclangLex.a lib/libclangBasic.a lib/libLLVMTargetParser.a lib/libLLVMSupport.a lib/libLLVMDemangle.a -lrt -ldl -lm /usr/lib/powerpc64le-linux-gnu/libz.so /usr/lib/powerpc64le-linux-gnu/libtinfo.so
root@Unimatrix08-Jammy:/clang# ./bin/clang-16 -v
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault (core dumped)
root@Unimatrix08-Jammy:/clang# ./bin/clang-16-bfd -v
Ubuntu clang version 16.0.5
Target: powerpc64le-unknown-linux-gnu
Thread model: posix
InstalledDir: /clang/./bin
Found candidate GCC installation: /usr/lib/gcc/powerpc64le-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/powerpc64le-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64

With bfd everything works, with gold, I get a Segmentation Fault.
(Ubuntu mantic development release)

First broken version is 2.40-2ubuntu5
Last working version is 2.40-2ubuntu4

According to the diff only one powerpc change was added on gold linker
http://launchpadlibrarian.net/664314947/binutils_2.40-2ubuntu4_2.40-2ubuntu5.diff.gz

And its this one
https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=0961e631575b0a1eafccf32fbde56d456aef9169

Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :
Download full text (8.9 KiB)

root@Unimatrix08-Jammy:/clang# /usr/bin/g++-12 -O3 -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -ffile-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -ffile-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -fno-common -Woverloaded-virtual -fno-strict-aliasing -O3 -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--build-id -fuse-ld=bfd -Wl,--gc-sections tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/clang-driver.cpp.o -o bin/clang-16-bfd -Wl,-rpath,"\$ORIGIN/../lib:" lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTargetParser.a lib/libLLVMTransformUtils.a lib/libLLVMVectorize.a lib/libclangBasic.a lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a lib/libclangFrontendTool.a lib/libclangSerialization.a lib/libLLVMAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a lib/libLLVMLTO.a lib/libLLVMExtensions.a lib/libPolly.a lib/libPollyISL.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMObjCARCOpts.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a lib/libLLVMBitWriter.a lib/libLLVMLinker.a lib/libLLVMIRPrinter.a lib/libclangExtractAPI.a lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a lib/libLLVMWindowsDriver.a lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a lib/libclangSema.a lib/libclangAnalysis.a lib/libclangASTMatchers.a lib/libLLVMFrontendHLSL.a lib/libclangEdit.a lib/libclangSupport.a lib/libclangAST.a lib/libLLVMFronte...

Read more...

Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :

https://drive.abinsula.com/index.php/s/UAPjvTzcXNc3Bhi

Here you can find the .a libraries and the clang binaries.

Changed in binutils (Ubuntu):
importance: Undecided → High
Changed in binutils:
importance: Unknown → Medium
status: Unknown → New
Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :

Confirmed also on
2.40.50.20230611-2ubuntu1

Revision history for this message
In , Alan Modra (amodra-gmail) wrote :

When I build clang-16 from your object files (plus my system libraries and startup files) for powerpc64le using gold 2.40.50.20230614 I get exactly the same binary as when using gold 2.39.0.20230101. That's comparing gold from the tip of master and binutils-2_39-branch in sourceware.org/git/binutils-gdb.git. The latter does not have the commit you identify as causing a problem.

Very likely the reason why I don't see a problem is that my libz.so.1, libtinfo.so.5, libstdc++.so.6, libm.so.6, libgcc_s.so.1, libc.so.6, ld64.so.2, or startup files are different to yours.

Changed in binutils:
status: New → In Progress
Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :
Download full text (4.3 KiB)

Hello Alan, thanks for the answer.
I uploaded here [1] the .so files in a single directory

[1] https://drive.abinsula.com/index.php/s/NMDO384gjCOCEJw

With this command I could reproduce again the issue, let me know if it is enough
to have more information on the issue

In the meanwhile I patched llvm-* to link with bfd on p*pc* architectures, and its working great.

/usr/bin/g++-12 -O3 -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -fdebug-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -ffile-prefix-map=/llvm-toolchain-16-16.0.5/build-llvm=build-llvm -ffile-prefix-map=/llvm-toolchain-16-16.0.5/= -no-canonical-prefixes -fno-common -Woverloaded-virtual -fno-strict-aliasing -O3 -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--build-id -fuse-ld=gold -Wl,--gc-sections tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/clang-driver.cpp.o -o bin/clang-16 -Wl,-rpath,"\$ORIGIN/../lib:" lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTargetParser.a lib/libLLVMTransformUtils.a lib/libLLVMVectorize.a lib/libclangBasic.a lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a lib/libclangFrontendTool.a lib/libclangSerialization.a lib/libLLVMAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a lib/libLLVMLTO.a lib/libLLVMExtensions.a lib/libPolly.a lib/libPollyISL.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMObjCARCOpts.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a lib/libLLVMBitWriter.a lib/libLLVMLinker.a lib/libLLVMIRPrinter.a lib/libclangExtractAPI.a lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a lib/li...

Read more...

Revision history for this message
In , Alan Modra (amodra-gmail) wrote :
Download full text (4.1 KiB)

Linking with your .so files still doesn't give me any difference between gold-2.39 and gold mainline. I'm using my crt*.o, libc_nonshared.a, libgcc.a. From ld -t output it seems nothing from libc_nonshared.a or libgcc.a is extracted, so the only real difference ought to be crt1.o, crti.o, crtn.o, crtbegin.o and crtend.o. Please supply them too. For reference the linker command line I'm using on my x86_64 to powerpc64le cross compiler setup is:

~/build/gas/all/gold/ld-new --sysroot=/home/gnu/powerpc64le-linux-gnu --eh-frame-hdr -m elf64lppc -dynamic-linker /lib64/ld64.so.2 -o bin/clang-16 /home/gnu/powerpc64le-linux-gnu/usr/lib64/crt1.o /home/gnu/powerpc64le-linux-gnu/usr/lib64/crti.o /usr/local/lib/gcc/powerpc64le-linux-gnu/12.2.0/crtbegin.o -L/usr/local/lib/gcc/powerpc64le-linux-gnu/12.2.0 -v -Bsymbolic-functions -z relro --build-id --gc-sections tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/clang-driver.cpp.o -rpath $ORIGIN/../lib: lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTargetParser.a lib/libLLVMTransformUtils.a lib/libLLVMVectorize.a lib/libclangBasic.a lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a lib/libclangFrontendTool.a lib/libclangSerialization.a lib/libLLVMAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a lib/libLLVMLTO.a lib/libLLVMExtensions.a lib/libPolly.a lib/libPollyISL.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMObjCARCOpts.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a lib/libLLVMBitWriter.a lib/libLLVMLinker.a lib/libLLVMIRPrinter.a lib/libclangExtractAPI.a lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a lib/libLLVMWindowsDriver.a lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a lib/libclangSema.a lib/libclangAnalysis.a lib/libclangASTMatchers.a lib/libLLVMFrontendHLSL.a lib/libclangEdit.a lib/libclangSupport.a lib/libclangAST.a lib/libLLVMFrontendOpenMP.a lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMProfileData.a lib/libLLVMSymbolize.a lib/libLLVMDebugInfoDWARF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMObject.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMIRReader.a lib/l...

Read more...

Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :

Created attachment 14939
crt*.o files

Revision history for this message
In , Alan Modra (amodra-gmail) wrote :

I've been going down the wrong rabbit hole, I should have asked you at the outset to post the result of your g++ command with -v added. That would have shown your compiler is defaulting to PIEs while mine is not. Adding -pie to the gold command line shows a huge number of relative dynamic relocations are missing from 2.40 and mainline compared to 2.39.

Revision history for this message
In , Cvs-commit (cvs-commit) wrote :

The master branch has been updated by Alan Modra <email address hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=dc808a2ebab337b5517add4c1aad298cf836c239

commit dc808a2ebab337b5517add4c1aad298cf836c239
Author: Alan Modra <email address hidden>
Date: Wed Jun 21 22:44:09 2023 +0930

    PR30536, ppc64el gold linker produces unusable clang-16 binary

    In commit 0961e631575b, the fix for PR30217, make_lplt_section and
    make_brlt_section were changed to use rela_dyn_ rather than their own
    separate dynamic reloc sections. This fails miserably whenever brlt_
    is needed for long branches, due to needing to iterate sizing and thus
    reset brlt_ sizes.

            PR 30536
            PR 30217
            * powerpc.cc (Target_powerpc::make_brlt_section): Don't use
            rela_dyn_.

Revision history for this message
In , Cvs-commit (cvs-commit) wrote :

The binutils-2_40-branch branch has been updated by Alan Modra <email address hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=03f49a0619c5598eea80511efef5a88c4f7bb293

commit 03f49a0619c5598eea80511efef5a88c4f7bb293
Author: Alan Modra <email address hidden>
Date: Wed Jun 21 22:44:09 2023 +0930

    PR30536, ppc64el gold linker produces unusable clang-16 binary

    In commit 0961e631575b, the fix for PR30217, make_lplt_section and
    make_brlt_section were changed to use rela_dyn_ rather than their own
    separate dynamic reloc sections. This fails miserably whenever brlt_
    is needed for long branches, due to needing to iterate sizing and thus
    reset brlt_ sizes.

            PR 30536
            PR 30217
            * powerpc.cc (Target_powerpc::make_brlt_section): Don't use
            rela_dyn_.

    (cherry picked from commit dc808a2ebab337b5517add4c1aad298cf836c239)

Revision history for this message
In , Alan Modra (amodra-gmail) wrote :

Should now be fixed.

Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :

thanks! I'll test shortly!

Changed in binutils:
status: In Progress → Fix Released
Revision history for this message
In , Gianfranco Costamagna (costamagnagianfranco) wrote :

Hello, testing was successful, thanks!

Changed in binutils (Ubuntu):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.