Fix unw_getcontext() return value on AArch64.

unw_getcontext() should return UNW_ESUCCESS on success.  Therefore, the
assembly for AArch64 is incorrect because "ldr x0, #0" is a PC-relative
load instead of an immediate value load.

llvm-svn: 240648
This commit is contained in:
Logan Chien 2015-06-25 15:12:46 +00:00
parent 4dd6173bac
commit 549d405877
2 changed files with 9 additions and 1 deletions

View File

@ -277,7 +277,7 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext)
stp d28,d29, [x0, #0x1F0]
str d30, [x0, #0x200]
str d31, [x0, #0x208]
ldr x0, #0 // return UNW_ESUCCESS
mov x0, #0 // return UNW_ESUCCESS
ret
#elif defined(__arm__) && !defined(__APPLE__)

View File

@ -0,0 +1,8 @@
#include <assert.h>
#include <libunwind.h>
int main() {
unw_context_t context;
int ret = unw_getcontext(&context);
assert(ret == UNW_ESUCCESS);
}