WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED INVALID
129223
Build breaking due to linking error on clang with libc++
https://bugs.webkit.org/show_bug.cgi?id=129223
Summary
Build breaking due to linking error on clang with libc++
Rajaram Gaunker
Reported
2014-02-22 19:16:30 PST
Linking errors due to absence of some methonds in libc++. These functions are present in libsupc++. Linking with libsupc++ fixes these problems. CXXLD Programs/TestWebKitAPI/WebKit2/TestWebKit2 /usr/bin/ld: Libraries/.libs/../../Source/ThirdParty/gtest/src/.libs/Libraries_libgtest_la-gtest-all.o: undefined reference to symbol '__cxa_bad_typeid@@CXXABI_1.3' /usr/bin/ld: note: '__cxa_bad_typeid@@CXXABI_1.3' is defined in DSO /home/rajaram/os/gcc_install_root/lib64//libstdc++.so.6 so try adding it to the linker command line There are some missing $(ATSPI2_LIBS) flags which were causing build break. /home/rajaram/os/webkit_deps/lib/libatk-bridge-2.0.so.0: undefined reference to `atspi_is_initialized' /home/rajaram/os/webkit_deps/lib/libatk-bridge-2.0.so.0: undefined reference to `atspi_set_main_context' clang: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: *** [Programs/TestWebKitAPI/WTF/TestWTF] Error 1 make[1]: Leaving directory `/home/rajaram/os/WebKit/WebKitBuild/Release' make: *** [all] Error 2
Attachments
Patch
(3.27 KB, patch)
2014-02-22 19:24 PST
,
Rajaram Gaunker
no flags
Details
Formatted Diff
Diff
config.log file
(97.39 KB, text/x-log)
2014-02-24 01:49 PST
,
Rajaram Gaunker
no flags
Details
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Rajaram Gaunker
Comment 1
2014-02-22 19:24:53 PST
Created
attachment 224989
[details]
Patch
Rajaram Gaunker
Comment 2
2014-02-23 09:48:19 PST
gtk and gtk-w2 breaks are fixed in another change set attached with
https://bugs.webkit.org/show_bug.cgi?id=129229
Martin Robinson
Comment 3
2014-02-23 20:29:05 PST
"Libsupc++ is a support library for g++ that contains functions dealing with run-time type information (RTTI) and exception handling. If you attempt to use either exceptions or RTTI in a C++ kernel you have compiled with a GCC Cross-Compiler you will also need the libsupc++ library." (quoting from
http://wiki.osdev.org/Libsupcxx
). We shouldn't be using exceptions or RTTI in WebKit, so perhaps this fix isn't correct. I don't see anywhere that atspi_is_initialized is in WebKit, so it's quite likely that the missing symbols might be a bug in your packages.
Zan Dobersek
Comment 4
2014-02-24 01:41:13 PST
How are you configuring the WebKitGTK+ build? What compiler are you using? What OS/distribution? Can you please attach the config.log file?
Rajaram Gaunker
Comment 5
2014-02-24 01:48:02 PST
uname -a : Linux saqi 3.5.0-43-generic #66~precise1-Ubuntu SMP Thu Oct 24 14:52:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $CXX --version clang version 3.5 (
http://llvm.org/git/clang.git
a7b48ed6e362947101b732f840405b784bf185e0) (
http://llvm.org/git/llvm.git
f39297678b212ab5ee7885474762fc8c3f6c370f) Target: x86_64-unknown-linux-gnu Thread model: posix $CC --version clang version 3.5 (
http://llvm.org/git/clang.git
a7b48ed6e362947101b732f840405b784bf185e0) (
http://llvm.org/git/llvm.git
f39297678b212ab5ee7885474762fc8c3f6c370f) Target: x86_64-unknown-linux-gnu Thread model: posix
Rajaram Gaunker
Comment 6
2014-02-24 01:49:27 PST
Created
attachment 225045
[details]
config.log file Attaching config.log file.
Rajaram Gaunker
Comment 7
2014-02-24 01:56:08 PST
gtest uses RTTI. /WebKit/Source/ThirdParty (master)$ grep -r typeid * gtest/include/gtest/internal/gtest-type-util.h.pump: const char* const name = typeid(T).name(); gtest/include/gtest/internal/gtest-type-util.h.pump: // gcc's implementation of typeid(T).name() mangles the type name, gtest/include/gtest/internal/gtest-type-util.h: const char* const name = typeid(T).name(); gtest/include/gtest/internal/gtest-type-util.h: // gcc's implementation of typeid(T).name() mangles the type name, gtest/include/gtest/internal/gtest-port.h:// both the typeid and dynamic_cast features are present. gtest/include/gtest/internal/gtest-port.h: GTEST_CHECK_(typeid(*base) == typeid(Derived));
Zan Dobersek
Comment 8
2014-02-24 12:37:04 PST
The imported gtest code is quite old, 1.5.0 was released in April 2010. Still, I can build gtest with Clang 3.4 and libc++ 1.0 (
r199600
) after applying a small patch: diff --git a/Source/ThirdParty/gtest/include/gtest/internal/gtest-port.h b/Source/ThirdParty/gtest/include/gtest/internal/gtest-port.h index e8c6ae0..3b09af1 100644 --- a/Source/ThirdParty/gtest/include/gtest/internal/gtest-port.h +++ b/Source/ThirdParty/gtest/include/gtest/internal/gtest-port.h @@ -197,7 +197,7 @@ #define GTEST_PROJECT_URL_ "
http://code.google.com/p/googletest/
" // Determines the version of gcc that is used to compile this. -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) // 40302 means version 4.3.2. #define GTEST_GCC_VER_ \ (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
Csaba Osztrogonác
Comment 9
2014-06-04 00:50:21 PDT
Comment on
attachment 224989
[details]
Patch Cleared review? from
attachment 224989
[details]
so that this bug does not appear in
http://webkit.org/pending-review
. If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug