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

    <tr>
        <th>Summary</th>
        <td>
            [flang][plugins] undefined symbol: _ZTVN7Fortran8frontend14FrontendActionE'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            flang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          banach-space
      </td>
    </tr>
</table>

<pre>
    This was originally posted on [Discourse](https://discourse.llvm.org/t/flang-example-plugin-does-not-load/). I'm reposting a reduced version here.

**Issue**
With `LLVM_EXPORT_SYMBOLS_FOR_PLUGINS` set to `On` (see the full CMake invocation below), Flang tests that rely on the plugin API fail:

```
********************
********************
Failed Tests (9):
  Flang :: Examples/omp-atomic.f90
  Flang :: Examples/omp-declarative-directive.f90
  Flang :: Examples/omp-device-constructs.f90
  Flang :: Examples/omp-in-reduction-clause.f90
  Flang :: Examples/omp-nowait.f90
  Flang :: Examples/omp-sections.f90
  Flang :: Examples/print-fns-calls.f90
  Flang :: Examples/print-fns-definitions.f90
  Flang :: Examples/print-fns-interfaces.f90


Testing Time: 2.46s
  Unsupported      :    7
  Passed           : 1659
  Expectedly Failed:   18
  Failed           :    9
```

The actual error is:
```
error: unable to load plugin 'lib/flangPrintFunctionNames.so': 'lib/flangPrintFunctionNames.so: undefined symbol: _ZN7Fortran8frontend14FrontendAction22shouldEraseOutputFilesEv'
```

**Reproducer**
```
cmake \
  -G Ninja \
  ../../llvm \
  -DCMAKE_BUILD_TYPE=Release \
  -DLLVM_TARGETS_TO_BUILD=host \
  -DLLVM_ENABLE_PROJECTS="clang;mlir;flang" \
  -DLLVM_EXPORT_SYMBOLS_FOR_PLUGINS=ON \
  -DFLANG_BUILD_EXAMPLES=ON \
  -DLLVM_USE_LINKER=gold`
ninja check-flang
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVluP2joQ_jXhxQqChHB54IFLWHHKTcD2tH1BTjIhbh07sh22--87TsgWpF0dWp3I5GJ_M5755mIimbyOjxnT5IVqIhU7M0E5fyWF1AYSIgVxgumc6ViWSoMTzB1vmBlTaMefON4CR9Istjm_5G2pzjhp8JdyKs4u_KR5wcEteIm63USCdoU0Lpc0qRSM2mTpeIOcKLCbMnEmFN-TMsb9L6A0QyMyUNB2OnOnM7nePTuWWpdQv9bT_zKTEaffWa0-r0_hl912fzwdvq6n29XhtNjuT7vV89Nyc0AE0WCIkRa8FfYbHdMAxGRA0pJzMlvTH0CYuMiYGmtDBFy-oL2ONyML6xsxoI1GCWrQYCQNQVa8dpVMdkuSUsYtU7eW9zvXcePIX47_ScMCrUSyj5U7yMPIetlYTa7O2gl_QsI6nhpjJ_PCpUbmLG6no84j6ARiThXSeQE3YQpi-_a48IXF4MZSaKPK2OhHBTHtqnyyUXTRgFI_vKeQL5SZR9Eaqj0eMqxQTBg3FdqNseD-UCSBlAn2F3vhE1RKY7iRu73bFLAVeGQ5WCVeu9fXjfpnocuikMo2huqyCLwGDWBHtW7W3gDdfjBqAOHPAimCBGulzrlaQ3f45kGdifca8Bq9Xzu1zVhyNDYl5QSUkoow_bvk7gWqdauyFDTiYOvf9qGmYrENcRY1rWtnWVuUoorphubImZYIsfKPIKttqkihR_o1j6RtBeT0bTNYIImKimGqJAZEJN3e4vo2qXR4ns5kyZNQUQ3b0hSlWSAxOrzY_T-moi7qPRRK2v6p7trEvUCc2_bmBLOGeveJbJj4Tm_n2m10sbrZ3n6Hns_Wk0_hafq8XM1Px6-70PHne-CABt_jqlZ8nOyfwuPhdNzWEgjOsNm_gww3k-kqPO3223_C2fGAQMfzYsuy409zzjB804p0nH5P_OOe78-3m3uJxWqyebq6EH6ZrHer8D1Ypfj5EJ5Wy82ncI-Is-TJG5OiYi3OIP7h1pbd892Csa2BQdcfDINWMvaTkT-iLcMMhzGerrUMnqzBtM5DjR8fpM7x838nT4g50ioVH9-f02c8GsuoHcv8Gs7rw8Vk-Y5ViZ_MHqe2YQT9UdBrZePIj7qJH_UH8Sjyu36PprTveyN_kHQhBeq1OMVTUVsvMBxnKROSMoVxZfXB7NmzEh9NwNCxFht7Hc_rDDtBN_D7Xq_t9SPfh5438L1hNOiC0-tAjn3g7f9ES40rQ6PyrHGRMzymfi9iz2FnARWVVj8tTSbVOKKCxpmrC2x2rcqcceXVLzbEol0">