New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoiding unique global symbols #549
Comments
These symbols appear when you have an Case 1: function that is inline by chance. If the function is defined and used only in a single cpp file you can make it explicitly non-inline. Case 2: function that is inline but not critical for performance. If the function is not critical for performance then it can be made non-inline moving it to a cpp file (see 476ee27). Case 3: function that is inline but critical for performance. This is more complicated. If the static variable is just caching an environment variable then the function can be made |
I close the issue since this is basically fixed. I added a check on our CI so as to detect future appearances of the issue. The only remaining unique global symbols are:
|
This option should solve once for all the problem with gnu unique symbols. I am not 100% this option will not introduce troubles linking other C++ libraries, and thus I leave the possibility to remove it with ./configure --disable-no-gnu-unique However, problems are very unlikely considering that this is the same behavior of icpc and clang. See #549
This closed now but I add a comment for future reference. With current flags ( |
I noticed that when using plumed from python the
libplumedKernel.so
library is not unloaded correctly on Linux. To see the bug useexport PLUMED_LOAD_DEBUG=1
and then:This seems to be a consequence of the presence of some "unique global symbols" in the library (show with
nm -C libplumedKernel.so | grep " u "
). I already have some fixes ready to be merged, but I open an issue here so I can refer to the issue in the commits (and in case people might comment).The text was updated successfully, but these errors were encountered: