| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Clean up some stray semicolons found by GCC 4.9 -Wpedantic. NFC.
llvm-svn: 228664
|
|
|
|
|
|
|
|
| |
The unified register management interfaces had multiple naked macros for
conditional logic. This cleans them up to use the defined() form, avoiding
-Wundef warnings. NFC.
llvm-svn: 228663
|
|
|
|
|
|
|
| |
Clean up the format specifiers for pedantic compilation with gcc 4.9 on Linux.
NFC.
llvm-svn: 228662
|
|
|
|
|
|
|
|
|
|
| |
Move the placement delete into the base class. This permits the proper emission
of the virtual destructor in UnwindCursor by using the class specific placement
delete instead of the normal single element ::operator delete. With this patch,
we can finally build libunwind as a DSO without a runtime dependency on
libc++/libc++abi.
llvm-svn: 228436
|
|
|
|
|
|
|
|
|
|
|
|
| |
Convert all pure virtual functions in the UnwindCursor with implementations that
abort. This is effectively manually replicating the current behaviour, whilst
removing the compiler generated calls to __cxa_pure_virtual, which will abort at
runtime with a message indicating that a pure virtual call was made.
The whitespace changes are the result of executing clang-format over the changed
region.
llvm-svn: 228423
|
|
|
|
|
|
|
|
|
| |
RTTI and exceptions are not needed for the unwinder, the use of C++ there is for
very specific cases, and does not require dynamic_cast nor does it use
exceptions. This avoids unnecessary references to type information being
emitted.
llvm-svn: 228408
|
|
|
|
|
|
|
| |
HAVE_CRASHREPORTERCLIENT_H was potentially undefined and -Wundef is
enabled now.
llvm-svn: 228368
|
|
|
|
|
|
| |
Had a bad rebase that merged the #if in two places. Whoops.
llvm-svn: 228366
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 4963ea3107a2fdfae21f7806896905f20b21ff0d.
This change was wrong. The parameter type is sugared via a typedef. The errors
generated may have been due to a different root cause, and should be fixed
through the recent series of changes.
llvm-svn: 228365
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The inclusion of Unwind-EHABI.h was insufficiently guarded
(LIBCXXABI_ARM_EHABI was beign checked without ever being defined).
Move the check into the header file itself, add the check to the
source file, and clean up the existing checks.
LIBCXXABI_ARM_EHABI didn't have a canonical defintion; it was
duplicated across cxxabi.h, libunwind.h, and unwind.h. Move the
definition into __cxxabi_config.h and clean up the old cruft (note: we
will have to ship this header).
There are also a few drive-by formatting/whitespace cleanups.
Reviewers: jroelofs, thakis, compnerd
Reviewed By: compnerd
Subscribers: compnerd, aemerson, cfe-commits
Differential Revision: http://reviews.llvm.org/D7419
llvm-svn: 228363
|
|
|
|
|
|
|
| |
We should clang-format the whole thing when we finally move the
unwinder to its new home.
llvm-svn: 228360
|
|
|
|
|
|
|
|
| |
EHABI related typedef sugar is gated via LIBCXXABI_ARM_EHABI which did not
protect the EHABI header. This would cause declarations to be emitted on
non-EHABI targets, resulting in errors. This permits compilation on Darwin.
llvm-svn: 228359
|
|
|
|
|
|
|
|
|
|
|
|
| |
config.h:53:7: warning 'FOR_DYLD' is not defined, evaluates to 0 [-Wundef]
Unwind_AppleExtras.cpp:44:5: warning '__arm__' is not defined, evaluates to 0 [-Wundef]
Unwind_AppleExtras.cpp:60:7: warning '__arm64__' is not defined, evaluates to 0 [-Wundef]
Unwind_AppleExtras.cpp:186:6: warning 'FOR_DYLD' is not defined, evaluates to 0 [-Wundef]
Use defined(macro) which should be equivalent in these cases, silencing -Wundef
warnings. NFC.
llvm-svn: 228358
|
|
|
|
|
|
|
|
|
|
| |
Explicitly cast to uintptr_t before casting to a 32-bit value. Because this
code path is meant to be used in a 32-bit address space, this truncation should
be safe.
Unwind-EHABI.h:25:12: error: cast from pointer to smaller type 'uint32_t' (aka 'unsigned int') loses information
llvm-svn: 228357
|
|
|
|
|
|
|
| |
Mark the tag type (struct) for the _Unwind_Exception in C code. This silences a
warning from clang about missing struct specifier.
llvm-svn: 228356
|
|
|
|
| |
llvm-svn: 228351
|
|
|
|
|
|
| |
This should be all of them for Linux. Might be some for the others.
llvm-svn: 228267
|
|
|
|
|
|
|
|
| |
The problem that caused the need for http://reviews.llvm.org/D7419 was
caused by testing the value of something that was undefined. This
should prevent that in the future.
llvm-svn: 228257
|
|
|
|
| |
llvm-svn: 228195
|
|
|
|
| |
llvm-svn: 228073
|
|
|
|
| |
llvm-svn: 227142
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
misc cleanup).
Summary:
The main section of this patch teaches CMake a new option `LIBCXXABI_LIBCXX_PATH` that specifies the path to the libcxx source root. This information is passed to lit so that it can better find libc++'s python module. `LIBCXXABI_LIBCXX_PATH` is also used to help find the libc++ headers.
The rest of this patch is misc cleanup, mostly to make pep8 and pylint happy.
I've also copied libc++'s .gitignore into libc++abi.
Reviewers: jroelofs, danalbert
Reviewed By: danalbert
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D7130
llvm-svn: 226855
|
|
|
|
| |
llvm-svn: 226824
|
|
|
|
|
|
|
|
| |
Without -funwind-tables, the compiler won't generate the unwinding
table for these C functions. However, the functions in libunwind,
such as `_Unwind_Backtrace()`, WILL unwind stack to get the backtrace.
llvm-svn: 226823
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If libcxxabi is compiled as a shared library, and the
executable references the user-defined personality routines
(e.g. __gxx_personality_v0), then the pointer comparison in
Unwind-EHABI.cpp won't work. This is due to the fact that
the PREL31 will point to the PLT stubs for the personality
routines (in the executable), while the __gxx_personality_v0
symbol reference is yet another (different) PLT stub (in the
libunwind.)
This will cause _Unwind_Backtrace() stops to unwind the frame
whenever it reaches __gxx_personality_v0(). This CL fix the
problem by calling the user-defined personality routines
with an undocumented API for force unwinding.
llvm-svn: 226822
|
|
|
|
|
|
|
| |
Implement an undocumented _US_FORCE_UNWIND flag for force
unwinding.
llvm-svn: 226820
|
|
|
|
|
|
|
|
|
|
|
| |
This CL adds a new compilation flags LIBCXXABI_USE_LLVM_UNWINDER
to specify whether the LLVM unwinder is enabled. Besides, all
unwinder-specific code are guarded with this definition.
Now, libc++abi will be able to use the unwinding routine from libgcc
when LIBCXXABI_USE_LLVM_UNWINDER is disabled.
llvm-svn: 226819
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit partially reverts r219629.
This functions are not a part of ARM EHABI specification, and AFAIK,
the de facto implementation does not export these functions.
Without this change, any programs compiled with this unwind.h
will be incompatible with other implementations due to linkage
error.
llvm-svn: 226818
|
|
|
|
|
|
| |
http://reviews.llvm.org/D6985
llvm-svn: 226737
|
|
|
|
|
|
| |
http://reviews.llvm.org/D7101
llvm-svn: 226691
|
|
|
|
|
|
|
|
|
| |
The NDK doesn't have access to `android/set_abort_message.h`, so use
an extern declaration instead for API 21. For older releases, just use
`__assert2`, which will report to logcat and/or the tombstone for some
older releases.
llvm-svn: 226310
|
|
|
|
|
|
|
| |
Fixes issue with r226235. Build configuration difference between
libc++ and libc++abi.
llvm-svn: 226240
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: EricWF, jroelofs
Reviewed By: jroelofs
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6991
llvm-svn: 226235
|
|
|
|
| |
llvm-svn: 226014
|
|
|
|
| |
llvm-svn: 225194
|
|
|
|
|
|
|
| |
Mostly just format string fixes.
Tested clean on arm, x86, and x86_64 Linux.
llvm-svn: 225187
|
|
|
|
| |
llvm-svn: 225136
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
libdir suffixes like 'lib64' or 'lib32'.
This support is currently very rhudimentary. We define a variable
LIBCXXABI_LIBDIR_SUFFIX. In a standalone build of libc++abi this can be
directly set as a cached variable to control the multilib suffix used.
When building libc++abi within a larger LLVM build, it is hard wired to
whatever LLVM libdir suffix has been selected. If this doesn't work for
someone, just let me know. I'm happy to change it.
Unfortunately, libc++abi's lit setup made this somewhat problematic to
change. It was setting variables up in a way that caused the resulting
build to not work with lit at all. To fix that, I've moved some
variables around in the CMake build to more closely match where and how
they are defined in the libc++ CMake build. This includes specifically
defining a library root variable in the CMake build where the libdir
suffix can be applied, and then using that rather than re-computing it
from the object directory in the lit config.
This is essentially new functionality for libc++abi so I don't expect it
to have any impact for folks until they start setting these variables.
However, I know libc++abi is built in a diverse set of environments so
just let me know if this causes you any problems.
llvm-svn: 224927
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Remove the embedded directive undefined behavior by moving the
the #ifdef out of the macro arguments. [-Wembedded-directive]
* Remove the local variable shadowing warning by renaming
frameInfo in UnwindLevel1-gcc-ext.c. [-Wshadow]
* Explicitly cast the function pointer to void pointer to avoid
the comparison between function pointer and void pointer.
[-Wpedantic]
llvm-svn: 224690
|
|
|
|
| |
llvm-svn: 224657
|
|
|
|
| |
llvm-svn: 224656
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Fixes PR21738.
The implementation for this is handled by __cxa_thread_atexit_impl,
which is supplied by libc.
More information:
https://sourceware.org/glibc/wiki/Destructor%20support%20for%20thread_local%20variables
Reviewers: mclow.lists, EricWF, jroelofs
Reviewed By: jroelofs
Subscribers: majnemer, cfe-commits
Differential Revision: http://reviews.llvm.org/D6708
llvm-svn: 224477
|
|
|
|
|
|
|
| |
We've dropped support for python 2.5, so now we can use the forward
compatible "except ... as" syntax.
llvm-svn: 224182
|
|
|
|
| |
llvm-svn: 222719
|
|
|
|
| |
llvm-svn: 222718
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch adds CMake support for building and testing libc++abi without threads.
1. Add `LIBCXXABI_ENABLE_THREADS` option to CMake.
2. Propagate `LIBCXXABI_ENABLE_THREADS` to lit via lit.site.cfg.in
3. Configure tests for `LIBCXXABI_ENABLE_THREADS=OFF
Currently the test suite does not work when libc++abi is built without threads because that information does not propagate to the test suite.
Reviewers: danalbert, mclow.lists, jroelofs
Reviewed By: jroelofs
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6393
llvm-svn: 222702
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
When using LIT the timing output is entirely unused but introduces a dependency on `<chrono>`. When libc++ is built without a montonic clock this causes some of the tests to fail.
This patch factors out all of the timing logic into `support/timer.hpp` and disables it by default. To enable the timing you must define `LIBCXXABI_TIME_TESTS`.
Reviewers: mclow.lists, danalbert, jroelofs
Reviewed By: jroelofs
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6391
llvm-svn: 222701
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch delays the dereference adjustment until we are sure the thrown type is a pointer type. It is possible the thrown type is not a pointer and is smaller than `sizeof(void*)`. If the thrown type is is smaller than `sizeof(void*)` the deference adjustment will result in a heap buffer overflow.
I audited all the call sites of `can_catch(...)` and there are no places where `adjustedPtr` is used if `can_catch(...)` returns false. For this reason the patch should not introduce any functionality change.
This patch fixes the following tests when using ASAN:
* unwind_01.cpp
* unwind_02.cpp
* unwind_04.cpp
Reviewers: danalbert, jroelofs, mclow.lists
Reviewed By: mclow.lists
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6353
llvm-svn: 222674
|
|
|
|
| |
llvm-svn: 222496
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: ASAN fires on these tests because they don't clean up their memory.
Reviewers: danalbert, jroelofs, mclow.lists
Reviewed By: jroelofs
Subscribers: dblaikie, cfe-commits
Differential Revision: http://reviews.llvm.org/D6281
llvm-svn: 222493
|