aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2018-03-05btrace: Remove ui_out cleanupsusers/simark/btrace-cleanupsSimon Marchi3-82/+24
This patch replaces the cleanups that close the list and tuple of the btrace instruction history output with ui_out_emit_tuple and ui_out_emit_list. This allows removing make_cleanup_ui_out_tuple_begin_end and make_cleanup_ui_out_list_begin_end. This patch (along with the previous ones in the series) was regtested on the buildbot. gdb/ChangeLog: * record-btrace.c (btrace_print_lines): Replace cleanup parameter with RAII equivalents. (btrace_insn_history): Replace cleanup with RAII equivalents. * ui-out.h (make_cleanup_ui_out_list_begin_end, make_cleanup_ui_out_tuple_begin_end): Remove. * ui-out.c (struct ui_out_end_cleanup_data, do_cleanup_end, make_cleanup_ui_out_end, make_cleanup_ui_out_tuple_begin_end, make_cleanup_ui_out_list_begin_end): Remove.
2018-03-05btrace: Remove VEC cleanupsSimon Marchi2-35/+64
This patch replaces two VEC(tp_t) with std::vector<thread_info *>, which allows to remove two cleanups. To make it easier to map the old code to the new code, I added the ordered_remove and unordered_remove functions, which operate on std::vector and do the same as VEC's ordered_remove/unordered_remove. gdb/ChangeLog: * record-btrace.c (record_btrace_maybe_mark_async_event): Change parameter types to std::vector. Use bool. (record_btrace_wait): Replace VEC(tp_t) with std::vector<thread_info *>. * common/gdb_vecs.h (unordered_remove, ordered_remove): New.
2018-03-05btrace: Remove btrace disable cleanupSimon Marchi1-14/+33
This patch removes a cleanup that disables btrace on threads in case of failure, so we don't leave it enabled for some the threads and disabled for the rest. gdb/ChangeLog: * record-btrace.c (record_btrace_disable_callback): Remove. (struct scoped_btrace_disable): New. (record_btrace_open): Use scoped_btrace_disable.
2018-03-04Propagate gdb_disassembly_flags to btrace_print_linesSimon Marchi2-1/+6
This function can take the flags as the gdb_disassembly_flags type instead of int. gdb/ChangeLog: * record-btrace.c (btrace_print_lines): Change type of flags to gdb_disassembly_flags.
2018-03-03Use signal information to determine SIGTRAP type for FreeBSD.John Baldwin2-0/+123
Use the signal code from siginfo_t to distinguish SIGTRAP events due to trace traps (TRAP_TRACE) and software breakpoints (TRAP_BRKPT). For software breakpoints, adjust the PC when the event is reported as part of the API when supplying "stopped_by_sw_breakpoint". Currently FreeBSD only supports hardware watchpoints and breakpoints on x86 which are reported as trace traps. Signal information is not used on MIPS and sparc64 kernels which do not reliably report TRAP_BRKPT for software breakpoints. gdb/ChangeLog: * fbsd-nat.c: Include "inf-ptrace.h". (USE_SIGTRAP_SIGINFO): Conditionally define. [USE_SIGTRAP_SIGINFO] (fbsd_handle_debug_trap): New function. (fbsd_wait) [USE_SIGTRAP_SIGINFO]: Call "fbsd_handle_debug_trap". [USE_SIGTRAP_SIGINFO] (fbsd_stopped_by_sw_breakpoint): New function. [USE_SIGTRAP_SIGINFO] (fbsd_supports_stopped_by_sw_breakpoint): Likewise. [USE_SIGTRAP_SIGINFO] (fbsd_supports_stopped_by_hw_breakpoint): Likewise. (fbsd_nat_add_target) [USE_SIGTRAP_SIGINFO]: Set "stopped_by_sw_breakpoint", "supports_stopped_by_sw_breakpoint", "supports_stopped_by_hw_breakpoint" target methods.
2018-03-03Add a new debug knob for the FreeBSD native target.John Baldwin5-0/+53
For now this just logs information about the state of the current LWP for each STOPPED event in fbsd_wait(). gdb/ChangeLog: * NEWS (Changes since GDB 8.1): Add "set/show debug fbsd-nat". * fbsd-nat.c (debug_fbsd_nat): New variable. (show_fbsd_nat_debug): New function. (fbsd_wait): Log LWP info if "debug_fbsd_nat" is enabled. (_initialize_fbsd_nat): Add "fbsd-nat" debug boolean command. gdb/doc/ChangeLog: * gdb.texinfo (Debugging Output): Document "set/show debug fbsd-nat".
2018-03-03Implement "to_stopped_by_hw_breakpoint" for x86 debug registers.John Baldwin4-0/+75
Report that a thread is stopped by a hardware breakpoint if a non-data watchpoint is set in DR6. This change should be a no-op since a target still needs to implement the "to_supports_stopped_by_hw_breakpoint" method before this function is used. gdb/ChangeLog: * nat/x86-dregs.c (x86_dr_stopped_by_hw_breakpoint): New function. * nat/x86-dregs.h (x86_dr_stopped_by_hw_breakpoint): New prototype. * x86-nat.c (x86_stopped_by_hw_breakpoint): New function. (x86_use_watchpoints): Set "stopped_by_hw_breakpoint" target method.
2018-03-02handle_general_set: Remove useless xstrdupSimon Marchi2-4/+5
Unless I'm missing something very obvious, this xstrdup seems unnecessary to me. We can pass "mode" directly to sprintf. gdb/gdbserver/ChangeLog: * server.c (handle_general_set): Remove unnecessary xstrdup.
2018-03-02Remove free_char_ptr_vecSimon Marchi3-20/+5
Nothing is using it anymore. gdb/ChangeLog: * common/gdb_vecs.c (free_char_ptr_vec): Remove. * common/gdb_vecs.h (free_char_ptr_vec): Remove.
2018-03-02C++ify charsetsSimon Marchi2-17/+37
This patch makes the charset list an std::vector instead of a VEC. Because we must have access to the raw pointers as a simple array, we can't use a vector of unique_ptr/unique_xmalloc_ptr. Therefore, wrap the vector in a simple class to facilitate the cleanup. This allows removing one usage of free_char_ptr_vec. gdb/ChangeLog: * charset.c (struct charset_vector): New. (charsets): Change type to charset_vector. (find_charset_names): Adjust. (add_one): Adjust. (_initialize_charset): Adjust.
2018-03-02Make program_space::deleted_solibs a vector of std::stringSimon Marchi7-23/+28
This allows removing a usage of free_char_ptr_vec. gdb/ChangeLog: * progspace.h (struct program_space) <deleted_solibs>: Change type to std::vector<std::string>. * progspace.c (clear_program_space_solib_cache): Adjust. * breakpoint.c (print_solib_event): Adjust. (check_status_catch_solib): Adjust. * solib.c (update_solib_list): Adjust. * ui-out.h (class ui_out) <field_string>: New overload. * ui-out.c (ui_out::field_string): New overload.
2018-03-02C++ify program_spaceSimon Marchi5-110/+114
This patch makes program_space a C++ object by adding a constructor/destructor, giving default values to fields, and using new/delete. gdb/ChangeLog: * progspace.h (struct program_space): Add constructor and destructor, initialize fields. (add_program_space): Remove. * progspace.c (add_program_space): Rename to... (program_space::program_space): ... this. (release_program_space): Rename to... (program_space::~program_space): ... this. (delete_program_space): Use delete to delete program_space. (initialize_progspace): Use new to allocate program_space. * inferior.c (add_inferior_with_spaces): Likewise. (clone_inferior_command): Likewise. * infrun.c (follow_fork_inferior): Likewise. (handle_vfork_child_exec_or_exit): Likewise.
2018-03-02Make delim_string_to_char_ptr_vec return an std::vectorSimon Marchi12-171/+148
This patch makes delim_string_to_char_ptr_vec and all related functions use std::vector of gdb::unique_xmalloc_ptr. This allows getting rid of make_cleanup_free_char_ptr_vec. Returning a vector of unique_xmalloc_ptr instead of std::string allows to minimize the impacts on the calling code. We can evaluate later whether we could/should return a vector of std::strings instead. gdb/ChangeLog: * common/gdb_vecs.h (make_cleanup_free_char_ptr_vec): Remove. (delim_string_to_char_ptr_vec): Return std::vector of gdb::unique_xmalloc_ptr. (dirnames_to_char_ptr_vec_append): Take std::vector of gdb::unique_xmalloc_ptr. (dirnames_to_char_ptr_vec): Return std::vector of gdb::unique_xmalloc_ptr. * common/gdb_vecs.c (delim_string_to_char_ptr_vec_append): Take std::vector of gdb::unique_xmalloc_ptr, adjust the code. (delim_string_to_char_ptr_vec): Return an std::vector of gdb::unique_xmalloc_ptr, adjust the code. (dirnames_to_char_ptr_vec_append): Take an std::vector of gdb::unique_xmalloc_ptr, adjust the code. (dirnames_to_char_ptr_vec): Return an std::vector of gdb::unique_xmalloc_ptr, adjust the code. * auto-load.c (auto_load_safe_path_vec): Change type to std::vector of gdb::unique_xmalloc_ptr. (auto_load_expand_dir_vars): Return an std::vector of gdb::unique_xmalloc_ptr, adjust the code. (auto_load_safe_path_vec_update): Adjust. (filename_is_in_auto_load_safe_path_vec): Adjust. (auto_load_objfile_script_1): Adjust. * build-id.c (build_id_to_debug_bfd): Adjust. * linux-thread-db.c (thread_db_load_search): Adjust. * source.c (add_path): Adjust. (openp): Adjust. * symfile.c (find_separate_debug_file): Adjust. * utils.c (do_free_char_ptr_vec): Remove. (make_cleanup_free_char_ptr_vec): Remove. gdb/gdbserver/ChangeLog: * server.c (parse_debug_format_options): Adjust to delim_string_to_char_ptr_vec changes. * thread-db.c (thread_db_load_search): Adjust to dirnames_to_char_ptr_vec changes.
2018-03-02Conditionally include "<windows.h>" on common/pathstuff.c (and unbreak build ↵Sergio Durigan Junior2-0/+9
on mingw*) commit b4987c956dfa44ca9fd8552f63e15f5fa094b2a4 Author: Sergio Durigan Junior <sergiodj@redhat.com> Date: Fri Feb 9 18:44:59 2018 -0500 Create new common/pathstuff.[ch] Introduced a regression when compiling for mingw*: /gdb/common/pathstuff.c: In function 'gdb::unique_xmalloc_ptr<char> gdb_realpath(const char*)': /gdb/common/pathstuff.c:56:14: error: 'MAX_PATH' was not declared in this scope char buf[MAX_PATH]; ^ /gdb/common/pathstuff.c:57:5: error: 'DWORD' was not declared in this scope DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL); ^ /gdb/common/pathstuff.c:57:11: error: expected ';' before 'len' DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL); ^ /gdb/common/pathstuff.c:63:9: error: 'len' was not declared in this scope if (len > 0 && len < MAX_PATH) ^ /gdb/common/pathstuff.c:64:54: error: 'buf' was not declared in this scope return gdb::unique_xmalloc_ptr<char> (xstrdup (buf)); ^ make[2]: *** [pathstuff.o] Error 1 The proper fix is to conditionally include "<windows.h>". This commit does that, without introducing any regressions as per tests made by our BuildBot. gdb/ChangeLog: 2018-03-01 Sergio Durigan Junior <sergiodj@redhat.com> PR gdb/22907 * common/pathstuff.c: Conditionally include "<windows.h>".
2018-03-02[GDB/testsuite] Use %progbits in watch-loc.cThomas Preud'homme3-2/+7
While using @progbits in .pushsection work on some targets, it does not work on arm target where this introduces a comment. This patch replaces its use in gdb.dlang/watch-loc.c and gdb.mi/dw2-ref-missing-frame-func.c by %progbits which should work on all targets since it is used in target-independent elf/section7.s GAS test. 2018-03-02 Thomas Preud'homme <thomas.preudhomme@arm.com> gdb/testsuite/ * gdb.dlang/watch-loc.c: Use %progbits instead of @progbits. * gdb.mi/dw2-ref-missing-frame-func.c: Likewise.
2018-03-01Improve gcore shell quoting and portabilityGeorg Sauthoff2-7/+12
The gcore shell script (gdb/gcore.in) doesn't quote its variables enough. For example, trying to write a core file with - say - a space ungraciously fails like this: $ gcore -o 'foo bar' 6270 /usr/bin/gcore: line 92: [: foo: binary operator expected gcore: failed to create foo bar.6270 Similarly, one can inject meta characters like * (by accident) that may yield unexpected results, e.g. as in: $ gcore -o foobar '*' This change fixes these issues in several places. Aso, since the script uses array syntax, the patch changes the the shell in the first line from `/bin/sh` to /bin/bash`. POSIX doesn't specify the array syntax for shell, thus, the script doesn't work on systems where /bin/sh is linked to - say - dash. Since the source gcore.in already is processed by a pre-processor one could even auto-detect the path to bash and thus dynamically generate the first line. For systems where bash isn't available via /bin/bash. But I think this would be overkill and /bin/bash is good enough as most systems probably have it. gdb/ChangeLog: PR gdb/22888 * gcore.in: Quote variables and switch interpreter to bash.
2018-03-01Fix Rust enum test failuresTom Tromey2-2/+11
Pedro pointed out that some Rust tests were failing after the recent enum change. I was able to reproduce this even with the most current Rust compiler -- no test was failing, but rather the gdb internal error was causing an "untested" result, which I didn't notice. The internal error is caused by a bad assertion in alloc_discriminant_info. This happened because, in an earlier version of the patch, the discriminant could only appear at index 0. However, it can now appear anywhere. This patch fixes the assertion in the obvious way, and adds a second assertion to ensure that the discriminant is also correct. Fixing this revealed a real failure, which was caused by using the wrong base name when computing the name of a univariant enum's sole member. This is also fixed here. Tested by running the gdb.rust tests with rustc 1.23 and double-checking the summary: # of expected passes 276 Note that if you try this yourself, it is still possible to get an "untested" result from traits.exp if your Rust compiler is old enough. 2018-03-01 Tom Tromey <tom@tromey.com> * dwarf2read.c (alloc_discriminant_info): Fix default_index assertion. Add assertion for discriminant_index. (quirk_rust_enum): Use correct base type name in univariant case.
2018-03-01Propagate record_print_flagsSimon Marchi7-40/+54
These flags are returned as an int by get_call_history_modifiers, and get cast back to record_print_flags in the btrace code. Instead, we can make the arguments of that type from start to end. gdb/ChangeLog: * record.c (get_call_history_modifiers): Return a record_print_flags. (cmd_record_call_history): Adjust. * record-btrace.c (record_btrace_call_history): Adjust. (record_btrace_call_history_range): Adjust. (record_btrace_call_history_from): Adjust. * target-debug.h (target_debug_print_record_print_flags): New. * target-delegates.c: Re-generate. * target.c (target_call_history): Change flags type. (target_call_history_from): Likewise. (target_call_history_range): Likewise. * target.h (struct target_ops) <target_call_history>: Likewise. (target_call_history_from): Likewise. (target_call_history_range): Likewise.
2018-03-01btrace, gdbserver: check btrace target pointersMarkus Metzger3-18/+72
By removing the supports_btrace gdbserver target method we relied on GDB trying to enable branch tracing and failing on the attempt. For targets that do not provide the btrace methods, however, an initial request from GDB for the branch trace configuration to detect whether gdbserver is already recording resulted in a protocol error. Have the btrace target methods throw a "Target does not suppor branch tracing" error and be prepared to handle exceptions in all functions that call btrace target methods. We therefore turn the target_* macros into static inline functions. Also remove the additional btrace target method checks that resulted in the above protocol error. Thanks to Maciej W. Rozycki <macro@mips.com> for reporting this. gdbserver/ * target.h (target_enable_btrace, target_disable_btrace) (target_read_btrace, target_read_btrace_conf): Turn macro into inline function. Throw error if target method is not defined. * server.c (handle_qxfer_btrace, handle_qxfer_btrace_conf): Remove check for btrace target method. Be prepared to handle exceptions from btrace target methods.
2018-02-28Change order of error message printed when gdbserver can't find CWDSergio Durigan Junior2-1/+6
I forgot to address Pedro's comment about my last patch and change the order of the message printed when getcwd returns NULL on gdbserver. This obvious commit does it. gdb/gdbserver/ChangeLog: 2018-02-28 Sergio Durigan Junior <sergiodj@redhat.com> * server.c (captured_main): Change order of error message printed when the current working directory cannot be found.
2018-02-28Make gdbserver work with filename-only binariesSergio Durigan Junior11-47/+205
Simon mentioned on IRC that, after the startup-with-shell feature has been implemented on gdbserver, it is not possible to specify a filename-only binary, like: $ gdbserver :1234 a.out /bin/bash: line 0: exec: a.out: not found During startup program exited with code 127. Exiting This happens on systems where the current directory "." is not listed in the PATH environment variable. Although including "." in the PATH variable is a possible workaround, this can be considered a regression because before startup-with-shell it was possible to use only the filename (due to reason that gdbserver used "exec*" directly). The idea of the patch is to verify if the program path provided by the user (or by the remote protocol) contains a directory separator character. If it doesn't, it means we're dealing with a filename-only binary, so we call "gdb_abspath" to properly expand it and transform it into a full path. Otherwise, we leave the program path untouched. This mimicks the behaviour seen on GDB (look at "openp" and "attach_inferior", for example). I am also submitting a testcase which exercises the scenario described above. This test requires gdbserver to be executed in a different CWD than the original, so I also created a helper function, "with_cwd" (on testsuite/lib/gdb.exp), which takes care of cd'ing into and out of the specified dir. Built and regtested on BuildBot, without regressions. gdb/ChangeLog: 2018-02-28 Sergio Durigan Junior <sergiodj@redhat.com> Simon Marchi <simon.marchi@polymtl.ca> * common/common-utils.c: Include "sys/stat.h". (is_regular_file): Move here from "source.c"; change return type to "bool". * common/common-utils.h (is_regular_file): New prototype. * common/pathstuff.c (contains_dir_separator): New function. * common/pathstuff.h (contains_dir_separator): New prototype. * source.c: Don't include "sys/stat.h". (is_regular_file): Move to "common/common-utils.c". gdb/gdbserver/ChangeLog: 2018-02-28 Sergio Durigan Junior <sergiodj@redhat.com> * server.c: Include "filenames.h" and "pathstuff.h". (program_name): Delete variable. (program_path): New anonymous class. (get_exec_wrapper): Use "program_path" instead of "program_name". (handle_v_run): Likewise. (captured_main): Likewise. (process_serial_event): Likewise. gdb/testsuite/ChangeLog: 2018-02-28 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.server/abspath.exp: New file. * lib/gdb.exp (with_cwd): New procedure.
2018-02-28Create new common/pathstuff.[ch]Sergio Durigan Junior24-129/+276
This commit moves the path manipulation routines found on utils.c to a new common/pathstuff.c, and updates the Makefile.in's accordingly. The routines moved are "gdb_realpath", "gdb_realpath_keepfile" and "gdb_abspath". This will be needed because gdbserver will have to call "gdb_abspath" on my next patch, which implements a way to expand the path of the inferior provided by the user in order to allow specifying just the binary name when starting gdbserver, like: $ gdbserver :1234 a.out With the recent addition of the startup-with-shell feature on gdbserver, this scenario doesn't work anymore if the user doesn't have the current directory listed in the PATH variable. I had to do a minor adjustment on "gdb_abspath" because we don't have access to "tilde_expand" on gdbserver, so now the function is using "gdb_tilde_expand" instead. Otherwise, the code is the same. Regression tested on the BuildBot, without regressions. gdb/ChangeLog: 2018-02-28 Sergio Durigan Junior <sergiodj@redhat.com> * Makefile.in (COMMON_SFILES): Add "common/pathstuff.c". (HFILES_NO_SRCDIR): Add "common/pathstuff.h". * auto-load.c: Include "common/pathstuff.h". * common/common-def.h (current_directory): Move here. * common/gdb_tilde_expand.c (gdb_tilde_expand_up): New function. * common/gdb_tilde_expand.h (gdb_tilde_expand_up): New prototype. * common/pathstuff.c: New file. * common/pathstuff.h: New file. * compile/compile.c: Include "common/pathstuff.h". * defs.h (current_directory): Move to "common/common-defs.h". * dwarf2read.c: Include "common/pathstuff.h". * exec.c: Likewise. * guile/scm-safe-call.c: Likewise. * linux-thread-db.c: Likewise. * main.c: Likewise. * nto-tdep.c: Likewise. * objfiles.c: Likewise. * source.c: Likewise. * symtab.c: Likewise. * utils.c: Include "common/pathstuff.h". (gdb_realpath): Move to "common/pathstuff.c". (gdb_realpath_keepfile): Likewise. (gdb_abspath): Likewise. * utils.h (gdb_realpath): Move to "common/pathstuff.h". (gdb_realpath_keepfile): Likewise. (gdb_abspath): Likewise. gdb/gdbserver/ChangeLog: 2018-02-28 Sergio Durigan Junior <sergiodj@redhat.com> * Makefile.in (SFILES): Add "$(srcdir)/common/pathstuff.c". (OBJS): Add "pathstuff.o". * server.c (current_directory): New global variable. (captured_main): Initialize "current_directory".
2018-02-28testsuite: Restore gdb_is_target_remote_promptSimon Marchi2-8/+24
In patch Add test for load command 3275ef477498e0500d7ea440f1bc51787acf4610 I removed gdb_is_target_remote_prompt, but did not realize it was used in mi_is_target_remote. This makes the gdb.mi/mi-nonstop.exp crash, for example: ERROR: (DejaGnu) proc "gdb_is_target_remote_prompt {[(]gdb[)] }" does not exist. The error code is TCL LOOKUP COMMAND gdb_is_target_remote_prompt The info on the error is: invalid command name "gdb_is_target_remote_prompt" while executing "::tcl_unknown gdb_is_target_remote_prompt {[(]gdb[)] }" ("uplevel" body line 1) invoked from within "uplevel 1 ::tcl_unknown $args" This patch restores it. gdb/testsuite/ChangeLog: * lib/gdb.exp (gdb_is_target_1): Add prompt_regexp parameter and use it. (gdb_is_target_remote_prompt): New proc. (gdb_is_target_remote): Use gdb_is_target_remote_prompt. (gdb_is_target_native): Pass prompt parameter to gdb_is_target_1.
2018-02-27Workaround a FreeBSD ptrace() bug with clearing thread events.John Baldwin2-0/+38
When multiple threads within a process wish to report STOPPED events from wait(), the kernel picks one thread event as the thread event to report. The chosen thread event is retrieved via PT_LWPINFO by passing the process ID as the request pid. If multiple events are pending, then the subsequent wait() after resuming a process will report another STOPPED event after resuming the process to handle the next thread event and so on. A single thread event is cleared as a side effect of resuming the process with PT_CONTINUE, PT_STEP, etc. In older kernels, however, the request pid was used to select which thread's event was cleared rather than always clearing the event that was just reported. To avoid clearing the event of the wrong LWP, always pass the process ID instead of an LWP ID to PT_CONTINUE or PT_SYSCALL. In the case of stepping, the process ID cannot be used with PT_STEP since it would step the thread that reported an event which may not be the thread indicated by PTID. For stepping, use PT_SETSTEP to enable stepping on the desired thread before resuming the process via PT_CONTINUE instead of using PT_STEP. This manifested as a failure in the gdb.threads/continue-pending-status.exp test. Specifically, if thread 2 reported a breakpoint and the test thus switched to thread 3 before continuing, thread 3's event (if any) was discarded and thread 2's breakpoint remained pending and was reported a second time as a duplicate event. As a result, the PC was decremented twice for the same breakpoint resulting in an illegal instruction fault on x86. gdb/ChangeLog: * fbsd-nat.c (fbsd_resume): Use PT_SETSTEP for stepping and a wildcard process pid for super_resume for kernels with a specific bug.
2018-02-27Update get_args documentationPhil Muldoon2-3/+24
This patch adds argument compilation documentation, expanding on the already existing comments, giving a more thorough explanation of the source of the arguments used in the final argument string. gdb/ChangeLog: * compile/compile.c (get_args): Add additional comments explaining function.
2018-02-27Change target_write_memory_blocks to use std::vectorTom Tromey4-228/+167
This changes target_write_memory_blocks to use std::vector, rather than VEC. This allows the removal of some cleanups. This version incorporates the additions that Simon made. Regression tested by the buildbot. ChangeLog 2018-02-27 Simon Marchi <simon.marchi@polymtl.ca> Tom Tromey <tom@tromey.com> * target.h (memory_write_request_s): Remove typedef. Don't define VEC. (target_write_memory_blocks): Change argument to std::vector. (struct memory_write_request): Add constructor. * target-memory.c (compare_block_starting_address): Return bool. Change argument types. (claim_memory): Change arguments to use std::vector. (split_regular_and_flash_blocks, blocks_to_erase) (compute_garbled_blocks): Likewise. (cleanup_request_data, cleanup_write_requests_vector): Remove. (target_write_memory_blocks): Change argument to std::vector. * symfile.c (struct load_section_data): Add constructor and destructor. Use std::vector for "requests". (struct load_progress_data): Add initializers. (load_section_callback): Update. Use "new". (clear_memory_write_data): Remove. (generic_load): Update.
2018-02-27Explicitly specify common tdesc.h for use with aarch64.hAlan Hayward2-1/+5
gdb/ * arch/aarch64.h: Use common/tdesc.h.
2018-02-26Add test for load commandSimon Marchi4-8/+98
There doesn't seem to by any test for the load command. I suggest to add this test, so that we can have a minimum of confidence we don't break it completely while refactoring the code that implements it. gdb/testsuite/ChangeLog: * gdb.base/load-command.c: New file. * gdb.base/load-command.exp: New file. * lib/gdb.exp (gdb_is_target_remote_prompt): Rename to... (gdb_is_target_1): ...this, and generalize for other targets than just remote. (gdb_is_target_remote): Use gdb_is_target_1. (gdb_is_target_native): use gdb_is_target_1.
2018-02-26MIPS: Don't use a 32-bit BFD architecture with a 64-bit ABIMaciej W. Rozycki2-0/+13
Select `bfd_mach_mips4000', which corresponds to the MIPS III ISA, the earlies with 64-bit support, whenever a 32-bit BFD architecture has been chosen to use with a 64-bit ABI. The situation can happen in a few cases: 1. When the user has used `set architecture' or `set mips abi' commands to override automatic selection and then starts a debug session by requesting to run, attach or connect to a target. 2. In native debugging when reattaching to a previously debugged process where the program to be debugged has been since discarded, as observed with: FAIL: gdb.base/attach.exp: attach2, with no file (GDB internal error) in n32 and n64 regression testing. 3. In remote debugging with a non-XML debug stub when discarding the program to be debugged while connected to the remote target, as observed with: FAIL: gdb.base/break-unload-file.exp: cmdline: always-inserted on: break: file (GDB internal error) in n32 and n64 regression testing. In the latter two cases the ABI, quite rightfully, is retained while the program to be debugged is discarded. This is because in that case the ABI previously determined is carried over along with `gdbarch' in use, which is retained. The BFD architecture is however discarded and the default then applies, because it is not attached to `gdbarch'. In all these cases we trip with an internal error message as follows: .../gdb/mips-tdep.c:766: internal-error: bad register size A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) n This is a bug, please report it. For instructions, see: <http://www.gnu.org/software/gdb/bugs/>. coming from `mips_pseudo_register_read', because the raw register width inferred from the BFD architecture turns out to be 4 for the general registers while the cooked register width inferred from the ABI in effect is 8. We do not hit this internal error in remote debugging with an XML debug stub, because in that case raw register width information is passed by the stub along with the XML target description. Ultimately I think we ought to make the BFD architecture sticky like the ABI, however in the interim this simple fix will do, removing the error across all three cases. The case where the user has used `set mips abi' or `set architecture' commands has to be handled anyway, and although a more sophisticated solution could be envisaged, such as reporting an error with the respective `set' command, I think this is too much of a corner case to bother. gdb/ * mips-tdep.c (mips_gdbarch_init): Don't use a 32-bit BFD architecture with a 64-bit ABI.
2018-02-26MIPS: Reorder ABI determination ahead of target description loadingMaciej W. Rozycki2-182/+183
Move ABI determination code ahead of target description loading so that architecture information can be adjusted according to the ABI selected, and then used in OS dependent register information initialization needed for target description processing. No functional change. gdb/ * gdb/mips-tdep.c (mips_gdbarch_init): Reorder ABI determination ahead of target description loading.
2018-02-26Change frame_filter_flags to use DEF_ENUM_FLAGS_TYPETom Tromey8-18/+45
This changes frame_filter_flags to use DEF_ENUM_FLAGS_TYPE, and updates all the uses. It also changes the enum constants to use <<, as suggested by Sergio. ChangeLog 2018-02-26 Tom Tromey <tom@tromey.com> * stack.c (backtrace_command_1): Update. * python/python-internal.h (gdbpy_apply_frame_filter): Change type of "flags". * python/py-framefilter.c (py_print_frame) (gdbpy_apply_frame_filter): Change type of "flags". * mi/mi-cmd-stack.c (mi_apply_ext_lang_frame_filter): Change type of "flags". (mi_cmd_stack_list_frames, mi_cmd_stack_list_locals) (mi_cmd_stack_list_args, mi_cmd_stack_list_variables): Update. * extension.h (enum frame_filter_flag): Rename from frame_filter_flags. (frame_filter_flags): Define using DEF_ENUM_FLAGS_TYPE. (apply_ext_lang_frame_filter): Change type of "flags". * extension.c (apply_ext_lang_frame_filter): Change type of "flags". * extension-priv.h (struct extension_language_ops) <apply_frame_filter>: Change type of "flags".
2018-02-26Make "bt N" print correct number of frames when using a frame filterTom Tromey6-2/+49
PR python/16497 notes that using "bt" with a positive argument prints the wrong number of frames when a frame filter is in use. Also, in this case, the non-frame-filter path will print a message about "More stack frames" when there are more; but this is not done in the frame-filter case. The first problem is that backtrace_command_1 passes the wrong value to apply_ext_lang_frame_filter -- that function takes the final frame's number as an argument, but backtrace_command_1 passes the count, which is off by one. The solution to the second problem is to have the C stack-printing code stop at the correct number of frames and then print the message. Tested using the buildbot. ChangeLog 2018-02-26 Tom Tromey <tom@tromey.com> PR python/16497: * stack.c (backtrace_command_1): Set PRINT_MORE_FRAMES flag. Fix off-by-one in py_end computation. * python/py-framefilter.c (gdbpy_apply_frame_filter): Handle PRINT_MORE_FRAMES. * extension.h (enum frame_filter_flags) <PRINT_MORE_FRAMES>: New constant. 2018-02-26 Tom Tromey <tom@tromey.com> PR python/16497: * gdb.python/py-framefilter.exp: Update test.
2018-02-26Handle DW_TAG_variant_part and DW_TAG_variantTom Tromey5-37/+470
This changes dwarf2read to understand DW_TAG_variant_part and DW_TAG_variant. Note that DW_AT_discr_list is not handled. I did not need this for Rust. I imagine this should not be too hard to add later, should someone need it. Meanwhile I have gdb emit a complaint if it is seen. There is a lurking issue concerning the placement of the discriminant in the DWARF. For Rust, I ended up following the letter of the standard and having the discriminant be a child of the DW_TAG_variant_part. However, GCC's Ada support does not do this. Pierre-Marie filed this with the DWARF committee: http://dwarfstd.org/ShowIssue.php?issue=180123.1 However as that is read-only, if you have comments you might consider adding them to the GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83935 Finally, there is a DWARF extension lurking in here. In Rust, a univariant enum will not have a discriminant. However, in order to unify the representation of all data-carrying enums, I've made LLVM (and my forthcoming rustc patch) emit a univariant enum using a DW_TAG_variant with a single variant part and without DW_AT_discr. The lack of this DW_AT_discr is the extension. I will submit an issue on dwarfstd.org about this. 2018-02-26 Tom Tromey <tom@tromey.com> * dwarf2read.c (struct variant_field): New. (struct nextfield) <variant>: New field. (dwarf2_add_field): Handle DW_TAG_variant_part. (dwarf2_attach_fields_to_type): Attach a discriminant_info to a discriminated union. (read_structure_type): Handle DW_TAG_variant_part. (handle_struct_member_die): New function, extracted from process_structure_scope. Handle DW_TAG_variant. (process_structure_scope): Handle discriminated unions. Call handle_struct_member_die. 2018-02-26 Tom Tromey <tom@tromey.com> * gdb.dwarf2/variant.c: New file. * gdb.dwarf2/variant.exp: New file.
2018-02-26Convert Rust to use discriminated unionsTom Tromey6-510/+640
A Rust enum is, essentially, a discriminated union. Currently the Rust language support handles Rust enums locally, in rust-lang.c. However, because I am changing the Rust compiler to use DW_TAG_variant* to represent enums, it seemed better to have a single internal representation for Rust enums in gdb. This patch implements this idea by moving the current Rust enum handling code to dwarf2read. This allows the simplification of some parts of rust-lang.c as well. 2018-02-26 Tom Tromey <tom@tromey.com> * rust-lang.h (rust_last_path_segment): Declare. * rust-lang.c (rust_last_path_segment): Now public. Change contract. (struct disr_info): Remove. (RUST_ENUM_PREFIX, RUST_ENCODED_ENUM_REAL) (RUST_ENCODED_ENUM_HIDDEN, rust_union_is_untagged) (rust_get_disr_info, rust_tuple_variant_type_p): Remove. (rust_enum_p, rust_enum_variant): New function. (rust_underscore_fields): Remove "offset" parameter. (rust_print_enum): New function. (rust_val_print) <TYPE_CODE_UNION>: Remove enum code. <TYPE_CODE_STRUCT>: Call rust_print_enum when appropriate. (rust_print_struct_def): Add "for_rust_enum" parameter. Handle enums. (rust_internal_print_type): New function, from rust_print_type. Remove enum code. (rust_print_type): Call rust_internal_print_type. (rust_evaluate_subexp) <STRUCTOP_ANONYMOUS, STRUCTOP_STRUCT>: Update enum handling. * dwarf2read.c (struct dwarf2_cu) <rust_unions>: New field. (rust_fully_qualify, alloc_discriminant_info, quirk_rust_enum) (rust_union_quirks): New functions. (process_full_comp_unit, process_full_type_unit): Call rust_union_quirks. (process_structure_scope): Update rust_unions if necessary. 2018-02-26 Tom Tromey <tom@tromey.com> * gdb.rust/simple.exp: Accept more possible results in enum test.
2018-02-26Initial support for variant partsTom Tromey4-0/+113
This adds some initial support for variant parts to gdbtypes.h. A variant part is represented as a union. The union has a flag indicating that it has a discriminant, and information about the discriminant is attached using the dynamic property system. 2018-02-26 Tom Tromey <tom@tromey.com> * value.h (value_union_variant): Declare. * valops.c (value_union_variant): New function. * gdbtypes.h (TYPE_FLAG_DISCRIMINATED_UNION): New macro. (struct discriminant_info): New. (enum dynamic_prop_node_kind) <DYN_PROP_DISCRIMINATED>: New enumerator. (struct main_type) <flag_discriminated_union>: New field.
2018-02-26Sign-extend non-bit-fields in unpack_bits_as_longTom Tromey4-3/+76
unpack_bits_as_long is documented as sign-extending its result when the type is signed. However, it was only doing sign-extension in the case where the field was a bitfield -- that is, not when the "bitsize" parameter was 0, indicating the size should be taken from the type. Also, unpack_bits_as_long was incorrectly computing the shift for big-endian architectures for the non-bitfield case. This patch fixes these bugs in a straightforward way. A new selftest is included. 2018-02-26 Tom Tromey <tom@tromey.com> * Makefile.in (SUBDIR_UNITTESTS_SRCS): Add unittests/unpack-selftests.c. * unittests/unpack-selftests.c: New file. * value.c (unpack_bits_as_long): Fix bugs in non-bitfield cases.
2018-02-26Move read_partial_die to partial_die_info::readYao Qi2-52/+64
gdb: 2018-02-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (struct partial_die_info) <read>: New method. (read_partial_die): Remove the declaration. (load_partial_dies): Update. (partial_die_info::partial_die_info): (read_partial_die): Change it to partial_die_info::read.
2018-02-26Move fixup_partial_die to partial_die_info::fixupYao Qi2-38/+44
fixup_partial_die can be a partial_die_info method fixup. gdb: 2018-02-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (struct partial_die_info) <fixup>: New method. (fixup_partial_die): Remove declaration. (scan_partial_symbols): Update. (partial_die_parent_scope): Likewise. (partial_die_full_name): Likewise. (fixup_partial_die): Change it to partial_die_info::fixup.
2018-02-26Remove one argument abbrev_len in read_partial_dieYao Qi2-7/+11
gdb: 2018-02-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (read_partial_die): Update the declaration. (load_partial_dies): Caller update. (read_partial_die): Remove one argument abbrev_len.
2018-02-26Class-fy partial_die_infoYao Qi2-26/+70
This patch is to class-fy partial_die_info. Two things special here, - disable assignment operator, but keep copy ctor, which is used in load_partial_dies, - have a private ctor which is only used by dwarf2_cu::find_partial_die, I don't want other code use it, so make it private, gdb: 2018-02-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (struct partial_die_info): Add ctor, delete assignment operator. (load_partial_dies): Use ctor and copy ctor. (read_partial_die): Update. (dwarf2_cu::find_partial_die): Use ctor.
2018-02-26Change find_partial_die_in_comp_unit to dwarf2_cu::find_partial_dieYao Qi2-6/+15
This patch changes find_partial_die_in_comp_unit to a dwarf2_cu method find_partial_die. gdb: 2018-02-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (struct dwarf2_cu) <find_partial_die>: New method. (find_partial_die_in_comp_unit): Change it to dwarf2_cu::find_partial_die. (find_partial_die): Update.
2018-02-26Don't check abbrev is NULL in read_partial_dieYao Qi2-10/+12
'abbrev' won't be NULL, so don't check it. gdb: 2018-02-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (read_partial_die): Remove the code checking abbrev is NULL.
2018-02-26Re-write partial_die_info allocation in load_partial_diesYao Qi2-30/+29
load_partial_dies has a "while (1)" loop to visit each die, and create partial_die_info if needed in each iteration, like this, part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info); while (1) { if (foo1) continue; if (foo2) continue; read_partial_die (, , part_die, ,); .... part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info); }; the code was written in a way that spaces are allocated on necessary on cu->comp_unit_obstack. I want to class-fy partial_die_info, but partial_die_info ctor can't follow XOBNEW immediately, so this patch rewrite this loop to: while (1) { if (foo1) continue; if (foo2) continue; struct partial_die_info pdi; read_partial_die (, , &pdi, ,); part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info); memcpy (part_die, &pdi, sizeof (pdi)); }; we create a local variable pdi, if we need it, call XOBNEW, and copy. This also reduce one XOBNEW call. I measured the number of XOBNEW call in load_partial_dies when gdb reads dwarf2read.o, without this patch, it is 18827, and with this patch, it is 18826. gdb: 2018-026-26 Yao Qi <yao.qi@linaro.org> * dwarf2read.c (load_partial_dies): Move the location of XOBNEW.
2018-02-26Move arch/tdesc.h to common/tdesc.hAlan Hayward32-53/+90
gdb/ * arch/amd64.h: Use common/tdesc.h. * arch/i386.c: Likewise. * arch/i386.h: Likewise. * arch/tic6x.c: Likewise. * arch/tdesc.h: Move file from here... * common/tdesc.h: ...to here. * features/aarch64-core.c: Regenerate. * features/aarch64-fpu.c: Regenerate. * features/i386/32bit-avx.c: Regenerate. * features/i386/32bit-avx512.c: Regenerate. * features/i386/32bit-core.c: Regenerate. * features/i386/32bit-linux.c: Regenerate. * features/i386/32bit-mpx.c: Regenerate. * features/i386/32bit-pkeys.c: Regenerate. * features/i386/32bit-sse.c: Regenerate. * features/i386/64bit-avx.c: Regenerate. * features/i386/64bit-avx512.c: Regenerate. * features/i386/64bit-core.c: Regenerate. * features/i386/64bit-linux.c: Regenerate. * features/i386/64bit-mpx.c: Regenerate. * features/i386/64bit-pkeys.c: Regenerate. * features/i386/64bit-segments.c: Regenerate. * features/i386/64bit-sse.c: Regenerate. * features/i386/x32-core.c: Regenerate. * features/tic6x-c6xp.c: Regenerate. * features/tic6x-core.c: Regenerate. * features/tic6x-gp.c: Regenerate. * target-descriptions.c: Use common/tdesc.h. * target-descriptions.h: Likewise. gdbserver/ * tdesc.c: Use common/tdesc.h. * tdesc.h: Likewise.
2018-02-25Fix double space expected in cp_test_ptype_classSimon Marchi2-1/+6
I noticed some failures of some buildbot slaves, e.g.: FAIL: gdb.cp/nested-types.exp: ptype S10 (limit = 1) // wrong nested type enum definition: enum S10::E10 {S10::A10, S10::B10, S10::C10}; The issue is that they have an older gcc (not c++11 by default?) that doesn't emit the enum underlying type information. When the enum type is printed by ptype, it looks like this: enum S10::E10 {S10::A10, S10::B10, S10::C10}; instead of this on older gccs: enum S10::E10 : unsigned int {S10::A10, S10::B10, S10::C10}; The regex that matches this is in cp_test_ptype_class, and is enum $nested_name (: (unsigned )?int)? \{ If the "unsigned int" portion is not present, then it requires the string to have two spaces between the enum name and opening bracket. The fix is simply to move the trailing space inside the ? group. gdb/testsuite/ChangeLog: * lib/cp-support.exp (cp_test_ptype_class): Move space inside parentheses.
2018-02-24Remove most cleanups from linux-thread-db.cTom Tromey2-103/+49
This removes most (but not all) cleanups from linux-thread-db.c. std::string and std::vector are used in place of manual memory management. The remaining cleanup in linux-thread-db.c uses make_cleanup_free_char_ptr_vec, which requires a somewhat bigger change. Regression tested by the buildbot. ChangeLog 2018-02-24 Tom Tromey <tom@tromey.com> * linux-thread-db.c (try_thread_db_load_from_pdir_1) (try_thread_db_load_from_dir, thread_db_load_search): Use std::string. (info_auto_load_libthread_db_compare): Return bool. Change argument types. (info_auto_load_libthread_db): Use std::vector, std::string. Remove cleanups.
2018-02-24Remove cleanups from check_fast_tracepoint_salsTom Tromey8-23/+28
This changes the gdbarch fast_tracepoint_valid_at method to use a std::string as its out parameter, and then updates all the uses. This allows removing a cleanup from breakpoint.c. Regression tested by the buildbot. ChangeLog 2018-02-24 Tom Tromey <tom@tromey.com> * i386-tdep.c (i386_fast_tracepoint_valid_at): "msg" now a std::string. * gdbarch.sh (fast_tracepoint_valid_at): Change "msg" to a std::string*. * gdbarch.c: Rebuild. * gdbarch.h: Rebuild. * breakpoint.c (check_fast_tracepoint_sals): Use std::string. * arch-utils.h (default_fast_tracepoint_valid_at): Update. * arch-utils.c (default_fast_tracepoint_valid_at): "msg" now a std::string*.
2018-02-23GDB/testsuite: Fix a typo in $actual_lineMaciej W. Rozycki2-1/+6
Fix a commit 883fd55ab104 ("Record nested types") issue: ERROR: tcl error sourcing .../gdb/testsuite/gdb.cp/nested-types.exp. ERROR: can't read "actual_linejj": no such variable while executing "append txt " definition: $actual_linejj"" (procedure "cp_test_ptype_class" line 324) invoked from within "cp_test_ptype_class $name "ptype $name (limit = $limit)" $key $name $children" (procedure "test_nested_limit" line 28) invoked from within "test_nested_limit -1 false" (file ".../gdb/testsuite/gdb.cp/nested-types.exp" line 310) invoked from within "source .../gdb/testsuite/gdb.cp/nested-types.exp" ("uplevel" body line 1) invoked from within "uplevel #0 source .../gdb/testsuite/gdb.cp/nested-types.exp" invoked from within "catch "uplevel #0 source $test_file_name"" testcase .../gdb/testsuite/gdb.cp/nested-types.exp completed in 9 seconds caused by $actual_line having been accidentally referred to as $actual_linejj in one place. gdb/testsuite/ * lib/cp-support.exp (cp_test_ptype_class): Fix a typo in the name of a variable: $actual_linejj -> $actual_line.
2018-02-23dwarf: Make sect_offset 64-bitsSimon Marchi3-168/+225
Does anybody have an opinion about this? It would be nice to unbreak the "default" build with clang (i.e. without passing special -Wno-error= flags). Here's a version rebased on today's master. From 47d28075117fa2ddb93584ec50881e33777a85e5 Mon Sep 17 00:00:00 2001 From: Simon Marchi <simon.marchi@ericsson.com> Date: Sat, 30 Dec 2017 22:48:18 -0500 Subject: [PATCH] dwarf: Make sect_offset 64-bits Compiling with Clang 6 shows these errors: /home/emaisin/src/binutils-gdb/gdb/dwarf2read.c:26610:43: error: result of comparison of constant 4294967296 with expression of type 'typename std::underlying_type<sect_offset>::type' (a ka 'unsigned int') is always false [-Werror,-Wtautological-constant-out-of-range-compare] if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/emaisin/src/binutils-gdb/gdb/dwarf2read.c:26618:43: error: result of comparison of constant 4294967296 with expression of type 'typename std::underlying_type<sect_offset>::type' (a ka 'unsigned int') is always false [-Werror,-Wtautological-constant-out-of-range-compare] if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The code in question checks if there is any offset exceeding 32 bits, and therefore if we need to use the 64-bit DWARF format when writing the .debug_names section. The type we use currently to represent section offsets is an unsigned int (32-bits), which means a value of this type will never exceed 32 bits, hence the errors above. There are many signs that we want to support 64-bits DWARF (although I haven't tested), such as: - We correctly read initial length fields (read_initial_length) - We take that into account when reading offsets (read_offset_1) - The check_dwarf64_offsets function However, I don't see how it can work if sect_offset is a 32-bits type. Every time we record a section offset, we risk truncating the value. And if a file uses the 64-bit DWARF format, it's most likely because there are such offset values that overflow 32 bits. Because of this, I think the way forward is to change sect_offset to be a uint64_t. It will be able to represent any offset, regardless of the bitness of the DWARF info. This patch was regtested on the buildbot. gdb/ChangeLog: * gdbtypes.h (sect_offset): Change type to uint64_t. (sect_offset_str): New function. * dwarf2read.c (create_addrmap_from_aranges): Use sect_offset_str. (error_check_comp_unit_head): Likewise. (create_debug_type_hash_table): Likewise. (read_cutu_die_from_dwo): Likewise. (init_cutu_and_read_dies): Likewise. (init_cutu_and_read_dies_no_follow): Likewise. (process_psymtab_comp_unit_reader): Likewise. (partial_die_parent_scope): Likewise. (peek_die_abbrev): Likewise. (process_queue): Likewise. (dwarf2_physname): Likewise. (read_namespace_alias): Likewise. (read_import_statement): Likewise. (create_dwo_cu_reader): Likewise. (create_cus_hash_table): Likewise. (lookup_dwo_cutu): Likewise. (inherit_abstract_dies): Likewise. (read_func_scope): Likewise. (read_call_site_scope): Likewise. (dwarf2_add_member_fn): Likewise. (read_common_block): Likewise. (read_module_type): Likewise. (read_typedef): Likewise. (read_subrange_type): Likewise. (load_partial_dies): Likewise. (read_partial_die): Likewise. (find_partial_die): Likewise. (read_str_index): Likewise. (dwarf2_string_attr): Likewise. (build_error_marker_type): Likewise. (lookup_die_type): Likewise. (dump_die_shallow): Likewise. (follow_die_ref): Likewise. (dwarf2_fetch_die_loc_sect_off): Likewise. (dwarf2_fetch_constant_bytes): Likewise. (follow_die_sig): Likewise. (get_signatured_type): Likewise. (get_DW_AT_signature_type): Likewise. (dwarf2_find_containing_comp_unit): Likewise. (set_die_type): Likewise.
2018-02-21Fix a typo.John Baldwin2-1/+5
gdb/testsuite/ChangeLog: * gdb.arch/amd64-i386-address.exp: Fix a typo.