royjacobson / externis

Generate profiling traces for GCC
GNU Affero General Public License v3.0
41 stars 1 forks source link

`undefined symbol: _Z14decl_as_stringP9tree_nodei` #5

Open cmcquinn opened 8 months ago

cmcquinn commented 8 months ago

I am getting cc1: error: cannot load plugin /usr/lib/gcc/x86_64-linux-gnu/11/plugin/externis.so: /usr/lib/gcc/x86_64-linux-gnu/11/plugin/externis.so: undefined symbol: _Z14decl_as_stringP9tree_nodei after building with gcc11 on ubuntu 22.04.

royjacobson commented 8 months ago

This is weird. Did you compile the plugin using the same compiler that you try to use it with? Could you post the output of ldd /usr/lib/gcc/x86_64-linux-gnu/11/plugin/externis.so?

cmcquinn commented 8 months ago
ldd /usr/lib/gcc/x86_64-linux-gnu/11/plugin/externis.so
        linux-vdso.so.1 (0x00007ffceed38000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3a29db3000)
        libgcc_s.so.1 => /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3a29d93000)
        libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f3a29b6b000)
        libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007f3a29a84000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3a2a042000)

I am building and using externis with gcc 11.

royjacobson commented 8 months ago

Ok, I think I understand the issue -

root@d42820f69d52:/lib# grep _Z14decl_as_stringP9tree_nodei -R
grep: gcc/x86_64-linux-gnu/11/plugin/externis.so: binary file matches
grep: gcc/x86_64-linux-gnu/11/cc1plus: binary file matches

It seems that the symbol is only available as a C++ compiler plugin and not as a C compiler plugin. I'm not sure how to fix this, though. Could you ask in the GCC mailing list about this? In the meantime I can only suggest the workaround of not using the plugin when compiling for C.