Yeah, I spent some time scratching my head about how my change would be causing that issue :) Let me know if it turns out to be related in any way and I'll look into it more.
From: Petr Hosek <pho...@chromium.org> Date: Thursday, August 17, 2017 at 4:04 PM To: Hans Wennborg <h...@chromium.org>, Shoaib Meenai <smee...@fb.com> Cc: Marshall Clow <mclow.li...@gmail.com>, "cfe-commits@lists.llvm.org" <cfe-commits@lists.llvm.org> Subject: Re: [libcxx] r309474 - [libc++] Hoist extern template above first use Actually nevermind, it seems like it was a different change and this one is harmless (I'm still bisecting libc++ to find out which is causing the error below). On Thu, Aug 17, 2017 at 3:54 PM Petr Hosek <pho...@chromium.org<mailto:pho...@chromium.org>> wrote: This broke our build of WebKit with the following build failure: ../../buildtools/linux-x64/clang/bin/clang++ -MD -MF obj/apps/web_view/web_view_test.test_webview.o.d -DTOOLCHAIN_VERSION=4e89c701396412a50a901115ab4a2a09145f3777 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DCAIRO_HAS_FC_FONT=0 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../third_party/webkit/Source/WebKit/fuchsia -I../../third_party/boringssl/include -Igen/third_party/cairo -I../../third_party/curl/include -Iobj/third_party/curl -Iobj/third_party/curl/curl -I../../third_party/freetype2/include -I../../third_party/harfbuzz/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/libjpeg-turbo -I../../third_party/libpng -I../../third_party/zlib -I../../third_party/libxml2/include -I../../third_party/sqlite -g --sysroot=/usr/local/google/home/phosek/fuchsia/out/build-magenta/build-magenta-pc-x86-64/sysroot --target=x86_64-fuchsia -no-canonical-prefixes -fdebug-prefix-map=/usr/local/google/home/phosek/fuchsia=. -Wall -Wextra -Wno-unused-parameter -Wno-enum-compare-switch -Wno-unused-lambda-capture -Wno-user-defined-warnings -fvisibility=hidden -g -Og -fsanitize=safe-stack -fstack-protector-strong -Werror -Wno-error=deprecated-declarations -fvisibility-inlines-hidden -std=c++14 -fno-exceptions -fno-rtti -Wthread-safety -c ../../apps/web_view/test_webview.cpp -o obj/apps/web_view/web_view_test.test_webview.o In file included from ../../apps/web_view/test_webview.cpp:1: In file included from ../../third_party/webkit/Source/WebKit/fuchsia/WebView.h:28: In file included from ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/functional:484: ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/type_traits:4323:23: error: implicit instantiation of undefined template 'std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >' _LIBCPP_INVOKE_RETURN(_VSTD::forward<_Fp>(__f)(_VSTD::forward<_Args>(__args)...)) ^ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/__config:468:15: note: expanded from macro '_VSTD' #define _VSTD std::_LIBCPP_NAMESPACE ^ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/type_traits:4340:9: note: in instantiation of exception specification for '__invoke<std::__2::function<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > (const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &)> &, const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &>' requested here _VSTD::__invoke(_VSTD::declval<_Fp>(), _VSTD::declval<_Args>()...)); ^ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/__config:468:15: note: expanded from macro '_VSTD' #define _VSTD std::_LIBCPP_NAMESPACE ^ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/functional:1601:33: note: in instantiation of template class 'std::__2::__invokable_r<void, std::__2::function<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > (const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &)> &, const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &>' requested here __invokable<_Fp&, _ArgTypes...>::value> ^ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/functional:1626:9: note: in instantiation of default argument for '__callable<std::__2::function<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > (const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &)> >' required here __callable<_Fp>::value && !is_same<_Fp, function>::value ^~~~~~~~~~~~~~~ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/functional:1628:5: note: in instantiation of default argument for 'function<std::__2::function<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > (const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &)> >' required here function(_Fp); ^~~~~~~~~~~~~ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/functional:1588:28: note: while substituting deduced template arguments into function template 'function' [with _Fp = std::__2::function<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > (const std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > &)>, $1 = (no value)] class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)> ^ ../../third_party/webkit/Source/WebKit/fuchsia/WebView.h:48:7: note: while declaring the implicit copy constructor for 'WebView' class WebView { ^ ../../buildtools/linux-x64/clang/lib/x86_64-fuchsia/include/c++/v1/iosfwd:193:32: note: template is declared here class _LIBCPP_TEMPLATE_VIS basic_string; ^ 1 error generated. On Wed, Aug 9, 2017 at 4:50 PM Hans Wennborg via cfe-commits <cfe-commits@lists.llvm.org<mailto:cfe-commits@lists.llvm.org>> wrote: Marshall: ping? On Thu, Aug 3, 2017 at 10:20 AM, Hans Wennborg <h...@chromium.org<mailto:h...@chromium.org>> wrote: > Sounds good to me, but Eric or Marshall need to sign off. > > On Thu, Aug 3, 2017 at 10:15 AM, Shoaib Meenai > <smee...@fb.com<mailto:smee...@fb.com>> wrote: >> Ping. >> >> On 7/28/17, 7:57 PM, "Shoaib Meenai" <smee...@fb.com<mailto:smee...@fb.com>> >> wrote: >> >> Marshall, Eric, Hans, >> >> Any objections to backporting this to 5.0? It fixes a potential >> visibility >> issue for clients of the header. >> >> On 7/28/17, 7:54 PM, "cfe-commits on behalf of Shoaib Meenai via >> cfe-commits" >> <cfe-commits-boun...@lists.llvm.org<mailto:cfe-commits-boun...@lists.llvm.org> >> on behalf of cfe-commits@lists.llvm.org<mailto:cfe-commits@lists.llvm.org>> >> wrote: >> >> Author: smeenai >> Date: Fri Jul 28 19:54:41 2017 >> New Revision: 309474 >> >> URL: >> https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D309474-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=EcGbIxegCOTbSLMJelp_vOaeGiS_iQ1eciM_oeX41-E&s=5q7TS5mhaUsf-1jQBqX62RvjcqAiy2whh8RO7yFhPyA&e= >> Log: >> [libc++] Hoist extern template above first use >> >> This function template is referenced inside class basic_string as a >> friend function. The extern template declaration needs to be above >> that >> friend declaration to actually take effect. >> >> This is important because this function was marked as exported in >> r307966, so without the extern template taking effect, it can leak >> into >> other DSOs as a visible symbol. >> >> Modified: >> libcxx/trunk/include/string >> >> Modified: libcxx/trunk/include/string >> URL: >> https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_libcxx_trunk_include_string-3Frev-3D309474-26r1-3D309473-26r2-3D309474-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=EcGbIxegCOTbSLMJelp_vOaeGiS_iQ1eciM_oeX41-E&s=zFJXc9CA6Sgyh25kGeAh4Qo36gpNQX_zo2qRlRFJoL8&e= >> >> ============================================================================== >> --- libcxx/trunk/include/string (original) >> +++ libcxx/trunk/include/string Fri Jul 28 19:54:41 2017 >> @@ -556,6 +556,8 @@ template<class _CharT, class _Traits, cl >> basic_string<_CharT, _Traits, _Allocator> >> operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, >> _CharT __y); >> >> +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+<char, >> char_traits<char>, allocator<char> >(char const*, string const&)) >> + >> template <bool> >> class _LIBCPP_TEMPLATE_VIS __basic_string_common >> { >> @@ -3999,7 +4001,6 @@ basic_string<_CharT, _Traits, _Allocator >> >> _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS >> basic_string<char>) >> _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS >> basic_string<wchar_t>) >> -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+<char, >> char_traits<char>, allocator<char> >(char const*, string const&)) >> >> #if _LIBCPP_STD_VER > 11 >> // Literal suffixes for basic_string [basic.string.literals] >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org<mailto:cfe-commits@lists.llvm.org> >> >> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=EcGbIxegCOTbSLMJelp_vOaeGiS_iQ1eciM_oeX41-E&s=95GYNfQT_kBVjYvYRYnF3mje6PEyF4EDl4MCBQKCu88&e= >> >> >> >> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org<mailto:cfe-commits@lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits<https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=kdA39W7AvY5obf-_ULDB8iubh1B9EMSOnHYzgIRKLeo&s=04SmXiMKTO1-t_I_pq2TlGtAT6kHCJ7xJ69U6iGcbGc&e=>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits