aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2014-01-27btrace: initiate teardown when closing record btrace targetMarkus Metzger2-1/+11
The to_teardown_btrace target method is used to free btrace resources during shutdown when target record has already been unpushed and we can't reliably talk to a remote target to disable branch tracing. Tracing resources are freed for each thread when the thread is removed; both on the GDB side and on the gdbserver side. In the remote case, the remote target that provides to_teardown_btrace to free the GDB side resources has already been unpushed when threads are destroyed. This results in a complaint "You can't do this ..." and in a few bytes of memory leaked for each thread. Initiate btrace teardown in record_btrace_close, so the remote target is still in place. 2014-01-27 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_close): Call btrace_teardown for all threads.
2014-01-27ada-lang.c: Really include "ui-out.h".Joel Brobecker2-2/+5
Currently, ada-lang.c pretends to include "ui-out.h" as follow: #ifdef UI_OUT #include "ui-out.h" #endif However, UI_OUT is never defined as far as I can tell. This is confirmed by rebuilding with a #error pragma inside the #ifdef UI_OUT block, which never triggers. Since this unit makes references to declarations from ui-out.h, this patch simply removes the #ifdef/#endif condition. This has not been an error so far because "ui-out.h" indirectly gets included, via one of the other .h files being included. gdb/ChangeLog: * ada-lang.c: Remove "#ifdef UI_OUT" condition for including "ui-out.h".
2014-01-27Try printing array range using the name of its index typeJoel Brobecker7-9/+172
type Char_Table is array (Character range Character'First .. Character'Last) of Natural; Trying to print the type description of this type currently yields: (gdb) ptype char_table type = array ('["00"]' .. '["ff"]') of natural Although technically correct, it seemed more useful to print the array range as: (gdb) ptype char_table type = array (character) of natural This patch implements this suggestion. gdb/ChangeLog: * ada-typeprint (type_is_full_subrange_of_target_type): New function. (print_range): Add parameter bounds_prefered_p. If not set, try printing range types using the name of their base type. (print_range_type): Add parameter bounds_prefered_p. Use it in call to print_range. (print_array_type, ada_print_type): Update calls to print_range and print_range_type. gdb/testsuite/ChangeLog: * gdb.ada/array_char_idx: New testcase.
2014-01-27Remove unncessary function declarations in ada-typeprint.c.Joel Brobecker2-18/+7
These declarations are unncessary, and make it extra work when trying to change the profile of one of these functions. This patch just removes them. Note that one of them (print_dynamic_range_bound), was improperly indented. gdb/ChangeLog: * ada-typeprint.c (print_array_type, print_choices, print_range) (print_range_bound, print_dynamic_range_bound, print_range_type): Remove declaration.
2014-01-27Add missing empty line after declaration in ada-typeprint.c:print_range.Joel Brobecker2-0/+6
gdb/ChangeLog: * ada-typeprint.c (print_range): Add missing empty line after local declaration.
2014-01-27[Ada] Array bound incorrectly printed for array indexed by enum subrangeJoel Brobecker2-1/+6
Consider the following declarations: type Range_Type is (One, Two, Three); type Array_Type is array (Range_Type range One .. Two) of Integer; A : Array_Type := (1, 2); Trying to print A can yield: (gdb) print a $1 = (one => 1, 2) The bound of the first element should not have been printed, since "one" is the first enumerate of type Range_Type. Similarly, with the following declarations: type Array2_Type is array (Range_Type range Two .. Three) of Integer; A2 : Array2_Type := (2, 3); GDB is failing to print the bound of the first element of "A2": (gdb) print a2 $2 = (2, 3) This is because the index type for both types Array_Type and Array2_Type are subranges (by DWARF definition for arrays), of an anonymous subrange type. When deciding whether to print the bound of the first element, we handle subranges, but only up to one level. This patch enhanced the code to handle any number of subrange levels. gdb/ChangeLog: * ada-valprint.c (print_optional_low_bound): Get index_type's target type for as long as it is a TYPE_CODE_RANGE. No testcase with this patch, but this will be tested via the testcase of another patch, which uses the DWARF assembler to generate debugging info for an array indexed by an enum.
2014-01-27Remove assert in procfs.c::procfs_make_note_section (x86-solaris)Joel Brobecker2-3/+5
On x86-solaris, the gcore command sometimes triggers the following internal error: (gdb) gcore /[...]/procfs.c:5523: internal-error: procfs_make_note_section: Assertion `thread_args.note_data != note_data' failed. The problem is extremely elusive, for reasons that will become clearer as I explain what is going on. The program used to produce this issue was really simple: | void break_me (void) { } | | int | main (void) | { | break_me (); | return 0; | } The procfs_make_note_section builds a buffer incrementally with the contents of the core's notes section. The interesting bits are: char *note_data = NULL; [...] note_data = (char *) elfcore_write_prpsinfo (obfd, note_data, note_size, fname, psargs); This is the first call to bfd's elfcore which initializes note_data. After that, we have a few more calls, which keep updating notes_data and note_size, but our interest lies in the following part of the function: thread_args.note_data = note_data; [...] proc_iterate_over_threads (pi, procfs_corefile_thread_callback, &thread_args); /* There should be always at least one thread. */ gdb_assert (thread_args.note_data != note_data); The comment implies that the assert is to verify that our loop iterated over at least one thread. The check is relying on the fact that the notes_data returned by the elfcore module changes at each iteration, via (in procfs_corefile_thread_callback): args->note_data = procfs_do_thread_registers (args->obfd, ptid, args->note_data, args->note_size, args->stop_signal); (which calls elfcore_write_lwpstatus). But, while it happens most of the time, thanks to a call to realloc in elfcore_write_note (the function that actually appends the data at the end of the notes buffer),... buf = (char *) realloc (buf, *bufsiz + newspace); ... this is by no means guarantied. In fact, under the right circumstances, the buffer was grown twice without changing addresses. Unfortunately, the circumstances are very sensitive, thus making this bug very elusive. This patch fixes the problem by simply removing the assert. This means we're losing the assertion that there is at least one thread, but I think that's OK. If we still want to keep the assertion, we have the option of either checking the buffer size, or else adding a boolean flag in the context structure that we'd set to true as soon as we have a thread. gdb/ChangeLog: * procfs.c (procfs_make_note_section): Remove assertion and associated comment.
2014-01-24Change len's type to ULONGEST: remote_read_bytes and get_core_siginfoYao Qi3-3/+8
Functions remote_read_bytes and get_core_siginfo are the callees of target to_xfer_partial interface, so argument 'len' should be changed to type ULONGEST. gdb: 2014-01-24 Yao Qi <yao@codesourcery.com> * remote.c (remote_read_bytes): Change type of len to ULONGEST. * corelow.c (get_core_siginfo): Likewise.
2014-01-24Change len's type to ULONGEST: remote_write_bytes_auxYao Qi2-3/+9
Hi, This patch changes the type of 'len' from ssize_t to ULONGEST. At the beginning Siddhesh Poyarekar proposed this patch [PATCH] Memory reads and writes should have size_t length https://sourceware.org/ml/gdb-patches/2012-05/msg01073.html to change type of 'len' to size_t. However, after Jan's review, we decide to change it to ssize_t, because callers of these functions may pass signed type to them. AFAICS, the target layer is a boundary. In one side, we pass size_t or ssize_t to target related APIs, and in the other side, the implementation side, we used LONGEST (ULONGEST in latest code) because of to_xfer_partial. Since remote_write_bytes_aux and remote_write_bytes belong to the implementation of remote target, we should use ULONGEST for len, IMO. Regression tested on x86_64-linux. Is it OK? gdb: 2014-01-24 Yao Qi <yao@codesourcery.com> * remote.c (remote_write_bytes_aux): Change type of 'len' to ULONGEST. Don't check 'len' is negative. (remote_write_bytes): Change type of 'len' to ULONGEST.
2014-01-23avoid python exception in FrameDecorator.pyTom Tromey2-2/+17
This fixes a bug in FrameDecorator.py. FrameVars seems to assume that Frame.block can return None if there is no block. However, it actually throws an exception. I saw this bug while developing a frame filter, but unfortunately I don't know how to reproduce it. It seems to me that the SAL tests in _is_limited_frame should exclude the bad cases; and in my attempts to write a test they do. Nevertheless I think the fix is reasonably obvious and ought to go in. 2014-01-23 Tom Tromey <tromey@redhat.com> PR python/16485: * python/lib/gdb/FrameDecorator.py: (FrameVars.fetch_frame_args): Handle exception from frame.block. (FrameVars.fetch_frame_locals): Likewise.
2014-01-23fix erroneous error-handling in frame filter codeTom Tromey5-3/+47
This fixes PR python/16487. The bug here is that the function-name-handling code in py_print_frame had a small logic error (really a misplaced closing brace). This error could lead to a Py_DECREF(NULL), which crashes. This patch fixes the bug in the obvious way. Built and regtested on x86-64 Fedora 18. New test case included. 2014-01-23 Tom Tromey <tromey@redhat.com> PR python/16487: * python/py-framefilter.c (py_print_frame): Don't call Py_DECREF on a NULL pointer. Move "goto error" to correct place. 2014-01-23 Tom Tromey <tromey@redhat.com> PR python/16487: * gdb.python/py-framefilter.exp: Add test using "Error" filter. * gdb.python/py-framefilter.py (ErrorInName, ErrorFilter): New classes.
2014-01-23fix crash in frame filtersTom Tromey5-7/+23
apply_frame_filter calls ensure_python_env before computing the gdbarch to use. This means that python_gdbarch can be NULL while in Python code, and if a frame filter depends on this somehow (easy to do), gdb will crash. The fix is to compute the gdbarch first. Built and regtested on x86-64 Fedora 18. New test case included. 2014-01-23 Tom Tromey <tromey@redhat.com> PR python/16491: * python/py-framefilter.c (apply_frame_filter): Call ensure_python_env after computing gdbarch. 2014-01-23 Tom Tromey <tromey@redhat.com> PR python/16491: * gdb.python/py-framefilter.py (Reverse_Function.function): Read a string from an inferior frame. * gdb.python/py-framefilter-mi.exp: Update.
2014-01-23Use gdb_byte * instead of void *Yao Qi2-4/+10
This patch changes the argument type to gdb_byte * in order to align with the to_xfer_partial interface. gdb: 2014-01-23 Yao Qi <yao@codesourcery.com> * target.c (raw_memory_xfer_partial): Change argument type from void * to gdb_byte *. (memory_xfer_partial_1, memory_xfer_partial): Likewise.
2014-01-22 * gdbthread.h (gdb_id_to_thread): Delete, unused.Doug Evans2-1/+5
2014-01-22 New gdbserver option --debug-format=timestamp.Doug Evans27-381/+792
* NEWS: Mention it. gdbserver/ * configure.ac (AC_CHECK_FUNCS): Add test for gettimeofday. * configure: Regenerate. * config.in: Regenerate. * Makefile.in (SFILES): Add debug.c. (OBS): Add debug.o. * debug.c: New file. * debug.h: New file. * linux-aarch64-low.c (*): Update all debugging printfs to use debug_printf instead of fprintf. * linux-arm-low.c (*): Ditto. * linux-cris-low.c (*): Ditto. * linux-crisv32-low.c (*): Ditto. * linux-m32r-low.c (*): Ditto. * linux-sparc-low.c (*): Ditto. * linux-x86.c (*): Ditto. * linux-low.c (*): Ditto. (linux_wait_1): Add calls to debug_enter, debug_exit. (linux_wait): Remove redundant debugging printf. (stop_all_lwps): Add calls to debug_enter, debug_exit. (linux_resume, unstop_all_lwps): Ditto. * mem-break.c (*): Update all debugging printfs to use debug_printf instead of fprintf. * remote-utils.c (*): Ditto. * thread-db.c (*): Ditto. * server.c #include <ctype.h>, "gdb_vecs.h". (debug_threads): Moved to debug.c. (*): Update all debugging printfs to use debug_printf instead of fprintf. (start_inferior): Replace call to fflush with call to debug_flush. (monitor_show_help): Mention set debug-format. (parse_debug_format_options): New function. (handle_monitor_command): Handle "monitor set debug-format". (gdbserver_usage): Mention --debug-format. (main): Parse --debug-format. * server.h (debug_threads): Declaration moved to debug.h. #include "debug.h". * tracepoint.c (trace_debug_1) [!IN_PROCESS_AGENT]: Add version of trace_debug_1 that uses debug_printf. (tracepoint_look_up_symbols): Update all debugging printfs to use debug_printf instead of fprintf. doc/ * gdb.texinfo (Server): Mention --debug-format=all|none|timestamp. (gdbserver man): Ditto. testsuite/ * gdb.server/server-mon.exp: Add tests for "set debug-format".
2014-01-22gdb/ChangeLog:Andreas Arnez8-3/+697
* syscalls/s390x-linux.xml: New file. * syscalls/s390-linux.xml: New file. * s390-linux-tdep.c (XML_SYSCALL_FILENAME_S390): New macro. (XML_SYSCALL_FILENAME_S390X): Likewise. (op_svc): New enum value for SVC opcode. (s390_sigtramp_frame_sniffer): Replace literal by 'op_svc'. (s390_linux_get_syscall_number): New function. (s390_gdbarch_init): Register '*get_syscall_number' and the syscall xml file name. * data-directory/Makefile.in (SYSCALLS_FILES): Add "s390-linux.xml" and "s390x-linux.xml". * NEWS: Announce new feature. gdb/testsuite/ChangeLog: * gdb.base/catch-syscall.exp: Activate test on s390*-linux.
2014-01-22Fix regression on s390x with entry-values.exp.Andreas Arnez2-2/+9
The trace-specific test case 'entry-values' concludes fairly late in the process that this platform doesn't support trace. Before that, there are some platform specifics that don't work on s390x. The fix addresses two aspects: (1) Removal of an excess space character in the regex for the disassembly. This is needed when there is a function alignment gap, because then the hex address is immediately followed by a colon, like in the first 'nopr' line below: (gdb) disassemble foo+50,+10 Dump of assembler code from 0x32 to 0x3c: 0x0000000000000032 <foo+50>: br %r4 0x0000000000000034: nopr %r7 0x0000000000000036: nopr %r7 0x0000000000000038 <bar+0>: stmg %r11,%r15,88(%r15) End of assembler dump. (2) Handling for the s390-specific call instruction. gdb/testsuite/ChangeLog: * gdb.trace/entry-values.exp: Remove excess space character from regex patterns. Handle s390 call instruction.
2014-01-22Re-introduce '_start' labels and add alignment in dw2-dir-file-name test case.Andreas Arnez3-4/+19
On ppc64-linux a function symbol does not point to code, but to the function descriptor. Thus the previous change for this test case broke it: https://sourceware.org/ml/gdb-patches/2014-01/msg00275.html This patch reverts to the original method, re-introducing '_start' symbols. In addition, it adds sufficient alignment before the label, such that the label never points into an alignment gap. gdb/testsuite/ChangeLog: * gdb.dwarf2/dw2-dir-file-name.c (FUNC): Insert alignment and define "*_start" label. Make "name" static. * gdb.dwarf2/dw2-dir-file-name.exp: Replace references to ${name} by references to ${name}_start.
2014-01-22Prevent appending "-g" after "-g3" to compile options in info-macros.exp.Andreas Arnez2-1/+8
When upstream gcc is given a command line with the "-g" option after "-g3", it doesn't generate a ".debug_macro" section. This is because the last option wins, thus downgrading the debug level again. Without any macro debug information in the executable, info-macros.exp obviously produces many failures. Since the "-g" option is appended by DejaGnu's target_compile whenever the "debug" option is set, the fix just removes that option. gdb/testsuite/ChangeLog: * gdb.base/info-macros.exp: Remove "debug" from the compile options.
2014-01-22gdb: xtensa: fix on 64-bit hostsBaruch Siach2-1/+5
On 64-bit hosts unsigned long is 64 bit. Use uint32_t instead. gdb/ 2014-01-22 Baruch Siach <baruch@tkos.co.il> * xtensa-tdep.h (xtensa_elf_greg_t): Change type to uint32_t.
2014-01-22xtensa-config.c: missing defs.h include.Pedro Alves2-0/+6
All .c files must start by including defs.h. 2014-01-22 Pedro Alves <palves@redhat.com> * xtensa-config.c: Include defs.h.
2014-01-22Add ARI (ok) marker for __func__ reference in common-utils.hJoel Brobecker2-1/+6
The ARI script flagged the use of the __func__ variable, which is normally not allowed (not defined in C90). However, this particular use is OK, as the reference is only made when __STDC_VERSION__ >= 199901L. So, add an "ARI:" comment to explicitly OK this use. gdb/ChangeLog: * common/common-utils.h: Add "ARI:" comment beside __func__ reference.
2014-01-22Expand documentation of common-utils.h::FUNCTION_NAMEJoel Brobecker2-1/+11
While looking at this macro, I noticed that it wasn't always necessarily defined. That prompted me to search the current sources to make sure that all uses were adequately protected, which they were. But to help prevent future uses to be made unprotected, this patch expands the current macro documentation a bit. gdb/ChangeLog: * common/common-utils.h (FUNCTION_NAME): Expand the macro's documentation a bit.
2014-01-21gdb: Support install-strip targetRoland McGrath5-16/+259
gdb/ * configure.ac: Call AM_PROG_INSTALL_STRIP. * configure: Regenerate. * aclocal.m4: Regenerate. * Makefile.in (install_sh, INSTALL_STRIP_PROGRAM, STRIP): New substituted variables. (install-strip): New target. (INSTALL_SCRIPT): New substituted variable. (FLAGS_TO_PASS): Add it. (install-only): Use $(INSTALL_SCRIPT) rather than $(INSTALL_PROGRAM) for gcore.
2014-01-20better packing for command structTom Tromey2-48/+53
This moves all the bitfields in struct cmd_list_element to be closer together. This packs the structure somewhat better. On a 64 bit machine, this simple rearrangement saves around 50k at startup. 2014-01-20 Tom Tromey <tromey@redhat.com> * cli/cli-decode.h (struct cmd_list_element): Move all bitfields together.
2014-01-20convert flags to bitfieldsTom Tromey5-61/+85
This changes various flags struct cmd_list_element into bitfields. In general I think bitfields are cleaner than flag words, at least in a case like this where there is no need to pass the flags around independently of the enclosing struct. 2014-01-20 Tom Tromey <tromey@redhat.com> * cli/cli-decode.c (add_cmd, deprecate_cmd, add_alias_cmd) (add_setshow_cmd_full, delete_cmd, lookup_cmd_1) (deprecated_cmd_warning, complete_on_cmdlist): Update. * cli/cli-decode.h (CMD_DEPRECATED, DEPRECATED_WARN_USER) (MALLOCED_REPLACEMENT, DOC_ALLOCATED): Remove. (struct cmd_list_element) <flags>: Remove. <cmd_deprecated, deprecated_warn_user, malloced_replacement, doc_allocated>: New fields. <hook_in, allow_unknown, abbrev_flag, type, var_type>: Now bitfields. * maint.c (maintenance_do_deprecate): Update. * top.c (execute_command): Update.
2014-01-20gdb: xtensa: fix linux ptrace includesBaruch Siach4-1/+11
Currently, xtensa code using the Linux ptrace interface only include sys/ptrace.h. This file comes from the C library (glibc and uClibc, at least), and includes a declaration of the ptrace() functions, along with some cross architecture constants that are mostly copied from the file located at include/uapi/linux/ptrace.h in recent Linux kernels. For xtensa specific constants like PTRACE_GETXTREGS and PTRACE_SETXTREGS the asm/ptrace.h include from the Linux kernel UAPI is needed. The code in gdbserver xtensa specific part doesn't call ptrace() directly, so we can remove the unneeded sys/ptrace.h include. The gdb xtensa specific code needs both headers, since it calls ptrace(). gdb/ * xtensa-linux-nat.c: Include asm/ptrace.h. gdb/gdbserver/ * linux-xtensa-low.c: Include asm/ptrace.h instead of sys/ptrace.h.
2014-01-18Move D demangling routines out of d-lang.c and into d-support.c, whichIain Buclaw5-598/+637
is intended to house other D language support functions. gdb/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * Makefile.in (SFILES): Add d-support.c. (COMMON_OBS): Add d-support.o. * d-lang.h (d_parse_symbol): Add comment, now defined in d-support.c. * d-lang.c (parse_call_convention) (parse_attributes, parse_function_types) (parse_function_args, parse_type, parse_identifier) (call_convention_p, d_parse_symbol): Move functions to ... * d-support.c: ... New file.
2014-01-18Fix and update D demangling support in gdb to the current mangling ABI.Iain Buclaw5-137/+821
gdb/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * d-lang.h (d_parse_symbol): Add declaration. * d-lang.c (extract_identifiers) (extract_type_info): Remove functions. (parse_call_convention, parse_attributes) (parse_function_types, parse_function_args) (parse_type, parse_identifier, call_convention_p) (d_parse_symbol): New functions. (d_demangle): Use d_parse_symbol to demangle D symbols. gdb/testsuite/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * gdb.dlang/demangle.exp: New file.
2014-01-18Define all basic data types of D and add them to the primitive typeIain Buclaw5-1/+302
language vector. gdb/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * d-lang.h (struct builtin_d_type): New data type. (builtin_d_type): Add declaration. * d-lang.c (d_language_arch_info, build_d_types) (builtin_d_type): New functions. (enum d_primitive_types): New data type. (d_language_defn): Change c_language_arch_info to d_language_arch_info. (d_type_data): New static variable. (_initialize_d_language): Initialize d_type_data. gdb/testsuite/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * gdb.dlang/primitive-types.exp: New file.
2014-01-18Add d_main_name to set the logical entry point for D programs.Iain Buclaw4-0/+38
gdb/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * d-lang.h (d_main_name): Add declaration. * d-lang.c (d_main_name): New function. * symtab.c (find_main_name): Add call to d_main_name.
2014-01-18Update d_language_defn to reflect that D does not have any style ofIain Buclaw2-1/+6
macro expansion in its language. gdb/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * d-lang.c (d_language_defn): Change macro_expansion_c to macro_expansion_no.
2014-01-18Add gdb.dlang to the gdb testsuite for the purpose of creating DIain Buclaw7-3/+69
specific tests. gdb/testsuite/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * configure.ac: Create gdb.dlang/Makefile. * configure: Regenerate. * Makefile.in (ALL_SUBDIRS): Add gdb.dlang. * gdb.dlang/Makefile.in: New file. * lib/d-support.exp: New file. * lib/gdb.exp (skip_d_tests): New proc.
2014-01-18Add myself as a write-after-approval gdb maintainer.Iain Buclaw2-0/+5
gdb/ChangeLog: 2014-01-17 Iain Buclaw <ibuclaw@gdcproject.org> * MAINTAINERS: Add myself as a write-after-approval maintainer.
2014-01-17Add "volatile" keyword to "struct gdb_exception" declarationSergio Durigan Junior3-2/+8
While doing something else, I found that those 2 places were incorrectly declaring a "struct gdb_exception" without using the "volatile" keyword. This commit fixes that. 2014-01-17 Sergio Durigan Junior <sergiodj@redhat.com> * breakpoint.c (insert_bp_location): Add "volatile" keyword to "struct gdb_exception" declaration. * remote.c (getpkt_or_notif_sane): Likewise.
2014-01-17Add delim_string_to_char_ptr_vec.Doug Evans3-17/+53
* common/gdb_vecs.c (delim_string_to_char_ptr_vec_append): New function, contents of dirnames_to_char_ptr_vec_append moved here. (delim_string_to_char_ptr_vec): New function. (dirnames_to_char_ptr_vec_append): Rewrite. * common/gdb_vecs.h (delim_string_to_char_ptr_vec): Declare.
2014-01-17Move ASSERT_FUNCTION to FUNCTION_NAME.Doug Evans5-22/+35
* common/common-utils.h (FUNCTION_NAME): Renamed from ASSERT_FUNCTION, and moved here ... * common/gdb_assert.h (ASSERT_FUNCTION): ... from here. #include "common-utils.h". (gdb_assert, gdb_assert_fail, gdb_assert_not_reached): Update. * common/vec.h (VEC_ASSERT_PASS): Update. * darwin-nat.h: Replace #include of gdb_assert.h with common-utils.h. (MACH_CHECK_ERROR): Update.
2014-01-17Fix PR mention in gdb/gdbserver/ChangeLog's previous change.Pedro Alves1-1/+1
2014-01-17Fix silly ChangeLog entry in previous change.Pedro Alves1-2/+2
2014-01-17Fix PR PR16445 - gdbserver build failure on x86.Pedro Alves2-1/+12
If gdb_proc_service.h ends up including linux/elf.h, we'll trip on duplicate definitions: In file included from ../../../gdb/gdbserver/linux-x86-low.c:29:0: ../../../gdb/gdbserver/../../include/elf/common.h:36:0: error: "ELFMAG0" redefined [-Werror] ... etc ... Handle this the same way linux-low.c and linux-arm-low.c handle this. gdb/gdbserver/ 2014-01-17 Pedro Alves <palves@redhat.com> PR PR16445 * linux-x86-low.c (linux-x86-low.c): Don't include elf/common.h if ELFMAG0 is defined after including gdb_proc_service.h.
2014-01-17Add comments to gdbarch_address_class_name_to_type_flags.Simon Marchi3-0/+14
gdb/ChangeLog 2014-01-17 Simon Marchi <simon.marchi@ericsson.com> * gdbarch.sh (gdbarch_address_class_name_to_type_flags): Add comments. * gdbarch.h: Regenerate.
2014-01-16 * dll.c (UNSPECIFIED_CORE_ADDR): New macro.Doug Evans2-1/+9
(match_dll): Use it.
2014-01-16rearrange struct value to save memoryTom Tromey2-3/+7
This patch rearranges struct value a tiny bit, moving the "regnum" field into a hole. This saves 8 bytes per value on a 64-bit machine, and 4 bytes per value on a 32 bit machine. I think it does not negatively affect readability or performance. Built and regtested on x86-64 Fedora 18. 2014-01-16 Tom Tromey <tromey@redhat.com> * value.c (struct value) <regnum>: Move earlier.
2014-01-16remove extended_remote_create_inferior_1Tom Tromey2-10/+9
I noticed that extended_remote_create_inferior_1 is called from a single spot. This patch unifies the callee and caller. It's just a simple cleanup that made the coming refactoring simpler. 2014-01-16 Tom Tromey <tromey@redhat.com> * remote.c (extended_remote_create_inferior): Rename from extended_remote_create_inferior_1. Add "ops" argument. Remove old implementation.
2014-01-16Fix gdb.trace/mi-traceframe-changed.exp on s390.Pedro Alves2-4/+17
The test fails on s390 with: -trace-find frame-number 0^M &"PC not available\n"^M ^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M (gdb) ^M FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: -trace-find frame-number 0 tfile knows to infer the PC from the tracepoint's address if the PC wasn't collected (tfile_fetch_registers) but, that only works on targets whose PC register is a raw register, and on s390, the PC register is a pseudo register. But even if GDB doesn't know how to infer the value of PC, saying the current frame is level -1 is a bug: ^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M ^^^^^^^^^ '-1' is the level of the sentinel frame, which should never be visible. This is caused by the s390's heuristic unwinder accepting the frame (the fallback heuristic unwinders _always_ accept the frame), but then the unwind->this_id method throws that "PC not available\n" error. IOW, the s390's heuristic unwinder was never adjusted to handle unavailable register values gracefully, which can happen with e.g., a trimmed core file too. This is just the minimal necessary for <unavailable> frames, which at least gets us: (gdb) tfind Found trace frame 0, tracepoint 1 #0 <unavailable> in ?? () That is, frame #0 instead of -1. We could get better info out of "info frame" (this patch makes us show "outermost"), but this change would still be necessary. gdb/ 2014-01-16 Pedro Alves <palves@redhat.com> * s390-linux-tdep.c (s390_frame_unwind_cache): Swallow NOT_AVAILABLE_ERROR errors while parsing the prologue or reading the backchain.
2014-01-16dwarf2read.c (open_and_init_dwp_file): Fix typo in comment.Doug Evans2-1/+5
2014-01-16record-btrace: add (reverse-)stepping supportMarkus Metzger22-42/+1279
Provide to_resume and to_wait target methods for the btrace record target to allow reverse stepping and replay support. Replay is limited in the sense that only stepping and source correlation are supported. We do not record data and thus can not show variables. Non-stop mode is not working. Do not allow record-btrace in non-stop mode. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * btrace.h (btrace_thread_flag): New. (struct btrace_thread_info) <flags>: New. * record-btrace.c (record_btrace_resume_thread) (record_btrace_find_thread_to_move, btrace_step_no_history) (btrace_step_stopped, record_btrace_start_replaying) (record_btrace_step_thread, record_btrace_decr_pc_after_break) (record_btrace_find_resume_thread): New. (record_btrace_resume, record_btrace_wait): Extend. (record_btrace_can_execute_reverse): New. (record_btrace_open): Fail in non-stop mode. (record_btrace_set_replay): Split into this, ... (record_btrace_stop_replaying): ... this, ... (record_btrace_clear_histories): ... and this. (init_record_btrace_ops): Init to_can_execute_reverse. * NEWS: Announce it. testsuite/ * gdb.btrace/delta.exp: Check reverse stepi. * gdb.btrace/tailcall.exp: Update. Add stepping tests. * gdb.btrace/finish.exp: New. * gdb.btrace/next.exp: New. * gdb.btrace/nexti.exp: New. * gdb.btrace/record_goto.c: Add comments. * gdb.btrace/step.exp: New. * gdb.btrace/stepi.exp: New. * gdb.btrace/multi-thread-step.c: New. * gdb.btrace/multi-thread-step.exp: New. * gdb.btrace/rn-dl-bind.c: New. * gdb.btrace/rn-dl-bind.exp: New. * gdb.btrace/data.c: New. * gdb.btrace/data.exp: New. * gdb.btrace/Makefile.in (EXECUTABLES): Add new. doc/ * gdb.texinfo: Document limited reverse/replay support for target record-btrace.
2014-01-16target: allow decr_pc_after_break to be defined by the targetMarkus Metzger9-13/+68
Allow the target to define which value to use in decr_pc_after_break. It defaults to gdbarch_decr_pc_after_break (GDBARCH). 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * target.h (struct target_ops) <to_decr_pc_after_break>: New. (forward_target_decr_pc_after_break) (target_decr_pc_after_break): New. * target.c (forward_target_decr_pc_after_break) (target_decr_pc_after_break): New. * aix-thread.c (aix_thread_wait): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * darwin-nat.c (cancel_breakpoint): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * infrun.c (adjust_pc_after_break): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * linux-nat.c (cancel_breakpoint): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * linux-thread-db.c (check_event): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break. * record-full.c (record_full_wait_1): Call target_decr_pc_after_break instead of gdbarch_decr_pc_after_break.
2014-01-16record-btrace: show trace from enable locationMarkus Metzger12-118/+260
The btrace record target shows the branch trace from the location of the first branch destination. This is the first BTS records. After adding incremental updates, we can now add a dummy record for the current PC when we enable tracing so we show the trace from the location where branch tracing has been enabled. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * btrace.c: Include regcache.h. (btrace_add_pc): New. (btrace_enable): Call btrace_add_pc. (btrace_is_empty): New. * btrace.h (btrace_is_empty): New. * record-btrace.c (require_btrace, record_btrace_info): Call btrace_is_empty. testsuite/ * gdb.btrace/Makefile.in (EXECUTABLES): Add delta. * gdb.btrace/exception.exp: Update. * gdb.btrace/instruction_history.exp: Update. * gdb.btrace/record_goto.exp: Update. * gdb.btrace/tailcall.exp: Update. * gdb.btrace/unknown_functions.exp: Update. * gdb.btrace/delta.exp: New.
2014-01-16btrace, gdbserver: read branch trace incrementallyMarkus Metzger16-91/+370
Read branch trace data incrementally and extend the current trace rather than discarding it and reading the entire trace buffer each time. If the branch trace buffer overflowed, we can't extend the current trace so we discard it and start anew by reading the entire branch trace buffer. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * common/linux-btrace.c (perf_event_read_bts, linux_read_btrace): Support delta reads. (linux_disable_btrace): Change return type. * common/linux-btrace.h (linux_read_btrace): Change parameters and return type to allow error reporting. Update users. (linux_disable_btrace): Change return type. Update users. * common/btrace-common.h (btrace_read_type) <BTRACE_READ_DELTA>: New. (btrace_error): New. (btrace_block) <begin>: Comment on BEGIN == 0. * btrace.c (btrace_compute_ftrace): Start from the end of the current trace. (btrace_stitch_trace, btrace_clear_history): New. (btrace_fetch): Read delta trace, return if replaying. (btrace_clear): Move clear history code to btrace_clear_history. (parse_xml_btrace): Throw an error if parsing failed. * target.h (struct target_ops) <to_read_btrace>: Change parameters and return type to allow error reporting. (target_read_btrace): Change parameters and return type to allow error reporting. * target.c (target_read_btrace): Update. * remote.c (remote_read_btrace): Support delta reads. Pass errors on. * NEWS: Announce it. gdbserver/ * target.h (target_ops) <read_btrace>: Change parameters and return type to allow error reporting. * server.c (handle_qxfer_btrace): Support delta reads. Pass trace reading errors on. * linux-low.c (linux_low_read_btrace): Pass trace reading errors on. (linux_low_disable_btrace): New.