aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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.
2014-01-16btrace: uppercase btrace_read_typeMarkus Metzger6-8/+16
2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * common/btrace-common.h (btrace_read_type) <btrace_read_all>: Change to ... (btrace_read_type) <BTRACE_READ_ALL>: ... this. Update users. (btrace_read_type) <btrace_read_new>: Change to ... (btrace_read_type) <BTRACE_READ_NEW>: ... this. Update users.
2014-01-16btrace, linux: fix memory leak when reading branch traceMarkus Metzger2-0/+8
When it takes more than one iteration to read the BTS trace, the trace from the previous iteration is leaked. Fix it. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * common/linux-btrace.c (linux_read_btrace): Free trace from previous iteration.
2014-01-16btrace, test: fix multi-line btrace testsMarkus Metzger3-159/+150
For testing multi-line test output, gdb.btrace tests used the following pattern: gdb_test "..." " ...\r ..." Change this to: gdb_test "..." [join [list \ "..." \ "..."] "\r\n"] Also extract repeated tests into a test function and shorten or remove test messages. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> testsuite/ * gdb.btrace/function_call_history.exp: Update * gdb.btrace/instruction_history.exp: Update.
2014-01-16test, btrace: update expected textMarkus Metzger2-3/+7
The error message for starting recording twice changed. Update the expected text to fix resulting regressions. 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> * gdb.btrace/enable.exp: Update expected text.
2014-01-16Fix testsuite/gdb.dwarf2/dw2-dos-drive.exp on ARM.Omair Javaid2-1/+7
This test currently fails on ARM: (gdb) PASS: gdb.dwarf2/dw2-dos-drive.exp: set breakpoint pending off break 'z:file.c':func Cannot access memory at address 0x0 The error is GDB trying to read the prologue at the breakpoint's address, and failing: 38 throw_error() exceptions.c:444 0x0016728c 37 memory_error() corefile.c:204 0x001d1fcc 36 read_memory() corefile.c:223 0x001d201a 35 read_memory_unsigned_integer() corefile.c:312 0x001d2166 34 arm_skip_prologue() arm-tdep.c:1452 0x00054270 static CORE_ADDR arm_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { ... for (skip_pc = pc; skip_pc < limit_pc; skip_pc += 4) { inst = read_memory_unsigned_integer (skip_pc, 4, byte_order_for_code); The test doesn't execute the compiled object's code, so GDB will try to read memory from the binary's sections. Instructions on ARM are 4-byte wide, and thus ARM's prologue scanner reads in 4-byte chunks. As the section 'func' is put at is only 1 byte long, and no other section is allocated contiguously: ... Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000001 00000000 00000000 00000034 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE ... ... the exec target fails the read the 4 bytes. Fix this by increasing the function's size. gdb/testsuite/ChangeLog: 2014-01-16 Omair Javaid <Omair.Javaid@linaro.org> * gdb.dwarf2/dw2-dos-drive.S: Increase text section size to 4 bytes.
2014-01-15Skip directories with LIBPATH_SUFFIX_SKIP suffixH.J. Lu4-13/+41
On Linux/x86-64, when binutils is configured with --libdir=/usr/lib64, genscripts.sh treats /usr/lib64 as the default search directory. It puts /usr/lib64 in linker scripts for all emulations, like --- /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib32"); SEARCH_DIR("/usr/i386-redhat-linux/lib32"); SEARCH_DIR("/usr/lib6432"); SEARCH_DIR("/usr/local/lib32"); SEARCH_DIR("/lib32"); SEARCH_DIR("/usr/lib32"); SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); --- /usr/lib6432 is odd and /usr/lib64 is wrong. This patch changes genscripts.sh to check LIBPATH_SUFFIX_SKIP if it is defined. It skips directories with LIBPATH_SUFFIX_SKIP suffix. PR ld/16456 * genscripts.sh: Don't search directory with LIBPATH_SUFFIX_SKIP suffix. * emulparams/elf32_x86_64.sh (LIBPATH_SUFFIX_SKIP): Set to 64 for elf32_x86_64 emulation. * emulparams/elf_i386.sh (LIBPATH_SUFFIX_SKIP): Set to 64 for elf_i386 emulation.
2014-01-16Tidy ld use of bfd_section userdata.Alan Modra4-53/+38
A long time ago ld made use of userdata to tie an output section to its lang_input_statement_struct object file. Some time later Joern made map file printing of symbols at lot faster, using userdata on input sections. That complicated allocation of userdata, and when the output section use disappeared a year later, the code wasn't properly cleaned up. This patch does that cleanup, and also tidies the symbol printing code to not allocate userdata where it won't be needed. We don't print symbols defined in the absolute section or in output sections. * ld.h (fat_section_userdata_type, get_userdata): Move to.. * ldlang.h (input_section_userdata_type, get_userdata): ..here. * ldlang.c (init_map_userdata): Delete. Fold into.. (sort_def_symbol): ..here. Don't attach input section userdata to output sections or global bfd sections. (lang_map): Don't pre-allocate input section userdata. (init_os): Don't allocate userdata for output sections. (print_all_symbols): Update.
2014-01-16Fix mips segfault on GOT access of absolute symbolAlan Modra2-4/+12
When a symbol is absolute, this code in mips_elf_record_got_page_entry entry = bfd_zalloc (sec->owner, sizeof (*entry)); segfaults. sec == bfd_abs_section_ptr and sec->owner == NULL. * elfxx-mips.c (mips_elf_record_got_page_entry): Pass in a mips_elf_traverse_got_arg* rather than mips_got_info*. Adjust caller. Alloc on output_bfd rather than symbol section owner.
2014-01-15delete thread_id_to_gdb_id, unusedDoug Evans3-16/+5
* inferiors.c (thread_id_to_gdb_id): Delete. * inferiors.h (thread_id_to_gdb_id): Delete.
2014-01-16daily updateAlan Modra1-1/+1
2014-01-15AArch64: gdb.base/float.exp: Fix `info float' testMaciej W. Rozycki2-1/+7
* gdb.base/float.exp: Handle "aarch64*-*-*" targets.
2014-01-15* dwarf2read.c (open_and_init_dwp_file): Use pulongest to print uint32_t.Doug Evans2-4/+11
2014-01-15move the "main" data into the per-BFD objectTom Tromey7-4/+68
This adds the "main"-related data into the per-BFD. This is needed because once symbol sharing across objfiles is complete, computing the main name as a side effect of symbol reading will no longer work -- the symbols simply won't be re-read. After this change, set_main_name is only used by the main_name machinery itself, so this patch makes it static. 2014-01-15 Tom Tromey <tromey@redhat.com> * dbxread.c (process_one_symbol): Use set_objfile_main_name. * dwarf2read.c (read_partial_die): Use set_objfile_main_name. * objfiles.c (get_objfile_bfd_data): Initialize language_of_main. (set_objfile_main_name): New function. * objfiles.h (struct objfile_per_bfd_storage) <name_of_main, language_of_main>: New fields. (set_objfile_main_name): Declare. * symtab.c (find_main_name): Loop over objfiles to find the main name and language. (set_main_name): Now static. (get_main_info): Add comment. * symtab.h (set_main_name): Don't declare.
2014-01-15move main name into the progspaceTom Tromey2-11/+81
This moves the "main" name and language into an object attached to the current progspace. This prevents problems if there are multiple inferiors tha have different ideas of "main" -- which matters at least for unwinding, see frame.c:inside_main_func. 2014-01-15 Tom Tromey <tromey@redhat.com> * symtab.c (main_progspace_key): New global. (struct main_info): New. (name_of_main, language_of_main): Remove. (get_main_info, main_info_cleanup): New function. (set_main_name, main_name, main_language): Use get_main_info. (_initialize_symtab): Initialize main_progspace_key.
2014-01-15make language_of_main staticTom Tromey6-22/+37
This makes the global language_of_main static. Now it can be set only via a new argument to set_main_name. 2014-01-15 Tom Tromey <tromey@redhat.com> * dbxread.c (process_one_symbol): Update. * dwarf2read.c (read_partial_die): Update. * symfile.c (set_initial_language): Call main_language. * symtab.c (language_of_main): Now static. (set_main_name): Add 'lang' parameter. (find_main_name): Update. (main_language): New function. (symtab_observer_executable_changed): Update. * symtab.h (set_main_name): Update. (language_of_main): Remove. (main_language): Declare.
2014-01-15move the entry point info into the per-bfd objectTom Tromey4-18/+36
This moves the entry point information into the per-BFD object and arranges not to recompute it when it has already been computed. 2014-01-15 Tom Tromey <tromey@redhat.com> * symfile.c (init_entry_point_info): Use new "initialized" field. Update. * objfiles.h (struct entry_point) <initialized>: New field. (struct objfile_per_bfd_storage) <ei>: New field, moved from... (struct objfile) <ei>: ...here. Remove. * objfiles.c (entry_point_address_query): Update.
2014-01-15relocate the entry point address when usedTom Tromey4-18/+38
This changes the entry point to be unrelocated in the objfile, and instead applies the relocation when it is used. 2014-01-15 Tom Tromey <tromey@redhat.com> * objfiles.c (entry_point_address_query): Relocate entry point address. (objfile_relocate1): Do not relocate entry point address. * objfiles.h (struct entry_info) <entry_point>: Update comment. <the_bfd_section_index>: New field. * symfile.c (init_entry_point_info): Find the entry point's section.
2014-01-15change solib-frv to use entry_point_address_queryTom Tromey2-5/+8
This is just a minor cleanup in advance of some other changes, that modifies solib-frv.c to use entry_point_address_query. I don't have a good way to test this but I think it is obviously correct. 2014-01-15 Tom Tromey <tromey@redhat.com> * solib-frv.c (enable_break): Use entry_point_address_query.
2014-01-15gdb: Add a NEWS entry for ARM record/replay improvementsOmair Javaid2-0/+9
This patch adds a news entry about improvements in record-replay and reverse debugging support for arm*-linux* targets. gdb/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * NEWS: Add note on improved process record-replay on arm*-linux* targets.
2014-01-15gdb: ARM: Update configure.tgt and enable gdb.reverse testsuiteOmair Javaid2-2/+9
gdb/testsuite/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * lib/gdb.exp (supports_process_record): Return true for arm*-linux*. (supports_reverse): Likewise.
2014-01-15gdb: ARM: Add support for thumb32 instructions recordingOmair Javaid2-7/+614
gdb/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * arm-tdep.c (enum arm_record_result): New enum. (arm_record_unsupported_insn): New function. (arm_record_coproc_data_proc): Removed. (thumb2_record_ld_st_multiple): New function. (thumb2_record_ld_st_dual_ex_tbb): New function. (thumb2_record_data_proc_sreg_mimm): New function. (thumb2_record_ps_dest_generic): New function. (thumb2_record_branch_misc_cntrl): New function. (thumb2_record_str_single_data): New function. (thumb2_record_ld_mem_hints): New function. (thumb2_record_ld_word): New function. (thumb2_record_lmul_lmla_div): New function. (thumb2_record_decode_insn_handler): New function. (decode_insn): Add thumb32 instruction handlers.
2014-01-15gdb: ARM: Adds support for recording system call instructionsOmair Javaid5-23/+297
gdb/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * arm-linux-tdep.c: Include "record-full.h" and "linux-record.h". (struct arm_linux_record_tdep): Declare. (arm_canonicalize_syscall): New function. (arm_all_but_pc_registers_record): New function. (arm_linux_syscall_record): New function. (arm_linux_init_abi): Add syscall recording constructs. * arm-tdep.c (thumb_record_ldm_stm_swi): Update thumb syscall decoding. (arm_record_coproc_data_proc): Update arm syscall decoding. * arm-tdep.h (struct gdbarch_tdep) <arm_swi_record>: Remove. <arm_syscall_record>: New field. * configure.tgt (arm*-*-linux*): Add linux-record.o to gdb_target_obs.
2014-01-15gdb: ARM: Fix for bug in pop instruction decodingOmair Javaid2-1/+6
This patch fixes thumb push instruction recording by replacing base register from pc to sp. gdb/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * arm-tdep.c (thumb_record_misc): Update to use sp as base register for push instruction recording.
2014-01-15gdb: ARM: Fix for bugs in push and ldm instructions decodingOmair Javaid2-43/+23
This patch corrects the register numbers and removes multiple loops in recording procedure of instructions involving multiple registers. gdb/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * arm-tdep.c (thumb_record_misc): Update to correct logical error while recording ldm, ldmia and pop instructions.
2014-01-15gdb: ARM: Fix for memory record corruption due to 64bit addressesOmair Javaid2-1/+5
gdb/ChangeLog: 2014-01-15 Omair Javaid <omair.javaid@linaro.org> * arm-tdep.c (struct arm_mem_r) <addr>: Change type to uint32_t.
2014-01-15Fix go32-nat.c build fallout from to_detach constification.Pedro Alves2-25/+11
The recent constification of to_detach missed updating the forward declaration of go32_detach, breaking the build: ../../src/gdb/go32-nat.c:387:1: error: conflicting types for 'go32_detach' ../../src/gdb/go32-nat.c:240:13: note: previous declaration of 'go32_detach' was here go32_detach is actually defined before it's ever used, making the forward declaration is unnecessary. So we can just remove it instead of updating it. While at it, remove all others in the same situation. Tested by building a djgpp gdb. gdb/ 2014-01-15 Pedro Alves <palves@redhat.com> * go32-nat.c (go32_open, go32_close, go32_attach, go32_detach) (go32_resume, go32_fetch_registers, store_register) (go32_store_registers, go32_prepare_to_store) (go32_xfer_memory, go32_files_info, go32_kill_inferior) (go32_create_inferior, go32_can_run, go32_terminal_init) (go32_terminal_inferior, go32_terminal_ours): Delete forward declarations.
2014-01-15Silence uninitialized warning on ehdr_start_saveH.J. Lu2-1/+7
Older GCC, like 4.1/4.2, will issue an uninitialized warning on ehdr_start_save. This patch silences by using struct bfd_link_hash_entry ehdr_start_save = ehdr_start_save; * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Silence uninitialized warning on ehdr_start_save with older GCC.
2014-01-15introduce async_callback_ftypeTom Tromey2-1/+11
This introduces async_callback_ftype. This is needed for make-target-delegates to work properly, as it doesn't implement a real parser. I think it's also an ok cleanup in its own right. 2014-01-15 Tom Tromey <tromey@redhat.com> * target.h (async_callback_ftype): New typedef. (struct target_ops) <to_async>: Use it.
2014-01-15Fix small style violation in py-value.c:get_field_typeJoel Brobecker2-5/+8
gdb/ChangeLog: * python/py-value.c (get_field_type): Remove unnecessary curly braces for single-statement if block. Tested on x86_64-linux.
2014-01-15Add missing empty line after declarations in "if" block (py-type.c).Joel Brobecker2-0/+6
This patch fixes a small coding-style violation... gdb/ChangeLog: * python/py-type.c (convert_field): Add missing empty line after declarations.
2014-01-15Small fixes to the GDB/MI Output Syntax grammar.Joel Brobecker2-7/+13
This patch fixes the grammar, and tries to do it in a way that makes the logic behind the current implementation a little clearer. gdb/doc/ChangeLog: (from Yuanhui Zhang <asmwarrior@gmail.com>) (from Joel Brobecker <brobecker@adacore.com>) * gdb.texinfo (GDB/MI Output Syntax): Add some missing "nl" markers. Remove one that was misplaced.
2014-01-15Revert the last changeH.J. Lu3-10/+10
It has been fixed by commit 4199e3b8669d0a36448687850374fdc2ad7240b6 Author: Alan Modra <amodra@gmail.com> Date: Wed Jan 15 21:50:55 2014 +1030 non-PIC references to __ehdr_start in pie and shared Rather than hacking every backend to not discard dynamic relocations against an undefined hidden __ehdr_start, make it appear to be defined early. We want __ehdr_start hidden before size_dynamic_sections so that it isn't put in .dynsym, but we do need the dynamic relocations for a PIE or shared library with a non-PIC reference. Defining it early is wrong if we don't actually define the symbol later to its proper value. (In some cases we want to leave the symbol undefined, for example, when the ELF header isn't loaded, and we don't have this infomation available in before_allocation.) * elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last change. * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-15non-PIC references to __ehdr_start in pie and sharedAlan Modra7-0/+44
Rather than hacking every backend to not discard dynamic relocations against an undefined hidden __ehdr_start, make it appear to be defined early. We want __ehdr_start hidden before size_dynamic_sections so that it isn't put in .dynsym, but we do need the dynamic relocations for a PIE or shared library with a non-PIC reference. Defining it early is wrong if we don't actually define the symbol later to its proper value. (In some cases we want to leave the symbol undefined, for example, when the ELF header isn't loaded, and we don't have this infomation available in before_allocation.) ld/ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Define __ehdr_start before size_dynamic_sections and restore afterwards. ld/testsuite/ * ld-elf/ehdr_start-shared.d: New. * ld-elf/ehdr_start-userdef.d: xfail frv. * ld-elf/ehdr_start-weak.d: Likewise. * ld-elf/ehdr_start.d: Likewise.
2014-01-14psymtab cleanup patch 3/3Doug Evans6-40/+62
This last patch removes "partial" from the names of expand_partial_symbol_names and map_partial_symbol_filenames. It also renames expand_partial_symbol_names to match the struct quick_symbol_functions "method" that it wraps: expand_symtabs_matching. This patch also adds two parameters to expand_symtabs_matching so that it can fully wrap the underlying quick_symbol_functions method. This makes it usable in more places. I thought of having a cover function that still had the same signature as the old expand_partial_symbol_names function, but I couldn't think of a good name, and it wasn't clear it was worth it anyway. * symfile.h (expand_symtabs_matching): Renamed from expand_partial_symbol_names. Update prototype. (map_symbol_filenames): Renamed from map_partial_symbol_filenames. * symfile.c (expand_symtabs_matching): Renamed from expand_partial_symbol_names. New args file_matcher, kind. Rename arg fun to symbol_matcher. (map_symbol_filenames): Renamed from map_partial_symbol_filenames. * ada-lang.c (ada_complete_symbol_matcher): Renamed from ada_expand_partial_symbol_name. (ada_make_symbol_completion_list): Update to call expand_symtabs_matching. (ada_add_global_exceptions): Call expand_symtabs_matching. * mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Update to call map_symbol_filenames. * symtab.c (sources_info): Update to call map_symbol_filenames. (search_symbols): Call expand_symtabs_matching. (symbol_completion_matcher): Renamed from expand_partial_symbol_name. (default_make_symbol_completion_list_break_on): Update to call expand_symtabs_matching. (make_source_files_completion_list): Update to call map_symbol_filenames.