1. ffdd8c4 Enable/silence -Wsign-compare. by Howard Hinnant · 13 years ago
  2. 30a486d Enable/silence -Wsign-compare. by Howard Hinnant · 13 years ago
  3. 91f198a Enable/silence -Wmissing-field-initializers. by Howard Hinnant · 13 years ago
  4. dfa81ca Enable/silence -Wunused-variable. by Howard Hinnant · 13 years ago
  5. 85bc82e Enable/silence -Wconversion. by Howard Hinnant · 13 years ago
  6. f2ebd59 Enable/silence -Wshadow. by Howard Hinnant · 13 years ago
  7. 3e5c7d0 Enable/silence -Wsign-conversion. by Howard Hinnant · 13 years ago
  8. 7f9d213 First attempt at arm support. by Howard Hinnant · 13 years ago
  9. 8f28628 Insert a couple of dummy virtual functions to ease low level binary compatibility with other low level tools. by Howard Hinnant · 13 years ago
  10. ff94a3a And the handlers should be extern C. by Howard Hinnant · 13 years ago
  11. fdac5f9 I had originally made the handler function pointers a static internal detail, not accessible to the outside world. I did this because they must be accessed in a thread-safe manner, and the library provides thread-safe getters and setters for these. However I am at least temporarily making them public and giving them the Apple-extension names. In the future these may disappear again, and I think that would probably be a good idea. by Howard Hinnant · 13 years ago
  12. 74ecc63 Pedantic fix: missing newline at EOF by Dave Zarzycki · 13 years ago
  13. a2bde87 Move typeinfos for exceptions in <stdexcept> to the abi by Howard Hinnant · 13 years ago
  14. 3759e45 Add (reluctantly) a namespace alias for __cxxabiv1. by Howard Hinnant · 13 years ago
  15. e045f21 Remove outdated information from comment. by Howard Hinnant · 13 years ago
  16. 9a365fe __gxx_personality_v0 and __cxa_call_unexpected are complete on darwin and I *think* linux (not positive), but still unimplemented on arm. by Howard Hinnant · 13 years ago
  17. 6a16979 Pushed optimization back up. Crash disappeared with compiler upgrade. Assumed to be due to compiler bug. by Howard Hinnant · 13 years ago
  18. 8e0a2d2 corrected namespace in test by Howard Hinnant · 13 years ago
  19. 0240685 Work on restricting symbol visibility. by Howard Hinnant · 13 years ago
  20. 53cf764 Add version number to this library so we can recognize when we're using it. by Howard Hinnant · 13 years ago
  21. e35bb60 There's a crasher I need to track down, occurring at -O0. by Howard Hinnant · 13 years ago
  22. cf95bab added const nullptr tests by Marshall Clow · 13 years ago
  23. 61a88d8 removed duplicated tests - Howard was quicker than me. by Marshall Clow · 13 years ago
  24. c9577b1 Added tests for catching const/non-const nullptr by Marshall Clow · 13 years ago
  25. 4c3bdd6 Add test for pointer qualification conversion. by Howard Hinnant · 13 years ago
  26. 0550d57 Changed a TODO to a 'maybe some time in the future'. by Howard Hinnant · 13 years ago
  27. 9f54f7a Removed DEBUG statements. by Howard Hinnant · 13 years ago
  28. 575160d Remove a TODO regarding where some can_catch are implemented. I opted to make can_catch pure virtual in the top __shim_type_info, and have each sub-class implement its own. There are some repeated definitions, but they are trivial. by Howard Hinnant · 13 years ago
  29. ebe4505 Add some tests to test catching nullptr with pointers and member pointers. Tests are only activated if #if __has_feature(cxx_nullptr). by Howard Hinnant · 13 years ago
  30. c649bde Quash a TODO related to catching pointer-to-member. These tests fail on my copy of gcc-4.2. But I believe the tests to be correct (and they pass for libc++abi). I've enquired on the C++ standards mailing list for a clarification in case I'm wrong. So far I've gotten one response that agrees with me. by Howard Hinnant · 13 years ago
  31. 4b3cb1c Quash TODO regarding catch by function type. Add tests to back it up. by Howard Hinnant · 13 years ago
  32. aafd08a Quash TODO regarding catch by array type. Add tests to back it up. by Howard Hinnant · 13 years ago
  33. 7c73587 Removing a TODO: can_catch is fundamentally different than search_above_dst. can_catch is looking for an unamiguous public base class of a specific type, but at any address. search_above_dst is looking for an unambiguous public base class of a specific type, *and* at a specific address. Additionally can_catch is run for all types. search_above_dst is only run on class types. So these are only superficially similar. Not similar enough for resuse, at least without making the code unreadable. by Howard Hinnant · 13 years ago
  34. 8dd7a48 Teach exception_cleanup_func about dependent exceptions. by Howard Hinnant · 13 years ago
  35. 7ab185e Treat all exceptions except that the ones that this library throws as foreign. Even other C++ exceptions. by Howard Hinnant · 13 years ago
  36. 29ae5fc Nothing but polishing comments. by Howard Hinnant · 13 years ago
  37. 3a1009c Move an error detector to a better place. by Howard Hinnant · 13 years ago
  38. e162bf2 Here's a test for catching pointers. by Howard Hinnant · 13 years ago
  39. 830713c More test cases concentrating on catching class types. by Howard Hinnant · 13 years ago
  40. dfb07f8 Some unwinding test cases by Howard Hinnant · 13 years ago
  41. 3a2765f Back the optimization down from -O3 to -Os. I'm getting an unexplained crasher on -O3. I've looked for a libc++abi bug and can't find one. I'm suspecting clang optimizer bug. But I don't have a good test case at the moment. Deferring investigation on this for now as I will soon be developing more and smaller tests. by Howard Hinnant · 13 years ago
  42. 9fb5709 Drop the stress a notch on dynamic_cast_stress.cpp. Otherwise it occasionally causes clang to crash. Put a noexcept(false) on a throwing destructor in test_vector1.cpp. The test now passes for both C++03 and C++11 modes. Add testit script. All tests are now PASSING :-) by Howard Hinnant · 13 years ago
  43. 6953d90 Correct test bug. by Howard Hinnant · 13 years ago
  44. 06b1ea1 Have the default unexpected/terminate handler output *demangled* names for the type of exception instead of the mangled name. by Howard Hinnant · 13 years ago
  45. 2e774bf Fix type-o in the comment of the last commit by Howard Hinnant · 13 years ago
  46. 135b4bd Found and fixed a bug in __cxa_call_unexpected. If the unexpected_handler rethrows the same exception then needed information gets overwritten in the original exception header. Therefore save it locally before executing the unexpected_handler. by Howard Hinnant · 13 years ago
  47. a5f9da2 Found and fixed bug in personality function: Don't dive into the action table if the action entry is zero. by Howard Hinnant · 13 years ago
  48. 1a58491 Minor bug fix in __cxa_call_unexpected. Changed std::terminate to detect a caught-but-unhandled exception, and choose the handler out of that if found. by Howard Hinnant · 13 years ago
  49. 4c8d561 Refactored personality function. Found one bug in scanning exception spec lists. by Howard Hinnant · 13 years ago
  50. 723ef22 Removed debugging print statements by Howard Hinnant · 13 years ago
  51. 7da9b96 Add a descriptive name for a constant. Also I'm at least temporarily waging war on throw specs, both old and new style. Except where we have already publicly exposed the throw spec, I'm getting rid of them. They may come back later. But they seem somewhat prone to cyclic dependencies here. The throw spec implies compiler generated code that this library has to jump to during stack unwinding. I'd like to minimize the possiblity that the code used to properly make that jump is itself creating such jumps. by Howard Hinnant · 13 years ago
  52. 2b891bf Add -fstrict-aliasing -Wstrict-aliasing and change optimization from -Os to -O3 by Howard Hinnant · 13 years ago
  53. ca00a4e Put throw() clauses back on these functions in cxxabi.h. This header must be C++03 compatible and these throw specs are consistent with the current cxxabi.h that Apple ships. by Howard Hinnant · 13 years ago
  54. 978bfde Minor updates to a couple of comments. by Howard Hinnant · 13 years ago
  55. a4d69a3 Add a little paranoia for testing purposes. by Howard Hinnant · 13 years ago
  56. 27b00d8 Minor header fixups for test. by Howard Hinnant · 13 years ago
  57. eb6fb17 Silence a warning. by Howard Hinnant · 13 years ago
  58. 66f6580 Sometimes it takes all day to write a decent comment. This is one of those times, and I'm still not quite sure I have them correct. by Howard Hinnant · 13 years ago
  59. 033016c These commits are intended to be temporary in nature and are to facilitate the testing of libc++abi.dylib at this point in time. by Howard Hinnant · 13 years ago
  60. f6d4cba Add comment documenting extension behavior of __cxa_get_globals_fast(). by Howard Hinnant · 13 years ago
  61. de34b3e cxa_guard.cpp didn't quite make it on the last commit: Restricted headers to cxa_guard.cpp and abort_messsage.h, and added a comment regarding reentrancy brought up by John McCall. Thanks John. by Howard Hinnant · 13 years ago
  62. 1743fee Restricted headers to cxa_guard.cpp and abort_messsage.h, and added a comment regarding reentrancy brought up by John McCall. Thanks John. by Howard Hinnant · 13 years ago
  63. f81cdff By changing all of the throw() specs to noexcept I've been able to compile and link all of the source files into a dylib. Prior to this substitution the changed functions were calling __cxa_call_unexpected which isn't implemented yet. However in none of these cases do we actaully want __cxa_call_unexpected to be called. Primative buildit script added. by Howard Hinnant · 13 years ago
  64. 00cc7d2 Add some needed symbols in exception.cpp and eliminate dependence upon uncaught_exception() from cxa_vector.cpp. libc++abi is very nearly a self-contained (though not complete) library now. by Howard Hinnant · 13 years ago
  65. 60a1788 Marshall Clow reminded me that fallback_malloc.cpp was broken out for testing purposes. We've agreed to simply rename fallback_malloc.cpp to fallback_malloc.ipp. Thanks Marshall. by Howard Hinnant · 13 years ago
  66. 35b2c2a Add some needed symbols to cxa_new_delete.cpp and put the display() stuff under #DEBUG (again). by Howard Hinnant · 13 years ago
  67. c2dfdeb Got fooled by fallback_malloc.cpp source file: it is really a private header. I've manually included it into the only place it is used: cxa_exception.cpp. by Howard Hinnant · 13 years ago
  68. 73fd45b Add new file for public type_info-related signatures by Howard Hinnant · 13 years ago
  69. c632c50 CrashReporterClient.h is back, but this time protected with __has_include. Thanks for the suggestion Doug. The use is consistent with how the same header is used in llvm/lib/Support/PrettyStackTrace.cpp (though there autoconfig is used instead of __has_include). by Howard Hinnant · 13 years ago
  70. 3f034b7 Remove dependence upon std::exception_ptr from the default_terminate_handler. Recovered the equivalent functionality at a lower level. by Howard Hinnant · 13 years ago
  71. 08f419c Forgot to include this file in the last commit: Move kOurExceptionClass and kOurDependentExceptionClass from source to header so that they can be used in multiple sources. This is a private header, these constants are not publicly exposed. by Howard Hinnant · 13 years ago
  72. 2a70c10 Move kOurExceptionClass and kOurDependentExceptionClass from source to header so that they can be used in multiple sources. This is a private header, these constants are not publicly exposed. by Howard Hinnant · 13 years ago
  73. ae15428 Removed reference to internal header by Howard Hinnant · 13 years ago
  74. ca6514d Changed my mind about __cxa_uncaught_exception and added it. by Howard Hinnant · 13 years ago
  75. 8f696ff I renamed abort_message to be a C++ file to simplify my simplistic build script which I'm still working on. I also added a struct for the crash reporter on __APPLE__. by Howard Hinnant · 13 years ago
  76. 928afcd A lot of the code in cxa_exception.cpp depends on __cxa_get_globals_fast() returning null if __cxa_get_globals() hasn't been called yet. However it doesn't reliably do that, at least on OS X if __cxa_get_globals_fast() is called prior to pthread_key_create() running. Our choice is to either limit our use of __cxa_get_globals_fast() more than we have, or to have __cxa_get_globals_fast() initialize with pthread_key_create() if necessary. I chose the latter, and replaced pthread_once with a C++11 local static (which should do the same thing). by Howard Hinnant · 13 years ago
  77. 9c6f621 Added missing #include by Howard Hinnant · 13 years ago
  78. a1919d2 I'm beginning to be able to throw/catch a wide variety of objects. by Howard Hinnant · 13 years ago
  79. c30bfdc Getting started on matching a thrown exception to a catch clause, and setting the adjusted pointer to the caught object appearing in the catch clause. by Howard Hinnant · 13 years ago
  80. a36fb30 I kept getting confused among the __cxa_exception*, the _Unwind_Exception* and the void* to the thrown object. So I've gone through these two files and attempted to institute a consistent variable naming scheme, and in a few instances, turned void* into a concrete* to have the type system help me out. No change in functionality for this commit is intended. by Howard Hinnant · 13 years ago
  81. facfc46 Add __shim_type_info which fits below std::type_info and above all of the other type_info-derived classes. This is where all of the virtual functions that serve as details of the inner-workings of type_info will live (safely hidden from public view). All type_info objects will be safely down-castable to __shim_type_info, so as to access implementation detail virtual functions. Also temporarily add some print/display statements to each type_info-derived class. This is in support of the continuing development on the personality function. by Howard Hinnant · 13 years ago
  82. 321a095 Change header to generic, instead of implementation specific by Howard Hinnant · 13 years ago
  83. 6525563 One more small optimization: Where possible, for loops that do a search and then try to break out of the loop early, eliminate the attempt to break out of the loop after the last search. And with that, I'm declaring __dynamic_cast done. Though if anyone sees any problems, has suggestions for improvements, or wants to contribute some test cases, that is certainly welcome feedback. by Howard Hinnant · 13 years ago
  84. cc614df Comment smithing. Changed some casts from C-style to C++. And added timings to all of the tests. by Howard Hinnant · 13 years ago
  85. 1309366 I think this is getting close on __dynamic_cast. There's been quite a bit of code rearrangement, renaming, and better commenting. This exercise has exposed and fixed a few more bugs. I've also added several more tests (there's definitely a need for more tests here). by Howard Hinnant · 13 years ago
  86. 481fe05 Two bug fixes, several clarifications, and a few comment updates. by Howard Hinnant · 13 years ago
  87. 271f1ac A bug fix involving the updating of path_dst_ptr_to_static_ptr. Some minor code rearrangement optimizations (putting most likely 'if' first in an if-else series. And some major optimizations which involve stopping the search prior to an exhaustive walk over the entire tree. Some of these stops are because an ambiguity is detected earlier. And some of the short circuiting is due to the information from the bits __diamond_shaped_mask and __non_diamond_repeat_mask. The stress test checked in last night is now about 28% faster for the B<Width/2, Depth> -O3 case. I'm still playing with some more optimization possibilities but I'm not sure they will play out. by Howard Hinnant · 13 years ago
  88. a39c104 Enclosed is a stress test for dynamic_cast. It stresses both libc++abi, and clang itself. It creates a ridiculously large class hierarchy using variadic templates. You can specify both the width and depth of the class hierarchy. And you can specify whether the cast is to the actual run time type, or to an intermediate layer in the class. About 1/3 of the time I compile this, it crashes the compiler. There seems to be an uninitialized area of memory, and I'm probably blowing past an assumption on class hierarchy size within clang (and understandably so). I can get it work most of the time with a class hierarchy width of 20 and a depth of 7. I'm making timings with both -O3 and -Os, using both cast to root and cast to intermediate, on both libc++abi, and gcc's dynamic_cast. I've put the results in a comment/table at the bottom of the test. by Howard Hinnant · 13 years ago
  89. 68fd743 Oops, forgot to svn add the new test. by Howard Hinnant · 13 years ago
  90. 9a1aad5 Put debug print statments under a flag so that I can get a first glimpse at performance. So far I haven't noticed any performance difference between this new __dynamic_cast and gcc's implementation. But I've barely started looking. Also adding a couple of tests which come straight out of the standard. by Howard Hinnant · 13 years ago
  91. 185dc7d Fixed a couple of bugs, updated many comments, and am including a comprehensive test for when there are only 3 types in place. I need to do something similar for 4 and maybe more types, but I'm not sure how comprehensive I can make the test at 4 and above types. by Howard Hinnant · 13 years ago
  92. f877d21 Initial implementaiton of __dynamic_cast. There is still lots of debugging code in here that needs to be stripped out. And many, many unit tests need to be written. And comments and probably code cleanliness needs to be improved. But I *think* the basic algorithm is sound. There also may still be some oportunities for algorithm optimization, I'm not positive. by Howard Hinnant · 13 years ago
  93. 16650b5 This is a transitory commit for __dynamic_cast. It contains debugging statements that are not intended to be in the finished product. However some of the dubbing statements themselves contain important documentation such as how to navigate a __class_type_info hierarchy, documenting object offset and inheritance access. The intention is that this debugging code will migrate into both actual code and comments. And capturing it here so that there is no chance this stuff will be lost. by Howard Hinnant · 13 years ago
  94. 152beb7 Getting a start on the typeinfo infrastructure. by Howard Hinnant · 13 years ago
  95. 3fa75e1 First brush with testing __gxx_personality_v0 reveals there is still a long way to go. But my understanding of what it is supposed to do continues to improve. I am currently contemplating whether I need to implement typeinfo before completing __gxx_personality_v0 in order to get matching catch handlers correct. by Howard Hinnant · 13 years ago
  96. 8ca7603 Add a few TODO's and FIXME's. Making notes as I go along, but not slowing down to fix these yet. Just don't want anything to fall through the cracks. by Howard Hinnant · 13 years ago
  97. acfbf36 Correct comment regarding members of __cxa_dependent_exception. Actually it is useful to disguise a __cxa_dependent_exception as a __cxa_exception by filling in most (not all) of these members at __cxa_dependent_exception construction time. That way most routines don't have to care which kind of exception they have. by Howard Hinnant · 13 years ago
  98. 701d94c __gxx_personality_v0 update. This is completely untested code. But my brain is scrambled and I wanted to get it checked in. Code review from anyone who knows anything at all about personality functions would be much appreciated. What is in here is borrowed heavily from llvm/examples/ExceptionDemo/ExceptionDemo.cpp. There are some calls to abort() that should probably be changed to return an error code instead. There may be encodings under readEncodedPointer that need to be implemented. And my handling of type_info is almost a complete guess. by Howard Hinnant · 13 years ago
  99. 0acbd98 Improved comment to explain why we can use __cxa_get_globals_fast here by Marshall Clow · 13 years ago
  100. ed2ea9b Just getting started on the personality routine. This is just a skeleton. Still learning how to fill it in... by Howard Hinnant · 13 years ago