diff options
Diffstat (limited to 'gdb/unwind_stop_reasons.def')
-rw-r--r-- | gdb/unwind_stop_reasons.def | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gdb/unwind_stop_reasons.def b/gdb/unwind_stop_reasons.def new file mode 100644 index 0000000..9a34feb --- /dev/null +++ b/gdb/unwind_stop_reasons.def @@ -0,0 +1,80 @@ +/* Copyright 2011 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Reasons why frames could not be further unwound + SET (name, description) + + After this reason name, all reasons should be considered errors; + i.e.: abnormal stack termination. + FIRST_ERROR (name) + + First and Last reason defined + FIRST_ENTRY (name) + LAST_ENTRY (name) */ + +#ifdef SET +/* No particular reason; either we haven't tried unwinding yet, + or we didn't fail. */ +SET (UNWIND_NO_REASON, "no reason") + +/* The previous frame's analyzer returns an invalid result + from this_id. + + FIXME drow/2006-08-16: This is how GDB used to indicate end of + stack. We should migrate to a model where frames always have a + valid ID, and this becomes not just an error but an internal + error. But that's a project for another day. */ +SET (UNWIND_NULL_ID, "unwinder did not report frame ID") + +/* This frame is the outermost. */ +SET (UNWIND_OUTERMOST, "outermost") + +/* Can't unwind further, because that would require knowing the + values of registers or memory that haven't been collected. */ +SET (UNWIND_UNAVAILABLE, \ + "not enough registers or memory available to unwind further") + +/* This frame ID looks like it ought to belong to a NEXT frame, + but we got it for a PREV frame. Normally, this is a sign of + unwinder failure. It could also indicate stack corruption. */ +SET (UNWIND_INNER_ID, "previous frame inner to this frame (corrupt stack?)") + +/* This frame has the same ID as the previous one. That means + that unwinding further would almost certainly give us another + frame with exactly the same ID, so break the chain. Normally, + this is a sign of unwinder failure. It could also indicate + stack corruption. */ +SET (UNWIND_SAME_ID, "previous frame identical to this frame (corrupt stack?)") + +/* The frame unwinder didn't find any saved PC, but we needed + one to unwind further. */ +SET (UNWIND_NO_SAVED_PC, "frame did not save the PC") + +#endif /* SET */ + + +#ifdef FIRST_ERROR +FIRST_ERROR (UNWIND_UNAVAILABLE) +#endif + +#ifdef FIRST_ENTRY +FIRST_ENTRY (UNWIND_NO_REASON) +#endif + +#ifdef LAST_ENTRY +LAST_ENTRY (UNWIND_NO_SAVED_PC) +#endif |