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

    <tr>
        <th>Summary</th>
        <td>
            Loading plugins in clang-check
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          T-Maxxx
      </td>
    </tr>
</table>

<pre>
    I can not force _clang-check_ to load custom plugin and dump AST to see how custom attributes parsed. **Is it possible?**

**Clang version:** _clang++13_ and _clang-check-13_ from apt-get on Ubuntu22.
**Clang plugin code:**  Attribute.cpp from [example](https://github.com/llvm/llvm-project/blob/main/clang/examples/Attribute/Attribute.cpp)

Plugin compiled out of Clang tree using CMake and `find_package(Clang REQUIRED)` feature and following configuration:
```CMake
add_library(clang_example_plugin SHARED Attribute.cpp)
target_include_directories(clang_example_plugin PRIVATE ${CLANG_INCLUDE_DIRS})
target_link_libraries(clang_example_plugin PRIVATE clangTooling)
```

Example source file with custom attribute (source.cpp):
```CPP
[[plugin::example]] int foo() {
    return 0;
};
``` 

I got following results.
**Command 1.** Compile source file using example plugin: 
```
clang++ --verbose -fsyntax-only -fplugin=/home/user/projects/clang_example_plugin/build/src/libclang_example_plugin.so /home/user/projects/clang_example_plugin/tests/source.cpp
```
**Output:** new attribute added, no warnings appear, everything seems fine: 
```
Ubuntu clang version 13.0.1-2ubuntu2.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
 (in-process)
 "/usr/lib/llvm-13/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name source.cpp -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -v -fcoverage-compilation-dir=/home/user -resource-dir /usr/lib/llvm-13/lib/clang/13.0.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward -internal-isystem /usr/lib/llvm-13/lib/clang/13.0.1/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir=/home/user -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -load /home/user/projects/clang_example_plugin/build/src/libclang_example_plugin.so -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/user/projects/clang_example_plugin/tests/source.cpp
clang -cc1 version 13.0.1 based upon LLVM 13.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward
 /usr/lib/llvm-13/lib/clang/13.0.1/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
```

**Command 2.** Make sure there's a warning about custom attrribute compiling without custom plugin. Just in case:
```
clang++ --verbose -fsyntax-only /home/user/projects/clang_example_plugin/tests/source.cpp
```
**Output:** got expected warning. So plugin works:
```
Ubuntu clang version 13.0.1-2ubuntu2.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
 (in-process)
 "/usr/lib/llvm-13/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name source.cpp -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -v -fcoverage-compilation-dir=/home/user -resource-dir /usr/lib/llvm-13/lib/clang/13.0.1 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward -internal-isystem /usr/lib/llvm-13/lib/clang/13.0.1/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir=/home/user -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /home/user/projects/clang_example_plugin/tests/source.cpp
clang -cc1 version 13.0.1 based upon LLVM 13.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward
 /usr/lib/llvm-13/lib/clang/13.0.1/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
/home/user/projects/clang_example_plugin/tests/source.cpp:1:3: warning: unknown attribute 'example' ignored [-Wunknown-attributes]
[[plugin::example]] int foo() {
 ^~~~~~~~~~~~~~~
1 warning generated.
```

**Command 3.** Trying to dump source.cpp AST with custom plugin:
```
clang-check-13 -ast-dump --extra-arg="--verbose" --extra-arg="-fsyntax-only" --extra-arg="-fplugin=/home/user/projects/clang_example_plugin/build/src/libclang_example_plugin.so" /home/user/projects/clang_example_plugin/tests/source.cpp
```
**Output:** warning appeared like there's no plugin loaded, AST dump contains no information about custom attribute:
```
Error while trying to load a compilation database:
Could not auto-detect compilation database for file "/home/user/projects/clang_example_plugin/tests/source.cpp"
No compilation database found in /home/user/projects/clang_example_plugin/tests or any parent directory
fixed-compilation-database: Error while opening fixed database: No such file or directory
json-compilation-database: Error while opening JSON database: No such file or directory
Running without flags.
Ubuntu clang version 13.0.1-2ubuntu2.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-13/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
clang Invocation:
 "/usr/lib/llvm-13/bin/clang-tool" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-fsyntax-only" "-disable-free" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "source.cpp" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-fno-rounding-math" "-mconstructor-aliases" "-munwind-tables" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-v" "-fcoverage-compilation-dir=/home/user" "-resource-dir" "/usr/lib/llvm-13/lib/clang/13.0.1" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward" "-internal-isystem" "/usr/lib/llvm-13/lib/clang/13.0.1/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/user" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-load" "/home/user/projects/clang_example_plugin/build/src/libclang_example_plugin.so" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c++" "/home/user/projects/clang_example_plugin/tests/source.cpp"

clang -cc1 version 13.0.1 based upon LLVM 13.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11
 /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11
 /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward
 /usr/lib/llvm-13/lib/clang/13.0.1/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
/home/user/projects/clang_example_plugin/tests/source.cpp:1:3: warning: unknown attribute 'example' ignored [-Wunknown-attributes]
[[plugin::example]] int foo() {
 ^~~~~~~~~~~~~~~
TranslationUnitDecl 0x139e008 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x139e910 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x139e5b0 '__int128'
|-TypedefDecl 0x139e980 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x139e5d0 'unsigned __int128'
|-TypedefDecl 0x139ecf8 <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag'
| `-RecordType 0x139ea70 '__NSConstantString_tag'
|   `-CXXRecord 0x139e9d8 '__NSConstantString_tag'
|-TypedefDecl 0x139ed90 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
| `-PointerType 0x139ed50 'char *'
|   `-BuiltinType 0x139e0b0 'char'
|-TypedefDecl 0x13df708 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag [1]'
| `-ConstantArrayType 0x13df6b0 '__va_list_tag [1]' 1 
| `-RecordType 0x139ee80 '__va_list_tag'
|     `-CXXRecord 0x139ede8 '__va_list_tag'
|-FunctionDecl 0x13df7b0 </home/user/projects/clang_example_plugin/tests/source.cpp:1:21, line:3:1> line:1:25 foo 'int ()'
| `-CompoundStmt 0x13df8c8 <col:31, line:3:1>
| `-ReturnStmt 0x13df8b8 <line:2:5, col:12>
|     `-IntegerLiteral 0x13df898 <col:12> 'int' 0
`-EmptyDecl 0x13df8e0 <line:3:2> col:2
1 warning generated.
```

**Am I doing something wrong?**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsO1tz2zazv4Z-2YGGIq3bgx9kXfq5k6Q5ttP2TQMCIIWaBDgAaMsv57efAUBSlCwrcuq4PfOp03FIYLE37C52FyLWmmeCsatgcB0M5he4Mmupru7RZ7zZbC4SSZ-vboBgAUIaSKUiDFYkxyJDZM3IwwqMhFxiCqTSRhZQ5lXGBWBBgVZFCdO7ewuiGYO1fGqgsDGKJ5VhGkqsNKM9CKJpEE1vNHADpdSaJzkL4qUfDsJ5EDZ_3cjM8gCPTGkuRRDXozVvQXQdRNf9eOX46PKL7GCqLAulQRkzIAV8SyphqijqvSRQi0MkZVsiMG3Y75Gy9OiCwTXb4KLMWTCYB9F4bUyp3ZJlEC0zbtZV0iOyCKJlnj82_6BSyb8YMUG0THKZBNGywFwE0bIWY1nj1EG0bIl2ny0DQTTp6udrw3JR8pxRkJUBmYKXxyjGoNJcZDD7jB-YU1AwDFMu6KrE5AFnLIjGHvh28T_fbm4Xc0tgGELKsKmUX5LKPJdPFg2RIuVZpbCpN8KzMgz9_46KH8OUrnKeKKyeg2jsJFzV8q1qPd_9Z3q7mMNh8QxWGTMrLkheUbaiXDFipOJWO4fRfb29-X16v4AgugxG17NP0y-_rG6-zD59my9W85vbu2A038eec_FQc3kCYjd5L2XO7W5N9mTv7srCIwAtK-tDKc8ZPHGzfuEREERjD9QI_1KnX7_WI9Zprz1PFiyedmxwMAcurM_KIBoH0QSC0bVfBgCgmKmUgDCI60Gri_a5oQRdEW4gczGg2XnFdJUbves1siisffR7ta_MvBnuyO3tr2YVWvbhoPo6Dg0IPTKVSM0ApfpZGLxBUuTPgNIGyTyIlmtZWB-pNFNBtKw9TDdOtbeV1vMqntMgWmpFrFvy5BBcT0v4AdyGaTfd2dGDNuKU9Vtlysps44xgTx27wJQyGkQzEBKesBJcZBpwWTKs7Ch7ZOrZrK1mNWOFhpQL9qpWfcjz9ttEUejHvbDXR1Hl42Gv72HvnWdYVJvxcDW8RCVBORfVBmWiqkHWimEKhaQst4Cl1HxTW43QBuc5o3OuHDtWe1Z5CRceYikrQe0ZQznFhsEvsxlwv6oJKruromWv53fKhlZid63mbMtWtOzX7N-xnBHD6HvjnbUMF1VuuF0VT6FnnegyLIaXx6DiqAaLo2NgmxZu0wC20hwjamMIF_ZwIUzrNjBBEEWtwF5Kdwj141YBtbdFgAjpAzKKWxc9sO_7Hki5xknOUGoPmPbNoX9kiqecKTdMsKLoEecVQwIXTAOyJx6yccENwNZTABWK5ZK4zULOtkAbbDgBVKQKFwyVkgvDVBDPcZ4DSgts1ogpJSSgVEikrGlxkSE7AaggUmijKntsIJxzrB0DlXjigiJjWdaA_EmASFlZwdHwEpCpBHMDGRNMWQYoS6osY8pO2eAfzzOaAHoElBL5yBTOGPJHsGefWuvfi06AFPPi2ml4dWv8e5MSeC8F5CQXOEdcP2vDih-05Rpw7099yFqyPvY64A8jemDVP8JHl6jFjcnDE1b0GP1TNm9L4ygmSXB-Gug7CH0A9iVhtrEP5CUDr2_d8dVvJwEopaxUjGDDKCowUdINJVV2gsOlTCmpUM4LbqA_AZRmoiKorSPml73IOldKNhvENoSVFpm2C7svROZSIcpxJqQ2nGhArgj6mdkHSjGlSvMM0Hy1-mU2W_1n-vtiNf9jeruMVrPlzWp69zmI531AG6gN9z1TFp8ruHNhN2GABGtGoSqlgE-ffv_cDFOW4io34OPp68kDz4RUNm8RUrAN14YJA012_7xzaP1UO7eETmdof1EQxY2FBlHUs7Qi0AwrsranljIa1kyxbTbfgY9nFj5eHIP_iAj3Mwl9J6R_nJDbML5P822h-8Xq3XC9P31EE69A-rpRUFu914aRc216R6rM3SIsaoowV-lrW7sbZ1PRSANuigjAiaxMtw6tCw4fTS2ELVQ7MHVMgl8rbYALIFizl1Xq6eXbR9dVtoxlm9Ln0bUWenAnm27Pk1QP-jWBzpXTuXI6V07nyulcOZ0rp3Pl9B6V07muOdc157rmXNc09vMenh1P-0E8jW2KVyf49rESD0I-iZ3LtlFzZRaNwDkIoxAMrtEfNTDa3lUHg_nfu3cLBov_3fnPj_fbUswlSTY8n17kxU2Rd6-eLQoj_cV7Jxuc3t3v3DVuGX-1YmtvywFhbZDDiOwJozDCKnPnQ9TWcy7tfTHbTXNfgfiIaztL-qMrzLa0dtdzjELOH7rFt2hrzVzi-lrP7pLTM5HCYC4cFBepVIU7l1_W6f7XAK9s48Ie1_C05jkD05qG61Ji6Bz3QLHBSbeCn8kqp-73HrgyElFmGDEHl0Aqlb_S9WfHO-i4OXa-yNco2pKXix_eUpAKsHiGEqud48-TTfmG0d1saKse6OpUlsxtsVvRVSJ8kaArsvaKkWqfxF9aijdR-PXuty9vIXBbCdHt2qQ5zppb-n9B9-JQ-fz2bsa7tjD-__ct_IbeiMe66O-mVyd1LpCRMvehMrK5cPPo-xj12yE7qOH2g70d63Y29sd2-hudyf0uRzO12-uoR3fihgfb73s0kK770UId6IG0gmw7Ie3Qfj-kxXOgK9LO7fRGWnW2HZKtStHwsp2uuyX1e90zadVzqHPSTD623J7cRWlWdHsp9dgbc0ePZ7_KPozr_RLej6L6vRT_HxJ_m--_iYGT64BTse7VBz9ZG0fr3F3Kew2RfQ6ObfCpmP4u6dpl9_synYlTujMteKdHU4_1J-3koX7NNmjsdG22CF8OvejgNDM2t9wK-nPT-ajtGjXvx3tHDdSmfmg96UfZPZK6_nvaSv-9vaSf20D68K7RuVV0bhX5gkthof1J8E1wM2ckh3DTjycsDMfWSYJ4xsUjzjkFnUsSxAvrMwdG6x99z9D9c8koSzuoJv3wLaiAF2XOCTewWnFh-tF4Zay2mrcgGrXUIBiG6LriueHCEq4pDpLwtRWH-Bv_MH9Vl8FKuI9fKLyFUxp-d-kBlkn6pt3psvzlbmarDCzMnXER1ylqf3RlcPaC_VtGpKId7vEoPHE5OASzP__0OBrN0_Fp6w-ogE5-eNcSvw2rQq8e8cpGAMsFWWPlPxvaE_urr-s6ctNB-OoKeGWnw6Rdc1Qymo7e5nqHJOuItWperE5tfOm7L4r2ZGzUP1UKP7dc03TYeNJhJNCH75gIG79EsKevw7ZB2fjoQrSsBLGBq6u5xNvEOwbyqB9EM8j9xw-xH1w07w5gYAOuZdXGXh94D6i3KG3Ff2cKU_M6Jm6Xicwt4kNU9jVrKiW6CBKHoF4UBfF0YJF4hP1oB0Gj5BthWMbUJ26Ywo3WxpMOJ25hLY3d4LDtBqNFUZrnjrbHLOwwEHsmFjUD0d-4i5gWcANUum9PZMH8VyhPStqjtP6C74JexXQST_AFu-oPR4NwPBlOJhfrqxFLxukgGfRHA0ImlA2SyzAaj_sJDglJR8kFv4rCKA77cdi_vOzHkx5Nw2FM4mE6GI0no8kouAxZgXnes2lLT6rsgmtdsathGI-HFzlOWK6b7xvVlcttkirTwWVozVRvlxlucnb1SWLK20__tPuB2_ZK5KJS-dWbP-5zDFlzdTz9XwAAAP__fpPkwQ">