libunwind: limit stack usage in unwind cursor
Obtained from FreeBSD SVN r302475
Differential Revision: https://reviews.llvm.org/D22570
git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@276128 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/__libunwind_config.h b/include/__libunwind_config.h
index 65e6eb5..a9d9958 100644
--- a/include/__libunwind_config.h
+++ b/include/__libunwind_config.h
@@ -22,18 +22,22 @@
# define _LIBUNWIND_TARGET_I386 1
# define _LIBUNWIND_CONTEXT_SIZE 8
# define _LIBUNWIND_CURSOR_SIZE 19
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 9
# elif defined(__x86_64__)
# define _LIBUNWIND_TARGET_X86_64 1
# define _LIBUNWIND_CONTEXT_SIZE 21
# define _LIBUNWIND_CURSOR_SIZE 33
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 17
# elif defined(__ppc__)
# define _LIBUNWIND_TARGET_PPC 1
# define _LIBUNWIND_CONTEXT_SIZE 117
# define _LIBUNWIND_CURSOR_SIZE 128
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 113
# elif defined(__aarch64__)
# define _LIBUNWIND_TARGET_AARCH64 1
# define _LIBUNWIND_CONTEXT_SIZE 66
# define _LIBUNWIND_CURSOR_SIZE 78
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 96
# elif defined(__arm__)
# define _LIBUNWIND_TARGET_ARM 1
# if defined(__ARM_WMMX)
@@ -43,10 +47,12 @@
# define _LIBUNWIND_CONTEXT_SIZE 42
# define _LIBUNWIND_CURSOR_SIZE 49
# endif
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 96
# elif defined(__or1k__)
# define _LIBUNWIND_TARGET_OR1K 1
# define _LIBUNWIND_CONTEXT_SIZE 16
# define _LIBUNWIND_CURSOR_SIZE 28
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 32
# else
# error "Unsupported architecture."
# endif
@@ -59,6 +65,7 @@
# define _LIBUNWIND_TARGET_OR1K 1
# define _LIBUNWIND_CONTEXT_SIZE 128
# define _LIBUNWIND_CURSOR_SIZE 140
+# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 120
#endif // _LIBUNWIND_IS_NATIVE_ONLY
#endif // ____LIBUNWIND_CONFIG_H__
diff --git a/src/DwarfParser.hpp b/src/DwarfParser.hpp
index cff0e82..62c047b 100644
--- a/src/DwarfParser.hpp
+++ b/src/DwarfParser.hpp
@@ -62,7 +62,7 @@
};
enum {
- kMaxRegisterNumber = 120
+ kMaxRegisterNumber = _LIBUNWIND_HIGHEST_DWARF_REGISTER
};
enum RegisterSavedWhere {
kRegisterUnused,