]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
ARM/Thumb only: fix a bug in which stack unwinding halts in some
authorJulian Seward <jseward@acm.org>
Mon, 20 Feb 2012 15:33:24 +0000 (15:33 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 20 Feb 2012 15:33:24 +0000 (15:33 +0000)
functions that do FP arithmetic.  This is due to the Dwarf3 CFI
mentioning Dwarf registers above N_CFI_REGS, in particular FP
registers, which have values of about 80.  This fixes the problem by
increasing N_CFI_REGS to a level that covers all known registers.
(n-i-bz)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12393

coregrind/m_debuginfo/readdwarf.c

index adb05247814a4a2122f81380ec130145921227ad..cfdc80abde19a1c02352124b99cf07b38252eec7 100644 (file)
@@ -1846,9 +1846,14 @@ void ML_(read_debuginfo_dwarf1) (
 #  error "Unknown platform"
 #endif
 
-/* the number of regs we are prepared to unwind */
+/* The number of regs we are prepared to unwind.  The number for
+   arm-linux (320) seems ludicrously high, but the ARM IHI 0040A page
+   7 (DWARF for the ARM Architecture) specifies that values up to 320
+   might exist, for Neon/VFP-v3. */
 #if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
 # define N_CFI_REGS 72
+#elif defined(VGP_arm_linux)
+# define N_CFI_REGS 320
 #else
 # define N_CFI_REGS 20
 #endif