aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-01-20Fix duplicate output section statement lookupGuy Martin12-25/+43
Tie output section statements to their associated output section via output section userdata. This allows us to avoid hash lookups which are slower and fail when multiple output sections have the same name. * ldlang.h (lang_output_section_get): Define. * ldlang.c (lang_output_section_get): Likewise. (init_os): Set the output_section userdata to the output section statement. * emultempl/hppaelf.em: Use lang_output_section_get instead of lang_output_section_find where applicable. * emultempl/aarch64elf.em: Likewise. * emultempl/aix.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/m68hc1xelf.em: Likewise. * emultempl/metagelf.em: Likewise. * emultempl/mipself.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/spuelf.em: Likewise.
2014-01-20daily updateAlan Modra1-1/+1
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-18daily updateAlan Modra1-1/+1
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-17gas: ARM: Fix encoding of VCVTr.s32.f64 instructionsWill Newton4-5/+14
The direct rounding floating-point VCVT instructions introduced in ARMv8 encode the s32.f64 variant incorrectly. The op bit should be set to 1 for all signed conversions. gas/ChangeLog: 2014-01-17 Will Newton <will.newton@linaro.org> * config/tc-arm.c (do_vfp_nsyn_cvt_fpv8): Set OP to 1 for the s32.f64 flavours of VCVT. gas/testsuite/ChangeLog: 2014-01-17 Will Newton <will.newton@linaro.org> * gas/arm/armv8-a+fp.d: Correct encoding of vcvta.s32.f64.
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-17Allow ld target customiser script to force on disk scripts.Alan Modra16-22/+38
Mucking with EMULATION_LIBPATH has unwanted side effects. Allow nds32 emulparams scripts to disable compiled-in scripts naturally, by setting COMPILE_IN=no. * genscripts.sh (COMPILE_IN): Don't set if already set. * emulparams/nds32elf.sh: Don't clear EMULATION_LIBPATH, set COMPILE_IN=no. * emulparams/nds32elf16m.sh: Likewise. * emulparams/nds32elf_linux.sh: Likewise. * emultempl/aix.em: Test COMPILE_IN value is "yes". * emultempl/armcoff.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/generic.em: Likewise. * emultempl/gld960.em: Likewise. * emultempl/gld960c.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/lnk960.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/ticoff.em: Likewise.
2014-01-16 * dll.c (UNSPECIFIED_CORE_ADDR): New macro.Doug Evans2-1/+9
(match_dll): Use it.
2014-01-17daily updateAlan Modra1-1/+1
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.
2014-01-16record-btrace: extend unwinderMarkus Metzger9-10/+352
Extend the always failing unwinder to provide the PC based on the call structure detected in the branch trace. The unwinder supports normal frames and tailcall frames. Inline frames are not supported. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record.h (record_btrace_frame_unwind) (record_btrace_tailcall_frame_unwind): New declarations. * dwarf2-frame: Include record.h (dwarf2_frame_cfa): Throw an error for btrace frames. * record-btrace.c: Include hashtab.h. (btrace_get_bfun_name): New. (btrace_call_history): Call btrace_get_bfun_name. (struct btrace_frame_cache): New. (bfcache): New. (bfcache_hash, bfcache_eq, bfcache_new): New. (btrace_get_frame_function): New. (record_btrace_frame_unwind_stop_reason): Allow unwinding. (record_btrace_frame_this_id): Compute own id. (record_btrace_frame_prev_register): Provide PC, throw_error for all other registers. (record_btrace_frame_sniffer): Detect btrace frames. (record_btrace_tailcall_frame_sniffer): New. (record_btrace_frame_dealloc_cache): New. (record_btrace_frame_unwind): Add new functions. (record_btrace_tailcall_frame_unwind): New. (_initialize_record_btrace): Allocate cache. * btrace.c (btrace_clear): Call reinit_frame_cache. * NEWS: Announce it. testsuite/ * gdb.btrace/record_goto.exp: Add backtrace test. * gdb.btrace/tailcall.exp: Add backtrace test.
2014-01-16record-btrace: add record goto target methodsMarkus Metzger8-5/+714
2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_set_replay) (record_btrace_goto_begin, record_btrace_goto_end) (record_btrace_goto): New. (init_record_btrace_ops): Initialize them. * NEWS: Announce it. testsuite/ * gdb.btrace/Makefile.in (EXECUTABLES): Add record_goto. * gdb.btrace/record_goto.c: New. * gdb.btrace/record_goto.exp: New. * gdb.btrace/x86-record_goto.S: New.
2014-01-16record-btrace: provide target_find_new_threads methodMarkus Metzger2-0/+44
The "info threads" command tries to read memory, which is not possible during replay. This results in an error message and aborts the command without showing the existing threads. Provide a to_find_new_threads target method to skip the search while replaying. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_find_new_threads) (record_btrace_thread_alive): New. (init_record_btrace_ops): Initialize to_find_new_threads and to_thread_alive.
2014-01-16record-btrace: add to_wait and to_resume target methods.Markus Metzger2-0/+47
Add simple to_wait and to_resume target methods that prevent stepping when the current replay position is not at the end of the execution log. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_resume): New. (record_btrace_wait): New. (init_record_btrace_ops): Initialize to_wait and to_resume.
2014-01-16record-btrace: provide xfer_partial target methodMarkus Metzger3-0/+125
Provide the xfer_partial target method for the btrace record target. Only allow memory read accesses to readonly memory while we're replaying, except for inserting and removing breakpoints. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_xfer_partial) (record_btrace_insert_breakpoint, record_btrace_remove_breakpoint) (record_btrace_allow_memory_access): New. (init_record_btrace_ops): Initialize new methods. * target.c (raw_memory_xfer_partial): Bail out if target reports that this memory is not available.
2014-01-16target, breakpoint: allow insert/remove breakpoint to be forwardedMarkus Metzger12-50/+173
2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * target.h (target_ops) <to_insert_breakpoint> <to_remove_breakpoint>: Add target_ops parameter. (forward_target_insert_breakpoint): New. (forward_target_remove_breakpoint): New. (memory_remove_breakpoint, memory_insert_breakpoint): Add target_ops parameter. * target.c (target_insert_breakpoint): Split into this and ... (forward_target_insert_breakpoint): ... this. (target_remove_breakpoint): Split into this and ... (forward_target_remove_breakpoint): ... this. (debug_to_insert_breakpoint): Add target_ops parameter. Call forward_target_insert_breakpoint. (debug_to_remove_breakpoint): Add target_ops parameter. Call forward_target_remove_breakpoint. (update_current_target): Do not inherit or default to_insert_breakpoint and to_remove_breakpoint. * corelow.c (ignore): Add target_ops parameter. * exec.c (ignore): Add target_ops parameter. * mem-break.c (memory_insert_breakpoint, memory_remove_breakpoint): Add target_ops parameter. * monitor.c (monitor_insert_breakpoint, monitor_remove_breakpoint): Add target_ops parameter. * nto-procfs.c (procfs_insert_breakpoint, procfs_remove_breakpoint): Add target_ops parameter. * record-full.c (record_full_beneath_to_insert_breakpoint) (record_full_beneath_to_remove_breakpoint, tmp_to_insert_breakpoint) (tmp_to_remove_breakpoint, record_full_insert_breakpoint) (record_full_remove_breakpoint, record_full_core_insert_breakpoint) (record_full_core_remove_breakpoint): Add target_ops parameter. Update users. (record_full_beneath_to_insert_breakpoint_ops) (record_full_beneath_to_remove_breakpoint_ops) (tmp_to_insert_breakpoint_ops, tmp_to_remove_breakpoint_ops): New. (record_full_open): Initialize tmp_to_insert_breakpoint_ops, tmp_to_remove_breakpoint_ops, record_full_beneath_to_insert_breakpoint_ops, and record_full_beneath_to_remove_breakpoint_ops. * remote-m32r-sdi.c (m32r_insert_breakpoint) (m32r_remove_breakpoint): Add target_ops parameter. * remote-mips.c (mips_insert_breakpoint, mips_remove_breakpoint): Add target_ops parameter. * remote.c (remote_insert_breakpoint, remote_remove_breakpoint): Add target_ops parameter.
2014-01-16record-btrace, frame: supply target-specific unwinderMarkus Metzger2-0/+74
Supply a target-specific frame unwinder for the record-btrace target that does not allow unwinding while replaying. 2013-02-11 Jan Kratochvil <jan.kratochvil@redhat.com> Markus Metzger <markus.t.metzger@intel.com> gdb/ * record-btrace.c: Include frame-unwind.h. (record_btrace_frame_unwind_stop_reason) (record_btrace_frame_this_id, record_btrace_frame_prev_register) (record_btrace_frame_sniffer, record_btrace_frame_unwind): New. (init_record_btrace_ops): Install it.
2014-01-16frame: do not assume unwinding will succeedMarkus Metzger2-6/+8
In get_frame_unwind_stop_reason, remove the assumption that further frame unwinding will succeed. gdb/ 2013-02-11 Jan Kratochvil <jan.kratochvil@redhat.com> * frame.c (get_frame_unwind_stop_reason): Unconditionally call get_prev_frame_1.
2014-01-16frame, cfa: check unwind stop reason firstMarkus Metzger2-4/+9
Swap the unwind stop reason check and the unwinder check to allow non-dwarf2 frame types to fail with a recoverable error. gdb/ 2013-02-11 Jan Kratochvil <jan.kratochvil@redhat.com> * dwarf2-frame.c (dwarf2_frame_cfa): Move UNWIND_UNAVAILABLE check earlier.
2014-01-16frame, backtrace: allow targets to supply a frame unwinderMarkus Metzger4-28/+109
Allow targets to supply their own target-specific frame unwinders; one for normal frames and one for tailcall frames. If a target-specific unwinder is supplied, it will be chosen before any other unwinder. The original patch has been split into this and the next two patches. gdb/ 2013-02-11 Jan Kratochvil <jan.kratochvil@redhat.com> * frame-unwind.c: Include target.h. (frame_unwind_try_unwinder): New function with code from ... (frame_unwind_find_by_frame): ... here. New variable unwinder_from_target, call also target_get_unwinder) (target_get_tailcall_unwinder, and frame_unwind_try_unwinder for it. * target.c (target_get_unwinder, target_get_tailcall_unwinder): New. * target.h (struct target_ops): New fields to_get_unwinder and to_get_tailcall_unwinder. (target_get_unwinder, target_get_tailcall_unwinder): New declarations.
2014-01-16record-btrace: supply register target methodsMarkus Metzger2-0/+99
Supply target methods to allow reading the PC. Forbid anything else. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_fetch_registers) (record_btrace_store_registers) (record_btrace_to_prepare_to_store): New. (init_record_btrace_ops): Add the above.
2014-01-16Add target_ops argument to to_prepare_to_storeMarkus Metzger14-22/+50
2013-12-17 Tom Tromey <tromey@redhat.com> * windows-nat.c (windows_prepare_to_store): Add 'self' argument. * target.h (struct target_ops) <to_prepare_to_store>: Add argument. (target_prepare_to_store): Add argument. * target.c (debug_to_prepare_to_store): Add argument. (update_current_target): Update. * remote.c (remote_prepare_to_store): Add 'self' argument. * remote-sim.c (gdbsim_prepare_to_store): Add 'self' argument. * remote-mips.c (mips_prepare_to_store): Add 'self' argument. * remote-m32r-sdi.c (m32r_prepare_to_store): Add 'self' argument. * record-full.c (record_full_core_prepare_to_store): Add 'self' argument. * ravenscar-thread.c (ravenscar_prepare_to_store): Add argument. * nto-procfs.c (procfs_prepare_to_store): Add 'self' argument. * monitor.c (monitor_prepare_to_store): Add 'self' argument. * inf-child.c (inf_child_prepare_to_store): Add 'self' argument. * go32-nat.c (go32_prepare_to_store): Add 'self' argument.
2014-01-16btrace: add replay position to btrace thread infoMarkus Metzger4-8/+100
Add a branch trace instruction iterator pointing to the current replay position to the branch trace thread info struct. Free the iterator when btrace is cleared. Start at the replay position for the instruction and function-call histories. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * btrace.h (replay) <replay>: New. (btrace_is_replaying): New. * btrace.c (btrace_clear): Free replay iterator. (btrace_is_replaying): New. * record-btrace.c (record_btrace_is_replaying): New. (record_btrace_info): Print insn number if replaying. (record_btrace_insn_history): Start at replay position. (record_btrace_call_history): Start at replay position. (init_record_btrace_ops): Init to_record_is_replaying.
2014-01-16record-btrace: make ranges include begin and endMarkus Metzger9-20/+62
The "record function-call-history" and "record instruction-history" commands accept a range "begin, end". End is not included in both cases. Include it. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (record_btrace_insn_history_range): Include end. (record_btrace_insn_history_from): Adjust range. (record_btrace_call_history_range): Include end. (record_btrace_call_history_from): Adjust range. * NEWS: Announce changes. testsuite/ * gdb.btrace/function_call_history.exp: Update tests. * gdb.btrace/instruction_history.exp: Update tests. doc/ * gdb.texinfo (Process Record and Replay): Update documentation.
2014-01-16record-btrace: optionally indent function call historyMarkus Metzger18-40/+771
Add a new modifier /c to the "record function-call-history" command to indent the function name based on its depth in the call stack. Also reorder the optional fields to have the indentation at the very beginning. Prefix the insn range (/i modifier) with "inst ". Prefix the source line (/l modifier) with "at ". Change the range syntax from "begin-end" to "begin,end" to allow copy&paste to the "record instruction-history" and "list" commands. Adjust the respective tests and add new tests for the /c modifier. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record.h (enum record_print_flag) <record_print_indent_calls>: New. * record.c (get_call_history_modifiers): Recognize /c modifier. (_initialize_record): Document /c modifier. * record-btrace.c (btrace_call_history): Add btinfo parameter. Reorder fields. Optionally indent the function name. Update all users. * NEWS: Announce changes. testsuite/ * gdb.btrace/function_call_history.exp: Fix expected field order for "record function-call-history". Add new tests for "record function-call-history /c". * gdb.btrace/exception.cc: New. * gdb.btrace/exception.exp: New. * gdb.btrace/tailcall.exp: New. * gdb.btrace/x86-tailcall.S: New. * gdb.btrace/x86-tailcall.c: New. * gdb.btrace/unknown_functions.c: New. * gdb.btrace/unknown_functions.exp: New. * gdb.btrace/Makefile.in (EXECUTABLES): Add new. doc/ * gdb.texinfo (Process Record and Replay): Document new /c modifier accepted by "record function-call-history". Add /i modifier to "record function-call-history" example.
2014-01-16btrace: increase buffer sizeMarkus Metzger2-10/+19
Try to allocate as much buffer as we can for each thread with a maximum of 64KB. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * common/linux-btrace.c (linux_enable_btrace): Enlarge buffer.
2014-01-16record-btrace: start counting at oneMarkus Metzger7-114/+137
The record instruction-history and record-function-call-history commands start counting instructions at zero. This is somewhat unintuitive when we start navigating in the recorded instruction history. Start at one, instead. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * btrace.c (ftrace_new_function): Start counting at one. * record-btrace.c (record_btrace_info): Adjust number of calls and insns. * NEWS: Announce it. testsuite/ * gdb.btrace/instruction_history.exp: Update. * gdb.btrace/function_call_history.exp: Update.
2014-01-16record-btrace: fix insn range in function call historyMarkus Metzger2-2/+10
With the "/i" modifier, we print the instruction number range in the "record function-call-history" command as [begin, end). It would be more intuitive if we printed the range as [begin, end]. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * record-btrace.c (btrace_call_history_insn_range): Print insn range as [begin, end].
2014-01-16btrace: change branch trace data structureMarkus Metzger7-398/+1448
The branch trace is represented as 3 vectors: - a block vector - a instruction vector - a function vector Each vector (except for the first) is computed from the one above. Change this into a graph where a node represents a sequence of instructions belonging to the same function and where we have three types of edges to connect the function segments: - control flow - same function (instance) - call stack This allows us to navigate in the branch trace. We will need this for "record goto" and reverse execution. This patch introduces the data structure and computes the control flow edges. It also introduces iterator structs to simplify iterating over the branch trace in control-flow order. It also fixes PR gdb/15240 since now recursive calls are handled correctly. Fix the test that got the number of expected fib instances and also the function numbers wrong. The current instruction had been part of the branch trace. This will look odd once we start support for reverse execution. Remove it. We still keep it in the trace itself to allow extending the branch trace more easily in the future. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * btrace.h (struct btrace_func_link): New. (enum btrace_function_flag): New. (struct btrace_inst): Rename to ... (struct btrace_insn): ...this. Update all users. (struct btrace_func) <ibegin, iend>: Remove. (struct btrace_func_link): New. (struct btrace_func): Rename to ... (struct btrace_function): ...this. Update all users. (struct btrace_function) <segment, flow, up, insn, insn_offset) (number, level, flags>: New. (struct btrace_insn_iterator): Rename to ... (struct btrace_insn_history): ...this. Update all users. (struct btrace_insn_iterator, btrace_call_iterator): New. (struct btrace_target_info) <btrace, itrace, ftrace>: Remove. (struct btrace_target_info) <begin, end, level> <insn_history, call_history>: New. (btrace_insn_get, btrace_insn_number, btrace_insn_begin) (btrace_insn_end, btrace_insn_prev, btrace_insn_next) (btrace_insn_cmp, btrace_find_insn_by_number, btrace_call_get) (btrace_call_number, btrace_call_begin, btrace_call_end) (btrace_call_prev, btrace_call_next, btrace_call_cmp) (btrace_find_function_by_number, btrace_set_insn_history) (btrace_set_call_history): New. * btrace.c (btrace_init_insn_iterator) (btrace_init_func_iterator, compute_itrace): Remove. (ftrace_print_function_name, ftrace_print_filename) (ftrace_skip_file): Change parameter to const. (ftrace_init_func): Remove. (ftrace_debug): Use new btrace_function fields. (ftrace_function_switched): Also consider gaining and losing symbol information). (ftrace_print_insn_addr, ftrace_new_call, ftrace_new_return) (ftrace_new_switch, ftrace_find_caller, ftrace_new_function) (ftrace_update_caller, ftrace_fixup_caller, ftrace_new_tailcall): New. (ftrace_new_function): Move. Remove debug print. (ftrace_update_lines, ftrace_update_insns): New. (ftrace_update_function): Check for call, ret, and jump. (compute_ftrace): Renamed to ... (btrace_compute_ftrace): ...this. Rewritten to compute call stack. (btrace_fetch, btrace_clear): Updated. (btrace_insn_get, btrace_insn_number, btrace_insn_begin) (btrace_insn_end, btrace_insn_prev, btrace_insn_next) (btrace_insn_cmp, btrace_find_insn_by_number, btrace_call_get) (btrace_call_number, btrace_call_begin, btrace_call_end) (btrace_call_prev, btrace_call_next, btrace_call_cmp) (btrace_find_function_by_number, btrace_set_insn_history) (btrace_set_call_history): New. * record-btrace.c (require_btrace): Use new btrace thread info fields. (record_btrace_info, btrace_insn_history) (record_btrace_insn_history, record_btrace_insn_history_range): Use new btrace thread info fields and new iterator. (btrace_func_history_src_line): Rename to ... (btrace_call_history_src_line): ...this. Use new btrace thread info fields. (btrace_func_history): Rename to ... (btrace_call_history): ...this. Use new btrace thread info fields and new iterator. (record_btrace_call_history, record_btrace_call_history_range): Use new btrace thread info fields and new iterator. testsuite/ * gdb.btrace/function_call_history.exp: Fix expected function trace. * gdb.btrace/instruction_history.exp: Initialize traced. Remove traced_functions.
2014-01-16frame: add frame_id_build_unavailable_stack_specialMarkus Metzger3-0/+29
Add a function to build a frame_id for a frame with unavailable stack and with a special identifier address. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * frame.h (frame_id_build_unavailable_stack_special): New. * frame.c (frame_id_build_unavailable_stack_special): New.
2014-01-16gdbarch: add instruction predicate methodsMarkus Metzger8-0/+262
Add new methods to gdbarch for analyzing the instruction at a given address. Implement those methods for i386 and amd64 architectures. This is needed by "record btrace" to detect function calls in the execution trace. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * amd64-tdep.c (amd64_classify_insn_at, amd64_insn_is_call) (amd64_insn_is_ret, amd64_insn_is_jump, amd64_jmp_p): New. (amd64_init_abi): Add insn_is_call, insn_is_ret, and insn_is_jump to gdbarch. * i386-tdep.c (i386_insn_is_call, i386_insn_is_ret) (i386_insn_is_jump, i386_jmp_p): New. (i386_gdbarch_init): Add insn_is_call, insn_is_ret, and insn_is_jump to gdbarch. * gdbarch.sh (insn_is_call, insn_is_ret, insn_is_jump): New. * gdbarch.h: Regenerated. * gdbarch.c: Regenerated. * arch-utils.h (default_insn_is_call, default_insn_is_ret) (default_insn_is_jump): New. * arch-utils.c (default_insn_is_call, default_insn_is_ret) (default_insn_is_jump): New.