<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/148703>148703</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Offload] Failure to check validity of image for sm_120 architecture
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jafudev
      </td>
    </tr>
</table>

<pre>
    When compiling an offloading capable compiler with the recommended CMake cache file,
```
cd llvm-project
mkdir build
cd build
cmake ../llvm -G Ninja \
    -C ../offload/cmake/caches/Offload.cmake \
    -DCMAKE_BUILD_TYPE="Release" \
    -DCMAKE_INSTALL_PREFIX="/opt/llvm/llvm-project/install" \
 -DCMAKE_C_COMPILER="clang-19" \
    -DCMAKE_CXX_COMPILER="clang++-19" \
    -DLIBOMPTARGET_ENABLE_DEBUG=ON
ninja -j 24 install
```
running an executable containing any offloading with `OMP_TARGET_OFFLOAD=mandatory ./a.out` and `LIBOMPTARGET_DEBUG=1` crashes with
```
omptarget --> Init offload library!
OMPT --> Entering connectLibrary
OMPT --> OMPT: Trying to load library libomp.so
OMPT --> OMPT: Trying to get address of connection routine ompt_libomp_connect
OMPT --> OMPT: Library connection handle = 0x70ef79559e60
OMPT --> Exiting connectLibrary
omptarget --> Loading RTLs...
omptarget --> RTLs loaded!
PluginInterface --> Failure to check validity of image 0x5651b5deed20: Invalid CUDA addressing modePluginInterface --> Failure to check validity of image 0x5651b5deed20: Invalid CUDA addressing modePluginInterface --> Failure to check validity of image 0x5651b5deed20: Invalid CUDA addressing modeomptarget --> No RTL found for image 0x00005651b5dea120!
omptarget --> Done registering entries!
omptarget --> Entering target region for device -1 with entry point 0x00005651b5dea047
omptarget --> Use default device id 0
omptarget --> Call to omp_get_num_devices returning 0
omptarget --> omp_get_num_devices() == 0 but offload is manadatory
omptarget error: Consult https://openmp.llvm.org/design/Runtimes.html for debugging options.
omptarget error: No images found compatible with the installed hardware. Segmentation fault (core dumped)

```
on an RTX 5070ti (sm_120 architecture).

In the related discussion on the llvm discourse (https://discourse.llvm.org/t/issues-compiling-with-offloading-support/87258/7), @jhuber6  suspects a change in the CUDA ELF ABI, see `PluginInterface --> Failure to check validity of image 0x5651b5deed20: Invalid CUDA addressing mode`, which is related to (https://github.com/llvm/llvm-project/blob/main/offload/plugins-nextgen/common/src/Utils/ELF.cpp#L76) is causing this issue.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcVktv474R_zT0ZWCBpiw7PvjglxZGnQeyCbo9GZQ4lpiVSIGk8vj2xUiyN0ldtL308AcMSNbM_DjzmwdHeq8Lg7hkyZol25FsQ2nd8kWeWoWvo8yqj-XfSzSQ27rRlTYFSAP2dKqsVPQvl43MKhzk6OBNhxJCieAwt3WNRqGCza38jZDLvEQ46QqZ2DC-YjM-_PgqV1BVr_W4cfYF88D4qv6ttIOs1ZXq5ZfXmsCiiImUTGD8A-60eZHAEkIFABhvevngKBNpZ0RP8sEzkd73oqhH-2S63dyu_rY7rp_3h-3x6R8POxZvmRCPWKH0yIS4ory_-_m0OhyOD4-7dP-rN6DjmzA4OTwu4YlUGx9kVX3CO4Ntjpv724f9YffYA-WVNMV4srh-9ObXr2v6TKyZWF-xOuzX97cPT6vHH7un4-5utT7sjtvd-vkHi7f3d4yvTMfl-AXEFM5Ofs2Va40ZKgHfMW_DUAEmSD0IPj7XSFcSbMbvbx-Ow8H3aXq4X21ZvK2lUTJY9wGUMBnZNrAZB2kUmXzx9uzmhBRyJ32JvgP_5p-tmyBdgQHGYxbvYG90OPsDlc6cdB9MTBhfEfagtDMBXVfR1hjMw2HQ-6JEryxewZP7INVg4TMmPW3dRN7-JyvyTSrl0Huwp_OR2hpwtg3aIFAMxx7vOIivgw5-fsYopVEVAou3wN_nHE_zRZIssOPmc8TvOlwN-Dt_hyGPj08HH0XRFQ2SdFSg6ol9qNpCmz1xepI5Dmqp1FXrkBjIS8x_w6ustNKBqgV0LQsE_p7MkkmWKEQlOAW4N50WbJ63qzNp5E1tFf61jvnO6p0lYuFkW6PgZN0FlHPOz8ByInjP-XfzrTU0hQvth8pGE5ym4XdN-1L_w1cytKY7VuGrpqgnfScTzAc0Vpvw3Rc-nV-BfvYICk-yrcIZSyu41qkbWVXEJ1V9geFo2vrYW3hwGFrXjZdrllcsmLhhYkFt0HUCZO2fKaA91NLIfvJ8gUPnrKNMbazx5HEZQuNZvGIi7UY6mrqJaJhH1hVMpArpCmUifWxN0DX6qAx1NRCXtUVBLtuGOtNH14-6s31q_ZBrukxl0DRVL9fpMIpRQSmdepMOI_iJRY0myK7re36ZuMmtQ1Bt3VAzLmg2fhuPhib349MvSPicB002vj5OBAfp8lIHzEPrkIlF1BvvzXChVzKgAqV93npPZ9pe0l3D9Nm2ziPhfSXtIvrMW3cJet-iH1-WizGFO_5zdYx92zTWkerNXCQ3TKRziklsgE35S9lm6GYAvvUN5sGDhLyUpiC2Ose6LtsdUlit92TkEelW-T_1M9EtNvBW6rykijsTGOy_UlToULZZlNv6324MWWUzJtJaavNltWm6aPzY4HsokGS0eFl68S5nIn0OuqKVZ3dIo7xpmIgP8xm1hvaQy7bzN5TaQ5eOaKSWsVrECznC5WSeiETwyXw-KpeLeYaTGyXzUzzD-CYW08V0diOEEnEsTtlppJeCi4TPJ9PJgi_iWTSdznIx45NsmsvpPJmyKcda6upSB6PuyOVkejPn8aiSGVa-20WFMPjWO0S7VLIduWXHR9YWnk15pX3wf2CCDlW3xA5rHUu2_00-qUmvlP6oddXyf85PX8xMpEM0r0vxzwAAAP__WzCtAw">