diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2015-07-14 15:07:35 +0100 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2015-08-07 11:54:59 +0200 |
commit | 7ff38b1c898be5db053193f26d6a3a1d8a6074e8 (patch) | |
tree | 3bfa2bd46803f98fc89c6cd60d777ff5c27e197e /gdb/stack.c | |
parent | 0b45135ec1364f9d0c850a52ce05cf4ffb038021 (diff) | |
download | gdb-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.c | 61 |
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; |