summaryrefslogtreecommitdiffstats
path: root/libcxxabi
Commit message (Collapse)AuthorAgeFilesLines
...
* Rename UnwindRegisters*.s files to UnwindRegisters*.S, step 2 of 2Nico Weber2013-12-062-2/+2
| | | | | | These files require preprocessing, so their name should end with a capital S. llvm-svn: 196555
* Rename UnwindRegisters*.s files to UnwindRegisters*.S, step 1 of 2Nico Weber2013-12-062-0/+0
| | | | | | These files require preprocessing, so their name should end with a capital S. llvm-svn: 196554
* Fix minor initialization bug in Registers_x86_64.Nico Weber2013-12-061-1/+1
| | | | | | | According to kledzik, this constructor isn't live code, so no functionality change. llvm-svn: 196550
* 80-column wrap a comment in a testNico Weber2013-12-051-1/+1
| | | | llvm-svn: 196540
* [unwind] remove darwin build dependency on <mach-o/dyld_priv.h>Nick Kledzik2013-12-051-1/+42
| | | | llvm-svn: 196436
* Fixed a couple of test errors; changed 'const A const *' to 'const A* ↵Marshall Clow2013-12-041-2/+2
| | | | | | const'. Thanks to Nico for the catch llvm-svn: 196355
* Fix indentation of fields in __cxa_exception to line upMark Seaborn2013-11-301-9/+9
| | | | | | Align to 8 spaces instead of an inconsistent 9. llvm-svn: 195974
* On Windows, typeids are different between DLLs and EXEs, so comparingYaron Keren2013-11-221-0/+16
| | | | | | | | | | | | | | type_info* will work for typeids from the same compiled file but fail for typeids from a DLL and an executable. Among other things, exceptions are not caught by handlers since can_catch() returns false. Defining _LIBCXX_DYNAMIC_FALLBACK does not help since can_catch() calls is_equal() with use_strcmp=false so the string names are not compared. This patch compares typeids first (cheap) and only they are different calls strcmp. llvm-svn: 195502
* Comment correction. syslog() syntax is:Yaron Keren2013-11-221-1/+1
| | | | | | | | void syslog(int facility_priority, const char* format, ...); This is indeed how it is used in private_typeinfo.cpp. llvm-svn: 195452
* If libc++ has not declared bad_array_length, then declare it here just so ↵Howard Hinnant2013-11-071-0/+13
| | | | | | that it gets into the binary. llvm-svn: 194208
* Swap contents of UnwindRegistersRestore.s and UnwindRegistersSave.sNick Kledzik2013-11-012-489/+489
| | | | llvm-svn: 193840
* Rename LIBUNWIND_AVAIL to LIBUNWIND_UNAVAIL so as to not conflict with other ↵Nick Kledzik2013-11-011-11/+11
| | | | | | (different) LIBUNWIND_AVAIL define llvm-svn: 193839
* Move local Db type out to namespace scope.Howard Hinnant2013-10-221-22/+23
| | | | llvm-svn: 193169
* unwinder: conditionalise availabilitySaleem Abdulrasool2013-10-171-9/+15
| | | | | | | | __attribute__ (( unavailable )) is for Apple specific builds. Create a macro to conditionalise the usage of the macro. This is to aid in porting the unwinder to other platforms. llvm-svn: 192868
* [unwind] Fix unw_init_remote_thread() use to void* instead of thread_t for ↵Nick Kledzik2013-10-082-7/+12
| | | | | | parameter to match other implementations llvm-svn: 192248
* [unwind] add required #includeNick Kledzik2013-10-081-0/+1
| | | | llvm-svn: 192245
* Fix conditionals on __Unwind_SjLj_* functions to only build for SJLJ based ↵Nick Kledzik2013-10-081-1/+2
| | | | | | architectures llvm-svn: 192241
* Consistent spelling of names.Joerg Sonnenberger2013-10-081-3/+3
| | | | llvm-svn: 192180
* libcxxabi contains the runtime support for C++. But, as some folks have Nick Kledzik2013-10-0720-0/+8889
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | realized, it is not complete. It relies on some _Unwind_* functions to be supplied by the OS. That means it cannot be ported to platforms that don’t already have an unwinder. Years ago Apple wrote its own unwinder for MacOSX and iOS. To make libcxxabi complete, Apple has decided the source code for its unwinder can be contributed to the open source LLVM libcxxabi project, with a dual licensed under LLVM and MIT license. So, I’ve spent some time cleaning up the sources to make them conform with LLVM style and to conditionalize the sources in a way that should make it easier to port to other platforms. The sources are in a separate "Unwind" directory under "src" in libcxxabi. Background: Most architectures now use "zero cost" exceptions for C++. The zero cost means there are no extra instructions executed if no exceptions are thrown. But if an exception is thrown, the runtime must consult side tables and figure out how to restore registers and "unwind" from the current stack frame to the catch clause. That ability to modify the stack frames and cause the thread to resume in a catch clause with all registers restored properly is the main purpose of the unwinder. This unwinder has two levels of API. The high level APIs are the _Unwind_* functions which the cxa_* exception functions in libcxxabi require. The low level APIs are the unw_* functions which are an interface defined by the the old HP libunwind project (which shares no code with this unwinder). llvm-svn: 192136
* Adding bad_array_length to libc++abiMarshall Clow2013-09-111-0/+18
| | | | llvm-svn: 190479
* Add ability to set OPTIONS for compileMarshall Clow2013-09-091-2/+2
| | | | llvm-svn: 190371
* Change the two last remaining _LIBCPP_CANTTHROW to _NOEXCEPTJean-Daniel Dupas2013-08-291-2/+2
| | | | llvm-svn: 189603
* Propagate the removal of _LIBCPP_CANTTHROW (r189046) to libcxxabi. This ↵Howard Hinnant2013-08-251-5/+5
| | | | | | fixes http://llvm.org/bugs/show_bug.cgi?id=16996. llvm-svn: 189194
* tip-of-trunk clang has corrected some access checks for special members in a ↵Howard Hinnant2013-07-301-4/+4
| | | | | | virtual inheritance hierarchy. Change a few private inheritances to protected. This change will not impact what the test was testing. This fixes http://llvm.org/bugs/show_bug.cgi?id=16753. llvm-svn: 187429
* I had a buffer mismanagement bug in the demangler.Howard Hinnant2013-07-261-1/+5
| | | | llvm-svn: 187255
* Updated CREDITS.TXTHoward Hinnant2013-07-021-12/+16
| | | | llvm-svn: 185464
* I'd no sooner made the last commit when Matthew Dempsky sent me another test ↵Howard Hinnant2013-06-232-49/+16
| | | | | | case that led me to yet another closely related test case that the current design could not handle. I've now changed the way forward references are handled completely. It wasn't that much code to change. The demangler, when confronted with a forward reference to a template parameter, now parses things twice. During the second parse, all forward references are remembered from the first parse. Test suite updated with new case. llvm-svn: 184672
* After a private conversation with Arthur O'Dwyer, and a good night's sleep, ↵Howard Hinnant2013-06-232-7/+38
| | | | | | I believe this fix is a better fix than what I committed in r184656 yesterday. I've basically moved the checking for '`' from the start of the demangling process to the end of it. In the process I discovered that one of the test cases no longer demangled to the expected string. After further investigation I believe this case to not be a valid mangled string, and so I moved the test case to the 'invalid cases'. The reason I believe it is invalid is that it should use T_ instead of T0_ to index the template parameter. llvm-svn: 184668
* Filter out '`' in mangled strings and reject them as invalid if found.Howard Hinnant2013-06-232-1/+2
| | | | llvm-svn: 184656
* I created a random mangled name generator and have thrown about 200 million ↵Howard Hinnant2013-06-212-4/+4
| | | | | | random strings at the demangler. I succeeded in crashing it twice more and those crashers have been fixed and the test suite updated with the crash cases. llvm-svn: 184562
* Another demangler crasher. Updated test suite to prevent regression.Howard Hinnant2013-06-202-57/+264
| | | | llvm-svn: 184477
* Protect against invalid mangled names. Add test suite for invalid mangled ↵Howard Hinnant2013-06-202-18/+15
| | | | | | names. llvm-svn: 184394
* Demangle objc mangling implemented in r184250Howard Hinnant2013-06-192-3/+34
| | | | llvm-svn: 184301
* Tweaks/cleanups provided by Matthew DempskyHoward Hinnant2013-06-172-180/+6
| | | | llvm-svn: 184118
* Demangler update: This now demangles many more (all?) C++11 symbols. ↵Howard Hinnant2013-06-176-9852/+3204
| | | | | | Demangler tests updated. llvm-svn: 184097
* Add capability to demangle invocation functions for ObjC blocks.Howard Hinnant2013-04-103-0/+83
| | | | llvm-svn: 179208
* Bruce Mitchener: Typo fixes.Howard Hinnant2013-02-157-12/+16
| | | | llvm-svn: 175275
* Partially revert r152770. That commit moved the default handlers to their ↵Howard Hinnant2013-02-061-9/+5
| | | | | | own file. But it also did some refactoring. It is the latter that is being reverted. The refactoring had accidentally removed the required effect that the default unexpected_handler calls std::terminate(), which is a visible effect. llvm-svn: 174532
* Update the copyright coredits -- Happy new year 2013!NAKAMURA Takumi2013-01-011-2/+2
| | | | llvm-svn: 171342
* Rename class __lambda_node to ___lambda_node to fix compile failure with gcc ↵Daniel Malea2012-12-051-3/+3
| | | | | | | | 4.6 and 4.7 - using "__lambda_node" causes internal compiler error in newer GCC versions llvm-svn: 169402
* __list::ends_with_template was giving the wrong answer for empty lists. And ↵Howard Hinnant2012-11-302-31/+83
| | | | | | __parse_unnamed_type_name wasn't properly handling the list of paramters and was not safe against incorrectly mangled lambdas (running past last). llvm-svn: 169022
* Remove aborts under __dynamic_cast which were under ↵Howard Hinnant2012-11-151-25/+11
| | | | | | _LIBCXX_DYNAMIC_FALLBACK. Change all type_info comparisons to use an inlined is_equal helper. However no change in functionality for this latter change at this time. This is just to encapsulate the comparison and make it a little easier to switch back and forth for testing/debugging. llvm-svn: 168052
* Update CREDIT.TXTHoward Hinnant2012-11-131-0/+4
| | | | llvm-svn: 167847
* Wen-Han Gu: Fix for http://llvm.org/bugs/show_bug.cgi?id=14312 Exception ↵Howard Hinnant2012-11-121-2/+6
| | | | | | Table out-of-range but still keep walking. llvm-svn: 167733
* Make the type_info for __shim_type_info visible. This should address some ↵Howard Hinnant2012-10-131-5/+5
| | | | | | failing dynamic_casts that a few applications are doing on the type_info hierarchy. llvm-svn: 165883
* Move TargetData to DataLayout.Micah Villmow2012-10-081-156/+156
| | | | llvm-svn: 165397
* Set up code under _LIBCXX_DYNAMIC_FALLBACK which is off by default. For a ↵Howard Hinnant2012-09-282-50/+129
| | | | | | full description of _LIBCXX_DYNAMIC_FALLBACK, see src/private_typeinfo.cpp. llvm-svn: 164863
* Improve the diagnostic messages on dynamic_cast.Howard Hinnant2012-09-281-6/+6
| | | | llvm-svn: 164833
* Two changes: 1) I still didn't have the ABI correct to match the gcc-4.2 ↵Howard Hinnant2012-09-282-10/+48
| | | | | | std::string under the exception classes. I think the changes to stdexcept.cpp have got that down now. 2) On Apple platforms I'm seeing visibility bugs in applications with respect to type_info's being hidden. This is causing dynamic_cast to malfunction because there are multiple type_info's running around for one type within an application, making dynamic_cast believe that one type is actually multiple types. As a stop gap measure I'm trying to detect this error, print out an error message, but continue with the most likely desired result. This is all under __APPLE__. This behavior can be expanded to other platforms if desired. llvm-svn: 164809
* Updating email addressMarshall Clow2012-09-241-2/+1
| | | | llvm-svn: 164490
OpenPOWER on IntegriCloud