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

    <tr>
        <th>Summary</th>
        <td>
            [OpenMP][OMPD] LLVM OMPD library ompd_get_task_frame() returns garbage in the frame_flag field
        </td>
    </tr>

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

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

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

<pre>
    Section "19.4.4.30 ompt_frame_flag_t" in the OMP 5.2 spec describes the values that are supposed to be returned by ompd_get_task_frame():
```c
2 typedef enum ompt_frame_flag_t {
3 ompt_frame_runtime =      0x00,
4   ompt_frame_application =  0x01,
5 ompt_frame_cfa =          0x10,
6   ompt_frame_framepointer = 0x20,
7 ompt_frame_stackaddress = 0x30
8 } ompt_frame_flag_t;
```
The flags tell the debugger how to interpret the exit_frame and enter_frame addresses in struct ompd_frame_t.

The following is TotalView debug output that shows the values are either garbage or uninitialized: 
```c
OMPD DLL: ompd_get_task_frame(task_handle=0x6a64e60)->rc_ok: 
exit_frame={frame_address={segment=0,address=0x7f3e874279f0},frame_flag=0x7ffe1fc25b60}, 
enter_frame={frame_address={segment=0,address=0x0},frame_flag=0x17}
```
Notice that the frame_flag fields are not valid.

We have determined that the addresses LLVM returns are runtime CFA addresses, so the frame_flags should be set to: "ompt_frame_runtime | ompt_frame_cfa", which is 0x10.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVF1vqzgQ_TXmZdTImK_wwENbNk_tttJe3X2MDB7Atw5GtmnS_fUrY1rabrQPN4oSzBwfj-ecGW6t7EfEimR3JKsjPrtBm-qXQOUDUaPFW_UXtk7qEQhjcblLd-kuoaBPkzt2hp_w2CneHx1hDOQIbkB4enyGbMfATtiCQNsa2aBdQq9czcsjd8ANgp2nSVsU4DQ0CAbdbEYU0Lz5E8SxR3d03L6EowjbE1aS5JbQmtBbktPwbcOagXubUGAHOM6n_6YIpLgLyORz0MyjkycEktSwfOiFUsLuAzQF-Azm06Rky0NB_AZ6ofEHOPsMbTu-cQbeeOPNv_Iuv5OWo0Oz7KIXtoGLz1DrePvChTBo7QpNaMDtgRT1FW2Su28VC8sfA4JHWHCo1CKQwGbuezQw6LMXZUloMuiWKF7kygx8FIA--L4OCaH1LrDOzK0LEoZE3G7NYDtYK6XPcuxBWvihHVc_JZ5DAqBnN80u-MQO-vzFPd44KN2ABnpuGt4jaAPzKEfpJFfyHxQkuYXrJnl6fK6hfnjwiOsWWxYDH4VCktT0kvM8xZwSVt6Q5A_THvXLRr9VhCQ1Ke5Wl4RihFcW-xOOznMRdr-F6KXoEtwXKSvKjpKiJux-U20FdBh3LcuafAW8H7tV_jfOvX5YXPjX13zyp3ayxaCG12HbCJ1EJYIko3ZeISm-SP03wsBfvbEcmpP0zf3Bs3nm4eHn49r9gey9Ke8PtxvM39_qbylYb5BZCT8_rPepXtRh7FqLF_ffOpQw5lnPg2wHb0Tfo2v-kagSUSYlj7CKizhJsizex9FQsUZgmif7cp93edtkWVPEaZPEIqGUCVZEsmKUpTSNizjOyjTexXGTp6yMUYicpXlLUoonLtVOqdfTTps-ktbOWO1Lmu0jxRtUdpnJjI14hiXoM83qyFR-z00z95akVEnr7MbipFPLMH-acHx8Jlntnx-fa5LVocaL_ZVsDDf_M2I_pHjvr3Wyfxc-mo2qBucm64cyOxB26KUb5mbX6hNhB5_Y-nczGf0LW0fYYbmOJeywXPffAAAA__-bORbs">