Skip to content

[Bug] undefined symbols in libtvm_compiler.so #19678

Description

@petersktang

Expected Behaviour: dlopen libtvm_compiler.so

loading succesful

Actual Behaviour: dlopen libtvm_compiler.so failed with undefined symbols

libtvm_compiler.so is built with undefined symbols, failing ctypes.CDLL("libtvm_compiler.so")

ldd -r build/py3-none-linux_x86_64/lib/* | grep undefined

undefined symbol: LLVMInitializeM68kTargetInfo, version LLVM_22.1       (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeXtensaTargetInfo, version LLVM_22.1     (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeM68kTarget, version LLVM_22.1   (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeXtensaTarget, version LLVM_22.1 (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeM68kTargetMC, version LLVM_22.1 (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeXtensaTargetMC, version LLVM_22.1       (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeM68kAsmParser, version LLVM_22.1        (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeXtensaAsmParser, version LLVM_22.1      (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeM68kAsmPrinter, version LLVM_22.1       (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)
undefined symbol: LLVMInitializeXtensaAsmPrinter, version LLVM_22.1     (build/py3-none-linux_x86_64/lib/libtvm_compiler.so)

Environment

  • Ubuntu 24.04.1 [Linux 6.17.0-35-generic], ROCm 7.2.3
  • AMD AI 9 HX 370 [890M]
  • TVM [tvm 0.25.dev100, main branch]
  • LLVM 22.1
(pyproject.toml)

[tool.scikit-build.cmake.define]
TVM_BUILD_PYTHON_MODULE = "ON"
USE_CUDA = "ON"
USE_ROCM = "ON"
USE_LLVM = "ON"
USE_CUBLAS = "ON"
USE_HIPBLAS = "ON"
USE_CUDNN = "ON"
CMAKE_C_COMPILER = "/opt/rocm/llvm/bin/clang"
CMAKE_CXX_COMPILER = "/opt/rocm/llvm/bin/clang++"
(build/config.cmake)

set(USE_CUDA $ENV{USE_CUDA})
set(USE_ROCM $ENV{USE_ROCM})
set(USE_CUBLAS $ENV{USE_CUBLAS})
set(USE_HIPBLAS $ENV{USE_HIPBLAS})
set(USE_CUDNN $ENV{USE_CUDNN})

set(BUILD_STATIC_RUNTIME $ENV{BUILD_STATIC_RUNTIME})

set(HIDE_PRIVATE_SYMBOLS $ENV{HIDE_PRIVATE_SYMBOLS})
set(USE_LLVM "llvm-config-22" CACHE STRING "Path to llvm-config or ON/OFF") # llvm-config-22

set(CUDA_TOOLKIT_ROOT_DIR $ENV{CONDA_PREFIX})
set(CMAKE_CXX_VISIBILITY_PRESET $ENV{CMAKE_CXX_VISIBILITY_PRESET})
set(CMAKE_VISIBILITY_INLINES_HIDDEN $ENV{CMAKE_VISIBILITY_INLINES_HIDDEN})

set(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE}) # Release, Debug, RelWithDebInfo, MinSizeRel

Steps to reproduce

conda activate tvm
conda install main::llvm
pip install -e .
python -c 'import ctypes;ctypes.CDLL("./build/py3-none-linux_x86_64/lib/libtvm_compiler.so")'

Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import ctypes;ctypes.CDLL("./build/py3-none-linux_x86_64/lib/libtvm_compiler.so")
                  ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "CONDA tvm/lib/python3.14/ctypes/__init__.py", line 433, in __init__
    self._handle = self._load_library(name, mode, handle, winmode)
                   ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "CONDA tvm/lib/python3.14/ctypes/__init__.py", line 475, in _load_library
    return _dlopen(name, mode)
OSError: ./build/py3-none-linux_x86_64/lib/libtvm_compiler.so: undefined symbol: LLVMInitializeM68kTargetInfo, version LLVM_22.1
  • needs-triage

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triagePRs or issues that need to be investigated by maintainers to find the right assignees to address ittype: bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions