<div dir="ltr">We'd better ask users :)<div><br></div><div>Anna, Hans,</div><div><br></div><div>Currently when we build sanitizer runtimes on modern Mac OS X hosts, and no explicit -mmacosx-version-min is specified, we implicitly add -mmacosx-version-min=10.7,</div><div>as it's the minimum supported version that we can target. Do you think it makes sense to use the host version of OS X instead? I personally don't think so, as we might</div><div>easily use modern hosts for, say, Chromium buildbots, but use the freshly-built Clang to target older version of Mac OS.</div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 25, 2015 at 11:47 AM, Frédéric Riss <span dir="ltr"><<a href="mailto:friss@apple.com" target="_blank">friss@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span class=""><blockquote type="cite"><div>On Jun 25, 2015, at 11:38 AM, Alexey Samsonov <<a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a>> wrote:</div><br><div><div dir="ltr">Ah, right. But that's the expected change - if no version is specified, we assume that we want to support 10.7, and therefore can't depend on availability of libc++abi symbols<div>(otherwise we'll get problems at link time later).</div></div></div></blockquote><div><br></div></span><div>True. Wouldn’t it make more sense to default to the current machine’s version when nothing is specified?</div><div><div class="h5"><div><br></div><blockquote type="cite"><div><div dir="ltr"><div><div>I'm testing a quick fix now.</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 25, 2015 at 11:29 AM, Frédéric Riss <span dir="ltr"><<a href="mailto:friss@apple.com" target="_blank">friss@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span><blockquote type="cite"><div>On Jun 25, 2015, at 11:24 AM, Alexey Samsonov <<a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a>> wrote:</div><br><div><div dir="ltr">Hi Frederic,<div><br></div><div>Ah, just noticed it. Sorry for the breakage :-/.</div><div>I don't think your analysis is correct, though - we used to unconditionally set MIN_OSX_VERSION to 10.7 before, so the default behavior was not changed.</div></div></div></blockquote><div><br></div></span><div>what I mean is that you added </div><div><br></div><div>if VERSION < 10.9</div><div><br></div><div>below </div><div><br></div><div>if no version specified</div><div>  VERSION = 10.7</div><div><br></div><div>thus your test will always trigger when no version is specified (what I called the default behavior). If I revert this patch, the CFI tests pass just fine on my machine.</div><div><br></div><div>Fred</div><div><div><br><blockquote type="cite"><div><div dir="ltr"><div>The problem happens with newly added CFI diagnostic mode, that uses UBSan runtime, and depends on the presence of c++abi-specific code there, while we disabled</div><div>linking in this code on older versions of Darwin.</div><div><br></div><div>I will disable cfi tests on Darwin to fix the bot, and then discuss with Peter the way to resolve this.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 25, 2015 at 11:20 AM, Frédéric Riss <span dir="ltr"><<a href="mailto:friss@apple.com" target="_blank">friss@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
> On Jun 25, 2015, at 9:22 AM, Frédéric Riss <<a href="mailto:friss@apple.com" target="_blank">friss@apple.com</a>> wrote:<br>
><br>
> Hi Alexey<br>
><br>
> This commit broke the Darwin bot at:<br>
> <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lab.llvm.org-3A8080_green_job_clang-2Dstage1-2Dcmake-2DRA_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=PV4UtfTdwEWZeSgkeFESYwZwBQha0S73qObnHotXda0&e=" rel="noreferrer" target="_blank">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA/</a><br>
><br>
> The failures are link errors like:<br>
> undef: ___ubsan_handle_cfi_bad_type<br>
> Undefined symbols for architecture x86_64:<br>
>  "___ubsan_handle_cfi_bad_type", referenced from:<br>
>      _main in vdtor-0e96d6.o<br>
> ld: symbol(s) not found for architecture x86_64<br>
> clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)<br>
><br>
> I guess that somehow the check you added triggers on the bot, although it shouldn’t as the machines there are 10.10<br>
><br>
> Did you notice this?<br>
<br>
</span>What happens is that you added a check against SANITIZER_MIN_OSX_VERSION, but when none is specified (which is the default) the CMakelists decides that the default value is 10.7. So you actually changed the default behavior here. As this breaks a public bot, I’ll revert it if I don’t here from you soon.<br>
<br>
(There is a more fundamental issue here that the link error is really the wrong diagnostic. The fronted should prevent you from getting into that situation by telling you that the configuration your asking for won’t work.)<br>
<br>
Fred<br>
<div><div><br>
> Fred<br>
><br>
>> On Jun 24, 2015, at 5:57 PM, Alexey Samsonov <<a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a>> wrote:<br>
>><br>
>> Author: samsonov<br>
>> Date: Wed Jun 24 19:57:42 2015<br>
>> New Revision: 240617<br>
>><br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D240617-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=82b9cjhkOJLE6QfBKQ8MhDDURlvoxWO6BWc-z3-cBu4&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=240617&view=rev</a><br>
>> Log:<br>
>> [CMake] Fix PR23539: Don't reference C++ ABI symbols prior to Mac OS 10.9.<br>
>><br>
>> Summary:<br>
>> This patch implements step 1 from<br>
>> <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23539-23c10&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=Lq21XrCHvSlsMpWCvoTUXKy7ra9R-qNHhCCmgklqUbM&e=" rel="noreferrer" target="_blank">https://llvm.org/bugs/show_bug.cgi?id=23539#c10</a><br>
>><br>
>> I'd appreciate if you could test it on Mac OS and verify that parts of UBSan<br>
>> runtime that reference C++ ABI symbols are properly excluded, and fix ASan/UBSan<br>
>> builds.<br>
>><br>
>> Test Plan: regression test suite<br>
>><br>
>> Reviewers: thakis, hans<br>
>><br>
>> Subscribers: llvm-commits, zaks.anna, kubabrecka<br>
>><br>
>> Differential Revision: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10621&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=LnUzjyEbqI2zjVqTHw6AWY2eUkc7o3tEk2Yr3bE94xo&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D10621</a><br>
>><br>
>> Modified:<br>
>>   compiler-rt/trunk/CMakeLists.txt<br>
>>   compiler-rt/trunk/lib/ubsan/CMakeLists.txt<br>
>>   compiler-rt/trunk/test/lit.common.cfg<br>
>>   compiler-rt/trunk/test/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.common.configured.in_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=ixyybJtTOl_FU_4UNYa_P9XFFQBNhtpsPcT9NFlukys&e=" rel="noreferrer" target="_blank">lit.common.configured.in</a><br>
>>   compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr-virtual-base.cpp<br>
>>   compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr.cpp<br>
>><br>
>> Modified: compiler-rt/trunk/CMakeLists.txt<br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_CMakeLists.txt-3Frev-3D240617-26r1-3D240616-26r2-3D240617-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=rvSmDixtk59cPGREZw1cHNyvCWg5QGQc6nkx19JZ9jc&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=240617&r1=240616&r2=240617&view=diff</a><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/CMakeLists.txt (original)<br>
>> +++ compiler-rt/trunk/CMakeLists.txt Wed Jun 24 19:57:42 2015<br>
>> @@ -327,6 +327,15 @@ if(APPLE)<br>
>>  endif()<br>
>> endif()<br>
>><br>
>> +if(APPLE AND SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.9")<br>
>> +  # Mac OS X prior to 10.9 had problems with exporting symbols from<br>
>> +  # libc++/libc++abi.<br>
>> +  set(SANITIZER_CAN_USE_CXXABI FALSE)<br>
>> +else()<br>
>> +  set(SANITIZER_CAN_USE_CXXABI TRUE)<br>
>> +endif()<br>
>> +pythonize_bool(SANITIZER_CAN_USE_CXXABI)<br>
>> +<br>
>> add_subdirectory(include)<br>
>><br>
>> set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/projects/libcxx)<br>
>><br>
>> Modified: compiler-rt/trunk/lib/ubsan/CMakeLists.txt<br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_lib_ubsan_CMakeLists.txt-3Frev-3D240617-26r1-3D240616-26r2-3D240617-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=cgRX-X1jYWO5xK_I6OvoJEt1VDe_s_ZAIuuxewmwUGo&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/CMakeLists.txt?rev=240617&r1=240616&r2=240617&view=diff</a><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/ubsan/CMakeLists.txt (original)<br>
>> +++ compiler-rt/trunk/lib/ubsan/CMakeLists.txt Wed Jun 24 19:57:42 2015<br>
>> @@ -28,11 +28,16 @@ set(UBSAN_CXXFLAGS ${SANITIZER_COMMON_CF<br>
>> add_custom_target(ubsan)<br>
>><br>
>> if(APPLE)<br>
>> +  set(UBSAN_COMMON_SOURCES ${UBSAN_SOURCES})<br>
>> +  if(SANITIZER_CAN_USE_CXXABI)<br>
>> +    list(APPEND UBSAN_COMMON_SOURCES ${UBSAN_CXX_SOURCES})<br>
>> +  endif()<br>
>> +<br>
>>  # Common parts of UBSan runtime.<br>
>>  add_compiler_rt_object_libraries(RTUbsan<br>
>>    OS ${SANITIZER_COMMON_SUPPORTED_OS}<br>
>>    ARCHS ${UBSAN_COMMON_SUPPORTED_ARCH}<br>
>> -    SOURCES ${UBSAN_SOURCES} ${UBSAN_CXX_SOURCES}<br>
>> +    SOURCES ${UBSAN_COMMON_SOURCES}<br>
>>    CFLAGS ${UBSAN_CXXFLAGS})<br>
>><br>
>>  if(COMPILER_RT_HAS_UBSAN)<br>
>><br>
>> Modified: compiler-rt/trunk/test/lit.common.cfg<br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_lit.common.cfg-3Frev-3D240617-26r1-3D240616-26r2-3D240617-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=_6-dGZARl-5T9XQ77csRvfhN5a1vxlIRYBFc_6Xzrqs&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lit.common.cfg?rev=240617&r1=240616&r2=240617&view=diff</a><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/lit.common.cfg (original)<br>
>> +++ compiler-rt/trunk/test/lit.common.cfg Wed Jun 24 19:57:42 2015<br>
>> @@ -90,6 +90,10 @@ compiler_rt_debug = getattr(config, 'com<br>
>> if not compiler_rt_debug:<br>
>>  config.available_features.add('compiler-rt-optimized')<br>
>><br>
>> +sanitizer_can_use_cxxabi = getattr(config, 'sanitizer_can_use_cxxabi', True)<br>
>> +if sanitizer_can_use_cxxabi:<br>
>> +  config.available_features.add('cxxabi')<br>
>> +<br>
>> lit.util.usePlatformSdkOnDarwin(config, lit_config)<br>
>><br>
>> def is_darwin_lto_supported():<br>
>><br>
>> Modified: compiler-rt/trunk/test/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.common.configured.in_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=ixyybJtTOl_FU_4UNYa_P9XFFQBNhtpsPcT9NFlukys&e=" rel="noreferrer" target="_blank">lit.common.configured.in</a><br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_lit.common.configured.in-3Frev-3D240617-26r1-3D240616-26r2-3D240617-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=y44mcRz9SnBJfijt0-iAgLZCjoOG0BxjgELqcyC2UJk&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lit.common.configured.in?rev=240617&r1=240616&r2=240617&view=diff</a><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.common.configured.in_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=ixyybJtTOl_FU_4UNYa_P9XFFQBNhtpsPcT9NFlukys&e=" rel="noreferrer" target="_blank">lit.common.configured.in</a> (original)<br>
>> +++ compiler-rt/trunk/test/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.common.configured.in_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=ixyybJtTOl_FU_4UNYa_P9XFFQBNhtpsPcT9NFlukys&e=" rel="noreferrer" target="_blank">lit.common.configured.in</a> Wed Jun 24 19:57:42 2015<br>
>> @@ -27,6 +27,7 @@ set_default("python_executable", "@PYTHO<br>
>> set_default("compiler_rt_debug", @COMPILER_RT_DEBUG_PYBOOL@)<br>
>> set_default("compiler_rt_libdir", "@COMPILER_RT_LIBRARY_OUTPUT_DIR@")<br>
>> set_default("emulator", "@COMPILER_RT_EMULATOR@")<br>
>> +set_default("sanitizer_can_use_cxxabi", @SANITIZER_CAN_USE_CXXABI_PYBOOL@)<br>
>><br>
>> # LLVM tools dir can be passed in lit parameters, so try to<br>
>> # apply substitution.<br>
>><br>
>> Modified: compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr-virtual-base.cpp<br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_ubsan_TestCases_TypeCheck_vptr-2Dvirtual-2Dbase.cpp-3Frev-3D240617-26r1-3D240616-26r2-3D240617-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=-CsJo5ANmcKtqEHX5ZBhrZn6Za3ju0v5Jvs8mDzzI9M&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr-virtual-base.cpp?rev=240617&r1=240616&r2=240617&view=diff</a><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr-virtual-base.cpp (original)<br>
>> +++ compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr-virtual-base.cpp Wed Jun 24 19:57:42 2015<br>
>> @@ -1,6 +1,8 @@<br>
>> // RUN: %clangxx -frtti -fsanitize=vptr -fno-sanitize-recover=vptr -g %s -O3 -o %t<br>
>> // RUN: not %run %t 2>&1 | FileCheck %s<br>
>><br>
>> +// REQUIRES: cxxabi<br>
>> +<br>
>> struct S { virtual int f() { return 0; } };<br>
>> struct T : virtual S {};<br>
>><br>
>><br>
>> Modified: compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr.cpp<br>
>> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_compiler-2Drt_trunk_test_ubsan_TestCases_TypeCheck_vptr.cpp-3Frev-3D240617-26r1-3D240616-26r2-3D240617-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ipCLLiF1pB-MPMs9_f_frpwqfnGB4LSAqQkBSVcH2gQ&s=_R-36BHwp_3jbArxG0zwX4JcOMnGj1iCGxu3nwvwGcY&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr.cpp?rev=240617&r1=240616&r2=240617&view=diff</a><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr.cpp (original)<br>
>> +++ compiler-rt/trunk/test/ubsan/TestCases/TypeCheck/vptr.cpp Wed Jun 24 19:57:42 2015<br>
>> @@ -24,7 +24,7 @@<br>
>> // RUN: echo "vptr_check:S" > %t.loc-supp<br>
>> // RUN: UBSAN_OPTIONS="suppressions='%t.loc-supp'" not %run %t x- 2>&1 | FileCheck %s --check-prefix=CHECK-LOC-SUPPRESS<br>
>><br>
>> -// REQUIRES: stable-runtime<br>
>> +// REQUIRES: stable-runtime, cxxabi<br>
>> #include <new><br>
>> #include <assert.h><br>
>> #include <stdio.h><br>
>><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
><br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div></div>
</div>
</div></blockquote></div></div></div><br></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div></div>
</div>
</div></blockquote></div></div></div><br></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div></div>
</div></div></div>