[libcxxabi] r256323 - Add new tests for throwing incomplete pointer types

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 15 07:48:10 PST 2016


I reverted this and 322 for now in 257896.

On Fri, Jan 15, 2016 at 10:36 AM, Nico Weber <thakis at chromium.org> wrote:

> This test fails on OS X for me:
>
>
> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
> FAIL: libc++abi :: incomplete_type.sh.cpp (29529 of 29545)
> ******************** TEST 'libc++abi :: incomplete_type.sh.cpp' FAILED
> ********************
> Script:
> --
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
> -v -DLIBCXXABI_NO_TIMER -funwind-tables -std=c++1z -nostdinc++
> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include
> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
> -isysroot
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -c
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp
> -o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
> -v -DLIBCXXABI_NO_TIMER -funwind-tables -std=c++1z -nostdinc++
> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include
> -I/Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
> -isysroot
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -c
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp
> -o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o
> -DTU_ONE
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
> -v -nodefaultlibs
> -L/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib
> -Wl,-rpath,/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib
> -lc++ -lc++abi -lSystem -o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o
>
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe
> --
> Exit Code: 134
>
> Command Output (stderr):
> --
> Apple LLVM version 7.0.0 (clang-700.1.76)
> Target: x86_64-apple-darwin15.0.0
> Thread model: posix
>  "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
> -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage
> -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free
> -disable-llvm-verifier -main-file-name incomplete_type.sh.cpp
> -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim
> -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version
> 253.6 -v -dwarf-column-info -coverage-file
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o
> -nostdinc++ -resource-dir
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0
> -isysroot
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -D LIBCXXABI_NO_TIMER -I
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
> -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test
> -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign
> -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature
> -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option
> -o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o
> -x c++
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp
> clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target
> x86_64-apple-darwin15.0.0
> ignoring nonexistent directory
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"
> ignoring nonexistent directory
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"
> #include "..." search starts here:
> #include <...> search starts here:
>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include
>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
>
>  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include
>
>  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
>
>  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
>  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks
> (framework directory)
> End of search list.
> Apple LLVM version 7.0.0 (clang-700.1.76)
> Target: x86_64-apple-darwin15.0.0
> Thread model: posix
>  "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
> -cc1 -triple x86_64-apple-macosx10.11.0 -Wdeprecated-objc-isa-usage
> -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free
> -disable-llvm-verifier -main-file-name incomplete_type.sh.cpp
> -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim
> -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version
> 253.6 -v -dwarf-column-info -coverage-file
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o
> -nostdinc++ -resource-dir
> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0
> -isysroot
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -D LIBCXXABI_NO_TIMER -D TU_ONE -I
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include -I
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
> -stdlib=libc++ -std=c++1z -fdeprecated-macro -fdebug-compilation-dir
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test
> -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign
> -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature
> -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option
> -o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o
> -x c++
> /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/test/incomplete_type.sh.cpp
> clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target
> x86_64-apple-darwin15.0.0
> ignoring nonexistent directory
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/local/include"
> ignoring nonexistent directory
> "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/Library/Frameworks"
> #include "..." search starts here:
> #include <...> search starts here:
>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxx/include
>  /Users/thakis/src/chrome/src/third_party/llvm/projects/libcxxabi/include
>
>  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include
>
>  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
>
>  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
>  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks
> (framework directory)
> End of search list.
> Apple LLVM version 7.0.0 (clang-700.1.76)
> Target: x86_64-apple-darwin15.0.0
> Thread model: posix
>  "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"
> -demangle -dynamic -arch x86_64 -macosx_version_min 10.11.0 -o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe
> -L/Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -rpath
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/lib -lc++ -lc++abi
> -lSystem
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.one.o
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.two.o
> libc++abi.dylib: terminating with uncaught exception of type int
> NeverDefined::*
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.script:
> line 4: 58282 Abort trap: 6
> /Users/thakis/src/chrome/src/third_party/llvm-bootstrap/projects/libcxxabi/test/Output/incomplete_type.sh.cpp.tmp.exe
>
> --
>
> On Wed, Dec 23, 2015 at 2:04 AM, Eric Fiselier via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: ericwf
>> Date: Wed Dec 23 01:04:32 2015
>> New Revision: 256323
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=256323&view=rev
>> Log:
>> Add new tests for throwing incomplete pointer types
>>
>> Modified:
>>     libcxxabi/trunk/test/incomplete_type.sh.cpp
>>
>> Modified: libcxxabi/trunk/test/incomplete_type.sh.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/test/incomplete_type.sh.cpp?rev=256323&r1=256322&r2=256323&view=diff
>>
>> ==============================================================================
>> --- libcxxabi/trunk/test/incomplete_type.sh.cpp (original)
>> +++ libcxxabi/trunk/test/incomplete_type.sh.cpp Wed Dec 23 01:04:32 2015
>> @@ -14,9 +14,9 @@
>>  // incomplete flags set, equality can be tested by comparing the
>> type_info
>>  // addresses.
>>
>> -// RUN: %cxx %compile_flags -c %s -o %t.one.o
>> -// RUN: %cxx %compile_flags -c %s -o %t.two.o -DTU_ONE
>> -// RUN: %cxx %link_flags -o %t.exe %t.one.o %t.two.o
>> +// RUN: %cxx %flags %compile_flags -c %s -o %t.one.o
>> +// RUN: %cxx %flags %compile_flags -c %s -o %t.two.o -DTU_ONE
>> +// RUN: %cxx %flags %link_flags -o %t.exe %t.one.o %t.two.o
>>  // RUN: %t.exe
>>
>>  #include <stdio.h>
>> @@ -24,28 +24,42 @@
>>  #include <typeinfo>
>>
>>  struct NeverDefined;
>> -void ThrowNeverDefined();
>> +void ThrowNeverDefinedMP();
>>
>>  struct IncompleteAtThrow;
>> -void ThrowIncomplete();
>> -std::type_info const& ReturnTypeInfoIncomplete();
>> +void ThrowIncompleteMP();
>> +void ThrowIncompletePP();
>> +void ThrowIncompletePMP();
>> +std::type_info const& ReturnTypeInfoIncompleteMP();
>> +std::type_info const& ReturnTypeInfoIncompletePP();
>>
>>  struct CompleteAtThrow;
>> -void ThrowComplete();
>> -std::type_info const& ReturnTypeInfoComplete();
>> +void ThrowCompleteMP();
>> +void ThrowCompletePP();
>> +void ThrowCompletePMP();
>> +std::type_info const& ReturnTypeInfoCompleteMP();
>> +std::type_info const& ReturnTypeInfoCompletePP();
>>
>>  void ThrowNullptr();
>>
>>  #ifndef TU_ONE
>>
>> -void ThrowNeverDefined() { throw (int NeverDefined::*)nullptr; }
>> +void ThrowNeverDefinedMP() { throw (int NeverDefined::*)nullptr; }
>>
>> -void ThrowIncomplete() { throw (int IncompleteAtThrow::*)nullptr; }
>> -std::type_info const& ReturnTypeInfoIncomplete() { return typeid(int
>> IncompleteAtThrow::*); }
>> +void ThrowIncompleteMP() { throw (int IncompleteAtThrow::*)nullptr; }
>> +void ThrowIncompletePP() { throw (IncompleteAtThrow**)nullptr; }
>> +void ThrowIncompletePMP() { throw (int IncompleteAtThrow::**)nullptr; }
>> +
>> +std::type_info const& ReturnTypeInfoIncompleteMP() { return typeid(int
>> IncompleteAtThrow::*); }
>> +std::type_info const& ReturnTypeInfoIncompletePP() { return
>> typeid(IncompleteAtThrow**); }
>>
>>  struct CompleteAtThrow {};
>> -void ThrowComplete() { throw (int CompleteAtThrow::*)nullptr; }
>> -std::type_info const& ReturnTypeInfoComplete() { return typeid(int
>> CompleteAtThrow::*); }
>> +void ThrowCompleteMP() { throw (int CompleteAtThrow::*)nullptr; }
>> +void ThrowCompletePP() { throw (CompleteAtThrow**)nullptr; }
>> +void ThrowCompletePMP() { throw (int CompleteAtThrow::**)nullptr; }
>> +
>> +std::type_info const& ReturnTypeInfoCompleteMP() { return typeid(int
>> CompleteAtThrow::*); }
>> +std::type_info const& ReturnTypeInfoCompletePP() { return
>> typeid(CompleteAtThrow**); }
>>
>>  void ThrowNullptr() { throw nullptr; }
>>
>> @@ -54,16 +68,81 @@ void ThrowNullptr() { throw nullptr; }
>>  struct IncompleteAtThrow {};
>>
>>  int main() {
>> -  assert(ReturnTypeInfoIncomplete() != typeid(int IncompleteAtThrow::*));
>>    try {
>> -    ThrowIncomplete();
>> +    ThrowNeverDefinedMP();
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (int CompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (int NeverDefined::*) {}
>> +
>> +  assert(ReturnTypeInfoIncompleteMP() != typeid(int
>> IncompleteAtThrow::*));
>> +  try {
>> +    ThrowIncompleteMP();
>> +    assert(false);
>> +  } catch (CompleteAtThrow**) {
>> +    assert(false);
>> +  } catch (int CompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (IncompleteAtThrow**) {
>> +    assert(false);
>>    } catch (int IncompleteAtThrow::*) {}
>>
>> -  assert(ReturnTypeInfoComplete() != typeid(int CompleteAtThrow::*));
>> +  assert(ReturnTypeInfoIncompletePP() != typeid(IncompleteAtThrow**));
>> +  try {
>> +    ThrowIncompletePP();
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (IncompleteAtThrow**) {}
>> +
>>    try {
>> -    ThrowComplete();
>> +    ThrowIncompletePMP();
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (IncompleteAtThrow**) {
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::**) {}
>> +
>> +  assert(ReturnTypeInfoCompleteMP() != typeid(int CompleteAtThrow::*));
>> +  try {
>> +    ThrowCompleteMP();
>> +    assert(false);
>> +  } catch (IncompleteAtThrow**) {
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (CompleteAtThrow**) {
>> +    assert(false);
>>    } catch (int CompleteAtThrow::*) {}
>>
>> +  assert(ReturnTypeInfoCompletePP() != typeid(CompleteAtThrow**));
>> +  try {
>> +    ThrowCompletePP();
>> +    assert(false);
>> +  } catch (IncompleteAtThrow**) {
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (int CompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (CompleteAtThrow**) {}
>> +
>> +  try {
>> +    ThrowCompletePMP();
>> +    assert(false);
>> +  } catch (IncompleteAtThrow**) {
>> +    assert(false);
>> +  } catch (int IncompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (int CompleteAtThrow::*) {
>> +    assert(false);
>> +  } catch (CompleteAtThrow**) {
>> +    assert(false);
>> +  } catch (int CompleteAtThrow::**) {}
>> +
>>  #if __cplusplus >= 201103L
>>    // Catch nullptr as complete type
>>    try {
>> @@ -76,7 +155,7 @@ int main() {
>>    } catch (int CompleteAtThrow::*) {}
>>    // Catch nullptr as a type that is never complete.
>>    try {
>> -    ThrowNeverDefined();
>> +    ThrowNullptr();
>>    } catch (int NeverDefined::*) {}
>>  #endif
>>  }
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160115/e966ed9d/attachment-0001.html>


More information about the cfe-commits mailing list