summaryrefslogtreecommitdiffstats
path: root/libcxxabi/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Properly sign extend delta in compact unwind infoNick Kledzik2014-04-251-2/+3
| | | | llvm-svn: 207170
* Fix one missed use of DW_EH_PE_omit in r203626Nick Kledzik2014-04-251-1/+1
| | | | llvm-svn: 207169
* Fix virtual class with non-virtual dtor complaintDan Albert2014-04-231-0/+1
| | | | | | | Fixes compiler complaint about: src/Unwind/UnwindCursor.hpp:366:25: error: 'libunwind::AbstractUnwindCursor' has virtual functions but non-virtual destructor [-Werror,-Wnon-virtual-dtor] llvm-svn: 206942
* Fixes incorrect #ifs for SJ/LJ exceptionsDan Albert2014-04-232-4/+4
| | | | | | | The was working because, given __APPLE__, _LIBUNWIND_BUILD_SJLJ_APIS was set to __arm__, but other ARM targets not using SJ/LJ will fail to compile. llvm-svn: 206941
* Fixes type of dyldInfo for glibc/bionic systemsDan Albert2014-04-231-1/+1
| | | | | | | Darwin and the BSDs define a tagged struct dl_info typedef'd as Dl_info. glibc and bionic typedef an anonymous struct as Dl_info. llvm-svn: 206939
* Replace bzero with memsetJonathan Roelofs2014-04-161-8/+9
| | | | | | ... so that we can use newlib as the c library. llvm-svn: 206427
* Properly sign extend sdata2/4 in unwinder. Patch by Patrick WildtNick Kledzik2014-04-121-2/+4
| | | | llvm-svn: 206122
* Properly conditionalize DwarfFDECache<A>::dyldUnloadHook. Patch by Patrick WildtNick Kledzik2014-04-121-0/+2
| | | | llvm-svn: 206121
* Code cleanup and re-indent cxa_exception.hppLogan Chien2014-04-121-54/+55
| | | | llvm-svn: 206108
* The content of .eh_frame may be misaligned, so use memcpy. This is seenJoerg Sonnenberger2014-04-081-7/+31
| | | | | | in the wild on SH3. llvm-svn: 205756
* Include stdlib.h for getenv when !NDEBUG.Joerg Sonnenberger2014-04-031-0/+1
| | | | llvm-svn: 205573
* 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
OpenPOWER on IntegriCloud