[all-commits] [llvm/llvm-project] ac029e: [Libomptarget] Remove __tgt_image_info and use the...

Joseph Huber via All-commits all-commits at lists.llvm.org
Tue Dec 19 18:01:44 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: ac029e02a92cbda80e6a45833b72df25e26669c2
      https://github.com/llvm/llvm-project/commit/ac029e02a92cbda80e6a45833b72df25e26669c2
  Author: Joseph Huber <huberjn at outlook.com>
  Date:   2023-12-19 (Tue, 19 Dec 2023)

  Changed paths:
    M openmp/libomptarget/include/DeviceImage.h
    M openmp/libomptarget/include/Shared/APITypes.h
    M openmp/libomptarget/include/Shared/PluginAPI.h
    M openmp/libomptarget/include/Shared/PluginAPI.inc
    M openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp
    M openmp/libomptarget/plugins-nextgen/amdgpu/utils/UtilitiesRTL.h
    M openmp/libomptarget/plugins-nextgen/common/include/PluginInterface.h
    A openmp/libomptarget/plugins-nextgen/common/include/Utils/ELF.h
    M openmp/libomptarget/plugins-nextgen/common/src/PluginInterface.cpp
    M openmp/libomptarget/plugins-nextgen/common/src/Utils/ELF.cpp
    R openmp/libomptarget/plugins-nextgen/common/src/Utils/ELF.h
    M openmp/libomptarget/plugins-nextgen/cuda/src/rtl.cpp
    M openmp/libomptarget/plugins-nextgen/generic-elf-64bit/src/rtl.cpp
    M openmp/libomptarget/src/DeviceImage.cpp
    M openmp/libomptarget/src/PluginManager.cpp
    M openmp/libomptarget/src/omptarget.cpp

  Log Message:
  -----------
  [Libomptarget] Remove __tgt_image_info and use the ELF directly (#75720)

Summary:
This patch reorganizes a lot of the code used to check for compatibility
with the current environment. The main bulk of this patch involves
moving from using a separate `__tgt_image_info` struct (which just
contains a string for the architecture) to instead simply checking this
information from the ELF directly. Checking information in the ELF is
very inexpensive as creating an ELF file is simply writing a base
pointer.

The main desire to do this was to reorganize everything into the ELF
image. We can then do the majority of these checks without first
initializing the plugin. A future patch will move the first ELF checks
to happen without initializing the plugin so we no longer need to
initialize and plugins that don't have needed images.

This patch also adds a lot more sanity checks for whether or not the ELF
is actually compatible. Such as if the images have a valid ABI, 64-bit
width, executable, etc.




More information about the All-commits mailing list