summaryrefslogtreecommitdiff
path: root/gdb/doc/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
* Extend "set cwd" to work on gdbserverSergio Durigan Junior2017-10-041-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the "natural" extension necessary for the "set cwd" command (and the whole "set the inferior's cwd" logic) to work on gdbserver. The idea here is to have a new remote packet, QSetWorkingDir (name adopted from LLDB's extension to the RSP, as can be seen at <https://raw.githubusercontent.com/llvm-mirror/lldb/master/docs/lldb-gdb-remote.txt>), which sends an hex-encoded string representing the working directory that the remote inferior will use. There is a slight difference from the packet proposed by LLDB: GDB's version will accept empty arguments, meaning that the user wants to clear the previously set working directory for the inferior (i.e., "set cwd" without arguments on GDB). For UNIX-like targets this feature is already implemented on nat/fork-inferior.c, and all gdbserver has to do is to basically implement "set_inferior_cwd" and call it whenever such packet arrives. For other targets, like Windows, it is possible to use the existing "get_inferior_cwd" function and do the necessary steps to make sure that the inferior will use the specified working directory. Aside from that, the patch consists basically of updates to the testcase (making it available on remote targets) and the documentation. No regressions found. gdb/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS (Changes since GDB 8.0): Add entry about new 'set-cwd-on-gdbserver' feature. (New remote packets): Add entry for QSetWorkingDir. * common/common-inferior.h (set_inferior_cwd): New prototype. * infcmd.c (set_inferior_cwd): Remove "static". (show_cwd_command): Expand text to include remote debugging. * remote.c: Add PACKET_QSetWorkingDir. (remote_protocol_features) <QSetWorkingDir>: New entry for PACKET_QSetWorkingDir. (extended_remote_set_inferior_cwd): New function. (extended_remote_create_inferior): Call "extended_remote_set_inferior_cwd". (_initialize_remote): Call "add_packet_config_cmd" for QSetWorkingDir. gdb/gdbserver/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * inferiors.c (set_inferior_cwd): New function. * server.c (handle_general_set): Handle QSetWorkingDir packet. (handle_query): Inform that QSetWorkingDir is supported. * win32-low.c (create_process): Pass the inferior's cwd to CreateProcess. gdb/testsuite/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/set-cwd.exp: Make it available on native-extended-gdbserver. gdb/doc/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (Starting your Program) <The working directory.>: Mention remote debugging. (Working Directory) <Your Program's Working Directory>: Likewise. (Connecting) <Remote Packet>: Add "set-working-dir" and "QSetWorkingDir" to the table. (Remote Protocol) <QSetWorkingDir>: New item, explaining the packet.
* Implement "set cwd" command on GDBSergio Durigan Junior2017-10-041-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds new "set/show cwd" commands, which are used to set/show the current working directory of the inferior that will be started. The idea here is that "set cwd" will become the de facto way of setting the inferior's cwd. Currently, the user can use "cd" for that, but there are side effects: with "cd", GDB also switches to another directory, and that can impact the loading of scripts and other files. With "set cwd", we separate the logic into a new command. To maintain backward compatibility, if the user issues a "cd" command but doesn't use "set cwd", then the inferior's cwd will still be changed according to what the user specified. However, "set cwd" has precedence over "cd", so it can always be used to override it. "set cwd" works in the following way: - If the user sets the inferior's cwd by using "set cwd", then this directory is saved into current_inferior ()->cwd and is used when the inferior is started (see below). - If the user doesn't set the inferior's cwd by using "set cwd", but rather use the "cd" command as before, then this directory is inherited by the inferior because GDB will have chdir'd into it. On Unix-like hosts, the way the directory is changed before the inferior execution is by expanding the user set directory before the fork, and then "chdir" after the call to fork/vfork on "fork_inferior", but before the actual execution. On Windows, the inferior cwd set by the user is passed directly to the CreateProcess call, which takes care of the actual chdir for us. This way, we'll make sure that GDB's cwd is not affected by the user set cwd. gdb/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS (New commands): Mention "set/show cwd". * cli/cli-cmds.c (_initialize_cli_cmds): Mention "set cwd" on "cd" command's help text. * common/common-inferior.h (get_inferior_cwd): New prototype. * infcmd.c (inferior_cwd_scratch): New global variable. (set_inferior_cwd): New function. (get_inferior_cwd): Likewise. (set_cwd_command): Likewise. (show_cwd_command): Likewise. (_initialize_infcmd): Add "set/show cwd" commands. * inferior.h (class inferior) <cwd>: New field. * nat/fork-inferior.c: Include "gdb_tilde_expand.h". (fork_inferior): Change inferior's cwd before its execution. * windows-nat.c (windows_create_inferior): Pass inferior's cwd to CreateProcess. gdb/gdbserver/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * inferiors.c (current_inferior_cwd): New global variable. (get_inferior_cwd): New function. * inferiors.h (struct process_info) <cwd>: New field. gdb/doc/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (Starting your Program) <The working directory.>: Mention new "set cwd" command. (Working Directory) <Your Program's Working Directory>: Rephrase to explain that "set cwd" exists and is the default way to change the inferior's cwd. gdb/testsuite/ChangeLog: 2017-10-04 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/set-cwd.c: New file. * gdb.base/set-cwd.exp: Likewise.
* S390: Document guarded-storage register supportAndreas Arnez2017-09-251-0/+5
| | | | | | | | | | | | | | This documents the newly added support for guarded-storage registers on IBM z. gdb/ChangeLog: * NEWS: Advertise support for guarded-storage registers on IBM z. gdb/doc/ChangeLog: * gdb.texinfo (S/390 and System z Features): Document the new features org.gnu.gdb.s390.gs and org.gnu.gdb.s390.gsbc.
* Documentation for qXfer:threads:read handle attributeKevin Buettner2017-09-211-0/+5
| | | | | | | gdb/doc/ChangeLog: * gdb.texinfo (qXfer:threads:read): Add documentation for handle attribute.
* Documentation for Inferior.thread_from_thread_handleKevin Buettner2017-09-211-0/+5
| | | | | | | gdb/doc/ChangeLog: * python.texi (Inferiors In Python): Add description for method Inferior.thread_from_thread_handle.
* Add a 'starti' command.John Baldwin2017-09-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This works like 'start' but it stops at the first instruction rather than the first line in main(). This is useful if one wants to single step through runtime linker startup. While here, introduce a RUN_ARGS_HELP macro for shared help text between run, start, and starti. This includes expanding the help for start and starti to include details from run's help text. gdb/ChangeLog: * NEWS (Changes since GDB 8.0): Add starti. * infcmd.c (enum run_break): New. (run_command_1): Queue pending event for RUN_STOP_AT_FIRST_INSN case. (run_command): Use enum run_how. (start_command): Likewise. (starti_command): New function. (RUN_ARGS_HELP): New macro. (_initialize_infcmd): Use RUN_ARGS_HELP for run and start commands. Add starti command. gdb/doc/ChangeLog: * gdb.texinfo (Starting your Program): Add description of starti command. Mention starti command as an alternative for debugging the elaboration phase. gdb/testsuite/ChangeLog: * gdb.base/starti.c: New file. * gdb.base/starti.exp: New file. * lib/gdb.exp (gdb_starti_cmd): New procedure.
* Add selftests run filteringSimon Marchi2017-09-161-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the growing number of selftests, I think it would be useful to be able to run only a subset of the tests. This patch associates a name to each registered selftest. It then allows doing something like: (gdb) maintenance selftest aarch64 Running self-tests. Running selftest aarch64-analyze-prologue. Running selftest aarch64-process-record. Ran 2 unit tests, 0 failed or with gdbserver: ./gdbserver --selftest=aarch64 In both cases, only the tests that contain "aarch64" in their name are ran. To help validate that the tests you want to run were actually ran, it also prints a message with the test name before running each test. Right now, all the arch-dependent tests are registered as a single test of the selftests. To be able to filter those too, I made them "first-class citizen" selftests. The selftest type is an interface, with different implementations for "simple selftests" and "arch selftests". The run_tests function simply iterates on that an invokes operator() on each test. I changed the tests data structure from a vector to a map, because - it allows iterating in a stable (alphabetical) order - it allows to easily verify if a test with a given name has been registered, to avoid duplicates There's also a new command "maintenance info selftests" that lists the registered selftests. gdb/ChangeLog: * common/selftest.h (selftest): New struct/interface. (register_test): Add name parameter, add new overload. (run_tests): Add filter parameter. (for_each_selftest_ftype): New typedef. (for_each_selftest): New declaration. * common/selftest.c (tests): Change type to map<string, unique_ptr<selftest>>. (simple_selftest): New struct. (register_test): New function. (register_test): Add name parameter and use it. (run_tests): Add filter parameter and use it. Add prints. Adjust to vector -> map change. * aarch64-tdep.c (_initialize_aarch64_tdep): Add names when registering selftests. * arm-tdep.c (_initialize_arm_tdep): Likewise. * disasm-selftests.c (_initialize_disasm_selftests): Likewise. * dwarf2-frame.c (_initialize_dwarf2_frame): Likewise. * dwarf2loc.c (_initialize_dwarf2loc): Likewise. * findvar.c (_initialize_findvar): Likewise. * gdbarch-selftests.c (_initialize_gdbarch_selftests): Likewise. * maint.c (maintenance_selftest): Update call to run_tests. (maintenance_info_selftests): New function. (_initialize_maint_cmds): Register "maintenance info selftests" command. Update "maintenance selftest" doc. * regcache.c (_initialize_regcache): Add names when registering selftests. * rust-exp.y (_initialize_rust_exp): Likewise. * selftest-arch.c (gdbarch_selftest): New struct. (gdbarch_tests): Remove. (register_test_foreach_arch): Add name parameter. Call register_test. (tests_with_arch): Remove, move most content to gdbarch_selftest::operator(). (_initialize_selftests_foreach_arch): Remove. * selftest-arch.h (register_test_foreach_arch): Add name parameter. (run_tests_with_arch): New declaration. * utils-selftests.c (_initialize_utils_selftests): Add names when registering selftests. * utils.c (_initialize_utils): Likewise. * unittests/array-view-selftests.c (_initialize_array_view_selftests): Likewise. * unittests/environ-selftests.c (_initialize_environ_selftests): Likewise. * unittests/function-view-selftests.c (_initialize_function_view_selftests): Likewise. * unittests/offset-type-selftests.c (_initialize_offset_type_selftests): Likewise. * unittests/optional-selftests.c (_initialize_optional_selftests): Likewise. * unittests/scoped_restore-selftests.c (_initialize_scoped_restore_selftests): Likewise. * NEWS: Document "maintenance selftest" and "maint info selftests". gdb/gdbserver/ChangeLog: * server.c (captured_main): Accept argument for --selftest. Update run_tests call. * linux-x86-tdesc-selftest.c (initialize_low_tdesc): Add names when registering selftests. gdb/doc/ChangeLog: * gdb.texinfo (Maintenance Commands): Document filter parameter of "maint selftest". Document "maint info selftests" command.
* Add new_inferior, inferior_deleted, and new_thread eventsTom Tromey2017-09-111-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a few new events to gdb's Python layer: new_inferior, inferior_deleted, and new_thread. I wanted to be able to add a combined inferior/thread display window to my GUI, and I needed a few events to make this work. This is PR python/15622. ChangeLog 2017-09-11 Tom Tromey <tom@tromey.com> PR python/15622: * NEWS: Add entry. * python/python.c (do_start_initialization): Initialize new event types. * python/python-internal.h (gdbpy_initialize_new_inferior_event) (gdbpy_initialize_inferior_deleted_event) (gdbpy_initialize_new_thread_event): Declare. * python/py-threadevent.c (create_thread_event_object): Add option "thread" parameter. * python/py-inferior.c (new_thread_event_object_type) (new_inferior_event_object_type) (inferior_deleted_event_object_type): Declare. (python_new_inferior, python_inferior_deleted): New functions. (add_thread_object): Emit new_thread event. (gdbpy_initialize_inferior): Attach new functions to corresponding observers. (new_thread, new_inferior, inferior_deleted): Define new event types. * python/py-evts.c (gdbpy_initialize_py_events): Add new registries. * python/py-events.h (events_object) <new_inferior, inferior_deleted, new_thread>: New fields. * python/py-event.h (create_thread_event_breakpoint): Add optional "thread" parameter. doc/ChangeLog 2017-09-11 Tom Tromey <tom@tromey.com> * python.texi (Events In Python): Document new events. testsuite/ChangeLog 2017-09-11 Tom Tromey <tom@tromey.com> * gdb.python/py-infthread.exp: Add tests for new_thread event. * gdb.python/py-inferior.exp: Add tests for new inferior events.
* Document "no debug info debugging" improvementsPedro Alves2017-09-041-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Here's the documentation bits for all the improvements done in previous commits. Note that the original "weak alias functions" paragraph ends up disappearing, because this patch, which I'm considering kind of part of this series, makes the alias case Just Work: https://sourceware.org/ml/gdb-patches/2017-07/msg00018.html gdb/ChangeLog: 2017-09-04 Pedro Alves <palves@redhat.com> * NEWS (Safer support for debugging with no debug info): New. gdb/doc/ChangeLog: 2017-09-04 Pedro Alves <palves@redhat.com> * gdb.texinfo (Variables) <Program Variables>: Document inspecting no-debug-info variables. (Symbols) <Examining the Symbol Table>: Document inspecting no-debug-info types. (Calling) <Calling functions with no debug info>: New subsection, documenting calling no-debug-info functions. (Non-debug DLL Symbols) <Working with Minimal Symbols>: Update.
* Implement the ability to set/unset environment variables to GDBserver when ↵Sergio Durigan Junior2017-08-311-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | starting the inferior This patch implements the ability to set/unset environment variables on the remote target, mimicking what GDB already offers to the user. There are two features present here: user-set and user-unset environment variables. User-set environment variables are only the variables that are explicitly set by the user, using the 'set environment' command. This means that variables that were already present in the environment when starting GDB/GDBserver are not transmitted/considered by this feature. User-unset environment variables are variables that are explicitly unset by the user, using the 'unset environment' command. The idea behind this patch is to store user-set and user-unset environment variables in two separate sets, both part of gdb_environ. Then, when extended_remote_create_inferior is preparing to start the inferior, it will iterate over the two sets and set/unset variables accordingly. Three new packets are introduced: - QEnvironmentHexEncoded, which is used to set environment variables, and contains an hex-encoded string in the format "VAR=VALUE" (VALUE can be empty if the user set a variable with a null value, by doing 'set environment VAR='). - QEnvironmentUnset, which is used to unset environment variables, and contains an hex-encoded string in the format "VAR". - QEnvironmentReset, which is always the first packet to be transmitted, and is used to reset the environment, i.e., discard any changes made by the user on previous runs. The QEnvironmentHexEncoded packet is inspired on LLDB's extensions to the RSP. Details about it can be seen here: <https://raw.githubusercontent.com/llvm-mirror/lldb/master/docs/lldb-gdb-remote.txt> I decided not to implement the QEnvironment packet because it is considered deprecated by LLDB. This packet, on LLDB, serves the same purpose of QEnvironmentHexEncoded, but sends the information using a plain text, non-hex-encoded string. The other two packets are new. This patch also includes updates to the documentation, testsuite, and unit tests, without introducing regressions. gdb/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS (Changes since GDB 8.0): Add entry mentioning new support for setting/unsetting environment variables on the remote target. (New remote packets): Add entries for QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset. * common/environ.c (gdb_environ::operator=): Extend method to handle m_user_set_env_list and m_user_unset_env_list. (gdb_environ::clear): Likewise. (match_var_in_string): Change type of first parameter from 'char *' to 'const char *'. (gdb_environ::set): Extend method to handle m_user_set_env_list and m_user_unset_env_list. (gdb_environ::unset): Likewise. (gdb_environ::clear_user_set_env): New method. (gdb_environ::user_set_envp): Likewise. (gdb_environ::user_unset_envp): Likewise. * common/environ.h (gdb_environ): Handle m_user_set_env_list and m_user_unset_env_list on move constructor/assignment. (unset): Add new default parameter 'update_unset_list = true'. (clear_user_set_env): New method. (user_set_envp): Likewise. (user_unset_envp): Likewise. (m_user_set_env_list): New std::set. (m_user_unset_env_list): Likewise. * common/rsp-low.c (hex2str): New function. (bin2hex): New overload for bin2hex function. * common/rsp-low.c (hex2str): New prototype. (str2hex): New overload prototype. * remote.c: Include "environ.h". Add QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset. (remote_protocol_features): Add QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset packets. (send_environment_packet): New function. (extended_remote_environment_support): Likewise. (extended_remote_create_inferior): Call extended_remote_environment_support. (_initialize_remote): Add QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset packet configs. * unittests/environ-selftests.c (gdb_selftest_env_var): New variable. (test_vector_initialization): New function. (test_init_from_host_environ): Likewise. (test_reinit_from_host_environ): Likewise. (test_set_A_unset_B_unset_A_cannot_find_A_can_find_B): Likewise. (test_unset_set_empty_vector): Likewise. (test_vector_clear): Likewise. (test_std_move): Likewise. (test_move_constructor): (test_self_move): Likewise. (test_set_unset_reset): Likewise. (run_tests): Rewrite in terms of the functions above. gdb/gdbserver/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * server.c (handle_general_set): Handle QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset packets. (handle_query): Inform remote that QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset are supported. gdb/doc/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (set environment): Add @anchor. Explain that environment variables set by the user are sent to GDBserver. (unset environment): Likewise, but for unsetting variables. (Connecting) <Remote Packet>: Add "environment-hex-encoded", "QEnvironmentHexEncoded", "environment-unset", "QEnvironmentUnset", "environment-reset" and "QEnvironmentReset" to the table. (Remote Protocol) <QEnvironmentHexEncoded, QEnvironmentUnset, QEnvironmentReset>: New item, explaining the packet. gdb/testsuite/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/share-env-with-gdbserver.c: New file. * gdb.base/share-env-with-gdbserver.exp: Likewise.
* compile: Add 'set compile-gcc'Jan Kratochvil2017-08-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed in How to use compile & execute function in GDB https://sourceware.org/ml/gdb/2015-04/msg00026.html GDB currently searches for compilers on /usr/bin/ARCH-OS-gcc and chooses a match from there. However, it is not currently possible for the user to override which compiler to use. This is what this patch implements. It is also a sync between GCC's and GDB's interfaces. gdb/ChangeLog 2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com> * NEWS (Changes since GDB 7.9): Add set compile-gcc and show compile-gcc. * compile/compile.c (compile_gcc, show_compile_gcc): New. (compile_to_object): Implement compile_gcc. (_initialize_compile): Install "set compile-gcc". Initialize compile_gcc. gdb/doc/ChangeLog 2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.texinfo (Compiling and Injecting Code): Add to subsection "Compiler search for the compile command" descriptions of set compile-gcc and show compile-gcc. include/ChangeLog 2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com> * gcc-interface.h (enum gcc_base_api_version): Update comment for GCC_FE_VERSION_1. (struct gcc_base_vtable): Rename set_arguments to set_arguments_v0. Add set_arguments, set_triplet_regexp and set_driver_filename.
* gdb: SPARC ADI supportWeimin Pan2017-08-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The M7 processor supports an Application Data Integrity (ADI) feature that detects invalid data accesses. When software allocates data, it chooses a 4-bit version number, sets the version in the upper 4 bits of the 64-bit pointer to that data, and stores the 4-bit version in every cacheline of the object. Hardware saves the latter in spare bits in the cache and memory hierarchy. On each load and store, the processor compares the upper 4 VA (virtual address) bits to the cacheline's version. If there is a mismatch, the processor generates a version mismatch trap which can be either precise or disrupting. The trap is an error condition which the kernel delivers to the process as a SIGSEGV signal. The upper 4 bits of the VA represent a version and are not part of the true address. The processor clears these bits and sign extends bit 59 to generate the true address. Note that 32-bit applications cannot use ADI. This patch adds ADI support in gdb which allows the user to examine current version tags and assign new version tags in the program. It also catches and reports precise or disrupting memory corruption traps. gdb/ChangeLog: 2017-08-07 Weimin Pan <weimin.pan@oracle.com> * sparc64-tdep.h: (adi_normalize_address): New export. * sparc-nat.h: (open_adi_tag_fd): New export. * sparc64-linux-nat.c: (open_adi_tag_fd): New function. * sparc64-linux-tdep.c: (SEGV_ACCADI, SEGV_ADIDERR, SEGV_ADIPERR) New defines. (sparc64_linux_handle_segmentation_fault): New function. (sparc64_linux_init_abi): Register sparc64_linux_handle_segmentation_fault * sparc64-tdep.c: Include cli-utils.h,gdbcmd.h,auxv.h. (sparc64_addr_bits_remove): New function. (sparc64_init_abi): Register sparc64_addr_bits_remove. (MAX_PROC_NAME_SIZE): New macro. (AT_ADI_BLKSZ, AT_ADI_NBITS, AT_ADI_UEONADI) New defines. (sparc64adilist): New variable. (adi_proc_list): New variable. (find_adi_info): New function. (add_adi_info): New function. (get_adi_info_proc): New function. (get_adi_info): New function. (info_adi_command): New function. (read_maps_entry): New function. (adi_available): New function. (adi_normalize_address): New function. (adi_align_address): New function. (adi_convert_byte_count): New function. (adi_tag_fd): New function. (adi_is_addr_mapped): New function. (adi_read_versions): New function. (adi_write_versions): New function. (adi_print_versions): New function. (do_examine): New function. (do_assign): New function. (adi_examine_command): New function. (adi_assign_command): New function. (_initialize_sparc64_adi_tdep): New function. gdb/doc/ChangeLog: 2017-08-07 Weimin Pan <weimin.pan@oracle.com> * gdb.texinfo (Architectures): Add new Sparc64 section to document ADI support. * NEWS: Add "adi examine" and "adi assign" commands. gdb/testsuite/ChangeLog: 2017-08-07 Weimin Pan <weimin.pan@oracle.com> * gdb.arch/sparc64-adi.exp: New file. * gdb.arch/sparc64-adi.c: New file.
* GDBserver self testsYao Qi2017-08-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch uses GDB self test in GDBserver. The self tests are run if GDBserver is started with option --selftest. gdb: 2017-08-18 Yao Qi <yao.qi@linaro.org> * NEWS: Mention GDBserver's new option "--selftest". * Makefile.in (SFILES): Remove selftest.c, add common/selftest.c. * selftest.c: Move it to common/selftest.c. * selftest.h: Move it to common/selftest.h. * selftest-arch.c (reset): New function. (tests_with_arch): Call reset. gdb/gdbserver: 2017-08-18 Yao Qi <yao.qi@linaro.org> * Makefile.in (OBS): Add selftest.o. * configure.ac: AC_DEFINE GDB_SELF_TEST if $development. * configure, config.in: Re-generated. * server.c: Include common/sefltest.h. (captured_main): Handle option --selftest. gdb/testsuite: 2017-08-18 Yao Qi <yao.qi@linaro.org> * gdb.server/unittest.exp: New. gdb/doc: 2017-08-18 Yao Qi <yao.qi@linaro.org> * gdb.texinfo (Server): Document "--selftest".
* Add shortcuts for "nexti" and "stepi" commands in Single-Key modeRuslan Kabatsayev2017-08-161-0/+5
| | | | | | | | | | | | | | | | | | Currently, "layout asm" is not so useful as "layout src" with Single-Key mode: you have to use multi-key commands like "ni" and "si" to do single-stepping. This patch adds, in addition to "next" and "step" commands, corresponding assembly-level ones - "nexti" and "stepi" - to Single-Key mode, with the shortcuts of "o" (from "step Over") and "i" (from "Step Into") respectively. gdb/ChangeLog: * tui/tui.c (tui_commands): Add "nexti" and "stepi" to the Single-Key mode command list. gdb/doc/ChangeLog: * gdb.texinfo (TUI Single Key Mode): Document the new shortcuts in Single-Key mode.
* Fix typo on documentation ("show set startup-with-shell")Sergio Durigan Junior2017-08-121-0/+6
| | | | | | | | | | | | | The documentation was erroneously saying that there is a command named "show set startup-with-shell", while the correct version is "show startup-with-shell". This commit fixes obvious mistake. gdb/doc/ChangeLog: 2017-08-12 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/21925 * gdb.texinfo (Starting) <startup-with-shell>: Fix typo ("show set...").
* doc: Fix copy-pasto in Z0 packet documentationSimon Marchi2017-08-091-0/+5
| | | | | | | | | | | The documentation for the cmd_list field of the Z0 packet refers to its content as a conditional expression, which seems like a copy-paste error from the cond_list field. gdb/doc/ChangeLog: * gdb.texinfo (Packets): Fix Z0 cmd_list doc referring to conditional expression.
* Fix documentation about rot agent expression bytecodeSimon Marchi2017-07-311-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The rot agent expression bytecode rotates the three items on the top of the stack. It is not clear which way the rotation is. However, the documentation currently shows this as the effect of the instructions: a b c => c b a which doesn't make sense, since the value b doesn't move. The two valid possibilities I see are a b c => b c a a b c => c a b depending on which way you rotate. When looking at the gdbserver code, the top of the stack becomes the third item, and the next-to-top item becomes the top. So the second form would be the right one, since in this notation the top of the stack is the rightmost element: a b c => c a b I adjusted the symbolic description and added a bit of text to make it more obvious. gdb/doc/ChangeLog: * agentexpr.texi (rot): Fix symbolic description, improve textual description.
* Add "maint check xml-descriptions" to test builtin xml target descriptionsYao Qi2017-07-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now, GDB is able to dynamically create i386-linux target descriptions from features, instead of using pre-generated target descriptions. These pre-generated target descriptions are no longer used by GDB (note that they are still used by GDBserver). This patch add a new maint command "maint check xml-descriptions" to test dynamically generated tdesc are identical to these generated from xml files. gdb: 2017-07-26 Yao Qi <yao.qi@linaro.org> * cli/cli-cmds.c (maintenancechecklist): New variable. * gdbcmd.h (maintenancechecklist): Declare it. * i386-linux-tdep.c (_initialize_i386_linux_tdep) [GDB_SELF_TEST]: Call i386_linux_read_description with different masks. * maint.c (maintenance_check_command): New function. (_initialize_maint_cmds): Call add_prefix_cmd. * target-descriptions.c (tdesc_reg): override operator != and ==. (tdesc_type): Likewise. (tdesc_feature): Likewise. (target_desc): Likewise. [GDB_SELF_TEST] (selftests::record_xml_tdesc): New function. (maintenance_check_xml_descriptions): New function. (_initialize_target_descriptions) Add command "xml-descriptions". * target-descriptions.h (selftests::record_xml_tdesc): Declare. gdb/testsuite: 2017-07-26 Yao Qi <yao.qi@linaro.org> * gdb.gdb/unittest.exp: Invoke command "maintenance check xml-descriptions". gdb/doc: 2017-07-26 Yao Qi <yao.qi@linaro.org> * gdb.texinfo (Maintenance Commands): Document command "maint check xml-descriptions".
* Add optional argument to command "maint prints c-tdesc"Yao Qi2017-07-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nowadays, we need two steps to print c files for xml target description, that is, 1) read xml target description in, update the current tdesc, 2) visit the current tdesc, print the c file. It is unnecessary to involve in current tdesc, and some validations in each gdbarch are performed unnecessarily, which will reject some target descriptions if they are missing some mandatory feature. This patch adds an optional argument to "maint print c-tdesc", which is an XML file target description, so that we can combine the two steps above into one step, and don't have to involve in global current tdesc. gdb: 2017-07-26 Yao Qi <yao.qi@linaro.org> * NEWS: Mention it. * features/Makefile (%.c: %.xml): Pass the xml file name to command "maint print c-tdesc". * target-descriptions.c (maint_print_c_tdesc_cmd): Get file name from 'arg'. gdb/doc: 2017-07-26 Yao Qi <yao.qi@linaro.org> * gdb.texinfo (Maintenance Commands): Document optional argument of "maint print c-tdesc".
* Improve doc about "maint print c-tdesc"Yao Qi2017-07-181-0/+5
| | | | | | | | | | | | | | In my patch extending command "maint print c-tdesc" (https://sourceware.org/ml/gdb-patches/2017-06/msg00286.html), Eli raised some questions on the existing doc to this command. It is not very clear, so this patch improves it. Eli approved it. gdb/doc: 2017-07-18 Yao Qi <yao.qi@linaro.org> * gdb.texinfo (Maintenance Commands): Improve the doc to command "maint print c-tdesc".
* Fix PR gdb/21606: SYMBOL_FUNCTIONS_DOMAIN misspelled in documentationSergio Durigan Junior2017-06-201-0/+7
| | | | | | | | | | | | | | Both Python and Guile documentations misspelled SYMBOL_FUNCTIONS_DOMAIN, writing SYMBOL_FUNCTION_DOMAIN instead. This obvious commit fixes it. gdb/doc/ChangeLog: 2017-06-20 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/21606 * python.texi (Python representation of Symbols.): Replace SYMBOL_FUNCTION_DOMAIN by SYMBOL_FUNCTIONS_DOMAIN, fixing typo. * guile.texi (Guile representation of Symbols.): Likewise.
* Introduce "set debug separate-debug-file"Simon Marchi2017-06-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I helped someone figure out why their separate debug info (debug link-based) was not found by gdb. It turns out that the debug file was not named properly. It made me realize that it is quite difficult to diagnose this kind of problems. This patch adds some debug output to show where GDB looks for those files, so that it should be (more) obvious to find what's wrong. Here's an example of the result, first with an example of unsuccessful lookup, and then a successful one. (gdb) set debug separate-debug-file on (gdb) file /usr/bin/gnome-calculator Reading symbols from /usr/bin/gnome-calculator... Looking for separate debug info (build-id) for /usr/bin/gnome-calculator Trying /usr/local/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Looking for separate debug info (debug link) for /usr/bin/gnome-calculator Trying /usr/bin/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Trying /usr/bin/.debug/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Trying /usr/local/lib/debug//usr/bin/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug (no debugging symbols found)...done. (gdb) set debug-file-directory /usr/lib/debug (gdb) file /usr/bin/gnome-calculator Reading symbols from /usr/bin/gnome-calculator... Looking for separate debug info by build-id for /usr/bin/gnome-calculator Trying /usr/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Reading symbols from /usr/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug...done. done. Note: here, the debug link happens to be named like the build-id, but it doesn't have to be this way. It puzzled me for a minute. gdb/ChangeLog: * NEWS (Changes since GDB 8.0): Announce {set,show} debug separate-debug-file commands. * symfile.h (separate_debug_file_debug): New global. * symfile.c (separate_debug_file_debug): New global. (separate_debug_file_exists, find_separate_debug_file): Add debug output. (_initialize_symfile): Add "set debug separate-debug-file" command. * build-id.c (build_id_to_debug_bfd, find_separate_debug_file_by_buildid): Add debug output. gdb/doc/ChangeLog: * gdb.texinfo (Optional Messages about Internal Happenings): Document {set,show} debug separate-debug-file commands.
* Implement proper "startup-with-shell" support on gdbserverSergio Durigan Junior2017-06-071-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the proper support for the "startup-with-shell" feature on gdbserver. A new packet is added, QStartupWithShell, and it is sent on initialization. If the host sends a "QStartupWithShell:1", it means the inferior shall be started using a shell. If the host sends a "QStartupWithShell:0", it means the inferior shall be started without using a shell. Any other value is considered an error. There is no way to remotely set the shell that will be used by the target to start the inferior. In order to do that, the user must start gdbserver while providing a shell via the $SHELL environment variable. The same is true for the host side. The "set startup-with-shell" setting from the host side is used to decide whether to start the remote inferior using a shell. This same setting is also used to decide whether to use a shell to start the host inferior; this means that it is not really possible to start the inferior using different mechanisms on target and host. A documentation patch is included, along with a new testcase for the feature. gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS (Changes since GDB 8.0): Announce that GDBserver is now able to start inferiors using a shell. (New remote packets): Announce new packet "QStartupWithShell". * remote.c: Add PACKET_QStartupWithShell. (extended_remote_create_inferior): Handle new PACKET_QStartupWithShell. (remote_protocol_features) <QStartupWithShell>: New entry for PACKET_QStartupWithShell. (_initialize_remote): Call "add_packet_config_cmd" for QStartupShell. gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * server.c (handle_general_set): Handle new packet "QStartupWithShell". (handle_query): Add "QStartupWithShell" to the list of supported packets. (gdbserver_usage): Add help text explaining the new "--startup-with-shell" and "--no-startup-with-shell" CLI options. (captured_main): Recognize and act upon the presence of the new CLI options. gdb/testsuite/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/startup-with-shell.c: New file. * gdb.base/startup-with-shell.exp: Likewise. gdb/doc/ChangeLog: 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (Starting) <startup-with-shell>: Add @anchor. (Connecting) <Remote Packet>: Add "startup-with-shell" and "QStartupWithShell" to the table. (Remote Protocol) <QStartupWithShell>: New item, explaining the packet.
* gdb: Document vMustReplyEmpty remote packetAndrew Burgess2017-05-221-0/+4
| | | | | | | | | | | | | | | | | | | Add mention of the vMustReplyEmpty to the remote serial protocol documentation. It is important that this packet be treated in the same fashion as any other unknown 'v' packet, and I have tried to reflect this in the description of the packet, it is not simply the case that we _must_ return the empty string for this packet. As the intention is that we should treat this packet as unknown then an argument could be made that we should not document it, however, for someone implementing a gdbserver from scratch, seeing an undocumented packet arrive from gdb is confusing, and will probably cause them to have to read the code in order to check how this packet should be handled, which is not ideal. gdb/doc/ChangeLog: * gdb.texinfo (Packets): Document vMustReplyEmpty packet.
* Python: Introduce gdb.Instruction classTim Wiederhake2017-05-021-0/+5
| | | | | This adds a generic instruction class to Python and has gdb.RecordInstruction inherit from it.
* Python: Move and rename gdb.BtraceFunctionTim Wiederhake2017-05-021-0/+6
| | | | | Remove gdb.BtraceFunctionCall and replace by gdb.FunctionSegment. Additionally, rename prev_segment and next_segment to prev and next.
* Python: Move and rename gdb.BtraceInstructionTim Wiederhake2017-05-021-0/+5
| | | | Remove gdb.BtraceInstruction and replace by gdb.RecordInstruction.
* Python: Introduce gdb.RecordGap classTim Wiederhake2017-05-021-0/+6
| | | | | | | | | As discussed here: https://sourceware.org/ml/gdb-patches/2017-04/msg00157.html A gap is not an instruction and it should not pretend to be one. gdb.Record.instruction_history is now a list of gdb.RecordInstruction and gdb.RecordGap objects. This allows the user to deal with Gaps in the record in a more sane way.
* Python: Remove ptid from gdb.Record interfaceTim Wiederhake2017-05-021-0/+4
| | | | As discussed here: https://sourceware.org/ml/gdb-patches/2017-04/msg00166.html
* doc: Improve documentation about MI thread outputSimon Marchi2017-04-211-0/+9
| | | | | | | | | | | | | | | | | | | | | I noticed that the documentation on how the info about threads is output in MI is duplicated and not up to date. The duplication is between the "GDB/MI Thread Information" page and the -thread-info result description. I improved the "GDB/MI Thread Information" page a bit and referred to it in the -thread-info doc. This way, the -thread-info doc is more precise (it did not mention the "threads" and "current-thread-id" attributes) and concise. gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Thread Information): Add missing fields, re-word some things. (GDB/MI Thread Commands): Describe fields found in the output of -thread-info, remove description of fields in the thread output tuple, replace with a cross-reference to "GDB/MI Thread Information".
* Remove dead code and "current" field from MI thread output docSimon Marchi2017-04-211-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | The MI documentation says that -thread-info output contains a "current" field in the current thread tuple, with the value "*". Current GDB master does not do this, and I couldn't find any GDB version that did. I suspect that it was never the case. The code that would correspond to this in print_thread_info_1 is essentially dead code. The calls to uiout->text end up in mi_out::do_text, which is empty. This patch removes the documentation bit and the dead code. This "current" field is not necessary, since -thread-info outputs a "current-thread-id" field. gdb/ChangeLog: * thread.c (print_thread_info_1): Remove dead code. gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Thread Commands): Remove "current" field from -thread-info output.
* arc: Add prologue analysisAnton Kolesov2017-03-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a prologue analysis that recognizes all instructions that may happen in compiler-generated prologue, including various stores, core register moves, subtraction and ENTER_S instruction that does a lot of prologue actions through microcode. Testcases cover various prologue scenarios, including instructions that are spread across multiple 16-bit encodings (for example there are 7 encodings of store instruction). gdb/ChangeLog: yyyy-mm-dd Anton Kolesov <anton.kolesov@synopsys.com> * arc-tdep.c (arc_frame_cache): Add support for prologue analysis. (arc_skip_prologue): Likewise. (arc_make_frame_cache): Likewise. (arc_pv_get_operand): New function. (arc_is_in_prologue): Likewise. (arc_analyze_prologue): Likewise. (arc_print_frame_cache): Likewise. (MAX_PROLOGUE_LENGTH): New constant. gdb/doc/ChangeLog: yyyy-mm-dd Anton Kolesov <anton.kolesov@synopsys.com> * gdb.texinfo (Synopsys ARC): Document "set debug arc 2". gdb/testsuite/ChangeLog: yyyy-mm-dd Anton Kolesov <anton.kolesov@synopsys.com> * gdb.arch/arc-analyze-prologue.S: New file. * gdb.arch/arc-analyze-prologue.exp: Likewise.
* arc: Add disassembler helperAnton Kolesov2017-03-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add disassembler helper for GDB, that uses opcodes structure arc_instruction and adds convenience functions to handle instruction operands. This interface solves at least those problems with arc_instruction: * Some instructions, like "push_s", have implicit operands which are not directly present in arc_instruction. * Operands of particular meaning, like branch/jump targets, have various locations and meaning depending on type of branch/target. * Access to operand value is abstracted into a separate function, so callee code shouldn't bother if operand value is an immediate value or in a register. Testcases included in this commit are fairly limited - they test exclusively branch instructions, something that will be used in software single stepping. Most of the other parts of this disassembler helper are tested during prologue analysis testing. gdb/ChangeLog: yyyy-mm-dd Anton Kolesov <anton.kolesov@synopsys.com> * configure.tgt: Add arc-insn.o. * arc-tdep.c (arc_delayed_print_insn): Make non-static. (dump_arc_instruction_command): New function. (arc_fprintf_disasm): Likewise. (arc_disassemble_info): Likewise. (arc_insn_get_operand_value): Likewise. (arc_insn_get_operand_value_signed): Likewise. (arc_insn_get_memory_base_reg): Likewise. (arc_insn_get_memory_offset): Likewise. (arc_insn_get_branch_target): Likewise. (arc_insn_dump): Likewise. (arc_insn_get_linear_next_pc): Likewise. * arc-tdep.h (arc_delayed_print_insn): Add function declaration. (arc_disassemble_info): Likewise. (arc_insn_get_branch_target): Likewise. (arc_insn_get_linear_next_pc): Likewise. * NEWS: Mention new "maint print arc arc-instruction". gdb/doc/ChangeLog: yyyy-mm-dd Anton Kolesov <anton.kolesov@synopsys.com> * gdb.texinfo (Synopsys ARC): Add "maint print arc arc-instruction". gdb/testsuite/ChangeLog: yyyy-mm-dd Anton Kolesov <anton.kolesov@synopsys.com> * gdb.arch/arc-decode-insn.S: New file. * gdb.arch/arc-decode-insn.exp: Likewise.
* Remove @code for pythonYao Qi2017-03-221-0/+4
| | | | | | | | | | | There's no reason to use @code for Python the name of a programming language. gdb/doc: 2017-03-22 Yao Qi <yao.qi@linaro.org> * python.texi (Inferiors In Python): Remove @code from Python.
* Fix break on Python 2Tim Wiederhake2017-03-211-0/+5
| | | | | | This changes the return type of "gdb.BtraceInstruction.data ()" from "memoryview" to "buffer" on Python 2.7 and below, similar to what "gdb.Inferior.read_memory ()" does.
* Add -file-list-shared-libraries MI commandMarc-Andre Laperle2017-03-201-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds the MI equivalent for the "info sharedlibrary" command. The command was already partially documented but ignored as it was not implemented. The new MI command works similarly to the CLI command, taking an optional regular expression as an argument and outputting the library information. I included a test for the new command in mi-solib.exp. gdb/doc/ChangeLog: * gdb.texinfo (gdb/mi Symbol Query Commands): Document new MI command file-list-shared-libraries (GDB/MI Async Records): Update documentation of library-loaded with new field. gdb/ChangeLog: * NEWS: Add an entry about new '-file-list-shared-libraries' command. * mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): New function definition. * mi/mi-cmds.c (mi_cmds): Add -file-list-shared-libraries command. * mi/mi-cmds.h (mi_cmd_file_list_shared_libraries): New function declaration. * mi/mi-interp.c (mi_output_solib_attribs): New Function. * mi/mi-interp.h: New file. * solib.c (info_sharedlibrary_command): Replace for loop with ALL_SO_LIBS macro * solib.h (update_solib_list): New function declaration. (so_list_head): Move macro. * solist.h (ALL_SO_LIBS): New macro. gdb/testsuite/ChangeLog: * gdb.mi/mi-solib.exp (test_file_list_shared_libraries): New procedure. Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
* Lazy strings can be made from arrays too.Doug Evans2017-03-161-0/+5
| | | | | | | gdb/doc/ChangeLog: * guile.texi (Lazy Strings In Guile): Mention arrays. * python.texi (Lazy Strings In Python): Ditto.
* [gdb, doc] Add missing escape character '@'Jiong Wang2017-03-081-0/+5
| | | | | | gdb/doc/ * gdb.texinfo (Memory Protection Extensions): Add missing escape character "@".
* amd64-mpx: initialize BND register before performing inferior calls.Walfred Tedeschi2017-03-071-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch initializes the BND registers before executing the inferior call. BND registers can be in arbitrary values at the moment of the inferior call. In case the function being called uses as part of the parameters BND register, e.g. when passing a pointer as parameter, the current value of the register will be used. This can cause boundary violations that are not due to a real bug or even desired by the user. In this sense the best to be done is set the BND registers to allow access to the whole memory, i.e. initialized state, before pushing the inferior call. 2017-03-07 Walfred Tedeschi <walfred.tedeschi@intel.com> gdb/ChangeLog: * i387-tdep.h (i387_reset_bnd_regs): Add function definition. * i387-tdep.c (i387_reset_bnd_regs): Add function implementation. * i386-tdep.c (i386_push_dummy_call): Call i387_reset_bnd_regs. * amd64-tdep (amd64_push_dummy_call): Call i387_reset_bnd_regs. gdb/testsuite/ChangeLog: * i386-mpx-call.c: New file. * i386-mpx-call.exp: New file. gdb/doc/ChangeLog: * Memory Protection Extensions: Add information about inferior calls.
* DWARF-5: call sitesJan Kratochvil2017-02-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this patch updates all call sites related DWARF-5 renames. gdb/ChangeLog 2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com> * block.c (call_site_for_pc): Rename DW_OP_GNU_*, DW_TAG_GNU_* and DW_AT_GNU_*. * common/common-exceptions.h (enum errors): Likewise. * dwarf2-frame.c (class dwarf_expr_executor): Likewise. * dwarf2expr.c (dwarf_block_to_dwarf_reg) (dwarf_expr_context::execute_stack_op): Likewise. * dwarf2expr.h (struct dwarf_expr_context, struct dwarf_expr_piece): Likewise. * dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type) (dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value) (show_entry_values_debug, call_site_to_target_addr) (func_addr_to_tail_call_list, func_verify_no_selftailcall) (dwarf_expr_reg_to_entry_parameter, dwarf_entry_parameter_to_value) (entry_data_value_free_closure, value_of_dwarf_reg_entry) (value_of_dwarf_block_entry, indirect_pieced_value) (symbol_needs_eval_context::push_dwarf_reg_entry_value): (disassemble_dwarf_expression): Likewise. * dwarf2read.c (process_die, inherit_abstract_dies) (read_call_site_scope): Likewise. * gdbtypes.h (struct func_type, struct call_site_parameter) (struct call_site): Likewise. * stack.c (read_frame_arg): Likewise. * std-operator.def (OP_VAR_ENTRY_VALUE): Likewise. gdb/doc/ChangeLog 2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.texinfo (Print Settings, Tail Call Frames): Rename DW_OP_GNU_*, DW_TAG_GNU_* and DW_AT_GNU_*. gdb/testsuite/ChangeLog 2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.arch/amd64-entry-value-param-dwarf5.S: New file. * gdb.arch/amd64-entry-value-param-dwarf5.c: New file. * gdb.arch/amd64-entry-value-param-dwarf5.exp: New file. * gdb.arch/amd64-entry-value.exp: Rename DW_OP_GNU_*, DW_TAG_GNU_* and DW_AT_GNU_*.
* Add missing ChangeLog entries.Tim Wiederhake2017-02-151-0/+4
| | | | This adds the missing ChangeLog entries for the "Python bindings" patch series.
* PR python/13598 - add before_prompt eventTom Tromey2017-02-141-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds an event that is emitted just before GDB presents a prompt to the user. This provides Python code a way to react to whatever changes might have been made by the previous command. For example, in my GUI I use this to track changes to the selected frame and reflect them in the UI. Built and regtested on x86-64 Fedora 23. gdb/ChangeLog 2017-02-14 Tom Tromey <tom@tromey.com> PR python/13598: * python/python.c (gdbpy_before_prompt_hook): Emit before_prompt event. * python/py-evts.c (gdbpy_initialize_py_events): Add before_prompt registry. * python/py-events.h (events_object) <before_prompt>: New field. gdb/doc/ChangeLog 2017-02-14 Tom Tromey <tom@tromey.com> PR python/13598: * python.texi (Events In Python): Document events.before_prompt. gdb/testsuite/ChangeLog 2017-02-14 Tom Tromey <tom@tromey.com> PR python/13598: * gdb.python/py-events.exp: Add before_prompt event tests.
* Improve load command's help textLuis Machado2017-02-131-0/+5
| | | | | | | | | | | | | | | | | | | | | This fairly obvious patch adds usage text to the load command's help text. Originally it did not have usage and mentioned things like FILE and OFFSET without explaining how those should be passed in the command. gdb/ChangeLog: 2017-02-13 Luis Machado <lgustavo@codesourcery.com> * symfile (_initialize_symfile): Add usage text to the load command's help text. gdb/doc/ChangeLog: 2017-02-13 Luis Machado <lgustavo@codesourcery.com> * gdb.texinfo (Target Commands): Document the optional offset argument for the load command.
* PR gdb/21122: Fix documentation mistakes for breakpoint commandsMartin Galvan2017-02-101-0/+7
| | | | | | | | | | | | | | | | | | | | | | Currently, the breakpoint documentation refers to some commands taking breakpoint "ranges" as arguments. We discussed this with Pedro and concluded that it would be more accurate to speak in terms of breakpoint "lists", whose elements can optionally be ranges. I also fixed a couple of minor mistakes in the docs. gdb/ChangeLog: * breakpoint.c (_initialize_breakpoint): Update the help description of the 'commands' command to indicate that it takes a list argument. gdb/doc/ChangeLog: * gdb.texinfo (Breakpoints): Reword documentation to speak in terms of space-separated breakpoint lists. Also add a missing @table command and @cindex for breakpoint lists. gdb/testsuite/ChangeLog: * gdb.base/help.exp: Update match pattern for testing 'help commands'.
* gdb: provide and use sparc{32,64} target description XML files.Ivo Raisr2017-02-051-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gdb/ChangeLog: 2017-02-06 Ivo Raisr <ivo.raisr@oracle.com> PR tdep/20936 Provide and use sparc32 and sparc64 target description XML files. * features/sparc/sparc32-cp0.xml, features/sparc/sparc32-cpu.xml, features/sparc/sparc32-fpu.xml: New files for sparc 32-bit. * features/sparc/sparc64-cp0.xml, features/sparc/sparc64-cpu.xml, features/sparc/sparc64-fpu.xml: New files for sparc 64-bit. * features/sparc/sparc32-solaris.xml: New file. * features/sparc/sparc64-solaris.xml: New file. * features/sparc/sparc32-solaris.c: Generated. * features/sparc/sparc64-solaris.c: Generated. * sparc-tdep.h: Account for differences in target descriptions. * sparc-tdep.c (sparc32_register_name): Use target provided registers. (sparc32_register_type): Use target provided registers. (validate_tdesc_registers): New function. (sparc32_gdbarch_init): Use tdesc_has_registers. Set pseudoregister functions. * sparc64-tdep.c (sparc64_register_name): Use target provided registers. (sparc64_register_type): Use target provided registers. (sparc64_init_abi): Set pseudoregister functions. gdb/doc/ChangeLog: 2017-02-06 Ivo Raisr <ivo.raisr@oracle.com> PR tdep/20936 * gdb.texinfo: (Standard Target Features): Document SPARC features. (Sparc Features): New node. gdb/testsuite/ChangeLog: 2017-02-06 Ivo Raisr <ivo.raisr@oracle.com> PR tdep/20936 * gdb.xml/tdesc-regs.exp: Provide sparc core registers for the tests.
* amd64-linux: expose system register FS_BASE and GS_BASE for Linux.Walfred Tedeschi2017-01-271-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows examination of the registers FS_BASE and GS_BASE for Linux Systems running on 64bit. Tests for simple read and write of the new registers is also added with this patch. 2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com> Richard Henderson <rth@redhat.com> gdb/ChangeLog: * amd64-linux-nat.c (PTRACE_ARCH_PRCTL): New define. (amd64_linux_fetch_inferior_registers): Add case to fetch FS_BASE GS_BASE for older kernels. (amd64_linux_store_inferior_registers): Add case to store FS_BASE GS_BASE for older kernels. * amd64-linux-tdep.c (amd64_linux_gregset_reg_offset): Add FS_BASE and GS_BASE to the offset table. (amd64_linux_register_reggroup_p): Add FS_BASE and GS_BASE to the system register group. * amd64-nat.c (amd64_native_gregset_reg_offset): Implements case for older kernels. * amd64-tdep.c (amd64_init_abi): Add segment registers for the amd64 ABI. * amd64-tdep.h (amd64_regnum): Add AMD64_FSBASE_REGNUM and AMD64_GSBASE_REGNUM. (AMD64_NUM_REGS): Set to AMD64_GSBASE_REGNUM + 1. * features/Makefile (amd64-linux.dat, amd64-avx-linux.dat) (amd64-mpx-linux.dat, amd64-avx512-linux.dat, x32-linux.dat) (x32-avx-linux.dat, x32-avx512-linux.dat): Add i386/64bit-segments.xml in those rules. * features/i386/64bit-segments.xml: New file. * features/i386/amd64-avx-mpx-linux.xml: Add 64bit-segments.xml. * features/i386/amd64-avx-linux.xml: Add 64bit-segments.xml. * features/i386/amd64-avx512-linux.xml: Add 64bit-segments.xml. * features/i386/amd64-mpx-linux.xml: Add 64bit-segments.xml. * features/i386/x32-avx512-linux.xml: Add 64bit-segments.xml. * features/i386/x32-avx-linux.xml: Add 64bit-segments.xml. * features/i386/amd64-linux.xml: Add 64bit-segments.xml. * features/i386/amd64-avx-linux.c: Regenerated. * features/i386/amd64-avx-mpx-linux.c: Regenerated. * features/i386/amd64-avx-mpx.c: Regenerated. * features/i386/amd64-avx512-linux.c: Regenerated. * features/i386/amd64-linux.c: Regenerated. * features/i386/amd64-mpx-linux.c: Regenerated. * features/i386/i386-avx-mpx-linux.c: Regenerated. * features/i386/i386-avx-mpx.c: Regenerated. * features/i386/x32-avx-linux.c: Regenerated. * features/i386/x32-avx512-linux.c: Regenerated. * regformats/i386/amd64-avx-linux.dat: Regenerated. * regformats/i386/amd64-avx-mpx-linux.dat: Regenerated. * regformats/i386/amd64-avx512-linux.dat: Regenerated. * regformats/i386/amd64-linux.dat: Regenerated. * regformats/i386/amd64-mpx-linux.dat: Regenerated. * regformats/i386/x32-avx-linux.dat: Regenerated. * regformats/i386/x32-avx512-linux.dat: Regenerated. * regformats/i386/x32-linux.dat: Regenerated. gdb/doc/ChangeLog: * gdb.texinfo (i386 Features): Add system segment registers as feature. gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_64_regmap): Add fs_base and gs_base to the register table. (x86_fill_gregset): Add support for old kernels for the fs_base and gs_base system registers. (x86_store_gregset): Likewise. * configure.srv (srv_i386_64bit_xmlfiles): Add 64bit-segments.xml. gdb/testsuite/ChangeLog: * gdb.arch/amd64-gs_base.c: New file. * gdb.arch/amd64-gs_base.exp: New file. Change-Id: I2e0eeb93058a2320d4d3b045082643cfe4aff963 Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>
* Fix typo in ExitedEvent docSimon Marchi2017-01-241-0/+4
| | | | | | | | | The field "inferior" of the ExitedEvent object is not displayed properly. gdb/doc/ChangeLog: * python.texi (Events In Python): Fix typo.
* Add command to erase all flash memory regionsLuis Machado2017-01-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes in v4: - Replaced phex call with hex_string. Changes in v3: - Addressed comments by Pedro. - Output of memory region size now in hex format. - Misc formatting fixups. - Addressed Simon's comments on formatting. - Adjusted command text in the manual entry. - Fixed up ChangeLog. - Renamed flash_erase_all_command to flash_erase_command. Changes in v2: - Added NEWS entry. - Fixed long lines. - Address printing with paddress. Years ago we contributed flash programming patches upstream. The following patch is a leftover one that complements that functionality by adding a new command to erase all reported flash memory blocks. The command is most useful when we're dealing with flash-enabled targets (mostly bare-metal) and we need to reset the board for some reason. The wiping out of flash memory regions should help the target come up with a known clean state from which the user can load a new image and resume debugging. It is convenient enough to do this from the debugger, and there is also an MI command to expose this functionality to the IDE's. gdb/doc/ChangeLog: 2017-01-20 Mike Wrighton <mike_wrighton@codesourcery.com> Luis Machado <lgustavo@codesourcery.com> * gdb.texinfo (-target-flash-erase): New MI command description. (flash-erase): New CLI command description. gdb/ChangeLog: 2017-01-20 Mike Wrighton <mike_wrighton@codesourcery.com> Luis Machado <lgustavo@codesourcery.com> * NEWS (New commands): Mention flash-erase. (New MI commands): Mention target-flash-erase. * mi/mi-cmds.c (mi_cmd_target_flash_erase): Add target-flash-erase MI command. * mi/mi-cmds.h (mi_cmd_target_flash_erase): New declaration. * mi/mi-main.c (mi_cmd_target_flash_erase): New function. * target.c (flash_erase_command): New function. (initialize_targets): Add new flash-erase command. * target.h (flash_erase_command): New declaration.
* Add FreeBSD/mips architecture.John Baldwin2017-01-041-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | This has been tested for the n64 and o32 ABIs. Signal frame unwinders for both ABIs are provided. FreeBSD/mips requires custom linkmap offsets since it contains an additional l_off member in 'struct link_map' that other FreeBSD platforms do not have. Support for collecting and supplying general purpose and floating point register sets are provided. Common routines for working with native format register sets are exported for use by the native target. gdb/ChangeLog: * Makefile.in (ALL_TARGET_OBS): Add mips-fbsd-tdep.o. (ALLDEPFILES): Add mips-fbsd-tdep.c. * NEWS: Mention new FreeBSD/mips target. * configure.tgt: Add mips*-*-freebsd*. * mips-fbsd-tdep.c: New file. * mips-fbsd-tdep.h: New file. gdb/doc/ChangeLog: * gdb.texinfo (Contributors): Add SRI International and University of Cambridge for FreeBSD/mips.
* New syntax for mt print symbols,msymbols,psymbols.Doug Evans2016-12-221-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gdb/ChangeLog: * NEWS: Document new syntax for "mt print symbols", "mt print psymbols" and "mt print msymbols" commands. * psymtab.c (DEV_TTY): Delete. (dump_psymtab_addrmap): Don't dump if psymtabs_addrmap is NULL. (maintenance_print_psymbols): Rewrite for new syntax: mt print psymbols [-objfile objfile] [-pc address] [outfile] mt print psymbols [-objfile objfile] [-source source] [outfile] (_initialize_psymtab): Update help text. * symmisc.c (maintenance_print_symbols): Rewrite for new syntax: mt print symbols [-pc address] [outfile] mt print symbols [-objfile objfile] [-source source] [outfile] (maintenance_print_msymbols): Rewrite for new syntax: mt print msymbols [-objfile objfile] [outfile] Only print symbols for the current progspace. (_initialize_symmisc): Update help text. gdb/doc/ChangeLog: * gdb.texinfo (Symbols): Update docs for symbol printing maintenance commands. gdb/testsuite/ChangeLog: * gdb.base/maint.exp: Update tests for maint print symbols, psymbols and msymbols.