diff options
author | Manoj Gupta <manojgupta@google.com> | 2017-10-17 11:01:39 -0700 |
---|---|---|
committer | Manoj Gupta <manojgupta@google.com> | 2017-10-20 14:41:06 -0700 |
commit | 1beff241c359fb8c98c98a661142e5b614eceb64 (patch) | |
tree | d18ab80e80cf846676b93418d7a0d98c3a201afb /.gitignore | |
parent | 69e48e92de43960a316a826293510b7b3deb9eca (diff) | |
download | googletest-1beff241c359fb8c98c98a661142e5b614eceb64.tar.gz googletest-1beff241c359fb8c98c98a661142e5b614eceb64.tar.bz2 googletest-1beff241c359fb8c98c98a661142e5b614eceb64.zip |
googletest: Add GTEST_API_ attribute to ThreadLocal class.
ThreadLocal class needs to be have default visibility.
Root cause is gtest uses typeinfo for the ThreadLocal class.
The problem manifests When gtest/gmock are built as a shared library
with libc++. When a class is used in typeinfo, it must have default
visibility.
There is an explanation about typeinfo and visibility here:
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html
When libc++ is used with gtest in shared library mode, any tests
that are compiled with -fvisibility=hidden and exercise the
macro EXPECT_CALL, it results in an abort like:
[ FATAL ] /usr/include/gtest/internal/gtest-port.h:1394::
Condition typeid(*base) == typeid(Derived) failed.
This is because the typeinfo for ThreadLocal class is not visible.
Therefore, linker failed to match it to the shared library symbol, creating a
new symbol instead.
This fixes https://github.com/google/googletest/issues/1207.
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions