[Bug 2023437]

Alan Modra 2023437 at bugs.launchpad.net
Fri Jun 16 00:44:22 UTC 2023


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/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
so/libz.so.1 so/libtinfo.so.6.4 so/libstdc++.so.6.0.32 so/libm.so.6
so/libgcc_s.so.1 -lgcc --start-group so/libc.so.6 /home/gnu/powerpc64le-
linux-gnu/usr/lib64/libc_nonshared.a so/ld64.so.2 --end-group
so/libgcc_s.so.1 -lgcc /usr/local/lib/gcc/powerpc64le-linux-
gnu/12.2.0/crtend.o /home/gnu/powerpc64le-linux-gnu/usr/lib64/crtn.o

This is the command line passed to the linker by g++-12 as shown by
adding -v to the g++ command line, with unneeded plugin and library path
stuff removed and modified to pick up your shared libraries.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to binutils in Ubuntu.
https://bugs.launchpad.net/bugs/2023437

Title:
  ppc64el gold linker produces unusable clang-16 binary

Status in binutils:
  In Progress
Status in binutils package in Ubuntu:
  New

Bug description:
  root at 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 at 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 at Unimatrix08-Jammy:/clang# ./bin/clang-16 -v
  qemu: uncaught target signal 11 (Segmentation fault) - core dumped
  Segmentation fault (core dumped)
  root at 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/binutils/+bug/2023437/+subscriptions




More information about the foundations-bugs mailing list