aboutsummaryrefslogtreecommitdiff
path: root/gdb/stack.c
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2015-07-14 15:07:35 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2015-08-07 11:54:59 +0200
commit7ff38b1c898be5db053193f26d6a3a1d8a6074e8 (patch)
tree3bfa2bd46803f98fc89c6cd60d777ff5c27e197e /gdb/stack.c
parent0b45135ec1364f9d0c850a52ce05cf4ffb038021 (diff)
downloadgdb-7ff38b1c898be5db053193f26d6a3a1d8a6074e8.zip
gdb-7ff38b1c898be5db053193f26d6a3a1d8a6074e8.tar.gz
gdb-7ff38b1c898be5db053193f26d6a3a1d8a6074e8.tar.bz2
gdb: get_frame_language now takes a frame parameter.
As part of a drive to remove deprecated_safe_get_selected_frame, make the get_frame_language function take a frame parameter. Given the name of the function this actually seems to make a lot of sense. The task of fetching a suitable frame is then passed to the calling functions. For get_frame_language there are not many callers, these are updated to get the selected frame in a suitable way. gdb/ChangeLog: * language.c (show_language_command): Find selected frame before asking for the language of that frame. (set_language_command): Likewise. * language.h (get_frame_language): Add frame parameter. * stack.c (get_frame_language): Add frame parameter, assert parameter is not NULL, update comment and reindent. * top.c (check_frame_language_change): Pass the selected frame into get_frame_language.
Diffstat (limited to 'gdb/stack.c')
-rw-r--r--gdb/stack.c61
1 files changed, 29 insertions, 32 deletions
diff --git a/gdb/stack.c b/gdb/stack.c
index b4cfdbd..31a723d 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -2560,46 +2560,43 @@ func_command (char *arg, int from_tty)
select_and_print_frame (frame);
}
-/* Gets the language of the current frame. */
+/* Gets the language of FRAME. */
enum language
-get_frame_language (void)
+get_frame_language (struct frame_info *frame)
{
- struct frame_info *frame = deprecated_safe_get_selected_frame ();
+ CORE_ADDR pc = 0;
+ int pc_p = 0;
- if (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. */
+ /* 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
+ 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 (pc_p)
+ {
+ struct compunit_symtab *cust = find_pc_compunit_symtab (pc);
- if (cust != NULL)
- return compunit_language (cust);
- }
+ if (cust != NULL)
+ return compunit_language (cust);
}
return language_unknown;