I am trying to create a simple Clang plugin and test it on my Windows host
with Msys2's mingw x86_64-w64-windows toolchain. The issue is that
windows (dll) plugin is failing to "find" the plugin. Can you please help
me to figure out what is wrong here? Thank you for any suggestion, Mark

1. creating plugin dll:

$ make -f makefile.mk
clang++ -c -std=c++14 -fno-exceptions -fno-rtti  -D_FILE_OFFSET_BITS=64
-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS   -I.
-Ic:/msys64/mingw64/include  example_plugin_clang.cpp -o
example_plugin_clang.o
clang++ -shared example_plugin_clang.o -static -o
*example-plugin-clang.dll* -Lc:/msys64/mingw64/lib
-lclang-cpp.dll- lLLVM.dll

2. test run:

 $ make -f makefile.mk test
clang++ -Xclang -load -Xclang  <CURDIR> /*example-plugin-clang.dll* -Xclang
-add-plugin -Xclang example-plugin-clang -c -std=c++11 example_cpp_class.cc
-o example_cpp_class.o
error: unable to find plugin 'example-plugin-clang'
1 error generated.
mingw32-make: *** [makefile.mk:86: example_cpp_class.o] Error 1

***
$ nm example-plugin-clang.dll | grep example
00000000701c1cb0 t _GLOBAL__sub_I_example_plugin_clang.cpp
00000000701e9020 b _ZL26_example_plugin_clang_node

per example_plugin_clang.cpp:

static FrontendPluginRegistry::Add<FindDependenciesAction>
_example_plugin_clang_node(/*plugin Name=*/          "example-plugin-clang",
                           /*plugin Description=*/   "Print out header
dependencies");

***

I tried an example for GCC plugin with the Msys2 GCC toolchain and this
works:

$ make -f makefile.mk
g++ -c -std=c++11 -Wno-literal-suffix  -fno-exceptions -fno-rtti   -I.
-Ic:/msys64/mingw64/include
-Ic:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.3.0/plugin/include
 example_plugin_gcc.cpp -o example_plugin_gcc.o
g++ -shared example_plugin_gcc.o -static -o example-plugin-gcc.dll
c:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.3.0/plugin/*cc1plus.exe.a*

$ make -f makefile.mk test
g++  -fplugin=C:/Users/msx/demo/plugin/*example-plugin-gcc.dll* -c
-std=c++11 example_cpp_class.cc -o example_cpp_class.o
Plugin info
===========

Base name: example-plugin-gcc
Full name: C:/Users/msx/demo/plugin/example-plugin-gcc.dll
Number of arguments of this plugin:0

Version info
============

Base version: 9.3.0
Date stamp: 20200312
Dev phase:
Revision:
Configuration arguments: ../gcc-9.3.0/configure --prefix=/mingw64
--with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32
--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
--with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include
--libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64
--with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++
--enable-shared --enable-static --enable-libatomic --enable-threads=posix
--enable-graphite --enable-fully-dynamic-string
--enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes
--disable-libstdcxx-pch --disable-libstdcxx-debug
--disable-isl-version-check --enable-lto --enable-libgomp
--disable-multilib --enable-checking=release --disable-rpath
--disable-win32-registry --disable-nls --disable-werror --disable-symvers
--enable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw64
--with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64
--with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=
https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld

Plugin successfully initialized

*** Other relevant info for clang plugin build ***

$ ntldd example-plugin-clang.dll
        libclang-cpp.dll => C:\msys64\mingw64\bin\libclang-cpp.dll
(0x0000000000e10000)
        KERNEL32.dll => C:\WINDOWS\SYSTEM32\KERNEL32.dll
(0x0000000005690000)
        msvcrt.dll => C:\WINDOWS\SYSTEM32\msvcrt.dll (0x00000000006d0000)

$ ldd example-plugin-clang.dll
        ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7fff6fb30000)
        KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7fff6f890000)
        KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll
(0x7fff6c610000)
        msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7fff6d540000)
        libclang-cpp.dll => /c/msys64/mingw64/bin/libclang-cpp.dll
(0x67400000)
        ADVAPI32.dll => /c/WINDOWS/System32/ADVAPI32.dll (0x7fff6d020000)
        sechost.dll => /c/WINDOWS/System32/sechost.dll (0x7fff6e2c0000)
        zlib1.dll => /mingw64/bin/zlib1.dll (0x62e80000)
        RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7fff6cec0000)
        ole32.dll => /c/WINDOWS/System32/ole32.dll (0x7fff6d300000)
        combase.dll => /c/WINDOWS/System32/combase.dll (0x7fff6de50000)
        ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7fff6c970000)
        bcryptPrimitives.dll => /c/WINDOWS/System32/bcryptPrimitives.dll
(0x7fff6c4e0000)
        GDI32.dll => /c/WINDOWS/System32/GDI32.dll (0x7fff6e360000)
        gdi32full.dll => /c/WINDOWS/System32/gdi32full.dll (0x7fff6bbf0000)
        msvcp_win.dll => /c/WINDOWS/System32/msvcp_win.dll (0x7fff6c8d0000)
        USER32.dll => /c/WINDOWS/System32/USER32.dll (0x7fff6dcb0000)
        win32u.dll => /c/WINDOWS/System32/win32u.dll (0x7fff6ca70000)
        SHELL32.dll => /c/WINDOWS/System32/SHELL32.dll (0x7fff6e390000)
        cfgmgr32.dll => /c/WINDOWS/System32/cfgmgr32.dll (0x7fff6c560000)
        shcore.dll => /c/WINDOWS/System32/shcore.dll (0x7fff6db80000)
        libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x64940000)
        windows.storage.dll => /c/WINDOWS/System32/windows.storage.dll
(0x7fff6bd90000)
        profapi.dll => /c/WINDOWS/System32/profapi.dll (0x7fff6bb40000)
        powrprof.dll => /c/WINDOWS/System32/powrprof.dll (0x7fff6bb70000)
        shlwapi.dll => /c/WINDOWS/System32/shlwapi.dll (0x7fff6d2a0000)
        kernel.appcore.dll => /c/WINDOWS/System32/kernel.appcore.dll
(0x7fff6bbd0000)
        cryptsp.dll => /c/WINDOWS/System32/cryptsp.dll (0x7fff6c8b0000)
        VERSION.dll => /c/WINDOWS/SYSTEM32/VERSION.dll (0x7fff60a40000)
        libstdc++-6.dll => /mingw64/bin/libstdc++-6.dll (0x6fc40000)
        libgcc_s_seh-1.dll => /mingw64/bin/libgcc_s_seh-1.dll (0x61440000)
        libz3.dll => /c/msys64/mingw64/bin/libz3.dll (0xcf0000)
        libz3.dll => /c/msys64/mingw64/bin/libz3.dll (0xcf0000)

- Tools -

Compiler:

$ clang++ --version
clang version 10.0.0 (https://github.com/msys2/MINGW-packages.git
3f880aaba91a3d9cdfb222dc270274731a2119a9)
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:\msys64\mingw64\bin

w/

$ llvm-config --version
10.0.0

Linker:

$ /c/msys64/mingw64/bin/ld --version
GNU ld (GNU Binutils) 2.34
Copyright (C) 2020 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later
version.
This program has absolutely no warranty.

Make:

$ mingw32-make --version
GNU Make 4.3
Built for Windows32
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
_______________________________________________
Msys2-users mailing list
Msys2-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/msys2-users

Reply via email to