binutils-gdb.git
6 years agoThrow a "quit" on a KeyboardException in py-framefilter.c
Tom Tromey [Tue, 25 Apr 2017 03:47:59 +0000 (21:47 -0600)]
Throw a "quit" on a KeyboardException in py-framefilter.c

If a C-c comes while the Python code for a frame filter is running, it
will be turned into a Python KeyboardException.  It seems good for
this to be treated like a GDB quit, so this patch changes
py-framefilter.c to notice this situation and call throw_quit in this
case.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (throw_quit_or_print_exception): New
function.
(gdbpy_apply_frame_filter): Use it.

gdb/testsuite/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* gdb.python/py-framefilter.exp: Add test for KeyboardInterrupt.
* gdb.python/py-framefilter.py (name_error): New global.
(ErrorInName.function): Use name_error.

6 years agoAllow C-c to work in backtrace in more cases
Tom Tromey [Tue, 25 Apr 2017 02:59:37 +0000 (20:59 -0600)]
Allow C-c to work in backtrace in more cases

PR cli/17716 notes that it is difficult to C-c (or "q" at a pagination
prompt) while backtracing using a frame filter.  One reason for this
is that many places in py-framefilter.c use RETURN_MASK_ALL in a
try/catch.

This patch changes these spots to use RETURN_MASK_ERROR instead.  This
is safe to do because this entire file is exception safe now.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

PR cli/17716:
* python/py-framefilter.c (py_print_type, py_print_value)
(enumerate_args, py_print_args, gdbpy_apply_frame_filter): Use
RETURN_MASK_ERROR.

6 years agoAvoid manual resource management in py-framefilter.c
Tom Tromey [Sun, 23 Apr 2017 17:23:43 +0000 (11:23 -0600)]
Avoid manual resource management in py-framefilter.c

This patch removes the last bit of manual resource management from
py-framefilter.c.  This will be useful in the next patch.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (enumerate_args): Use
gdb::unique_xmalloc_ptr.

6 years agoRemove EXT_LANG_BT_COMPLETED
Tom Tromey [Sun, 23 Apr 2017 17:07:26 +0000 (11:07 -0600)]
Remove EXT_LANG_BT_COMPLETED

While looking at the frame filter code, I noticed that
EXT_LANG_BT_COMPLETED is not really needed.  Semantically there is no
difference between the "completed" and "ok" results.  So, this patch
removes this constant.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (py_print_frame): Return
EXT_LANG_BT_OK.
(gdbpy_apply_frame_filter): Update comment.
* extension.h (enum ext_lang_bt_status) <EXT_LANG_BT_COMPLETED>:
Remove.
<EXT_LANG_BT_NO_FILTERS>: Change value.

6 years agoAllow hiding of some filtered frames
Tom Tromey [Sun, 23 Apr 2017 17:03:57 +0000 (11:03 -0600)]
Allow hiding of some filtered frames

When a frame filter elides some frames, they are still printed by
"bt", indented a few spaces.  PR backtrace/15582 notes that it would
be nice for users if elided frames could simply be dropped.  This
patch adds this capability.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

PR backtrace/15582:
* stack.c (backtrace_command): Parse "hide" argument.
* python/py-framefilter.c (py_print_frame): Handle PRINT_HIDE.
* extension.h (enum frame_filter_flags) <PRINT_HIDE>: New
constant.

gdb/doc/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

PR backtrace/15582:
* gdb.texinfo (Backtrace): Mention "hide" argument.

gdb/testsuite/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

PR backtrace/15582:
* gdb.python/py-framefilter.exp: Add "bt hide" test.

6 years agoChange backtrace_command_1 calling to use flags
Tom Tromey [Sun, 23 Apr 2017 17:02:52 +0000 (11:02 -0600)]
Change backtrace_command_1 calling to use flags

The next patch will add more flags to backtrace_command_1; and rather
than add another boolean argument, this patch changes it to accept a
flags value.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* stack.c (backtrace_command_1): Remove "show_locals" parameter,
add "flags".
(backtrace_command): Remove "fulltrace", add "flags".

6 years agoRationalize "backtrace" command line parsing
Tom Tromey [Sun, 23 Apr 2017 16:54:33 +0000 (10:54 -0600)]
Rationalize "backtrace" command line parsing

The backtrace command has peculiar command-line parsing.  In
particular, it splits the command line, then loops over the arguments.
If it sees a word it recognizes, like "full", it effectively drops
this word from the argument vector.  Then, it pastes together the
remaining arguments, passing them on to backtrace_command_1, which in
turn passes the resulting string to parse_and_eval_long.

The documentation doesn't mention the parse_and_eval_long at all, so
it is a bit of a hidden feature that you can "bt 3*2".  The strange
algorithm above also means you can "bt 3 * no-filters 2" and get 6
frames...

This patch changes backtrace's command line parsing to be a bit more
rational.  Now, special words like "full" are only recognized at the
start of the command.

This also updates the documentation to describe the various bt options
individually.

gdb/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* stack.c (backtrace_command): Rewrite command line parsing.

gdb/doc/ChangeLog
2018-03-26  Tom Tromey  <tom@tromey.com>

* gdb.texinfo (Backtrace): Describe options individually.

6 years agoAutomatic date update in version.in
GDB Administrator [Tue, 27 Mar 2018 00:00:27 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoRemove DEF_VEC_I(offset_type)
Simon Marchi [Mon, 26 Mar 2018 19:46:21 +0000 (15:46 -0400)]
Remove DEF_VEC_I(offset_type)

It is unused.

gdb/ChangeLog:

* dwarf2read.c (DEF_VEC_I(offset_type)): Remove.

6 years agoAdd include guard to filename-seen-cache.h
Simon Marchi [Mon, 26 Mar 2018 19:31:10 +0000 (15:31 -0400)]
Add include guard to filename-seen-cache.h

While moving things around, I stumbled on filename_seen_cache being
re-defined, because filename-seen-cache.h doesn't have an include guard.

gdb/ChangeLog:

* filename-seen-cache.h: Add include guard.

6 years agoFix case where IR file provides symbol visibility but replacement file does not.
Cary Coutant [Fri, 23 Mar 2018 16:03:34 +0000 (09:03 -0700)]
Fix case where IR file provides symbol visibility but replacement file does not.

In PR 22868, two IR files provide conflicting visibility for a symbol.
When a def with PROTECTED visibility is seen after a def with DEFAULT
visibility, gold does not override the visibility. Later, if the
replacement object define the symbol with DEFAULT visibility, the symbol
remains DEFAULT. This was caused by a recent change to allow multiply-defined
absolute symbols, combined with the fact that the plugin framework was using
SHN_ABS as the section index for placeholder symbols. The solution is to
use a real (but arbitrary) section index.

gold/
PR gold/22868
* plugin.cc (Sized_pluginobj::do_add_symbols): Use a real section
index instead of SHN_ABS for defined symbols.
* testsuite/Makefile.am (plugin_pr22868): New test case.
* testsuite/Makefile.in: Regenerate
* testsuite/plugin_pr22868.sh: New test script.
* testsuite/plugin_pr22868_a.c: New source file.
* testsuite/plugin_pr22868_b.c: New source file.

6 years agoRemove struct keyword from section_addr_info
Keith Seitz [Mon, 26 Mar 2018 17:34:28 +0000 (10:34 -0700)]
Remove struct keyword from section_addr_info

Buildbot pointed out a failiure in windows-nat.c:

../../binutils-gdb/gdb/windows-nat.c:582:10: error: using typedef-name 'section_addr_info' after 'struct'
   struct section_addr_info *addrs;
          ^~~~~~~~~~~~~~~~~
In file included from ../../binutils-gdb/gdb/windows-nat.c:49:0:
../../binutils-gdb/gdb/symfile.h:75:37: note: 'section_addr_info' has a previous declaration here
 typedef std::vector<other_sections> section_addr_info;
                                     ^~~~~~~~~~~~~~~~~

A recursive grep of the sources for "struct section_addr_info" reveals one
additional reference in a comment.  In both cases, this patch simply removes
the struct keyword.

gdb/ChangeLog:

* symfile.c (place_section): Remove "struct" from section_addr_info
in comment.
* windows-nat.c (struct safe_symbol_file_add_args) <addrs>: Remove
"struct" keyword from section_addr_info.

6 years agoMake gdbserver reg_defs a vector of objects
Alan Hayward [Mon, 26 Mar 2018 09:39:24 +0000 (10:39 +0100)]
Make gdbserver reg_defs a vector of objects

gdb/
* regformats/regdef.h (reg): Add constructors.

gdb/gdbserver/
* regcache.c (find_register_by_number): Return a ref.
(find_regno): Use references.
(register_size): Likewise.
(register_data): Likewise.
* tdesc.c (target_desc::~target_desc): Remove free calls.
(target_desc::operator==): Use std::vector compare.
(init_target_desc): Use reference.
(tdesc_create_reg): Use reg constructors.
* tdesc.h (struct target_desc): Replace pointer with object.

6 years agoAutomatic date update in version.in
GDB Administrator [Mon, 26 Mar 2018 00:01:03 +0000 (00:01 +0000)]
Automatic date update in version.in

6 years agoeval.c: reverse minsym and sym
Pedro Alves [Sun, 25 Mar 2018 17:02:43 +0000 (18:02 +0100)]
eval.c: reverse minsym and sym

I noticed that in evaluate_funcall, where we handle
OP_VAR_MSYM_VALUE/OP_VAR_VALUE to figure out the symbol's name gets
the minimal_symbol/symbol backwards.  Happens to be harmless in
practice because the symbol name is recorded in the common initial
sequence (in the general_symbol_info field).

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

* eval.c (evaluate_funcall): Swap OP_VAR_MSYM_VALUE/OP_VAR_VALUE
if then/else bodies in var_func_name extraction.

6 years agoFix date in gdb/ChangeLog
Pedro Alves [Sun, 25 Mar 2018 17:54:44 +0000 (18:54 +0100)]
Fix date in gdb/ChangeLog

6 years agox86-64: Add ENDBR64 to the TLSDESC PLT entry
H.J. Lu [Sun, 25 Mar 2018 12:02:17 +0000 (05:02 -0700)]
x86-64: Add ENDBR64 to the TLSDESC PLT entry

The TLSDESC entry in a lazy procedure linkage table is called indirectly
with "callq *(%rax)".  This patch adds an ENDBR64 to support indirect
branch tracking in Intel CET.  The TLSDESC PLT entry now looks like:

0xf3, 0x0f, 0x1e, 0xfa,  /* endbr64             */
0xff, 0x35, 8, 0, 0, 0,  /* pushq GOT+8(%rip)   */
0xff, 0x25, 16, 0, 0, 0  /* jmpq *GOT+TDG(%rip)  */

The BND prefix isn't needed since MPX isn't used for TLSDESC.

bfd/

PR ld/23000
* elf64-x86-64.c (elf_x86_64_finish_dynamic_sections): Add
ENDBR64 to the TLSDESC PLT entry.

ld/

PR ld/23000
* testsuite/ld-x86-64/tlsdesc.pd: Updated.

6 years agoAutomatic date update in version.in
GDB Administrator [Sun, 25 Mar 2018 00:00:55 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoFix warn-unused-return message.
Cary Coutant [Sat, 24 Mar 2018 06:33:47 +0000 (23:33 -0700)]
Fix warn-unused-return message.

gold/
* plugin.cc (link_or_copy_file): Remove newlines from warning messages.
Add pedantic check for return value from ::write.

6 years agoAdd missing ChangeLog entry for last commit.
Cary Coutant [Sat, 24 Mar 2018 06:29:43 +0000 (23:29 -0700)]
Add missing ChangeLog entry for last commit.

6 years agoaarch64: Make "info address" resolve TLS variables
Weimin Pan [Fri, 3 Nov 2017 00:38:36 +0000 (18:38 -0600)]
aarch64: Make "info address" resolve TLS variables

TLS variables can't be resolved on aarch64-linux-gnu

Running the test case with upstream gdb shows two failures:

(1) Receiving different error messages when printing TLS variable before
    program runs - because the ARM compiler does not emit dwarf attribute
    DW_AT_location for TLS, the result is expected and the baseline may
    need to be changed for aarch64.

(2) Using "info address" command on C++ static TLS object resulted in
    "symbol unresolved" error - below is a snippet from the test case:

class K {
 public:
  static __thread int another_thread_local;
};

__thread int K::another_thread_local;

(gdb) info address K::another_thread_local
Symbol "K::another_thread_local" is unresolved.

This patch contains fix for (2).

Function info_address_command() handles the "info address" command and
calls lookup_minimal_symbol_and_objfile() to find sym's symbol entry in
mininal symbol table if SYMBOL_COMPUTED_OPS (sym) is false. Problem is
that function lookup_minimal_symbol_and_objfile() only looked up an
objfile's minsym ordinary hash table, not its demangled hash table, which
was the reason why the C++ name was not found.

The fix is to call lookup_minimal_symbol(), which already looks up entries
in both minsym's hash tables, to find names when traversing the object file
list in lookup_minimal_symbol_and_objfile().

Tested in both aarch64-linux-gnu and amd64-linux-gnu. No regressions.

6 years agoAutomatic date update in version.in
GDB Administrator [Sat, 24 Mar 2018 00:00:50 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoAdd psymbols for nested types
Keith Seitz [Thu, 22 Mar 2018 23:49:48 +0000 (16:49 -0700)]
Add psymbols for nested types

c++/22968 involves the inability of ptype to find a type definition for
a type defined inside another type.  I recently added some additional
support for nested type definitions, but I apparently overlooked psymbols.

The user reports that using -readnow fixes the problem:

$ gdb 22968 -ex "ptype Outer::Inner"
There is no field named Inner

$ gdb -readnow 22968 -ex "ptype Outer::Inner"
type = struct Outer::Inner {
  <no data field>
}

We clearly did not find a psymbol for Outer::Inner because it was located
in another CU.  This patch addresses this problem by scanning structs
for additional psymbols.  Rust is already doing this.

With this patch, the identical result to "-readnow" is given (without
using `-readnow', of course).

gdb/ChangeLog:

PR c++/22968
* dwarf2read.c (scan_partial_symbols): Scan structs/classes for
nested type definitions for C++, too.

gdb/testsuite/ChangeLog:

PR c++/22968
* gdb.cp/subtypes.exp: New file.
* gdb.cp/subtypes.h: New file.
* gdb.cp/subtypes.cc: New file.
* gdb.cp/subtypes-2.cc: New file.

6 years agoAdd --debug=plugin option to record plugin actions.
Cary Coutant [Fri, 23 Mar 2018 17:05:38 +0000 (10:05 -0700)]
Add --debug=plugin option to record plugin actions.

With --debug=plugin, gold will log all plugin actions to a log file,
and make copies of plugin-supplied replacement files in a temporary
directory created under the current working directory.

gold/
* debug.h (DEBUG_PLUGIN): New constant.
(DEBUG_ALL): Add DEBUG_PLUGIN.
(debug_string_to_enum): Likewise.
* plugin.cc (make_sized_plugin_object): Add filename parameter.
(Plugin_recorder): New class.
(Plugin_manager::~Plugin_manager): Delete recorder_.
(Plugin_manager::load_plugins): Create and initialize recorder_.
(Plugin_manager::claim_file): Record claimed and unclaimed files.
(Plugin_manager::make_plugin_object): Use object name as name for
plugin object, if available.
(Plugin_manager::add_input_file): Record replacement files.
(Sized_pluginobj::do_add_symbols): Record plugin symbols.
(Plugin_finish::run): Call Plugin_recorder::finish().
(make_sized_plugin_object): Add filename parameter and pass to
Sized_pluginobj constructor.
* plugin.h (Plugin::filename): New method.
(Plugin::recorder): New method.
(Plugin::recorder_): New data member.

6 years agoChange machoread.c to use std::vector
Tom Tromey [Fri, 16 Mar 2018 22:44:01 +0000 (16:44 -0600)]
Change machoread.c to use std::vector

This changes machoread.c to use std::vector rather than VEC.  This
allows removing some cleanups.

Regression tested by the buildbot, though I don't think anything
actually tests macho reading.

gdb/ChangeLog
2018-03-23  Tom Tromey  <tom@tromey.com>

* machoread.c (struct oso_el): Add a constructor.  Don't define as
a typedef.
(macho_register_oso): Remove.
(macho_symtab_read): Take a std::vector.
(oso_el_compare_name): Now a std::sort comparator.
(macho_symfile_read_all_oso): Take a std::vector.
(macho_symfile_read): Use std::vector.  Remove cleanups.

6 years agoMake gdbserver find_register_by_number static
Alan Hayward [Fri, 23 Mar 2018 11:17:22 +0000 (11:17 +0000)]
Make gdbserver find_register_by_number static

gdbserver/
* regcache.c (find_register_by_number): Make static.
(find_regno): Use find_register_by_number
* regcache.h (struct reg): Remove declaration.

6 years agoImprove readelf's selection of a file start symbol when displaying a gnu build attribute.
Nick Clifton [Fri, 23 Mar 2018 12:20:03 +0000 (12:20 +0000)]
Improve readelf's selection of a file start symbol when displaying a gnu build attribute.

* readelf.c (get_symbol_for_build_attribute): Skip ARM mapping
symbols.
(print_gnu_build_attribute_description): If no file start symbol
could be found, look for one two bytes into the file.
* testsuite/binutils-all/note-4-64.s: Set the address of the file
start symbol to two bytes into the file.
* testsuite/binutils-all/note-4-32.s: Likewise.

6 years agoAdd an extra library name template to the list used by the WIN32 targets.
Nick Clifton [Fri, 23 Mar 2018 12:08:54 +0000 (12:08 +0000)]
Add an extra library name template to the list used by the WIN32 targets.

PR 22948
* emultempl/pe.em (open_dynamic_archive): Add libXXX.lib template
to library name list.
* emultempl/pep.em (open_dynamic_archive): Likewise.
* ld.texinfo (WIN32): Update documentation.

6 years agogdb: Fix testsuite issue in gdb.arch/amd64-disp-step-avx.exp
Andrew Burgess [Mon, 19 Mar 2018 00:33:50 +0000 (00:33 +0000)]
gdb: Fix testsuite issue in gdb.arch/amd64-disp-step-avx.exp

This test starts up and confirms that $xmm0 has the value 0, it then
modifies $xmm0 (in the inferior) and confirms that the new value can
be read (in GDB).

On some machines I was noticing that this test would occasionally
fail, and on investigation I believe that the reason for this is that
the test is linked as a dynamically linked executable and makes use of
the system libraries during startup.  The reason that this causes
problems is that both the runtime linker and the startup code run
before main can, and do (on at least some platforms) make use of the
XMM registers.

In this commit I modify the test program slightly to allow it to be
linked statically, without using the startup libraries.  Now by the
time GDB reaches the symbol main we have only executed one 'nop'
instruction, and the XMM registers should all have the value 0.  I've
extended the test script to confirm that $xmm0 to $xmm15 are all
initially 0, and I also check that at the point after $xmm0 has been
modified, all the other XMM registers ($xmm1 to $xmm15) are still 0.

The test program is still linked against libc in order that we can
call the exit function, however, we now call _exit rather than exit in
order to avoid all of the usual cleanup that exit does.  This clean up
tries to tear down things that are usually setup during the startup
code, but now this isn't called calling exit will just result in a
crash.

gdb/testsuite/ChangeLog:

* gdb.arch/amd64-disp-step-avx.S: Add '_start' label.
(done): Call '_exit' not 'exit' to avoid atexit handlers.
* gdb.arch/amd64-disp-step-avx.exp: Pass -static, and
-nostartfiles when compiling the test.  Confirm that all registers
xmm0 to xmm15 are initially 0, and that xmm1 to xmm15 are 0 after.

6 years agogdb: Minor cleanup in some gdb.arch/* tests
Andrew Burgess [Mon, 19 Mar 2018 00:37:31 +0000 (00:37 +0000)]
gdb: Minor cleanup in some gdb.arch/* tests

A small number of tests incorrectly tried to pass -Wa,-g through to
GCC as an extra compile time flag, either to gdb_compile or
prepare_for_testing.

The problem is that the syntax used for passing the flags was
incorrect, and as a result these extra flags were being ignored.
Luckily, the 'debug' flag was being passed in each case anyway, which
means that the '-g' flag would already be added.

Given that all these tests pass 'debug', and the invalid flag has been
ignored for some time, I'm just removing the flags in this commit.

I've also changed the tests from using gdb_compile to
prepare_for_testing, which allows some extra code to be removed from a
couple of tests scripts.

There should be no change in the test results after this commit.

gdb/testsuite/ChangeLog:

* gdb.arch/amd64-disp-step-avx.exp: Remove unneeded assembler flag
option, syntax was wrong anyway.
* gdb.arch/arm-disp-step.exp: Likewise.
* gdb.arch/sparc64-regs.exp: Likewise.
* gdb.arch/amd64-disp-step.exp: Remove unneeded assembler flag
option, syntax was wrong anyway, switch to use
prepare_for_testing.
* gdb.arch/i386-disp-step.exp: Likewise.

6 years agoMove gdbserver tdesc header funcs to c file
Alan Hayward [Fri, 23 Mar 2018 09:29:42 +0000 (09:29 +0000)]
Move gdbserver tdesc header funcs to c file

gdbserver/
* tdesc.c (target_desc::~target_desc): Move to here.
(target_desc::operator==): Likewise.
* tdesc.h (target_desc::~target_desc): Move from here.
(target_desc::operator==): Likewise.

6 years agoTestsuite: fully migrate to use_gdb_stub convenience func
Andreas Arnez [Fri, 23 Mar 2018 09:38:23 +0000 (10:38 +0100)]
Testsuite: fully migrate to use_gdb_stub convenience func

In the GDB test suite, there are still multiple invocations of
"target_info exists use_gdb_stub".  However, the recommended way of
checking for use_gdb_stub is to call the convenience function of the same
name.

Replace these occurrences and just call "use_gdb_stub" instead.

gdb/testsuite/ChangeLog:

* gdb.ada/exec_changed.exp: Replace "target_info exists
use_gdb_stub" by "use_gdb_stub".
* gdb.ada/start.exp: Likewise.
* gdb.base/async-shell.exp: Likewise.
* gdb.base/attach-pie-misread.exp: Likewise.
* gdb.base/attach-wait-input.exp: Likewise.
* gdb.base/break-entry.exp: Likewise.
* gdb.base/break-interp.exp: Likewise.
* gdb.base/dprintf-detach.exp: Likewise.
* gdb.base/nostdlib.exp: Likewise.
* gdb.base/solib-nodir.exp: Likewise.
* gdb.base/statistics.exp: Likewise.
* gdb.base/testenv.exp: Likewise.
* gdb.mi/mi-exec-run.exp: Likewise.
* gdb.mi/mi-start.exp: Likewise.
* gdb.multi/dummy-frame-restore.exp: Likewise.
* gdb.multi/multi-arch-exec.exp: Likewise.
* gdb.multi/multi-arch.exp: Likewise.
* gdb.multi/tids.exp: Likewise.
* gdb.multi/watchpoint-multi.exp: Likewise.
* gdb.python/py-events.exp: Likewise.
* gdb.threads/attach-into-signal.exp: Likewise.
* gdb.threads/attach-stopped.exp: Likewise.
* gdb.threads/threadapply.exp: Likewise.
* lib/selftest-support.exp: Likewise.

6 years agoRemove some cleanups from record-full.c
Tom Tromey [Wed, 21 Mar 2018 22:59:28 +0000 (16:59 -0600)]
Remove some cleanups from record-full.c

This removes some cleanups from record-full.c in a straightforward
way.

Tested by the buildbot.

gdb/ChangeLog
2018-03-22  Tom Tromey  <tom@tromey.com>

* record-full.c (record_full_exec_insn): Use gdb::byte_vector.
(record_full_goto_bookmark): Use std::string.

6 years agoAutomatic date update in version.in
GDB Administrator [Fri, 23 Mar 2018 00:00:38 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoppc: Fix stwux and stdux masks in skip_prologue
Pedro Franco de Carvalho [Thu, 22 Mar 2018 13:22:45 +0000 (10:22 -0300)]
ppc: Fix stwux and stdux masks in skip_prologue

This patch merges the masks for matching the stwux and stdux
instructions in rs6000-tdep.c:skip_prologue into a single mask that
only matches these two instructions.

Commit 72dd273062 fixed the warning described in PR tdep/18295, this
patch addresses the comment in the same PR indicating that the mask
was too permissive.

gdb/Changelog:

PR tdep/18295
* rs6000-tdep.c (skip_prologue): Match both stwux and stdux
a single mask.

6 years agoppc: Detect when LR is saved through frame pointer
Pedro Franco de Carvalho [Thu, 22 Mar 2018 13:22:45 +0000 (10:22 -0300)]
ppc: Detect when LR is saved through frame pointer

This patch extends rs6000-tdep.c:skip_prologue so that it can detect
when the Link Register is saved using the frame pointer (usually r31)
in adition to the stack pointer (r1).

The frame pointer offset from the frame base is tracked separately
from the stack pointer offset for cases when the frame pointer is not
in synch with the stack pointer at the moment of the LR save.

Previously, "stq" could also be detected as an instruction that saves
LR or CR. Because this was likely unintentional, this patch also
restricts the matches to stw/stwu/std/stdu.

gdb/ChangeLog:

* rs6000-tdep.c (store_insn_p): New function.
(skip_prologue): New variable alloca_reg_offset. Set lr_reg
and cr_reg to their unshifted values. Use store_insn_p to
match LR saves using either R1 or fdata->alloca_reg. Use
store_insn_p to match CR saves. Set alloca_reg_offset
when alloca_reg and framep are set. Remove lr_reg shift
when assigning to fdata->lr_register.

6 years agoMake "info proc cmdline" show args on GNU/Linux
Andreas Arnez [Thu, 22 Mar 2018 09:02:18 +0000 (10:02 +0100)]
Make "info proc cmdline" show args on GNU/Linux

Currently "info proc cmdline" on GNU/Linux does not show the full command
line, but only argument 0.  And even a warning is shown if there are more.
This was discussed in 2014 already:

  https://sourceware.org/ml/gdb-patches/2014-04/msg00212.html

Follow the advice there and avoid target_fileio_read_stralloc.  Instead,
use target_fileio_read_alloc to read the whole command line and then
replace NUL characters by spaces.  Also add an appropriate test case.
Note that gdbserver already handles this correctly.

gdb/ChangeLog:

* linux-tdep.c (linux_info_proc): For "info proc cmdline", print
command line args instead of emitting a warning.

gdb/testsuite/ChangeLog:

* gdb.base/info-proc.exp: Add test for "info proc cmdline".

6 years agoS390: Correct brace style in s390_get_wordsize
Andreas Arnez [Thu, 22 Mar 2018 09:02:18 +0000 (10:02 +0100)]
S390: Correct brace style in s390_get_wordsize

This corrects bad formatting in the newly introduced function
s390_get_wordsize.

gdb/gdbserver/ChangeLog:

* linux-s390-low.c (s390_get_wordsize): Correct brace style.

6 years agox86: use local variable in check_VecOperands()
Jan Beulich [Thu, 22 Mar 2018 07:47:16 +0000 (08:47 +0100)]
x86: use local variable in check_VecOperands()

This is just to make a subsequent change a little easier to read.

6 years agox86: drop pointless VecESize
Jan Beulich [Thu, 22 Mar 2018 07:46:25 +0000 (08:46 +0100)]
x86: drop pointless VecESize

The attribute is meaningful only in templates allowing embedded
broadcast. Drop them everywhere else.

6 years agox86: drop remaining redundant DispN
Jan Beulich [Thu, 22 Mar 2018 07:34:24 +0000 (08:34 +0100)]
x86: drop remaining redundant DispN

A few of them were missed in commit 7ac2002247 ("x86: derive DispN
from BaseIndex") and also couldn't be removed by subsequent commits
touching certain templates anyway.

6 years agoix86: allow HLE store of accumulator to absolute address
Jan Beulich [Thu, 22 Mar 2018 07:33:38 +0000 (08:33 +0100)]
ix86: allow HLE store of accumulator to absolute address

Since they're shorter to encode, the 0xa0...0xa3 encodings are preferred
for moves between accumulator and absolute address outside of 64-bit
mode. With HLE release semantics this encoding is unsupported though,
with the assembler raising an error. The operation is valid though, we
merely need to pick the longer encoding in that case.

6 years agox86: fix swapped operand handling for BNDMOV
Jan Beulich [Thu, 22 Mar 2018 07:32:50 +0000 (08:32 +0100)]
x86: fix swapped operand handling for BNDMOV

The wrong placement of the Load attribute in the templates prevented
this from working. The disassembler also didn't handle this consistently
with other similar dual-encoding insns.

6 years agox86/Intel: fix fallout from earlier template folding
Jan Beulich [Thu, 22 Mar 2018 07:31:43 +0000 (08:31 +0100)]
x86/Intel: fix fallout from earlier template folding

While many templates allowing multiple suitably matching XMM/YMM/ZMM
operand sizes can be folded, a few need to be split in order to not
wrongly accept "xmmword ptr" operands when only XMM registers are
permitted (and memory operands are more narrow). Add a test case
validating this.

6 years agox86: fold a few XOP templates
Jan Beulich [Thu, 22 Mar 2018 07:29:45 +0000 (08:29 +0100)]
x86: fold a few XOP templates

Also add a new test case verifying that mixed operands of SIMD insns
with a size-less memory operand in the middle are properly rejected.

6 years agoGet rid of VEC(static_tracepoint_marker_p)
Simon Marchi [Thu, 22 Mar 2018 04:27:19 +0000 (00:27 -0400)]
Get rid of VEC(static_tracepoint_marker_p)

This patch replaces VEC(static_tracepoint_marker_p) with std::vector,
and does some c++ification around that.  I thought a new overload of
hex2str was useful, so I added it as well as corresponding unit tests.
I also added an overload of ui_out::field_string that takes an
std::string directly.

gdb/ChangeLog:

* tracepoint.h (struct static_tracepoint_marker): Initialize
fields, define default constructor, move constructor and move
assignment, disable the rest.
<str_id, extra>: Make std::string.
(release_static_tracepoint_marker): Remove.
(free_current_marker): Remove.
* tracepoint.c (free_current_marker): Remove.
(parse_static_tracepoint_marker_definition): Adjust to
std::string, use new hex2str overload.
(release_static_tracepoint_marker): Remove.
(print_one_static_tracepoint_marker): Get marker by reference
and adjust to std::string.
(info_static_tracepoint_markers_command): Adjust to std::vector
changes
* target.h (static_tracepoint_marker_p): Remove typedef.
(DEF_VEC_P(static_tracepoint_marker_p)): Remove.
(struct target_ops) <to_static_tracepoint_marker_at>: Return
bool.
<to_static_tracepoint_markers_by_strid>: Return std::vector.
* target-debug.h
(target_debug_print_VEC_static_tracepoint_marker_p_p): Remove.
(target_debug_print_std_vector_static_tracepoint_marker): New.
(target_debug_print_struct_static_tracepoint_marker_p): Rename
to...
(target_debug_print_static_tracepoint_marker_p): ... this.
* target-delegates.c: Re-generate.
* breakpoint.h (struct tracepoint) <static_trace_marker_id>:
Make std::string.
* breakpoint.c (init_breakpoint_sal): Adjust to std::string.
(decode_static_tracepoint_spec): Adjust to std::vector.
(tracepoint_print_one_detail): Adjust to std::string.
(strace_marker_decode_location): Adjust to std::string.
(update_static_tracepoint): Adjust to std::string, remove call
to release_static_tracepoint_marker.
* linux-nat.c (linux_child_static_tracepoint_markers_by_strid):
Adjust to std::vector.
* remote.c (remote_static_tracepoint_marker_at): Return bool.
(remote_static_tracepoint_markers_by_strid): Adjust to
std::vector.
* common/rsp-low.h (hex2str): New overload with explicit count
of bytes.
* common/rsp-low.c (hex2str): New overload with explicit count
of bytes.
* unittests/rsp-low-selftests.c (test_hex2str): New function.
(_initialize_rsp_low_selftests): Add test_hex2str test.
* unittests/tracepoint-selftests.c
(test_parse_static_tracepoint_marker_definition): Adjust to
std::string.

6 years agoMake parse_static_tracepoint_marker_definition work with multiple static tracepoint...
Simon Marchi [Thu, 22 Mar 2018 04:26:37 +0000 (00:26 -0400)]
Make parse_static_tracepoint_marker_definition work with multiple static tracepoint definitions

Since I modify the parse_static_tracepoint_marker_definition function in
the next patch, I wanted to write a unit test for it.  Doing so showed
that it doesn't handle multiple consecutive static tracepoint
definitions separated by commas.  However, the RSP documentation [1]
states that servers may return multiple definitions, like:

  1234:6d61726b657231:6578747261207374756666,abba:6d61726b657232:

The problem is that the function uses strlen to compute the length of
the last field (the extra field).  If there are additional definitions
in addition to the one we are currently parsing, the returned length
will include those definitions, and we'll try to hex-decode past the
extra field.

This patch changes parse_static_tracepoint_marker_definition to consider
the case where the current definition is followed by a comma and more
definitions.  It also adds the unit test that found the issue in the
first place.

I don't think this causes any backwards compatibility issues, because
the previous code only handled single static tracepoint definitions, and
the new code handles that correctly.

gdb/ChangeLog:

* tracepoint.c (parse_static_tracepoint_marker_definition):
Consider case where the definition is followed by more
definitions.
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
tracepoint-selftests.c.
* unittests/tracepoint-selftests.c: New.

[1] https://sourceware.org/gdb/onlinedocs/gdb/Tracepoint-Packets.html#qTfSTM

6 years agoAutomatic date update in version.in
GDB Administrator [Thu, 22 Mar 2018 00:00:35 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoAdd myself as a write-after-approval GDB maintainer.
Pedro Franco de Carvalho [Wed, 21 Mar 2018 20:24:02 +0000 (17:24 -0300)]
Add myself as a write-after-approval GDB maintainer.

gdb/ChangeLog:

2018-03-21  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>

* MAINTAINERS (Write After Approval): Add Pedro Franco de
Carvalho.

6 years agoDT_FLAGS_1: Add Solaris bits
H.J. Lu [Wed, 21 Mar 2018 19:55:40 +0000 (12:55 -0700)]
DT_FLAGS_1: Add Solaris bits

The following bits in DT_FLAGS_1 are used by Solaris:

 #define DF_1_KMOD       0x10000000 /* kernel module */
 #define DF_1_WEAKFILTER 0x20000000 /* apply weak binding to DT_FILTER */
 #define DF_1_NOCOMMON   0x40000000 /* no COMMON symbols exist */

binutils/

* readelf.c (process_dynamic_section): Also dump DF_1_KMOD,
DF_1_WEAKFILTER and DF_1_NOCOMMON.

include/

* elf/common.h (DF_1_KMOD): New.
(DF_1_WEAKFILTER): Likewise.
(DF_1_NOCOMMON): Likewise.

6 years agoS390: Make IPA recognize tdescs with guarded storage
Andreas Arnez [Wed, 21 Mar 2018 16:41:45 +0000 (17:41 +0100)]
S390: Make IPA recognize tdescs with guarded storage

The in-process agent does not handle tdescs with guarded storage yet.
This is fixed.

gdb/gdbserver/ChangeLog:

* linux-s390-ipa.c (get_ipa_tdesc): Add handling for
S390_TDESC_GS.
* linux-s390-low.c (s390_get_ipa_tdesc_idx): Likewise.
(initialize_low_tracepoint): Call init_registers_s390x_gs_linux64
and init_registers_s390_gs_linux64.

6 years agoS390: gdbserver: Don't write guarded storage registers
Andreas Arnez [Wed, 21 Mar 2018 16:41:45 +0000 (17:41 +0100)]
S390: gdbserver: Don't write guarded storage registers

On S390, the guarded storage register set is only valid if guarded storage
is active.  Reading/writing the register set yields errors if this is not
the case.  Then gdbserver emits warnings like these:

  Warning: ptrace(regsets_store_inferior_registers): No data available

Apart from confusing the user, this can also lead to test case failures
due to unexpected output.  To suppress this, make the guarded storage
regsets read-only for now.

gdb/gdbserver/ChangeLog:

* linux-s390-low.c (s390_fill_gs): Remove function.
(s390_fill_gsbc): Remove function.
(s390_regsets): Set fill functions for the guarded storage regsets
to NULL.

6 years agoS390: Enable re-attaching with native-extended-gdbserver
Andreas Arnez [Wed, 21 Mar 2018 16:41:44 +0000 (17:41 +0100)]
S390: Enable re-attaching with native-extended-gdbserver

On s390x, when running attach.exp with native-extended-gdbserver,
gdbserver crashes in find_regno like this:

  .../regcache.c:252: A problem internal to GDBserver has been detected.
  Unknown register tdb0 requested

On the GDB side it looks like this:

  (gdb) attach 31568
  Attaching to process 31568
  Remote connection closed

The test case attempts to attach to a new process via the already running
gdbserver.  Thus s390_arch_setup is called a second time, and that's where
the problem occurs.  In order to determine the word width (32 or 64 bits),
s390_arch_setup reads the pswm register through the regcache.  For that it
uses a temporary tdesc which is supposed to work for all s390 targets,
since the actual tdesc has not been determined yet.  But in this second
round this doesn't work, because s390_regsets has been updated already and
now contains regsets not described by the temporary tdesc, such as the one
containing tdb0.

This is fixed by rearranging the logic in s390_arch_setup.

gdb/gdbserver/ChangeLog:

* linux-s390-low.c (s390_get_hwcap): Replace tdesc parameter by
the word size.  Add comment.
(s390_get_wordsize): New function.
(s390_arch_setup): No longer select a temporary tdesc to fetch the
pswm with it.  Instead, use s390_get_wordsize to determine the
word size first and derive the correct tdesc from that directly.

6 years agoPowerPC64 synthetic symbols
Alan Modra [Wed, 21 Mar 2018 02:52:26 +0000 (13:22 +1030)]
PowerPC64 synthetic symbols

STT_FILE and a bunch of other symbol types aren't proper symbols to
mark the start of a function's code.

* elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Trim uninteresting
symbols.  Use size_t counts.  Delete redundant opd test.

6 years agoDelete unused elf32-ppc.c code
Alan Modra [Mon, 19 Mar 2018 09:49:50 +0000 (20:19 +1030)]
Delete unused elf32-ppc.c code

Local symbols were being read but not used.

* elf32-ppc.c (ppc_elf_tls_optimize): Delete locsyms.

6 years agoMake tls_mask unsigned in elf32-ppc.c
Alan Modra [Mon, 19 Mar 2018 09:44:05 +0000 (20:14 +1030)]
Make tls_mask unsigned in elf32-ppc.c

* elf32-ppc.c (struct ppc_elf_link_hash_entry): Make tls_mask
field unsigned.
(update_local_sym_info): Likewise for local_got_tls_masks.
(ppc_elf_tls_optimize): Likewise for lgot_masks.

6 years agoCorrect multi-toc tprel relocs
Alan Modra [Sat, 17 Mar 2018 06:52:39 +0000 (17:22 +1030)]
Correct multi-toc tprel relocs

Commit f15d0b545b trimmed some unnecessary TPREL relocs, but missed
changing another place where they are allocated.

* elf64-ppc.c (ppc_size_one_stub): Fix comment typo.
(ppc64_elf_layout_multitoc): Allocate relocs for tprel as we
do in size_dynamic_sections.

6 years agoDon't exceed reloc array bounds
Alan Modra [Sat, 17 Mar 2018 07:19:12 +0000 (17:49 +1030)]
Don't exceed reloc array bounds

* elf64-ppc.c (ppc64_elf_relocate_section): Don't access rel[1]
without first checking array bounds.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.

6 years agoAutomatic date update in version.in
GDB Administrator [Wed, 21 Mar 2018 00:00:41 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agold/testsuite: XFAIL pr20995-2 on aarch64*-*-elf*
Roland McGrath [Tue, 20 Mar 2018 20:31:05 +0000 (13:31 -0700)]
ld/testsuite: XFAIL pr20995-2 on aarch64*-*-elf*

ld/
* testsuite/ld-elf/shared.exp (pr20995-2): XFAIL on aarch64*-*-elf*,
another target without RELRO.

6 years agoFix misleading indentation error.
Stephen Roberts [Tue, 20 Mar 2018 16:24:37 +0000 (16:24 +0000)]
Fix misleading indentation error.

This patch fixes a compile error introduced by my previous change, which
caused the indentation of the following code block to become incorrect.

ChangeLog:

2018-03-20  Stephen Roberts  <stephen.roberts@arm.com>

        * gdb/symtab.c (find_pc_sect_line): fixed indentation.

6 years agoAdjust testsuite/ld-plugin/pr22983.d
H.J. Lu [Tue, 20 Mar 2018 16:20:57 +0000 (09:20 -0700)]
Adjust testsuite/ld-plugin/pr22983.d

* testsuite/ld-plugin/pr22983.d: Allow leading underscore as
well as extra lines between symbols.

6 years agoReplace the linear search in find_pc_sect_line with a binary search.
Stephen Roberts [Tue, 20 Mar 2018 13:54:54 +0000 (13:54 +0000)]
Replace the linear search in find_pc_sect_line with a binary search.

This patch addresses slowness when setting breakpoints, especially in
heavily templatized code. Profiling showed that find_pc_sect_line in
symtab.c was the performance bottleneck.  The original logic performed a
linear search over ordered data. This patch uses a binary search, as
suggested by comments around the function.  There are no behavioural
changes, but gdb is now faster at setting breakpoints in template code.
Tested using on make check on an x86 target. The optimisation speeds up
the included template-breakpoints.py performance test by a factor of 7
on my machine.

ChangeLog:

2018-03-20  Stephen Roberts  <stephen.roberts@arm.com>

        * gdb/symtab.c (find_pc_sect_line): now uses binary search.

gdb/testsuite/

        * gdb.perf/template-breakpoints.cc: New file.
        * gdb.perf/template-breakpoints.exp: New file.
        * gdb.perf/template-breakpoints.py: New file.

6 years agogc.exp: Remove extraneous LD flags from the personality test
Maciej W. Rozycki [Tue, 20 Mar 2018 11:48:59 +0000 (11:48 +0000)]
gc.exp: Remove extraneous LD flags from the personality test

Complement commit 8988502d7534 ("MIPS/LD/testsuite: Correct dynamic
links with VR4100, VR4300 and VR5000") and commit bf48520113c4 ("gc.exp:
Fix a typo: $LFLAGS -> $LDFLAGS"), and remove extraneous additional LD
flags explicitly passed to the personality test on invocation.  This
passing has accidentally leaked from a WIP version of the former change.

With the actual version committed the $LDFLAGS global variable is used
instead for `run_dump_test' to use implicitly, so that `-call_shared'
precedes `-lpersonality' on the linker's command line, as otherwise a
shared `libpersonality.so' library wouldn't be considered for linking,
causing the test to fail.

ld/
* testsuite/ld-gc/gc.exp: Remove extraneous LD flags from the
personality test.

6 years agoUpdated Russian and Spanish translations for the binutils/ sub-directory.
Nick Clifton [Tue, 20 Mar 2018 11:05:18 +0000 (11:05 +0000)]
Updated Russian and Spanish translations for the binutils/ sub-directory.

* po/es.po: Updated Spanish translation.
* po/ru.po: Updated Russian translation.

6 years agoSet non_ir_ref_dynamic if a symbol is made dynamic
H.J. Lu [Tue, 20 Mar 2018 10:51:26 +0000 (03:51 -0700)]
Set non_ir_ref_dynamic if a symbol is made dynamic

If a symbol is made dynamic by --dynamic-list, it has non-IR reference.

bfd/

PR ld/22983
* elflink.c (bfd_elf_link_mark_dynamic_symbol): Set
non_ir_ref_dynamic if a symbol is made dynamic by --dynamic-list.

ld/

PR ld/22983
* testsuite/ld-plugin/lto.exp: Run PR ld/22983 test.
* testsuite/ld-plugin/pr22983.d: New file.
* testsuite/ld-plugin/pr22983.t: Likewise.
* testsuite/ld-plugin/pr22983a.c: Likewise.
* testsuite/ld-plugin/pr22983b.c: Likewise.

6 years agoAutomatic date update in version.in
GDB Administrator [Tue, 20 Mar 2018 00:00:38 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoSupport bare-identifier field initializers in Rust
Tom Tromey [Mon, 19 Mar 2018 16:25:05 +0000 (10:25 -0600)]
Support bare-identifier field initializers in Rust

In Rust one can initialize a struct member from an identically-named
local variable by simply mentioning the member name in the
initializer, like:

    let x = 0;
    let y = Struct { x };

This initializes "Struct::x" from "x".

This patch adds this form of initializer to the Rust expression parser
and adds a test.

Tested on x86-64 Fedora 26 using rustc 1.23.

2018-03-19  Tom Tromey  <tom@tromey.com>

* rust-exp.y (struct_expr_tail, struct_expr_list): Add plain
"IDENT" production.

2018-03-19  Tom Tromey  <tom@tromey.com>

* gdb.rust/simple.rs (main): Add local variables field1, field2,
y0.
* gdb.rust/simple.exp: Test bare identifier form of struct
initializer.

6 years agoConvert observers to C++
Tom Tromey [Sun, 2 Oct 2016 16:50:20 +0000 (10:50 -0600)]
Convert observers to C++

This converts observers from using a special source-generating script
to be plain C++.  This version of the patch takes advantage of C++11
by using std::function and variadic templates; incorporates Pedro's
patches; and renames the header file to "observable.h" (this change
eliminates the need for a clean rebuild).

Note that Pedro's patches used a template lambda in tui-hooks.c, but
this failed to compile on some buildbot instances (presumably due to
differing C++ versions); I replaced this with an ordinary template
function.

Regression tested on the buildbot.

gdb/ChangeLog
2018-03-19  Pedro Alves  <palves@redhat.com>
    Tom Tromey  <tom@tromey.com>

* unittests/observable-selftests.c: New file.
* common/observable.h: New file.
* observable.h: New file.
* ada-lang.c, ada-tasks.c, agent.c, aix-thread.c, annotate.c,
arm-tdep.c, auto-load.c, auxv.c, break-catch-syscall.c,
breakpoint.c, bsd-uthread.c, cli/cli-interp.c, cli/cli-setshow.c,
corefile.c, dummy-frame.c, event-loop.c, event-top.c, exec.c,
extension.c, frame.c, gdbarch.c, guile/scm-breakpoint.c,
infcall.c, infcmd.c, inferior.c, inflow.c, infrun.c, jit.c,
linux-tdep.c, linux-thread-db.c, m68klinux-tdep.c,
mi/mi-cmd-break.c, mi/mi-interp.c, mi/mi-main.c, objfiles.c,
ppc-linux-nat.c, ppc-linux-tdep.c, printcmd.c, procfs.c,
python/py-breakpoint.c, python/py-finishbreakpoint.c,
python/py-inferior.c, python/py-unwind.c, ravenscar-thread.c,
record-btrace.c, record-full.c, record.c, regcache.c, remote.c,
riscv-tdep.c, sol-thread.c, solib-aix.c, solib-spu.c, solib.c,
spu-multiarch.c, spu-tdep.c, stack.c, symfile-mem.c, symfile.c,
symtab.c, thread.c, top.c, tracepoint.c, tui/tui-hooks.c,
tui/tui-interp.c, valops.c: Update all users.
* tui/tui-hooks.c (tui_bp_created_observer)
(tui_bp_deleted_observer, tui_bp_modified_observer)
(tui_inferior_exit_observer, tui_before_prompt_observer)
(tui_normal_stop_observer, tui_register_changed_observer):
Remove.
(tui_observers_token): New global.
(attach_or_detach, tui_attach_detach_observers): New functions.
(tui_install_hooks, tui_remove_hooks): Use
tui_attach_detach_observers.
* record-btrace.c (record_btrace_thread_observer): Remove.
(record_btrace_thread_observer_token): New global.
* observer.sh: Remove.
* observer.c: Rename to observable.c.
* observable.c (namespace gdb_observers): Define new objects.
(observer_debug): Move into gdb_observers namespace.
(struct observer, struct observer_list, xalloc_observer_list_node)
(xfree_observer_list_node, generic_observer_attach)
(generic_observer_detach, generic_observer_notify): Remove.
(_initialize_observer): Update.
Don't include observer.inc.
* Makefile.in (generated_files): Remove observer.h, observer.inc.
(clean mostlyclean): Likewise.
(observer.h, observer.inc): Remove targets.
(SUBDIR_UNITTESTS_SRCS): Add observable-selftests.c.
(COMMON_SFILES): Use observable.c, not observer.c.
* .gitignore: Remove observer.h.

gdb/doc/ChangeLog
2018-03-19  Tom Tromey  <tom@tromey.com>

* observer.texi: Remove.

gdb/testsuite/ChangeLog
2018-03-19  Tom Tromey  <tom@tromey.com>

* gdb.gdb/observer.exp: Remove.

6 years agoTestsuite: Fix ambiguous "break" due to libinproctrace
Andreas Arnez [Mon, 19 Mar 2018 12:13:09 +0000 (13:13 +0100)]
Testsuite: Fix ambiguous "break" due to libinproctrace

Some of GDB's trace test cases define a function end() and place a
breakpoint there with "break end".  However, when libinproctrace is linked
to the binary, there are multiple methods named "end", such as
std::string::end() from the C++ library or format_pieces::end() from
common/format.h.  GDB then creates multiple breakpoints instead of just a
single one, and some FAILs result, such as these:

  FAIL: gdb.trace/trace-mt.exp: ftrace on: break end
  FAIL: gdb.trace/trace-mt.exp: ftrace off: break end

Fix this by adding the "-qualified" option to the break commands.  For
consistency, change all occurrences of "break end" (and similar) in all
trace test cases, even if the current behavior does not cause problems.
Also, consequently use the gdb_breakpoint convenience proc.

gdb/testsuite/ChangeLog:

* gdb.trace/actions-changed.exp: Call gdb_breakpoint with the
"qualified" option when setting breakpoints.
* gdb.trace/backtrace.exp: Likewise.
* gdb.trace/circ.exp: Likewise.
* gdb.trace/collection.exp: Likewise.
* gdb.trace/disconnected-tracing.exp: Likewise.
* gdb.trace/ftrace-lock.exp: Likewise.
* gdb.trace/ftrace.exp: Likewise.
* gdb.trace/infotrace.exp: Likewise.
* gdb.trace/packetlen.exp: Likewise.
* gdb.trace/passc-dyn.exp: Likewise.
* gdb.trace/qtro.exp: Likewise.
* gdb.trace/read-memory.exp: Likewise.
* gdb.trace/report.exp: Likewise.
* gdb.trace/signal.exp: Likewise.
* gdb.trace/status-stop.exp: Likewise.
* gdb.trace/strace.exp: Likewise.
* gdb.trace/tfind.exp: Likewise.
* gdb.trace/trace-break.exp: Likewise.
* gdb.trace/trace-condition.exp: Likewise.
* gdb.trace/trace-mt.exp: Likewise.
* gdb.trace/tstatus.exp: Likewise.
* gdb.trace/tsv.exp: Likewise.
* gdb.trace/unavailable-dwarf-piece.exp: Likewise.
* gdb.trace/unavailable.exp: Likewise.
* gdb.trace/while-dyn.exp: Likewise.

6 years agoUpdated Spanish translation for the bfd/ sub-directory, and updated Ukranian translat...
Nick Clifton [Mon, 19 Mar 2018 10:49:13 +0000 (10:49 +0000)]
Updated Spanish translation for the bfd/ sub-directory, and updated Ukranian translation for the gas/ sub-directory.

bfd * po/es.po: Updated Spanish translation.
gas * po/uk.po: Updated Ukranian translation.

6 years agoRemove some cleanups from solib.c
Tom Tromey [Fri, 10 Nov 2017 20:48:48 +0000 (13:48 -0700)]
Remove some cleanups from solib.c

This removes some cleanups from solib.c, replacing them with
gdb::def_vector.

Regression tested by the buildbot.

gdb/ChangeLog
2018-03-18  Tom Tromey  <tom@tromey.com>

* solib.c (gdb_bfd_lookup_symbol_from_symtab): Use
gdb::def_vector.
(bfd_lookup_symbol_from_dyn_symtab): Likewise.

6 years agoAutomatic date update in version.in
GDB Administrator [Mon, 19 Mar 2018 00:00:24 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoAutomatic date update in version.in
GDB Administrator [Sun, 18 Mar 2018 00:01:24 +0000 (00:01 +0000)]
Automatic date update in version.in

6 years agoChange auto_load_objfile_script_1 to use std::string
Tom Tromey [Fri, 16 Mar 2018 23:02:11 +0000 (17:02 -0600)]
Change auto_load_objfile_script_1 to use std::string

This replaces some manual string manipulation in
auto_load_objfile_script_1 with std::string, simplifying the code and
allowing the removal of some cleanups.

Tested by the buildbot.

2018-03-17  Tom Tromey  <tom@tromey.com>

* auto-load.c (auto_load_objfile_script_1): Use std::string.

6 years agoRemove target_fileio_close_cleanup
Tom Tromey [Fri, 23 Feb 2018 21:42:26 +0000 (14:42 -0700)]
Remove target_fileio_close_cleanup

This removes target_fileio_close_cleanup in favor of a new RAII class.
The new class is similar to scoped_fd but calls
target_fileio_close_cleanup rather than close.

Regression tested by the buildbot.

gdb/ChangeLog
2018-03-17  Tom Tromey  <tom@tromey.com>

* target.c (class scoped_target_fd): New.
(target_fileio_close_cleanup): Remove.
(target_fileio_read_alloc_1): Use scoped_target_fd.

6 years agoAutomatic date update in version.in
GDB Administrator [Sat, 17 Mar 2018 00:00:16 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoAdd silent Makefile rules
Simon Marchi [Fri, 16 Mar 2018 20:06:23 +0000 (16:06 -0400)]
Add silent Makefile rules

Many projects (e.g. the Linux kernel) and build systems use "silent"
rules, which means that they'll only print a summary of what's being
done instead of printing all the detailed command lines.  While chatting
on the #gdb IRC channel, I realized a few people (including me) thought
it would be nice to have it in GDB too.

The idea is that too much text is not useful, the important information
gets lost.  If there's only the essential information, it's more likely
to be useful.  Most of the time, when I look at the build output, it's
to see how it's progressing.  By just printing a brief summary of each
operation, I can easily spot what's currently being compiled and
therefore how the build progresses (with time you know the order in
which files are compiled almost by heart).

As with other projects (Linux, automake-based things, probably others),
it's possible to print the complete command lines by passing V=1 to make
(or any other non-zero value).

I had one hesitation about this: when people report build failures, we
are more likely to miss the full compile command line.  We'll probably
sometimes need to ask people to include the build log with "make V=1".
I don't think it's a big downside, if other projects the size of the
Linux kernel can live with it, I'm sure we can too.

gdb/ChangeLog:

* silent-rules.mk: New.
* Makefile.in: Include silent-rules.mk
(srcdir, VPATH, top_srcdir): Move up.
(COMPILE): Add ECHO_CXX.
(test-cp-name-parser$(EXEEXT)): Add ECHO_CXXLD.
(init.c): Add ECHO_INIT_C.
(gdb$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
(version.c): Add ECHO_GEN.
(printcmd.o): Add ECHO_CXX.
(target-float.o): Add ECHO_CXX.
(ada-exp.o): Add ECHO_CXX.
(stamp-xml): Add SILENCE and ECHO_GEN_XML_BUILTIN.
(insight$(EXEEXT)): Add ECHO_CXXLD.
* gnulib/configure.ac: Add AM_SILENT_RULES.
* gnulib/aclocal.m4: Re-generate.
* gnulib/configure: Re-generate.
* gnulib/import/Makefile.in: Re-generate.

gdb/gdbserver/ChangeLog:

* Makefile.in: Include silent-rules.mk.
(srcdir, abs_top_srcdir, abs_srcdir, VPATH): Move up.
(COMPILE): Add ECHO_CXX.
(gdbserver$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
(gdbreplay$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
($(IPA_LIB)): Add SILENCE and ECHO_CXXLD.
(version-generated.c): Add ECHO_GEN.
(stamp-xml): Add SILENCE and ECHO_GEN_XML_BUILTIN_GENERATED.
(IPAGENT_COMPILE): Add ECHO_CXX.
(%-generated.c): Add ECHO_REGDAT.

6 years agoRemove make_cleanup_free_section_addr_info
Tom Tromey [Tue, 13 Mar 2018 03:50:33 +0000 (21:50 -0600)]
Remove make_cleanup_free_section_addr_info

This removes make_cleanup_free_section_addr_info.  Instead -- per
Simon's suggestion -- this changes section_addr_info to be a
std::vector.

Regression tested by the buildbot.

gdb/ChangeLog
2018-03-16  Tom Tromey  <tom@tromey.com>

* xcoffread.c (xcoff_symfile_offsets): Change type of "addrs".
* utils.h (make_cleanup_free_section_addr_info): Don't declare.
* utils.c (do_free_section_addr_info)
(make_cleanup_free_section_addr_info): Remove.
* symfile.h (struct other_sections): Add constructor.
(struct section_addr_info): Remove.
(section_addr_info): New typedef.
(struct sym_fns) <sym_offsets>: Change type of parameter.
(build_section_addr_info_from_objfile)
(relative_addr_info_to_section_offsets, addr_info_make_relative)
(default_symfile_offsets, symbol_file_add)
(symbol_file_add_from_bfd)
(build_section_addr_info_from_section_table): Update.
(alloc_section_addr_info, free_section_addr_info): Don't declare.
* symfile.c (alloc_section_addr_info): Remove.
(build_section_addr_info_from_section_table): Change return type.
Update.
(build_section_addr_info_from_bfd)
(build_section_addr_info_from_objfile): Likewise.
(free_section_addr_info): Remove.
(relative_addr_info_to_section_offsets): Change type of "addrs".
(addrs_section_compar): Now a std::sort comparator.
(addrs_section_sort): Change return type.
(addr_info_make_relative): Change type of "addrs".  Update.
(default_symfile_offsets, syms_from_objfile_1)
(syms_from_objfile, symbol_file_add_with_addrs): Likewise.
(symbol_file_add_separate): Update.
(symbol_file_add): Change type of "addrs".  Update.
(add_symbol_file_command): Update.  Remove cleanups.
* symfile-mem.c (symbol_file_add_from_memory): Update.  Remove
cleanups.
* symfile-debug.c (debug_sym_offsets): Change type of "info".
* solib.c (solib_read_symbols): Update.
* objfiles.c (objfile_relocate): Update.  Remove cleanups.
* machoread.c (macho_symfile_offsets): Update.
* jit.c (jit_bfd_try_read_symtab): Update.

6 years agoFix tspeed test case: copy libinproctrace to target
Andreas Arnez [Fri, 16 Mar 2018 19:40:38 +0000 (20:40 +0100)]
Fix tspeed test case: copy libinproctrace to target

The tspeed test case does not execute correctly because libinproctrace.so
is not copied to the target.  This is fixed.

gdb/testsuite/ChangeLog:

* gdb.trace/tspeed.exp: Add invocation of gdb_load_shlib to ensure
that libinproctrace is copied to the target.

6 years agoRISC-V: Emit better warning for unknown CSR.
Jim Wilson [Fri, 16 Mar 2018 17:03:57 +0000 (10:03 -0700)]
RISC-V: Emit better warning for unknown CSR.

gas/
* config/tc-riscv.c (check_absolute_expr): Expand comment.  New
parameter maybe_csr.  If maybe_csr and O_symbol, print CSR name.
(riscv_ip): Add new argument to check_absolute_expr calls.
* testsuite/gas/riscv/bad-csr.d: New.
* testsuite/gas/riscv/bad-csr.l: New.
* testsuite/gas/riscv/bad-csr.s: New.

6 years agoAdd selftest for substitute_path_component
Simon Marchi [Fri, 16 Mar 2018 02:01:56 +0000 (22:01 -0400)]
Add selftest for substitute_path_component

This patch add some unit tests for the substitute_path_component
function.

gdb/ChangeLog:

* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/utils-selftests.c.
* unittests/utils-selftests.c: New file.

6 years agoAutomatic date update in version.in
GDB Administrator [Fri, 16 Mar 2018 00:00:29 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoxtensa: bfd: fix assertion in xlate_offset_with_removed_text
Max Filippov [Thu, 15 Mar 2018 17:35:59 +0000 (10:35 -0700)]
xtensa: bfd: fix assertion in xlate_offset_with_removed_text

Linking objects containing jumps targeting the end of a section triggers
assertion in the xlate_offset_with_removed_text. Such jumps may be
generated by a compiler as a dead code and not removed at -O0. Allow
such jumps.
While at it make bsearch argument match comparison function expectations
and use bfd_vma for address fields in the struct xlate_map_entry.

bfd/
2018-03-15  Max Filippov  <jcmvbkbc@gmail.com>

* elf32-xtensa.c (xlate_map_entry): Change types of address
fields from 'unsigned' to 'bfd_vma'.
(xlate_offset_with_removed_text): Use struct xlate_map_entry as
the key argument to bsearch. Allow offsets past the end of a
section, use the last map entry for translation of such offsets.

6 years agoRISC-V: Don't enable relaxation in relocatable link
Andreas Schwab [Sun, 11 Mar 2018 13:25:30 +0000 (14:25 +0100)]
RISC-V: Don't enable relaxation in relocatable link

PR ld/22949
* emultempl/riscvelf.em (riscv_elf_before_allocation): Don't
enable relaxation in relocatable link.

6 years agonds32: Remove the unsupported target feature.
Kuan-Lin Chen [Thu, 15 Mar 2018 06:50:51 +0000 (14:50 +0800)]
nds32: Remove the unsupported target feature.

6 years agoAutomatic date update in version.in
GDB Administrator [Thu, 15 Mar 2018 00:00:38 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoMissing testcase files for last commit.
Jim Wilson [Wed, 14 Mar 2018 23:05:44 +0000 (16:05 -0700)]
Missing testcase files for last commit.

6 years agoRISC-V: Add .insn support.
Jim Wilson [Wed, 14 Mar 2018 23:04:03 +0000 (16:04 -0700)]
RISC-V: Add .insn support.

gas/ChangeLog
2018-03-07  Kito Cheng  <kito.cheng@gmail.com>
* config/tc-riscv.c (opcode_name_list): New.
(opcode_names_hash): Likewise.
(init_opcode_names_hash): Likewise.
(opcode_name_lookup): Likewise.
(validate_riscv_insn): New argument length, and add new format
which used in .insn directive.
(md_begin): Refine hash table initialization logic into
init_opcode_hash.
(init_opcode_hash): New.
(my_getOpcodeExpression): Parse opcode name for .insn.
(riscv_ip): New argument hash, able to handle .insn directive.
(s_riscv_insn): Handler for .insn directive.
(riscv_pseudo_table): New entry for .insn.
* doc/c-riscv.texi: Add documentation for .insn directive.
* testsuite/gas/riscv/insn.d: Add testcase for .insn directive.
* testsuite/gas/riscv/insn.s: Likewise.

include/ChangeLog
2018-03-07  Kito Cheng  <kito.cheng@gmail.com>
* opcode/riscv.h (OP_MASK_FUNCT3): New.
(OP_SH_FUNCT3): Likewise.
(OP_MASK_FUNCT7): Likewise.
(OP_SH_FUNCT7): Likewise.
(OP_MASK_OP2): Likewise.
(OP_SH_OP2): Likewise.
(OP_MASK_CFUNCT4): Likewise.
(OP_SH_CFUNCT4): Likewise.
(OP_MASK_CFUNCT3): Likewise.
(OP_SH_CFUNCT3): Likewise.
(riscv_insn_types): Likewise.

opcodes/ChangeLog
2018-03-07  Kito Cheng  <kito.cheng@gmail.com>
* riscv-opc.c (riscv_insn_types): New.

6 years agoSpecial case NULL when using printf's %s format
Tom Tromey [Thu, 15 Feb 2018 03:11:16 +0000 (20:11 -0700)]
Special case NULL when using printf's %s format

This changes the printf command's %s and %ls formats to special-case
NULL, and print "(null)" for these.  This is PR cli/14977.  This
behavior seems a bit friendlier; I was undecided on whether other
invalid pointers should be handled specially somehow, so for the time
being I've left those out.

gdb/ChangeLog
2018-03-14  Tom Tromey  <tom@tromey.com>

PR cli/14977:
* printcmd.c (printf_c_string, printf_wide_c_string): Special case
for NULL.

gdb/gdbserver/ChangeLog
2018-03-14  Tom Tromey  <tom@tromey.com>

PR cli/14977:
* ax.c (ax_printf): Special case for NULL.

gdb/testsuite/ChangeLog
2018-03-14  Tom Tromey  <tom@tromey.com>

PR cli/14977:
* gdb.base/printcmds.exp (test_printf): Add printf test of %s with
a null pointer.
* gdb.base/wchar.exp: Likewise.

6 years agoAllow - in %p for printf
Tom Tromey [Wed, 14 Feb 2018 18:12:17 +0000 (11:12 -0700)]
Allow - in %p for printf

PR cli/19918 points out that a printf format like "%-5p" will cause a
gdb crash.  The bug is problem is that printf_pointer doesn't take the
"-" flag into account.

gdb/ChangeLog
2018-03-14  Tom Tromey  <tom@tromey.com>

PR cli/19918:
* printcmd.c (printf_pointer): Allow "-" in format.

gdb/testsuite/ChangeLog
2018-03-14  Tom Tromey  <tom@tromey.com>

PR cli/19918:
* gdb.base/printcmds.exp (test_printf): Add printf test using '-'
flag.

6 years agoAdd usage to printf command
Tom Tromey [Wed, 14 Feb 2018 17:18:25 +0000 (10:18 -0700)]
Add usage to printf command

This patch adds the "Usage:" text to the printf command's help text,
and tries to improve the text a tiny bit.

gdb/ChangeLog
2018-03-14  Tom Tromey  <tom@tromey.com>

* printcmd.c (_initialize_printcmd): Add usage to printf.

6 years agoUpdate my email address
Yao Qi [Wed, 14 Mar 2018 13:36:40 +0000 (13:36 +0000)]
Update my email address

gdb:

2018-03-14  Yao Qi  <qiyao@sourceware.org>

* MAINTAINERS: Update my email address.

6 years agoPowerPC64 debian bug 886264, out-of-line save/restore functions
Alan Modra [Wed, 14 Mar 2018 11:39:33 +0000 (22:09 +1030)]
PowerPC64 debian bug 886264, out-of-line save/restore functions

This calculation in relocate_section

      if (stub_entry->stub_type == ppc_stub_save_res)
relocation += (stub_sec->output_offset
       + stub_sec->output_section->vma
       + stub_sec->size - htab->sfpr->size
       - htab->sfpr->output_offset
       - htab->sfpr->output_section->vma);

to adjust from the original out-of-line save/restore function address
in sfpr to a copy at the end of stub_sec goes wrong when stub_sec is
padded, because the copy is no longer at the end of stub_sec.  The
solution is to pad before copying sfpr, so the copy is always at the
end of stub_sec.

* elf64-ppc.c (sfpr_define): Adjust for stub_sec size having
sfpr size added before defining alias symbols.
(ppc64_elf_build_stubs): Add stub section padding before
copying sfpr contents and defining save/restore alias symbols.

6 years agoGC: Also check the local debug definition section
H.J. Lu [Wed, 14 Mar 2018 11:23:24 +0000 (04:23 -0700)]
GC: Also check the local debug definition section

Extend

commit b7c871edcd83ccdc5fcd8148a7f433efd6b52255
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed May 17 07:57:15 2017 -0700

    Mark debug sections referenced by kept debug sections

to handle the local debug definition section.

bfd/

PR ld/20882
* elflink.c (elf_gc_mark_debug_section): Also check the local
debug definition section.

ld/

PR ld/20882
* testsuite/ld-gc/pr20882.d: Also dump and check .debug_abbrev
section.
* testsuite/ld-gc/pr20882b.s: Add .debug_abbrev section.

6 years agogc.exp: Fix a typo: $LFLAGS -> $LDFLAGS
H.J. Lu [Wed, 14 Mar 2018 11:07:54 +0000 (04:07 -0700)]
gc.exp: Fix a typo: $LFLAGS -> $LDFLAGS

* testsuite/ld-gc/gc.exp: Fix a typo: $LFLAGS -> $LDFLAGS.

6 years agoAutomatic date update in version.in
GDB Administrator [Wed, 14 Mar 2018 00:00:42 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoRemove two cleanups using std::string
Tom Tromey [Thu, 22 Feb 2018 23:31:15 +0000 (16:31 -0700)]
Remove two cleanups using std::string

This patches removes cleanups from a couple of spots by using
std::string rather than manual memory management.

Regression tested by the buildbot, though note that I don't believe
the buildbot actually exercises the machoread code.

gdb/ChangeLog
2018-03-13  Tom Tromey  <tom@tromey.com>

* machoread.c (macho_check_dsym): Change filenamep to a
std::string*.
(macho_symfile_read): Update.
* symfile.c (load_command): Use std::string.

6 years agoPrevent a buffer overrun when parsing corrupt STABS debug information.
Nick Clifton [Tue, 13 Mar 2018 17:03:04 +0000 (17:03 +0000)]
Prevent a buffer overrun when parsing corrupt STABS debug information.

PR 22957
* stabs.c (pop_binincl): Fail if the file index is off the end of
the stack.

6 years agoUpdated Russian and Brazilian Portuguese translations.
Nick Clifton [Tue, 13 Mar 2018 16:57:29 +0000 (16:57 +0000)]
Updated Russian and Brazilian Portuguese translations.

ld * po/pt_BR.po: Updated Brazilian Portuguese translation.
opcodes * po/pt_BR.po: Updated Brazilian Portuguese translation.
gas * po/ru.po: Updated Russian translation.