gdb: Move get_frame_language from stack.c to frame.c.
The get_frame_language feels like it would be more at home in frame.c rather than in stack.c, while the declaration, that is currently in language.h can be moved into frame.h to match. A couple of new includes are added, but otherwise no substantial change here. gdb/ChangeLog: * stack.c (get_frame_language): Moved ... * frame.c (get_frame_language): ... to here. * language.h (get_frame_language): Declaration moved to frame.h. * frame.h: Add language.h include, for language enum. (get_frame_language): Declaration moved from language.h. * language.c: Add frame.h include. * top.c: Add frame.h include. * symtab.h (struct obj_section): Declare. (struct cmd_list_element): Declare.
This commit is contained in:
parent
7ff38b1c89
commit
060967202b
8 changed files with 65 additions and 44 deletions
42
gdb/stack.c
42
gdb/stack.c
|
@ -2559,48 +2559,6 @@ func_command (char *arg, int from_tty)
|
|||
else if (frame != get_selected_frame (NULL))
|
||||
select_and_print_frame (frame);
|
||||
}
|
||||
|
||||
/* Gets the language of FRAME. */
|
||||
|
||||
enum language
|
||||
get_frame_language (struct frame_info *frame)
|
||||
{
|
||||
CORE_ADDR pc = 0;
|
||||
int pc_p = 0;
|
||||
|
||||
gdb_assert (frame!= NULL);
|
||||
|
||||
/* We determine the current frame language by looking up its
|
||||
associated symtab. To retrieve this symtab, we use the frame
|
||||
PC. However we cannot use the frame PC as is, because it
|
||||
usually points to the instruction following the "call", which
|
||||
is sometimes the first instruction of another function. So
|
||||
we rely on get_frame_address_in_block(), it provides us with
|
||||
a PC that is guaranteed to be inside the frame's code
|
||||
block. */
|
||||
|
||||
TRY
|
||||
{
|
||||
pc = get_frame_address_in_block (frame);
|
||||
pc_p = 1;
|
||||
}
|
||||
CATCH (ex, RETURN_MASK_ERROR)
|
||||
{
|
||||
if (ex.error != NOT_AVAILABLE_ERROR)
|
||||
throw_exception (ex);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (pc_p)
|
||||
{
|
||||
struct compunit_symtab *cust = find_pc_compunit_symtab (pc);
|
||||
|
||||
if (cust != NULL)
|
||||
return compunit_language (cust);
|
||||
}
|
||||
|
||||
return language_unknown;
|
||||
}
|
||||
|
||||
|
||||
/* Provide a prototype to silence -Wmissing-prototypes. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue