Issue 161059
Summary `R_X86_64_GOTTPOFF` linking error in x32 architecture.
Labels new issue
Assignees
Reporter HomuHomu833
    (this is a continuation of https://github.com/ziglang/zig/issues/25374)

This issue exists in LLVM 18(?) to 21 and there isn't any resolve yet. hopefully this gets fixed.

The Error:
```bash
2025-09-27T15:02:44.6910810Z FAILED: [code=1] bin/lld 
2025-09-27T15:02:44.6942420Z : && /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/zig-as-llvm/bin/c++ -fstack-protector-strong -fsanitize=undefined -static -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Os -DNDEBUG -static -static -fno-pie -Wl,--color-diagnostics tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o tools/lld/tools/lld/CMakeFiles/lld.dir/lld-driver.cpp.o -o bin/lld -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMSupport.a lib/libLLVMTargetParser.a  lib/liblldCommon.a  lib/liblldCOFF.a lib/liblldELF.a  lib/liblldMachO.a  lib/liblldMinGW.a  lib/liblldWasm.a lib/liblldCOFF.a  lib/libLLVMLibDriver.a  lib/libLLVMWindowsDriver.a lib/libLLVMWindowsManifest.a  lib/liblldCommon.a  lib/libLLVMOption.a lib/libLLVMX86CodeGen.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86Desc.a lib/libLLVMX86Disassembler.a  lib/libLLVMX86Info.a lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a  lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMARMCodeGen.a lib/libLLVMARMAsmParser.a  lib/libLLVMARMDisassembler.a  lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a  lib/libLLVMARMUtils.a  lib/libLLVMRISCVCodeGen.a lib/libLLVMAsmPrinter.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a lib/libLLVMRISCVAsmParser.a  lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVDesc.a  lib/libLLVMMCDisassembler.a  lib/libLLVMRISCVInfo.a lib/libLLVMLTO.a  lib/libLLVMExtensions.a  lib/libLLVMPasses.a lib/libLLVMCodeGen.a  lib/libLLVMCGData.a  lib/libLLVMCodeGenTypes.a lib/libLLVMTarget.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCFGuard.a lib/libLLVMIRPrinter.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a lib/libLLVMBitWriter.a  lib/libLLVMInstrumentation.a  lib/libLLVMVectorize.a lib/libLLVMSandboxIR.a  lib/libLLVMLinker.a  lib/libLLVMFrontendOpenMP.a lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a lib/libLLVMFrontendAtomic.a  lib/libLLVMHipStdPar.a lib/libLLVMTransformUtils.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoDWARF.a lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a  lib/libLLVMObject.a  lib/libLLVMTextAPI.a lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMIRReader.a lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMCore.a lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMSupport.a -lrt  -ldl  -lm /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/output/x86_64-linux-muslx32/lib/libz.a /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/output/x86_64-linux-muslx32/lib/libzstd.a lib/libLLVMDemangle.a && cd /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/tools/lld/tools/lld && /usr/local/bin/cmake -E create_symlink lld /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/./bin/lld-link && cd /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/tools/lld/tools/lld && /usr/local/bin/cmake -E create_symlink lld /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/./bin/ld.lld && cd /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/tools/lld/tools/lld && /usr/local/bin/cmake -E create_symlink lld /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/./bin/ld64.lld && cd /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/tools/lld/tools/lld && /usr/local/bin/cmake -E create_symlink lld /home/runner/work/llvm-custom-experimental/llvm-custom-experimental/build/x86_64-linux-muslx32/./bin/wasm-ld
2025-09-27T15:02:44.6981900Z ld.lld: error: lib/liblldELF.a(Relocations.cpp.o):(function void addRelativeReloc<true>(lld::elf::Ctx&, lld::elf::InputSectionBase&, unsigned long long, lld::elf::Symbol&, long long, lld::elf::RelExpr, lld::elf::RelType): .text._ZL16addRelativeRelocILb1EEvRN3lld3elf3CtxERNS1_16InputSectionBaseEyRNS1_6SymbolExNS1_7RelExprENS1_7RelTypeE+0xf6): R_X86_64_GOTTPOFF must be used in MOVQ or ADDQ instructions only
2025-09-27T15:02:44.6987419Z ld.lld: error: lib/liblldELF.a(Relocations.cpp.o):(function void lld::elf::RelocationBaseSection::addReloc<true>(lld::elf::DynamicReloc::Kind, lld::elf::RelType, lld::elf::InputSectionBase&, unsigned long long, lld::elf::Symbol&, long long, lld::elf::RelExpr, lld::elf::RelType): .text._ZN3lld3elf21RelocationBaseSection8addRelocILb1EEEvNS0_12DynamicReloc4KindENS0_7RelTypeERNS0_16InputSectionBaseEyRNS0_6SymbolExNS0_7RelExprES5_+0x137): R_X86_64_GOTTPOFF must be used in MOVQ or ADDQ instructions only
```

CMake Flags I use:
```bash
cmake -S "$ROOTDIR/llvm" -B "${TARGET_BUILD_DIR}" -G Ninja \
 -DCMAKE_INSTALL_PREFIX="${ROOTDIR}/llvm-${{matrix.target}}" \
 -DCMAKE_PREFIX_PATH="${TARGET_INSTALL_DIR}" \
 -DLLVM_TARGETS_TO_BUILD="X86;AArch64;ARM;RISCV" \
 -DCMAKE_BUILD_TYPE=MinSizeRel \
    -DCMAKE_CROSSCOMPILING=True \
 -DCMAKE_SYSTEM_NAME=Linux \
 -DLLVM_DEFAULT_TARGET_TRIPLE=${{matrix.target}} \
 -DCMAKE_C_COMPILER="${TOOLCHAIN}/bin/cc" \
 -DCMAKE_CXX_COMPILER="${TOOLCHAIN}/bin/c++" \
 -DCMAKE_ASM_COMPILER="${TOOLCHAIN}/bin/cc" \
 -DCMAKE_LINKER="${TOOLCHAIN}/bin/ld" \
 -DCMAKE_OBJCOPY="${TOOLCHAIN}/bin/objcopy" \
 -DCMAKE_AR="${TOOLCHAIN}/bin/ar" \
 -DCMAKE_RANLIB="${TOOLCHAIN}/bin/ranlib" \
 -DCMAKE_STRIP="${TOOLCHAIN}/bin/strip" \
 -DCMAKE_C_FLAGS="-fstack-protector-strong -fsanitize=undefined -static" \
    -DCMAKE_CXX_FLAGS="-fstack-protector-strong -fsanitize=undefined -static" \
    -DCMAKE_EXE_LINKER_FLAGS="-static" \
 -DLLVM_ENABLE_PROJECTS="${{inputs.projects}}" \
 -DLLVM_ENABLE_ZLIB=FORCE_ON \
    -DLLVM_ENABLE_ZSTD=FORCE_ON \
 -DLLVM_USE_STATIC_ZSTD=ON \
    -DLLVM_BUILD_STATIC=ON \
 -DCLANG_ENABLE_ARCMT=OFF \
    -DLLVM_LINK_LLVM_DYLIB=OFF \
 -DLIBCLANG_BUILD_STATIC=ON \
    -DCMAKE_SKIP_INSTALL_RPATH=TRUE \
 -DBUILD_SHARED_LIBS=OFF \
    -DLLVM_INCLUDE_BENCHMARKS=OFF \
 -DLLVM_BUILD_BENCHMARKS=OFF \
    -DLLVM_INCLUDE_EXAMPLES=OFF \
 -DLLVM_BUILD_EXAMPLES=OFF \
    -DLLVM_BUILD_TESTS=OFF \
 -DLLVM_BUILD_TOOLS=ON \
    -DLLVM_INCLUDE_TESTS=OFF \
 -DCLANG_INCLUDE_TESTS=OFF \
    -DCLANG_BUILD_TESTS=OFF \
 -DLLVM_TOOL_C_TEST_BUILD=OFF \
    -DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF \
    -DCLANG_TOOL_APINOTES_TEST_BUILD=OFF \
 -DCLANG_TOOL_ARCMT_TEST_BUILD=OFF \
    -DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF \
    -DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF \
 -DLLVM_PARALLEL_LINK_JOBS=1 \
    -DLLVM_ENABLE_PIC=OFF \
 -DLLVM_ENABLE_LIBCXX=OFF \
    -DLLVM_ENABLE_LLVM_LIBC=OFF \
 -DLLVM_ENABLE_UNWIND_TABLES=OFF \
    -DLLVM_ENABLE_EH=OFF \
 -DLLVM_ENABLE_RTTI=OFF \
    -DLLVM_ENABLE_LTO=OFF \
 -DLLVM_ENABLE_TERMINFO=OFF \
    -DLLVM_ENABLE_MODULES=OFF \
 -DLLVM_ENABLE_PEDANTIC=OFF \
    -DLLVM_ENABLE_FFI=OFF \
 -DLLVM_ENABLE_LIBPFM=OFF \
    -DLLVM_ENABLE_LIBEDIT=OFF \
 -DLLVM_ENABLE_LIBXML2=OFF \
    -DLLVM_ENABLE_CURL=OFF \
 -DLLVM_ENABLE_THREADS=ON \
    -DLLVM_VERSION_SUFFIX="" \
 -DCLANG_VENDOR="Android" \
 -DCLANG_REPOSITORY_STRING="https://github.com/${{ github.repository_owner }}/llvm-custom" \
    -DPACKAGE_BUGREPORT="https://github.com/${{ github.repository_owner }}/android-ndk-custom/issues/"
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to