|
@@ -6,6 +6,7 @@
|
|
|
|
|
|
struct unwind_libunwind_ops __weak *local_unwind_libunwind_ops;
|
|
struct unwind_libunwind_ops __weak *local_unwind_libunwind_ops;
|
|
struct unwind_libunwind_ops __weak *x86_32_unwind_libunwind_ops;
|
|
struct unwind_libunwind_ops __weak *x86_32_unwind_libunwind_ops;
|
|
|
|
+struct unwind_libunwind_ops __weak *arm64_unwind_libunwind_ops;
|
|
|
|
|
|
static void unwind__register_ops(struct thread *thread,
|
|
static void unwind__register_ops(struct thread *thread,
|
|
struct unwind_libunwind_ops *ops)
|
|
struct unwind_libunwind_ops *ops)
|
|
@@ -38,6 +39,9 @@ int unwind__prepare_access(struct thread *thread, struct map *map)
|
|
if (!strcmp(arch, "x86")) {
|
|
if (!strcmp(arch, "x86")) {
|
|
if (dso_type != DSO__TYPE_64BIT)
|
|
if (dso_type != DSO__TYPE_64BIT)
|
|
ops = x86_32_unwind_libunwind_ops;
|
|
ops = x86_32_unwind_libunwind_ops;
|
|
|
|
+ } else if (!strcmp(arch, "arm64") || !strcmp(arch, "arm")) {
|
|
|
|
+ if (dso_type == DSO__TYPE_64BIT)
|
|
|
|
+ ops = arm64_unwind_libunwind_ops;
|
|
}
|
|
}
|
|
|
|
|
|
if (!ops) {
|
|
if (!ops) {
|