|
From: <sv...@va...> - 2012-02-20 15:38:01
|
Author: sewardj Date: 2012-02-20 15:33:24 +0000 (Mon, 20 Feb 2012) New Revision: 12393 Log: ARM/Thumb only: fix a bug in which stack unwinding halts in some 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) Modified: trunk/coregrind/m_debuginfo/readdwarf.c Modified: trunk/coregrind/m_debuginfo/readdwarf.c =================================================================== --- trunk/coregrind/m_debuginfo/readdwarf.c 2012-02-20 15:03:02 UTC (rev 12392) +++ trunk/coregrind/m_debuginfo/readdwarf.c 2012-02-20 15:33:24 UTC (rev 12393) @@ -1846,9 +1846,14 @@ # 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 |