aboutsummaryrefslogtreecommitdiff
path: root/gcc/unwind-dw2.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2005-05-17 15:37:47 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2005-05-17 15:37:47 +0000
commit79d0dfa314d6b7d1db89735809d7f7f19b5efd86 (patch)
tree386dad5929e3765399d5b24a1e7d76be228b6d15 /gcc/unwind-dw2.c
parentd0f11b16532d9c96c3a32ec284bd4470c67ba4b4 (diff)
downloadgcc-79d0dfa314d6b7d1db89735809d7f7f19b5efd86.zip
gcc-79d0dfa314d6b7d1db89735809d7f7f19b5efd86.tar.gz
gcc-79d0dfa314d6b7d1db89735809d7f7f19b5efd86.tar.bz2
unwind-dw2-fde-glibc.c (base_from_cb_data, [...]): Use gcc_assert and gcc_unreachable as appropriate.
* unwind-dw2-fde-glibc.c (base_from_cb_data, _Unwind_IteratePhdrCallback): Use gcc_assert and gcc_unreachable as appropriate. * unwind-dw2-fde.c (__deregister_frame_info_bases, base_from_object, fde_split, end_fde_sort): Likewise. * unwind-dw2.c (_Unwind_GetGR, _Unwind_SetGR, execute_stack_op, execute_cfa_program, _Unwind_SetSpColumn, uw_update_context_1, uw_init_context_1): Likewise. * unwind.inc (_Unwind_RaiseException_Phase2, _Unwind_Resume, _Unwind_Resume_or_Rethrow): Likewise. * unwind-pe.h (__gxx_abort): Do not define. (size_of_encoded_value, base_of_encoded_value, read_encoded_value_with_base): Use gcc_unreachable. * unwind.h (_Unwind_GetTextRelBase): Likewise. From-SVN: r99835
Diffstat (limited to 'gcc/unwind-dw2.c')
-rw-r--r--gcc/unwind-dw2.c85
1 files changed, 42 insertions, 43 deletions
diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
index 4ffdd02..b50ae01 100644
--- a/gcc/unwind-dw2.c
+++ b/gcc/unwind-dw2.c
@@ -131,19 +131,18 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index)
#endif
index = DWARF_REG_TO_UNWIND_COLUMN (index);
- if (index >= (int) sizeof(dwarf_reg_size_table))
- abort ();
+ gcc_assert (index < (int) sizeof(dwarf_reg_size_table));
size = dwarf_reg_size_table[index];
ptr = context->reg[index];
/* This will segfault if the register hasn't been saved. */
if (size == sizeof(_Unwind_Ptr))
return * (_Unwind_Ptr *) ptr;
-
- if (size == sizeof(_Unwind_Word))
- return * (_Unwind_Word *) ptr;
-
- abort ();
+ else
+ {
+ gcc_assert (size == sizeof(_Unwind_Word));
+ return * (_Unwind_Word *) ptr;
+ }
}
static inline void *
@@ -169,17 +168,17 @@ _Unwind_SetGR (struct _Unwind_Context *context, int index, _Unwind_Word val)
void *ptr;
index = DWARF_REG_TO_UNWIND_COLUMN (index);
- if (index >= (int) sizeof(dwarf_reg_size_table))
- abort ();
+ gcc_assert (index < (int) sizeof(dwarf_reg_size_table));
size = dwarf_reg_size_table[index];
ptr = context->reg[index];
if (size == sizeof(_Unwind_Ptr))
* (_Unwind_Ptr *) ptr = val;
- else if (size == sizeof(_Unwind_Word))
- * (_Unwind_Word *) ptr = val;
else
- abort ();
+ {
+ gcc_assert (size == sizeof(_Unwind_Word));
+ * (_Unwind_Word *) ptr = val;
+ }
}
/* Get the pointer to a register INDEX as saved in CONTEXT. */
@@ -518,26 +517,23 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
break;
case DW_OP_dup:
- if (stack_elt < 1)
- abort ();
+ gcc_assert (stack_elt);
result = stack[stack_elt - 1];
break;
case DW_OP_drop:
- if (--stack_elt < 0)
- abort ();
+ gcc_assert (stack_elt);
+ stack_elt -= 1;
goto no_push;
case DW_OP_pick:
offset = *op_ptr++;
- if (offset >= stack_elt - 1)
- abort ();
+ gcc_assert (offset < stack_elt - 1);
result = stack[stack_elt - 1 - offset];
break;
case DW_OP_over:
- if (stack_elt < 2)
- abort ();
+ gcc_assert (stack_elt >= 2);
result = stack[stack_elt - 2];
break;
@@ -545,8 +541,7 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
{
_Unwind_Word t1, t2, t3;
- if (stack_elt < 3)
- abort ();
+ gcc_assert (stack_elt >= 3);
t1 = stack[stack_elt - 1];
t2 = stack[stack_elt - 2];
t3 = stack[stack_elt - 3];
@@ -563,8 +558,9 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
case DW_OP_not:
case DW_OP_plus_uconst:
/* Unary operations. */
- if (--stack_elt < 0)
- abort ();
+ gcc_assert (stack_elt);
+ stack_elt -= 1;
+
result = stack[stack_elt];
switch (op)
@@ -594,7 +590,7 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
result = read_8u (ptr);
break;
default:
- abort ();
+ gcc_unreachable ();
}
}
break;
@@ -615,7 +611,7 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
break;
default:
- abort ();
+ gcc_unreachable ();
}
break;
@@ -639,8 +635,9 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
{
/* Binary operations. */
_Unwind_Word first, second;
- if ((stack_elt -= 2) < 0)
- abort ();
+ gcc_assert (stack_elt >= 2);
+ stack_elt -= 2;
+
second = stack[stack_elt];
first = stack[stack_elt + 1];
@@ -699,7 +696,7 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
break;
default:
- abort ();
+ gcc_unreachable ();
}
}
break;
@@ -711,8 +708,9 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
goto no_push;
case DW_OP_bra:
- if (--stack_elt < 0)
- abort ();
+ gcc_assert (stack_elt);
+ stack_elt -= 1;
+
offset = read_2s (op_ptr);
op_ptr += 2;
if (stack[stack_elt] != 0)
@@ -723,20 +721,19 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
goto no_push;
default:
- abort ();
+ gcc_unreachable ();
}
/* Most things push a result value. */
- if ((size_t) stack_elt >= sizeof(stack)/sizeof(*stack))
- abort ();
+ gcc_assert ((size_t) stack_elt < sizeof(stack)/sizeof(*stack));
stack[stack_elt++] = result;
no_push:;
}
/* We were executing this program to get a value. It should be
at top of stack. */
- if (--stack_elt < 0)
- abort ();
+ gcc_assert (stack_elt);
+ stack_elt -= 1;
return stack[stack_elt];
}
@@ -944,7 +941,7 @@ execute_cfa_program (const unsigned char *insn_ptr,
break;
default:
- abort ();
+ gcc_unreachable ();
}
}
}
@@ -1088,10 +1085,11 @@ _Unwind_SetSpColumn (struct _Unwind_Context *context, void *cfa,
if (size == sizeof(_Unwind_Ptr))
tmp_sp->ptr = (_Unwind_Ptr) cfa;
- else if (size == sizeof(_Unwind_Word))
- tmp_sp->word = (_Unwind_Ptr) cfa;
else
- abort ();
+ {
+ gcc_assert (size == sizeof(_Unwind_Word));
+ tmp_sp->word = (_Unwind_Ptr) cfa;
+ }
_Unwind_SetGRPtr (context, __builtin_dwarf_sp_column (), tmp_sp);
}
@@ -1145,7 +1143,7 @@ uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs)
}
default:
- abort ();
+ gcc_unreachable ();
}
context->cfa = cfa;
@@ -1229,12 +1227,13 @@ uw_init_context_1 (struct _Unwind_Context *context,
void *ra = __builtin_extract_return_addr (__builtin_return_address (0));
_Unwind_FrameState fs;
_Unwind_SpTmp sp_slot;
+ _Unwind_Reason_Code code;
memset (context, 0, sizeof (struct _Unwind_Context));
context->ra = ra;
- if (uw_frame_state_for (context, &fs) != _URC_NO_REASON)
- abort ();
+ code = uw_frame_state_for (context, &fs);
+ gcc_assert (code == _URC_NO_REASON);
#if __GTHREADS
{