The C6XABI defined persoality routines ID 3 and 4 use a single 24-bit block word of unwinding data. Patch below makes sure this is preserved, rather than treating it as a set of unwinding opcode bytes.
I seem to have lost this bit of code when I merged the ARM and c6x implementations. Applied to svn trunk. Paul 2011-10-03 Paul Brook <p...@codesourcery.com> libgcc/ * unwind-arm-common.inc: Handle ID3/4 unwinding data. Index: libgcc/unwind-arm-common.inc =================================================================== --- libgcc/unwind-arm-common.inc (revision 179178) +++ libgcc/unwind-arm-common.inc (working copy) @@ -583,7 +583,7 @@ __gnu_unwind_pr_common (_Unwind_State st uws.words_left = 0; uws.bytes_left = 3; } - else + else if (id < 3) { uws.words_left = (uws.data >> 16) & 0xff; uws.data <<= 16;