aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-07-10Add missing changelog entriesAlan Modra2-0/+10
2015-07-10gnu_vector.exp: Skip infcall tests on x86/x86_64Andreas Arnez2-6/+12
Since the new KFAILs/KPASSs for the infcall tests on x86 and x86_64 targets generated unnecessary noise, this change skips them with UNSUPPORTED instead. gdb/testsuite/ChangeLog: * gdb.base/gnu_vector.exp: On x86 and x86_64 targets, skip the infcall tests instead of setting up for KFAIL.
2015-07-10record: set stop_pc in "record goto" commandMarkus Metzger5-6/+63
When navigating in the recorded execution trace via "record goto", we do not set stop_pc. This may trigger an internal error in infrun.c when stepping from that location. Set it. (gdb) rec full (gdb) c Continuing. Breakpoint 1, foo (void) at foo.c:42 42 x = y (gdb) rn foo (void) at foo.c:41 41 y = x (gdb) rec go end Go forward to insn number 98724 at foo.c:42 42 x = y (gdb) n infrun.c:2382: internal-error: resume: Assertion `sig != GDB_SIGNAL_0' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) This happens because there's a breakpoint at PC when the "next" is issued, so that breapoint should be immediately stepped over. That should have been detected/done by proceed, here: if (addr == (CORE_ADDR) -1) { if (pc == stop_pc && breakpoint_here_p (aspace, pc) == ordinary_breakpoint_here && execution_direction != EXEC_REVERSE) /* There is a breakpoint at the address we will resume at, step one instruction before inserting breakpoints so that we do not stop right away (and report a second hit at this breakpoint). Note, we don't do this in reverse, because we won't actually be executing the breakpoint insn anyway. We'll be (un-)executing the previous instruction. */ tp->stepping_over_breakpoint = 1; But since stop_pc was stale, the pc == stop_pc check failed, and left the breakpont at PC inserted. gdb/ * record-btrace.c (record_btrace_goto_begin, record_btrace_goto_end) record_btrace_goto): Move call to print_stack_frame ... (record_btrace_set_replay): ... here. Set stop_pc. * record-full.c (record_full_goto_entry): Set stop_pc. testsuite/ * gdb.btrace/record_goto-step.exp: New.
2015-07-09Use "gold_info" instead of "gold_warning" for erratum fix.Han Shen2-2/+10
gold/ChangeLog: * aarch64.cc (Target_aarch64::scan_erratum_843419_span): Use 'gold_info'. (Target_aarch64::scan_erratum_835769_span): USe 'gold_info'.
2015-07-10Automatic date update in version.inGDB Administrator1-1/+1
2015-07-09Drop 'missing mapping symbols' warning for arm and aarch64.Han Shen3-13/+10
The psABI (AAELF) says this about mapping symbols: 4.6.5.1 Section-relative mapping symbols Mapping symbols defined in a section define a sequence of half-open address intervals that cover the address range of the section. Each interval starts at the address defined by the mapping symbol, and continues up to, but not including, the address defined by the next (in address order) mapping symbol or the end of the section. A section must have a mapping symbol defined at the beginning of the section; however, if the section contains only data then the mapping symbol may be omitted. That makes it pretty clear that, in the absence of a mapping symbol, the entire section can be treated as data. gold/ChangeLog: * aarch64.cc (AArch64_relobj::scan_errata): Drop missing symbol warning. * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Drop missing symbol warning.
2015-07-09Add NEWS entry for tracepoints support on aarch64-linuxPierre Langlois2-0/+6
gdb/ChangeLog: * NEWS: Mention support for tracepoints on aarch64-linux.
2015-07-09[GDBServer][AArch64] Enable support for tracepointsPierre Langlois2-0/+16
gdb/gdbserver/ChangeLog: * linux-aarch64-low.c (aarch64_supports_tracepoints): New function. Return 1. (the_low_target): Install it.
2015-07-09[testsuite][AArch64] Port gdb.tracePierre Langlois9-0/+34
This patch adds support for AArch64 to the gdb.trace testsuite. Note that it does not add support for testing fast tracepoint as it isn't supported. Therefore the test cases with inline assembly are not ported in this patch, as we do not know what the conditions for inserting a fast tracepoint on AArch64 would be. gdb/testsuite/ChangeLog: * gdb.trace/backtrace.exp: Set registers for aarch64 target. * gdb.trace/collection.exp: Likewise. * gdb.trace/mi-trace-frame-collected.exp: Likewise. * gdb.trace/mi-trace-unavailable.exp: Likewise. * gdb.trace/report.exp: Likewise. * gdb.trace/trace-break.exp: Likewise. * gdb.trace/unavailable.exp: Likewise. * gdb.trace/while-dyn.exp: Likewise.
2015-07-09[AArch64] Implement gdbarch_gen_return_address gdbarch methodPierre Langlois2-0/+22
This patch implements the 'collect $_ret' command to collect the return address of a function in a tracepoint. It marks the LR register for collection. gdb/ChangeLog: * aarch64-tdep.c: Add ax.h and ax-gdb.h includes. (aarch64_gen_return_address): New function. (aarch64_gdbarch_init): Hook it.
2015-07-09[AArch64] Teach stub unwinder to terminate gracefullyPierre Langlois2-5/+42
The stub unwinder is used on AArch64 if the target's memory is not readable at the current PC. For example, the user could try to call at an invalid address such as 0x0, as covered in the gdb.base/signull.exp test case. Many GDB ports use a similar unwinder to handle this case too. If we purposely kill the inferior before examining the trace then we get the following issue: ~~~ ... (gdb) trace f Tracepoint 3 at 0x7fb7fc28c0 (gdb) tstart (gdb) continue ... (gdb) tstop (gdb) tsave /tmp/trace (gdb) kill ... (gdb) target tfile /tmp/trace ... (gdb) tfind Register 31 is not available. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Found trace frame 0, tracepoint 3 #-1 0x0000007fb7fc28c0 in f () ... ^^^ ~~~ This patch teaches the stub unwinder to report to the core frame code with UNWIND_UNAVAILABLE when either the stack pointer of the return address are unavailable to read from the target. gdb/ChangeLog: * aarch64-tdep.c (aarch64_make_stub_cache): Set available_p and swallow NOT_AVAILABLE_ERROR. (aarch64_stub_this_id): Call frame_id_build_unavailable_stack if available_p is not set. (aarch64_stub_frame_unwind_stop_reason): New function. (aarch64_stub_unwind): Install it.
2015-07-09[AArch64] Teach prologue unwinder to terminate gracefullyPierre Langlois2-26/+87
Without debugging information, we have the following issue when examining a trace buffer: ~~~ ... (gdb) trace f Tracepoint 3 at 0x7fb7fc28c0 (gdb) tstart (gdb) continue ... (gdb) tstop (gdb) tfind start Register 31 is not available. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Found trace frame 0, tracepoint 3 #-1 0x0000007fb7fc28c0 in f () ... ^^^ ~~~ The reason for this is that the target's stack pointer is unavailable when examining the trace buffer. What we are seeing is due to the 'tfind' command creating a sentinel frame and unwinding it. If an exception is thrown, we are left with the sentinel frame being displayed at level #-1. The exception is thrown when the prologue unwinder tries to read the stack pointer to construct an ID for the frame. This patch fixes this by making the prologue unwinder catch NOT_AVAILABLE_ERROR exceptions when either registers or memory is unreadable and report back to the frame core code with UNWIND_UNAVAILABLE. gdb/ChangeLog: * aarch64-tdep.c (aarch64_prologue_cache) <available_p>: New field. (aarch64_make_prologue_cache_1): New function, factored out from aarch64_make_prologue_cache. Do not allocate cache. Set available_p. (aarch64_make_prologue_cache): Reimplement wrapping aarch64_make_prologue_cache_1, and swallowing NOT_AVAILABLE_ERROR. (aarch64_prologue_frame_unwind_stop_reason): New function. Return UNWIND_UNAVAILABLE if available_p is not set. (aarch64_prologue_unwind): Install it. (aarch64_prologue_this_id): Move prev_pc and prev_sp limit checks into aarch64_prologue_frame_unwind_stop_reason. Call frame_id_build_unavailable_stack if available_p is not set.
2015-07-09[AArch64] Only access inferior registers when creating a frame cachePierre Langlois2-8/+28
This patch moves the address of the start of a function (func) and the address from which it was called (prev_pc) into aarch64_prologue_cache. The idea is to keep accesses to the inferior's registers into aarch64_make_prologue_cache and aarch64_make_stub_cache. gdb/ChangeLog: * aarch64-tdep.c (aarch64_prologue_cache) <func, prev_pc>: New fields. (aarch64_scan_prologue): Set prev_pc. (aarch64_make_prologue_cache): Set func. (aarch64_make_stub_cache): Set prev_pc. (aarch64_prologue_this_id): Remove local variables id, pc and func. Read prev_pc and func from cache. (aarch64_stub_this_id): Read prev_pc from cache.
2015-07-09[AArch64] Refactor aarch64_make_stub_cachePierre Langlois2-10/+19
We would previously have to make sure the frame cache was not already created before calling aarch64_make_stub_cache. This patch makes this function check it so the caller does not need to do so. gdb/ChangeLog: * aarch64-tdep.c (aarch64_make_stub_cache): Update comment. New argument this_cache. Remove unused local variables reg and unwound_fp. Return early if this_cache is already set. Set this_cache. (aarch64_stub_this_id): Update call to aarch64_make_stub_cache.
2015-07-09[AArch64] Refactor aarch64_make_prologue_cachePierre Langlois2-18/+25
We would previously have to make sure the frame cache was not already created before calling aarch64_make_prologue_cache. This patch makes this function check it so that the caller does not need to do so. gdb/ChangeLog: * aarch64-tdep.c (aarch64_make_prologue_cache): Update comment. New argument this_cache. Return early if this_cache is already set. Set this_cache. (aarch64_prologue_this_id): Update call to aarch64_make_prologue_cache. (aarch64_prologue_prev_register): Likewise. (aarch64_normal_frame_base): Likewise.
2015-07-092015-07-09 Catherine Moore <clm@codesourcery.com>Catherine Moore19-4/+154
include/ * elf/mips/mips.h (Val_GNU_MIPS_ABI_FP_NAN2008): New. gas/ * config/tc-mips.c (check_fpabi): Handle VAL_GNU_MIPS_ABI_FP_NAN2008. binutils/ * readelf.c (print_mips_fp_abi_value): Handle Val_GNU_MIPS_ABI_FP_NAN2008. ld/testsuite/ * ld-mips-elf/attr-gnu-4-08.d: Update expected output. * ld-mips-elf/attr-gnu-4-09.d: New. * ld-mips-elf/attr-gnu-4-19.d: New. * ld-mips-elf/attr-gnu-4-29.d: New. * ld-mips-elf/attr-gnu-4-39.d: New. * ld-mips-elf/attr-gnu-4-49.d: New. * ld-mips-elf/attr-gnu-4-59.d: New. * ld-mips-elf/attr-gnu-4-69.d: New. * ld-mips-elf/attr-gnu-4-79.d: New. * ld-mips-elf/attr-gnu-4-89.d: New. * ld-mips-elf/attr-gnu-4-9.s: New. * ld-mips-elf/mips-elf.exp: Run new tests.
2015-07-09Factor out memberptr printing code from c_val_printSimon Marchi2-6/+29
gdb/ChangeLog: * c-valprint.c (c_val_print): Factor out memberptr printing code from c_val_print to ... (c_val_print_memberptr): ... this new function.
2015-07-09Factor out int printing code from c_val_printSimon Marchi2-24/+41
gdb/ChangeLog: * c-valprint.c (c_val_print): Factor out int printing code to ... (c_val_print_int): ... this new function.
2015-07-09Factor out struct and union printing code from c_val_printSimon Marchi2-30/+65
gdb/ChangeLog: * c-valprint.c (c_val_print): Factor out struct and union printing code to ... (c_val_print_struct): ... this new function ... (c_val_print_union): ... and this new function.
2015-07-09Factor out pointer printing code from c_val_printSimon Marchi2-25/+44
gdb/ChangeLog: * c-valprint.c (c_val_print): Factor out pointer printing code to ... (c_val_print_ptr): ... this new function.
2015-07-09Factor out array printing code from c_val_printSimon Marchi2-94/+116
gdb/ChangeLog: * c-valprint.c (c_valprint): Factor our array printing code from c_val_print to ... (c_val_print_array): ... this new function.
2015-07-09Factor out print_unpacked_pointer from c_val_printSimon Marchi2-99/+112
Turn this code into a function, instead of a goto. gdb/ChangeLog: * c-valprint.c (c_val_print): Factor out pointer printing code to ... (print_unpacked_pointer): ... this new function.
2015-07-09Remove unneeded variable assignmentSimon Marchi2-4/+9
The assignment to i in the TYPE_CODE_PTR section is not useful. Removing it allows to move i in a narrower scope, which will help things somewhere in the next patches. gdb/ChangeLog: * c-valprint.c (c_val_print): Remove an assignment to i and move its declaration.
2015-07-092015-07-09 Catherine Moore <clm@codesourcery.com>Catherine Moore2-3/+9
* elflink.c (bfd_elf_size_dynamic_sections): Call to _bfd_elf_maybe_strip_eh_frame_hdr should be before bed->elf_backend_size_dynamic_sections.
2015-07-09Pass ptid to aarch64_linux_get_debug_reg_capacityYao Qi2-4/+10
This patch is to pass ptid to aarch64_linux_get_debug_reg_capacity, and stop using global variable inferior_ptid. gdb: 2015-07-09 Yao Qi <yao.qi@linaro.org> * aarch64-linux-nat.c (aarch64_linux_get_debug_reg_capacity): Add argument ptid. Update comments. Caller update.
2015-07-09[gdbserver, aarch64] Set usrregs to NULL in regs_infoYao Qi2-29/+7
Hi, I happen to read the comments in regs_info below, struct regs_info { ... /* Info used when accessing registers with PTRACE_PEEKUSER / PTRACE_POKEUSER. This can be NULL if all registers are transferred with regsets .*/ struct usrregs_info *usrregs; that usrregs can be NULL if all registers are transferred with regsets, which is exactly what aarch64-linux does. This patch is to set usrregs to NULL in regs_info and remove aarch64_usrregs_info and aarch64_regmap. gdb/gdbserver: 2015-07-09 Yao Qi <yao.qi@linaro.org> * linux-aarch64-low.c (aarch64_regmap): Remove. (aarch64_usrregs_info): Remove. (regs_info): Set field usrregs to NULL.
2015-07-09btrace, pt: support new packetsMarkus Metzger2-1/+31
Add support for dumping new Intel(R) Processor Trace packets in the "maint btrace packet-history" command. gdb/ * btrace.c (pt_print_packet): Print stop, vmcs, tma, mtc, cyc, and mnt packets.
2015-07-09btrace: fix build fail with 32-bit BFDMarkus Metzger2-2/+6
When compiling GDB with 32-bit BFD, the build fails with: In file included from btrace.h:33:0, from btrace.c:23: /usr/include/intel-pt.h:1643:51: note: expected 'int (*)(uint8_t *, size_t, const struct pt_asid *, uint64_t, void *)' but argument is of type 'int (*)(gdb_byte *, size_t, const struct pt_asid *, CORE_ADDR, void *)' extern pt_export int pt_image_set_callback(struct pt_image *image, ^ gdb/ * btrace.c (btrace_pt_readmem_callback): Change type of PC argument.
2015-07-09Automatic date update in version.inGDB Administrator1-1/+1
2015-07-08Add missing spaces in previous patchSimon Marchi2-2/+6
gdb/ChangeLog: * progspace.c (delete_program_space): Add missing spaces.
2015-07-08Delete program spaces directly when removing inferiorsSimon Marchi7-59/+61
When deleting an inferior, delete the associated program space as well if it becomes unused. This replaces the "pruning" approach, with which you could forget to call prune_program_spaces (as seen, with the -remove-inferior command, see [1]). This allows to remove the prune_program_spaces function. At the same time, I was able to clean up the delete_inferior* family: - delete_inferior is unused - delete_inferior_silent is only used in monitor_close, but is replaced with discard_all_inferiors [2], so it becomes unused - All remaining calls to delete_inferior_1 are with silent=1, so the parameter is removed - delete_inferior_1 is renamed to delete_inferior I renamed pspace_empty_p to program_space_empty_p. I prefer if the "exported" functions have a more explicit and standard name. Tested on Ubuntu 14.10. [1] https://sourceware.org/ml/gdb-patches/2014-09/msg00717.html [2] See https://sourceware.org/ml/gdb-patches/2015-07/msg00228.html and follow-ups for details. gdb/Changelog: * inferior.c (delete_inferior_1): Rename to ... (delete_inferior): ..., remove 'silent' parameter, delete program space when unused and remove call to prune_program_spaces. Remove the old, unused, delete_inferior. (delete_inferior_silent): Remove. (prune_inferiors): Change call from delete_inferior_1 to delete_inferior and remove 'silent' parameter. Remove call to prune_program_spaces. (remove_inferior_command): Idem. * inferior.h (delete_inferior_1): Rename to... (delete_inferior): ..., remove 'silent' parameter and remove the original delete_inferior. (delete_inferior_silent): Remove. * mi/mi-main.c (mi_cmd_remove_inferior): Change call from delete_inferior_1 to delete_inferior and remove 'silent' parameter. * progspace.c (prune_program_spaces): Remove. (pspace_empty_p): Rename to... (program_space_empty_p): ... and make non-static. (delete_program_space): New. * progspace.h (prune_program_spaces): Remove declaration. (program_space_empty_p): New declaration. (delete_program_space): New declaration. * monitor.c (monitor_close): Replace call to delete_thread_silent and delete_inferior_silent with discard_all_inferiors.
2015-07-08Clarify case requirements for gas pseudo-opsRichard Sandiford2-1/+6
gas/ 2015-07-08 Ciro Santilli <ciro.santilli@gmail.com> * doc/as.texinfo: Clarify case requirements for pseudo ops.
2015-07-08tui: replace deprecated_register_changed_hook with observerPatrick Palka6-14/+31
This is a straightforward replacement of the TUI's use of the aforementioned hook with the register_changed observer. Since this was the only user of the hook, this patch also removes the hook. gdb/ChangeLog: * defs.h (deprecated_register_changed_hook): Remove prototype. * interps.c (clear_iterpreter_hooks): Remove reference to deprecated_register_changed_hook. * top.c (deprecated_register_changed_hook): Remove prototype. * valops.c (value_assign): Remove reference to deprecated_register_changed_hook. * tui/tui-hooks.c (tui_register_changed): Add parameter "frame". Add comment documenting the function. (tui_register_changed_observer): Define. (tui_install_hooks): Remove reference to deprecated_register_changed_hook. Set tui_register_changed_observer. (tui_remove_hooks): Remove reference to deprecated_register_changed_hook. Unset tui_register_changed_observer.
2015-07-08Define DIFF_EXPR_OK for avr target to allow PC relative difference relocation.Denis Chertykov13-4/+270
When generating relocation (tc_gen_reloc) 32 bit relocation fixup is changed to new 32 bit PC relative relocation if the fixup has pc-relative flag set. bfd/ChangeLog 2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com> * elf32-avr.c: Add 32 bit PC relative relocation for AVR target. gas/ChangeLog 2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com> * config/tc-avr.c (tc_gen_reloc): Change 32 bit relocation to 32 bit PC relative and update offset if the fixup is pc-relative. * config/tc-avr.h (DIFF_EXPR_OK): Define to enable PC relative diff relocs. gas/testsuite/ChangeLog 2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com> * gas/avr/pc-relative-reloc.d: New test for 32 bit pc relative reloc. * gas/avr/per-function-debugline.s: New test source. include/ChangeLog 2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com> * elf/avr.h: Add new 32 bit PC relative relocation. ld/testsuite/ChangeLog 2015-07-06 Pitchumani Sivanupandi <pitchumani.s@atmel.com> * ld-avr/gc-section-debugline.d: New test. * ld-avr/per-function-debugline.s: Source for new test.
2015-07-08gdb/doc: Update 'frame' command documentation.Andrew Burgess2-13/+10
The documentation for the 'frame' command has gotten a little out of date, it still mentions architecturally specific details that are no longer relevant. This commit removes the old details that no longer apply, and tries to expand the existing text a little to make the usage clearer for some cases. gdb/doc/ChangeLog: * gdb.texinfo (Selection): Update documentation for 'frame' command.
2015-07-08Revert "Delete program spaces directly when removing inferiors"Simon Marchi6-57/+57
Reverted, since it causes a build failure. It turns out that delete_inferior_silent wasn't actually unused. This reverts commit 0560c645c02eba2828a053039dcfdf676cdd1d00.
2015-07-08Delete program spaces directly when removing inferiorsSimon Marchi6-57/+57
When deleting an inferior, delete the associated program space as well if it becomes unused. This replaces the "pruning" approach, with which you could forget to call prune_program_spaces (as seen, with the -remove-inferior command, see [1]). This allows to remove the prune_program_spaces function. At the same time, I was able to clean up the delete_inferior* family. delete_inferior_silent and delete_inferior were unused, which allowed renaming delete_inferior_1 to delete_inferior. Also, since all calls to it were with silent=1, I removed that parameter completely. I renamed pspace_empty_p to program_space_empty_p. I prefer if the "exported" functions have a more explicit and standard name. Tested on Ubuntu 14.10. This obsoletes my previous patch "Add call to prune_program_spaces in mi_cmd_remove_inferior" [1]. [1] https://sourceware.org/ml/gdb-patches/2014-09/msg00717.html gdb/Changelog: * inferior.c (delete_inferior_1): Rename to ... (delete_inferior): ..., remove 'silent' parameter, delete program space when unused and remove call to prune_program_spaces. Remove the old, unused, delete_inferior. (delete_inferior_silent): Remove. (prune_inferiors): Change call from delete_inferior_1 to delete_inferior and remove 'silent' parameter. Remove call to prune_program_spaces. (remove_inferior_command): Idem. * inferior.h (delete_inferior_1): Rename to... (delete_inferior): ..., remove 'silent' parameter and remove the original delete_inferior. (delete_inferior_silent): Remove. * mi/mi-main.c (mi_cmd_remove_inferior): Change call from delete_inferior_1 to delete_inferior and remove 'silent' parameter. * progspace.c (prune_program_spaces): Remove. (pspace_empty_p): Rename to... (program_space_empty_p): ... and make non-static. (delete_program_space): New. * progspace.h (prune_program_spaces): Remove declaration. (program_space_empty_p): New declaration. (delete_program_space): New declaration.
2015-07-08compile: Warn for old GCC on cv-qualified self-referenceJan Kratochvil5-35/+60
GDB could: compile code struct_object.selffield = &struct_object ./compile/compile-c-types.c:83: internal-error: insert_type: Assertion `add == NULL || add->gcc_type == gcc_type' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) FAIL: gdb.compile/compile.exp: compile code struct_object.selffield = &struct_object (GDB internal error) The bug was not in GDB but in the GCC part interfacing with GDB. Alexandre Oliva has fixed it the right way: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;a=commitdiff;h=072dfdba0ea62abb65514cb3a90cdf3868efe286 git://gcc.gnu.org/git/gcc.git aoliva/libcp1 Attaching this GDB testsuite update + info to user s/he should upgrade GCC. After Alex upstreams the fix I can update the message to contain the specific GCC release. gdb/ChangeLog 2015-07-08 Jan Kratochvil <jan.kratochvil@redhat.com> PR compile/18484 * compile/compile-c-types.c (insert_type): Change gdb_assert to error. gdb/testsuite/ChangeLog 2015-07-08 Jan Kratochvil <jan.kratochvil@redhat.com> PR compile/18484 * gdb.compile/compile.c (struct struct_type): Add volatile to selffield's type. * gdb.compile/compile.exp (compile code struct_object.selffield = &struct_object): Skip further struct_object tests if this one xfails.
2015-07-08PR18617 - Incorrect expression bytecode generated for narrowing conversionsRobert O'Callahan4-1/+13
The existing code preserves 'from' bits, which is incorrect. E.g. (gdb) maint agent-eval (char)255L Scope: 0x4008d6 Reg mask: 00 0 const16 255 3 ext 64 5 end 'ext 64' should be 'ext 8'; this bytecode evaluates to 255 instead of the correct result of -1. The fix is simple. I ran the entire test suite on x86-64 and there were no new test failures. gdb/ChangeLog: 2015-07-08 Robert O'Callahan <robert@ocallahan.org> PR exp/18617 * ax-gdb.c (gen_conversion): Extend to 'to' bits, not 'from'. gdb/testsuite/ChangeLog: 2015-07-08 Robert O'Callahan <robert@ocallahan.org> PR exp/18617 * gdb.trace/ax.exp: Add test.
2015-07-08add myself to write-after-approval listMarkus Metzger2-0/+5
gdb/ * MAINTAINERS (Write After Approval): Add Markus T. Metzger.
2015-07-08ari: fix strerror() useMarkus Metzger2-10/+15
Do not use strerror(), instead use safe_strerror(). gdb/ * nat/linux-btrace.c (kernel_supports_bts, kernel_supports_pt): Use safe_strerror() instead of strerror().
2015-07-08Automatic date update in version.inGDB Administrator1-1/+1
2015-07-07Make gold aarch64 accept long form of mapping symbols.Han Shen2-4/+18
2015-07-07 Han Shen <shenhan@google.com> gold/ChangeLog: 2015-07-06 Han Shen <shenhan@google.com> * aarch64.cc (AArch64_relobj::do_count_local_symbols): Make legal of mapping symbols.
2015-07-07New proc is_aarch64_targetYao Qi6-4/+23
Some tests expect the the target is aarch64, but checking target triplet is not accurate, because target triplet can be aarch64 but the program is in arm (or aarch32) state. This patch addes a new proc is_aarch64_target which returns true if the target is on aarch64 state. gdb/testsuite: 2015-07-07 Yao Qi <yao.qi@linaro.org> * gdb.arch/aarch64-atomic-inst.exp: Check is_aarch64_target instead of istarget "aarch64*-*-*". * gdb.arch/aarch64-fp.exp: Likewise. * gdb.base/float.exp: Likewise. * gdb.reverse/aarch64.exp: Likewise. * lib/gdb.exp (is_aarch64_target): New proc.
2015-07-07New proc is_aarch32_targetYao Qi9-7/+56
GDB tests running on arm target should be also run on aarch32 (32-bit mode on aarch64). There should be no difference. It is not precise to check target triplet to decide which tests should be run, because if I compiler all the test binary in 32-bit (arm program), but target triplet is still aarch64, so that these arm specific tests are skipped. This patch is to add a new proc is_aarch32_target which return true if target triplet is arm or the test binary is compiled for arm. gdb/testsuite: 2015-07-07 Yao Qi <yao.qi@linaro.org> * lib/gdb.exp (is_aarch32_target): New proc. * gdb.arch/arm-bl-branch-dest.exp: Check is_aarch32_target instead of "istarget "arm*-*-*"". * gdb.arch/arm-disp-step.exp: Likewise. * gdb.arch/thumb-bx-pc.exp: Likewise. * gdb.arch/thumb-prologue.exp: Likewise. * gdb.arch/thumb-singlestep.exp: Likewise. * gdb.base/disp-step-syscall.exp: Likewise. * gdb.base/float.exp: Likewise.
2015-07-07Enable multi-arch test in catch-syscall.exp on aarch64Yao Qi2-2/+10
This patch is to enable test_catch_syscall_multi_arch on aarch64. gdb/testsuite: 2015-07-07 Yao Qi <yao.qi@linaro.org> * gdb.base/catch-syscall.exp (test_catch_syscall_multi_arch): Set arch1, arch2, syscall1_name, syscall2_name and syscall_number.
2015-07-07Adjust gdb.multi tests for aarch64Yao Qi3-2/+41
Multi-arch related tests under gdb.multi are to compile programs with the same compiler but different compiler options (-m64 vs -m32). However, different compilers are needed to compile both aarch64 program and arm (aarch32) program. This patch is to adjust these test cases to compile programs in different modes with different compiler. When we use gcc for arm-linux target, its file name can be different, arm-linux-gnueabihf-gcc, arm-linux-gnueabi-gcc, or arm-none-linux-gnueabi-gcc, so I add a variable ARM_CC_FOR_TARGET, so that user can set the name of gcc for arm-linux target on aarch64, like: $ make check RUNTESTFLAGS='ARM_CC_FOR_TARGET=arm-linux-gnueabihf-gcc multi-arch.exp' gdb/testsuite: 2015-07-07 Yao Qi <yao.qi@linaro.org> * gdb.multi/multi-arch-exec.exp: Set march1 and march2 to "" if target is aarch64. If target is aarch64, set compiler=${ARM_CC_FOR_TARGET} if it exists. * gdb.multi/multi-arch.exp: Likewise.
2015-07-07Set architecture to arm in arm-*.xml filesYao Qi13-0/+33
This patch is to add the following line to various arm target description xml files, <architecture>arm</architecture> in order to fix problems I've seen on aarch64 multi-arch debugging, detach^M Detaching from program: build-gdb/gdb/testsuite/gdb.base/attach, process 17145^M (gdb) PASS: gdb.base/attach.exp: attach1 detach file^M No executable file now.^M Architecture of file not recognized.^M (gdb) FAIL: gdb.base/attach.exp: attach1, purging symbols after detach Without this patch, struct target_desc *tdesc_* are not initialised properly, that is, fields arch and osabi in 'struct target_desc' are not set properly. This doesn't cause any problems on single arch debugging, because arch-utils.c:gdbarch_info_fill will guess correctly. However, in multi-arch debugging, gdbarch_info_fill gets the aarch64 arch, but the target description is for arm (because the current inferior is 32-bit arm). It is a surprise to me we didn't set architecture to "arm" before in *.xml files, and I didn't find out why didn't do so. AFAICS, gdb/features/arm-with-iwmmxt.xml was added firstly (in patch https://sourceware.org/ml/gdb-patches/2007-01/msg00593.html) which had <architecture>iwmmxt</architecture>, however, afterwards, architecture isn't set anymore in features/arm-*.xml files (in patches https://sourceware.org/ml/gdb-patches/2009-07/msg00689.html and https://sourceware.org/ml/gdb-patches/2010-08/msg00225.html). gdb: 2015-07-07 Yao Qi <yao.qi@linaro.org> * features/arm-with-m-fpa-layout.xml: Set architecture to arm. * features/arm-with-m-fpa-layout.c: Regenerated. * features/arm-with-m-vfp-d16.xml: Likewise. * features/arm-with-m-vfp-d16.c: Regenerated. * features/arm-with-m.xml: Likewise. * features/arm-with-m.c: Regenerated. * features/arm-with-neon.xml: Likewise. * features/arm-with-neon.c: Regenerated. * features/arm-with-vfpv2.xml: Likewise. * features/arm-with-vfpv2.c: Regenerated. * features/arm-with-vfpv3.xml: Likewise. * features/arm-with-vfpv3.c: Regenerated.
2015-07-07Native debug arm program by aarch64 GDBYao Qi6-43/+192
This patch is to let aarch64 GDB debug 32-bit arm program natively. In each function for fetching and storing registers, GDB will check gdbarch_bfd_arch_info (gdbarch)->bits_per_word, if it is 32, call the corresponding aarch32 functions in aarch32-linux-nat.c, otherwise fall back to aarch64 code to fetch and store registers. aarch64_linux_read_description has to return the right target description, but we don't have gdbarch available there, so GDB fetches auxv and gets AT_PHENT, in order to determine whether the target is 32-bit or 64-bit. I learned this trick from solib-svr4.c. gdb: 2015-07-07 Yao Qi <yao.qi@linaro.org> * aarch32-linux-nat.h (VFP_REGS_SIZE): New macro, moved from arm-linux-nat.c. * aarch64-linux-nat.c: Include aarch32-linux-nat.h and elf/external.h. (fetch_gregs_from_thread): Call aarch32_gp_regcache_supply if target is 32-bit. (store_gregs_to_thread): Call aarch32_gp_regcache_collect if target is 32-bit. (fetch_fpregs_from_thread): Call aarch32_vfp_regcache_supply if target is 32-bit. (store_fpregs_to_thread): Call aarch32_vfp_regcache_collect if target is 32-bit. (tdesc_arm_with_vfpv3, tdesc_arm_with_neon): Declare. (aarch64_linux_read_description): Return the right target description. * arm-linux-nat.c (VFP_REGS_SIZE): Moved to aarch32-linux-nat.h. * config/aarch64/linux.mh (NATDEPFILES): Add aarch32-linux-nat.o. * configure.tgt (aarch64*-*-linux*): Add arm-tdep.o and arm-linux-tdep.o
2015-07-07New aarch32-linux-nat.cYao Qi5-38/+153
This patch is to move all the code about transferring regcache <-> byte buffer for arm (aarch32) to a separate file aarch32-linux-nat.c. Then, in the following patch, aarch64 code can use it to do multi-arch debugging. This is a refactory patch. gdb: 2015-07-07 Yao Qi <yao.qi@linaro.org> * aarch32-linux-nat.c: New file. * aarch32-linux-nat.h: New file. * arm-linux-nat.c: Include aarch32-linux-nat.h. (fetch_regs): Move code to aarch32-linux-nat.c. Call aarch32_gp_regcache_supply. (store_regs): Move code to aarch32-linux-nat.c. Call aarch32_gp_regcache_collect. (fetch_vfp_regs): Move code to aarch32-linux-nat.c. Call aarch32_vfp_regcache_supply. (store_vfp_regs): Move code to aarch32-linux-nat.c. Call aarch32_vfp_regcache_collect. * config/arm/linux.mh (NATDEPFILES): Add aarch32-linux-nat.o.