summaryrefslogtreecommitdiffstats
path: root/libcxxabi/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Simplify.Joerg Sonnenberger2014-03-201-6/+1
| | | | llvm-svn: 204292
* Fix DW_CFA_GNU_args_size handling. The primary architecture using thisJoerg Sonnenberger2014-03-202-3/+2
| | | | | | | | | | | opcode is VAX. A function call pushes the number of arguments given onto the stack and "ret" will pop it automatically. The FDE of the caller contains the amount of stack space used for arguments (and possibly extra padding), so unwinding has to compensate for this when "returning" from a function. This is exactly the case when step() is done. The existing handling in unw_set_reg no longer makes sense. llvm-svn: 204290
* 0 is a valid LSDA encoding and can be seen in statically linkedJoerg Sonnenberger2014-03-111-2/+2
| | | | | | | programs. Initialize lsdaEncoding to DW_EH_PE_omit and check for that value to decide whether a value should be decoded. llvm-svn: 203626
* Demangle Dc to decltype(auto) as per the Itanium C++ ABI spec.Anders Carlsson2014-02-171-0/+5
| | | | llvm-svn: 201533
* [libcxxabi] Fix broken codesourcery.com links in commentsJonathan Roelofs2014-02-127-7/+7
| | | | | review: http://llvm-reviews.chandlerc.com/D2718 llvm-svn: 201208
* Fix PR17221 - can't catch virtual base classes when throwing derived NULL ↵Marshall Clow2014-02-061-10/+14
| | | | | | pointers. Specifically, libc++abi would crash when you tried it. llvm-svn: 200904
* Fix PR17222 - catching derived classes from thrown null pointer. Adds tests, tooMarshall Clow2014-02-051-1/+2
| | | | llvm-svn: 200864
* Use .p2align instead of .alignNick Kledzik2014-01-232-4/+4
| | | | llvm-svn: 199941
* Add missing alignment directives in assemblyNick Kledzik2014-01-232-0/+4
| | | | llvm-svn: 199915
* Don't redefine static_assert()Nick Kledzik2014-01-231-1/+1
| | | | llvm-svn: 199860
* Fix unwinder to build for iOSNick Kledzik2014-01-232-2/+5
| | | | llvm-svn: 199859
* Implement demangling for user-defined operators.Howard Hinnant2014-01-061-0/+13
| | | | llvm-svn: 198643
* Add a first cut at a Registers_arm class, to be used for 32bit arm EHABI ↵Nico Weber2013-12-183-0/+328
| | | | | | unwinding. llvm-svn: 197591
* Add mangling macros for Unwind's inline assembly.Nico Weber2013-12-173-29/+56
| | | | | | | This is in preparation for landing an implementation of unw_getcontext on a system where it's mangled 'unw_getcontext', not '_unw_getcontext'. llvm-svn: 197523
* Fix demangling crasher. The crasher involved nested <encoding> involving ↵Howard Hinnant2013-12-111-8/+245
| | | | | | parameter packs, which exposed a logic bug causing an empty vector<string> to be accessed with back(). In addition to fixing the bug, I've inserted numerous preemptive checks for similar bugs in the hopes that if another bug is uncovered, the bug results in an invalid mangled string instead of a demangler crash. Test suite updated with string that was causing the crash. llvm-svn: 197063
* 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
* [unwind] remove darwin build dependency on <mach-o/dyld_priv.h>Nick Kledzik2013-12-051-1/+42
| | | | llvm-svn: 196436
* 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
* Move local Db type out to namespace scope.Howard Hinnant2013-10-221-22/+23
| | | | llvm-svn: 193169
* [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-0717-0/+7835
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* 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
* I had a buffer mismanagement bug in the demangler.Howard Hinnant2013-07-261-1/+5
| | | | llvm-svn: 187255
* I'd no sooner made the last commit when Matthew Dempsky sent me another test ↵Howard Hinnant2013-06-231-48/+15
| | | | | | 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-231-6/+37
| | | | | | 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-231-1/+1
| | | | llvm-svn: 184656
* I created a random mangled name generator and have thrown about 200 million ↵Howard Hinnant2013-06-211-4/+2
| | | | | | 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-201-57/+263
| | | | llvm-svn: 184477
* Protect against invalid mangled names. Add test suite for invalid mangled ↵Howard Hinnant2013-06-201-1/+1
| | | | | | names. llvm-svn: 184394
* Demangle objc mangling implemented in r184250Howard Hinnant2013-06-191-3/+32
| | | | llvm-svn: 184301
* Tweaks/cleanups provided by Matthew DempskyHoward Hinnant2013-06-171-12/+6
| | | | llvm-svn: 184118
* Demangler update: This now demangles many more (all?) C++11 symbols. ↵Howard Hinnant2013-06-174-9846/+3186
| | | | | | Demangler tests updated. llvm-svn: 184097
* Add capability to demangle invocation functions for ObjC blocks.Howard Hinnant2013-04-101-0/+81
| | | | llvm-svn: 179208
* Bruce Mitchener: Typo fixes.Howard Hinnant2013-02-156-12/+12
| | | | 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
* 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-301-30/+51
| | | | | | __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
* 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
OpenPOWER on IntegriCloud