code: def rocm_link(in_file, out_file, lld=None):
      """Link relocatable ELF object to shared ELF object using lld
  
      Parameters
      ----------
      in_file : str
          Input file name (relocatable ELF object file)
  
      out_file : str
          Output file name (shared ELF object file)
  
      lld : str, optional
          The lld linker, if not specified,
          we will try to guess the matched clang version.
      """
  
      # if our result has undefined symbols, it will fail to load
      # (hipModuleLoad/hipModuleLoadData), but with a somewhat opaque message
      # so we have ld.lld check this here.
      # If you get a complaint about missing symbols you might want to check the
      # list of bitcode files below.
      args = [
          lld if lld is not None else find_lld()[0],
          "--no-undefined",
          "-shared",
          in_file,
          "-o",
          out_file,
      ]
      proc = subprocess.Popen(
          args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
      )
      (out, _) = proc.communicate()
  
      if proc.returncode != 0:
          msg = "Linking error using ld.lld:\n"
          msg += py_str(out)
          raise RuntimeError(msg)
  
file_path: tvm/python/tvm/contrib/rocm.py
imports: import re
  import subprocess
  import os
  from os.path import join, exists
  import tvm._ffi
  from tvm._ffi.base import py_str
  import tvm.runtime
  import tvm.target
  from .None import utils
label_desc: Use image node_id 2 for calling a global function with example usage: rocm_link(in_file, out_file, lld) without return types