summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog22
-rw-r--r--gdb/breakpoint.c6
-rw-r--r--gdb/dwarf2-frame-tailcall.c6
-rw-r--r--gdb/frame.c33
-rw-r--r--gdb/frame.h15
-rw-r--r--gdb/inline-frame.c2
6 files changed, 55 insertions, 29 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b5d48f6daeb..141b98cf8e7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,25 @@
+2012-09-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup - rename 'inline' depth to 'artificial' depth.
+ * breakpoint.c (set_momentary_breakpoint): Rename at a caller to
+ frame_id_artificial_p, extend the comment.
+ * dwarf2-frame-tailcall.c (tailcall_frame_this_id): Rename at a user.
+ * frame.c (fprint_frame_id): Rename at a user, change debug output
+ text to "artificial=".
+ (skip_inlined_frames): Rename to ...
+ (skip_artificial_frames): ... here. Extend the comment.
+ (get_stack_frame_id, frame_unwind_caller_id): Rename at a caller.
+ (frame_id_inlined_p): Rename to ...
+ (frame_id_artificial_p): ... here. Rename at a user.
+ (frame_id_eq, frame_id_inner, frame_unwind_caller_pc)
+ (frame_unwind_caller_pc_if_available, frame_unwind_caller_arch): Rename
+ at a user.
+ * frame.h (struct frame_id): Rename inline_depth to artificial_depth.
+ Extend the comment.
+ (frame_id_inlined_p): Rename to ...
+ (frame_id_artificial_p): ... here.
+ * inline-frame.c (inline_frame_this_id): Rename at a user.
+
2012-09-14 Andrew Burgess <aburgess@broadcom.com>
* c-typeprint.c (c_type_print_varspec_suffix): Display the size of
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 12f20d68fad..b841bcddae9 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -8609,9 +8609,9 @@ set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
{
struct breakpoint *b;
- /* If FRAME_ID is valid, it should be a real frame, not an inlined
- one. */
- gdb_assert (!frame_id_inlined_p (frame_id));
+ /* If FRAME_ID is valid, it should be a real frame, not an inlined or
+ tail-called one. */
+ gdb_assert (!frame_id_artificial_p (frame_id));
b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b->enable_state = bp_enabled;
diff --git a/gdb/dwarf2-frame-tailcall.c b/gdb/dwarf2-frame-tailcall.c
index fcfeaf4227e..f284d98dd21 100644
--- a/gdb/dwarf2-frame-tailcall.c
+++ b/gdb/dwarf2-frame-tailcall.c
@@ -223,9 +223,9 @@ tailcall_frame_this_id (struct frame_info *this_frame, void **this_cache,
*this_id = get_frame_id (next_frame);
(*this_id).code_addr = get_frame_pc (this_frame);
(*this_id).code_addr_p = 1;
- (*this_id).inline_depth = (cache->chain_levels
- - existing_next_levels (this_frame, cache));
- gdb_assert ((*this_id).inline_depth > 0);
+ (*this_id).artificial_depth = (cache->chain_levels
+ - existing_next_levels (this_frame, cache));
+ gdb_assert ((*this_id).artificial_depth > 0);
}
/* Find PC to be unwound from THIS_FRAME. THIS_FRAME must be a part of
diff --git a/gdb/frame.c b/gdb/frame.c
index 9ed49f68b45..8c44cadccf1 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -226,8 +226,8 @@ fprint_frame_id (struct ui_file *file, struct frame_id id)
fprint_field (file, "code", id.code_addr_p, id.code_addr);
fprintf_unfiltered (file, ",");
fprint_field (file, "special", id.special_addr_p, id.special_addr);
- if (id.inline_depth)
- fprintf_unfiltered (file, ",inlined=%d", id.inline_depth);
+ if (id.artificial_depth)
+ fprintf_unfiltered (file, ",artificial=%d", id.artificial_depth);
fprintf_unfiltered (file, "}");
}
@@ -303,11 +303,12 @@ fprint_frame (struct ui_file *file, struct frame_info *fi)
fprintf_unfiltered (file, "}");
}
-/* Given FRAME, return the enclosing normal frame for inlined
- function frames. Otherwise return the original frame. */
+/* Given FRAME, return the enclosing frame as found in real frames read-in from
+ inferior memory. Skip any previous frames which were made up by GDB.
+ Return the original frame if no immediate previous frames exist. */
static struct frame_info *
-skip_inlined_frames (struct frame_info *frame)
+skip_artificial_frames (struct frame_info *frame)
{
while (get_frame_type (frame) == INLINE_FRAME)
frame = get_prev_frame (frame);
@@ -354,7 +355,7 @@ get_frame_id (struct frame_info *fi)
struct frame_id
get_stack_frame_id (struct frame_info *next_frame)
{
- return get_frame_id (skip_inlined_frames (next_frame));
+ return get_frame_id (skip_artificial_frames (next_frame));
}
struct frame_id
@@ -367,10 +368,10 @@ frame_unwind_caller_id (struct frame_info *next_frame)
returning a null_frame_id (e.g., when a caller requests the frame
ID of "main()"s caller. */
- next_frame = skip_inlined_frames (next_frame);
+ next_frame = skip_artificial_frames (next_frame);
this_frame = get_prev_frame_1 (next_frame);
if (this_frame)
- return get_frame_id (skip_inlined_frames (this_frame));
+ return get_frame_id (skip_artificial_frames (this_frame));
else
return null_frame_id;
}
@@ -435,12 +436,12 @@ frame_id_p (struct frame_id l)
}
int
-frame_id_inlined_p (struct frame_id l)
+frame_id_artificial_p (struct frame_id l)
{
if (!frame_id_p (l))
return 0;
- return (l.inline_depth != 0);
+ return (l.artificial_depth != 0);
}
int
@@ -472,8 +473,8 @@ frame_id_eq (struct frame_id l, struct frame_id r)
/* An invalid special addr is a wild card (or unused). Otherwise
if special addresses are different, the frames are different. */
eq = 0;
- else if (l.inline_depth != r.inline_depth)
- /* If inline depths are different, the frames must be different. */
+ else if (l.artificial_depth != r.artificial_depth)
+ /* If artifical depths are different, the frames must be different. */
eq = 0;
else
/* Frames are equal. */
@@ -530,7 +531,7 @@ frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
if (!l.stack_addr_p || !r.stack_addr_p)
/* Like NaN, any operation involving an invalid ID always fails. */
inner = 0;
- else if (l.inline_depth > r.inline_depth
+ else if (l.artificial_depth > r.artificial_depth
&& l.stack_addr == r.stack_addr
&& l.code_addr_p == r.code_addr_p
&& l.special_addr_p == r.special_addr_p
@@ -706,14 +707,14 @@ frame_unwind_pc (struct frame_info *this_frame)
CORE_ADDR
frame_unwind_caller_pc (struct frame_info *this_frame)
{
- return frame_unwind_pc (skip_inlined_frames (this_frame));
+ return frame_unwind_pc (skip_artificial_frames (this_frame));
}
int
frame_unwind_caller_pc_if_available (struct frame_info *this_frame,
CORE_ADDR *pc)
{
- return frame_unwind_pc_if_available (skip_inlined_frames (this_frame), pc);
+ return frame_unwind_pc_if_available (skip_artificial_frames (this_frame), pc);
}
int
@@ -2326,7 +2327,7 @@ frame_unwind_arch (struct frame_info *next_frame)
struct gdbarch *
frame_unwind_caller_arch (struct frame_info *next_frame)
{
- return frame_unwind_arch (skip_inlined_frames (next_frame));
+ return frame_unwind_arch (skip_artificial_frames (next_frame));
}
/* Stack pointer methods. */
diff --git a/gdb/frame.h b/gdb/frame.h
index 532fb26c566..fa80663bd7f 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -134,9 +134,11 @@ struct frame_id
unsigned int code_addr_p : 1;
unsigned int special_addr_p : 1;
- /* The inline depth of this frame. A frame representing a "called"
- inlined function will have this set to a nonzero value. */
- int inline_depth;
+ /* It is non-zero for a frame made up by GDB without stack data
+ representation in inferior, such as INLINE_FRAME or TAILCALL_FRAME.
+ Caller of inlined function will have it zero, each more inner called frame
+ will have it increasingly one, two etc. Similarly for TAILCALL_FRAME. */
+ int artificial_depth;
};
/* Methods for constructing and comparing Frame IDs. */
@@ -178,9 +180,10 @@ extern struct frame_id frame_id_build_wild (CORE_ADDR stack_addr);
ID. */
extern int frame_id_p (struct frame_id l);
-/* Returns non-zero when L is a valid frame representing an inlined
- function. */
-extern int frame_id_inlined_p (struct frame_id l);
+/* Returns non-zero when L is a valid frame representing a frame made up by GDB
+ without stack data representation in inferior, such as INLINE_FRAME or
+ TAILCALL_FRAME. */
+extern int frame_id_artificial_p (struct frame_id l);
/* Returns non-zero when L and R identify the same frame, or, if
either L or R have a zero .func, then the same frame base. */
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index 06de5b0e793..cce9ef8e9a0 100644
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -178,7 +178,7 @@ inline_frame_this_id (struct frame_info *this_frame,
func = get_frame_function (this_frame);
gdb_assert (func != NULL);
(*this_id).code_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (func));
- (*this_id).inline_depth++;
+ (*this_id).artificial_depth++;
}
static struct value *