aboutsummaryrefslogtreecommitdiff
path: root/gdb/ChangeLog
AgeCommit message (Collapse)AuthorFilesLines
2013-10-17Document the get_longjmp_target gdbarch method.Joel Brobecker1-0/+5
gdb/ChangeLog: * gdbarch.sh (get_longjmp_target): Add method documentation. * gdbarch.h: Regenerate.
2013-10-16 * dbxread.c (read_dbx_symtab) <bss_ext_symbol>: Remove unusedTom Tromey1-0/+5
label.
2013-10-16 * gcore.in: Call GDB using the full path to the gcore script.Luis Machado1-0/+5
Error out if the GDB binary is not found.
2013-10-16There were two functions who were calling "sizeof" twice.Sergio Durigan Junior1-0/+6
The first one, dw2_get_real_path from gdb/dwarf2read.c, was actually making use of OBSTACK_CALLOC which already calls "sizeof" for its third argument. The second, download_tracepoint_1 from gdb/gdbserver/tracepoint.c, was explicitly calling "sizeof" inside another "sizeof". This patch fixed both functions. gdb/ChangeLog 2013-10-16 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/16014 * dwarf2read.c (dw2_get_real_path): Remove unnecessary call to sizeof. gdb/gdbserver/ChangeLog 2013-10-16 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/16014 * tracepoint.c (download_tracepoint_1): Remove unnecessary double call to sizeof.
2013-10-16This is a simple bug. target_disable_btrace and target_teardown_btrace,Sergio Durigan Junior1-0/+7
both from gdb/target.c, do a "return" calling another function. But both are marked as void. Despite the fact that the functions being called are void as well, this is wrong. This patch fixes this by calling the functions and then returning in the next line. 2013-10-16 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/16042 * target.c (target_disable_btrace): Fix invalid return value for void function. (target_teardown_btrace): Likewise.
2013-10-14gdb/Yao Qi1-0/+20
* varobj.c (struct varobj): Move most of the fields to varobj.h. (struct varobj_dynamic): New struct. (varobj_get_display_hint) [HAVE_PYTHON]: Adjust. (varobj_has_more): Likewise. (dynamic_varobj_has_child_method): Likewise. (update_dynamic_varobj_children): Likewise. (varobj_get_num_children): Likewise. (varobj_list_children, varobj_pretty_printed_p): Likewise. (install_new_value_visualizer): Likewise. (install_new_value_visualizer, install_new_value): Likewise. (varobj_update, new_variable, free_variable): Likewise. (my_value_of_variable, value_get_print_value): Likewise. (install_visualizer): Change the type of parameter 'var' to 'struct varobjd_dynamic *'. Callers update. * varobj.h (struct varobj): Moved from varobj.c. (struct varobj) <dynamic>: New field.
2013-10-142013-10-13 Sandra Loosemore <sandra@codesourcery.com>Sandra Loosemore1-0/+10
gdb/ * nios2-tdep.c (nios2_reg_names): Use "sstatus" rather than "ba" as the preferred name of r30. * nios2-linux-tdep.c (reg_offsets): Likewise. * features/nios2-cpu.xml: Likewise. * features/nios2-linux.c: Regenerated. * features/nios2.c: Regenerated. * regformats/nios2-linux.dat: Regenerated.
2013-10-13Improve Executable displayed path (PR 15415 regression kind #2)Jan Kratochvil1-0/+8
gdb/ 2013-10-13 Jan Kratochvil <jan.kratochvil@redhat.com> Canonicalize directories for EXEC_FILENAME. * exec.c (exec_file_attach): Use gdb_realpath_keepfile for exec_filename. * utils.c (gdb_realpath_keepfile): New function. * utils.h (gdb_realpath_keepfile): New declaration. gdb/testsuite/ 2013-10-13 Jan Kratochvil <jan.kratochvil@redhat.com> Canonicalize directories for EXEC_FILENAME. * gdb.base/argv0-symlink.exp (kept file symbolic link name for info inferiors): New. (kept directory symbolic link name): Setup kfail. (kept directory symbolic link name for info inferiors): New.
2013-10-11 * Makefile.in (GDBFLAGS): New variable.Doug Evans1-0/+5
(run): New rule.
2013-10-11ChangeLog entries for the previous commit.Joel Brobecker1-0/+5
git-related mistake (added the files to the index, but forgot to commit --amend them before pushing the commit)
2013-10-11New GDB/MI commands to catch Ada exceptionsJoel Brobecker1-0/+24
This patch introduces two new GDB/MI commands implementing the equivalent of the "catch exception" and "catch assert" GDB/CLI commands. gdb/ChangeLog: * breakpoint.h (init_ada_exception_breakpoint): Add parameter "enabled". * breakpoint.c (init_ada_exception_breakpoint): Add parameter "enabled". Set B->ENABLE_STATE accordingly. * ada-lang.h (ada_exception_catchpoint_kind): Move here from ada-lang.c. (create_ada_exception_catchpoint): Add declaration. * ada-lang.c (ada_exception_catchpoint_kind): Move to ada-lang.h. (create_ada_exception_catchpoint): Make non-static. Add new parameter "disabled". Use it in call to init_ada_exception_breakpoint. (catch_ada_exception_command): Add parameter "enabled" in call to create_ada_exception_catchpoint. (catch_assert_command): Likewise. * mi/mi-cmds.h (mi_cmd_catch_assert, mi_cmd_catch_exception): Add declarations. * mi/mi-cmds.c (mi_cmds): Add the "catch-assert" and "catch-exception" commands. * mi/mi-cmd-catch.c: Add #include "ada-lang.h". (mi_cmd_catch_assert, mi_cmd_catch_exception): New functions.
2013-10-11Add "ada_" prefix to enum ada_exception_catchpoint_kindJoel Brobecker1-0/+7
This is in preparation for making that type public, in order to be able to use make create_ada_exception_catchpoint public as well, making it usable from the GDB/MI implementation. gdb/ChangeLog: * ada-lang.c (enum ada_exception_catchpoint_kind): Renames "enum exception_catchpoint_kind". Replace the "ex_" prefix of all its enumerates with "ada_". Update the rest of this file throughout.
2013-10-11Rework a bit Ada exception catchpoint support (in prep for GDB/MI)Joel Brobecker1-0/+19
This patch reworks a bit how the different steps required to insert an Ada exception catchpoints are organized. They used to be: 1. Call a "decode" function which does: 1.a. Parse the command and its arguments 1.b. Create a SAL & OPS from some of those arguments 2. Call create_ada_exception_catchpoint using SAL as well as some of the arguments extracted above. The bulk of the change consists in integrating step (1.b) into step (2) in order to turn create_ada_exception_catchpoint into a function whose arguments are all user-level concepts. This paves the way from a straightforward implementation of the equivalent commands in the GDB/MI interpreter. gdb/ChangeLog: * ada-lang.c (ada_decode_exception_location): Delete. (create_ada_exception_catchpoint): Remove arguments "sal", "addr_string" and "ops". Add argument "ex_kind" instead. Adjust implementation accordingly, calling ada_exception_sal to get the entities it no longer gets passed as arguments. Document the function's arguments. (catch_ada_exception_command): Use catch_ada_exception_command_split instead of ada_decode_exception_location, and update call to create_ada_exception_catchpoint. (catch_ada_assert_command_split): Renames ada_decode_assert_location. Remove parameters "addr_string" and "ops", and now returns void. Adjust implementation accordingly. Update the function documentation. (catch_assert_command): Use catch_ada_assert_command_split instead of ada_decode_assert_location. Update call to create_ada_exception_catchpoint.
2013-10-11Fix dates (wrong month) in the last 2 ChangeLog entries.Joel Brobecker1-2/+2
2013-10-11warn if "source" fails to open the file when from_tty == 0Joel Brobecker1-0/+7
Consider the following example: % gdb -q -batch -ex 'source nonexistant-file' [nothing] One would have at least expected the debugger to warn about not finding the file, similar to the error shown when using a more interactive mode. Eg: (gdb) source nonexistant-file nonexistant-file: No such file or directory. Not raising an error appears to be intentional, presumably in order to prevent this situation from stoping the execution of a GDB script. But the lack of at least a warning makes it harder for a user to diagnose any issue, if the file was expected to be there and readable. This patch adds a warning in that case: % gdb -q -batch -ex 'source nonexistant-file' warning: nonexistant-file: No such file or directory. gdb/ChangeLog: * utils.h (perror_warning_with_name): Add declaration. * utils.c (perror_warning_with_name): New function. * cli/cli-cmds.c (source_script_with_search): Add call to perror_warning_with_name if from_tty is nul. gdb/testsuite/ChangeLog: * gdb.base/source-nofile.gdb: New file. * gdb.base/source.exp: Add two tests verifying the behavior when the "source" command is given a non-existant filename.
2013-10-11new function perror_string extracted out of throw_perror_with_name.Joel Brobecker1-0/+6
The main purpose of this patch is to extract the part of throw_perror_with_name that computes a string providing the system error message combined with a prefix string. This will become useful later on to provide a routine which prints a warning using that perror_string, rather than throwing an error. gdb/ChangeLog: * utils.c (perror_string): New function, extracted out of throw_perror_with_name. (throw_perror_with_name): Rework to use perror_string.
2013-10-11gdb/Yao Qi1-0/+11
* remote.c (discard_pending_stop_replies_in_queue): Update declaration. (struct stop_reply) <rs>: New field. (remove_stop_reply_of_remote_state): New function. (discard_pending_stop_replies_in_queue): Add parameter 'rs'. Callers update. Pass remove_stop_reply_of_remote_state to QUEUE_iterate. (remote_parse_stop_reply): Initialize field 'rs'.
2013-10-10gdb/aarch64-linux-tdep.c: Call linux_init_abi.Will Newton1-0/+5
If we are running on a Linux platform we should call linux_init_abi in order to get all the useful hooks it enables. gdb/ChangeLog: 2013-10-10 Will Newton <will.newton@linaro.org> * aarch64-linux-tdep.c (aarch64_linux_init_abi): Call linux_init_abi.
2013-10-10Rename "set/show remotebaud" command into "set/show serial baud"Joel Brobecker1-0/+14
This patch renames the "set/show remotebaud" commands into "set/show serial baud", and moves its implementation into serial.c. It also moves the "baud_rate" global from top.c to serial.c, where the new code is being added (the alternative was to add an include of target.h). And to facilitate the transition to the new setting name, this patch also preserves the old commands, and marks them as deprecated to alert the users of the change. gdb/ChangeLog: * cli/cli-cmds.c (show_baud_rate): Moved to serial.c as serial_baud_show_cmd. (_initialize_cli_cmds): Delete the code creating the "set/show remotebaud" commands. * serial.c (baud_rate): Move here from top.c. (serial_baud_show_cmd): Move here from cli/cli-cmds.c. (_initialize_serial): Create "set/show serial baud" commands. Add "set/show remotebaud" command aliases. * top.c (baud_rate): Moved to serial.c. * NEWS: Document the new "set/show serial baud" commands, replacing "set/show remotebaud". gdb/doc/ChangeLog: * gdb.texinfo: Replace "set remotebaud" and "show remotebaud" by "set serial baud" and "show serial baud" (resp) throughout.
2013-10-09Stop using errno values around target_xfer interfaces and memory errors.Pedro Alves1-0/+28
target_read_memory & friends build on top of target_read (thus on top of the target_xfer machinery), but turn all errors to EIO, an errno value. I think we'd better convert all these to return a target_xfer_error too, like target_xfer_partial in a previous patch. The patch starts by doing that. (The patch does not add a enum target_xfer_error value for '0'/no error, and likewise does not change the return type of several of these functions to enum target_xfer_error, because different functions return '0' with different semantics.) I audited the tree for memory_error calls, EIO checks, places where GDB hardcodes 'errno = EIO', and also for strerror calls. What I found is that nowadays there's really no need to handle random errno values, other than the EIOs gdb itself hardcodes. No doubt errno values would appear in common code back in the day when target_xfer_memory was the main interface to access memory, but nowadays, any errno value that deprecated interface could return is just absorved by default_xfer_partial: else if (xfered == 0 && errno == 0) /* "deprecated_xfer_memory" uses 0, cross checked against ERRNO as one indication of an error. */ return 0; else return -1; There are two places in the code that check for EIO and print "out of bounds", and defer to strerror for other errors. That's c-lang.c:c_get_string, and valprint.c.:val_print_string. AFAICT, the strerror branch can never be reached nowadays, as the only error possible to get at those points is EIO, given that it's GDB itself that set that errno value (in target_read_memory, etc.). breakpoint.c:insert_bp_location always prints the error val as if an errno, returned by target_insert_breakpoint, with strerr. Now the error here is either always EIO for mem-break.c targets (again hardcoded by the target_read_memory/target_write_memory functions), so this always prints "Input/output error" or similar (depending on host), or, for remote targets (and probably others), this gem: Error accessing memory address 0x80200400: Unknown error -1. This patch makes these 3 places print the exact same error memory_error prints. This changes output, but I think this is better, for making memory error output consistent with other commands, and, it means we have a central place to tweak for memory errors. E.g., this changes: Cannot insert breakpoint 1. Error accessing memory address 0x5fc660: Input/output error. to: Cannot insert breakpoint 1. Cannot access memory at address 0x5fc660 Which I find pretty much acceptable. Surprisingly, only py-prettyprint.exp had a regression, for needing an adjustment. I also grepped the testsuite for the old errors, and found no other hits. Now that errno values aren't used anywhere in any of these memory access related routines, I made memory_error itself take a target_xfer_error instead of an errno. The new target_xfer_memory_error function added recently is no longer necessary, and is thus removed. Tested on x86_64 Fedora 17, native and gdbserver. gdb/ 2013-10-09 Pedro Alves <palves@redhat.com> * breakpoint.c (insert_bp_location): Use memory_error_message to build the memory error string. * c-lang.c: Include "gdbcore.h". (c_get_string): Use memory_error to throw error. (target_xfer_memory_error): Delete. (memory_error_message): New, factored out from target_xfer_memory_error. (memory_error): Change parameter type to target_xfer_error. Rewrite. (read_memory): Use memory_error instead of target_xfer_memory_error. * gdbcore.h: Include "target.h". (memory_error): Change parameter type to target_xfer_error. (memory_error_message): Declare function. * target.c (target_read_memory, target_read_stack) (target_write_memory, target_write_raw_memory): Return TARGET_XFER_E_IO on error. Adjust comments. (get_target_memory): Pass TARGET_XFER_E_IO to memory_error, instead of EIO. * target.h (target_read, target_insert_breakpoint) (target_remove_breakpoint): Adjust comments. * valprint.c (partial_memory_read): Rename parameter, and adjust comment. (val_print_string): Use memory_error_message to build the memory error string. gdb/testsuite/ 2013-10-09 Pedro Alves <palves@redhat.com> * gdb.python/py-prettyprint.exp (run_lang_tests): Adjust expected output.
2013-10-09Minor O_CLOEXEC optimization, "regression" fixJan Kratochvil1-0/+6
gdb/ 2013-10-09 Jan Kratochvil <jan.kratochvil@redhat.com> * common/filestuff.c (gdb_fopen_cloexec): Remove initialization of result variable. Rename variable fopen_e_ever_failed to fopen_e_ever_failed_einval. Retry fopen only for errno EINVAL.
2013-10-09monitor.c: Don't install a deprecated_xfer_memory method.Pedro Alves1-0/+11
This removes another yet instance of a deprecated_xfer_memory user. Tested by building a --enable-targets=all gdb, on x86-64 Fedora 17. gdb/ 2013-10-09 Pedro Alves <palves@redhat.com> * monitor.c (monitor_write_memory, monitor_write_memory_bytes) (monitor_write_memory_longlongs, monitor_write_memory_block): Constify 'myaddr' parameter. (monitor_xfer_memory): Adjust interface as monitor_xfer_partial helper. (monitor_xfer_partial): New function. (init_base_monitor_ops): Don't install a deprecated_xfer_memory hook. Install a to_xfer_partial hook.
2013-10-09bfdTom Tromey1-0/+5
* bfd-in2.h: Rebuild. * opncls.c (bfd_get_alt_debug_link_info): Change type of buildid_len to bfd_size_type. gdb * dwarf2read.c (dwarf2_get_dwz_file): Update for type change in bfd_get_alt_debug_link_info.
2013-10-09New flag OBJF_NOT_FILENAMEJan Kratochvil1-0/+14
gdb/ 2013-10-09 Jan Kratochvil <jan.kratochvil@redhat.com> New flag OBJF_NOT_FILENAME. * auto-load.c (auto_load_objfile_script): Check also OBJF_NOT_FILENAME. * jit.c (jit_object_close_impl): Use OBJF_NOT_FILENAME for allocate_objfile. (jit_bfd_try_read_symtab): Use OBJF_NOT_FILENAME for symbol_file_add_from_bfd. * jv-lang.c (get_dynamics_objfile): Use OBJF_NOT_FILENAME for allocate_objfile. * objfiles.c (allocate_objfile): Assert OBJF_NOT_FILENAME if NAME is NULL. * objfiles.h (OBJF_NOT_FILENAME): New.
2013-10-08fix PR symtab/15597Tom Tromey1-0/+13
This patch fixes gdb PR symtab/15597. The bug is that the .gnu_debugaltlink section includes the build-id of the alt file, but gdb does not use it. This patch fixes the problem by changing gdb to do what it ought to always have done: verify the build id of the file found using the filename in .gnu_debugaltlink; and if that does not match, try to find the correct debug file using the build-id and debug-file-directory. This patch touches BFD. Previously, gdb had its own code for parsing .gnu_debugaltlink; I changed it to use the BFD functions after those were introduced. However, the BFD functions are incorrect -- they assume that .gnu_debugaltlink is formatted like .gnu_debuglink. However, it it is not. Instead, it consists of a file name followed by the build-id -- no alignment, and the build-id is not a CRC. Fixing this properly is a bit of a pain. But, because separate_alt_debug_file_exists just has a FIXME for the build-id case, I did not fix it properly. Instead I introduced a hack. This leaves BFD working just as well as it did before my patch. I'm willing to do something better here but I could use some guidance as to what. It seems that the build-id code in BFD is largely punted on. FWIW gdb is the only user of bfd_get_alt_debug_link_info outside of BFD itself. I moved the build-id logic out of elfread.c and into a new file. This seemed cleanest to me. Writing a test case was a bit of a pain. I added a couple new features to the DWARF assembler to handle this. Built and regtested on x86-64 Fedora 18. * bfd-in2.h: Rebuild. * opncls.c (bfd_get_alt_debug_link_info): Add buildid_len parameter. Change type of buildid_out. Update. (get_alt_debug_link_info_shim): New function. (bfd_follow_gnu_debuglink): Use it. * Makefile.in (SFILES): Add build-id.c. (HFILES_NO_SRCDIR): Add build-id.h. * build-id.c: New file, largely from elfread.c. Modified most functions. * build-id.h: New file. * dwarf2read.c (dwarf2_get_dwz_file): Update for change to bfd_get_alt_debug_link_info. Verify dwz file's build-id. Search for dwz file using build-id. * elfread.c (build_id_bfd_get, build_id_verify) (build_id_to_debug_filename, find_separate_debug_file): Remove. * gdb.dwarf2/dwzbuildid.exp: New file. * lib/dwarf.exp (Dwarf::_section): Add "flags" and "type" parameters. (Dwarf::_defer_output): Change "section" parameter to "section_spec"; update. (Dwarf::gnu_debugaltlink, Dwarf::_note, Dwarf::build_id): New procs.
2013-10-08[Ada] psymbol search failure due to comparison function discrepancyJoel Brobecker1-0/+8
Upon trying to print the value of a variant record, a user noticed the following problem: (gdb) print rt warning: Unknown upper bound, using 1. warning: Unknown upper bound, using 1. $1 = (a => ((a1 => (4), a2 => (4)), (a1 => (8), a2 => (8)))) The expected output is: (gdb) print rt $1 = (a => ((a1 => (4, 4), a2 => (8, 8)), (a1 => (4, 4), a2 => (8, 8)))) The problems comes from the fact that components "a1" and "a2" are defined as arrays whose upper bound is dynamic. To determine the value of that upper bound, GDB relies on the GNAT encoding and searches for the parallel ___U variable. Unfortunately, the search fails while doing a binary search inside the partial symtab of the unit where the array and its bound (and therefore the parallel ___U variable) are defined. It fails because partial symbols are sorted using strcmp_iw_ordered, while Ada symbol lookups are performed using a different comparison function (ada-lang.c:compare_names). The two functions are supposed to be compatible, but a change performed in April 2011 modified strcmp_iw_ordered, introducing case-sensitivity issues. As a result, the two functions would now disagree when passed the following two arguments: string1="common__inner_arr___SIZE_A_UNIT" string2="common__inner_arr__T4s___U" The difference starts at "_SIZE_A_UNIT" vs "T4s___U". So, it's mostly a matter of comparing '_' with 'T'. On the one hand, strcmp_iw_ordered would return -1, while compare_names returned 11. The change that made all the difference is that strcmp_iw_ordered now performs a case-insensitive comparison, and only resorts to case-sentitive comparison if the first comparison finds an equality. This changes everything, because while 'T' (84) and 't' (116) are on opposite sides of '_' (95). This patch aims at restoring the compatibility between the two functions, by adding case-sensitivity handling in the Ada comparison function. gdb/ChangeLog: * ada-lang.c (compare_names_with_case): Renamed from compare_names, adding a new parameter "casing" and its handling. New function documentation. (compare_names): New function, implemented using compare_names_with_case.
2013-10-08Add missing ChangeLog entry.Joel Brobecker1-0/+4
2013-10-07move the demangled_names_hash into the per-BFDTom Tromey1-0/+14
This moves the demangled_names_hash from the objfile into the per-BFD object. This is part of the objfile splitting project. The demangled names hash is independent of the program space. And, it is needed by the symbol tables. Both of these things indicate that it must be pushed into the per-BFD object, which this patch does. Built and regtested on x86-64 Fedora 18. * objfiles.c (free_objfile_per_bfd_storage): Delete the demangled_names_hash. (free_objfile): Don't delete the demangled_names_hash. * objfiles.h (struct objfile_per_bfd_storage) <demangled_names_hash>: New field. (struct objfile) <demangled_names_hash>: Move to objfile_per_bfd_storage. * symfile.c (reread_symbols): Don't delete the demangled_names_hash. * symtab.c (create_demangled_names_hash): Update. (symbol_set_names): Update.
2013-10-07don't share per-BFD data if relocations are neededTom Tromey1-0/+9
Right now we always share per-BFD data across objfiles, if there is a BFD. This works fine. However, we're going to start sharing more data, and sometimes this data will come directly from sections of the BFD. If such a section has SEC_RELOC set, then the data coming from that section will not be truly sharable -- the section will be program-space-dependent, and re-read by gdb for each objfile. This patch disallows per-BFD sharing in this case. This is a bit "heavy" in that we could in theory examine each bit of shared data for suitability. However, that is more complicated, and SEC_RELOC is rare enough that I think we needn't bother. Note that the "no sharing" case is equivalent to "gdb works as it historically did". That is, the sharing is a new(-ish) optimization. Built and regtested on x86-64 Fedora 18. * gdb_bfd.c (struct gdb_bfd_data) <relocation_computed, needs_relocations>: New fields. (gdb_bfd_requires_relocations): New function. * gdb_bfd.h (gdb_bfd_requires_relocations): Declare. * objfiles.c (get_objfile_bfd_data): Disallow sharing if the BFD needs relocations applied.
2013-10-07Thread-specific breakpoints: say "no longer in the thread list" instead of ↵Pedro Alves1-0/+6
"gone". It seems "gone" may confuse people, while that was exactly what it was trying to avoid. Switch to saying "no longer in the thread list", which is really the predicate GDB uses. gdb/ 2013-10-07 Pedro Alves <palves@redhat.com> PR breakpoints/11568 * breakpoint.c (remove_threaded_breakpoints): Say "no longer in the thread list" instead of "gone".
2013-10-07This patch adds a new convenience variable called "$_exitsignal", whichSergio Durigan Junior1-0/+10
will hold the signal number when the inferior terminates due to the uncaught signal. I've made modifications on infrun.c:handle_inferior_event such that $_exitcode gets cleared when the inferior signalled, and vice-versa. This assumption was made because the variables are mutually exclusive, i.e., when the inferior terminates because of an uncaught signal it is not possible for it to return. I have also made modifications such that when a corefile is loaded, $_exitsignal gets set to the uncaught signal that "killed" the inferior, and $_exitcode is cleared. The patch also adds a NEWS entry, documentation bits, and a testcase. The documentation entry explains how to use $_exitsignal and $_exitcode in a GDB script, by making use of the new $_isvoid convenience function. gdb/ 2013-10-06 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS: Mention new convenience variable $_exitsignal. * corelow.c (core_open): Reset exit convenience variables. Set $_exitsignal to the uncaught signal which generated the corefile. * infrun.c (handle_inferior_event): Reset exit convenience variables. Set $_exitsignal for TARGET_WAITKIND_SIGNALLED. (clear_exit_convenience_vars): New function. * inferior.h (clear_exit_convenience_vars): New prototype. gdb/testsuite/ 2013-10-06 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/corefile.exp: Test whether $_exitsignal is set and $_exitcode is void when opening a corefile. * gdb.base/exitsignal.exp: New file. * gdb.base/segv.c: Likewise. * gdb.base/normal.c: Likewise. gdb/doc/ 2013-10-06 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (Convenience Variables): Document $_exitsignal. Update entry for $_exitcode.
2013-10-06gdb/Yao Qi1-0/+4
* varobj.h: Add comments to enum varobj_languages.
2013-10-05 Add support for DWP file format version 2.Doug Evans1-0/+41
* NEWS: Mention support for DWP file format version 2. * dwarf2read.c (dwarf2_section_info): Convert asection field to a union of asection, containing_section. New fields virtual_offset and is_virtual. Change type of readin filed from int to char. (dwo_sections, dwo_file): Tweak comments. (dwp_v2_section_ids): New enum. (dwp_sections): New fields abbrev, info, line, loc, macinfo, macro, str_offsets, types. (virtual_v1_dwo_sections): Renamed from virtual_dwo_sections. All uses updated. (virtual_v2_dwo_sections): New struct. (dwp_hash_table): New fields version, nr_columns. Change type of section_pool field to a union. (dwp_file): New field version. (dwarf2_has_info): Check for virtual sections. (get_containing_section): New function. (get_section_bfd_owner, get_section_bfd_section): Call it. (dwarf2_locate_sections): Update. (dwarf2_section_empty_p): Update. (dwarf2_read_section): Handle virtual sections. (locate_dwz_sections): Update. (create_dwp_hash_table): Document and handle V2 format. (locate_v1_virtual_dwo_sections): Renamed from locate_virtual_dwo_sections and update. All callers updated. (create_dwo_unit_in_dwp_v1): Renamed from create_dwo_in_dwp. Delete arg htab. Rename arg section_index to unit_index. All callers updated. (MAX_NR_V1_DWO_SECTIONS): Renamed from MAX_NR_DWO_SECTIONS. All uses updated. (create_dwp_v2_section, create_dwo_unit_in_dwp_v2): New functions. (lookup_dwo_unit_in_dwp): Add V2 support. (dwarf2_locate_dwo_sections): Update. (dwarf2_locate_common_dwp_sections): Renamed from dwarf2_locate_dwp_sections and update. All callers updated. (dwarf2_locate_v2_dwp_sections): New function. (open_and_init_dwp_file): Add V2 support. (read_str_index): New locals str_section, str_offsets_section.
2013-10-04Clean up ptid.h/ptid.c.Pedro Alves1-0/+13
The ptid_t contructors, accessors and predicates are documented in _three_ places, and each place uses a different wording. E.g, the descriptions in the .c file of the new ptid_lwp_p, ptid_tid_p weren't updated in the final revision like the descriptions in the .h file were. Clearly, switching to a style that has a single central description avoids such issues. Worse, some of the existing descriptions are plain wrong, such as: /* Attempt to find and return an existing ptid with the given PID, LWP, and TID components. If none exists, create a new one and return that. */ ptid_t ptid_build (int pid, long lwp, long tid); The function does nothing that complicated. It's just a simple constructor. So this gets rid of all the unnecessary descriptions, leaving only the ones near the function declarations in the header file, and fixes/clarifies those that remain. gdb/ 2013-10-04 Pedro Alves <palves@redhat.com> * common/ptid.c (null_ptid, minus_one_ptid, ptid_build) (pid_to_ptid, ptid_get_pid, ptid_get_lwp, ptid_get_tid) (ptid_equal, ptid_is_pid, ptid_lwp_p, ptid_tid_p): Replace describing comments with references to ptid.h. * common/ptid.h: Remove intro description of constructors, accessors and predicates. (struct ptid): Reformat. (minus_one_ptid, ptid_build, pid_to_ptid, ptid_get_pid) (ptid_get_lwp, ptid_get_tid, ptid_equal, ptid_is_pid): Change describing comments.
2013-10-04Fix syntax error in aix-thread.c:sync_threadlistsJoel Brobecker1-0/+5
This patch fixes a small typo after the BUILD_THREAD -> ptid_build conversion. gdb/ChangeLog: * aix-thread.c (sync_threadlists): Add missing ')' in call to ptid_build.
2013-10-04Fix build failure in procfs.c after MERGEPID -> ptid_build conversion.Joel Brobecker1-0/+5
gdb/ChangeLog: * procfs.c (procfs_init_inferior): Fix typo causing the build to fail.
2013-10-04Remove unnecessary cast in aix-thread.c:ptrace32.Joel Brobecker1-0/+4
We're casting "addr" into "addr_ptr", but this variable is actually a parameter with that very same type... gdb/ChangeLog: * aix-thread.c (ptrace32): Remove cast to addr_ptr.
2013-10-04Add support for --start option in -exec-run GDB/MI command.Joel Brobecker1-0/+9
gdb/ChangeLog: * mi/mi-main.c (run_one_inferior): Add function description. Make ARG a pointer to an integer whose value determines whether we should "run" or "start" the program. (mi_cmd_exec_run): Add handling of the "--start" option. Reject all other command-line options. * NEWS: Add entry for "-exec-run"'s new "--start" option. gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Program Execution): Document "-exec-run"'s new "--start" option. gdb/testsuite/ChangeLog: * gdb.mi/mi-start.c, gdb.mi/mi-start.exp: New files.
2013-10-04Move pending_event to remote_notif_state.Yao Qi1-0/+29
This patch moves pending_event to remote_notif_state. All pending events are destroyed in remote_notif_state_xfree. However, discard_pending_stop_replies release pending event too, so the pending event of stop notification is released twice, we need some refactor here. We add a new function discard_pending_stop_replies_in_queue which only discard events in stop_reply_queue, and let remote_notif_state_xfree release pending event for all notif_client. After this change, discard_pending_stop_replies is only attached to ifnerior_exit observer, so the INF can't be NULL any more. The NULL checking is removed too. gdb: 2013-10-04 Yao Qi <yao@codesourcery.com> * remote-notif.h (REMOTE_NOTIF_ID): New enum. (struct notif_client) <pending_event>: Moved to struct remote_notif_state. <id>: New field. (struct remote_notif_state) <pending_event>: New field. (notif_event_xfree): Declare. * remote-notif.c (handle_notification): Adjust. (notif_event_xfree): New function. (do_notif_event_xfree): Call notif_event_xfree. (remote_notif_state_xfree): Call notif_event_xfree to free each element in field pending_event. * remote.c (discard_pending_stop_replies): Remove declaration. (discard_pending_stop_replies_in_queue): Declare. (remote_close): Call discard_pending_stop_replies_in_queue instead of discard_pending_stop_replies. (remote_start_remote): Adjust. (stop_reply_xfree): Call notif_event_xfree. (notif_client_stop): Adjust initialization. (remote_notif_remove_all): Rename it to ... (remove_stop_reply_for_inferior): ... this. Update comments. Don't check INF is NULL. (discard_pending_stop_replies): Return early if notif_state is NULL. Adjust. Don't check INF is NULL. (remote_notif_get_pending_events): Adjust. (discard_pending_stop_replies_in_queue): New function. (remote_wait_ns): Likewise.
2013-10-04Move notif_queue and remote_async_get_pending_events_token to remote_stateYao Qi1-0/+31
This patch also removes notif_xfree, and don't pass it QUEUE_alloc, because we don't have to free notif_client when the remote_notif_state is freed. gdb: 2013-10-04 Yao Qi <yao@codesourcery.com> * remote-notif.c (DECLARE_QUEUE_P): Remove. (notif_queue): Remove. (remote_notif_process): Add one parameter 'notif_queue'. Update comments. Callers update. (remote_async_get_pending_events_token): Remove. (remote_notif_register_async_event_handler): Remove. (remote_notif_unregister_async_event_handler): Remove. (handle_notification): Add parameter 'notif_queue'. Update comments. Callers update. (notif_xfree): Remove. (remote_notif_state_allocate): New function. (remote_notif_state_xfree): New function. (_initialize_notif): Remove code to allocate queue. * remote-notif.h (DECLARE_QUEUE_P): Moved from remote-notif.c. (struct remote_notif_state): New. (handle_notification): Update declaration. (remote_notif_process): Likewise. (remote_notif_register_async_event_handler): Remove. (remote_notif_unregister_async_event_handler): Remove. (remote_notif_state_allocate): Declare. (remote_notif_state_xfree): Declare. * remote.c (struct remote_state) <notif_state>: New field. (remote_close): Don't call remote_notif_unregister_async_event_handler. Call remote_notif_state_xfree. (remote_open_1): Don't call remote_notif_register_async_event_handler. Call remote_notif_state_allocate.
2013-10-04Fix FIXME: xstrdup should not be hereYao Qi1-0/+13
Hi, This FIXME goes into my eyes, when I am about to modify something here, /* Name is allocated by name_of_child. */ /* FIXME: xstrdup should not be here. */ This FIXME was introduced in the python pretty-pretter patches. Python pretty-printing [6/6] https://sourceware.org/ml/gdb-patches/2009-05/msg00467.html create_child_with_value is called in two paths, 1. varobj_list_children -> create_child -> create_child_with_value, 2. install_dynamic_child -> install_dynamic_child -> varobj_add_child -> create_child_with_value In path #1, 'name' is allocated by name_of_child, as the original comment said, we don't have to duplicate NAME in create_child_with_value. In path #2, 'name' is got from PyArg_ParseTuple, and we have to duplicate NAME. This patch removes the call to xstrdup in create_child_with_value and call xstrudp in update_dynamic_varobj_children (path #2). gdb: 2013-10-04 Yao Qi <yao@codesourcery.com> * varobj.c (create_child_with_value): Remove 'const' from the type of parameter 'name'. (varobj_add_child): Likewise. (install_dynamic_child): Remove 'const' from the type of parameter 'name'. (varobj_add_child): Likewise. (create_child_with_value): Likewise. Update comments. Don't duplicate 'name'. (update_dynamic_varobj_children): Duplicate 'name' and pass it to install_dynamic_child.
2013-10-032013-10-03 Phil Muldoon <pmuldoon@redhat.com>Phil Muldoon1-0/+8
* python/py-value.c (convert_value_from_python): Move PyInt_Check conversion logic to occur after PyLong_Check. Comment on order change significance. * python/py-arch.c (archpy_disassemble): Comment on order of conversion for integers and longs.
2013-10-03Always run the PTRACE_O_TRACESYSGOOD tests even if PTRACE_O_TRACEFORK is not ↵Pedro Alves1-0/+10
supported. If enabling PTRACE_O_TRACEFORK fails, we never test for PTRACE_O_TRACESYSGOOD support. Before PTRACE_O_TRACESYSGOOD is checked, we have: /* First, set the PTRACE_O_TRACEFORK option. If this fails, we know for sure that it is not supported. */ ret = ptrace (PTRACE_SETOPTIONS, child_pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) PTRACE_O_TRACEFORK); if (ret != 0) { ret = ptrace (PTRACE_KILL, child_pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0); if (ret != 0) { warning (_("linux_check_ptrace_features: failed to kill child")); return; } ret = my_waitpid (child_pid, &status, 0); if (ret != child_pid) warning (_("linux_check_ptrace_features: failed " "to wait for killed child")); else if (!WIFSIGNALED (status)) warning (_("linux_check_ptrace_features: unexpected " "wait status 0x%x from killed child"), status); return; <<<<<<<<<<<<<<<<< } Note that early return. If PTRACE_O_TRACEFORK isn't supported, we're not checking PTRACE_O_TRACESYSGOOD. This didn't use to be a problem before the unification of this whole detection business in linux-ptrace.c. Before, the sysgood detection was completely separate: static void linux_test_for_tracesysgood (int original_pid) { int ret; sigset_t prev_mask; /* We don't want those ptrace calls to be interrupted. */ block_child_signals (&prev_mask); linux_supports_tracesysgood_flag = 0; ret = ptrace (PTRACE_SETOPTIONS, original_pid, 0, PTRACE_O_TRACESYSGOOD); if (ret != 0) goto out; linux_supports_tracesysgood_flag = 1; out: restore_child_signals_mask (&prev_mask); } So we need to get back the decoupling somehow. I think it's cleaner to split the seperate feature detections to separate functions. This patch does that. The new functions are named for their counterparts that existed before this code was moved to linux-ptrace.c. Note I've used forward declarations for the new functions to make the patch clearer, as otherwise the patch would look like I'd be adding a bunch of new code. A reorder can be done in a follow up patch. Tested on x86_64 Fedora 17. gdb/ 2013-10-03 Pedro Alves <palves@redhat.com> * common/linux-ptrace.c (linux_check_ptrace_features): Factor out the PTRACE_O_TRACESYSGOOD and PTRACE_O_TRACEFORK to separate functions. Always test for PTRACE_O_TRACESYSGOOD even if PTRACE_O_TRACEFORK is not supported. (linux_test_for_tracesysgood): New function. (linux_test_for_tracefork): New function, factored out from linux_check_ptrace_features, and also don't kill child_pid here.
2013-10-032013-10-03 Tristan Gingold <gingold@adacore.com>Tristan Gingold1-0/+9
* i386-darwin-nat.c (i386_darwin_dr_set): Fix argument type. Remove verbose error reporting. Use detected state to thread_set_state call. (i386_darwin_dr_get): Fix return type. Remove verbose error report. Remove trailing spaces.
2013-10-02Print registers not saved in the frame as "<not saved>" instead of ↵Pedro Alves1-0/+30
"<optimized out>". Currently, in some scenarios, GDB prints <optimized out> when printing outer frame registers. An <optimized out> register is a confusing concept. What this really means is that the register is call-clobbered, or IOW, not saved by the callee. This patch makes GDB say that instead. Before patch: (gdb) p/x $rax $1 = <optimized out> (gdb) info registers rax rax <optimized out> After patch: (gdb) p/x $rax $1 = <not saved> (gdb) info registers rax rax <not saved> However, if for some reason the debug info describes a variable as being in such a register (**), we still want to print <optimized out> when printing the variable. IOW, <not saved> is reserved for inspecting registers at the machine level. The patch uses lval_register+optimized_out to encode the not saved registers, and makes it so that optimized out variables always end up in !lval_register values. ** See <https://sourceware.org/ml/gdb-patches/2012-08/msg00787.html>. Current/recent enough GCC doesn't mark variables/arguments as being in call-clobbered registers in the ranges corresponding to function calls, while older GCCs did. Newer GCCs will just not say where the variable is, so GDB will end up realizing the variable is optimized out. frame_unwind_got_optimized creates not_lval optimized out registers, so by default, in most cases, we'll see <optimized out>. value_of_register is the function eval.c uses for evaluating OP_REGISTER (again, $pc, etc.), and related bits. It isn't used for anything else. This function makes sure to return lval_register values. The patch makes "info registers" and the MI equivalent use it too. I think it just makes a lot of sense, as this makes it so that when printing machine registers ($pc, etc.), we go through a central function. We're likely to need a different encoding at some point, if/when we support partially saved registers. Even then, I think value_of_register will still be the spot to tag the intention to print machine register values differently. value_from_register however may also return optimized out lval_register values, so at a couple places where we're computing a variable's location from a dwarf expression, we convert the resulting value away from lval_register to a regular optimized out value. Tested on x86_64 Fedora 17 gdb/ 2013-10-02 Pedro Alves <palves@redhat.com> * cp-valprint.c (cp_print_value_fields): Adjust calls to val_print_optimized_out. * jv-valprint.c (java_print_value_fields): Likewise. * p-valprint.c (pascal_object_print_value_fields): Likewise. * dwarf2loc.c (dwarf2_evaluate_loc_desc_full) <DWARF_VALUE_REGISTER>: If the register was not saved, return a new optimized out value. * findvar.c (address_from_register): Likewise. * frame.c (put_frame_register): Tweak error string to say the register was not saved, rather than optimized out. * infcmd.c (default_print_one_register_info): Adjust call to val_print_optimized_out. Use value_of_register instead of get_frame_register_value. * mi/mi-main.c (output_register): Use value_of_register instead of get_frame_register_value. * valprint.c (valprint_check_validity): Likewise. (val_print_optimized_out): New value parameter. If the value is lval_register, print <not saved> instead. (value_check_printable, val_print_scalar_formatted): Adjust calls to val_print_optimized_out. * valprint.h (val_print_optimized_out): New value parameter. * value.c (struct value) <optimized_out>: Extend comment. (error_value_optimized_out): New function. (require_not_optimized_out): Use it. Use a different string for lval_register values. * value.h (error_value_optimized_out): New declaration. * NEWS: Mention <not saved>. gdb/testsuite/ 2013-10-02 Pedro Alves <palves@redhat.com> * gdb.dwarf2/dw2-reg-undefined.exp <pattern_rax_rbx_rcx_print, pattern_rax_rbx_rcx_info>: Set to "<not saved>". * gdb.mi/mi-reg-undefined.exp (opt_out_pattern): Delete. (not_saved_pattern): New. Replace use of the former with the latter. gdb/doc/ 2013-10-02 Pedro Alves <palves@redhat.com> * gdb.texinfo (Registers): Expand description of saved registers in frames. Explain <not saved>.
2013-10-02Use FILENAME_CMP to compare filenames in compare_search_syms.Joel Brobecker1-0/+5
gdb/ChangeLog: * symtab.c (compare_search_syms): Use FILENAME_CMP instead of strcmp to compare two symtab filenames.
2013-10-02Delete search_symbols_equal (use compare_search_syms instead).Joel Brobecker1-0/+7
This avoids duplicating the logic comparing two symbol_search objects (in search_symbols_equal and compare_search_syms). gdb/ChangeLog: * symtab.c (search_symbols_equal): Delete. (sort_search_symbols_remove_dups): Replace call to search_symbols_equal by call to compare_search_syms, adjusting as necessary.
2013-10-022013-10-02 Phil Muldoon <pmuldoon@redhat.com>Phil Muldoon1-0/+6
PR python/15579 * python/python.c: Document gdb.execute command in Python help.
2013-10-02 2013-10-02 Phil Muldoon <pmuldoon@redhat.com>Phil Muldoon1-0/+5
* python/py-frame.c (frame_info_to_frame_object): Use gdbpy_convert_exception. Clean up Python object on failure.
2013-10-022013-10-02 Phil Muldoon <pmuldoon@redhat.com>Phil Muldoon1-0/+6
* python/lib/gdb/command/frame_filters.py (InfoFrameFilter.list_frame_filters): Retrieve exception manually. (ShowFrameFilterPriority.invoke): Ditto.