binutils-gdb.git
9 years agoAutomatic date update in version.in
GDB Administrator [Thu, 23 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agolibiberty/setenv.c: Do not declare environ if defined as a macro.
Joel Brobecker [Wed, 22 Apr 2015 19:35:54 +0000 (12:35 -0700)]
libiberty/setenv.c: Do not declare environ if defined as a macro.

Otherwise, it causes a build warning on some platforms such as MinGW.

libiberty/ChangeLog (Eli Zaretskii  <eliz@gnu.org>):

        * setenv.c <environ>: Declare only if not a macro.

9 years agowindows-nat: Don't change current_event.dwThreadId in handle_output_debug_string()
Jon Turney [Wed, 15 Apr 2015 20:41:25 +0000 (21:41 +0100)]
windows-nat: Don't change current_event.dwThreadId in handle_output_debug_string()

Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin:

    $ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
    [...]
    (gdb) catch signal
    Catchpoint 1 (standard signals)
    (gdb) r
    [...]
    Catchpoint 1 (signal SIGHUP), main () at
    ../../../gdb/testsuite/gdb.base/catch-signal.c:40
    40        raise (SIGHUP);               /* second HUP */
    (gdb) c
    Continuing.
    main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40
    40        raise (SIGHUP);               /* second HUP */
    Failed to resume program execution (ContinueDebugEvent failed, error 87)
    (gdb)

This error occurs because when handle_output_debug_string processes a Cygwin
signal message, it re-writes current_event.dwThreadId to reflect the thread that
the signal will be delivered to, which can be different to the thread reporting
the signal.

Altering current_event.dwThreadId() will cause ContinueDebugEvent() to be
applied to the wrong thread and fail.

So, rather than re-writing the thread id in current_event, use the thread
id by returning it.

With this patch applied this test now yields the expected result:

    $ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
    [...]
    (gdb) catch signal
    Catchpoint 1 (standard signals)
    (gdb) r
    [...]
    Catchpoint 1 (signal SIGHUP), main () at
    ../../../gdb/testsuite/gdb.base/catch-signal.c:40
    40        raise (SIGHUP);               /* second HUP */
    (gdb) c
    Continuing.
    Catchpoint 1 (signal SIGHUP), main () at
    ../../../gdb/testsuite/gdb.base/catch-signal.c:42
    42        raise (SIGHUP);               /* third HUP */
    (gdb)

gdb/ChangeLog:

2015-04-22  Jon Turney  <jon.turney@dronecode.org.uk>

* windows-nat.c (handle_output_debug_string): Don't change
current_event.dwThreadId.
(get_windows_debug_event): Use thread_id, rather than relying on
current_event.dwThreadId being changed.

9 years agowindows-nat: Report an error if ContinueDebugEvent() fails
Jon Turney [Wed, 15 Apr 2015 20:37:11 +0000 (21:37 +0100)]
windows-nat: Report an error if ContinueDebugEvent() fails

Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin:

    $ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
    [...]
    (gdb) catch signal
    Catchpoint 1 (standard signals)
    (gdb) r
    [...]
    Catchpoint 1 (signal SIGHUP), main () at
    ../../../gdb/testsuite/gdb.base/catch-signal.c:40
    40        raise (SIGHUP);               /* second HUP */
    (gdb) c
    Continuing.
    [hangs]

This is due to a defect in the way Cygwin signals are handled: When
handle_output_debug_string processes a Cygwin signal message, it re-writes
current_event.dwThreadId to reflect the thread that the signal will be delivered
to.

Subsequently, the call to ContinueDebugEvent will fail, because we're trying to
resume the wrong thread.  GDB is then stuck waiting forever for another event
that will never come.

This patch doesn't fix the problem, it just adds appropriate error handling.

Using error() seems appropriate here, if ContinueDebugEvent() fails, the
inferior is in an unknown state and we will probably not be debugging it
anymore.

With this patch applied, resuming the execution of the program now yields:

    $ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
    [...]
    (gdb) catch signal
    Catchpoint 1 (standard signals)
    (gdb) r
    [...]
    Catchpoint 1 (signal SIGHUP), main () at
    ../../../gdb/testsuite/gdb.base/catch-signal.c:40
    40        raise (SIGHUP);               /* second HUP */
    (gdb) c
    Continuing.
    main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40
    40        raise (SIGHUP);               /* second HUP */
    Failed to resume program execution (ContinueDebugEvent failed, error 87)
    (gdb)

gdb/ChangeLog:

2015-04-22  Jon Turney  <jon.turney@dronecode.org.uk>

* windows-nat.c (windows_continue): Report an error if
ContinueDebugEvent() fails.

9 years agowindows-nat: Fix misspelling in debug output
Jon Turney [Tue, 14 Apr 2015 20:05:21 +0000 (21:05 +0100)]
windows-nat: Fix misspelling in debug output

gdb/ChangeLog:

2015-04-16  Jon Turney  <jon.turney@dronecode.org.uk>

* windows-nat.c (windows_resume): Fix misspelling in debug output.

9 years agowindows-nat: Cleanups in get_windows_debug_event
Jon Turney [Tue, 14 Apr 2015 18:28:44 +0000 (19:28 +0100)]
windows-nat: Cleanups in get_windows_debug_event

gdb/ChangeLog:

2015-04-16  Jon Turney  <jon.turney@dronecode.org.uk>

* windows-nat.c (get_windows_debug_event): Replace retval with
thread_id throughout.  Update stale comment.

9 years agowindows-nat: Don't use ternary conditional operator in get_windows_debug_event
Jon Turney [Tue, 14 Apr 2015 18:42:07 +0000 (19:42 +0100)]
windows-nat: Don't use ternary conditional operator in get_windows_debug_event

gdb/ChangeLog:

2015-04-16  Jon Turney  <jon.turney@dronecode.org.uk>

* windows-nat.c (get_windows_debug_event): Don't use ternary
conditional operator.

9 years agoRewrite relro adjusting code
Alan Modra [Wed, 22 Apr 2015 13:16:19 +0000 (22:46 +0930)]
Rewrite relro adjusting code

The linker tries to put the end of the last section in the relro
segment exactly on a page boundary, because the relro segment itself
must end on a page boundary.  If for any reason this can't be done,
padding is inserted.  Since the end of the relro segment is typically
between .got and .got.plt, padding effectively increases the size of
the GOT.  This isn't nice for targets and code models with limited GOT
addressing.

The problem with the current code is that it doesn't cope very well
with aligned sections in the relro segment.  When making .got aligned
to a 256 byte boundary for PowerPC64, I found that often the initial
alignment attempt failed and the fallback attempt to be less than
adequate.  This is a particular problem for PowerPC64 since the
distance between .got and .plt affects the size of plt call stubs,
leading to "stubs don't match calculated size" errors.

So this rewrite takes a direct approach to calculating a new relro
base.  Starting from the last section in the segment, we calculate
where it must start to position its end on the boundary, or as near as
possible considering alignment requirements.  The new start then
becomes the goal for the previous section to end, and so on for all
sections.  This of course ignores the possibility that user scripts
will place . = ALIGN(xxx); in the relro segment, or provide section
address expressions.  In those cases we might fail, but the old code
probably did too, and a fallback is provided.

ld/
* ldexp.h (struct ldexp_control): Delete dataseg.min_base.  Add
data_seg.relro_offset.
* ldexp.c (fold_binary <DATA_SEGMENT_ALIGN>): Don't set min_base.
(fold_binary <DATA_SEGMENT_RELRO_END>): Do set relro_offset.
* ldlang.c (lang_size_sections): Rewrite code adjusting relro
segment base to line up last section on page boundary.
ld/testsuite/
* ld-x86-64/pr18176.d: Update.

9 years agoi386: Allow copy relocs for building PIE
H.J. Lu [Wed, 22 Apr 2015 12:24:54 +0000 (05:24 -0700)]
i386: Allow copy relocs for building PIE

This patch allows copy relocs for R_386_GOTOFF relocations in PIE.  For

extern int glob_a;
int foo ()
{
  return glob_a;
}

compiler now can optimize it from

call __x86.get_pc_thunk.ax
addl $_GLOBAL_OFFSET_TABLE_, %eax
movl glob_a@GOT(%eax), %eax
movl (%eax), %eax
ret

to

call __x86.get_pc_thunk.ax
addl $_GLOBAL_OFFSET_TABLE_, %eax
movl glob_a@GOTOFF(%eax), %eax
ret

bfd/

PR ld/18289
* elf32-i386.c (elf_i386_link_hash_entry): Add gotoff_ref.
(elf_i386_link_hash_newfunc): Initialize gotoff_ref to 0.
(elf_i386_create_dynamic_sections): Always allow copy relocs for
building executables.
(elf_i386_copy_indirect_symbol): Also copy gotoff_ref.
(elf_i386_check_relocs): Set gotoff_ref for R_386_GOTOFF.
(elf_i386_adjust_dynamic_symbol): Also allocate copy relocs for
PIE and R_386_GOTOFF.
(elf_i386_relocate_section): Allow R_386_GOTOFF in executable.

ld/testsuite/

PR ld/18289
* ld-i386/copyreloc-lib.c: New file.
* ld-i386/copyreloc-main.S: Likewise.
* ld-i386/copyreloc-main.out: Likewise.
* ld-i386/copyreloc-main1.rd: Likewise.
* ld-i386/copyreloc-main2.rd: Likewise.
* ld-i386/dummy.c: Likewise.
* ld-i386/pr17689.out: Likewise.
* ld-i386/pr17689.rd: Likewise.
* ld-i386/pr17689a.c: Likewise.
* ld-i386/pr17689b.S: Likewise.
* ld-i386/pr17827.rd: Likewise.
* ld-i386/pr17827ver.rd: Likewise.
* ld-i386/i386.exp: Run copyreloc tests.

9 years agoAutomatic date update in version.in
GDB Administrator [Wed, 22 Apr 2015 00:00:13 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoFix pascal behavior for class fields with testcase
Pierre Muller [Tue, 21 Apr 2015 20:10:08 +0000 (22:10 +0200)]
Fix pascal behavior for class fields with testcase

  Problem reported as PR pascal/17815

Part 1/3: Remember the case pattern that allowed finding a field of this.
File gdb/p-exp.y modified

  This is the fix in the pascal parser (p-exp.y),
to avoid the error that GDB does find normal variables
case insensitively, but not fields of this,
inside a class or object method.

Part 2/3: Add "class" option for pascal compiler
File gdb/testsuite/lib/pascal.exp

This part of the patch series is unchanged.
It adds class option to pascal compiler
which adds the required command line option to
accept pascal class types.

Part 3/3:
New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp
New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas

  Here is an updated version of this test, using Pedro's suggestions.
Test to check that PR 17815 is fixed.

9 years agoIntroduce new shared function fileio_to_host_openflags
Gary Benson [Tue, 21 Apr 2015 11:07:54 +0000 (12:07 +0100)]
Introduce new shared function fileio_to_host_openflags

This commit introduces a new shared function to replace identical
functions in GDB and gdbserver.

9 years agosim: mcore: clean up printf warnings
Mike Frysinger [Tue, 21 Apr 2015 07:05:57 +0000 (03:05 -0400)]
sim: mcore: clean up printf warnings

These printf statements are showing "word" objects which are typedefed
from long, so make sure to use l with %x when printing them to avoid
warnings from gcc.

9 years agosim: mcore: convert to common memory/verbose functions
Mike Frysinger [Tue, 21 Apr 2015 06:55:29 +0000 (02:55 -0400)]
sim: mcore: convert to common memory/verbose functions

Re-use the existing memory core that handles reads/writes.

The verbose command is converted to the common --verbose flag
since only a few call sites use it now.

9 years agosim: mcore: drop watchpoint/dumpmem/clearstats support
Mike Frysinger [Tue, 21 Apr 2015 06:50:38 +0000 (02:50 -0400)]
sim: mcore: drop watchpoint/dumpmem/clearstats support

In preparation for converting to the common memory framework, the custom
commands get in our way.  But when we realize that gdb support has been
dropped for mcore, it makes things a bit easier: the main runner does not
let you run arbitrary commands once simulation starts.

So lets disable watchpoint support until it can be converted to the common
watchpoint logic.  There's already an ifdef to let us do that.

We straight up drop support for the dumpmem command (no other sim supports
this, and if it's a feature people want, we can add a common func) and the
clearstats command (not a big deal -- just restart your simulation).

We leave in place the verbose check points as a follow up commit will cut
that over to common logic.

9 years agosim: mcore: switch to common syscall handling
Mike Frysinger [Tue, 21 Apr 2015 06:30:21 +0000 (02:30 -0400)]
sim: mcore: switch to common syscall handling

Now that libgloss has a header tracking the syscalls for this arch, we
can update the database to include it for the symbolic constants/maps.
Then we can switch the mcore syscall callbacks over to the common ones.

9 years agosim: gennltvals.sh: handle split out newlib source tree
Mike Frysinger [Tue, 21 Apr 2015 06:24:34 +0000 (02:24 -0400)]
sim: gennltvals.sh: handle split out newlib source tree

Since newlib no longer shares the same repo as binutils/gdb, we have to go
searching further afield to locate the sources.  We still look at the top
level for newlib, but if that is not found, we also try up one dir outside
of this source tree.  It sucks, but better than the status quo (no workie).

9 years agoExtend rl78 prologue analyzer to recognize more complicated prologues
Kevin Buettner [Tue, 21 Apr 2015 06:37:44 +0000 (23:37 -0700)]
Extend rl78 prologue analyzer to recognize more complicated prologues

This patch extends the rl78 prologue analyzer so that it can recognize
this kind of prologue:

   0x119f <main>:       movw    ax, sp
   0x11a1 <main+2>:     subw    ax, #0x1fa6
   0x11a4 <main+5>:     movw    sp, ax

The test case for gdb.base/miscexprs.exp is now compiled to generate
that sequence instead of a much longer and more inefficient sequence.

gdb/ChangeLog:

* rl78-tdep.c (RL78_SP_ADDR): Define.
(opc_reg_to_gdb_regnum): New static function.
(rl78_analyze_prologue): Recognize instructions forming slightly
more interesting prologues.

9 years agoEnsure that dynamically loaded libraries won't use separate copies of GNU_UNIQUE...
Ian Coolidge [Tue, 21 Apr 2015 01:04:07 +0000 (18:04 -0700)]
Ensure that dynamically loaded libraries won't use separate copies of GNU_UNIQUE symbols.

gold/
* symtab.cc (Symbol::should_add_dynsym_entry): Return true for
GNU_UNIQUE.

9 years agoAutomatic date update in version.in
GDB Administrator [Tue, 21 Apr 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoAlways set up sh_name in assign_section_numbers
H.J. Lu [Mon, 20 Apr 2015 19:37:14 +0000 (12:37 -0700)]
Always set up sh_name in assign_section_numbers

commit 9ad5cbcfb23cb74d34bd04f88f4e47c0f5de5155 added the initial support
for more than 64k ELF sections with holes for reserved section indices in
section header table and set entries of reserved section indices in
section header table to index 0:

   for (secn = 1; secn < section_number; ++secn)
-    i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd),
-                                                    i_shdrp[secn]->sh_name);
-
+    if (i_shdrp[secn] == NULL)
+      i_shdrp[secn] = i_shdrp[0];
+    else
+      i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd),
+ i_shdrp[secn]->sh_name);

commit 4fbb74a6055f7d48f09c44064073d3b1e99c6642 removed holes in section
header table.  Check for i_shdrp[secn] == NULL is no longer needed now.
This patch removes it.

* elf.c (assign_section_numbers): Always set up sh_name.

9 years agoDon't hardcode offset of .shstrtab section
H.J. Lu [Mon, 20 Apr 2015 16:55:34 +0000 (09:55 -0700)]
Don't hardcode offset of .shstrtab section

There is no requirement on placement of section name section, .shstrtab.
This patch removes hardcoded offsets of .shstrtab sections.

binutils/testsuite/

* binutils-all/i386/compressed-1b.d: Don't hardcode offset of
.shstrtab section.
* binutils-all/i386/compressed-1c.d: Likewise.
* binutils-all/readelf.s-64: Likewise.
* binutils-all/x86-64/compressed-1b.d: Likewise.
* binutils-all/x86-64/compressed-1c.d: Likewise.

gas/testsuite/

* gas/i386/ilp32/x86-64-unwind.d: Don't hardcode offset of
.shstrtab section.
* gas/i386/x86-64-unwind.d: Likewise.
* gas/ia64/alias-ilp32.d: Likewise.
* gas/ia64/alias.d: Likewise.
* gas/ia64/group-1.d: Likewise.
* gas/ia64/group-2.d: Likewise.
* gas/ia64/secname-ilp32.d: Likewise.
* gas/ia64/secname.d: Likewise.
* gas/ia64/unwind-ilp32.d: Likewise.
* gas/ia64/unwind.d: Likewise.
* gas/mmix/bspec-1.d: Likewise.
* gas/mmix/byte-1.d: Likewise.
* gas/mmix/loc-1.d: Likewise.
* gas/mmix/loc-2.d: Likewise.
* gas/mmix/loc-3.d: Likewise.
* gas/mmix/loc-4.d: Likewise.
* gas/mmix/loc-5.d: Likewise.
* gas/tic6x/scomm-directive-4.d: Likewise.

ld/testsuite/

* ld-mmix/bspec1.d: Don't hardcode offset of .shstrtab section.
* ld-mmix/bspec2.d: Likewise.
* ld-mmix/local1.d: Likewise.
* ld-mmix/local3.d: Likewise.
* ld-mmix/local5.d: Likewise.
* ld-mmix/local7.d: Likewise.
* ld-mmix/undef-3.d: Likewise.
* ld-sh/sh64/crangerel1.rd: Likewise.
* ld-sh/sh64/crangerel2.rd: Likewise.
* ld-tic6x/common.d: Likewise.
* ld-tic6x/shlib-1.rd: Likewise.
* ld-tic6x/shlib-1b.rd: Likewise.
* ld-tic6x/shlib-1r.rd: Likewise.
* ld-tic6x/shlib-1rb.rd: Likewise.
* ld-tic6x/shlib-app-1.rd: Likewise.
* ld-tic6x/shlib-app-1b.rd: Likewise.
* ld-tic6x/shlib-app-1r.rd: Likewise.
* ld-tic6x/shlib-app-1rb.rd: Likewise.
* ld-tic6x/shlib-noindex.rd: Likewise.
* ld-tic6x/static-app-1.rd: Likewise.
* ld-tic6x/static-app-1b.rd: Likewise.
* ld-tic6x/static-app-1r.rd: Likewise.
* ld-tic6x/static-app-1rb.rd: Likewise.
* ld-x86-64/ilp32-4.d: Likewise.
* ld-x86-64/split-by-file-nacl.rd: Likewise.
* ld-x86-64/split-by-file.rd: Likewise.

9 years agoIterate ELF sections by pointer
H.J. Lu [Mon, 20 Apr 2015 15:50:01 +0000 (08:50 -0700)]
Iterate ELF sections by pointer

Iterate ELF sections by pointer without section counter.  It removes
"i++".

* elf.c (assign_file_positions_for_non_load_sections): Iterate
sections by pointer.
(_bfd_elf_assign_file_positions_for_non_load): Likewise.

9 years agoSilence texinfo 5.1 warnings
H.J. Lu [Mon, 20 Apr 2015 15:05:13 +0000 (08:05 -0700)]
Silence texinfo 5.1 warnings

This patch silences texinfo 5.1 warnings by using @subsection and
sorting entries in Machine Dependencies menu.

* doc/as.texinfo (Bundle directives): Shorten menu entry and
use @subsection.
(CFI directives): Use @subsection.
(SH-Dependent, SH64-Dependent): Moved after SCORE-Dependent.
* doc/c-i386.texi (i386-Mnemonics): Use @subsection.

9 years agoRevert "Do not consider reference types as dynamic"
Pierre-Marie de Rodat [Mon, 20 Apr 2015 14:06:50 +0000 (16:06 +0200)]
Revert "Do not consider reference types as dynamic"

This reverts commit 961f41602529c9cd4f88af6c02fb61fb55100e27.

Note that the revert is partial: it keeps the new testcases
gdb.ada/funcall_ref.exp.

9 years agoRevert "gdbtypes.c: remove the usuned "top_level" parameter"
Pierre-Marie de Rodat [Mon, 20 Apr 2015 14:04:28 +0000 (16:04 +0200)]
Revert "gdbtypes.c: remove the usuned "top_level" parameter"

This reverts commit 25755e2b85e2bd5b313ea87f32000bf9a47dbbf8.

9 years agoFix three test failures with extended remote targets
Gary Benson [Mon, 20 Apr 2015 10:35:29 +0000 (11:35 +0100)]
Fix three test failures with extended remote targets

This commit fixes three gdb.base/attach.exp failures when using
extended remote targets.  The failures occurred because GDB now
locates and loads files when attaching on remote targets if the
remote target supports qXfer:exec-file:read; the filenames were
shown but with "target:" prefixes which the test has been updated
to handle.

gdb/testsuite/ChangeLog:

* gdb.base/attach.exp: Fix three extended remote failures.

9 years agoAutomatic date update in version.in
GDB Administrator [Mon, 20 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoRemove duplicated xmalloc in update_dprintf_command_list
Gabriel Krisman Bertazi [Sun, 19 Apr 2015 22:34:08 +0000 (19:34 -0300)]
Remove duplicated xmalloc in update_dprintf_command_list

Code in update_dprintf_command_list performed a duplicated memory
allocation which caused an obvious memory leak.  This removes the
duplication.

gdb/
2015-04-19  Gabriel Krisman Bertazi  <gabriel@krisman.be>

* breakpoint.c (update_dprintf_command_list): Remove duplicated
xmalloc.

9 years ago[GDB] Hurd: Robustify the reply_mig_hack.awk script.
Thomas Schwinge [Sun, 19 Apr 2015 22:31:54 +0000 (00:31 +0200)]
[GDB] Hurd: Robustify the reply_mig_hack.awk script.

..., so that it also works with the GNU MIG 1.5 just released.

gdb/
* reply_mig_hack.awk: Robustify parsing.

9 years ago[GDB] Hurd: Simplify the reply_mig_hack.awk script.
Thomas Schwinge [Sun, 19 Apr 2015 22:22:32 +0000 (00:22 +0200)]
[GDB] Hurd: Simplify the reply_mig_hack.awk script.

gdb/
* reply_mig_hack.awk: Don't bother to declare an intermediate
function pointer variable.

... allowing us to simplify the parsing a little bit.  And, instead of
"warning: initialization from incompatible pointer type", we now get "warning:
function called through a non-compatible type".  Oh well.

9 years agosim/erc32: Switched emulated memory to host endian order.
Jiri Gaisler [Fri, 3 Apr 2015 20:35:48 +0000 (22:35 +0200)]
sim/erc32: Switched emulated memory to host endian order.

Change data ordering in emulated memory from target order (big endian)
to host order. Improves performance and simplifies most memory
operations. Requires some byte twisting during stores on little
endian hosts (intel). Also removed support for little-endian binaries.

9 years agoAutomatic date update in version.in
GDB Administrator [Sun, 19 Apr 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agosim: clean up duplicate sim-engine hooks
Mike Frysinger [Sat, 18 Apr 2015 08:38:33 +0000 (04:38 -0400)]
sim: clean up duplicate sim-engine hooks

Now that we've unified sim-cpu, we can delete the duplicate sim-engine
hooks -- these targets defined these only because they didn't fully
implement the sim-cpu callbacks.

9 years agosim: trim old USING_SIM_BASE_H define
Mike Frysinger [Sat, 18 Apr 2015 08:22:25 +0000 (04:22 -0400)]
sim: trim old USING_SIM_BASE_H define

This doesn't appear to have been used since 1998, but wasn't cleaned
up since.  So much for being "quick" ;).

9 years agosim: unify SIM_CPU definition
Mike Frysinger [Sat, 18 Apr 2015 08:19:56 +0000 (04:19 -0400)]
sim: unify SIM_CPU definition

Since every target typedefs this the same way, move it to the common code.

We have to leave Blackfin behind here for now because of inter-dependencies
on types and headers: sim-base.h includes sim-model.h which needs types in
machs.h which needs types in bfim-sim.h which needs SIM_CPU.

9 years agosim: unify sim_cia definition
Mike Frysinger [Sat, 18 Apr 2015 08:08:56 +0000 (04:08 -0400)]
sim: unify sim_cia definition

Almost every target defines sim_cia the same way -- either using the
address_word type directly, or a type of equivalent size.  The only
odd one out is sh64 (who has 32bit address_word and 64bit cia), and
even that case doesn't seem to make sense.  We'll put off clean up
though of sh64 and at least set up a sensible default for everyone.

9 years agoAutomatic date update in version.in
GDB Administrator [Sat, 18 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agosolib-svr4.c (svr4_exec_displacement): Rename outer "displacement".
Doug Evans [Fri, 17 Apr 2015 17:57:45 +0000 (10:57 -0700)]
solib-svr4.c (svr4_exec_displacement): Rename outer "displacement".

gdb/ChangeLog:

* solib-svr4.c (svr4_exec_displacement): Rename outer "displacement"
to "exec_displacement" to avoid confusion with inner use of the name.

9 years agoUse LIFO instead of FIFO to implement gc's transitive closure.
Rafael Ávila de Espíndola [Fri, 17 Apr 2015 15:51:36 +0000 (11:51 -0400)]
Use LIFO instead of FIFO to implement gc's transitive closure.

FIFO is harder to implement and has less locality than LIFO. It is
also not necessary to implement a transitive closure, a LIFO works
just as well.

9 years agoMerge include/partition.h from GCC.
Richard Earnshaw [Fri, 17 Apr 2015 15:10:43 +0000 (16:10 +0100)]
Merge include/partition.h from GCC.

2015-03-19  Richard Biener  <rguenther@suse.de>

* partition.h (struct partition_elem): Re-order elements to
avoid padding.

9 years agogdbserver/xtensa: fix typo in XCHAL_HAVE_LOOPS
Max Filippov [Thu, 16 Apr 2015 23:52:50 +0000 (02:52 +0300)]
gdbserver/xtensa: fix typo in XCHAL_HAVE_LOOPS

This fixes lbeg/lend/lcount registers handling through gdbserver.

2015-04-17  Max Filippov  <jcmvbkbc@gmail.com>
gdb/gdbserver/
* linux-xtensa-low.c (xtensa_fill_gregset)
(xtensa_store_gregset): Check XCHAL_HAVE_LOOPS instead of
XCHAL_HAVE_LOOP.

9 years agogdbserver/xtensa: drop xtensa_usrregs_info
Max Filippov [Fri, 17 Apr 2015 00:07:41 +0000 (03:07 +0300)]
gdbserver/xtensa: drop xtensa_usrregs_info

xtensa_usrregs_info refers to undefined variables xtensa_num_regs and
xtensa_regmap. Drop xtensa_usrregs_info and replace pointer to usrregs
in regs_info with NULL since all registers are read/set through regsets.

2015-04-17  Max Filippov  <jcmvbkbc@gmail.com>
gdb/gdbserver/
* linux-xtensa-low.c (xtensa_usrregs_info): Remove.
(regs_info): Replace usrregs pointer with NULL.

9 years agoreturn zero in arm_linux_can_use_hw_breakpoint if HW point isn't supported
Yao Qi [Fri, 17 Apr 2015 12:52:44 +0000 (13:52 +0100)]
return zero in arm_linux_can_use_hw_breakpoint if HW point isn't supported

This patch is to cherry-pick part of Pedro's patch here
https://sourceware.org/ml/gdb-patches/2015-04/msg00527.html in which
zero is returned if the HW point isn't supported.

In arm-linux native gdb testing on a board doesn't support HW breakpoint,
without this patch, the output in gdb.base/breakpoint-in-ro-region.exp is like:

(gdb) hbreak *0x83bc^M
Hardware breakpoints used exceeds limit.^M
(gdb) PASS: gdb.base/breakpoint-in-ro-region.exp: probe hbreak support (support)

with this patch, the output becomes:

(gdb) hbreak *0x83bc^M
No hardware breakpoint support in the target.^M
(gdb) PASS: gdb.base/breakpoint-in-ro-region.exp: probe hbreak support (no support)

As a result, the following fails are fixed.

-FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted off: auto-hw on: step in ro region (cannot insert hw break)
-FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted off: auto-hw on: thread advanced
-FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted on: auto-hw on: step in ro region (cannot insert hw break)
-FAIL: gdb.base/breakpoint-in-ro-region.exp: always-inserted on: auto-hw on: thread advanced

gdb:

2015-04-17  Pedro Alves  <palves@redhat.com>

* arm-linux-nat.c (arm_linux_can_use_hw_breakpoint): Return zero
if HW point of TYPE isn't supported.

9 years agoUpdate comments to target_can_use_hardware_watchpoint
Yao Qi [Fri, 17 Apr 2015 12:45:53 +0000 (13:45 +0100)]
Update comments to target_can_use_hardware_watchpoint

The return value of target_can_use_hardware_watchpoint isn't well
documented, so this patch is to update the comments to reflect the
fact.  This patch also removes a trailing ";" which is picked up
from Pedro's patch https://sourceware.org/ml/gdb-patches/2015-04/msg00527.html

gdb:

2015-04-17  Yao Qi  <yao.qi@linaro.org>
    Pedro Alves  <palves@redhat.com>

* target.h (target_can_use_hardware_watchpoint): Update comments.
Remove trailing ";".

9 years agoFix avr compiler warning
Senthil Kumar Selvaraj [Fri, 17 Apr 2015 11:25:54 +0000 (20:55 +0930)]
Fix avr compiler warning

declaration of "link" shadows a global declaration

* config/tc-avr.c (create_record_for_frag): Rename link to
prop_rec_link.

9 years agoAccess executable from remote system when first inferior appears
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Access executable from remote system when first inferior appears

This commit modifies remote_add_inferior to take an extra argument
try_open_exec.  If this is nonzero, remote_add_inferior will attempt
to open this inferior's executable as the main executable if no main
executable is open already.  Callers are updated appropriately.

With this commit, remote debugging can now be initiated using only a
"target remote" or "target extended-remote" command; no "set sysroot"
or "file" commands are required, e.g.

  bash$ gdb -q
  (gdb) target remote | gdbserver - /bin/sh
  Remote debugging using | gdbserver - /bin/sh
  Process /bin/sh created; pid = 32166
  stdin/stdout redirected
  Remote debugging using stdio
  Reading symbols from target:/bin/bash...

One testcase required updating as a result of this commit.  The test
checked that GDB's "info files" command does not crash if no main
executable is open, and relied on GDB's inability to access the main
executable over the remote protocol.  The test was updated to inhibit
this new behavior.

gdb/ChangeLog:

* remote.c (remote_add_inferior): New argument try_open_exec.
If nonzero, attempt to open the inferior's executable file as
the main executable if no main executable is open already.
All callers updated.
* NEWS: Mention that GDB now supports automatic location and
retrieval of executable + files from remote targets.

gdb/doc/ChangeLog:

* gdb.texinfo (Connecting to a Remote Target): Mention that
GDB can access program files from remote targets that support
qXfer:exec-file:read and Host I/O packets.

gdb/testsuite/ChangeLog:

* gdb.server/server-exec-info.exp: Inhibit GDB from accessing
the main executable over the remote protocol.

9 years agoImplement qXfer:exec-file:read in gdbserver
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Implement qXfer:exec-file:read in gdbserver

This commit implements the "qXfer:exec-file:read" packet in gdbserver.

gdb/gdbserver/ChangeLog:

* target.h (struct target_ops) <pid_to_exec_file>: New field.
* linux-low.c (linux_target_ops): Initialize pid_to_exec_file.
* server.c (handle_qxfer_exec_file): New function.
(qxfer_packets): Add exec-file entry.
(handle_query): Report qXfer:exec-file:read as supported packet.

9 years agoImplement remote_pid_to_exec_file using qXfer:exec-file:read
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Implement remote_pid_to_exec_file using qXfer:exec-file:read

This commit adds a new packet "qXfer:exec-file:read" to the remote
protocol that can be used to obtain the pathname of the file that
was executed to create a process on the remote system.  Support for
this packet is added to GDB and remote_ops.to_pid_to_exec_file is
implemented using it.

gdb/ChangeLog:

* target.h (TARGET_OBJECT_EXEC_FILE): New enum value.
* remote.c (PACKET_qXfer_exec_file): Likewise.
(remote_protocol_features): Register the
"qXfer:exec-file:read" feature.
(remote_xfer_partial): Handle TARGET_OBJECT_EXEC_FILE.
(remote_pid_to_exec_file): New function.
(init_remote_ops): Initialize to_pid_to_exec_file.
(_initialize_remote): Register new "set/show remote
pid-to-exec-file-packet" command.
* NEWS: Announce new qXfer:exec-file:read packet.

gdb/doc/ChangeLog:

* gdb.texinfo (Remote Configuration): Document the "set/show
remote pid-to-exec-file-packet" command.
(General Query Packets): Document the qXfer:exec-file:read
qSupported features.  Document the qXfer:exec-file:read packet.

9 years agoIntroduce linux_proc_pid_to_exec_file
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Introduce linux_proc_pid_to_exec_file

This commit introduces a new function linux_proc_pid_to_exec_file
that shared Linux code can use to discover the filename of the
executable that was run to create a process on the system.

gdb/ChangeLog:

* nat/linux-procfs.h (linux_proc_pid_to_exec_file):
New declaration.
* nat/linux-procfs.c (linux_proc_pid_to_exec_file):
New function, factored out from...
* linux-nat.c (linux_child_pid_to_exec_file): ...here.

9 years agoUse gdb_sysroot for main executable on attach
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Use gdb_sysroot for main executable on attach

This commit updates exec_file_locate_attach to use exec_file_find
to compute the full pathname of the main executable in some cases.
The net effect of this is that the main executable's path will be
prefixed with gdb_sysroot in the same way that shared library paths
currently are.

gdb/ChangeLog:

* exec.c (solist.h): New include.
(exec_file_locate_attach): Prefix absolute executable
paths with gdb_sysroot if set.
* NEWS: Mention that executable paths may be prepended
with sysroot.

gdb/doc/ChangeLog:

* gdb.texinfo (set sysroot): Document that "set sysroot" also
applies to executable paths if supplied to GDB as absolute.

9 years agoIntroduce exec_file_find
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Introduce exec_file_find

This commit adds a new function, exec_file_find, which computes the
full pathname of the main executable in much the same way solib_find
does for pathnames of shared libraries.  The bulk of the existing
solib_find was moved into a new static function solib_find_1, with
exec_file_find and solib_find being small wrappers for solib_find_1.

gdb/ChangeLog:

* solist.h (exec_file_find): New declaration.
* solib.c (solib_find_1): New function, factored out from...
(solib_find): ...here.
(exec_file_find): New function.

9 years agoIntroduce exec_file_locate_attach
Gary Benson [Fri, 17 Apr 2015 08:47:30 +0000 (09:47 +0100)]
Introduce exec_file_locate_attach

This commit adds a new function, exec_file_locate_attach, which works
like exec_file_attach except that, instead of a filename argument, it
takes an integer process ID and attempts to determine the executable
filename from that.

gdb/ChangeLog:

* gdbcore.h (exec_file_locate_attach): New declaration.
* exec.c (exec_file_locate_attach): New function, factored
out from...
* infcmd.c (attach_command_post_wait): ...here.

9 years agogdb: add myself to blackfin/write-after-approval
Mike Frysinger [Thu, 2 Apr 2015 04:51:25 +0000 (00:51 -0400)]
gdb: add myself to blackfin/write-after-approval

9 years agosim: microblaze: switch to common memory functions
Mike Frysinger [Sun, 12 Apr 2015 09:49:31 +0000 (05:49 -0400)]
sim: microblaze: switch to common memory functions

Re-use the existing memory core that handles reads/writes.

This drops support for the dumpmem command, but gdb itself has
support for dumping memory regions.

The verbose command is converted to the common --verbose flag
since only two call sites use it now.

Support for the clearstats command is dropped entirely, but no
other sim really does this, and the same thing can be done by
reloading.  If it's important (clearing cycle stats) to someone,
we can add a common function for it.

9 years agosim: replace CIA_{GET,SET} with CPU_PC_{GET,SET}
Mike Frysinger [Thu, 16 Apr 2015 06:11:12 +0000 (02:11 -0400)]
sim: replace CIA_{GET,SET} with CPU_PC_{GET,SET}

The CIA_{GET,SET} macros serve the same function as CPU_PC_{GET,SET}
except the latter adds a layer of indirection via the sim state.  This
lets models set up different functions at runtime and doesn't reach so
directly into the arch-specific cpu state.

It also doesn't make sense to have two sets of macros that do exactly
the same thing, so lets standardize on the one that gets us more.

9 years agosim: arm/cr16/d10v/h8300/microblaze/sh: fill out sim-cpu pc fetch/store helpers
Mike Frysinger [Fri, 17 Apr 2015 06:16:10 +0000 (02:16 -0400)]
sim: arm/cr16/d10v/h8300/microblaze/sh: fill out sim-cpu pc fetch/store helpers

This makes the common sim-cpu logic work.

9 years agoAutomatic date update in version.in
GDB Administrator [Fri, 17 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years ago[gold] The first patch to address cortex-a53 erratum-843419.
Han Shen [Thu, 16 Apr 2015 22:17:08 +0000 (15:17 -0700)]
[gold] The first patch to address cortex-a53 erratum-843419.

It implemented scanning the binary and reporting occurrences to users
when '--fix-cortex-a53' is turned on. With this, gold users will be
able to see if or not there are such erratum occurrences in the output
binary. Also included in the CL is reading/recording mapping symbols,
which is needed during scan.

gold/ChangeLog:
    * aarch64.cc (AArch64_insn_utilities): New utility class.
    (AArch64_relobj::Mapping_symbol_position): New struct.
    (AArch64_relobj::Mapping_symbol_info): New typedef.
    (AArch64_relobj::do_count_local_symbols): New function overriding
    parent's implementation.
    (AArch64_relobj::mapping_symbol_info_): New member
    (AArch64_relobj::scan_erratum_843419): New method.
    (Target_aarch64::scan_erratum_843419_span): New method.
    (Target_aarch64::is_erratum_843419_sequence): New method.
    * options.h (fix_cortex_a53): New option.

9 years agoFix {mi-tracepoint-changed, mi-tsv-changed}.exp with native-extended-gdbserver
Pedro Alves [Thu, 16 Apr 2015 11:23:26 +0000 (12:23 +0100)]
Fix {mi-tracepoint-changed, mi-tsv-changed}.exp with native-extended-gdbserver

Fixes:

 -FAIL: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1
 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint created
 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint on marker is installed
 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1

 -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created
 -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created
 +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created
 +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created

These tests do something like this:

 #0 - start gdb/gdbserver normally
 #1 - setup some things in the debug session
 #2 - disconnect from gdbserver
 #3 - restart gdb
 #4 - reconnect to gdbserver

The problem is that the native-extended-gdbserver board always spawns
a new gdbserver instance in #3 (and has gdb connect to that).  So when
the test gets to #4, it connects to that new instance instead of the
old one:

 (gdb) spawn ../gdbserver/gdbserver --multi :2354
 Listening on port 2354
 target extended-remote localhost:2354
 Remote debugging using localhost:2354
 ...
 spawn ../gdbserver/gdbserver --multi :2355
 Listening on port 2355
 47-target-select extended-remote localhost:2355
 =tsv-created,name="trace_timestamp",initial="0"\n
 47^connected
 (gdb)
 ...
 47-target-select extended-remote localhost:2355
 47^connected
 (gdb)
 FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created
 FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created

testsuite/ChangeLog:
2015-04-16  Pedro Alves  <palves@redhat.com>

* boards/native-extended-gdbserver.exp (mi_gdb_start): Don't start
a new gdbserver if gdbserver_reconnect_p is set.

9 years agoFix gdbserver_reconnect_p handling
Pedro Alves [Thu, 16 Apr 2015 13:26:59 +0000 (14:26 +0100)]
Fix gdbserver_reconnect_p handling

Commit 6423214f (testsuite: Don't use expect_background to reap
gdbserver) broke a couple tests that set gdbserver_reconnect_p and
restart gdb before reconnecting, because a gdb_exit (e.g., through
clean_restart) exits gdbserver unconditionally.

Fixes, with --target_board=native-gdbserver:

 -FAIL: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1
 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint created
 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: tracepoint on marker is installed
 +PASS: gdb.trace/mi-tracepoint-changed.exp: reconnect: break-info 1

 -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created
 -FAIL: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created
 +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv1 created
 +PASS: gdb.trace/mi-tsv-changed.exp: upload: tsv2 created

gdb/testsuite/
2015-04-16  Pedro Alves  <palves@redhat.com>

* lib/gdbserver-support.exp (gdb_exit): If gdbserver_reconnect_p
is set, don't exit gdbserver.

9 years agoHonour software single step in fallback of displaced stepping
Yao Qi [Thu, 16 Apr 2015 12:48:10 +0000 (13:48 +0100)]
Honour software single step in fallback of displaced stepping

Hi,
When I run gdb.threads/non-stop-fair-events.exp on arm-linux target,
I see the following message in the debugging log,

  displaced: breakpoint is gone: Thread 22518, step(1)^M
  Sending packet: $vCont;s:p57f3.57f6#9d...
                  ^^^^^^^^^
GDB sends vCont;s by mistake, and GDBserver fails on assert.  GDB
doesn't consider software single step in infrun.c:displaced_step_fixup,

  /* Go back to what we were trying to do.  */
  step = currently_stepping (tp);

  if (debug_displaced)
    fprintf_unfiltered (gdb_stdlog,
"displaced: breakpoint is gone: %s, step(%d)\n",
target_pid_to_str (tp->ptid), step);

  target_resume (ptid, step, GDB_SIGNAL_0);

The patch is to let GDB consider software single step here.  It fixes
fails in gdb.threads/non-stop-fair-events.exp on arm.

gdb:

2015-04-16  Yao Qi  <yao.qi@linaro.org>

* infrun.c (maybe_software_singlestep): Declare.
(displaced_step_fixup): Call maybe_software_singlestep.

9 years agos390-vregs.exp: Avoid compile errors with older GCCs and on 31-bit targets
Andreas Arnez [Thu, 16 Apr 2015 11:03:48 +0000 (13:03 +0200)]
s390-vregs.exp: Avoid compile errors with older GCCs and on 31-bit targets

The test case s390-vregs.exp yields compile errors on 31-bit targets
as well as when using a GCC that defaults to an older "-march=".  This
patch fixes these issues.

gdb/testsuite/ChangeLog:

* gdb.arch/s390-vregs.S (change_vrs): Replace exrl by an
appropriate .insn, such that an older assembler can be used.
* gdb.arch/s390-vregs.exp: Add the compile flag -mzarch, to enable
the z/Architecture instruction set on 31-bit targets as well.

9 years agoGDB tests for Go language support: remove unnecessary first breakpoint
Andreas Arnez [Thu, 16 Apr 2015 11:03:47 +0000 (13:03 +0200)]
GDB tests for Go language support: remove unnecessary first breakpoint

On s390x targets some of the Go test cases fail because the first
breakpoint happens to be at the same spot as the breakpoint at
main.main.  When such a test case tries to continue to the first
breakpoint, the program runs until the end instead, and the test fails
like this:

FAIL: gdb.go/handcall.exp: Going to first breakpoint (the program exited)

This patch removes all the handling related to the first breakpoint in
those cases.  After applying the patch, the tests run successfully on
s390x.

gdb/testsuite/ChangeLog:

* gdb.go/handcall.exp: Remove all logic related to the first
breakpoint and rely on go_runto_main instead.
* gdb.go/strings.exp: Likewise.
* gdb.go/unsafe.exp: Likewise.
* gdb.go/hello.exp: Likewise.  Also rename the remaining
breakpoint marker to "breakpoint 1".
* gdb.go/handcall.go: Remove comment "set breakpoint 1 here".
* gdb.go/strings.go: Likewise.
* gdb.go/unsafe.go: Likewise.
* gdb.go/hello.go: Likewise.  Also remove the second occurrence of
"set breakpoint 2 here" and rename the remaining breakpoint marker
to "breakpoint 1".

9 years agosim: avr/mcore/moxie: fill out sim-cpu pc fetch/store helpers
Mike Frysinger [Thu, 16 Apr 2015 06:07:33 +0000 (02:07 -0400)]
sim: avr/mcore/moxie: fill out sim-cpu pc fetch/store helpers

This makes the common sim-cpu logic work.

9 years agoAutomatic date update in version.in
GDB Administrator [Thu, 16 Apr 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoRemove the unused PREFIX_UD_XXX
H.J. Lu [Wed, 15 Apr 2015 22:58:45 +0000 (15:58 -0700)]
Remove the unused PREFIX_UD_XXX

Remove the unused PREFIX_UD_XXX.  Invalid opcodes should be handled by
prefix_table.

* i386-dis.c (PREFIX_UD_SHIFT): Removed.
(PREFIX_UD_REPZ): Likewise.
(PREFIX_UD_REPNZ): Likewise.
(PREFIX_UD_DATA): Likewise.
(PREFIX_UD_ADDR): Likewise.
(PREFIX_UD_LOCK): Likewise.

9 years agoMake info fun|var|types interruptable for psyms.
Doug Evans [Wed, 15 Apr 2015 21:04:35 +0000 (14:04 -0700)]
Make info fun|var|types interruptable for psyms.

gdb/ChangeLog:

* psymtab.c (psym_expand_symtabs_matching): Add QUIT call.

9 years agoMake info fun|var|types interruptable.
Doug Evans [Wed, 15 Apr 2015 20:25:42 +0000 (13:25 -0700)]
Make info fun|var|types interruptable.

"info fun foo" can be a pain when it's not interruptable,
especially if you're not exactly sure of what you're looking for
and provide something that matches too much.

gdb/ChangeLog:

* dwarf2read.c (dw2_expand_symtabs_matching): Add some QUIT calls.

9 years agoCheck dp->prefix_requirement instead
H.J. Lu [Wed, 15 Apr 2015 18:28:16 +0000 (11:28 -0700)]
Check dp->prefix_requirement instead

This patch removes prefix_requirement and checks dp->prefix_requirement
instead.

* i386-dis.c (prefix_requirement): Removed.
(print_insn): Don't set prefix_requirement.  Check
dp->prefix_requirement instead of prefix_requirement.

9 years agoHandle invalid prefixes for rdrand and rdseed
H.J. Lu [Wed, 15 Apr 2015 16:53:13 +0000 (09:53 -0700)]
Handle invalid prefixes for rdrand and rdseed

This patch puts rdrand and rdseed in prefix_table so that invalid
prefixes for rdrand and rdseed are handled properly.

gas/testsuite/

PR binutils/17898
* gas/i386/prefix.s: Add rdrand/rdseed prefix tests.
* gas/i386/prefix.d: Updated.

opcodes/

PR binutils/17898
* i386-dis.c (PREFIX_0FC7_REG_6): Renamed to ...
(PREFIX_MOD_0_0FC7_REG_6): This.
(PREFIX_MOD_3_0FC7_REG_6): New.
(PREFIX_MOD_3_0FC7_REG_7): Likewise.
(prefix_table): Replace PREFIX_0FC7_REG_6 with
PREFIX_MOD_0_0FC7_REG_6.  Add PREFIX_MOD_3_0FC7_REG_6 and
PREFIX_MOD_3_0FC7_REG_7.
(mod_table): Replace PREFIX_0FC7_REG_6 with
PREFIX_MOD_0_0FC7_REG_6.  Use PREFIX_MOD_3_0FC7_REG_6 and
PREFIX_MOD_3_0FC7_REG_7.

9 years agoReplace mandatory_prefix with prefix_requirement
H.J. Lu [Wed, 15 Apr 2015 16:24:45 +0000 (09:24 -0700)]
Replace mandatory_prefix with prefix_requirement

* i386-dis.c (PREFIX_MANDATORY_REPZ): Removed.
(PREFIX_MANDATORY_REPNZ): Likewise.
(PREFIX_MANDATORY_DATA): Likewise.
(PREFIX_MANDATORY_ADDR): Likewise.
(PREFIX_MANDATORY_LOCK): Likewise.
(PREFIX_MANDATORY): Likewise.
(PREFIX_UD_SHIFT): Set to 8
(PREFIX_UD_REPZ): Updated.
(PREFIX_UD_REPNZ): Likewise.
(PREFIX_UD_DATA): Likewise.
(PREFIX_UD_ADDR): Likewise.
(PREFIX_UD_LOCK): Likewise.
(PREFIX_IGNORED_SHIFT): New.
(PREFIX_IGNORED_REPZ): Likewise.
(PREFIX_IGNORED_REPNZ): Likewise.
(PREFIX_IGNORED_DATA): Likewise.
(PREFIX_IGNORED_ADDR): Likewise.
(PREFIX_IGNORED_LOCK): Likewise.
(PREFIX_OPCODE): Likewise.
(PREFIX_IGNORED): Likewise.
(Bad_Opcode): Replace PREFIX_MANDATORY with 0.
(dis386_twobyte): Replace PREFIX_MANDATORY with PREFIX_OPCODE.
(three_byte_table): Likewise.
(mod_table): Likewise.
(mandatory_prefix): Renamed to ...
(prefix_requirement): This.
(prefix_table): Replace PREFIX_MANDATORY with PREFIX_OPCODE.
Update PREFIX_90 entry.
(get_valid_dis386): Check prefix_requirement to see if a prefix
should be ignored.
(print_insn): Replace mandatory_prefix with prefix_requirement.

9 years ago[ARM] Disassembles SSAT and SSAT16 instructions incorrectly for Thumb-2
Renlin Li [Wed, 15 Apr 2015 16:44:03 +0000 (17:44 +0100)]
[ARM] Disassembles SSAT and SSAT16 instructions incorrectly for Thumb-2

2015-04-15  Renlin Li  <renlin.li@arm.com>
opcodes/:
    * arm-dis.c (thumb32_opcodes): Define 'D' format control code,
    use it for ssat and ssat16.
    (print_insn_thumb32): Add handle case for 'D' control code.

gas/testsuite/:
    * gas/arm/arch7em.d: Adjust required ssat and ssat16 immediate field.
    * gas/arm/thumb32.d: Likewise.

9 years agogdbserver: fix uClibc build whithout MMU.
Romain Naour [Tue, 14 Apr 2015 21:07:34 +0000 (23:07 +0200)]
gdbserver: fix uClibc build whithout MMU.

Since commit d86d4aafd4fa22fa4cccb83253fb187b03f97f48, the pid
must be retrieved from current_thread.

The change has not been made in the function linux_read_offsets().

Fixes:
http://autobuild.buildroot.net/results/9e4/9e4df085319e346803c26c65478accb27eb950ae/build-end.log

2015-04-14  Romain Naour <romain.naour@openwide.fr>  (tiny change)

* linux-low.c (linux_read_offsets): Remove get_thread_lwp.

Signed-off-by: Romain Naour <romain.naour@openwide.fr>
9 years agoSome Python 3 fixes
Simon Marchi [Wed, 15 Apr 2015 15:54:33 +0000 (11:54 -0400)]
Some Python 3 fixes

Some missing parentheses and one itertools.imap (Py2) vs map (Py3) issue.

gdb/ChangeLog:

* python/lib/gdb/command/unwinders.py: Add parentheses.

gdb/testsuite/ChangeLog:

* gdb.python/py-framefilter.py (ErrorFilter.filter): Use map function
if itertools.imap is not present.
* gdb.python/py-objfile.exp: Add parentheses.
* gdb.python/py-type.exp: Same.
* gdb.python/py-unwind-maint.py: Same.

9 years ago[arm] Update displaced stepping debug message
Yao Qi [Wed, 15 Apr 2015 14:09:53 +0000 (15:09 +0100)]
[arm] Update displaced stepping debug message

When I "set debug displaced 1" to fix fail in
gdb.base/disp-step-syscall.exp, the debug message is wrong.  This
patch is to fix it.

gdb:

2015-04-15  Yao Qi  <yao.qi@linaro.org>

* arm-linux-tdep.c (arm_linux_copy_svc): Update debug message.

9 years agoFix code indentation
Yao Qi [Wed, 15 Apr 2015 13:55:04 +0000 (14:55 +0100)]
Fix code indentation

gdb:

2015-04-15  Yao Qi  <yao.qi@linaro.org>

* arm-linux-tdep.c (arm_linux_copy_svc): Fix indentation.

9 years ago[arm] Fix fails in gdb.base/disp-step-syscall.exp
Yao Qi [Wed, 15 Apr 2015 13:34:03 +0000 (14:34 +0100)]
[arm] Fix fails in gdb.base/disp-step-syscall.exp

Hi,
I see this fail on arm-linux target,

 FAIL: gdb.base/disp-step-syscall.exp: fork: single step over fork final pc

which is caused by the PC isn't expected after displaced stepping the
svc instruction.  The code is:

=> 0xb6ead9a4 <__libc_do_syscall+4>:    svc     0
   0xb6ead9a6 <__libc_do_syscall+6>:    pop     {r7, pc}
   0xb6ead9a8:  nop.w^M
   0xb6ead9ac:  nop.w

after single step svc instruction, pc should be 0xb6ead9a6, but the
actual value of pc is 0xb6ead9a8.  The problem is illustrated by
turning on debug message of displaced stepping,

stepi^M
displaced: stepping Thread 12031 now^M
displaced: saved 0x8574: 02 bc 6a 46 04 b4 01 b4 df f8 10 c0 4d f8 04 cd 03 48 04 4b ff f7 d2 ef ff f7 e8 ef 0d 87 00 00 ^M
displaced: process thumb insn df00 at b6ead9a4^M
displaced: copying svc insn df00^M
displaced: read r7 value 00000078^M
displaced: sigreturn/rt_sigreturn SVC call not in signal trampoline frame^M
displaced: writing insn df00 at 00008574^M
displaced: copy 0xb6ead9a4->0x8574: displaced: check mode of b6ead9a4 instead of 00008574^M
displaced: displaced pc to 0x8574^M
displaced: run 0x8574: 00 df 01 de ^M
displaced: restored Thread 12031 0x8574^M
displaced: PC is apparently 00008576 after SVC step (within scratch space)^M
displaced: writing pc b6ead9a8  <----- WRONG ADDRESS

GDB writes the wrong address back to pc because GDB thinks the
instruction size is 4, which isn't true for thumb instruction.
This patch is to replace 4 with dsc->insn_size.

gdb:

2015-04-15  Yao Qi  <yao.qi@linaro.org>

* arm-linux-tdep.c (arm_linux_cleanup_svc): Use
dsc->insn_size instead of 4.

9 years agoFix fails in gdb.dwarf2/dynarr-ptr.exp
Yao Qi [Wed, 15 Apr 2015 13:04:40 +0000 (14:04 +0100)]
Fix fails in gdb.dwarf2/dynarr-ptr.exp

I see many fails in gdb.dwarf2/dynarr-ptr.exp on arm-linux target,
started from this

print foo.three_ptr.all^M
Cannot access memory at address 0x107c8^M
(gdb) FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr.all
print foo.three_ptr.all(1)^M
Cannot access memory at address 0x107c8

It turns out that ":$ptr_size" is used incorrectly.

             array_ptr_label: DW_TAG_pointer_type {
                 {DW_AT_byte_size :$ptr_size }
                                  ^^^^^^^^^^
                 {DW_AT_type :$array_label}
             }

Since the FORM isn't given, and it starts with the ":", it is regarded
as a label reference by dwarf assembler.  The generated asm file on
x86_64 is

        .uleb128        6               /* Abbrev (DW_TAG_pointer_type) */
        .4byte        8 - .Lcu1_begin   <----- WRONG
        .4byte        .Llabel2 - .Lcu1_begin

Looks .Lcu1_begin is 0 on x86_64 and that is why this test passes on
x86_64.  On arm, .Lcu1_begin is an address somewhere, and the value
of DW_AT_byte_size is a very large number, so memory read request
of such large length failed.

This patch is to remove ":" and set the form explicitly.  The generated
asm file on x86_64 becomes

        .uleb128        6               /* Abbrev (DW_TAG_pointer_type) */
        .byte        8
        .4byte        .Llabel2 - .Lcu1_begin

gdb/testsuite:

2015-04-15  Yao Qi  <yao.qi@linaro.org>

* gdb.dwarf2/dynarr-ptr.exp (assemble): Use $ptr_size instead
of ":$ptr_size" and set its form explicitly.

9 years agoMention --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]
H.J. Lu [Wed, 15 Apr 2015 12:25:58 +0000 (05:25 -0700)]
Mention --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]

binutils/

* NEWS: Mention
--compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi].

gas/

* NEWS: Mention
--compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi].

ld/

* NEWS: Mention
--compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi].

9 years agoIncrease timeout in watch-bitfields.exp for software watchpoint
Yao Qi [Wed, 15 Apr 2015 11:46:58 +0000 (12:46 +0100)]
Increase timeout in watch-bitfields.exp for software watchpoint

I see the following two timeout fails on pandaboard (arm-linux target),

 FAIL: gdb.base/watch-bitfields.exp: -location watch against bitfields: continue until exit (timeout)
 FAIL: gdb.base/watch-bitfields.exp: regular watch against bitfields: continue until exit (timeout)

In this test, more than one watchpoint is used, so the following
watchpoint requests fall back to software watchpoint, so that GDB
will single step all the way and it is very slow.

This patch is to copy the fix from

  [PATCH] GDB/testsuite: Correct gdb.base/watchpoint-solib.exp timeout tweak
  https://sourceware.org/ml/gdb-patches/2014-07/msg00716.html

I find the left-over of this patch review is to factor out code into
a procedure, so I do that in this patch.

Re-run tests watch-bitfields.exp, watchpoint-solib.exp, sigall-reverse.exp,
and until-precsave.exp on pandaboard, no regression.

gdb/testsuite:

2015-04-15  Pedro Alves  <palves@redhat.com>
    Yao Qi  <yao.qi@linaro.org>

* gdb.base/watch-bitfields.exp (test_watch_location): Increase
timeout by factor of 4.
(test_regular_watch): Likewise.
* gdb.base/watchpoint-solib.exp: Use with_timeout_factor.
* gdb.reverse/sigall-reverse.exp: Likewise.
* gdb.reverse/until-precsave.exp: Likewise.
* lib/gdb.exp (with_timeout_factor): New proc.
(gdb_expect): Move some code to ...
(get_largest_timeout): ... here.  New procedure.

9 years agosim: unify sim-cpu usage
Mike Frysinger [Wed, 15 Apr 2015 06:13:23 +0000 (02:13 -0400)]
sim: unify sim-cpu usage

Now that all the targets are utilizing CPU_PC_{FETCH,STORE}, and the
cpu state is multicore, and the STATE_CPU defines match, we can move
it all to the common code.

9 years agosim: cris/frv/h8300/iq2000/lm32/m32r/sh64: standardize cpu state
Mike Frysinger [Wed, 15 Apr 2015 05:22:34 +0000 (01:22 -0400)]
sim: cris/frv/h8300/iq2000/lm32/m32r/sh64: standardize cpu state

This sets up the sim_state structure and the cpu member to match what we
do in most other sims, and what the common code suggests.  This is a step
to unifying on the sim-cpu.o object.

9 years agoAdd --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]
H.J. Lu [Wed, 15 Apr 2015 05:01:25 +0000 (22:01 -0700)]
Add --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]

This patch adds --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]
to ld for ELF targets to support generating compressed DWARF debug
sections.  We always generate .zdebug_* section since section names have
been finalized and they can't be changed easily when compression is
being performed.

bfd/

* bfd-in.h (compressed_debug_section_type): New.
* compress.c (bfd_compress_section_contents): Add an argument
for linker write compression and always generate .zdebug_*
section when linking.
(bfd_init_section_compress_status): Pass FALSE to
bfd_compress_section_contents.
(bfd_compress_section): New function.
* elf.c (elf_fake_sections): For linking, set SEC_ELF_COMPRESS
on DWARF debug sections if COMPRESS_DEBUG is set and rename
section if COMPRESS_DEBUG_GABI_ZLIB isn't set.
(assign_file_positions_for_non_load_sections): Set sh_offset
to -1 if SEC_ELF_COMPRESS is set.
(assign_file_positions_except_relocs): Likwise.
(_bfd_elf_assign_file_positions_for_relocs): Renamed to ...
(_bfd_elf_assign_file_positions_for_non_load): This.  Change
return time to bfd_boolean.  Compress the section if
SEC_ELF_COMPRESS is set.
(_bfd_elf_write_object_contents): Updated.
(_bfd_elf_set_section_contents): Write section contents to
the buffer if SEC_ELF_COMPRESS is set.
* merge.c: Include "elf-bfd.h".
(sec_merge_emit): Add arguments for contents and offset.  Write
to contents with offset if contents isn't NULL.
(_bfd_write_merged_section): Write section contents to the
buffer if SEC_ELF_COMPRESS is set.  Pass contents and
output_offset to sec_merge_emit.
* elflink.c (bfd_elf_final_link): Allocate the buffer for
output section contents if SEC_ELF_COMPRESS is set.
* section.c (SEC_ELF_COMPRESS): New.
* bfd-in2.h: Regenerated.

gas/

* as.h (compressed_debug_section_type): Removed.

include/

* bfdlink.h (bfd_link_info): Add compress_debug.

ld/

* ld.texinfo: Document --compress-debug-sections=.
* ldmain.c (main): Set BFD_COMPRESS on output_bfd if
COMPRESS_DEBUG is set.  Set BFD_COMPRESS_GABI on output_bfd
for COMPRESS_DEBUG_GABI_ZLIB.
* lexsup.c (elf_static_list_options): Add
--compress-debug-sections=.
* emultempl/elf32.em (OPTION_COMPRESS_DEBUG): New.
(xtra_long): Add "compress-debug-sections".
(gld${EMULATION_NAME}_handle_option): Handle
OPTION_COMPRESS_DEBUG.

ld/testsuite/

* ld-elf/compress.exp (build_tests): Add tests for
--compress-debug-sections=.
(run_tests): Likewise.
Add additonal tests for --compress-debug-sections=.
* ld-elf/gabiend.rt: New file.
* ld-elf/gabinormal.rt: Likewise.
* ld-elf/gnubegin.rS: Likewise.
* ld-elf/gnunormal.rS: Likewise.
* ld-elf/zlibbegin.rS: Likewise.
* ld-elf/zlibnormal.rS: Likewise.

9 years agoxfail pr18223 test for tic6x
Alan Modra [Wed, 15 Apr 2015 02:29:10 +0000 (11:59 +0930)]
xfail pr18223 test for tic6x

Fails due to
warning: generating a shared library containing non-PIC/PID code

* ld-gc/pr18223.d: xfail tic6x.

9 years agoFix typo in last ChangeLog.
Hans-Peter Nilsson [Wed, 15 Apr 2015 02:11:18 +0000 (04:11 +0200)]
Fix typo in last ChangeLog.

9 years agoAdjust src-release.sh for sim using the gdb create-version.sh.
Hans-Peter Nilsson [Wed, 15 Apr 2015 02:08:21 +0000 (04:08 +0200)]
Adjust src-release.sh for sim using the gdb create-version.sh.

* sim-release.sh (tar_compress): If there's a fifth parameter,
use that in the getver call instead of $tool.
(sim_release): Pass gdb as fifth parameter to tar_compress.
(SIM_SUPPORT_DIRS): Add gdb/common/create-version.sh.

9 years agoFix typo in commit 6ff71e76
Alan Modra [Wed, 15 Apr 2015 01:54:30 +0000 (11:24 +0930)]
Fix typo in commit 6ff71e76

* elf32-rl78.c (rl78_elf_relocate_section): Typo fix.

9 years agoAutomatic date update in version.in
GDB Administrator [Wed, 15 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoAdds support to the RL78 port for linker relaxation affecting .debug sections.
Nick Clifton [Tue, 14 Apr 2015 15:23:33 +0000 (16:23 +0100)]
Adds support to the RL78 port for linker relaxation affecting .debug sections.

gas * config/tc-rl78.h (TC_LINKRELAX_FIXUP): Define.
(TC_FORCE_RELOCATION_SUB_SAME): Define.
(DWARF2_USE_FIXED_ADVANCE_PC): Define.

* gas/lns/lns.exp: Add RL78 to list of targets using
DW_LNS_fixed_advance_pc.

bfd * elf32-rl78.c (RL78_OP_REL): New macro.
(rl78_elf_howto_table): Use it for complex relocs.
(get_symbol_value): Handle the cases when the info or status
arguments are NULL.
(get_romstart): Cache the status returned by get_symbol_value.
(get_ramstart): Likewise.
(RL78_STACK_PUSH): Generate an error message if the stack
overflows.
(RL78_STACK_POP): Likewise for underflows.
(rl78_compute_complex_reloc): New function.  Contains the basic
processing code for all RL78 complex relocs.
(rl78_special_reloc): New function.  Provides special reloc
handling for complex relocs.
(rl78_elf_relocate_section): Use rl78_compute_complex_reloc.
(rl78_offset_for_reloc): Likewise.

binutils* readelf.c (target_specific_reloc_handling): Add code to handle
RL78 complex relocs.

9 years agoHarden gdb.base/bp-permanent.exp
Luis Machado [Tue, 14 Apr 2015 12:22:53 +0000 (09:22 -0300)]
Harden gdb.base/bp-permanent.exp

Reinstate test message and replace hardcoded test command with a variable.

gdb/testsuite/ChangeLog:
2015-04-14  Luis Machado  <lgustavo@codesourcery.com>

* gdb.base/bp-permanent.exp (test): Reinstate correct test message.

9 years agoZero supplied stat buffers in functions that pretend to stat
Gary Benson [Tue, 14 Apr 2015 11:35:30 +0000 (12:35 +0100)]
Zero supplied stat buffers in functions that pretend to stat

GDB has five places where it pretends to stat for bfd_openr_iovec.
Four of these only set the incoming buffer's st_size, leaving the
other fields unchanged, which is to say very likely populated with
random values from the stack.  remote_bfd_iovec_stat was fixed in
0a93529c56714b1da3d7106d3e0300764f8bb81c; this commit fixes the
other four.

gdb/ChangeLog:

* jit.c (mem_bfd_iovec_stat): Zero supplied buffer.
* minidebug.c (lzma_stat): Likewise.
* solib-spu.c (spu_bfd_iovec_stat): Likewise.
* spu-linux-nat.c (spu_bfd_iovec_stat): Likewise.

9 years agoAdd -z noextern-protected-data to ld for ELF/x86
H.J. Lu [Tue, 14 Apr 2015 11:12:55 +0000 (04:12 -0700)]
Add -z noextern-protected-data to ld for ELF/x86

Address of protected data defined in the shared library may be external,
i.e., due to copy relocation.  By default, linker backend checks if
relocations against protected data symbols are valid for building shared
library and issues an error if relocation isn't allowed.  The new option
override linker backend default.  When -z noextern-protected-data is used,
updates on protected data symbols by another module won't be visibile
to the resulting shared library.  This option is specific to ELF/i386
and ELF/x86-64.

bfd/

PR ld/pr17709
* elflink.c (_bfd_elf_adjust_dynamic_copy): Check
info->extern_protected_data when warning copy relocs against
protected symbols.
(_bfd_elf_symbol_refs_local_p): Check info->extern_protected_data
when checking protected non-function symbols.

include/

PR ld/pr17709
* bfdlink.h (bfd_link_info): Add extern_protected_data.

ld/

PR ld/pr17709
* ld.texinfo: Document "-z noextern-protected-data".
* ldmain.c (main): Initialize link_info.extern_protected_data
to -1.
* lexsup.c (elf_shlib_list_options): Add
"-z [no]extern-protected-data".
* emulparams/elf32_x86_64.sh: Source extern_protected_data.sh.
* emulparams/elf_i386.sh: Likewise.
* emulparams/elf_i386_be.sh: Likewise.
* emulparams/elf_i386_chaos.sh: Likewise.
* emulparams/elf_i386_ldso.sh: Likewise.
* emulparams/elf_i386_vxworks.sh: Likewise.
* emulparams/elf_k1om.sh: Likewise.
* emulparams/elf_l1om.sh: Likewise.
* emulparams/elf_x86_64.sh: Source extern_protected_data.sh.
(PARSE_AND_LIST_OPTIONS): Renamed to ...
(PARSE_AND_LIST_OPTIONS_BNDPLT): This.
(PARSE_AND_LIST_ARGS_CASE_Z): Renamed to ...
(PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT): This.
(PARSE_AND_LIST_OPTIONS): Append $PARSE_AND_LIST_OPTIONS_BNDPLT.
(PARSE_AND_LIST_ARGS_CASE_Z): Append
$PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT.
* emulparams/extern_protected_data.sh: New file.

ld/testsuite/

PR ld/pr17709
* ld-i386/i386.exp: Run protected6b.
* ld-i386/protected6b.d: New file.
* ld-x86-64/protected6b.d: Likewise.
* ld-x86-64/x86-64.exp:  Run protected6b.

9 years agosim: ppc: fix up version script
Mike Frysinger [Tue, 14 Apr 2015 03:16:46 +0000 (23:16 -0400)]
sim: ppc: fix up version script

The common sim code has switched to using gdb directly; update the
ppc copy too.

9 years agoAutomatic date update in version.in
GDB Administrator [Tue, 14 Apr 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years ago * MAINTAINERS: Update my email address.
Stan Shebs [Fri, 10 Apr 2015 18:06:52 +0000 (11:06 -0700)]
    * MAINTAINERS: Update my email address.

diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index a67a1a8..0fdd8e5 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -156,7 +156,7 @@ Doug Evans                  dje@google.com
 Daniel Jacobowitz              drow@false.org
 Mark Kettenis                  kettenis@gnu.org
 Yao Qi                         yao.qi@arm.com
-Stan Shebs                     stan@codesourcery.com
+Stan Shebs                     stanshebs@google.com
 Ulrich Weigand                 Ulrich.Weigand@de.ibm.com
 Elena Zannoni                  elena.zannoni@oracle.com
 Eli Zaretskii                  eliz@gnu.org
@@ -631,7 +631,7 @@ Keith Seitz                                 keiths@redhat.com
 Carlos Eduardo Seo                             cseo@linux.vnet.ibm.com
 Ozkan Sezer                                    sezeroz@gmail.com
 Marcus Shawcroft                               marcus.shawcroft@arm.com
-Stan Shebs                                     stan@codesourcery.com
+Stan Shebs                                     stanshebs@google.com
 Joel Sherrill                                  joel.sherrill@oarcorp.com
 Mark Shinwell                                  shinwell@codesourcery.com
 Craig Silverstein                              csilvers@google.com

9 years agoAdd support for the x86 XSAVE extended state on FreeBSD/x86.
John Baldwin [Sat, 21 Feb 2015 21:43:30 +0000 (16:43 -0500)]
Add support for the x86 XSAVE extended state on FreeBSD/x86.

Recognize NT_X86_XSTATE notes in FreeBSD process cores.  Recent
FreeBSD versions include a note containing the XSAVE state for each
thread in the process when XSAVE is in use.  The note stores a copy of
the current XSAVE mask in a reserved section of the machine-defined
XSAVE state at the same offset as Linux's NT_X86_XSTATE note.

For native processes, use the PT_GETXSTATE_INFO ptrace request to
determine if XSAVE is enabled, and if so the active XSAVE state mask
(that is, the value of %xcr0 for the target process) as well as the
size of XSAVE state area.  Use the PT_GETXSTATE and PT_SETXSTATE requests
to fetch and store the XSAVE state, respectively, in the BSD x86
native targets.

In addition, the FreeBSD amd64 and i386 native targets now include
"read_description" target methods to determine the correct x86 target
description for the current XSAVE mask.  On FreeBSD amd64 this also
properly returns an i386 target description for 32-bit binaries which
allows the 64-bit GDB to run 32-bit binaries.

Note that the ptrace changes are in the BSD native targets, not the
FreeBSD-specific native targets since that is where the other ptrace
register accesses occur.  Of the other BSDs, NetBSD and DragonFly use
XSAVE in the kernel but do not currently export the extended state via
ptrace(2).  OpenBSD does not currently support XSAVE.

bfd/ChangeLog:

* elf.c (elfcore_grok_note): Recognize NT_X86_XSTATE on
FreeBSD.
(elfcore_write_xstatereg): Use correct note name on FreeBSD.

gdb/ChangeLog:

* amd64-tdep.c (amd64_target_description): New function.
* amd64-tdep.h: Export amd64_target_description and tdesc_amd64.
* amd64bsd-nat.c [PT_GETXSTATE_INFO]: New variable amd64bsd_xsave_len.
(amd64bsd_fetch_inferior_registers) [PT_GETXSTATE_INFO]: Handle
x86 extended save area.
(amd64bsd_store_inferior_registers) [PT_GETXSTATE_INFO]: Likewise.
* amd64bsd-nat.h: Export amd64bsd_xsave_len.
* amd64fbsd-nat.c (amd64fbsd_read_description): New function.
(_initialize_amd64fbsd_nat): Set "to_read_description" to
"amd64fbsd_read_description".
* amd64fbsd-tdep.c (amd64fbsd_core_read_description): New function.
(amd64fbsd_supply_xstateregset): New function.
(amd64fbsd_collect_xstateregset): New function.
Add "amd64fbsd_xstateregset".
(amd64fbsd_iterate_over_regset_sections): New function.
(amd64fbsd_init_abi): Set "xsave_xcr0_offset" to
"I386_FBSD_XSAVE_XCR0_OFFSET".
Add "iterate_over_regset_sections" gdbarch method.
Add "core_read_description" gdbarch method.
* i386-tdep.c (i386_target_description): New function.
* i386-tdep.h: Export i386_target_description and tdesc_i386.
* i386bsd-nat.c [PT_GETXSTATE_INFO]: New variable i386bsd_xsave_len.
(i386bsd_fetch_inferior_registers) [PT_GETXSTATE_INFO]: Handle
x86 extended save area.
(i386bsd_store_inferior_registers) [PT_GETXSTATE_INFO]: Likewise.
* i386bsd-nat.h: Export i386bsd_xsave_len.
* i386fbsd-nat.c (i386fbsd_read_description): New function.
(_initialize_i386fbsd_nat): Set "to_read_description" to
"i386fbsd_read_description".
* i386fbsd-tdep.c (i386fbsd_core_read_xcr0): New function.
(i386fbsd_core_read_description): New function.
(i386fbsd_supply_xstateregset): New function.
(i386fbsd_collect_xstateregset): New function.
Add "i386fbsd_xstateregset".
(i386fbsd_iterate_over_regset_sections): New function.
(i386fbsd4_init_abi): Set "xsave_xcr0_offset" to
"I386_FBSD_XSAVE_XCR0_OFFSET".
Add "iterate_over_regset_sections" gdbarch method.
Add "core_read_description" gdbarch method.
* i386fbsd-tdep.h: New file.

9 years agoFix reading of .debug_str_offsets{,.dwo} twice.
Doug Evans [Mon, 13 Apr 2015 19:50:17 +0000 (12:50 -0700)]
Fix reading of .debug_str_offsets{,.dwo} twice.

PR binutils/18218
* readelf.c (printable_section_name): Constify sec argument.
(apply_relocations): Ditto.  New arg "size".  All callers updated.
(load_specific_debug_section): Constify sec argument.
Remove side-effect of modifying sec->sh_size.

9 years agoHarden gdb.base/bp-permanent.exp
Luis Machado [Mon, 13 Apr 2015 17:45:56 +0000 (14:45 -0300)]
Harden gdb.base/bp-permanent.exp

This testcase does not work as expected in QEMU (aarch64 QEMU in my case). It
fails when trying to manually write the breakpoint instruction to a certain
PC address.

(gdb) p /x addr_bp[0] = buffer[0]^M
Cannot access memory at address 0x400834^M
(gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[0] = buffer[0]
p /x addr_bp[1] = buffer[1]^M
Cannot access memory at address 0x400835^M
(gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[1] = buffer[1]
p /x addr_bp[2] = buffer[2]^M
Cannot access memory at address 0x400836^M
(gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[2] = buffer[2]
p /x addr_bp[3] = buffer[3]^M
Cannot access memory at address 0x400837^M
(gdb) PASS: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: setup: p /x addr_bp[3] = buffer[3]

The following patch prevents a number of failures by detecting this and bailing out in case the target has such a restriction. Writing to .text from within the program isn't any better. It just leads to a SIGSEGV.

Before the patch:

                === gdb Summary ===

After the patch:

                === gdb Summary ===

gdb/testsuite/ChangeLog:
2015-04-13  Luis Machado  <lgustavo@codesourcery.com>

* gdb.base/bp-permanent.exp (test): Handle the case of being unable
to write to the .text section.

9 years agoHarden gdb.base/coredump-filter.exp
Luis Machado [Mon, 13 Apr 2015 17:42:48 +0000 (14:42 -0300)]
Harden gdb.base/coredump-filter.exp

This testcase seems to assume the target is running Linux, so bare metal,
simulators and other debugging stubs running different OS' will have a
hard time executing some of the commands the testcase issues.

Even restricting the testcase to Linux systems (which the patch below does),
there are still problems with, say, QEMU not providing PID information when
"info inferior" is issued. As a consequence, the subsequent tests will either
fail or will not make much sense.

The attached patch checks if PID information is available. If not, it just
bails out and avoids running into a number of failures.

gdb/testsuite/ChangeLog:
2015-04-13  Luis Machado  <lgustavo@codesourcery.com>

* gdb.base/coredump-filter.exp: Restrict test to Linux systems only.
Handle the case of targets that do not provide PID information.