aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-03-01 gdb/Maciej W. Rozycki39-298/+1205
* features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-1/+6
* jit-reader.in [!__cplusplus] (GDB_DECLARE_GPL_COMPATIBLE_READER): Add missing backslash.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves3-2/+7
* configure.ac (build_warnings): Add -Wmissing-prototypes. * configure: Regenerate.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves24-34/+99
* amd64-linux-tdep.c (amd64_linux_record_signal): Make static. * breakpoint.c (create_exception_master_breakpoint, trace_command) (ftrace_command, strace_command): Make static. * d-lang.c (_initialize_d_language): Declare. * dwarf2expr.c (_initialize_dwarf2expr): Declare. * dwarf2loc.c (_initialize_dwarf2loc): * dwarf2read.c (process_psymtab_comp_unit): Make static. * exec.c (exec_get_section_table): Make static. * i386-linux-tdep.c (i386_linux_record_signal): Make static. * infcmd.c (ensure_valid_thread, ensure_not_tfind_mode): Make static. * inferior.c (remove_inferior_command, add_inferior_command) (clone_inferior_command): Make static. * linux-nat.c (linux_nat_thread_address_space) (linux_nat_core_of_thread): Make static. * linux-tdep.c (_initialize_linux_tdep): Declare. * objc-lang.c (_initialize_objc_lang): Declare. * opencl-lang.c (builtin_opencl_type, opencl_language_arch_info): Make static. (_initialize_opencl_language): Declare. * record.c (_initialize_record): Declare. * remote.c (demand_private_info, remote_get_tib_address) (remote_supports_cond_tracepoints) (remote_supports_fast_tracepoints, remote_get_tracepoint_status): Make static. * skip.c (_initialize_step_skip): Declare. * symtab.c (skip_prologue_using_lineinfo): Make static. * tracepoint.c (delete_trace_state_variable) (trace_variable_command, delete_trace_variable_command) (get_uploaded_tsv, find_matching_tracepoint_location) (find_matching_tsv, create_tsv_from_upload, get_traceframe_info): Make static. * value.c (pack_unsigned_long): Make static. * varobj.c (varobj_ensure_python_env): Make static. * windows-tdep.c (_initialize_windows_tdep): Declare. * xml-syscall.c (make_cleanup_free_syscalls_info): Make static.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-2/+11
* linux-tdep.c (linux_has_shared_address_space): Make static. Add gdbarch parameter. (linux_init_abi): Install it as has_shared_address_space gdbarch callback.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-0/+11
* observer.c (observer_test_first_notification_function) (observer_test_second_notification_function) (observer_test_third_notification_function): Add declarations.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves7-52/+53
* common/signals.c (default_target_signal_to_host) (default_target_signal_from_host): Move ... * arch-utils.c: ... here. * arch-utils.h (default_target_signal_to_host) (default_target_signal_from_host): Declare. * common/signals.c (target_signal_from_command): Move ... * infrun.c: ... here. * inferior.h (target_signal_from_command): Declare. * target.h (target_signal_from_command) (default_target_signal_from_host, default_target_signal_to_host): Delete declarations. * common/signals.c (_initialize_signals): Delete.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-0/+7
* jit-reader.in (plugin_is_GPL_compatible): Add declarations for both __cplusplus and !__cplusplus.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves4-24/+29
* psymtab.c (find_and_open_source): Delete declaration. * source.c (find_and_open_source): Move comment ... * source.h (find_and_open_source): ... to this new declaration.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-0/+5
* inline-frame.c: Include inline-frame.h.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves4-25/+6
* tui/tui-data.c (set_gen_win_origin): Delete. * tui/tui-data.h (tui_set_gen_win_origin): Delete declaration. * tui/tui-regs.c (tui_last_reg_element_no_in_line): Delete.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves4-4/+11
* remote.c (encode_actions): Delete declaration. * tracepoint.c (encode_actions): Make extern. * tracepoint.h (encode_actions): Declare.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves7-4/+18
* python/py-breakpoint.c: Include python.h. * python/py-continueevent.c (create_continue_event_object): Make static. * python/py-lazy-string.c (stpy_get_type): Make static. * python/py-newobjfileevent.c (create_new_objfile_event_object): Make static. * python/py-utils.c (unicode_to_target_python_string): Make static. * python/py-value.c: Include python.h.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-19/+4
* inferior.c (delete_threads_of_inferior): Delete.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves2-9/+115
Import fallback definitions from glibc. * gdb_proc_service.h [!HAVE_PROC_SERVICE_H] (struct ps_prochandle): Forward declare. (ps_err_e): Use glibc's comments. [!HAVE_PROC_SERVICE_H] (ps_pdread, ps_pdwrite, ps_ptread) (ps_ptwrite, ps_lgetregs, ps_lsetregs, ps_lgetfpregs) (ps_lsetfpregs, ps_getpid, ps_get_thread_area, ps_pglobal_lookup) (ps_pstop, ps_pcontinue, ps_lstop, ps_lcontinue, ps_lgetxregsize) (ps_lgetxregs, ps_lsetxregs, ps_plog): Declare. (struct ps_prochandle): Adjust comment.
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves3-32/+6
* ada-lang.c (ada_modulus_from_name): Delete. * ada-lex.l (lexer_init): Make static.
2012-03-01 * gdb.base/hbreak2.exp: New test for "hbreak" and "thbreak".Maciej W. Rozycki2-0/+610
2012-03-012012-03-01 Pedro Alves <palves@redhat.com>Pedro Alves6-56/+189
PR gdb/13767 gdb/ * frame.c (read_frame_register_unsigned): New. * frame.h (read_frame_register_unsigned): Declare. * i387-tdep.c (print_i387_status_word): New parameter `status_p'. Handle it. (print_i387_control_word): New parameter `control_p'. Handle it. (i387_print_float_info): Handle unavailable float registers. gdb/testsuite/ * gdb.trace/unavailable.exp (gdb_unavailable_floats): New. (gdb_collect_globals_test): Call it.
2012-03-01 * gdb.cp/method2.exp: Output of overload menu is nowKeith Seitz4-157/+239
alphabetized. Update tests for "break A::method". * gdb.cp/ovldbreak.exp: Use gdb_get_line_number instead of hard-coding them. Overload menu is alphabetized: rewrite to accommodate. Unset variables LINE and TYPES which are used in other tests. Compute the output of "info break". Update the breakpoint table after all breakpoints are deleted. (continue_to_bp_overloaded): Rename ACTUALS to ARGUMENT and compute ACTUALS and the method body based on parameters. Update expected output accordingly. * gdb.cp/ovldbreak.cc (foo::overload1arg): Reformat and add unique comments to allow the use of gdb_get_line_number. * gdb.cp/method2.exp: Use prepare_for_testing and cleanup some Tcl syntax. * gdb.cp/ovldbreak.exp: Likewise.
2012-03-01 * linespec.c (decode_line_2): Sort the list of methodsKeith Seitz2-0/+11
alphabetically before presenting the user with a selection menu.
2012-03-01 * gdb.base/help.exp (help show user): Update expected resultKeith Seitz2-1/+6
for new doc string changes (add "non-python").
2012-03-01 * dwarf2read.c (dwarf2_cu): Remove unused members has_form_ref_addr,Doug Evans2-26/+7
has_namespace_info. (dwarf2_read_abbrevs): Remove corresponding initialization.
2012-03-01 * NEWS: Mention new python command class gdb.COMMAND_USER.Doug Evans9-11/+77
* cli/cli-cmds.c (show_user): Print error when used on a python command. (init_cli_cmds): Update documentation strings for "show user" and "set/show max-user-call-depth" to clarify that it does not apply to python commands. * python/py-cmd.c (cmdpy_init): Treat class_user as a valid class in error check. (gdbpy_initialize_commands): Add COMMAND_USER as a constant in gdb python api. * top.c (execute_command): Only execute a user-defined command as a legacy macro if c->user_commands is set. doc/ * gdb.texinfo (Commands In Python): Put example python macro in COMMAND_USER category rather than COMMAND_OBSCURE. Document gdb.COMMAND_USER. (User-defined Commands): Update documentation to clarify "set/show max-user-call-depth" and "show user" don't apply to python commands. Update documentation to clarify "help user-defined" may also include python commands defined as COMMAND_USER. testsuite/ * gdb.python/py-cmd.exp: Add test to verify that python commands can be put in the user-defined category and that the commands appear in "help user-defined".
2012-03-01 * valprint.h (struct generic_val_print_decorations): New.Tom Tromey8-744/+539
(generic_val_print): Declare. * valprint.c (generic_val_print): New function. * p-valprint.c (p_decorations): New global. (pascal_val_print) <TYPE_CODE_REF, TYPE_CODE_ENUM, TYPE_CODE_FLAGS, TYPE_CODE_FUNC, TYPE_CODE_RANGE, TYPE_CODE_INT, TYPE_CODE_FLT, TYPE_CODE_VOID, TYPE_CODE_ERROR, TYPE_CODE_UNDEF, TYPE_CODE_BOOL, TYPE_CODE_CHAR>: Call generic_val_print. * m2-valprint.c (m2_decorations): New global. (m2_val_print) <TYPE_CODE_REF, TYPE_CODE_ENUM, TYPE_CODE_FUNC, TYPE_CODE_BOOL, TYPE_CODE_RANGE, TYPE_CODE_INT, TYPE_CODE_CHAR, TYPE_CODE_FLT, TYPE_CODE_METHOD, TYPE_CODE_VOID, TYPE_CODE_UNDEF, TYPE_CODE_ERROR>: Call generic_val_print. * f-valprint.c (f_decorations): New global. (f_val_print): Use print_function_pointer_address. <TYPE_CODE_REF, TYPE_CODE_FUNC, TYPE_CODE_CHAR, TYPE_CODE_FLAGS, TYPE_CODE_FLT, TYPE_CODE_VOID, TYPE_CODE_ENUM, TYPE_CODE_RANGE, TYPE_CODE_BOOL, TYPE_CODE_COMPLEX, TYPE_CODE_UNDEF>: Call generic_val_print. * c-valprint.c (c_decorations): New global. (c_val_print) <TYPE_CODE_MEMBERPTR, TYPE_CODE_REF, TYPE_CODE_ENUM, TYPE_CODE_FLAGS, TYPE_CODE_FUNC, TYPE_CODE_METHOD, TYPE_CODE_BOOL, TYPE_CODE_RANGE, TYPE_CODE_CHAR, TYPE_CODE_FLT, TYPE_CODE_DECFLOAT, TYPE_CODE_VOID, TYPE_CODE_ERROR, TYPE_CODE_UNDEF, TYPE_CODE_COMPLEX>: Call generic_val_print. * ada-valprint.c (ada_val_print_1) <TYPE_CODE_FLAGS>: Remove case.
2012-03-01 * valprint.c (val_print): Update.Tom Tromey18-164/+145
* p-valprint (pascal_val_print): Return void. * p-lang.h (pascal_val_print): Return void. * m2-valprint.c (m2_val_print): Return void. * m2-lang.h (m2_val_print): Return void. * language.h (struct language_defn) <la_val_print>: Return void. * language.c (unk_lang_val_print): Return void. * jv-valprint.c (java_val_print): Return void. * jv-lang.h (java_val_print): Return void. * f-valprint.c (f_val_print): Return void. * f-lang.h (f_val_print): Return void. * d-valprint.c (d_val_print): Return void. (dynamic_array_type): Update. * d-lang.h (d_val_print): Return void. * c-valprint.c (c_val_print): Return void. * c-lang.h (c_val_print): Return void. * ada-valprint.c (ada_vada_val_print, ada_val_print_1): Return void. * ada-lang.h (ada_val_print): Return void.
2012-03-01 * value.h (val_print): Return void.Tom Tromey3-17/+17
* valprint.c (val_print): Return void.
2012-03-01 * value.h (common_val_print): Return void.Tom Tromey3-13/+15
* valprint.c (common_val_print): Return void.
2012-03-01 * value.h (value_print): Return void.Tom Tromey14-53/+66
* valprint.c (value_print): Return void. * p-valprint.c (pascal_value_print): Return void. * p-lang.h (pascal_value_print): Return void. * language.h (struct language_defn) <la_value_print>: Return void. * language.c (unk_lang_value_print): Return void. * jv-valprint.c (java_value_print): Return void. * jv-lang.h (java_value_print): Return void. * f-valprint.c (c_value_print): Don't declare. Include c-lang.h. * c-valprint.c (c_value_print): Return void. * c-lang.h (c_value_print): Return void. * ada-valprint.c (ada_value_print): Return void. * ada-lang.h (ada_value_print): Return void.
2012-03-01 * value.c (value_primitive_field): Handle virtual base classes.Tom Tromey2-2/+13
2012-03-01 * gdbtypes.h (struct vbase): Remove.Tom Tromey2-7/+4
2012-03-01 * c-valprint.c (print_function_pointer_address): Move...Tom Tromey5-46/+37
* valprint.c: ... here. Make non-static. * m2-valprint.c (print_function_pointer_address): Remove. * valprint.h (print_function_pointer_address): Declare.
2012-03-01[NEWS] Document condition at end of catch exception/assert commandsJoel Brobecker2-0/+15
gdb/ChangeLog: * NEWS: Document the fact that one can provide a condition when creating an Ada exception catchpoint.
2012-03-01 * valprint.c (val_print_type_code_flags): Fix placement ofTom Tromey2-1/+6
trailing brace.
2012-03-01 PR ld/13789Hans-Peter Nilsson2-1/+6
* ld-elf/zerosize1.d: Allow xyzzy to be either OBJECT or NOTYPE.
2012-03-01 * object.cc (need_decompressed_section): Add #ifdef ENABLE_THREADS.Cary Coutant2-0/+8
2012-03-01Do not set MULTILINE_COMMENT_PREFIXES before calling update-copyrightJoel Brobecker2-12/+6
This was a local hack to work around a limitation in update-copyright. But the limitation is now OBE, because the copyright statements should now always fit on a single line, thanks to the new policy of using one single year range in the copyright notice. gdb/ChangeLog: * copyright.py (MULTILINE_COMMENT_PREFIXES): Delete. (update_files): Do not set MULTILINE_COMMENT_PREFIXES environment variable before calling update-copyright.
2012-03-01Import gnulib's latest update-copyright script...Joel Brobecker3-5/+22
... and update our copyright.py script to set environment variable UPDATE_COPYRIGHT_USE_INTERVALS to '2' instead of '1'. This tells the script to collapse all years into one single interval. gdb/ChangeLog: * gnulib/extra/update-copyright: Update to the latest from gnulib's git repository. * copyright.py: Set UPDATE_COPYRIGHT_USE_INTERVALS environment variable to 2 instead of 1.
2012-03-01remove dead code in varobj.c:c_value_of_variableJoel Brobecker2-5/+4
gdb/ChangeLog: * varobj.c (c_value_of_variable): Remove dead code.
2012-03-01 * elfxx-tilegx.c (tilegx_elf_relocate_section): Silence bogus warning.Alan Modra2-1/+5
2012-03-01*** empty log message ***gdbadmin1-1/+1
2012-02-29daily updateAlan Modra1-1/+1
2012-02-29 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):Cary Coutant7-66/+246
Call Object::decompressed_section_contents. * dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info): New dtor. (Sized_dwarf_line_info::buffer_start_): New data member. * merge.cc (Output_merge_data::do_add_input_section): Call Object::decompressed_section_contents. (Output_merge_string::do_add_input_section): Likewise. * object.cc (need_decompressed_section): New function. (build_compressed_section_map): Decompress sections needed later. (Sized_relobj_file::do_decompressed_section_contents): New function. (Sized_relobj_file::do_discard_decompressed_sections): New function. * object.h (Object::decompressed_section_contents): New function. (Object::discard_decompressed_sections): New function. (Object::do_decompressed_section_contents): New function. (Object::do_discard_decompressed_sections): New function. (Compressed_section_info): New type. (Compressed_section_map): Include decompressed section contents. (Sized_relobj_file::do_decompressed_section_contents): New function. (Sized_relobj_file::do_discard_decompressed_sections): New function.
2012-02-29[Ada] processId: Do not modify already encoded IDsJoel Brobecker2-2/+18
The processID function is supposed to take a symbol name, and process it in a way that allows us to look that symbol up. This patch is adding a guard to make sure that we do not apply any transformation if we detect that we are given an already-encoded symbol name. For instance: gv___XR_pck__global_variable___XE This happens in the case where we are trying to print the value of a renaming. To do this, we simply parse and evaluate the XR symbol name as an expression. Without this change, the expression parser transforms gv___XR_pck__global_variable___XE into somethink like gv___xr_pck__global_variable___xe, which then screws up the rest of the renaming evaluation. gdb/ChangeLog: * ada-lex.p (processId): Do not modify already encoded IDs. Update function documentation.
2012-02-29ada-lang.c:ada_find_renaming_symbol minor improvement.Joel Brobecker4-8/+21
This is a minor improvement in ada_find_renaming_symbol: What we were doing was going from a symbol, get its name, and then search for renamings. But if the original symbol was already itself a renaming, then we'd look the symbol up again to return it. Since we had the symbol in the first place, we shouldn't need to look it up again. This is what this patch does: Modify ada_find_renaming_symbol to take a symbol instead of the symbol's (linkage) name, and then updates the one caller. gdb/ChangeLog: * ada-lang.h (ada_find_renaming_symbol): Replace parameter "name" with "struct symbol *name_sym". * ada-exp.y (write_var_or_type): Update call to ada_find_renaming_symbol. * ada-lang.c (ada_find_renaming_symbol): Replace parameter "name" with "struct symbol *name_sym". Adjust Implementation accordingly. Adjust the function documentation.
2012-02-29Minor cleanup to a couple of functions in ada-lang.c.Joel Brobecker3-11/+20
gdb/ChangeLog: * ada-lang.h (ada_find_any_symbol, ada_find_any_type): Delete. * ada-lang.c (ada_find_any_type): Add advance declaration. Make static. Replace ada_find_any_symbol by ada_find_any_type_symbol. (ada_find_any_type_symbol): Renames ada_find_any_symbol. Improve function description. Make static. (ada_find_renaming_symbol, find_old_style_renaming_symbol): Replace ada_find_any_symbol by ada_find_any_type_symbol.
2012-02-29[Ada] avoid error message pollution with uninitialized tagged variableJoel Brobecker7-67/+203
Consider the following function... 3 procedure Foo is 4 I : Integer := Ident (10); 5 Obj : Base; 6 begin 7 Obj.X := I; 8 Do_Nothing (Obj.X'Address); 9 end Foo; ... where type "Base" is defined as a plain tagged record. If the user stops execution before "Obj" gets initialized (for example, by inserting a breakpoint "on" the function - or in other words, by inserting a breakpoint using the function name as the location), one might get the following of output if you try printing the value of obj: (gdb) p obj object size is larger than varsize-limit object size is larger than varsize-limit object size is larger than varsize-limit $1 = object size is larger than varsize-limit (x => 4204154) Same thing with "info locals": (gdb) info locals i = 0 obj = object size is larger than varsize-limit (x => 4204154) We have also seen different error messages such as "Cannot read memory at 0x...". The error happens because we are trying to read the dispatch table of a tagged type variable before it gets initialized. So the errors might legitimately occur, and are supposed to be be contained. However, the way things are written in ada-lang.c:ada_tag_name, although the exception is in fact contained, the error message still gets to be printed out. This patch prevents this from happening by eliminating the use of catch_errors, and using a TRY_CATCH block instead. Doing this removed the need to use functions specifically fitted for catch_errors, and thus some other simplifications could me made. In the end, the code got reorganized a bit to better show the logic behind it, as well as the common patterns. gdb/ChangeLog: * ada-lang.c (struct tag_args): Delete. (ada_get_tsd_type): Function body moved up in source file. (ada_tag_name_1, ada_tag_name_2): Delete. (ada_get_tsd_from_tag): New function. (ada_tag_name_from_tsd): New function. (ada_tag_name): Use a TRY_CATCH block instead of catch_errors to determine the tag name. gdb/testsuite/ChangeLog: * gdb.ada/tagged_not_init: New testcase.
2012-02-29[Ada] New functions to decode Ada types and valuesJoel Brobecker3-0/+51
This patch introduces two new functions that will be used to support the implementation of the ada-varobj effort. The function descriptions should say it all... gdb/ChangeLog: * ada-lang.h (ada_get_decoded_value, ada_get_decoded_type): Add declaration. * ada-lang.c (ada_get_decoded_value, ada_get_decoded_type): New function.
2012-02-29[Ada] Fix comment in ada-lang.c:ada_is_ignored_fieldJoel Brobecker2-3/+12
Fix a comment that completly mistunderstood the code... gdb/ChangeLog: * ada-lang.c (ada_is_ignored_field): Rewrite wrong comment.
2012-02-29[Ada] Do not cache lookup result if not full_searchJoel Brobecker2-2/+7
The ada_lookup_symbol_list function has recently been changed to accept a "full_search" parameter. When null, this parameter instructs the function to perform a partial search (global and static symbols are not searched). When doing a partial search, the result should not be saved into the lookup cache, as the result might be incomplete. This manifested itself when trying to perform a function call on AVR after having inserted a breakpoint inside that function: (gdb) b same Breakpoint 2 at 0x78: file r.adb, line 5. (gdb) call same(42) Breakpoint 2, r.same (i=42) at r.adb:5 5 return I; The program being debugged stopped while in a function called from GDB. Evaluation of the expression containing the function (at 0x0x800068) will be abandoned. ^^^^^^^^^^^^^^^ When the function is done executing, GDB will silently stop. The expected output for the underlined portion is "(r.same)". What happens is that the breakpoint command triggers 3 lookups of the name "same": 1. full search in LABEL_DOMAIN -> no match, cached; 2. full search in VAR_DOMAIN -> 1 match, cached; 3. partial search in VAR_DOMAIN -> no match, cached. The third lookup therefore causes the results of the partial search to be cached, thus overriding the result of the full search lookup. During the following command, the reference to "same" triggers a lookup of that symbol again. And since GDB CAN find the result of that lookup in the cache, it returns just that, which is: No match. (wrong!) As a result, we fallback on the symbol table to resolve the lookup. And instead of pushing an OP_VAR_VALUE subexpression for symbol "same", the parser ends up pushing an UNOP_MEMVAL subexpression using the value of the minimal symbol. This is where being on AVR becomes important: addresses on AVR are modular types, and if GDB thinks an address is a data address, it converts it. This is where one notices the fact that the breakpoint was inserted at 0x78, and yet GDB says that the function we stopped at is at 0x0x800068... This patch fixes the problem by making sure we only cache the result of full searches. gdb/ChangeLog: * ada-lang.c (ada_lookup_symbol_list): Only cache the result of full searches.
2012-02-29[Ada] print packed arrays indexed by enumerated typeJoel Brobecker8-5/+129
Consider the following declarations (a packed array indexed by an enumerated type): type Color is (Black, Red, Green, Blue, White); type Full_Table is array (Color) of Boolean; pragma Pack (Full_Table); Full : Full_Table := (False, True, False, True, False); GDB is unable to print the index values correctly. It prints the enumeration's underlying value instead of the enumeration name: (gdb) p full $1 = (0 => false, true, false, true, false) (gdb) p full'first $2 = 0 And yet, it is capable of printing the correct type description: (gdb) ptype full type = array (black .. white) of boolean <packed: 1-bit elements> To get to the real index type, one has to follow the parallel XA type. We already do this for normal arrays. We can do it for this packed array as well. gdb/ChangeLog: * ada-lang.c (constrained_packed_array_type): If there is a parallel XA type, use it to determine the array index type. gdb/testsuite/ChangeLog: * gdb.ada/arrayidx.exp: Adjust expected output for p_one_two_three. * gdb.ada/enum_idx_packed: New testcase.