Alan Modra [Wed, 8 Jul 2015 12:48:34 +0000 (22:18 +0930)]
Make ALIGN(x) behave as ALIGN(.,x)
Inside output sections, ALIGN(.,x) uses a section-relative value for
dot. The unary ALIGN always used the absolute value of dot.
* ldexp.c (align_dot_val): New function.
(fold_unary <ALIGN_K, NEXT>): Use it.
Alan Modra [Fri, 10 Jul 2015 10:36:25 +0000 (20:06 +0930)]
Add missing changelog entries
Andreas Arnez [Fri, 10 Jul 2015 08:36:02 +0000 (10:36 +0200)]
gnu_vector.exp: Skip infcall tests on x86/x86_64
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.
Markus Metzger [Mon, 6 Jul 2015 14:36:45 +0000 (16:36 +0200)]
record: set stop_pc in "record goto" command
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.
Han Shen [Thu, 9 Jul 2015 22:55:55 +0000 (15:55 -0700)]
Use "gold_info" instead of "gold_warning" for erratum fix.
gold/ChangeLog:
* aarch64.cc (Target_aarch64::scan_erratum_843419_span): Use 'gold_info'.
(Target_aarch64::scan_erratum_835769_span): USe 'gold_info'.
GDB Administrator [Fri, 10 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Han Shen [Thu, 9 Jul 2015 22:38:12 +0000 (15:38 -0700)]
Drop 'missing mapping symbols' warning for arm and aarch64.
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
Add NEWS entry for tracepoints support on aarch64-linux
gdb/ChangeLog:
* NEWS: Mention support for tracepoints on aarch64-linux.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
[GDBServer][AArch64] Enable support for tracepoints
gdb/gdbserver/ChangeLog:
* linux-aarch64-low.c (aarch64_supports_tracepoints): New
function. Return 1.
(the_low_target): Install it.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
[testsuite][AArch64] Port gdb.trace
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
[AArch64] Implement gdbarch_gen_return_address gdbarch method
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
[AArch64] Teach stub unwinder to terminate gracefully
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
[AArch64] Teach prologue unwinder to terminate gracefully
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:11 +0000 (16:35 +0100)]
[AArch64] Only access inferior registers when creating a frame cache
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:10 +0000 (16:35 +0100)]
[AArch64] Refactor aarch64_make_stub_cache
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.
Pierre Langlois [Thu, 9 Jul 2015 15:35:10 +0000 (16:35 +0100)]
[AArch64] Refactor aarch64_make_prologue_cache
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.
Catherine Moore [Thu, 9 Jul 2015 15:24:54 +0000 (08:24 -0700)]
2015-07-09 Catherine Moore <clm@codesourcery.com>
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.
Simon Marchi [Thu, 9 Jul 2015 15:19:25 +0000 (11:19 -0400)]
Factor out memberptr printing code from c_val_print
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.
Simon Marchi [Thu, 9 Jul 2015 15:18:59 +0000 (11:18 -0400)]
Factor out int printing code from c_val_print
gdb/ChangeLog:
* c-valprint.c (c_val_print): Factor out int printing code to ...
(c_val_print_int): ... this new function.
Simon Marchi [Thu, 9 Jul 2015 15:18:39 +0000 (11:18 -0400)]
Factor out struct and union printing code from c_val_print
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.
Simon Marchi [Thu, 9 Jul 2015 15:18:12 +0000 (11:18 -0400)]
Factor out pointer printing code from c_val_print
gdb/ChangeLog:
* c-valprint.c (c_val_print): Factor out pointer printing code
to ...
(c_val_print_ptr): ... this new function.
Simon Marchi [Thu, 9 Jul 2015 15:17:20 +0000 (11:17 -0400)]
Factor out array printing code from c_val_print
gdb/ChangeLog:
* c-valprint.c (c_valprint): Factor our array printing code from
c_val_print to ...
(c_val_print_array): ... this new function.
Simon Marchi [Thu, 9 Jul 2015 15:16:22 +0000 (11:16 -0400)]
Factor out print_unpacked_pointer from c_val_print
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.
Simon Marchi [Thu, 9 Jul 2015 15:15:40 +0000 (11:15 -0400)]
Remove unneeded variable assignment
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.
Catherine Moore [Thu, 9 Jul 2015 15:07:47 +0000 (08:07 -0700)]
2015-07-09 Catherine Moore <clm@codesourcery.com>
* 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.
Yao Qi [Thu, 9 Jul 2015 11:55:45 +0000 (12:55 +0100)]
Pass ptid to aarch64_linux_get_debug_reg_capacity
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.
Yao Qi [Thu, 9 Jul 2015 11:47:06 +0000 (12:47 +0100)]
[gdbserver, aarch64] Set usrregs to NULL in regs_info
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.
Markus Metzger [Thu, 2 Jul 2015 13:16:09 +0000 (15:16 +0200)]
btrace, pt: support new packets
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.
Markus Metzger [Tue, 7 Jul 2015 11:54:34 +0000 (13:54 +0200)]
btrace: fix build fail with 32-bit BFD
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.
GDB Administrator [Thu, 9 Jul 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
Simon Marchi [Wed, 8 Jul 2015 19:48:02 +0000 (15:48 -0400)]
Add missing spaces in previous patch
gdb/ChangeLog:
* progspace.c (delete_program_space): Add missing spaces.
Simon Marchi [Wed, 8 Jul 2015 19:41:01 +0000 (15:41 -0400)]
Delete program spaces directly when removing inferiors
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.
Richard Sandiford [Wed, 8 Jul 2015 19:11:03 +0000 (20:11 +0100)]
Clarify case requirements for gas pseudo-ops
gas/
2015-07-08 Ciro Santilli <ciro.santilli@gmail.com>
* doc/as.texinfo: Clarify case requirements for pseudo ops.
Patrick Palka [Thu, 2 Jul 2015 16:27:50 +0000 (12:27 -0400)]
tui: replace deprecated_register_changed_hook with observer
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.
Denis Chertykov [Wed, 8 Jul 2015 18:35:19 +0000 (21:35 +0300)]
Define DIFF_EXPR_OK for avr target to allow PC relative difference relocation.
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.
Andrew Burgess [Wed, 8 Jul 2015 14:02:32 +0000 (15:02 +0100)]
gdb/doc: Update 'frame' command documentation.
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.
Simon Marchi [Wed, 8 Jul 2015 15:40:35 +0000 (11:40 -0400)]
Revert "Delete program spaces directly when removing inferiors"
Reverted, since it causes a build failure. It turns out that
delete_inferior_silent wasn't actually unused.
This reverts commit
0560c645c02eba2828a053039dcfdf676cdd1d00.
Simon Marchi [Mon, 29 Sep 2014 20:33:10 +0000 (16:33 -0400)]
Delete program spaces directly when removing inferiors
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.
Jan Kratochvil [Wed, 8 Jul 2015 12:42:19 +0000 (14:42 +0200)]
compile: Warn for old GCC on cv-qualified self-reference
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.
Robert O'Callahan [Wed, 8 Jul 2015 09:53:36 +0000 (10:53 +0100)]
PR18617 - Incorrect expression bytecode generated for narrowing conversions
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.
Markus Metzger [Mon, 6 Jul 2015 13:40:45 +0000 (15:40 +0200)]
add myself to write-after-approval list
gdb/
* MAINTAINERS (Write After Approval): Add Markus T. Metzger.
Markus Metzger [Mon, 6 Jul 2015 13:21:37 +0000 (15:21 +0200)]
ari: fix strerror() use
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().
GDB Administrator [Wed, 8 Jul 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
Han Shen [Mon, 6 Jul 2015 22:17:25 +0000 (15:17 -0700)]
Make gold aarch64 accept long form of mapping symbols.
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.
Yao Qi [Tue, 7 Jul 2015 15:58:20 +0000 (16:58 +0100)]
New proc is_aarch64_target
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.
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
New proc is_aarch32_target
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.
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
Enable multi-arch test in catch-syscall.exp on aarch64
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.
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
Adjust gdb.multi tests for aarch64
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.
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
Set architecture to arm in arm-*.xml files
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.
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
Native debug arm program by aarch64 GDB
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
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
New aarch32-linux-nat.c
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.
Yao Qi [Tue, 7 Jul 2015 15:58:19 +0000 (16:58 +0100)]
Remove {fetch,store}_fpregister and {fetch,store}_register
This patch is to remove fetch_fpregister, fech_register,
store_fpregister and store_register, and use fetch_fpregs,
fetch_regs, store_regs, and store_fpregs instead.
gdb:
2015-07-07 Yao Qi <yao.qi@linaro.org>
* arm-linux-nat.c (store_fpregister): Remove.
(store_register): Likewise.
(fetch_fpregister): Likewise.
(fetch_register): Likewise.
(arm_linux_store_inferior_registers): Call store_regs and
store_fpregs instead.
(arm_linux_fetch_inferior_registers): Call fetch_fpregs and
fetch_regs instead.
Simon Marchi [Tue, 7 Jul 2015 15:39:06 +0000 (11:39 -0400)]
Fix test for Python 3
gdb/testsuite/ChangeLog:
* gdb.python/py-lazy-string.exp: Add missing parentheses to
print.
Yao Qi [Tue, 7 Jul 2015 09:37:28 +0000 (10:37 +0100)]
[arm] Fix regression by Do not skip prologue for asm (.S) files
Patch "Do not skip prologue for asm (.S) files" [1] changes GDB's
behaviour on which test gdb.arch/thumb-singlestep.exp depends, so
it causes the fail below:
(gdb) si^M
37 blx foo^M
(gdb) FAIL: gdb.arch/thumb-singlestep.exp: step into foo
the test assumes the program will stop at the instruction after "push"
but it doesn't. The fix to this fail is to do one more single step.
[1] https://sourceware.org/ml/gdb-patches/2015-06/msg00561.html
gdb/testsuite:
2015-07-07 Yao Qi <yao.qi@linaro.org>
* gdb.arch/thumb-singlestep.exp: Do one more single step.
GDB Administrator [Tue, 7 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Doug Kwan [Mon, 6 Jul 2015 22:02:40 +0000 (15:02 -0700)]
Align text section ends so that stub tables appears at expected addresses.
Andrew Burgess [Mon, 6 Jul 2015 10:33:31 +0000 (11:33 +0100)]
gdb: Rewrite documentation for layout and focus commands.
Changes the documentation for the layout and focus commands.
Instead of documenting each layout (or focus) sub-command as a separate
command, document a single layout (and focus) command which takes a
parameter, then list the possible parameters in a table nested under
each command.
The documentation for the layout command has been extended little to
make it clearer which windows are shown in each layout.
gdb/ChangeLog:
* doc/gdb.texinfo (TUI): Restructure documentation on TUI layout
and focus commands.
Joel Brobecker [Mon, 6 Jul 2015 20:02:47 +0000 (13:02 -0700)]
Update NEWS post GDB 7.10 branch creation.
gdb/ChangeLog:
* NEWS: Create a new section for the next release branch.
Rename the section of the current branch, now that it has
been cut.
Joel Brobecker [Mon, 6 Jul 2015 19:58:29 +0000 (12:58 -0700)]
Bump version to 7.10.50.DATE-cvs.
Now that the GDB 7.10 branch has been created, we can
bump the version number.
gdb/ChangeLog:
GDB 7.10 branch created (
66c4b3e8a628a207bc6aafef6af0c4128195f56e):
* version.in: Bump version to 7.10.50.DATE-cvs.
Luis Machado [Mon, 6 Jul 2015 19:09:21 +0000 (16:09 -0300)]
Fix problems with finishing a dummy function call on simulators.
This fixes regressions introduced with the original change to not
consider permanent breakpoints always inserted:
6ae8866180bf90e9ec76c2dd34c07fd826d11a83 is the first bad commit
commit
6ae8866180bf90e9ec76c2dd34c07fd826d11a83
Author: Luis Machado <lgustavo@codesourcery.com>
Date: Wed Jun 17 16:50:57 2015 -0300
Fix problems with finishing a dummy function call on simulators.
Some checks were mistakenly left out of the original patch, which
caused the following failures:
-PASS: gdb.base/shlib-call.exp: print mainshr1(1)
-PASS: gdb.base/shlib-call.exp: step into mainshr1
+FAIL: gdb.base/shlib-call.exp: print mainshr1(1)
+FAIL: gdb.base/shlib-call.exp: step into mainshr1
-PASS: gdb.cp/chained-calls.exp: q(p())
+FAIL: gdb.cp/chained-calls.exp: q(p())
-PASS: gdb.cp/chained-calls.exp: q(p() + r())
+FAIL: gdb.cp/chained-calls.exp: q(p() + r())
-PASS: gdb.cp/chained-calls.exp: g(f(g(f() + f())) + f())
+FAIL: gdb.cp/chained-calls.exp: g(f(g(f() + f())) + f())
-PASS: gdb.cp/chained-calls.exp: *c
-PASS: gdb.cp/chained-calls.exp: *c + *c
-PASS: gdb.cp/chained-calls.exp: q(*c + *c)
+FAIL: gdb.cp/chained-calls.exp: *c
+FAIL: gdb.cp/chained-calls.exp: *c + *c
+FAIL: gdb.cp/chained-calls.exp: q(*c + *c)
-PASS: gdb.cp/classes.exp: calling method for small class
+FAIL: gdb.cp/classes.exp: calling method for small class
The above is likely caused by GDB not removing the permanent
breakpoints from the target, leading to the inferior executing
the breakpoint instruction and tripping on a SIGSEGV.
gdb/ChangeLog:
2015-07-06 Luis Machado <lgustavo@codesourcery.com>
* breakpoint.c (remove_breakpoint_1): Don't handle permanent
breakpoints in a special way.
(remove_breakpoint): Likewise.
(mark_breakpoints_out): Likewise.
H.J. Lu [Mon, 6 Jul 2015 19:00:45 +0000 (12:00 -0700)]
Remove the merge conflict introduced by
commit
2f0c68f23bb3132cd5ac466ca8775c0d9e4960cd
Author: Catherine Moore <clm@codesourcery.com>
Date: Thu May 28 14:50:36 2015 -0700
Compact EH Support
Andrew Burgess [Mon, 6 Jul 2015 10:37:24 +0000 (11:37 +0100)]
gdb/doc: Fix incorrect use of @xref.
All uses of @xref must be followed by either '.' or ','. In commit
a4ea0946c an incorrect use of @xref was introduced. This commit
adds a comma after the use of @xref.
gdb/ChangeLog:
* doc/gdb.texinfo (TUI): Add comma after @xref.
Andrew Burgess [Mon, 6 Jul 2015 15:56:42 +0000 (16:56 +0100)]
gdb/tui: Don't cast between window types.
Instead of casting between structure types to get the 'tui_gen_win_info'
info from a 'tui_win_info' access the generic member variable. This is
inline with what is done throughout the rest of the tui code.
gdb/ChangeLog:
* tui/tui-win.c (tui_set_focus): Use structure member 'generic'
instead of casting the structure type.
Simon Marchi [Mon, 6 Jul 2015 17:10:56 +0000 (13:10 -0400)]
search_struct_field: remove OFFSET parameter
I was trying to understand what the OFFSET parameter was for, and
realized it was set to 0 in every call to search_struct_field. I
assume that it was used at some point, but some subsequent changes
made it useless.
gdb/ChangeLog:
* valops.c (search_struct_field): Remove OFFSET parameter.
(value_cast_structs): Adjust calls to search_struct_field.
(value_struct_elt): Same.
(find_overload_match): Same.
Simon Marchi [Mon, 6 Jul 2015 17:04:11 +0000 (13:04 -0400)]
Cleanup value_fetch_lazy's comment and return value
The comment for value_fetch_lazy seems outdated. It says that it's only
called from the value_contents and value_contents_all (macros!), which
is not true. Also, the return value seems useless now, despite what the
comment says.
gdb/ChangeLog:
* value.c (value_fetch_lazy): Update comment, change return
value to void.
* value.h (value_fetch_lazy): Change return value to void.
Andrew Burgess [Mon, 6 Jul 2015 14:32:11 +0000 (15:32 +0100)]
gdb: tui_win_name: Make parameter and result const.
This commit makes the parameter and the result for 'tui_win_name'
constant. There's one place in the code that is then updated as a
result of this change.
gdb/ChangeLog:
* tui/tui-data.c (tui_partial_win_by_name): Window name is const.
(tui_win_name): Make parameter and result const.
* tui/tui-data.h (tui_win_name): Make parameter and result const.
Patrick Palka [Thu, 2 Jul 2015 15:55:01 +0000 (11:55 -0400)]
Don't throw an error in "show mpx bound" implementation
"show" functions should not throw an exception in part because it causes
the output of the commands "info set" and "show" to get truncated.
This fixes the following fails:
FAIL: gdb.base/default.exp: info set
FAIL: gdb.base/default.exp: show
gdb/ChangeLog:
* i386-tdep.c (i386_mpx_info_bounds): Don't call error, instead
use printf_unfiltered.
(set_mpx_cmd): Add missing trailing space to command string
literal.
(_initialize_i386_tdep): Give the "mpx" prefix command its
correct name.
GDB Administrator [Mon, 6 Jul 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
Richard Sandiford [Sun, 5 Jul 2015 18:56:59 +0000 (19:56 +0100)]
Fix an opd->append index in elf64-ppc.c
bfd/
* elf64-ppc.c (toc_adjusting_stub_needed): Use the symbol value
plus addend rather than the original st_value when looking up
entries in opd->adjust.
ld/testsuite/
* ld-powerpc/tocopt6-inc.s, ld-powerpc/tocopt6a.s,
ld-powerpc/tocopt6b.s, ld-powerpc/tocopt6c.s,
ld-powerpc/tocopt6.d: New test.
* ld-powerpc/powerpc.exp (ppc64elftests): Add it.
GDB Administrator [Sun, 5 Jul 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
GDB Administrator [Sat, 4 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Kai Tietz [Fri, 3 Jul 2015 14:50:29 +0000 (15:50 +0100)]
Add experimental support for --gc-sections with COFF and PE based targets.
PR ld/11539
bfd * coffcode.h (coff_bfd_gc_sections): Define default
to bfd_coff_gc_sections function.
* cofflink.c (init_reloc_cookie): Copy and adjust coff
related code about gc-sections from elflink.c to here.
(fini_reloc_cookie): Likewise.
(init_reloc_cookie_rels): Likewise.
(fini_reloc_cookie_rels): Likewise.
(init_reloc_cookie_for_section): Likewise.
(fini_reloc_cookie_for_section): Likewise.
(_bfd_coff_gc_mark_hook): Likewise.
(_bfd_coff_gc_mark_rsec): Likewise.
(_bfd_coff_gc_mark_reloc): Likewise.
(_bfd_coff_gc_mark): Likewise.
(_bfd_coff_gc_mark_extra_sections): Likewise.
(coff_gc_sweep_symbol_info): Likewise.
(coff_gc_sweep_symbol): Likewise.
(gc_sweep_hook_fn): Likewise.
(coff_gc_sweep): Likewise.
(bfd_coff_gc_sections): Likewise.
(_bfd_coff_gc_keep): Likewise.
* libcoff.h (coff_reloc_cookie): New struct.
(bfd_coff_gc_sections): New prototype.
(coff_gc_mark_hook_fn): New type.
ld * scripttempl/pep.sc: Mark .idata*, .CRT*, .tls*,
.rsrc*, .init, .ctor*, .dtor*, .fini, .jcr,
.eh_frame, .pdata. .xdata, and .gcc_except_table sections
as KEEP.
* scripttempl/pe.sc: Likewise.
Alan Modra [Fri, 3 Jul 2015 01:28:22 +0000 (10:58 +0930)]
Correct ld Makefile dependendcy for or1k
* Makefile.am (eelf32or1k.c, eelf32or1k_linux.c): Depend on ELF_DEPS.
* Makefile.in: Regenerate.
Alan Modra [Fri, 3 Jul 2015 01:26:26 +0000 (10:56 +0930)]
Remove ppc860, ppc750cl, ppc7450 insns from common ppc.
Back in the day support for these processors was added, we probably
didn't want to waste PPC_OPCODE bits on minor variations. I've had a
complaint that disassembly of mfspr/mtspr was wrong for power8. This
patch fixes that problem.
Note that since -m860/-m850/-m821 are new gas options enabling the
mpc8xx specific mfspr/mtspr variants it is possible that this change
will break some mpc8xx assembly code. ie. you might need to modify
makefiles to pass -m860 to gas.
include/opcode/
* ppc.h (PPC_OPCODE_750, PPC_OPCODE_7450, PPC_OPCODE_860): Define.
opcodes/
* ppc-opc.c (PPC750, PPC7450, PPC860): Define using PPC_OPCODE_*.
* ppc-dis.c (ppc_opts): Add 821, 850 and 860 entries. Add
PPC_OPCODE_7450 to 7450 entry. Add PPC_OPCODE_750 to 750cl entry.
gas/
* config/tc-ppc.c (md_show_usage): Add -m821, -m850, -m860.
* doc/c-ppc.texi (PowerPC-Opts): Likewise.
gas/testsuite/
* gas/ppc/titan.d: Correct mfmcsrr0 disassembly.
Kevin Buettner [Thu, 2 Jul 2015 23:46:31 +0000 (16:46 -0700)]
Add support for backtracing through Renesas RX exception frames.
This change adds support for backtracing through Renesas RX exception
frames.
Determination about the type of frame is made by scanning the
remainder of the function for a return instruction and then looking at
which, if any, return instruction is found. A normal RTS instruction
indicates that the frame is a normal frame. An RTFI instruction
indicates that it's a fast interrupt, and an RTE instruction indicates
that the frame is a (normal) exception frame. If no return instruction
is found within the scanned region - which can happen when the end of
the function cannot be found - it is assumed to be a normal frame.
I was able to test that normal prologue scanning still works by
disabling the dwarf2 sniffer. I've tested this code for normal
interrupts. The fast interrupt case has not been tested.
gdb/ChangeLog:
* rx-tdep.c (RX_USP_REGNUM, RX_BPC_REGNUM): New constants.
(enum rx_frame_type): New.
(struct rx_prologue): Add new field `frame_type'.
(rx_analyze_prologue): Add `frame_type' parameter. Cache this
parameter in the prologue struct. Add code for recording
locations of PC and PSW for fast interrupt and exception frames.
(rx_skip_prologue): Adjust call to rx_analyze_prologue.
(rx_analyze_frame_prologue): Add `frame_type' parameter.
(rx_frame_type): New function.
(rx_frame_base): Fetch frame type and pass it to rx_analyze_prologue.
(rx_frame_this_id): Rename parameter `this_prologue_cache' to
`this_cache'.
(rx_frame_prev_register): Rename parameter `this_prologue_cache' to
`this_cache'. Add cases for RX_FRAME_TYPE_EXCEPTION and
RX_FRAME_TYPE_FAST_INTERRUPT.
(normal_frame_p, exception_frame_p, rx_frame_sniffer_common)
(rx_frame_sniffer, rx_exception_sniffer): New functions.
(rx_frame_unwind): Use rx_frame_sniffer instead of
default_frame_sniffer.
(rx_frame_unwind): New unwinder.
(rx_gdbarch_init): Register new unwinder.
GDB Administrator [Fri, 3 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Kevin Buettner [Thu, 2 Jul 2015 22:02:56 +0000 (15:02 -0700)]
rx: Create and use flags types for psw, bpsw, and fpsw registers.
This change adds two flags types for the (Renesas RX) psw, bpsw, and
fpsw registers. As a result, symbolic flags are displayed for these
registers in the output of GDB's "info registers" command as well as
in output from other commands, such as "print".
gdb/ChangeLog:
* rx-tdep.c (RX_BPSW_REGNUM, RX_FPSW_REGNUM): New constants.
(struct gdbarch_tdep): Add fields rx_psw_type and rx_fpsw_type.
(rx_register_type): Add cases for RX_PSW_REGNUM, RX_BPSW_REGNUM,
and RX_FPSW_REGNUM.
(rx_gdbarch_init): Initialize PSW, BPSW, and FPSW flags types.
Jan Kratochvil [Thu, 2 Jul 2015 20:39:57 +0000 (22:39 +0200)]
Fix GCC false warning
At least on
gcc-4.4.7-11.el6.i686
./configure --enable-64-bit-bfd --enable-targets=all
GDB does not build due to:
cc1: warnings being treated as errors
s390-linux-tdep.c: In function ‘s390_handle_arg’:
s390-linux-tdep.c:2575: error: ‘val’ may be used uninitialized in this function
gdb/ChangeLog
2015-07-02 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix GCC false warning.
* s390-linux-tdep.c (s390_handle_arg): Initialize VAL.
Yao Qi [Thu, 2 Jul 2015 13:03:54 +0000 (14:03 +0100)]
Fix typo in aarch64_linux_insert_hw_breakpoint
It should be "insert_hw_breakpoint" rather than "insert_hw_watchpoint".
gdb:
2015-07-02 Yao Qi <yao.qi@linaro.org>
* aarch64-linux-nat.c (aarch64_linux_insert_hw_breakpoint): Fix
typo in the debugging message.
Nick Clifton [Thu, 2 Jul 2015 15:19:09 +0000 (16:19 +0100)]
Fix snafu with latest addition to the ARM sim.
* Makefile.in (SIM_EXTRA_CFLAGS): Revert previous delta.
(SIM_EXTRA_LIBS): Add -lm.
Markus Metzger [Mon, 3 Feb 2014 13:35:28 +0000 (14:35 +0100)]
btrace: maintenance commands
Add maintenance commands that help debugging the btrace record target.
The following new commands are added:
maint info btrace
Print information about branch tracing internals.
maint btrace packet-history
Print the raw branch tracing data.
maint btrace clear-packet-history
Discard the stored raw branch tracing data.
maint btrace clear
Discard all branch tracing data. It will be fetched and processed
anew by the next "record" command.
maint set|show btrace pt skip-pad
Set and show whether PAD packets are skipped when computing the
packet history.
gdb/
* btrace.c: Include gdbcmd.h, cli/cli-utils.h, and ctype.h.
(maint_btrace_cmdlist, maint_btrace_set_cmdlist)
(maint_btrace_show_cmdlist, maint_btrace_pt_set_cmdlist)
(maint_btrace_pt_show_cmdlist, maint_btrace_pt_skip_pad)
(btrace_maint_clear): New.
(btrace_fetch, btrace_clear): Call btrace_maint_clear.
(pt_print_packet, btrace_maint_decode_pt)
(btrace_maint_update_pt_packets, btrace_maint_update_packets)
(btrace_maint_print_packets, get_uint, get_context_size, no_chunk)
(maint_btrace_packet_history_cmd)
(maint_btrace_clear_packet_history_cmd, maint_btrace_clear_cmd)
(maint_btrace_cmd, maint_btrace_set_cmd, maint_btrace_show_cmd)
(maint_btrace_pt_set_cmd, maint_btrace_pt_show_cmd)
(maint_info_btrace_cmd, _initialize_btrace): New.
* btrace.h (btrace_pt_packet, btrace_pt_packet_s)
(btrace_maint_packet_history, btrace_maint_info): New.
(btrace_thread_info) <maint>: New.
* NEWS: Announce it.
doc/
* gdb.texinfo (Maintenance Commands): Document "maint btrace"
commands.
Markus Metzger [Mon, 3 Feb 2014 10:40:50 +0000 (11:40 +0100)]
btrace: store raw btrace data
Store the raw branch trace data that has been read from the target.
This data can be used for maintenance commands as well as for generating
a core file for the "record save" command.
gdb/
* btrace.c (btrace_fetch): Append the new trace data.
(btrace_clear): Clear the stored trace data.
* btrace.h (btrace_thread_info) <data>: New.
* common/btrace-common.h (btrace_data_clear)
(btrace_data_append): New.
* common/btrace-common.c (btrace_data_clear)
(btrace_data_append): New.
Markus Metzger [Mon, 17 Nov 2014 10:18:05 +0000 (11:18 +0100)]
btrace, linux: use data_size and data_offset
In struct perf_event_mmap_page there are new fields data_size and data_offset
that give the location of the perf_event data buffer relative to the mmap
page. Use them if they are present.
gdb/
* nat/linux-btrace.c (linux_enable_bts): Check for
PERF_ATTR_SIZE_VER5.
Check for data_offset and data_size fields. Use them.
Markus Metzger [Fri, 24 Jan 2014 12:45:47 +0000 (13:45 +0100)]
btrace: support Intel(R) Processor Trace
Adds a new command "record btrace pt" to configure the kernel to use
Intel(R) Processor Trace instead of Branch Trace Strore.
The "record btrace" command chooses the tracing format automatically.
Intel(R) Processor Trace support requires Linux 4.1 and libipt.
gdb/
* NEWS: Announce new commands "record btrace pt" and "record pt".
Announce new options "set|show record btrace pt buffer-size".
* btrace.c: Include "rsp-low.h".
Include "inttypes.h".
(btrace_add_pc): Add forward declaration.
(pt_reclassify_insn, ftrace_add_pt, btrace_pt_readmem_callback)
(pt_translate_cpu_vendor, btrace_finalize_ftrace_pt)
(btrace_compute_ftrace_pt): New.
(btrace_compute_ftrace): Support BTRACE_FORMAT_PT.
(check_xml_btrace_version): Update version check.
(parse_xml_raw, parse_xml_btrace_pt_config_cpu)
(parse_xml_btrace_pt_raw, parse_xml_btrace_pt)
(btrace_pt_config_cpu_attributes, btrace_pt_config_children)
(btrace_pt_children): New.
(btrace_children): Add support for "pt".
(parse_xml_btrace_conf_pt, btrace_conf_pt_attributes): New.
(btrace_conf_children): Add support for "pt".
* btrace.h: Include "intel-pt.h".
(btrace_pt_error): New.
* common/btrace-common.c (btrace_format_string, btrace_data_fini)
(btrace_data_empty): Support BTRACE_FORMAT_PT.
* common/btrace-common.h (btrace_format): Add BTRACE_FORMAT_PT.
(struct btrace_config_pt): New.
(struct btrace_config)<pt>: New.
(struct btrace_data_pt_config, struct btrace_data_pt): New.
(struct btrace_data)<pt>: New.
* features/btrace-conf.dtd (btrace-conf)<pt>: New.
(pt): New.
* features/btrace.dtd (btrace)<pt>: New.
(pt, pt-config, cpu): New.
* nat/linux-btrace.c (perf_event_read, perf_event_read_all)
(perf_event_pt_event_type, kernel_supports_pt)
(linux_supports_pt): New.
(linux_supports_btrace): Support BTRACE_FORMAT_PT.
(linux_enable_bts): Free tinfo on error.
(linux_enable_pt): New.
(linux_enable_btrace): Support BTRACE_FORMAT_PT.
(linux_disable_pt): New.
(linux_disable_btrace): Support BTRACE_FORMAT_PT.
(linux_fill_btrace_pt_config, linux_read_pt): New.
(linux_read_btrace): Support BTRACE_FORMAT_PT.
* nat/linux-btrace.h (struct btrace_tinfo_pt): New.
(struct btrace_target_info)<pt>: New.
* record-btrace.c (set_record_btrace_pt_cmdlist)
(show_record_btrace_pt_cmdlist): New.
(record_btrace_print_pt_conf): New.
(record_btrace_print_conf): Support BTRACE_FORMAT_PT.
(btrace_ui_out_decode_error): Support BTRACE_FORMAT_PT.
(cmd_record_btrace_pt_start): New.
(cmd_record_btrace_start): Support BTRACE_FORMAT_PT.
(cmd_set_record_btrace_pt, cmd_show_record_btrace_pt): New.
(_initialize_record_btrace): Add new commands.
* remote.c (PACKET_Qbtrace_pt, PACKET_Qbtrace_conf_pt_size): New.
(remote_protocol_features): Add "Qbtrace:pt".
Add "Qbtrace-conf:pt:size".
(remote_supports_btrace): Support BTRACE_FORMAT_PT.
(btrace_sync_conf): Support PACKET_Qbtrace_conf_pt_size.
(remote_enable_btrace): Support BTRACE_FORMAT_PT.
(_initialize_remote): Add new commands.
gdbserver/
* linux-low.c: Include "rsp-low.h"
(linux_low_encode_pt_config, linux_low_encode_raw): New.
(linux_low_read_btrace): Support BTRACE_FORMAT_PT.
(linux_low_btrace_conf): Support BTRACE_FORMAT_PT.
(handle_btrace_enable_pt): New.
(handle_btrace_general_set): Support "pt".
(handle_btrace_conf_general_set): Support "pt:size".
doc/
* gdb.texinfo (Process Record and Replay): Spell out that variables
and registers are not available during btrace replay.
Describe the new "record btrace pt" command.
Describe the new "set|show record btrace pt buffer-size" options.
(General Query Packets): Describe the new Qbtrace:pt and
Qbtrace-conf:pt:size packets.
Expand "bts" to "Branch Trace Store".
Update the branch trace DTD.
Markus Metzger [Tue, 12 Nov 2013 15:58:45 +0000 (16:58 +0100)]
configure: check for libipt
Check for libipt, an Intel(R) Processor Trace decoder library. The sources
can be found on github at:
https://github.com/01org/processor-trace
gdb/
* configure.ac: Check for libipt
* configure: Regenerate.
* config.in: Regenerate.
* Makefile.in (LIBIPT): New.
(CLIBS): Add $LIBIPT.
* NEWS: document new configure options
Jan Kratochvil [Thu, 2 Jul 2015 06:01:35 +0000 (08:01 +0200)]
debug compile: Replace confusing debug message
It was found that from
(gdb) set debug compile 1
(gdb) compile code 1
[...]
allocated 0x7f bytes at 0x7ffff7ff9000 prot 5
allocated 0x38 bytes at 0x7ffff7ff8000 prot 1
lookup undefined ELF symbol "_GLOBAL_OFFSET_TABLE_"
allocated 0x10 bytes at 0x7ffff7ff7000 for registers
(gdb) _
the message 'lookup undefined ELF symbol' looks as an error to people,
including to myself once.
Change it to:
allocated 0x7f bytes at 0x7ffff7ff9000 prot 5
allocated 0x38 bytes at 0x7ffff7ff8000 prot 1
ELF symbol "_GLOBAL_OFFSET_TABLE_" relocated to zero
allocated 0x10 bytes at 0x7ffff7ff7000 for registers
(gdb) _
gdb/ChangeLog
2015-07-02 Jan Kratochvil <jan.kratochvil@redhat.com>
* compile/compile-object-load.c (compile_object_load): Replace debug
message "lookup undefined ELF symbol" by 3 more specific messages.
Kevin Buettner [Thu, 2 Jul 2015 00:46:23 +0000 (17:46 -0700)]
Tabify my ChangeLog entry for 2015-06-29.
Kevin Buettner [Wed, 1 Jul 2015 23:18:35 +0000 (16:18 -0700)]
rl78: Create a flags type for the psw register.
For the Renesas rl78 architecture, associate a flags type with the PSW
register. This will cause symbolic flags to be printed when using
the "info registers" command.
gdb/ChangeLog:
* rl78-tdep.c (struct gdbarch_tdep): Add new field, rl78_psw_type.
(rl78_register_type): Add case for RL78_PSW_REGNUM.
(rl78_gdbarch_init): Initialize rl78_psw_type.
GDB Administrator [Thu, 2 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Sandra Loosemore [Wed, 1 Jul 2015 23:11:47 +0000 (16:11 -0700)]
Assembler tests for Nios II R2
2015-07-01 Sandra Loosemore <sandra@codesourcery.com>
Cesar Philippidis <cesar@codesourcery.com>
gas/testsuite/
* gas/nios2/add-r2.d: New.
* gas/nios2/align_fill-r2.d: New.
* gas/nios2/align_text-r2.d: New.
* gas/nios2/aligned_text-r2.d: New.
* gas/nios2/and-r2.d: New.
* gas/nios2/andc.d: New.
* gas/nios2/andc.s: New.
* gas/nios2/bmx.d: New.
* gas/nios2/bmx.s: New.
* gas/nios2/branch-r2.d: New.
* gas/nios2/break-r2.d: New.
* gas/nios2/bret-r2.d: New.
* gas/nios2/cache-r2.d: New.
* gas/nios2/cache-r2.s: New.
* gas/nios2/call-r2.d: New.
* gas/nios2/call26-r2.d: New.
* gas/nios2/call26_noat-r2.d: New.
* gas/nios2/call_noat-r2.d: New.
* gas/nios2/cdx_add.d: New.
* gas/nios2/cdx_add.s: New.
* gas/nios2/cdx_and.d: New.
* gas/nios2/cdx_and.s: New.
* gas/nios2/cdx_break.d: New.
* gas/nios2/cdx_break.s: New.
* gas/nios2/cdx_callr.d: New.
* gas/nios2/cdx_callr.s: New.
* gas/nios2/cdx_jmpr.d: New.
* gas/nios2/cdx_jmpr.s: New.
* gas/nios2/cdx_ldbu.d: New.
* gas/nios2/cdx_ldbu.s: New.
* gas/nios2/cdx_ldhu.d: New.
* gas/nios2/cdx_ldhu.s: New.
* gas/nios2/cdx_ldw.d: New.
* gas/nios2/cdx_ldw.s: New.
* gas/nios2/cdx_ldwsp.d: New.
* gas/nios2/cdx_ldwsp.s: New.
* gas/nios2/cdx_mov.d: New.
* gas/nios2/cdx_mov.s: New.
* gas/nios2/cdx_neg.d: New.
* gas/nios2/cdx_neg.s: New.
* gas/nios2/cdx_not.d: New.
* gas/nios2/cdx_not.s: New.
* gas/nios2/cdx_or.d: New.
* gas/nios2/cdx_or.s: New.
* gas/nios2/cdx_pop.d: New.
* gas/nios2/cdx_pop.s: New.
* gas/nios2/cdx_push.d: New.
* gas/nios2/cdx_push.s: New.
* gas/nios2/cdx_relax.d: New.
* gas/nios2/cdx_relax.s: New.
* gas/nios2/cdx_ret.d: New.
* gas/nios2/cdx_ret.s: New.
* gas/nios2/cdx_sll.d: New.
* gas/nios2/cdx_sll.s: New.
* gas/nios2/cdx_spaddi.d: New.
* gas/nios2/cdx_spaddi.s: New.
* gas/nios2/cdx_spdeci.d: New.
* gas/nios2/cdx_spdeci.s: New.
* gas/nios2/cdx_srl.d: New.
* gas/nios2/cdx_srl.s: New.
* gas/nios2/cdx_stb.d: New.
* gas/nios2/cdx_stb.s: New.
* gas/nios2/cdx_sth.d: New.
* gas/nios2/cdx_sth.s: New.
* gas/nios2/cdx_stw.d: New.
* gas/nios2/cdx_stw.s: New.
* gas/nios2/cdx_stwsp.d: New.
* gas/nios2/cdx_stwsp.s: New.
* gas/nios2/cdx_sub.d: New.
* gas/nios2/cdx_sub.s: New.
* gas/nios2/cdx_trap.d: New.
* gas/nios2/cdx_trap.s: New.
* gas/nios2/cdx_xor.d: New.
* gas/nios2/cdx_xor.s: New.
* gas/nios2/cmp-r2.d: New.
* gas/nios2/comments-r2.d: New.
* gas/nios2/complex-r2.d: New.
* gas/nios2/ctl-r2.d: New.
* gas/nios2/custom-r2.d: New.
* gas/nios2/eni.d: New.
* gas/nios2/eni.s: New.
* gas/nios2/etbt-r2.d: New.
* gas/nios2/flushda-r2.d: New.
* gas/nios2/jmp-r2.d: New.
* gas/nios2/ldb-r2.d: New.
* gas/nios2/ldb-r2.s: New.
* gas/nios2/ldh-r2.d: New.
* gas/nios2/ldh-r2.s: New.
* gas/nios2/ldw-r2.d: New.
* gas/nios2/ldw-r2.s: New.
* gas/nios2/ldwm.d: New.
* gas/nios2/ldwm.s: New.
* gas/nios2/lineseparator-r2.d: New.
* gas/nios2/movia-r2.d: New.
* gas/nios2/mpx.d: New.
* gas/nios2/mpx.s: New.
* gas/nios2/mul-r2.d: New.
* gas/nios2/nop-r2.d: New.
* gas/nios2/nop-r2.s: New.
* gas/nios2/nor-r2.d: New.
* gas/nios2/or-r2.d: New.
* gas/nios2/rdprs-r2.d: New.
* gas/nios2/rdprs-r2.s: New.
* gas/nios2/registers-r2.d: New.
* gas/nios2/ret-r2.d: New.
* gas/nios2/rotate-r2.d: New.
* gas/nios2/stb-r2.d: New.
* gas/nios2/stb-r2.s: New.
* gas/nios2/sth-r2.d: New.
* gas/nios2/sth-r2.s: New.
* gas/nios2/stw-r2.d: New.
* gas/nios2/stw-r2.s: New.
* gas/nios2/stwm.d: New.
* gas/nios2/stwm.s: New.
* gas/nios2/sub-r2.d: New.
* gas/nios2/sync-r2.d: New.
* gas/nios2/trap-r2.d: New.
* gas/nios2/tret-r2.d: New.
* gas/nios2/wrpie.d: New.
* gas/nios2/wrpie.s: New.
* gas/nios2/wrprs-r2.d: New.
* gas/nios2/xor-r2.d: New.
Sandra Loosemore [Wed, 1 Jul 2015 23:08:03 +0000 (16:08 -0700)]
Opcodes and assembler support for Nios II R2
2015-07-01 Sandra Loosemore <sandra@codesourcery.com>
Cesar Philippidis <cesar@codesourcery.com>
gas/
* config/tc-nios2.c (nios2_min_align): New.
(nop): Replace with....
(nop_r1, nop_r2, nop_r2_cdx, nop32, nop16): New.
(nios2_align): Handle alignment on 2-byte boundaries when CDX
instructions may be present.
(s_nios2_align): Adjust reference to nop.
(CDXBRANCH, IS_CDXBRANCH): New.
(CDX_UBRANCH_SUBTYPE, CDX_CBRANCH_SUBTYPE): New.
(nios2_relax_subtype_size): Handle 2-byte CDX branches.
(nios2_relax_frag): Likewise.
(md_convert_frag): Handle R2 encodings.
(nios2_check_overflow): Check that low-order bits are zero
before applying rightshift from howto.
(nios2_check_overflow): Correct negative overflow calculation.
(nios2_diagnose_overflow): Handle signed_immed12_overflow. Issue
generic overflow messages for miscellaneous instruction formats.
(md_apply_fix): Recognize new R2 relocations. For pc_relative
relocations, store fixup in *valP.
(nios2_reglist_mask, nios2_reglist_dir): New.
(nios2_parse_reglist): New.
(nios2_parse_base_register): New.
(nios2_assemble_expression): Handle constant expressions designated
by BFD_RELOC_NONE.
(nios2_assemble_reg3): New.
(nios2_assemble_arg_c): Handle R2 instruction formats.
(nios2_assemble_arg_d): Likewise.
(nios2_assemble_arg_s): Likewise.
(nios2_assemble_arg_t): Likewise.
(nios2_assemble_arg_D): New.
(nios2_assemble_arg_S): New.
(nios2_assemble_arg_T): New.
(nios2_assemble_arg_i): Handle R2 instruction formats.
(nios2_assemble_arg_I): New.
(nios2_assemble_arg_u): Handle R2 instruction formats.
(nios2_assemble_arg_U): New.
(nios2_assemble_arg_V): New.
(nios2_assemble_arg_W): New.
(nios2_assemble_arg_X): New.
(nios2_assemble_arg_Y): New.
(nios2_assemble_arg_o): Handle R2 instruction formats.
(nios2_assemble_arg_O): New.
(nios2_assemble_arg_P): New.
(nios2_assemble_arg_j): Handle R2 instruction formats.
(nios2_assemble_arg_k): New.
(nios2_assemble_arg_l): Handle R2 instruction formats.
(nios2_assemble_arg_m): Likewise.
(nios2_assemble_arg_M): New.
(nios2_assemble_arg_N): New.
(nios2_assemble_arg_e): New.
(nios2_assemble_arg_f): New.
(nios2_assemble_arg_g): New.
(nios2_assemble_arg_h): New.
(nios2_assemble_arg_R): New.
(nios2_assemble_arg_B): New.
(nios2_assemble_args): Handle new argument letters.
(nios2_consume_arg): Likewise.
(nios2_translate_pseudo_insn): Avoid dereferencing null pointer
in error message.
(nios2_ps_insn_info_structs): Add nop.n.
(output_ubranch): Handle CDX branches.
(output_cbranch): Likewise.
(output_call): Handle R2 encodings.
(output_movia): Likewise.
(md_begin): Initialize nios2_min_align.
(md_assemble): Align to nios2_min_align. Adjust nios2_min_align
if a 16-bit instruction is seen.
(nios2_cons_align): Use appropriate nop pattern.
include/opcode/
* nios2.h (enum iw_format_type): Add R2 formats.
(enum overflow_type): Add signed_immed12_overflow and
enumeration_overflow for R2.
(struct nios2_opcode): Document new argument letters for R2.
(REG_3BIT, REG_LDWM, REG_POP): Define.
(includes): Include nios2r2.h.
(nios2_r2_opcodes, nios2_num_r2_opcodes): Declare.
(nios2_r2_asi_n_mappings, nios2_num_r2_asi_n_mappings): Declare.
(nios2_r2_shi_n_mappings, nios2_num_r2_shi_n_mappings): Declare.
(nios2_r2_andi_n_mappings, nios2_num_r2_andi_n_mappings): Declare.
(nios2_r2_reg3_mappings, nios2_num_r2_reg3_mappings): Declare.
(nios2_r2_reg_range_mappings, nios2_num_r2_reg_range_mappings):
Declare.
* nios2r2.h: New file.
opcodes/
* nios2-dis.c (nios2_extract_opcode): New.
(nios2_disassembler_state): New.
(nios2_find_opcode_hash): Use mach parameter to select correct
disassembler state.
(nios2_print_insn_arg): Extend to support new R2 argument letters
and formats.
(print_insn_nios2): Check for 16-bit instruction at end of memory.
* nios2-opc.c (nios2_builtin_regs): Add R2 register attributes.
(NIOS2_NUM_OPCODES): Rename to...
(NIOS2_NUM_R1_OPCODES): This.
(nios2_r2_opcodes): New.
(NIOS2_NUM_R2_OPCODES): New.
(nios2_num_r2_opcodes): New.
(nios2_r2_asi_n_mappings, nios2_num_r2_asi_n_mappings): New.
(nios2_r2_shi_n_mappings, nios2_num_r2_shi_n_mappings): New.
(nios2_r2_andi_n_mappings, nios2_num_r2_andi_n_mappings): New.
(nios2_r2_reg3_mappings, nios2_num_r2_reg3_mappings): New.
(nios2_r2_reg_range_mappings, nios2_num_r2_reg_range_mappings): New.
Sandra Loosemore [Wed, 1 Jul 2015 23:02:09 +0000 (16:02 -0700)]
Relocations for Nios II R2
2015-07-01 Sandra Loosemore <sandra@codesourcery.com>
Cesar Philippidis <cesar@codesourcery.com>
bfd/
* bfd-in2.h: Regenerated.
* elf32-nios2.c (elf_nios2_howto_table_rel): Rename to...
(elf_nios2_r1_howto_table_rel): This.
(elf_nios2_r2_howto_table_rel): New.
(BFD_IS_R2): New.
(lookup_howto): Add ABFD parameter. Adjust to look up in either
the R1 or R2 relocation table, as determined by ABFD.
(nios2_reloc_map): Add R2 relocations.
(nios2_elf32_bfd_reloc_type_lookup): Do lookup using lookup_howto.
Pass it the ABFD parameter.
(nios2_elf32_bfd_reloc_name_lookup): Use ABFD to decide whether to
return an R1 or R2 relocation.
(nios2_elf32_info_to_howto): Do lookup using lookup_howto.
Pass it the ABFD parameter.
(nios2_elf32_do_call26_relocate): Check for alignment on a 4-byte
boundary.
(nios2_elf32_relocate_section): Adjust call to lookup_howto.
* libbfd.h: Regenerated.
* reloc.c (BFD_RELOC_NIOS2_R2_S12): New.
(BFD_RELOC_NIOS2_R2_I10_1_PCREL): New.
(BFD_RELOC_NIOS2_R2_T1I7_1_PCREL): New.
(BFD_RELOC_NIOS2_R2_T1I7_2): New.
(BFD_RELOC_NIOS2_R2_T2I4): New.
(BFD_RELOC_NIOS2_R2_T2I4_1): New.
(BFD_RELOC_NIOS2_R2_T2I4_2): New.
(BFD_RELOC_NIOS2_R2_X1I7_2): New.
(BFD_RELOC_NIOS2_R2_X2L5): New.
(BFD_RELOC_NIOS2_R2_F1I5_2): New.
(BFD_RELOC_NIOS2_R2_L5I4X1): New.
(BFD_RELOC_NIOS2_R2_T1X1I6): New.
(BFD_RELOC_NIOS2_R2_T1X1I6_2): New.
include/elf/
* nios2.h (R_NIOS2_R2_S12): New.
(R_NIOS2_R2_I10_1_PCREL): New.
(R_NIOS2_R2_T1I7_1_PCREL): New.
(R_NIOS2_R2_T1I7_2): New.
(R_NIOS2_R2_T2I4): New.
(R_NIOS2_R2_T2I4_1): New.
(R_NIOS2_R2_T2I4_2): New.
(R_NIOS2_R2_X1I7_2): New.
(R_NIOS2_R2_X2L5): New.
(R_NIOS2_R2_F1I5_2): New.
(R_NIOS2_R2_L5I4X1): New.
(R_NIOS2_R2_T1X1I6): New.
(R_NIOS2_R2_T1X1I6_2): New.
(R_NIOS2_ILLEGAL): Renumber.
Sandra Loosemore [Wed, 1 Jul 2015 22:55:28 +0000 (15:55 -0700)]
Add Nios II arch flags and compatibility tests
2015-07-01 Sandra Loosemore <sandra@codesourcery.com>
Cesar Philippidis <cesar@codesourcery.com>
bfd/
* archures.c (bfd_mach_nios2r1, bfd_mach_nios2r2): New.
* bfd-in2.h: Regenerated.
* cpu-nios2.c (nios2_compatible): New.
(N): Use nios2_compatible instead of bfd_default_compatible.
(NIOS2R1_NEXT, NIOS2R2_NEXT): Define.
(arch_info_struct): New.
(bfd_nios2_arch): Chain to NIOS2R1_NEXT.
* elf32-nios2.c (is_nios2_elf): New.
(nios2_elf32_merge_private_bfd_data): New.
(nios2_elf32_object_p): New.
(bfd_elf32_bfd_merge_private_bfd_data): Define.
(elf_backend_object_p): Define.
gas/
* config/tc-nios2.c: Adjust includes.
(OPTION_MARCH): Define.
(md_longopts): Add -march option.
(nios2_architecture): New.
(nios2_use_arch): New.
(md_parse_option): Handle OPTION_MARCH.
(md_show_usage): Document -march.
(md_begin): Set arch in BFD.
(nios2_elf_final_processing): New.
* config/tc-nios2.h (elf_tc_final_processing): Define.
(nios2_elf_final_processing): New.
* doc/c-nios2.texi (-march): Add documentation.
include/elf/
* nios2.h (EF_NIOS2_ARCH_R1, EF_NIOS2_ARCH_R2): Define.
ld/testsuite/
* ld-nios2/mixed1a.d: New.
* ld-nios2/mixed1a.s: New.
* ld-nios2/mixed1b.d: New.
* ld-nios2/mixed1b.s: New.
* ld-nios2/nios2.exp: Build the new compatibility tests.
H.J. Lu [Wed, 1 Jul 2015 16:32:47 +0000 (09:32 -0700)]
Refactor elf_x86_64_convert_mov_to_lea
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Refactor.
Patrick Palka [Wed, 1 Jul 2015 12:02:09 +0000 (08:02 -0400)]
TUI: Make sure to update registers if frame information has changed
When I replaced TUI's frame_changed hook to fix PR tui/13378 I assumed
that there's no reason to refresh register information following a call
to "up", "down" or "frame". This assumption was made to fix the problem
of refreshing frame information twice following a sync-execution normal
stop (once in tui_normal_stop and then in tui_before_prompt) -- the
second refresh removing any highlights made by the first.
I was wrong about that -- GDB's snapshot of register information is
per-frame, and when the frame changes, registers do too (most
prominently the %rip and %rsp registers). So e.g. GDB 7.8 would
highlight such register changes after invoking "up", "down" or "frame",
and current GDB does not.
To fix this regression, this patch adds another (sufficient) condition
for refreshing register information: in
tui_refresh_frame_and_register_information, always refresh register
information if frame information has changed. This makes register
information get refreshed following a call to "up", "down" or "frame"
while still avoiding the "double refresh" issue following a normal stop.
This condition may seem to obsolete the existing registers_too_p
parameter, but it does not: following a normal stop, it is possible that
registers may have changed while frame information had not. We could be
on the exact same PC with different register values. The new condition
would not catch such a case, but the registers_too_p condition will. So
both conditions seem necessary (and either one is sufficient).
gdb/ChangeLog:
* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
Update commentary. Always refresh the registers when frame
information has changed.
* tui/tui-stack.c (tui_show_frame_info): Update commentary.
Change return type to int. Return 1 if frame information has
changed, 1 otherwise.
(tui_before_prompt): Update commentary.
* tui/tui-stack.h (tui_show_frame_info): Change return type to
int.
GDB Administrator [Wed, 1 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Martin Galvan [Tue, 30 Jun 2015 21:20:47 +0000 (18:20 -0300)]
Remove the unneeded escaping of '[' and ']' characters in test_class_help
As these characters don't need to be escaped for strings
wrapped inside {} braces, we can remove the unneeded backslashes.
gdb/testsuite/ChangeLog:
* lib/gdb.exp (test_class_help): Remove the unneeded escaping of
'[' and ']' characters.
Iain Buclaw [Tue, 30 Jun 2015 18:09:16 +0000 (20:09 +0200)]
Sync dlang demangling tests from upstream libiberty testsuite
gdb/testsuite/ChangeLog:
* gdb.dlang/demangle.exp: Sync tests from libiberty testsuite.
Patrick Palka [Tue, 30 Jun 2015 17:56:49 +0000 (13:56 -0400)]
Replace TUI's select_frame hook (PR tui/13378)
The select_frame hook is used by TUI to update TUI's frame and register
information following changes to the selected frame. The problem with
this hook is that it gets called after every single frame change, even
if the frame change is only temporary or internal. This is the primary
cause of flickering and slowdown when running the inferior under TUI
with conditional breakpoints set. Internal GDB events are the source of
many calls to select_frame and these internal events are triggered
frequently, especially when a few conditional breakpoints are set.
This patch removes the select_frame hook altogether and instead makes
the frame and register information get updated in two key places (using
observers): after an inferior stops, and right before displaying a
prompt. The latter hook covers the case when frame information must be
updated following a call to "up", "down" or "frame", and the former
covers the case when frame and register information must be updated
after a call to "continue", "step", etc. or after the inferior stops in
async execution mode. Together these hooks should cover all the cases
when frame information ought to be refreshed (and when the relevant
windows ought to be subsequently updated).
The print_frame_info_listing hook is also effectively obsolete now, but
it still must be set while the TUI is active because its caller
print_frame_info will otherwise assume that the CLI is active, and will
print the frame informaion accordingly. So this patch also sets the
print_frame_info_listing hook to a dummy callback, in lieu of outright
removing it yet.
Effectively, with this patch, frame/PC changes that do not immediately
precede an inferior-stop event or a prompt display event no longer cause
TUI's frame and register information to be updated.
And as a result of this change and of the previous change to
tui_show_frame_info, the TUI is much more disciplined about updating the
screen, and so the flicker as described in the PR is totally gone.
gdb/ChangeLog:
PR tui/13378
* frame.c (select_frame): Remove reference to
deprecated_selected_frame_level_changed_hook.
* frame.h (deprecated_selected_frame_level_changed_hook): Remove
declaration.
* stack.c (deprecated_selected_frame_level_changed_hook):
Likewise.
* tui/tui-hooks.c (tui_selected_frame_level_changed_hook):
Rename to ...
(tui_refresh_frame_and_register_information): ... this. Bail
out if there is no stack. Don't update register information
unless registers_too_p is true.
(tui_print_frame_info_listing_hook): Rename to ...
(tui_dummy_print_frame_info_listing_hook): ... this.
(tui_before_prompt): New function.
(tui_normal_stop): New function.
(tui_before_prompt_observer): New observer.
(tui_normal_stop_observer): New observer.
(tui_install_hooks): Set
deprecated_print_frame_info_listing_hook to
tui_dummy_print_frame_info_listing_hook. Register
tui_before_prompt_observer to call tui_before_prompt and
tui_normal_stop_observer to call tui_normal_stop. Remove
reference to deprecated_selected_frame_level_changed_hook.
(tui_remove_hooks): Detach and unset tui_before_prompt_observer
and tui_normal_stop_observer. Remove reference to
deprecated_selected_frame_level_changed_hook.
Patrick Palka [Sat, 27 Jun 2015 00:38:30 +0000 (20:38 -0400)]
Be lazy about refreshing the windows in tui_show_frame_info (PR tui/13378)
tui_show_frame_info is responsible for updating the visible windows
following a change in frame information (that being the currently
selected frame, PC, line number, etc). Currently it always redraws and
refreshes each window even if frame information has not changed. This
behavior is inefficient and helps contribute to the occassional
flickering of the TUI as described in the mentioned PR.
This patch makes tui_show_frame_info refresh the windows only if frame
information has changed. Determining whether frame information has
changed is done indirectly by determining whether the locator has
changed. This approach is convenient and yet sensible because the
locator contains all the relevant info we need to check anyway: the
current PC, the line number, the name of the executable and the name of
the current function. Probably only the PC is really necessary to
check, but it doesn't hurt to check every field.
Effectively, with this patch, consecutive calls to select_frame with the
same frame/PC no longer cause TUI's frame information to be updated
multiple times.
gdb/ChangeLog:
PR tui/13378
* tui/tui-stack.c (tui_set_locator_info): Change prototype to
return an int instead of void. Return whether the locator
window has changed.
(tui_show_frame_info): If the locator info has not changed, then
bail out early to avoid refreshing the windows.