binutils-gdb.git
9 years ago[AARCH64]Fix "align directive causes MAP_DATA symbol to be lost"
Renlin Li [Wed, 25 Mar 2015 12:33:07 +0000 (12:33 +0000)]
[AARCH64]Fix "align directive causes MAP_DATA symbol to be lost"

gas/ChangeLog:

2015-03-25  Renlin Li  <renlin.li@arm.com>

  * config/tc-aarch64.c (mapping_state): Remove first MAP_DATA emitting code.
  (mapping_state_2): Emit first MAP_DATA symbol here.

9 years agoSimplify target_async hook interface
Pedro Alves [Wed, 25 Mar 2015 11:28:31 +0000 (11:28 +0000)]
Simplify target_async hook interface

All callers of target_async pass it the same callback
(inferior_event_handler).  Since both common code and target backends
need to be able to put the target in and out of target async mode at
any given time, there's really no way that a different callback could
be passed.  This commit simplifies things, and removes the indirection
altogether.  Bonus: with this, gdb's target_async method ends up with
the same signature as gdbserver's.

Tested on x86_64 Fedora 20, native and gdbserver.

gdb/ChangeLog:
2015-03-25  Pedro Alves  <palves@redhat.com>

* target.h <to_async>: Replace 'callback' and 'context' parameters
with boolean 'enable' parameter.
(target_async): Replace CALLBACK and CONTEXT parameters with
boolean ENABLE parameter.
* inf-loop.c (inferior_event_handler): Adjust.
* linux-nat.c (linux_nat_attach, linux_nat_resume)
(linux_nat_resume): Adjust.
(async_client_callback, async_client_context): Delete.
(handle_target_event): Call inferior_event_handler directly.
(linux_nat_async): Replace 'callback' and 'context' parameters
with boolean 'enable' parameter.  Adjust.  Remove references to
async_client_callback and async_client_context.
(linux_nat_close): Adjust.
* record-btrace.c (record_btrace_async): Replace 'callback' and
'context' parameters with boolean 'enable' parameter.  Adjust.
(record_btrace_resume): Adjust.
* record-full.c (record_full_async): Replace 'callback' and
'context' parameters with boolean 'enable' parameter.  Adjust.
(record_full_resume, record_full_core_resume): Adjust.
* remote.c (struct remote_state) <async_client_callback,
async_client_context>: Delete fields.
(remote_start_remote, extended_remote_attach_1, remote_resume)
(extended_remote_create_inferior): Adjust.
(remote_async_serial_handler): Call inferior_event_handler
directly.
(remote_async): Replace 'callback' and 'context' parameters with
boolean 'enable' parameter.  Adjust.
* top.c (gdb_readline_wrapper_cleanup, gdb_readline_wrapper):
Adjust.
* target-delegates.c: Regenerate.

9 years agoAssociate target_ops with target_fileio file descriptors
Gary Benson [Wed, 25 Mar 2015 11:26:43 +0000 (11:26 +0000)]
Associate target_ops with target_fileio file descriptors

Various target_fileio_* functions use integer file descriptors to
refer to open files.  File operation functions are looked up from
the target stack as they are used, which causes problems if the
target stack changes after the file is opened.

For example, if a file is opened on a remote target and the remote
target disconnects or closes the remote target will be popped off
the stack.  If target_fileio_close is then called on that file and
"set auto-connect-native-target" is "on" (the default) then the
native target's close method will be called.  If the file opened
on the remote happens to share the same number with a file open in
GDB then that file will be closed by mistake.

This commit changes target_fileio_open to store newly opened file
descriptors in a table together with the target_ops used to open
them.  The index into the table is returned and used as the file
descriptor argument to all target_fileio_* functions that accept
file descriptor arguments.

gdb/ChangeLog:

* target.c (fileio_ft_t): New typedef, define object vector.
(fileio_fhandles): New static variable.
(is_closed_fileio_fh): New macro.
(lowest_closed_fd): New static variable.
(acquire_fileio_fd): New function.
(release_fileio_fd): Likewise.
(fileio_fd_to_fh): New macro.
(target_fileio_open): Wrap the file descriptor on success.
(target_fileio_pwrite): Updated to use wrapped file descriptor.
(target_fileio_pread): Likewise.
(target_fileio_close): Likewise.

9 years agoGarbage collecting debug sections
Senthil Kumar Selvaraj [Tue, 24 Mar 2015 13:48:04 +0000 (19:18 +0530)]
Garbage collecting debug sections

I noticed that _bfd_elf_gc_mark_extra_sections attempts to unmark
related debug sections when it finds an unmarked code section.
When it finds .text.foo is unmarked, for example, it removes
.debug_line.text.foo as well (using the section name as a suffix
match check.

However, it bails out after finding one such section.

bfd/
* elflink.c (_bfd_elf_gc_mark_extra_sections): Don't break on
first matching debug section.
ld/testsuite/
* ld-gc/all-debug-sections.d: New file.
* ld-gc/all-debug-sections.s: Likewise.
* ld-gc/gc.exp: Execute new testcase.

9 years agoDon't write the zlib header if not used
H.J. Lu [Wed, 25 Mar 2015 02:06:22 +0000 (19:06 -0700)]
Don't write the zlib header if not used

No need to write the zlib header if compression didn't make the section
smaller.

PR gas/18087
* write.c (compress_debug): Don't write the zlib header if
compression didn't make the section smaller.

9 years agoAutomatic date update in version.in
GDB Administrator [Wed, 25 Mar 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoFix "thread apply all" with exited threads
Pedro Alves [Tue, 24 Mar 2015 21:01:29 +0000 (21:01 +0000)]
Fix "thread apply all" with exited threads

I noticed that "thread apply all" sometimes crashes.

The problem is that thread_apply_all_command doesn take exited threads
into account, and we qsort and then walk more elements than there
really ever were put in the array.  Valgrind shows:

 The current thread <Thread ID 3> has terminated.  See `help thread'.
 (gdb) thread apply all p 1

 Thread 1 (Thread 0x7ffff7fc2740 (LWP 29579)):
 $1 = 1
 ==29576== Use of uninitialised value of size 8
 ==29576==    at 0x639CA8: set_thread_refcount (thread.c:1337)
 ==29576==    by 0x5C2C7B: do_my_cleanups (cleanups.c:155)
 ==29576==    by 0x5C2CE8: do_cleanups (cleanups.c:177)
 ==29576==    by 0x63A191: thread_apply_all_command (thread.c:1477)
 ==29576==    by 0x50374D: do_cfunc (cli-decode.c:105)
 ==29576==    by 0x506865: cmd_func (cli-decode.c:1893)
 ==29576==    by 0x7562CB: execute_command (top.c:476)
 ==29576==    by 0x647DA4: command_handler (event-top.c:494)
 ==29576==    by 0x648367: command_line_handler (event-top.c:692)
 ==29576==    by 0x7BF7C9: rl_callback_read_char (callback.c:220)
 ==29576==    by 0x64784C: rl_callback_read_char_wrapper (event-top.c:171)
 ==29576==    by 0x647CB5: stdin_event_handler (event-top.c:432)
 ==29576==
 ...

This can happen easily today as linux-nat.c/linux-thread-db.c are
forgetting to purge non-current exited threads.  But even with that
fixed, we can always do "thread apply all" with an exited thread
selected, which won't be deleted until the user switches to another
thread.  That's what the test added by this commit exercises.

Tested on x86_64 Fedora 20.

gdb/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* thread.c (thread_apply_all_command): Take exited threads into
account.

gdb/testsuite/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* gdb.threads/no-unwaited-for-left.exp: Test "thread apply all".

9 years agoDon't write the zlib header if not used
H.J. Lu [Tue, 24 Mar 2015 20:27:52 +0000 (13:27 -0700)]
Don't write the zlib header if not used

No need to write the zlib header if compression didn't make the section
smaller.

PR binutils/18087
* compress.c (bfd_compress_section_contents): Don't write the
zlib header and set contents as well as compress_status if
compression didn't make the section smaller.
(bfd_init_section_compress_status): Don't check compression
size here.

9 years agoFix switch_back_to_stepped_thread comment references
Pedro Alves [Tue, 24 Mar 2015 14:24:54 +0000 (14:24 +0000)]
Fix switch_back_to_stepped_thread comment references

Whoops, switch_back_to_stepping doesn't exist...

gdb/
2015-03-24  Pedro Alves  <palves@redhat.com>

* infrun.c (resume, proceed): Mention
switch_back_to_stepped_thread, not switch_back_to_stepping.

9 years agoShuffle user_visible_resume_ptid
Pedro Alves [Tue, 24 Mar 2015 14:24:53 +0000 (14:24 +0000)]
Shuffle user_visible_resume_ptid

... and move comment to declaration.

gdb/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* infrun.c (user_visible_resume_ptid): Rewrite going from
most-locked to unlocked instead of the opposite.  Move comment ...
* infrun.h (user_visible_resume_ptid): ... here.

9 years agoDebug output tweaks in the Linux target backends
Pedro Alves [Tue, 24 Mar 2015 18:31:51 +0000 (18:31 +0000)]
Debug output tweaks in the Linux target backends

This adds/tweaks a few debug logs I found useful recently.

gdb/gdbserver/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* linux-low.c (check_stopped_by_breakpoint): Tweak debug log
output.  Also dump TRAP_TRACE.
(linux_low_filter_event): In debug output, distinguish a
resume_stop SIGSTOP from a delayed SIGSTOP.

gdb/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* linux-nat.c (linux_nat_resume): Output debug logs before trying
to resume the event lwp.  Use the lwp's ptid instead of the passed
in (maybe wildcard) ptid.
(stop_wait_callback): Tweak debug log output.
(check_stopped_by_breakpoint): Tweak debug log output.  Also dump
TRAP_TRACE.
(linux_nat_filter_event): In debug output, distinguish a
resume_stop SIGSTOP from a delayed SIGSTOP.  Output debug logs
before trying to resume the lwp.

9 years agoDo not make "prop" field of struct dynamic_prop_list a pointer.
Joel Brobecker [Tue, 24 Mar 2015 18:14:13 +0000 (11:14 -0700)]
Do not make "prop" field of struct dynamic_prop_list a pointer.

struct dynamic_prop_list is declared as follow:

    struct dynamic_prop_list
    {
      [...]
      /* The dynamic property itself.  */
      struct dynamic_prop *prop;
      [...]
    };

In this case, the pointer indirection is unnecessary and costing us,
for each dynamic property, the memory needed to store one pointer.
This patch removes this pointer indirection, savin us a tiny bit of
memory, as well as reduces a bit the complexity by removing the need
to allocate memory for the property, as the allocation is now part
of the struct itself.

gdb/ChangeLog:

        * gdbtypes.h (struct dynamic_prop_list) <prop>: Remove
        pointer indirection.
        * gdbtypes.c (get_dyn_prop): Adjust, following change above.
        (add_dyn_prop, copy_dynamic_prop_list): Likewise.

Tested on x86_64-linux.

9 years agoGDB: rename DYN_ATTR_DATA_LOCATION into DYN_PROP_DATA_LOCATION.
Joel Brobecker [Tue, 24 Mar 2015 18:03:21 +0000 (11:03 -0700)]
GDB: rename DYN_ATTR_DATA_LOCATION into DYN_PROP_DATA_LOCATION.

The terminology we've been using is (dynamic) "property" rather than
"attribute", so this patch renames an enum to use the same terminology.

No behavior change.

gdb/ChangeLog:

        * gdbtypes.h (enum dynamic_prop_node_kind) <DYN_PROP_DATA_LOCATION>:
        Renames DYN_ATTR_DATA_LOCATION.
        (TYPE_DATA_LOCATION): Use DYN_PROP_DATA_LOCATION instead of
        DYN_ATTR_DATA_LOCATION.
        * dwarf2read.c (set_die_type): Use DYN_PROP_DATA_LOCATION
        instead of DYN_ATTR_DATA_LOCATION.

Tested on x86_64-linux.

9 years agoRemove 'step' parameters from 'proceed' and 'resume'
Pedro Alves [Tue, 24 Mar 2015 17:50:31 +0000 (17:50 +0000)]
Remove 'step' parameters from 'proceed' and 'resume'

The "step" parameters of 'proceed' and 'resume' aren't really useful
as indication of whether run control wants to single-step the target,
as that information must already be retrievable from
currently_stepping.  In fact, if currently_stepping disagrees with
whether we single-stepped the target, then things break.  Thus instead
of having the same information in two places, this patch removes those
parameters.

Setting 'step_start_function' is the only user of proceed's 'step'
argument, other than passing the 'step' argument down to 'resume' and
debug log output.  Move that instead to set_step_frame, where we
already set other related fields.

clear_proceed_status keeps its "step" parameter for now because it
needs to know which set of threads should have their state cleared,
and is called before the "stepping_command" flag is set.

Tested on x86_64 Fedora 20, native and gdbserver.

gdb/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* breakpoint.c (until_break_command): Adjust call to proceed.
* gdbthread.h (struct thread_control_state) <stepping_command>:
New field.
* infcall.c (run_inferior_call): Adjust call to proceed.
* infcmd.c (run_command_1, proceed_thread_callback, continue_1):
Adjust calls to proceed.
(set_step_frame): Set the current thread's step_start_function
here.
(step_once): Adjust calls to proceed.
(jump_command, signal_command, until_next_command)
(finish_backward, finish_forward, proceed_after_attach_callback)
(attach_command_post_wait): Adjust calls to proceed.
* infrun.c (proceed_after_vfork_done): Adjust call to proceed.
(do_target_resume): New function, factored out from ...
(resume): ... here.  Remove 'step' parameter.  Instead, check
currently_stepping to determine whether the thread should be
single-stepped.
(proceed): Remove 'step' parameter and don't set the thread's
step_start_function here.  Adjust call to 'resume'.
(handle_inferior_event): Adjust calls to 'resume'.
(switch_back_to_stepped_thread): Use do_target_resume instead of
'resume'.
(keep_going): Adjust calls to 'resume'.
* infrun.h (proceed): Remove 'step' parameter.
(resume): Likewise.
* windows-nat.c (do_initial_windows_stuff): Adjust call to
'resume'.
* mi/mi-main.c (proceed_thread): Adjust call to 'proceed'.

9 years agoMake "set scheduler-locking step" depend on user intention, only
Pedro Alves [Tue, 24 Mar 2015 17:50:31 +0000 (17:50 +0000)]
Make "set scheduler-locking step" depend on user intention, only

Currently, "set scheduler-locking step" is a bit odd.  The manual
documents it as being optimized for stepping, so that focus of
debugging does not change unexpectedly, but then it says that
sometimes other threads may run, and thus focus may indeed change
unexpectedly...  A user can then be excused to get confused and wonder
why does GDB behave like this.

I don't think a user should have to know about details of how "next"
or whatever other run control command is implemented internally to
understand when does the "scheduler-locking step" setting take effect.

This patch completes a transition that the code has been moving
towards for a while.  It makes "set scheduler-locking step" hold
threads depending on whether the _command_ the user entered was a
stepping command [step/stepi/next/nexti], or not.

Before, GDB could end up locking threads even on "continue" if for
some reason run control decides a thread needs to be single stepped
(e.g., for a software watchpoint).

After, if a "continue" happens to need to single-step for some reason,
we won't lock threads (unless when stepping over a breakpoint,
naturally).  And if a stepping command wants to continue a thread for
bit, like when skipping a function to a step-resume breakpoint, we'll
still lock threads, so focus of debugging doesn't change.

In order to make this work, we need to record in the thread structure
whether what set it running was a stepping command.

(A follow up patch will remove the "step" parameters of 'proceed' and 'resume')

FWIW, Fedora GDB, which defaults to "scheduler-locking step" (mainline
defaults to "off") carries a different patch that goes in this
direction as well.

Tested on x86_64 Fedora 20, native and gdbserver.

gdb/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* gdbthread.h (struct thread_control_state) <stepping_command>:
New field.
* infcmd.c (step_once): Pass step=1 to clear_proceed_status.  Set
the thread's stepping_command field.
* infrun.c (resume): Check the thread's stepping_command flag to
determine which threads should be resumed.  Rename 'entry_step'
local to user_step.
(clear_proceed_status_thread): Clear 'stepping_command'.
(schedlock_applies): Change parameter type to struct thread_info
pointer.  Adjust.
(find_thread_needs_step_over): Remove 'step' parameter.  Adjust.
(switch_back_to_stepped_thread): Adjust calls to
'schedlock_applies'.
(_initialize_infrun): Adjust "set scheduler-locking step" help.

gdb/testsuite/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* gdb.threads/schedlock.exp (test_step): No longer expect that
"set scheduler-locking step" with "next" over a function call runs
threads unlocked.

gdb/doc/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* gdb.texinfo (test_step) <set scheduler-locking step>: No longer
mention that threads may sometimes run unlocked.

9 years agoMake step_start_function be per thread
Pedro Alves [Tue, 24 Mar 2015 17:50:30 +0000 (17:50 +0000)]
Make step_start_function be per thread

I noticed that step_start_function is still a global, while it
obviously should be a per-thread field.

gdb/ChangeLog:
2015-03-24  Pedro Alves  <palves@redhat.com>

* infrun.c (step_start_function): Delete and ...
* gdbthread.h (struct thread_control_state) <step_start_function>:
... now a field here.
* infrun.c (clear_proceed_status_thread): Clear the thread's
step_start_function.
(proceed, process_event_stop_test, print_stop_event): Adjust.

9 years agoNo longer handle negative 'step' in 'proceed'
Pedro Alves [Tue, 24 Mar 2015 17:50:29 +0000 (17:50 +0000)]
No longer handle negative 'step' in 'proceed'

Nothing ever passes a negative 'step' to proceed.
Gets rid of one of the few remaining stop_after_trap references.

gdb/ChangeLog
2015-03-24  Pedro Alves  <palves@redhat.com>

* infrun.c (proceed): No longer handle negative step.

9 years agoFix mi-pending.exp test output to allow stable test diffing
Antoine Tremblay [Tue, 24 Mar 2015 17:28:42 +0000 (13:28 -0400)]
Fix mi-pending.exp test output to allow stable test diffing

gdb/testsuite/ChangeLog:

* gdb.mi/mi-pending.exp: Fix output of breakpoint test.

9 years agoFixes a bug introduced by the new ranges checks on COFF symbol tables.
Nick Clifton [Tue, 24 Mar 2015 17:20:00 +0000 (17:20 +0000)]
Fixes a bug introduced by the new ranges checks on COFF symbol tables.

PR binutils/17512
* coffgen.c (coff_get_normalized_symtab): Fix test for out of
range auxillary sections.

9 years ago[AArch64] Factor out _bfd_aarch64_get_stub_for_link_section.
Marcus Shawcroft [Mon, 2 Mar 2015 12:11:40 +0000 (12:11 +0000)]
[AArch64] Factor out _bfd_aarch64_get_stub_for_link_section.

9 years ago[AArch64] Refactor section_group[] representation.
Marcus Shawcroft [Sat, 28 Feb 2015 00:17:22 +0000 (00:17 +0000)]
[AArch64] Refactor section_group[] representation.

Change the behaviour of section_group[] such that .stub_sec points to
the stub section attached to the indexed section rather than the stub
section attached to the link_section pointed to be the index section.

This provides a mechanism to get to the stub section following any
input section.  While still allowing the section grouping mechanism to
find the section group stub section associated with an input section
by first following the link_sec pointer.

9 years agoMove duplicated Linux x86 code to nat/x86-linux.c
Gary Benson [Tue, 24 Mar 2015 14:05:45 +0000 (14:05 +0000)]
Move duplicated Linux x86 code to nat/x86-linux.c

This commit moves two identical functions from gdb/x86-linux-nat.c and
gdb/gdbserver/linux-x86-low.c into the shared file gdb/nat/x86-linux.c.

gdb/ChangeLog:

* nat/x86-linux.h (x86_linux_new_thread): New declaration.
(x86_linux_prepare_to_resume): Likewise.
* x86-linux-nat.c (x86_linux_new_thread):
Moved to nat/x86-linux.c.
(x86_linux_prepare_to_resume): Likewise.
* nat/x86-linux.c (x86_linux_new_thread): New function.
(x86_linux_prepare_to_resume): Likewise.

gdb/gdbserver/ChangeLog:

* linux-x86-low.c (x86_linux_new_thread): Moved to
nat/x86-linux.c.
(x86_linux_prepare_to_resume): Likewise.

9 years agoMove low-level Linux x86 debug register code to a shared file
Gary Benson [Tue, 24 Mar 2015 14:05:45 +0000 (14:05 +0000)]
Move low-level Linux x86 debug register code to a shared file

This commit moves the now-identical low-level Linux x86 debug register
code from gdb/x86-linux-nat.c and gdb/gdbserver/linux-x86-low.c into a
new shared file gdb/nat/x86-linux-dregs.c.

gdb/ChangeLog:

* nat/x86-linux-dregs.h: New file.
* nat/x86-linux-dregs.c: Likewise.
* Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux-dregs.h.
(x86-linux-dregs.o): New rule.
* config/i386/linux.mh (NATDEPFILES): Add x86-linux-dregs.o.
* config/i386/linux64.mh (NATDEPFILES): Likewise.
* x86-linux-nat.c: Include nat/x86-linux-dregs.h.
(u_debugreg_offset): Moved to nat/x86-linux-dregs.c.
(x86_linux_dr_get): Likewise.
(x86_linux_dr_set): Likewise.
(x86_linux_dr_get_addr): Likewise.
(x86_linux_dr_get_control): Likewise.
(x86_linux_dr_get_status): Likewise.
(update_debug_registers_callback): Likewise.
(x86_linux_dr_set_control): Likewise.
(x86_linux_dr_set_addr): Likewise.
(x86_linux_update_debug_registers): Likewise.

gdb/gdbserver/ChangeLog:

* Makefile.in (x86-linux-dregs.o): New rule.
* configure.srv: Add x86-linux-dregs.o to relevant targets.
* linux-x86-low.c: Include nat/x86-linux-dregs.h.
(u_debugreg_offset): Moved to nat/x86-linux-dregs.c.
(x86_linux_dr_get): Likewise.
(x86_linux_dr_set): Likewise.
(update_debug_registers_callback): Likewise.
(x86_linux_dr_set_addr): Likewise.
(x86_linux_dr_get_addr): Likewise.
(x86_linux_dr_set_control): Likewise.
(x86_linux_dr_get_control): Likewise.
(x86_linux_dr_get_status): Likewise.
(x86_linux_update_debug_registers): Likewise.

9 years agoIntroduce x86_linux_update_debug_registers
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Introduce x86_linux_update_debug_registers

This commit moves the entire body of both GDB's and gdbserver's
x86_linux_prepare_to_resume functions into new functions,
x86_linux_update_debug_registers.  This reorganisation allows
all Linux x86 low-level debug register code to be placed in one
shared file, separate from general Linux x86 shared code.

gdb/ChangeLog:

* x86-linux-nat.c (x86_linux_update_debug_registers):
New function, factored out from...
(x86_linux_prepare_to_resume): ...this.

gdb/gdbserver/ChangeLog:

* linux-x86-low.c (x86_linux_update_debug_registers):
New function, factored out from...
(x86_linux_prepare_to_resume): ...this.

9 years agoLinux x86 low-level debug register comment synchronization
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Linux x86 low-level debug register comment synchronization

This commit updates comments in the low-level debug register code for
Linux x86, making GDB's and gdbserver's implementations identical.

gdb/ChangeLog:

* x86-linux-nat.c (x86_linux_dr_get): Update comments.
(x86_linux_dr_set): Likewise.
(x86_linux_dr_get_addr): Likewise.
(x86_linux_dr_get_control): Likewise.
(x86_linux_dr_get_status): Likewise.
(update_debug_registers_callback): Likewise.
(x86_linux_dr_set_control): Likewise.
(x86_linux_dr_set_addr): Likewise.
(x86_linux_prepare_to_resume): Likewise.
(x86_linux_new_thread): Likewise.

gdb/gdbserver/ChangeLog:

* linux-x86-low.c (x86_linux_dr_get): Update comments.
(x86_linux_dr_set): Likewise.
(update_debug_registers_callback): Likewise.
(x86_linux_dr_set_addr): Likewise.
(x86_linux_dr_get_addr): Likewise.
(x86_linux_dr_set_control): Likewise.
(x86_linux_dr_get_control): Likewise.
(x86_linux_dr_get_status): Likewise.
(x86_linux_prepare_to_resume): Likewise.

9 years agoLinux x86 low-level debug register code synchronization
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Linux x86 low-level debug register code synchronization

This commit makes several small changes to the low-level debug
register code for Linux x86, making the code in the GDB and
gdbserver implementations identical.

gdb/ChangeLog:

* x86-linux-nat.c (x86_linux_dr_set_addr): Update assertion.
(x86_linux_new_thread): Rename argument.

gdb/gdbserver/ChangeLog:

* linux-x86-low.c (x86_linux_dr_get): Add assertion.
Use perror_with_name.  Pass string through gettext.
(x86_linux_dr_set): Likewise.

9 years agoRename gdbserver's low-level Linux x86 debug register accessors
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Rename gdbserver's low-level Linux x86 debug register accessors

This commit renames gdbserver's low-level Linux x86 debug register
accessors to the same names used by GDB.

gdb/gdbserver/ChangeLog:

* linux-x86-low.c (x86_dr_low_set_addr): Rename to...
(x86_linux_dr_set_addr): ...this.
(x86_dr_low_get_addr): Rename to...
(x86_linux_dr_get_addr): ...this.
(x86_dr_low_set_control): Rename to...
(x86_linux_dr_set_control): ...this.
(x86_dr_low_get_control): Rename to...
(x86_linux_dr_get_control): ...this.
(x86_dr_low_get_status): Rename to...
(x86_linux_dr_get_status): ...this.
(x86_dr_low): Update with new function names.

9 years agoMake lwp_info.arch_private handling shared
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Make lwp_info.arch_private handling shared

This commit moves the code to handle lwp_info.arch_private for
Linux x86 into a new shared file, nat/x86-linux.c.

gdb/ChangeLog:

* nat/x86-linux.h: New file.
* nat/x86-linux.c: Likewise.
* Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux.h.
(x86-linux.o): New rule.
* config/i386/linux.mh (NATDEPFILES): Add x86-linux.o.
* config/i386/linux64.mh (NATDEPFILES): Likewise.
* nat/linux-nat.h (struct arch_lwp_info): New forward declaration.
(lwp_set_arch_private_info): New declaration.
(lwp_arch_private_info): Likewise.
* linux-nat.c (lwp_set_arch_private_info): New function.
(lwp_arch_private_info): Likewise.
* x86-linux-nat.c: Include nat/x86-linux.h.
(arch_lwp_info): Removed structure.
(update_debug_registers_callback):
Use lwp_set_debug_registers_changed.
(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
and lwp_set_debug_registers_changed.
(x86_linux_new_thread): Use lwp_set_debug_registers_changed.

gdb/gdbserver/ChangeLog:

* Makefile.in (x86-linux.o): New rule.
* configure.srv: Add x86-linux.o to relevant targets.
* linux-low.c (lwp_set_arch_private_info): New function.
(lwp_arch_private_info): Likewise.
* linux-x86-low.c: Include nat/x86-linux.h.
(arch_lwp_info): Removed structure.
(update_debug_registers_callback):
Use lwp_set_debug_registers_changed.
(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
and lwp_set_debug_registers_changed.
(x86_linux_new_thread): Use lwp_set_debug_registers_changed.

9 years agoChange signature of linux_target_ops.new_thread
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Change signature of linux_target_ops.new_thread

This commit changes the signature of linux_target_ops.new_thread in
gdbserver to match that used in GDB's equivalent.

gdb/gdbserver/ChangeLog:

* linux-low.h (linux_target_ops) <new_thread>: Changed signature.
* linux-arm-low.c (arm_new_thread): Likewise.
* linux-aarch64-low.c (aarch64_linux_new_thread): Likewise.
* linux-mips-low.c (mips_linux_new_thread): Likewise.
* linux-x86-low.c (x86_linux_new_thread): Likewise.
* linux-low.c (add_lwp): Update the_low_target.new_thread call.

9 years agoIntroduce basic LWP accessors
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Introduce basic LWP accessors

This commit introduces three accessors that shared Linux code can
use to access fields of struct lwp_info.  The GDB and gdbserver
Linux x86 code is modified to use them.

gdb/ChangeLog:

* nat/linux-nat.h (ptid_of_lwp): New declaration.
(lwp_is_stopped): Likewise.
(lwp_stop_reason): Likewise.
* linux-nat.c (ptid_of_lwp): New function.
(lwp_is_stopped): Likewise.
(lwp_is_stopped_by_watchpoint): Likewise.
* x86-linux-nat.c (update_debug_registers_callback):
Use lwp_is_stopped.
(x86_linux_prepare_to_resume): Use ptid_of_lwp and
lwp_stop_reason.

gdb/gdbserver/ChangeLog:

* linux-low.c (ptid_of_lwp): New function.
(lwp_is_stopped): Likewise.
(lwp_stop_reason): Likewise.
* linux-x86-low.c (update_debug_registers_callback):
Use lwp_is_stopped.
(x86_linux_prepare_to_resume): Use ptid_of_lwp and
lwp_stop_reason.

9 years agoMake linux_stop_lwp be a shared function
Gary Benson [Tue, 24 Mar 2015 14:05:44 +0000 (14:05 +0000)]
Make linux_stop_lwp be a shared function

Both GDB and gdbserver had linux_stop_lwp functions with identical
declarations.  This commit moves these to nat/linux-nat.h to allow
shared code to use the function.

gdb/ChangeLog:

* linux-nat.h (linux_stop_lwp): Move declaration to...
* nat/linux-nat.h (linux_stop_lwp): New declaration.

gdb/gdbserver/ChangeLog:

* linux-low.h (linux_stop_lwp): Remove declaration.

9 years agoAdd iterate_over_lwps to gdbserver
Gary Benson [Tue, 24 Mar 2015 14:05:43 +0000 (14:05 +0000)]
Add iterate_over_lwps to gdbserver

This commit introduces a new function, iterate_over_lwps, that
shared Linux code can use to call a function for each LWP that
matches certain criteria.  This function already existed in GDB
and was in use by GDB's various low-level Linux x86 debug register
setters.  An equivalent was written for gdbserver and gdbserver's
low-level Linux x86 debug register setters were modified to use
it.

gdb/ChangeLog:

* linux-nat.h: Include nat/linux-nat.h.
(iterate_over_lwps): Move declaration to nat/linux-nat.h.
* nat/linux-nat.h (struct lwp_info): New forward declaration.
(iterate_over_lwps_ftype): New typedef.
(iterate_over_lwps): New declaration.
* linux-nat.h (iterate_over_lwps): Update comment.  Use
iterate_over_lwps_ftype.  Update callback return value check.

gdb/gdbserver/ChangeLog:

* linux-low.h: Include nat/linux-nat.h.
* linux-low.c (iterate_over_lwps_args): New structure.
(iterate_over_lwps_filter): New function.
(iterate_over_lwps): Likewise.
* linux-x86-low.c (update_debug_registers_callback):
Update signature to what iterate_over_lwps expects.
Remove PID check that iterate_over_lwps now performs.
(x86_dr_low_set_addr): Use iterate_over_lwps.
(x86_dr_low_set_control): Likewise.

9 years agoAdd x86_debug_reg_state to gdbserver
Gary Benson [Tue, 24 Mar 2015 14:05:43 +0000 (14:05 +0000)]
Add x86_debug_reg_state to gdbserver

This commit introduces a new function, x86_debug_reg_state, that
shared x86 code can use to access the local mirror of a process's
debug registers.  This function already existed in GDB and was
in use by GDB's x86_linux_prepare_to_resume.  An equivalent was
written for gdbserver and gdbserver's x86_linux_prepare_to_resume
was modified to use it.

gdb/ChangeLog:

* x86-nat.h (x86_debug_reg_state): Move declaration to...
* nat/x86-dregs.h (x86_debug_reg_state): New declaration.

gdb/gdbserver/ChangeLog:

* linux-x86-low.c (x86_debug_reg_state): New function.
(x86_linux_prepare_to_resume): Use the above.

9 years agoIntroduce current_lwp_ptid
Gary Benson [Tue, 24 Mar 2015 14:05:43 +0000 (14:05 +0000)]
Introduce current_lwp_ptid

This commit introduces a new function, current_lwp_ptid, that
shared Linux code can use to obtain the ptid of the current
lightweight process.

gdb/ChangeLog:

* nat/linux-nat.h (current_lwp_ptid): New declaration.
* linux-nat.c (current_lwp_ptid): New function.
* x86-linux-nat.c: Include nat/linux-nat.h.
(x86_linux_dr_get_addr): Use current_lwp_ptid.
(x86_linux_dr_get_control): Likewise.
(x86_linux_dr_get_status): Likewise.
(x86_linux_dr_set_control): Likewise.
(x86_linux_dr_set_addr): Likewise.

gdb/gdbserver/ChangeLog:

* linux-low.c (current_lwp_ptid): New function.
* linux-x86-low.c: Include nat/linux-nat.h.
(x86_dr_low_get_addr): Use current_lwp_ptid.
(x86_dr_low_get_control): Likewise.
(x86_dr_low_get_status): Likewise.

9 years agoFix breakpoint thread condition missing with mi and a pending breakpoint.
Antoine Tremblay [Thu, 19 Feb 2015 20:23:34 +0000 (15:23 -0500)]
Fix breakpoint thread condition missing with mi and a pending breakpoint.

When setting a pending breakpoint with a thread condition while using
the mi interface, the thread condition would be lost by gdb when the breakpoint
was resolved.

This patch fixes this behavior by setting the thread condition properly in the
mi case.

Also, this patch modifies the mi-pending test case to test for this issue and
removes some unneeded code in the testcase and dependency on stdio.

gdb/Changelog:
PR breakpoints/16466
* breakpoint.c (create_breakpoint): Set thread on breakpoint struct.

gdb/testsuite/ChangeLog:
PR breakpoints/16466
* gdb.mi/Makefile.in: Add mi-pendshr2.sl to cleanup.
* gdb.mi/mi-pending.c (thread_func): New function.
(int main): Add threading support required.
* gdb.mi/mi-pending.exp: Add tests for this issue.
* gdb.mi/mi-pendshr.c (pendfunc1): Remove stdio dependency.
(pendfunc2): Remove stdio dependency.
* gdb.mi/mi-pendshr2.c: New file.

9 years ago[AArch64] Refactor generation of 835769 workaround stubs.
Marcus Shawcroft [Fri, 20 Mar 2015 19:08:00 +0000 (19:08 +0000)]
[AArch64] Refactor generation of 835769 workaround stubs.

This patch recognizes that we only need to perform one scan for the
835769 errata and that this scan can take place before we insert
branch stubs.  The erratum scan code is relocated and adjusted to
create stub entries directly rather than populating an intermediate
representation.  Since stub entries are created immediately we can
drop the adhoc stub size adjustment code and allow the generic stub
sizing code to deal with 835769 stub entries.

This patch restructures the code but does not change the workaround
used to deal with erratum 83679, the exact placement of workaround
stubs in the final image may change slightly after this patch due to
stubs being created in a different order.

9 years ago[AArch64] Use _bfd_aarch64_add_stub_entry_in_group.
Marcus Shawcroft [Tue, 24 Mar 2015 11:24:50 +0000 (11:24 +0000)]
[AArch64] Use _bfd_aarch64_add_stub_entry_in_group.

Adjust the 835769 workaround code to use
_bfd_aarch64_add_stub_entry_in_group rather than inspect the
underlying section_group structure directly.

9 years agoMake powerpc bfd ld reloc overflow vs undefined symbols match gold
Alan Modra [Tue, 24 Mar 2015 07:07:57 +0000 (17:37 +1030)]
Make powerpc bfd ld reloc overflow vs undefined symbols match gold

* elf64-ppc.c (ppc64_elf_relocate_section): Report overflow to
stubs, even those for undefined weak symbols.  Otherwise, don't
report relocation overflow on branches to undefined strong
symbols.  Fix memory leak.
* elf32-ppc.c (ppc_elf_relocate_section): Don't report relocation
overflow on branches to undefined strong symbols.

9 years agosim: m68hc11/mips/mn10300/v850: add basic sim_pc_get
Mike Frysinger [Tue, 24 Mar 2015 06:41:51 +0000 (02:41 -0400)]
sim: m68hc11/mips/mn10300/v850: add basic sim_pc_get

The previous profile change broke these sims that use sim-profile but
not sim-cpu (due to missing model support).  Add simple funcs until we
can convert these over properly.

9 years agoPR18147, relocation overflow when --unresolved-symbols=ignore-all
Alan Modra [Tue, 24 Mar 2015 05:16:50 +0000 (15:46 +1030)]
PR18147, relocation overflow when --unresolved-symbols=ignore-all

If ignoring unresolved symbols, ignore reloc overflows too.  If not
ignoring unresolved symbols we will report an error about the symbol
being undefined, making any report about reloc overflow superfluous.

PR18147
* powerpc.cc (Target_powerpc::Relocate::relocate): Don't report
relocation errors for branches to strong undefined symbols.

9 years agoExtend arm_feature_set struct to provide more bits
Terry Guo [Tue, 24 Mar 2015 06:08:08 +0000 (14:08 +0800)]
Extend arm_feature_set struct to provide more bits

gas/ChangeLog:
2015-03-24  Terry Guo  <terry.guo@arm.com>

* config/tc-arm.c (no_cpu_selected): Use new macro to compare
features.
(parse_psr): Likewise.
(do_t_mrs): Likewise.
(do_t_msr): Likewise.
(static const arm_feature_set arm_ext_*): Defined with new
macros.
(static const arm_feature_set arm_cext_*): Likewise.
(static const arm_feature_set fpu_fpa_ext_*): Likewise.
(static const arm_feature_set fpu_vfp_ext_*): Likewise.
(deprecated_coproc_regs): Likewise.
(UL_BARRIER): Likewise.
(barrier_opt_names): Likewise.
(arm_cpus): Likewise.
(arm_extensions): Likewise.

include/opcode/ChangeLog:
2015-03-24  Terry Guo  <terry.guo@arm.com>

* arm.h (arm_feature_set): Extended to provide more available
* bits.
(ARM_ANY): Updated to follow above new definition.
(ARM_CPU_HAS_FEATURE): Likewise.
(ARM_CPU_IS_ANY): Likewise.
(ARM_MERGE_FEATURE_SETS): Likewise.
(ARM_CLEAR_FEATURE): Likewise.
(ARM_FEATURE): Likewise.
(ARM_FEATURE_COPY): New macro.
(ARM_FEATURE_EQUAL): Likewise.
(ARM_FEATURE_ZERO): Likewise.
(ARM_FEATURE_CORE_EQUAL): Likewise.
(ARM_FEATURE_LOW): Likewise.
(ARM_FEATURE_CORE_LOW): Likewise.
(ARM_FEATURE_CORE_COPROC): Likewise.

opcodes/ChangeLog:
2015-03-24  Terry Guo  <terry.guo@arm.com>

* arm-dis.c (opcode32): Updated to use new arm feature struct.
(opcode16): Likewise.
(coprocessor_opcodes): Replace bit with feature struct.
(neon_opcodes): Likewise.
(arm_opcodes): Likewise.
(thumb_opcodes): Likewise.
(thumb32_opcodes): Likewise.
(print_insn_coprocessor): Likewise.
(print_insn_arm): Likewise.
(select_arm_features): Follow new feature struct.

9 years agosim: profile: disconnect from watchpoint core
Mike Frysinger [Mon, 23 Mar 2015 04:24:05 +0000 (00:24 -0400)]
sim: profile: disconnect from watchpoint core

The profile code was using STATE_WATCHPOINTS to get access to the PC, but
we already have a standard method for getting the pc, so switch to that.

This assumes that sizeof_pc is the same size as sim_cia, but we already
assume this in places by way of sim_pc_{get,set}, and this is how it's
documented in the sim-base.h API.

9 years agosim: moxie: clean up build time warnings
Mike Frysinger [Tue, 24 Mar 2015 05:11:20 +0000 (01:11 -0400)]
sim: moxie: clean up build time warnings

9 years agosim: moxie: convert to nrun.o
Mike Frysinger [Mon, 23 Mar 2015 03:59:45 +0000 (23:59 -0400)]
sim: moxie: convert to nrun.o

This port already used a lot of common/ files, so cutting it over to
nrun.o and using a few more common objects is pretty straight forward.

9 years agosim: erc32/h8300/m68hc11: trim unused functions
Mike Frysinger [Mon, 23 Mar 2015 03:16:01 +0000 (23:16 -0400)]
sim: erc32/h8300/m68hc11: trim unused functions

These funcs are only used with the old run.o, and these sims use nrun.o,
so drop these stub funcs.

9 years agosim: moxie: switch to common sim-command.o
Mike Frysinger [Mon, 23 Mar 2015 02:59:47 +0000 (22:59 -0400)]
sim: moxie: switch to common sim-command.o

9 years agosim: clean up SIM_HAVE_BIENDIAN
Mike Frysinger [Mon, 23 Mar 2015 02:55:42 +0000 (22:55 -0400)]
sim: clean up SIM_HAVE_BIENDIAN

This define only applies when using the old run.o main.  Document it as
such, and delete it from mips/sh64 since both use nrun.o now.

9 years agosim: m32r: drop duplicate dv_sockser_install call
Mike Frysinger [Mon, 23 Mar 2015 02:45:47 +0000 (22:45 -0400)]
sim: m32r: drop duplicate dv_sockser_install call

Since sim_module_install takes care of this for us, there's no need
to initialize the module twice.

9 years agosim: Revert "Fix frv/iq2000/m32r/sh64 sim, default hardware to off."
Mike Frysinger [Sat, 14 Mar 2015 20:09:12 +0000 (16:09 -0400)]
sim: Revert "Fix frv/iq2000/m32r/sh64 sim, default hardware to off."

This partially reverts commits:
105dd264de9a2fa7eee45eff897aa1d6171c1c4b
3df3af7c3f9095f9dc951fe680ce76f6e497914b
c4892a6b37647a0b33a2113b59762f678aabe4b2
9e3042ec073e05a0a5aa56398fd2662c5dcd5002

Now that dv-sockser is handled entirely by the common build logic, the
failure these targets were hitting isn't really possible anymore.  Lets
reset their hardware status back to defaulting to on.  Some of these
were set to "always" previously, but we don't support that anymore.

9 years agosim: fix sim-hardware configure option
Mike Frysinger [Tue, 24 Mar 2015 02:19:41 +0000 (22:19 -0400)]
sim: fix sim-hardware configure option

The current default handling for the --enable-sim-hardware option ends up
forcing the value to whatever is set as the first argument when calling
the macro (by virtue of how autoconf works).  Relocate the setup code to
the 4th parameter of the AC_ARG_ENABLE macro to fix it.

This was caused by the simplification work in 1517bd274290e06af498ef7e49.

Reported-by: Hans-Peter Nilsson <hans-peter.nilsson@axis.com>
9 years agosim: drop support for requiring hw support
Mike Frysinger [Tue, 24 Mar 2015 02:45:13 +0000 (22:45 -0400)]
sim: drop support for requiring hw support

Since no sim is using the "always" option to SIM_AC_OPTION_HARDWARE, and
we don't want to require hw support to always be enabled, drop the option.
This leads to a slight simplification in the macro too as we can collapse
the sim_hw_p variable.

9 years agosim: cris: delete unused CONFIG_DEVICES
Mike Frysinger [Tue, 24 Mar 2015 03:09:39 +0000 (23:09 -0400)]
sim: cris: delete unused CONFIG_DEVICES

Looks like unused copy & paste from other sim ports.  Drop it.

9 years agosim: mn10300: fix duplicated hardware option
Mike Frysinger [Mon, 23 Mar 2015 02:41:36 +0000 (22:41 -0400)]
sim: mn10300: fix duplicated hardware option

This code was calling SIM_AC_OPTION_HARDWARE twice -- we only want and
need to do it once.

9 years agosim: iq2000/mn10300: drop dv-sockser.o references
Mike Frysinger [Tue, 24 Mar 2015 02:57:36 +0000 (22:57 -0400)]
sim: iq2000/mn10300: drop dv-sockser.o references

The common code handles this for us now automatically.

9 years agosim: frv: delete UART device support
Mike Frysinger [Tue, 24 Mar 2015 01:51:35 +0000 (21:51 -0400)]
sim: frv: delete UART device support

This looks like copy & paste logic from the m32r port (and history
suggests this as well).  Since building with hw & device support
enabled leads to failures:
sim/frv/devices.c: In function 'device_io_read_buffer':
sim/frv/devices.c:39:15: error: 'UART_INCHAR_ADDR' undeclared (first use in this function)

Delete it entirely.  We leave device support in place as it is used
to flush the scache.

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

9 years agoFix indentation in ser_windows_setparity and hardwire_setparity.
Joel Brobecker [Mon, 23 Mar 2015 22:42:23 +0000 (15:42 -0700)]
Fix indentation in ser_windows_setparity and hardwire_setparity.

gdb/ChangeLog:

        * ser-mingw.c (ser_windows_setparity): Fix indentation.
        * ser-unix.c (hardwire_setparity): Likewise.

9 years agoGDB: Add set/show serial parity command.
Yury Grechishchev [Mon, 23 Mar 2015 21:15:42 +0000 (00:15 +0300)]
GDB: Add set/show serial parity command.

The "set serial parity" command allows the user to control which
parity to use when communicating over a serial connection, rather
than having the parity hardcoded to none.

gdb/ChangeLog:

        * NEWS: Mention set/show serial parity command.
        * monitor.c (monitor_open): Call serial_setparity.
        * remote.c (remote_open_1): Likewise.
        * ser-base.c (ser_base_serparity): New function.
        * ser-base.h (ser_base_setparity): Add  declaration.
        * ser-go32.c (dos_ops): Set "setparity" field.
        * ser-mingw.c (ser_windows_raw): Do not set state.fParity and
        state.Parity.
        (ser_windows_setparity): New function.
        (hardwire_ops): Add ser_windows_setparity.
        (tty_ops): Add NULL for setparity field.
        (pipe_ops): Add ser_base_setparity.
        (tcp_ops): Likewise.
        * ser-pipe.c (pipe_ops): Likewise.
        * ser-tcp.c (tcp_ops): Likewise.
        * ser-unix.c (hardwire_setparity): Add declaration.
        (hardwire_raw): Don't reset PARENB flag.
        (hardwire_setparity): New function.
        (hardwire_ops): Add hardwire_setparity.
        * serial.c (serial_setparity): New function.
        (serial_parity): New global.
        (parity_none, parity_odd, parity_even, parity_enums, parity):
        New static globals.
        (set_parity): New function.
        (_initialize_serial): Add set/show serial parity commands.
        * serial.h (GDBPARITY_NONE): Define.
        (GDBPARITY_ODD): Define.
        (GDBPARITY_EVEN): Define.
        (serial_setparity) Add declaration.
        (struct serial_ops): Add setparity field.
        * target.h (serial_parity): Add declaration.

gdb/doc/ChangeLog:

        * gdb.texinfo (Remote configuration): Document "set/show
        serial parity" command.

9 years agoUpdate comment of linespec_lexer_lex_keyword.
Keith Seitz [Mon, 23 Mar 2015 20:32:01 +0000 (13:32 -0700)]
Update comment of linespec_lexer_lex_keyword.

gdb/ChangeLog

       * linespec.c (linespec_lexer_lex_keyword): Update comment.

9 years agoAdd missing changelog entries of last commit
Keith Seitz [Mon, 23 Mar 2015 20:29:19 +0000 (13:29 -0700)]
Add missing changelog entries of last commit

9 years agoExpand keyword lexing intelligence in the linespec parser.
Keith Seitz [Mon, 23 Mar 2015 19:59:18 +0000 (12:59 -0700)]
Expand keyword lexing intelligence in the linespec parser.

    This patch changes the heuristic the linespec lexer uses to
    detect a keyword in the input stream.

    Currently, the heuristic is: a word is a keyword if it
    1) points to a string that is a keyword
    2) is followed by a non-identifier character

    This is strictly more correct than using whitespace. For example,
    it allows constructs such as "break foo if(i == 1)". However,
    find_condition_and_thread in breakpoint.c does not support this expanded
    usage. It requires whitespace to follow the keyword.

    The proposed new heuristic is: a word is a keyword if it
    1) points to a string that is a keyword
    2) is followed by whitespace
    3) is not followed by another keyword string followed by whitespace

    This additional complexity allows constructs such as
    "break thread thread 3" and "break thread 3".  In the former case,
    the actual location is a symbol named "thread" to be set on thread #3.
    In the later case, the location is NULL, i.e., the default location,
    to be set on thread #3.

    In order to pass all the new tests added here, I've also had to add a
    new feature to parse_breakpoint_sals, which expands recognition of the
    default location to keywords other than "if", which is the only keyword
    currently permitted with the default (NULL) location, but there is no
    reason to exclude other keywords.

    Consequently, it will be possible to use "break thread 1" or
    "break task 1".

    In addition to all of this, it is now possible to remove the keyword_ok
    state from the linespec parser.

    gdb/ChangeLog

     * breakpoint.c (parse_breakpoint_sals): Use
     linespec_lexer_lex_keyword to ascertain if the user specified
     a NULL location.
     * linespec.c [IF_KEYWORD_INDEX]: Define.
     (linespec_lexer_lex_keyword): Export.
     (struct ls_parser) <keyword_ok>: Remove.
     A keyword is only a keyword if not followed by another keyword.
     (linespec_lexer_lex_one): Remove keyword_ok handling.
     Add comment explaining why the parsing stream is not advanced
     when a keyword is seen.
     (parse_linespec): Remove parser->keyword_ok.
     * linespec.h (linespec_lexer_lex_keyword): Add declaration.

    gdb/testsuite/ChangeLog

     * gdb.linespec/keywords.c: New file.
     * gdb.linespec/keywords.exp: New file.

9 years agoPR gdb/18021 - defend against "static virtual" methods
Keith Seitz [Fri, 27 Feb 2015 17:55:07 +0000 (09:55 -0800)]
PR gdb/18021 - defend against "static virtual" methods

This bug appears to be caused by bad debuginfo. The method
causing the sefault in the reporter's test case is marked both static
and virtual.

This patch simply safegaurds against this case in dwarf2_add_member_fn,
where the code assumes that there is a `this' pointer when a virtual method
is seen (more specifically, when DW_AT_vtable_elem is seen).

It previously dereferenced the first formal parameter
(`this' pointer), which in this case doesn't exist. GDB consequently
segfaulted dereferencing a NULL pointer.

gdb/ChangeLog
PR gdb/18021
* dwarf2read.c (dwarf2_add_member_fn): Issue a complaint
if we find a static method with DW_AT_vtable_elem_location.

gdb/testsuite/ChangeLog
PR gdb/18021
* gdb.dwarf2/staticvirtual.exp: New test.

9 years ago[OBV] Fix build -- missing ';'
Keith Seitz [Mon, 23 Mar 2015 18:41:11 +0000 (11:41 -0700)]
[OBV] Fix build -- missing ';'

bfd/ChangeLog

* elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Add
missing ';'.

9 years agoAdding Changelog for previous commit.
Marcus Shawcroft [Fri, 20 Mar 2015 18:54:59 +0000 (18:54 +0000)]
Adding Changelog for previous commit.

9 years agoFactor out _bfd_aarch64_erratum_835769_stub_name
Marcus Shawcroft [Fri, 20 Mar 2015 18:54:59 +0000 (18:54 +0000)]
Factor out _bfd_aarch64_erratum_835769_stub_name

9 years ago[AArch64] Factor out _bfd_aarch64_resize_stubs()
Marcus Shawcroft [Fri, 20 Mar 2015 20:20:35 +0000 (20:20 +0000)]
[AArch64] Factor out _bfd_aarch64_resize_stubs()

9 years ago[AArch64] Factor stub creation code into _bfd_aarch64_create_stub_section.
Marcus Shawcroft [Tue, 10 Mar 2015 13:16:28 +0000 (13:16 +0000)]
[AArch64] Factor stub creation code into _bfd_aarch64_create_stub_section.

9 years ago[AArch64] Factor out common behaviour between elf_aarch64_create_or_find_stub_sec...
Marcus Shawcroft [Sat, 28 Feb 2015 00:10:21 +0000 (00:10 +0000)]
[AArch64] Factor out common behaviour between elf_aarch64_create_or_find_stub_sec and elfNN_aarch64_add_stub

9 years ago[AArch64] Flip sense of erratum_835769_scan.
Marcus Shawcroft [Fri, 20 Mar 2015 18:49:29 +0000 (18:49 +0000)]
[AArch64] Flip sense of erratum_835769_scan.

9 years ago[AArch64] Drop unused argument to elf_aarch64_create_or_find_stub_sec
Marcus Shawcroft [Sat, 28 Feb 2015 00:06:26 +0000 (00:06 +0000)]
[AArch64] Drop unused argument to elf_aarch64_create_or_find_stub_sec

9 years ago[AArch64] Remove unused variable.
Marcus Shawcroft [Sun, 22 Mar 2015 07:59:48 +0000 (07:59 +0000)]
[AArch64] Remove unused variable.

9 years agoFixup previous changelog entry.
Marcus Shawcroft [Mon, 23 Mar 2015 15:10:56 +0000 (15:10 +0000)]
Fixup previous changelog entry.

9 years agoRemove dead code.
Marcus Shawcroft [Sun, 22 Mar 2015 07:57:18 +0000 (07:57 +0000)]
Remove dead code.

9 years ago[AArch64] Tidy up in aarch64_mem_op_p().
Marcus Shawcroft [Thu, 12 Mar 2015 12:11:07 +0000 (12:11 +0000)]
[AArch64] Tidy up in aarch64_mem_op_p().

9 years ago[AArch64] Adjust layout of elfNN_aarch64_write_section.
Marcus Shawcroft [Fri, 13 Mar 2015 14:50:26 +0000 (14:50 +0000)]
[AArch64] Adjust layout of elfNN_aarch64_write_section.

9 years ago[AArch64] Adjust layout emultempl/aarch64elf.em.
Marcus Shawcroft [Sun, 22 Mar 2015 07:47:38 +0000 (07:47 +0000)]
[AArch64] Adjust layout emultempl/aarch64elf.em.

9 years agoRemove is_merge_section_for.
Rafael Ávila de Espíndola [Mon, 23 Mar 2015 13:16:49 +0000 (09:16 -0400)]
Remove is_merge_section_for.

Now that Input_merge_map has an Output_section_data, we can use it in
implementing find_merge_section and replace the only use of is_merge_section_for
with it.

9 years agoFix thinko with previous delta to RL78 sim, by adding code to define the G10 and...
Nick Clifton [Mon, 23 Mar 2015 11:40:14 +0000 (11:40 +0000)]
Fix thinko with previous delta to RL78 sim, by adding code to define the G10 and G13 mode options.

* cpu.c (rl78_g10_mode): Declare.
(g13_multiply): Declare.
* cpu.h (rl78_g10_mode): Export.
(g13_multiply): Export.

9 years agosim: dv-sockser: move build to common dir
Mike Frysinger [Mon, 23 Mar 2015 02:36:12 +0000 (22:36 -0400)]
sim: dv-sockser: move build to common dir

If dv-sockser is available, lets add it to the common SIM_HW_OBJS
variable so it is always included automatically.  Now ports do not
have to shoe horn it in directly themselves.  It does mean it will
be compiled for targets that don't explicitly use it, but that's
really what we want anyways.

9 years agosim: dv-sockser: add stub funcs when not available
Mike Frysinger [Mon, 23 Mar 2015 02:23:04 +0000 (22:23 -0400)]
sim: dv-sockser: add stub funcs when not available

This lets ports assume that the dv-sockser API is always available if
they want to.  This way we don't have to do an abort at configure time
and it makes the resulting code a bit simpler.

9 years agosim: bfin/msp430: drop run-sim.h include
Mike Frysinger [Mon, 23 Mar 2015 04:08:25 +0000 (00:08 -0400)]
sim: bfin/msp430: drop run-sim.h include

This header is used only with run.o, and both of these use nrun.o.

9 years agosim: sh64: delete dv-sockser references
Mike Frysinger [Mon, 23 Mar 2015 02:25:04 +0000 (22:25 -0400)]
sim: sh64: delete dv-sockser references

This sim doesn't actually use dv-sockser code anywhere, so drop references
to it in its build files.

9 years agoAutomatic date update in version.in
GDB Administrator [Mon, 23 Mar 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoFix support for i386 TLS GD-to-IE optimization.
Cary Coutant [Sun, 22 Mar 2015 18:59:21 +0000 (11:59 -0700)]
Fix support for i386 TLS GD-to-IE optimization.

There are two cases to support, one with an SIB-form (6-byte) LEA,
the other with a 5-byte LEA and a NOP after the call __tls_get_addr.
Gold did not yet support the second case. This patch adds that
support.

gold/
PR gold/18106
* i386.cc (Target_i386::Relocate::tls_gd_to_ie): Fix support for
non-SIB form of lea, with nop after the call.

9 years agoFix internal error with -z relro when .tbss is last relro section.
Cary Coutant [Sun, 22 Mar 2015 05:30:44 +0000 (22:30 -0700)]
Fix internal error with -z relro when .tbss is last relro section.

When calculating the padding necessary to align the end of the relro
segment to a page boundary, gold erroneously ignores the .tdata section
when checking to see if there are any relro sections (so if .tdata
is the only relro section, we fail to align the segment properly),
and erroneously pads the cumulative size of the segment based on
the alignment of .tbss. If there are no relro sections following .tbss,
it then fails to note the padding needed at the end of .tdata.

This patch fixes both problems. is_first_section_relro() will return
true when it sees a .tdata section, and we do not align the cumulative
size until after checking for the .tbss section.

gold/
PR gold/14217
* output.cc (Output_segment::is_first_section_relro): Don't ignore
.tdata section.
(Output_segment::set_section_addresses): Don't align size of relro
segment for .tbss.

9 years agoFix bug when optimizing string pools of aligned strings.
Cary Coutant [Sun, 22 Mar 2015 04:09:46 +0000 (21:09 -0700)]
Fix bug when optimizing string pools of aligned strings.

Tail optimization of string pools (enabled when linker is run with -O2
or greater) should not be done when the section alignment is greater
than the size of the characters in the strings; otherwise, unaligned
strings may result.

gold/
PR gold/18010
* stringpool.cc (Stringpool_template): Don't optimize if section
alignment is greater than sizeof(char).

9 years agoPR gold/18048: Fix INCLUDE directive support for gold
Cary Coutant [Sun, 22 Mar 2015 02:03:00 +0000 (19:03 -0700)]
PR gold/18048: Fix INCLUDE directive support for gold

This patch fixes INCLUDE directives in script files, so that when
an INCLUDE appears inside a sections block, section commands block,
or memory def block, the contents are parsed in the appropriate
context.

gold/
PR gold/18048
* script-c.h (script_include_directive): Add first_token parameter.
* script.cc (script_include_directive): Add first_token parameter, and
pass it to read_script_file.
* yyscript.y (PARSING_SECTIONS_BLOCK, PARSING_SECTION_CMDS)
(PARSING_MEMORY_DEF): New tokens.
(top): Add new productions for INCLUDE files.
(file_cmd): Replace file_or_sections_cmd with copy of its productions.
Pass PARSING_LINKER_SCRIPT to script_include_directive.
(section_block_cmd): Likewise; pass PARSING_SECTIONS_BLOCK.
(section_cmd): Pass PARSING_SECTION_CMDS.
(file_or_sections_cmd): Remove.
(memory_def): Pass PARSING_MEMORY_DEF.
* testsuite/Makefile.am (memory_test_2): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/memory_test_inc.t: New script file.
* testsuite/memory_test_inc_1.t.src: New script file.
* testsuite/memory_test_inc_2.t.src: New script file.
* testsuite/memory_test_inc_3.t.src: New script file.

9 years agoSupport compressed debug sections in dynamic object files.
Cary Coutant [Sun, 22 Mar 2015 01:50:11 +0000 (18:50 -0700)]
Support compressed debug sections in dynamic object files.

This patch adds support for reading compressed debug info in
shared objects. It actually simplifies things, by moving the
support for compressed sections all the way up to the top-level
Object class, eliminating the need for several virtual methods.

gold/
* dwp.cc (Sized_relobj_dwo::do_section_contents): Delete.
(Sized_relobj_dwo::setup): Build compressed section map.
(Sized_relobj_dwo::do_decompressed_section_contents): Delete.
* dynobj.cc (Sized_dynobj::base_read_symbols): Build compressed
section map.
* object.cc (Sized_relobj_file::Sized_relobj_file): Remove
compressed_sections_ field.
(build_compressed_section_map): Take Object instead of
Sized_relobj_file parameter; add decompress_if_needed parameter.
(Sized_relobj_file::do_find_special_sections): Store compressed
section map in parent Object.
(Sized_relobj_file::do_decompressed_section_contents): Move
implementation to Object::decompressed_section_contents.
(Sized_relobj_file::do_discard_decompressed_sections): Move
implementation to Object::discard_decompressed_sections.
* object.h (build_compressed_section_map): Declare.
(Object::Object): Add compressed_sections_ field.
(Object::section_is_compressed): Move implementation here.
(Object::decompressed_section_contents): De-virtualize.
(Object::discard_decompressed_sections): De-virtualize.
(Object::do_section_is_compressed): Delete.
(Object::do_decompressed_section_contents): Delete.
(Object::set_compressed_sections): New method.
(Object::compressed_sections): New method.
(Object::compressed_sections_): New data member.
(Compressed_section_info, Compressed_section_map): Move to top of file.
(Sized_relobj_file::do_section_is_compressed): Delete.
(Sized_relobj_file::do_decompressed_section_contents): Delete.
(Sized_relobj_file::do_discard_decompressed_sections): Delete.
(Sized_relobj_file::compressed_sections_): Move to Object class.

9 years agoFix internal error in do_relocate_sections when using plugins.
Cary Coutant [Sun, 22 Mar 2015 00:47:49 +0000 (17:47 -0700)]
Fix internal error in do_relocate_sections when using plugins.

In a previous patch for PR 14675, to fix a problem with
the .eh_frame section when static linking, I added a step to
finalize the .eh_frame section at the end of the first link
pass. This patch caused PR 18152, where a plugin-claimed
object caused a non-claimed object's layout to be deferred
until replacement files were read. The call to
finalize_eh_frame_section() is happening before the layout of
the deferred objects, leading to the internal error in
do_relocate_sections.

This patch moves the finalization of the .eh_frame section to
after deferred objects have been processed.

gold/
PR gold/14675
PR gold/18152
* gold.cc (queue_middle_tasks): Finalize .eh_frame after laying out
deferred objects.

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

9 years agoFix undefined behavior in TUI's TAB expansion
Eli Zaretskii [Sat, 21 Mar 2015 08:48:34 +0000 (10:48 +0200)]
Fix undefined behavior in TUI's TAB expansion

gdb/ChangeLog:

* tui/tui-io.c (tui_expand_tabs): Reinitialize the column counter
before the second loop, to avoid undefined behavior.  Reported by
Anton Blanchard <anton@samba.org>.

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

9 years ago[gdb/DWARF] Introduce linked list for dynamic attributes
Keven Boell [Fri, 20 Mar 2015 21:45:20 +0000 (17:45 -0400)]
[gdb/DWARF] Introduce linked list for dynamic attributes

This patch introduces a linked list for dynamic attributes of a type.
This is a pre-work for the Fortran dynamic array support. The Fortran
dynamic array support will add more dynamic attributes to a type.
As only a few types will have such dynamic attributes set, a linked
list is more efficient in terms of memory consumption than adding
multiple attributes to main_type.

gdb/ChangeLog:

        * gdbtypes.c (resolve_dynamic_type_internal): Adapt
        data_location usage to linked list.
        (resolve_dynamic_type_internal): Adapt data_location to
        linked list.
        (get_dyn_prop, add_dyn_prop, copy_dynamic_prop_list): New function.
        (copy_type_recursive, copy_type): Add copy of linked list.
        * gdbtypes.h (enum dynamic_prop_node_kind): New enum.
        (struct dynamic_prop_list): New struct.
        * dwarf2read.c (set_die_type): Set data_location data.

9 years agoconstify i386-sol2-tdep.c and machoread.c
Pedro Alves [Mon, 9 Mar 2015 11:58:23 +0000 (11:58 +0000)]
constify i386-sol2-tdep.c and machoread.c

/home/pedro/gdb/mygit/src/gdb/i386-sol2-tdep.c: In function ‘const char* i386_sol2_static_transform_name(const char*)’:
/home/pedro/gdb/mygit/src/gdb/i386-sol2-tdep.c:93:29: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
       p = strrchr (name, '.');
                             ^
gdb:

2015-03-20  Pedro Alves  <palves@redhat.com>

* i386-sol2-tdep.c (i386_sol2_static_transform_name): Move "p" to
inner block and make it const.
* machoread.c (get_archive_prefix_len): Make "lparen" const.

9 years agoconstify set_breakpoint_condition
Pedro Alves [Mon, 9 Mar 2015 11:58:21 +0000 (11:58 +0000)]
constify set_breakpoint_condition

gdb:

2015-03-20  Pedro Alves  <palves@redhat.com>

* breakpoint.c (set_breakpoint_condition): Make argument "exp" const.
* breakpoint.h (set_breakpoint_condition): Update declaration.

9 years agoconstify tui/tui-io.c
Pedro Alves [Mon, 9 Mar 2015 11:58:20 +0000 (11:58 +0000)]
constify tui/tui-io.c

gdb:

2015-03-20  Pedro Alves  <palves@redhat.com>

* tui/tui-io.c (tui_expand_tabs): Make "s1" const.

9 years agoconstify xcoffread.c
Pedro Alves [Mon, 9 Mar 2015 11:58:20 +0000 (11:58 +0000)]
constify xcoffread.c

/home/pedro/gdb/mygit/src/gdb/xcoffread.c: In function ‘void scan_xcoff_symtab(objfile*)’:
/home/pedro/gdb/mygit/src/gdb/xcoffread.c:2644:33: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
      p = strchr (namestring, ':');
                                 ^
gdb:

2015-03-20  Pedro Alves  <palves@redhat.com>

* xcoffread.c (scan_xcoff_symtab): Make "p" and "q" const.

9 years agoconstify remote-m32r-sdi.c
Pedro Alves [Mon, 9 Mar 2015 11:58:19 +0000 (11:58 +0000)]
constify remote-m32r-sdi.c

gdb:

2015-03-20  Pedro Alves  <palves@redhat.com>

* remote-m32r-sdi.c (m32r_open): Make "port_str" const.

9 years agoconstify nto-tdep.c
Pedro Alves [Mon, 9 Mar 2015 11:58:14 +0000 (11:58 +0000)]
constify nto-tdep.c

/home/pedro/gdb/mygit/src/gdb/nto-tdep.c: In function ‘int nto_find_and_open_solib(char*, unsigned int, char**)’:
/home/pedro/gdb/mygit/src/gdb/nto-tdep.c:111:14: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
       endian = gdbarch_byte_order (target_gdbarch ())
              ^
/home/pedro/gdb/mygit/src/gdb/nto-tdep.c: In function ‘void nto_init_solib_absolute_prefix()’:
/home/pedro/gdb/mygit/src/gdb/nto-tdep.c:170:14: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
       endian = gdbarch_byte_order (target_gdbarch ())
              ^

gdb

2015-03-20  Pedro Alves  <palves@redhat.com>

* nto-tdep.c (nto_find_and_open_solib): Make "endian" const.
(nto_init_solib_absolute_prefix): Likewise.

9 years agoconstify gdbserver/tracepoint.c
Pedro Alves [Mon, 9 Mar 2015 11:58:09 +0000 (11:58 +0000)]
constify gdbserver/tracepoint.c

gdb/gdbserver/tracepoint.c:3647:7: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
gdb/gdbserver/tracepoint.c:3652:7: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
gdb/gdbserver/tracepoint.c:3657:7: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]

gdb/gdbserver

2015-03-20  Pedro Alves  <palves@redhat.com>

* tracepoint.c (cmd_qtstatus): Make "str" const.