platform/upstream/binutils.git
6 years agoFix off-by-one error in complaint_internal
Tom Tromey [Mon, 28 May 2018 03:36:44 +0000 (21:36 -0600)]
Fix off-by-one error in complaint_internal

complaint_internal had an off-by-one error, where it would allow one
extra complaint to be issued.

gdb/ChangeLog
2018-10-04  Tom Tromey  <tom@tromey.com>

* complaints.c (complaint_internal): Correctly check complaint
count.

6 years agoRemove some leftovers from complaints
Tom Tromey [Mon, 28 May 2018 03:26:11 +0000 (21:26 -0600)]
Remove some leftovers from complaints

There were a couple of leftovers from earlier patches in
complaints.[ch].  This removes them.

gdb/ChangeLog
2018-10-04  Tom Tromey  <tom@tromey.com>

* complaints.h (struct complaints): Remove declaration.
* complaints.c (clear_complaints): Remove an unused variable.

6 years agopr23658-1.d: Also xfail ft32-* and xgate-*
H.J. Lu [Thu, 4 Oct 2018 19:06:33 +0000 (12:06 -0700)]
pr23658-1.d: Also xfail ft32-* and xgate-*

Since ft32-* and xgate-* use generic linker, SHT_NOTE sections aren't
grouped nor sorted.

PR ld/23658
* testsuite/ld-elf/pr23658-1.d: Also xfail ft32-* and xgate-*.

6 years agoAvoid pagination in attach.exp
Tom Tromey [Thu, 4 Oct 2018 17:01:53 +0000 (11:01 -0600)]
Avoid pagination in attach.exp

While re-testing the complaint series, I saw some unresolved tests in
attach.exp.  In particular, the tests were failing because the pager
was active.

This is partly a new problem, introduced because that series changes
some prints from unfiltered to filtered.  However, it is also a latent
bug, which you can see by shrinking your window very small and then
running the test.

This patch avoids the problem by passing -quiet to gdb and arranging
to set the window height and width in one other test.

Arguably instead of -quiet we should disable the pager during gdb's
welcome message.  I can do that if it seems desirable; but meanwhile
this patch is safe.

gdb/testsuite/ChangeLog
2018-10-04  Tom Tromey  <tom@tromey.com>

* gdb.base/attach.exp (test_command_line_attach_run): Use -quiet;
set width and height to 0.
(test_command_line_attach_run): Use -quiet.

6 years agoAdd self to gdb/MAINTAINERS
Rainer Orth [Thu, 4 Oct 2018 12:10:16 +0000 (14:10 +0200)]
Add self to gdb/MAINTAINERS

Joel asked me to add myself to gdb/MAINTAINERS.  Done as follows, fixing two
incorrectly indented lines on the way.  Installed on master.

* MAINTAINERS (Write After Approval): Add self.

6 years agobfd: amend ChangeLog entry
Jose E. Marchesi [Thu, 4 Oct 2018 10:16:11 +0000 (12:16 +0200)]
bfd: amend ChangeLog entry

6 years agobfd,sparc: fix the .dynsym sh_index when stripping all symbols in ld
Jose E. Marchesi [Thu, 4 Oct 2018 09:12:48 +0000 (02:12 -0700)]
bfd,sparc: fix the .dynsym sh_index when stripping all symbols in ld

The SPARC ELF BFD backend uses a hack in order to accomodate the
STT_REGISTER symbols mandated by the SPARC V9 ABI for 64-bit objects.
The hack works as follows:

- Early in `size_dynamic_symbols', it adds the dynamic STT_REGISTER
  symbols and the corresponding DT_SPARC_REGISTER tags if needed,
  i.e. if the input object has been annotated by the assembler to use
  any of the global registers requiring annotations by the ABI.

  The STT_REGISTER symbols are not local, but nevertheless they are
  added to the end of the dynlocal linked list (eek, yes) to be fixed
  "later".  This is done so the symbols are emitted in the symtab.

- Consequently, when the `sh_info' field of the .dynsym section is
  calculated in `bfd_elf_final_link' to be `local_dynsymcount + 1', it
  may have the wrong value, since the real first global symbol is the
  first STT_REGISTER symbol.

- However, this temporary inconsistency is fixed in the
  `elf64_sparc_output_arch_syms' backend hook: the sh_index is
  adjusted to its rightful value.  So all is well and good.

However the 2015 changeset

commit 8539e4e89eb4c54bb6668582cd709765a3803588
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Jan 15 19:42:59 2015 +1030

    Fix ARM fail of gap test

    ld-elf/gap test was failing due to the ARM backend attempting to output
    arch symbols when ld -s (strip all symbols) is in force.  This patch
    stops that happening and tidies the code a little.

made the `elf_backend_output_arch_syms' backend hook to not be called
when all symbols are to be stripped.  This resulted in an incorrect
sh_index for .dynsym when a link is performed with -s (strip_all), in
64-bit sparc ELF objects.

This patch moves the sh_index adjusting code from the target
`output_arch_syms' to `finish_dynamic_sections'.  It also removes the
strip_all check from `elf64_sparc_output_arch_syms', as the function
is no longer called in that case.

Tested in sparc64-linux-gnu and sparc-linux-gnu.
No regressions observed.

bfd/ChangeLog:

2018-10-04  Jose E. Marchesi  <jose.marchesi@oracle.com>

* elf64-sparc.c (elf64_sparc_output_arch_syms): Do not correct the
impact of STT_REGISTER symbols in the dynsym sh_index here...
* elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_sections): ... but
do it here.

6 years agoAvoid two uninitialized warnings from gcc
Tom Tromey [Wed, 3 Oct 2018 22:01:12 +0000 (16:01 -0600)]
Avoid two uninitialized warnings from gcc

This avoids a couple of uninitialized warnings from gcc by
initializing the object in question.  The one in coffread.c seems like
it could be a latent bug.  The one in scm-value.c is harmless, but GCC
can't see that.

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

* guile/scm-value.c (gdbscm_value_to_string): Initialize
"buffer_contents".
* coffread.c (coff_symtab_read): Initialize "newobj".

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

6 years agoRemove struct keyword in range-based for
Simon Marchi [Wed, 3 Oct 2018 18:34:18 +0000 (14:34 -0400)]
Remove struct keyword in range-based for

I get the following error with gcc 6.3.0:

/home/simark/src/binutils-gdb/gdb/dwarf2read.c: In function 'void read_func_scope(die_info*, dwarf2_cu*)':
/home/simark/src/binutils-gdb/gdb/dwarf2read.c:13838:12: error: types may not be defined in a for-range-declaration [-Werror]
       for (struct symbol *sym : template_args)
            ^~~~~~

Removing the struct keyword fixes it.

gdb/ChangeLog:

* dwarf2read.c (read_func_scope): Remove struct keyword in
range-based for.

6 years agoAdd --enable-ubsan
Tom Tromey [Sat, 18 Aug 2018 21:32:46 +0000 (15:32 -0600)]
Add --enable-ubsan

This adds --enable-ubsan to gdb's configure.  By default it is enabled
in development mode, and disabled otherwise.  This passes both
-fsanitize=undefined and -fno-sanitize-recover=undefined to
compilations, so that undefined behavior violations will be sure to
cause test failures.

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

* README: Mention --enable-ubsan.
* NEWS: Mention --enable-ubsan.
* acinclude.m4: Include sanitize.m4.
* configure: Rebuild.
* configure.ac: Call AM_GDB_UBSAN.
* sanitize.m4: New file.

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

* gdb.texinfo (Configure Options): Document --enable-ubsan.

6 years agoAvoid undefined behavior in expression dumping
Tom Tromey [Sat, 18 Aug 2018 02:34:40 +0000 (20:34 -0600)]
Avoid undefined behavior in expression dumping

-fsanitize=undefined pointed out undefined behavior in
dump_raw_expression like:

    runtime error: load of value 2887952, which is not a valid value for type 'exp_opcode'

dump_raw_expression will try to print the opcode for each element of
the expression, even when it is not valid.  To allow this, but have it
avoid undefined behavior, this patch sets the underlying type of enum
exp_opcode, and arranges for op_name to handle invalid opcodes more
nicely.

Before this patch, debug-expr.exp shows:

Dump of expression @ 0x60f000007750, before conversion to prefix form:
Language c, 8 elements, 16 bytes each.
Index                Opcode         Hex Value  String Value
    0               OP_TYPE  89  Y...............
   <unknown 3851920>  107820862850704  ..:..b..........
    2               OP_TYPE  89  Y...............
    3          OP_VAR_VALUE  40  (...............
    4     <unknown 2807568>  107820861806352  ..*..b..........
    5     <unknown 2806368>  107820861805152  `.*..b..........
    6          OP_VAR_VALUE  40  (...............
    7      UNOP_MEMVAL_TYPE  57  9...............

Afterward, the output is:

Dump of expression @ 0x4820f90, before conversion to prefix form:
Language c, 8 elements, 16 bytes each.
Index                Opcode         Hex Value  String Value
    0               OP_TYPE  89  Y...............
    1   unknown opcode: 176  75444400  .0..............
    2               OP_TYPE  89  Y...............
    3          OP_VAR_VALUE  40  (...............
    4               OP_BOOL  74616912  P.r.............
    5   unknown opcode: 128  74615680  ..r.............
    6          OP_VAR_VALUE  40  (...............
    7      UNOP_MEMVAL_TYPE  57  9...............

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

* expression.h (enum exp_opcode): Use uint8_t as base type.
* expprint.c (op_name): Handle invalid opcodes.

6 years agoAvoid undefined behavior in ada_operator_length
Tom Tromey [Sat, 18 Aug 2018 20:51:46 +0000 (14:51 -0600)]
Avoid undefined behavior in ada_operator_length

-fsanitize=undefined pointed out this error:

    runtime error: load of value 2887952, which is not a valid value for type 'exp_opcode'

This happens in gdb.ada/complete.exp when processing "complete p
my_glob".  This does not parse, so the Ada parser throws an exception;
but then the code in parse_exp_in_context_1 accepts the expression
anyway.  However, as no elements have been written to the expression,
undefined behavior results.

The fix is to notice this case in parse_exp_in_context_1.  This patch
also adds an assertion to prefixify_expression to enforce this
pre-existing constraint.

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

* parse.c (prefixify_expression): Add assert.
(parse_exp_in_context_1): Throw exception if the expression is
empty.

6 years agoAvoid undefined behavior in read_signed_leb128
Tom Tromey [Sat, 18 Aug 2018 02:19:13 +0000 (20:19 -0600)]
Avoid undefined behavior in read_signed_leb128

-fsanitize=undefined pointed out that read_signed_leb128 had an
undefined left-shift when processing the final byte of a 64-bit leb:

    runtime error: left shift of 127 by 63 places cannot be represented in type 'long int'

and an undefined negation:

    runtime error: negation of -9223372036854775808 cannot be represented in type 'long int'; cast to an unsigned type to negate this value to itself

Both of these problems are readily avoided by havinng
read_signed_leb128 work in an unsigned type, and then casting to the
signed type at the return.

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

* dwarf2read.c (read_signed_leb128): Work in ULONGEST.

6 years agoAvoid undefined behavior in parse_number
Tom Tromey [Mon, 30 Jul 2018 02:23:33 +0000 (20:23 -0600)]
Avoid undefined behavior in parse_number

-fsanitize=undefined pointed out that c-exp.y relied on undefined
behavior here:

      if (c != 'l' && c != 'u')
n *= base;

...when a large hex constant "just fit" into a LONGEST, causing the
high bit to be set.

This fixes the problem by having the function work in an unsigned
type.

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

* c-exp.y (parse_number): Work in unsigned.  Remove casts.

6 years agoAvoid undefined behavior in read_subrange_type
Tom Tromey [Sun, 29 Jul 2018 23:29:24 +0000 (17:29 -0600)]
Avoid undefined behavior in read_subrange_type

-fsanitize=undefined pointed out an undefined shift of a negative
value in read_subrange_type.  The fix is to do the work in an unsigned
type, where this is defined.

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

* dwarf2read.c (read_subrange_type): Make "negative_mask"
unsigned.

6 years agoAvoid undefined behavior in extract_integer
Tom Tromey [Sun, 29 Jul 2018 23:16:03 +0000 (17:16 -0600)]
Avoid undefined behavior in extract_integer

-fsanitize=undefined showed that extract_integer could left-shift a
negative value, which is undefined.  This patch fixes the problem by
doing all the work in an unsigned type.  This relies on
implementation-defined behavior, but I tend to think we are on safe
ground there.  (Also, if need be, violations of this could probably be
detected, either by configure or by a static_assert.)

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

* findvar.c (extract_integer): Do work in an unsigned type.

6 years agoUse unsigned as base type for some enums
Tom Tromey [Fri, 27 Jul 2018 01:52:47 +0000 (19:52 -0600)]
Use unsigned as base type for some enums

-fsanitize=undefined complains about using operator~ on various enum
types that are used with DEF_ENUM_FLAGS_TYPE.  This patch fixes these
problems by explicitly setting the base type for these enums to
unsigned.  It also adds a static assert to enum_flags to ensure that
future enums used this way have an unsigned underlying type.

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

* common/enum-flags.h (enum_flags::operator~): Add static assert.
* symfile-add-flags.h (enum symfile_add_flag): Use unsigned as
base type.
* objfile-flags.h (enum objfile_flag): Use unsigned as base type.
* gdbtypes.h (enum type_instance_flag_value): Use unsigned as base
type.
* c-lang.h (enum c_string_type_values): Use unsigned as base
type.
* btrace.h (enum btrace_thread_flag): Use unsigned as base type.

6 years agoChange dwarf2_frame_state_reg_info::reg to be std::vector
Tom Tromey [Tue, 28 Aug 2018 22:14:52 +0000 (16:14 -0600)]
Change dwarf2_frame_state_reg_info::reg to be std::vector

This changes dwarf2_frame_state_reg_info::reg to be a std::vector.
This avoids passing NULL to memcpy in the copy constructor when the
original object does not have any registers.

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

* dwarf2-frame.h (dwarf2_frame_state_reg_info)
<~dwarf2_frame_state_reg_info>: Update.
<dwarf2_frame_state_reg_info>: Update.
<alloc_regs>: Add assertion.  Update.
<reg>: Now a std::vector.
<num_regs>: Remove.
<swap>: Update.
* dwarf2-frame.c (dwarf2_restore_rule, execute_cfa_program)
(execute_cfa_program_test, dwarf2_frame_cache): Update.

6 years agoDo not pass NULL to memcpy
Tom Tromey [Thu, 26 Jul 2018 23:48:40 +0000 (17:48 -0600)]
Do not pass NULL to memcpy

-fsanitize=undefined pointed out a spot that passes NULL to memcpy,
which is undefined behavior according to the C standard.

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

* namespace.c (add_using_directive): Don't pass NULL to memcpy.

6 years agoELF: Add testcases for PR ld/23658
H.J. Lu [Wed, 3 Oct 2018 21:11:43 +0000 (14:11 -0700)]
ELF: Add testcases for PR ld/23658

Add testcases to verify that all SHT_NOTE sections with the same section
alignment are placed in a single PT_NOTE segment.

PR ld/23658
* testsuite/ld-elf/pr23658-1.d: New file.
* testsuite/ld-elf/pr23658-1a.s: Likewise.
* testsuite/ld-elf/pr23658-1b.s: Likewise.
* testsuite/ld-elf/pr23658-1c.s: Likewise.
* testsuite/ld-elf/pr23658-1d.s: Likewise.
* testsuite/ld-elf/pr23658-2.rd: Likewise.
* testsuite/ld-elf/pr23658-3.d: Likewise.
* testsuite/ld-elf/pr23658-3.s: Likewise.
* testsuite/ld-elf/pr23658-3.t: Likewise.
* testsuite/ld-elf/shared.exp: Run PR ld/23658 tests.

6 years agotid-parse.c tid_is_in_list correct 'See' comment.
Philippe Waroquiers [Wed, 3 Oct 2018 20:27:52 +0000 (22:27 +0200)]
tid-parse.c tid_is_in_list correct 'See' comment.

Refer to tid-parse.h and tid_is_in_list is explained there.

6 years agoELF: Group and sort output note sections by section alignments
H.J. Lu [Wed, 3 Oct 2018 20:25:16 +0000 (13:25 -0700)]
ELF: Group and sort output note sections by section alignments

To support putting all adjacent SHT_NOTE sections with the same section
alignment into a single PT_NOTE segment, lang_insert_orphan must group
and sort output note sections by section alignments in both output
section list as well as output section statement list.

PR ld/23658
* ldlang.c (lang_insert_orphan): Group and sort output note
sections by section alignments.

6 years agoELF: Group PT_NOTE segments by section alignments
H.J. Lu [Wed, 3 Oct 2018 20:22:26 +0000 (13:22 -0700)]
ELF: Group PT_NOTE segments by section alignments

Alignments of SHT_NOTE sections can be 8 bytes for 64-bit ELF files.  We
should put all adjacent SHT_NOTE sections with the same section alignment
into a single PT_NOTE segment even when the section alignment != 4 bytes.
Also check SHT_NOTE section type instead of section name.

PR ld/23658
* elf.c (get_program_header_size): Put all adjacent SHT_NOTE
sections with the same section alignment into a single PT_NOTE
segment.  Check SHT_NOTE section type instead of section name.
(_bfd_elf_map_sections_to_segments): Likewise.

6 years agoAArch64: Add MOVPRFX tests and update testsuite
Tamar Christina [Wed, 3 Oct 2018 17:52:36 +0000 (18:52 +0100)]
AArch64: Add MOVPRFX tests and update testsuite

This patch adds the tests and expected output for each of the conditions where
the MOVPRFX constraint should apply.

The specific test cases are all documented to indicate what the expected
behavior should be.

gas/

        * testsuite/gas/aarch64/sve-movprfx_1.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_1.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_10.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_10.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_10.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_11.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_11.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_12.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_12.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_13.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_13.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_13.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_14.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_14.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_14.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_15.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_15.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_15.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_16.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_16.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_17.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_17.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_17.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_18.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_18.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_18.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_19.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_19.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_2.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_2.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_2.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_20.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_20.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_20.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_21.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_21.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_22.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_22.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_22.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_23.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_23.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_23.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_24.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_24.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_24.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_25.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_25.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_25.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_26.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_26.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_26.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_3.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_3.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_3.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_4.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_4.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_4.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_5.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_5.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_6.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_6.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_6.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_7.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_7.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_7.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_8.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_8.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_8.s: New test.
        * testsuite/gas/aarch64/sve-movprfx_9.d: New test.
        * testsuite/gas/aarch64/sve-movprfx_9.l: New test.
        * testsuite/gas/aarch64/sve-movprfx_9.s: New test.

6 years agoAArch64: Constraint disassembler and assembler changes.
Tamar Christina [Wed, 3 Oct 2018 17:51:11 +0000 (18:51 +0100)]
AArch64: Constraint disassembler and assembler changes.

This patch wires in the new constraint verifiers into the assembler and
disassembler.  Because of this the MOVPRFX tests have to be split out from the
generic SVE tests into their own tests so warnings can be ignored.

These tests are only intended to test the encoding correctness and not the
constraints.

gas/

* testsuite/gas/aarch64/sve-movprfx.d: New test.
* testsuite/gas/aarch64/sve-movprfx.s: New test.
* testsuite/gas/aarch64/sve.d: Refactor.
* testsuite/gas/aarch64/sve.s: Refactor.
        * testsuite/gas/aarch64/sysreg-diagnostic.d: Update.

opcodes/

* aarch64-asm.c (aarch64_opcode_encode): Apply constraint verifier.
* aarch64-dis.c (print_operands): Refactor to take notes.
(print_verifier_notes): New.
(print_aarch64_insn): Apply constraint verifier.
(print_insn_aarch64_word): Update call to print_aarch64_insn.
* aarch64-opc.c (aarch64_print_operand): Remove attribute, update notes format.

6 years agoAArch64: Close sequences at the end of sections
Tamar Christina [Wed, 3 Oct 2018 17:50:15 +0000 (18:50 +0100)]
AArch64: Close sequences at the end of sections

Any open sequence at the end of a section or assembly is considered an error.
This patch adds a check at the end to ensure that all sequences have been closed
and if not reports a warning.

During disassembly it's not possible to detect this condition in the back-end so
the warning is only emitted from the assembler for now.

gas/

* config/tc-aarch64.c (force_automatic_sequence_close,
aarch64_frob_section): New.
* config/tc-aarch64.h (tc_frob_section, aarch64_frob_section): New.

6 years agoAArch64: Add SVE constraints verifier.
Tamar Christina [Wed, 3 Oct 2018 17:38:42 +0000 (18:38 +0100)]
AArch64: Add SVE constraints verifier.

This patch adds the verification rules for move prefix constraints.

The Arm SVE instruction MOVPRFX introduces[1] constraints on the instruction at
PC+4. Particularly the following constraints are handled by this patch

* MOVPRFX must be followed by an instruction.
* MOVPRFX can only be followed by non-layout altering directives.
* MOVPRFX destination register MUST be used as the destination register in the
  instruction at PC+4, and is not allowed to be used in any other position other than
  destructive input.  This includes registers that architecturally overlap. e.g. x1
  should be treated as z1.
* MOVPRFX must be followed by a restricted set of SVE instructions.
* The size of the destination register of MOVPRFX must be equal to that of
  the operation at PC+4.
* The predicate register and operation of MOVPRFX must match that of the instruction
  at PC+4
* The predicated instruction at PC+4 must use the merging predicate.
* Architectural aliases and pseudo-instructions need to be supported as well.
* MOVPRFX cannot be the last instruction in a sequence

Any failure to adhere to any of these constrains will emit an assembly warning
and a disassembly note.

[1] https://developer.arm.com/docs/ddi0584/latest/arm-architecture-reference-manual-supplement-the-scalable-vector-extension-sve-for-armv8-a

include/

* opcode/aarch64.h (aarch64_inst): Remove.
(enum err_type): Add ERR_VFI.
(aarch64_is_destructive_by_operands): New.
(init_insn_sequence): New.
(aarch64_decode_insn): Remove param name.

opcodes/

* aarch64-opc.c (init_insn_block): New.
(verify_constraints, aarch64_is_destructive_by_operands): New.
* aarch64-opc.h (verify_constraints): New.

gas/

        * config/tc-aarch64.c (output_operand_error_report): Order warnings.

6 years agoAArch64: Refactor verifiers to make more general.
Tamar Christina [Wed, 3 Oct 2018 17:37:07 +0000 (18:37 +0100)]
AArch64: Refactor verifiers to make more general.

The current verifiers only take an instruction description and encoded value as
arguments.  This was enough when the verifiers only needed to do simple checking
but it's insufficient for the purposes of validating instruction sequences.

This patch adds the required arguments and also a flag to allow a verifier to
distinguish between whether it's being run during encoding or decoding.  It also
allows for errors and warnings to be returned by a verifier instead of a simple
pass/fail.

include/

* opcode/aarch64.h (struct aarch64_opcode): Expand verifiers to take
more arguments.

opcodes/

* aarch64-dis.c (aarch64_opcode_decode): Update verifier call.
* aarch64-opc.c (verify_ldpsw): Update arguments.

6 years agoAArch64: Refactor err_type.
Tamar Christina [Wed, 3 Oct 2018 17:35:15 +0000 (18:35 +0100)]
AArch64: Refactor err_type.

Previously the ERR_ values were defined as different constants, to make this a
bit more type safe and so they can be more easily re-used I'm changing them into
an actual enum and updating any usages.

include/

* opcode/aarch64.h (enum err_type): New.
(aarch64_decode_insn): Use it.

opcodes/

* aarch64-dis.c (ERR_OK, ERR_UND, ERR_UNP, ERR_NYI): Remove.
(aarch64_decode_insn, print_insn_aarch64_word): Use err_type.

6 years agoAArch64: Wire through instr_sequence
Tamar Christina [Wed, 3 Oct 2018 17:27:52 +0000 (18:27 +0100)]
AArch64: Wire through instr_sequence

This patch introduces aarch64_instr_sequence which is a structure similar to IT
blocks on Arm in order to track instructions that introduce a constraint or
dependency on instruction 1..N positions away from the instruction that opened
the block.

The struct is also wired through to the locations that require it.

gas/

* config/tc-aarch64.c (now_instr_sequence):
(*insn_sequence, now_instr_sequence): New.
(output_operand_error_record, do_encode): Add insn_sequence.
(md_assemble): Update insn_sequence.
(try_to_encode_as_unscaled_ldst, fix_mov_imm_insn, fix_insn):
Pass insn_sequence.
* config/tc-aarch64.h (struct aarch64_segment_info_type):
Add insn_sequence.

include/

* opcode/aarch64.h (struct aarch64_instr_sequence): New.
(aarch64_opcode_encode): Use it.

opcodes/

* aarch64-asm.c (aarch64_opcode_encode): Add insn_sequence.
* aarch64-dis.c (insn_sequence): New.

6 years agoAArch64: Mark sve instructions that require MOVPRFX constraints
Tamar Christina [Wed, 3 Oct 2018 17:22:15 +0000 (18:22 +0100)]
AArch64: Mark sve instructions that require MOVPRFX constraints

This patch series is to allow certain instructions such as the SVE MOVPRFX
instruction to apply a constraint/dependency on the instruction at PC+4.

This patch starts this off by marking which instructions impose the constraint
and which instructions must adhere to the constraint.  This is done in a
generic way by extending the verifiers.

* The constraint F_SCAN indicates that an instruction opens a sequence and imposes
a constraint on an instructions following it.  The length of the sequence depends
on the instruction itself and it handled in the verifier code.

* The C_SCAN_MOVPRFX flag is used to indicate which constrain the instruction is
checked against.  An instruction with both F_SCAN and C_SCAN_MOVPRFX starts a
block for the C_SCAN_MOVPRFX instruction, and one with only C_SCAN_MOVPRFX must
adhere to a previous block constraint is applicable.

The SVE instructions in this list have been marked according to the SVE
specification[1].

[1] https://developer.arm.com/docs/ddi0584/latest/arm-architecture-reference-manual-supplement-the-scalable-vector-extension-sve-for-armv8-a

include/

* opcode/aarch64.h (struct aarch64_opcode): Add constraints,
extend flags field size.
(F_SCAN, C_SCAN_MOVPRFX, C_MAX_ELEM): New.

opcodes/

* aarch64-tbl.h (CORE_INSN, __FP_INSN, SIMD_INSN, CRYP_INSN, _CRC_INSN,
_LSE_INSN, _LOR_INSN, RDMA_INSN, FF16_INSN, SF16_INSN, V8_2_INSN,
_SVE_INSN, V8_3_INSN, CNUM_INSN, RCPC_INSN, SHA2_INSN, AES_INSN,
V8_4_INSN, SHA3_INSN, SM4_INSN, FP16_V8_2_INSN, DOT_INSN): Initialize
constraints.
(_SVE_INSNC): New.
(struct aarch64_opcode): (fjcvtzs, ldpsw, ldpsw, esb, psb): Initialize
constraints.
(movprfx): Change _SVE_INSN into _SVE_INSNC, add C_SCAN_MOVPRFX and
F_SCAN flags.
(msb, mul, neg, not, orr, rbit, revb, revh, revw, sabd, scvtf,
sdiv, sdivr, sdot, smax, smin, smulh, splice, sqadd, sqdecd, sqdech,
sqdecp, sqdecw, sqincd, sqinch, sqincp, sqincw, sqsub, sub, subr, sxtb,
sxth, sxtw, uabd, ucvtf, udiv, udivr, udot, umax, umin, umulh, uqadd,
uqdecd, uqdech, uqdecp, uqdecw, uqincd, uqinch, uqincp, uqincw, uqsub,
uxtb, uxth, uxtw, bic, eon, orn, mov, fmov): Change _SVE_INSN into _SVE_INSNC and add
C_SCAN_MOVPRFX and C_MAX_ELEM constraints.

6 years agoSkip gdb ifunc tests on targets that don't support this feature.
Sandra Loosemore [Wed, 3 Oct 2018 16:16:53 +0000 (09:16 -0700)]
Skip gdb ifunc tests on targets that don't support this feature.

2018-10-03  Sandra Loosemore  <sandra@codesourcery.com>

* lib/gdb.exp (skip_ifunc_tests): New.
* gdb.base/gnu-ifunc.exp: Skip if no ifunc support.  Handle
other compile failures.
* gdb.compile/compile-ifunc.exp: Skip if no ifunc support.

6 years agoFix the handling of inlined frames in DWARF debug info.
Millan Wolff [Wed, 3 Oct 2018 11:06:09 +0000 (12:06 +0100)]
Fix the handling of inlined frames in DWARF debug info.

PR 23715
* dwarf2.c (find_abstract_instance): Allow recursive invocations
of find_abstract_instance to override the name variable.

6 years agoUpdated French translation for the binutils/ subdirectory.
Nick Clifton [Wed, 3 Oct 2018 10:36:11 +0000 (11:36 +0100)]
Updated French translation for the binutils/ subdirectory.

6 years agoUpdated Portuguese translations for the bfd/ and binutils/ subdirectories.
Nick Clifton [Wed, 3 Oct 2018 09:56:59 +0000 (10:56 +0100)]
Updated Portuguese translations for the bfd/ and binutils/ subdirectories.

6 years agoMake print_insn_s12z public.
John Darrington [Mon, 1 Oct 2018 09:24:15 +0000 (11:24 +0200)]
Make print_insn_s12z public.

Gdb can use this function in its stack unwinder.

* include/dis-asm.h (print_insn_s12z): Add declaration.

6 years agoUse pulongest in aarch64-linux-tdep.c
Tom Tromey [Tue, 2 Oct 2018 22:44:47 +0000 (16:44 -0600)]
Use pulongest in aarch64-linux-tdep.c

I tried a build on macOS today and it failed due to a mismatch between
the printf format and the type in aarch64-linux-tdep.c.  This patch
fixes the problem by using pulongest and %s rather than %ld.

gdb/ChangeLog
2018-10-02  Tom Tromey  <tom@tromey.com>

* aarch64-linux-tdep.c (aarch64_linux_sigframe_init): Use pulongest.

6 years agoAutomatic date update in version.in
GDB Administrator [Wed, 3 Oct 2018 00:00:33 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoRISC-V: Add fence.tso instruction
Palmer Dabbelt [Tue, 2 Oct 2018 15:26:32 +0000 (08:26 -0700)]
RISC-V: Add fence.tso instruction

The RISC-V memory model has been ratified, and it includes an additional
fence: "fence.tso".  This pseudo instruction extends one of the
previously reserved full fence patterns to be less restrictive, and
therefor will execute correctly on all existing microarchitectures.
Thus there is no reason to allow this instruction to be disabled (or
unconverted to a full fence), so it's just unconditionally allowed.

I've added a test case for GAS to check that "fence.tso" correctly
assembles on rv32i-based targets.  I checked to see that "fence.tso"
appears in "gas.log", but that's the only testing I've done.

gas/ChangeLog

2018-10-02  Palmer Dabbelt  <palmer@sifive.com>

        * testsuite/gas/riscv/fence-tso.d: New file.
        * testsuite/gas/riscv/fence-tso.s: Likewise.

include/ChangeLog

2018-10-02  Palmer Dabbelt  <palmer@sifive.com>

        * opcode/riscv-opc.h (MATCH_FENCE_TSO): New define.
        (MASK_FENCE_TSO): Likewise.

opcodes/ChangeLog

2018-10-02  Palmer Dabbelt  <palmer@sifive.com>

        * riscv-opc.c (riscv_opcodes) <fence.tso>: New opcode.

6 years agoAllow remote debugging over a Unix local domain socket.
John Darrington [Wed, 29 Aug 2018 19:51:26 +0000 (21:51 +0200)]
Allow remote debugging over a Unix local domain socket.

Extend the "target remote" and "target extended-remote" commands
such that if the filename provided is a Unix local domain (AF_UNIX)
socket, then it'll be treated as such, instead of trying to open
it as if it were a character device.

gdb/ChangeLog:
* NEWS: Mention changed commands.
* ser-uds.c: New file.
* configure.ac (SER_HARDWIRE): Add ser-uds.o.
* configure: Regenerate.
* Makefile.in: Add new file.
* serial.c (serial_open): Check if filename is a socket
  and lookup the appropriate interface accordingly.

gdb/doc/ChangeLog:
* gdb.texinfo (Remote Connection Commands): Describe
  the changes to target remote and target extended-remote
  relating to Unix domain sockets.

6 years ago[ARC] Entries to Changelog for previous commits.
Cupertino Miranda [Mon, 1 Oct 2018 11:59:43 +0000 (12:59 +0100)]
[ARC] Entries to Changelog for previous commits.

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

6 years agoFix typo setting user_specified variable when parsing -Z option.
Nick Clifton [Mon, 1 Oct 2018 16:17:54 +0000 (17:17 +0100)]
Fix typo setting user_specified variable when parsing -Z option.

PR 23698
* gprof.c (main): Fix typo setting user_specified variable when
parsing -Z option.

6 years agoFix is_amd64_regs_target check in i386-avx512.exp
Simon Marchi [Mon, 1 Oct 2018 16:02:57 +0000 (12:02 -0400)]
Fix is_amd64_regs_target check in i386-avx512.exp

As reported by Jan here:

  https://sourceware.org/ml/gdb-patches/2018-09/msg00831.html

the check that sets the number of available registers is backwards.

gdb/testsuite/ChangeLog:

* gdb.arch/i386-avx512.exp: Fix setting of nr_regs based on
is_amd64_regs_target.

6 years agoAdd aarch64-sighandler-regs.exp test
Alan Hayward [Fri, 24 Aug 2018 09:33:10 +0000 (10:33 +0100)]
Add aarch64-sighandler-regs.exp test

Add Aarch64 test to check register values of a previous frame
can be shown correctly across a signal.

gdb/testsuite/ChangeLog:

* gdb.arch/aarch64-sighandler-regs.c: New test.
* gdb.arch/aarch64-sighandler-regs.exp: New file.
* lib/gdb.exp (skip_aarch64_sve_tests): New proc.

6 years agoAarch64: Detect FP regs in signal frame
Alan Hayward [Fri, 24 Aug 2018 08:53:57 +0000 (09:53 +0100)]
Aarch64: Detect FP regs in signal frame

Both the VFP and SVE registers may be contained within the reserved space of
the sigcontext and can be found by seraching for MAGIC values. Detect these
and add the registers (including pseudos) to the trad frame cache.

gdb/
* aarch64-linux-tdep.c (AARCH64_SIGCONTEXT_RESERVED_OFFSET): Add
define.
(AARCH64_EXTRA_MAGIC): Likewise.
(AARCH64_FPSIMD_MAGIC): Likewise.
(AARCH64_SVE_MAGIC): Likewise.
(AARCH64_EXTRA_DATAP_OFFSET): Likewise.
(AARCH64_FPSIMD_FPSR_OFFSET): Likewise.
(AARCH64_FPSIMD_FPCR_OFFSET): Likewise.
(AARCH64_FPSIMD_V0_OFFSET): Likewise.
(AARCH64_FPSIMD_VREG_SIZE): Likewise.
(AARCH64_SVE_CONTEXT_VL_OFFSET): Likewise.
(AARCH64_SVE_CONTEXT_REGS_OFFSET): Likewise.
(AARCH64_SVE_CONTEXT_P_REGS_OFFSET): Likewise.
(AARCH64_SVE_CONTEXT_FFR_OFFSET): Likewise.
(AARCH64_SVE_CONTEXT_SIZE): Likewise.
(read_aarch64_ctx): Add function.
(aarch64_linux_sigframe_init): Detect FP registers.

6 years agoAarch64: Move pseudo defines to header
Alan Hayward [Fri, 24 Aug 2018 08:53:09 +0000 (09:53 +0100)]
Aarch64: Move pseudo defines to header

gdb/
* aarch64-tdep.c (AARCH64_Q0_REGNUM): Move to here.
(AARCH64_D0_REGNUM): Likewise.
(AARCH64_S0_REGNUM): Likewise.
(AARCH64_H0_REGNUM): Likewise.
(AARCH64_B0_REGNUM): Likewise.
(AARCH64_SVE_V0_REGNUM): Likewise.
* arch/aarch64.h (AARCH64_Q0_REGNUM): Move from here.
(AARCH64_D0_REGNUM): Likewise.
(AARCH64_S0_REGNUM): Likewise.
(AARCH64_H0_REGNUM): Likewise.
(AARCH64_B0_REGNUM): Likewise.
(AARCH64_SVE_V0_REGNUM): Likewise.

6 years ago[ARC] Fixed issue with DTSOFF relocs.
Cupertino Miranda [Wed, 5 Sep 2018 23:50:35 +0000 (00:50 +0100)]
[ARC] Fixed issue with DTSOFF relocs.

Inserted offset in final section in the GOT entry of type DTSOFF soon to be
relocated by the dynamic loader.

bfd/
2018-09-06  Cupertino Miranda <cmiranda@synopsys.com>

* arc-got.h (relocate_fix_got_relocs_for_got_info): Changed. Take TLS
    section alignment in consideration for this relocation.
* elf32-arc.c (FINAL_SECTSTART): Added this formula macro.
  (ARC_TLS_DTPOFF) Updated reloc to use new created macro instead.

6 years ago[ARC] Fixes TLS failures related to tls-align.
Cupertino Miranda [Wed, 1 Aug 2018 16:22:07 +0000 (17:22 +0100)]
[ARC] Fixes TLS failures related to tls-align.

This patch fixes glibc testcase in nptl/tls-align.

bfd/
2018-08-01  Cupertino Miranda <cmiranda@synopsys.com>

* arc-got.h (relocate_fix_got_relocs_for_got_info): Changed, fixed
    TCB_SIZE offsize to include section alignment.
* elf32-arc.c (arc_special_overflow_checks): Likewise.

include/
2018-08-01  Cupertino Miranda <cmiranda@synopsys.com>

* arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula.

6 years ago[ARC] PLT information was still being generated when symbol was forced_local.
Cupertino Miranda [Fri, 2 Mar 2018 16:44:29 +0000 (17:44 +0100)]
[ARC] PLT information was still being generated when symbol was forced_local.

A change upstream reveiled this issue, triggering an assert when linking glibc.

bfd/
2018-03-01  Cupertino Miranda <cmiranda@synopsys.com>

* elf32-arc.c (elf_arc_check_relocs): Changed.

6 years ago[ARC] Make sure global symbol is not an indirect or warning.
Cupertino Miranda [Fri, 2 Mar 2018 16:38:14 +0000 (17:38 +0100)]
[ARC] Make sure global symbol is not an indirect or warning.

Problem identified in the context of glibc with latest upstream binutils.
Dynamic symbol space was being reserved but, no actual information for the
symbol was being set. Data for the symbol was kept initialized with -1.
No easy test case was possible to be created.

bfd/
2018-03-01  Cupertino Miranda <cmiranda@synopsys.com>

* elf32-arc.c (elf_arc_check_relocs): Changed.

6 years ago[ARC] Improved robustness. Return FALSE in case of NULL pointer.
Cupertino Miranda [Fri, 2 Mar 2018 16:33:48 +0000 (17:33 +0100)]
[ARC] Improved robustness. Return FALSE in case of NULL pointer.

bfd/
2018-03-01  Cupertino Miranda <cmiranda@synopsys.com>

* elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case
arc_htab is NULL.

6 years ago[ARC] Refactored location where GOT information is collected.
Cupertino Miranda [Fri, 2 Mar 2018 16:16:21 +0000 (17:16 +0100)]
[ARC] Refactored location where GOT information is collected.

Change location where GOT information is collected for ARC target, avoiding
posible use conflicts of the previous .got field in the symbols hash_entry.

bfd/
2018-03-01  Cupertino Miranda  <cmiranda@synopsys.com>

* arc-got.h (get_got_entry_list_for_symbol): Changed.
* ef32-arc.c (struct elf_arc_link_hash_entry): Moved and changed.
(elf_arc_link_hash_newfunc): Changed.
(arc_elf_link_hash_table_create): Removed old initializations.
(elf_arc_relocate_section, elf_arc_finish_dynamic_symbol): Changed.

6 years agoRemove ancient workaround
Gary Benson [Mon, 1 Oct 2018 09:37:39 +0000 (10:37 +0100)]
Remove ancient workaround

This commit removes a workaround for a bug in glibc 2.1.3, which
was released 2000-02-24 and superseded 2000-11-09.

gdb/ChangeLog:

* gdb_proc_service.h (gdb_prfpregset_t): Remove typedef.
* proc-service.c (ps_lgetfpregs, ps_lsetfpregs): Use
prfpregset_t instead of gdb_prfpregset_t.
* configure.ac (PRFPREGSET_T_BROKEN): Remove check.
* configure, config.in: Rebuild.

6 years agoMove duplicated code to common/gdb_proc_service.h
Gary Benson [Mon, 1 Oct 2018 09:37:39 +0000 (10:37 +0100)]
Move duplicated code to common/gdb_proc_service.h

This commit moves now-identical code from gdb/gdb_proc_service.h
and gdb/gdbserver/gdb_proc_service.h into the new shared file
gdb/common/gdb_proc_service.h.

gdb/ChangeLog:

* common/gdb_proc_service.h: New file, factored out from...
* gdb_proc_service.h: Moved common code to the above file.
* Makefile.in (HFILES_NO_SRCDIR): Add the above new file.

gdb/gdbserver/ChangeLog:

* gdb_proc_service.h: Moved common code to
common/gdb_proc_service.h.

6 years agoUpdate GDB gdb_proc_service.h workaround to match gdbserver
Gary Benson [Mon, 1 Oct 2018 09:37:39 +0000 (10:37 +0100)]
Update GDB gdb_proc_service.h workaround to match gdbserver

This commit updates GDB's gdb_proc_service.h to use elf_{g,fp}regset_t
instead of gdb_{g,fp}regset_t if pr{g,fp}regset_t are undefined.
The types have been equivalent on GNU/Linux since at least 2005.

gdb/ChangeLog:

* gdb_proc_service.h: Use elf_gregset_t if prgregset_t is
undefined.  Use elf_fpregset_t if prfpregset_t is undefined.

6 years agoAdd workaround from gdbserver's gdb_proc_service.h to GDB
Gary Benson [Mon, 1 Oct 2018 09:37:39 +0000 (10:37 +0100)]
Add workaround from gdbserver's gdb_proc_service.h to GDB

This commit adds a workaround from gdbserver's gdb_proc_service.h
to GDB's.  It doesn't seem to have been needed on any glibc as far
back as 2001, but it's possibly required for other C libraries so
I've retained it.

gdb/ChangeLog:

* configure.ac: Check if sys/procfs.h defines elf_fpregset_t.
(AC_CHECK_HEADERS): Check for linux/elf.h.
* configure, config.in: Rebuild.
* gdb_proc_service.h: Include linux/elf.h if sys/procfs.h
doesn't define elf_fpregset_t.

6 years agogdb_proc_service.h comment and whitespace synchronization
Gary Benson [Mon, 1 Oct 2018 09:37:39 +0000 (10:37 +0100)]
gdb_proc_service.h comment and whitespace synchronization

This commit updates comments and whitespace in GDB's and gdbserver's
gdb_proc_service.h.

gdb/ChangeLog:

* gdb_proc_service.h: Whitespace change.

gdb/gdbserver/ChangeLog:

* gdb_proc_service.h: Synchronize comments and whitespace with
GDB's version of this file.

6 years agoDon't check HAVE_UNISTD_H
Tom Tromey [Wed, 26 Sep 2018 11:28:07 +0000 (05:28 -0600)]
Don't check HAVE_UNISTD_H

I noticed some spots that were checking HAVE_UNISTD_H.  There is no
need to do this, as <unistd.h> is unconditionally included in many
places in gdb.  This sort of cleanup was done once before, in 2013:

    2013-07-01  Pedro Alves  <palves@redhat.com>

    * defs.h: Don't check HAVE_UNISTD_H before including <unistd.h>.
    (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): Delete.
    * tracepoint.c: Don't check HAVE_UNISTD_H before including
    <unistd.h>.

HAVE_UNISTD_H seems to come from gnulib, so there are still mentions
of it in the source.

gdb/ChangeLog
2018-10-01  Tom Tromey  <tom@tromey.com>

* unittests/scoped_mmap-selftests.c: Don't check HAVE_UNISTD_H.
* unittests/scoped_fd-selftests.c: Don't check HAVE_UNISTD_H.
* common/scoped_fd.h: Don't check HAVE_UNISTD_H.

6 years agoCopy configure option documentation to gdb.texinfo
Tom Tromey [Sun, 30 Sep 2018 12:00:01 +0000 (06:00 -0600)]
Copy configure option documentation to gdb.texinfo

I realized that while I'd updated the README, I didn't update
gdb.texinfo to document the options to configure.

This patch copies the text from README into gdb.texinfo, adding
Texinfo markup.

gdb/ChangeLog
2018-10-01  Tom Tromey  <tom@tromey.com>

* README: Minor change.

gdb/doc/ChangeLog
2018-10-01  Tom Tromey  <tom@tromey.com>

* gdb.texinfo (Configure Options): Document configure options.

6 years agotestsuite: fix is_amd64_regs_target
Markus Metzger [Wed, 26 Sep 2018 13:28:28 +0000 (15:28 +0200)]
testsuite: fix is_amd64_regs_target

Commit

    c221b2f Testsuite: Add gdb_can_simple_compile

changed the source file name extension of the test program from .s to .c
resulting in compile fails.  This, in turn, causes is_amd64_regs_target
checks to fail.  In gdb.btrace/tailcall.exp and others, this causes the
wrong source file to be picked and the test to fail on 64-bit targets.

Change the test source from an assembly program to a C program using
inline assembly.

testsuite/
* lib/gdb.exp (is_amd64_regs_target): Change assembly to C inline
assembly.

6 years agoAutomatic date update in version.in
GDB Administrator [Mon, 1 Oct 2018 00:01:09 +0000 (00:01 +0000)]
Automatic date update in version.in

6 years agoDarwin: Remove unused variables [-Werror=unused-variable]
Pedro Alves [Sun, 30 Sep 2018 16:12:00 +0000 (17:12 +0100)]
Darwin: Remove unused variables [-Werror=unused-variable]

Building GDB with --host=x86_64-apple-darwin15 using G++ 5.3.0 runs
into a number of -Werror=unused-variable warnings/errors:

  ../../src/gdb/i386-darwin-nat.c: In function 'void i386_darwin_dr_set(int, CORE_ADDR)':
  ../../src/gdb/i386-darwin-nat.c:283:7: error: unused variable 'current_pid' [-Werror=unused-variable]
     int current_pid;
 ^
  [etc, etc.]

This commit fixes all such warnings.

gdb/ChangeLog:
2018-09-30  Pedro Alves  <palves@redhat.com>

* darwin-nat-info.c (darwin_debug_regions_recurse)
(info_mach_exceptions_command): Remove unused local variables.
* darwin-nat.c (darwin_decode_notify_message)
(darwin_nat_target::resume, darwin_nat_target::mourn_inferior)
(darwin_stop_inferior, darwin_setup_exceptions)
(darwin_nat_target::kill, darwin_attach_pid, darwin_ptrace_him)
(darwin_nat_target::attach, darwin_nat_target::detach)
(darwin_read_write_inferior, darwin_read_dyld_info): Remove unused
local variables.
* i386-darwin-nat.c (i386_darwin_dr_set): Remove unused local
variables.

6 years agoAutomatic date update in version.in
GDB Administrator [Sun, 30 Sep 2018 00:01:07 +0000 (00:01 +0000)]
Automatic date update in version.in

6 years agoRemove some leftover text in gdb/README
Tom Tromey [Sat, 29 Sep 2018 13:32:10 +0000 (07:32 -0600)]
Remove some leftover text in gdb/README

I accidentally left some stray text in gdb/README.
This removes it.  I'm checking this in as obvious.

gdb/ChangeLog
2018-09-29  Tom Tromey  <tom@tromey.com>

* README: Remove some leftover text.

6 years agoUpdate gdb's configure instructions
Tom Tromey [Fri, 14 Sep 2018 04:24:07 +0000 (22:24 -0600)]
Update gdb's configure instructions

gdb's README and configure instructions in the manual are quite out of
date.  They mention options that haven't existed for many years, among
other things.

This patch attempts to modernize the instructions somewhat.  It is not
exhaustive, just an improvement -- more could be done.  Perhaps even a
couple of the nodes should simply be removed and replaced by
references to the Autoconf manual.

The README file seems to have been generated from the Texinfo at some
point in the past.  I did not continue this, but instead edited it
separately.

gdb/ChangeLog
2018-09-29  Tom Tromey  <tom@tromey.com>

* PROBLEMS: Rewrite.
* README: Update.

gdb/doc/ChangeLog
2018-09-29  Tom Tromey  <tom@tromey.com>

* gdb.texinfo (Requirements): Mention C++, GNU make.
(Requirements): Sort the table.  Add more libraries.
(Running Configure): Remove obsolete text.
(Separate Objdir): Likewise.
(Configure Options): Likewise.

6 years agoAutomatic date update in version.in
GDB Administrator [Sat, 29 Sep 2018 00:00:44 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agobfd: Use elfclass instead of bed->s->elfclass
H.J. Lu [Fri, 28 Sep 2018 22:29:33 +0000 (15:29 -0700)]
bfd: Use elfclass instead of bed->s->elfclass

elfclass has been set to bed->s->elfclass earlier.

* elf-properties.c (_bfd_elf_link_setup_gnu_properties): Use
elfclass instead of bed->s->elfclass.

6 years agoUse the existing instruction to determine the RISC-V breakpoint kind.
John Baldwin [Fri, 28 Sep 2018 21:15:54 +0000 (14:15 -0700)]
Use the existing instruction to determine the RISC-V breakpoint kind.

RISC-V supports instructions of varying lengths.  Standard existing
instructions in the base ISA are 4 bytes in length, but the 'C'
extension adds support for compressed, 2 byte instructions.  RISC-V
supports two different breakpoint instructions: EBREAK is a 4 byte
instruction in the base ISA, and C.EBREAK is a 2 byte instruction only
available on processors implementing the 'C' extension.  Using EBREAK
to set breakpoints on compressed instructions causes problems as the
second half of EBREAK will overwrite the first 2 bytes of the
following instruction breaking other threads in the process if their
PC is the following instruction.  Thus, breakpoints on compressed
instructions need to use C.EBREAK instead of EBREAK.

Previously, the riscv architecture checked the MISA register to
determine if the 'C' extension was available.  If so, it used C.EBREAK
for all breakpoints.  However, the MISA register is not necessarily
available to supervisor mode operating systems.  While native targets
could provide a fake MISA register value, this patch instead examines
the existing instruction at a breakpoint target to determine which
breakpoint instruction to use.  If the existing instruction is a
compressed instruction, C.EBREAK is used, otherwise EBREAK is used.

gdb/ChangeLog:

* disasm-selftests.c (print_one_insn_test): Add bfd_arch_riscv to
case with explicit breakpoint kind.
* riscv-tdep.c (show_use_compressed_breakpoints): Remove
'additional_info' and related logic.
(riscv_debug_breakpoints): New variable.
(riscv_breakpoint_kind_from_pc): Use the length of the existing
instruction to determine the breakpoint kind.
(_initialize_riscv_tdep): Add 'set/show debug riscv breakpoints'
flag.  Update description of 'set/show riscv
use-compressed-breakpoints' flag.

6 years agoChange "xor" name in cpu_core to allow building with iso646.h or C++ compiler
Компан, Вячеслав Олегович [Fri, 28 Sep 2018 20:00:46 +0000 (16:00 -0400)]
Change "xor" name in cpu_core to allow building with iso646.h or C++ compiler

This code was introduced back in 1998, and C99 appeared next year,
defining the `xor` as an 'alternative keyword' if iso646.h is
included. Moreover, C++98 defines it on the language level. As a
result, the code is not buildable with C++ compiler or if iso646.h is
included beforehand.
According to comment, `sim_cpu_core` is mostly a clone of `sim_core`,
so I renamed it to `byte_xor` as it's called in `sim_core`.

sim/common/ChangeLog:

* sim-core.h (sim_cpu_core): Rename cpu_core.xor to
cpu_core.byte_xor.
* sim-core.c (sim_core_set_xor): Likewise.
(sim_core_xor_read_buffer): Likewise.
(sim_core_xor_write_buffer): Likewise.

6 years agogdb: Change how frames are selected for 'frame' and 'info frame'.
Andrew Burgess [Thu, 10 Sep 2015 12:06:16 +0000 (13:06 +0100)]
gdb: Change how frames are selected for 'frame' and 'info frame'.

The 'frame' command, and thanks to code reuse the 'info frame' and
'select-frame' commands, currently have an overloaded mechanism for
selecting a frame.

These commands take one or two parameters, if it's one parameter then
we first try to use the parameter as an integer to select a frame by
level (or depth in the stack).  If that fails then we treat the
parameter as an address and try to select a stack frame by
stack-address.  If we still have not selected a stack frame, or we
initially had two parameters, then GDB allows the user to view a stack
frame that is not part of the current backtrace.  Internally, a new
frame is created with the given stack and pc addresses, and this is
shown to the user.

The result of this is that a typo by the user, entering the wrong stack
frame level for example, can result in a brand new frame being viewed
rather than an error.

The purpose of this commit is to remove this overloading, while still
offering the same functionality through some new sub-commands.  By
making the default behaviour of 'frame' (and friends) be to select a
stack frame by level index, it is hoped that enough
backwards-compatibility is maintained that users will not be overly
inconvenienced.

The 'frame', 'select-frame', and 'info frame' commands now all take a
frame specification string as an argument, this string can be any of the
following:

  (1) An integer.  This is treated as a frame level.  If a frame for
  that level does not exist then the user gets an error.

  (2) A string like 'level <LEVEL>', where <LEVEL> is a frame level
  as in option (1) above.

  (3) A string like 'address <STACK-ADDRESS>', where <STACK-ADDRESS>
  is a stack-frame address.  If there is no frame for this address
  then the user gets an error.

  (4) A string like 'function <NAME>', where <NAME> is a function name,
  the inner most frame for function <NAME> is selected.  If there is no
  frame for function <NAME> then the user gets an error.

  (5) A string like 'view <STACK-ADDRESS>', this views a new frame
  with stack address <STACK-ADDRESS>.

  (6) A string like 'view <STACK-ADDRESS> <PC-ADDRESS>', this views
  a new frame with stack address <STACK-ADDRESS> and the pc <PC-ADDRESS>.

This change assumes that the most common use of the commands like
'frame' is to select a frame by frame level, it is for this reason
that this is the behaviour that is kept for backwards compatibility.
Any of the alternative behaviours, which are assumed to be less used,
now require a change in user behaviour.

The MI command '-stack-select-frame' has not been changed.  This
ensures that we maintain backwards compatibility for existing
frontends.

gdb/ChangeLog:

(NEWS): Mention changes to frame related commands.
* cli/cli-decode.c (add_cmd_suppress_notification): New function.
(add_prefix_cmd_suppress_notification): New function.
(add_com_suppress_notification): Call
add_cmd_suppress_notification.
* command.h (add_cmd_suppress_notification): Declare.
(add_prefix_cmd_suppress_notification): Declare.
* mi/mi-cmd-stack.c: Add 'safe-ctype.h' include.
(parse_frame_specification): Moved from stack.c, with
simplification to handle a single argument.
(mi_cmd_stack_select_frame): Use parse_frame_specification, the
switch to the selected frame.  Add a header comment.
* stack.c: Remove 'safe-ctype.h' include.
(find_frame_for_function): Add declaration.
(find_frame_for_address): New function.
(parse_frame_specification): Moved into mi/mi-cmd-stack.c.
(frame_selection_by_function_completer): New function.
(info_frame_command): Rename to...
(info_frame_command_core): ...this, and update parameter types.
(select_frame_command): Rename to...
(select_frame_command_core): ...this, and update parameter types.
(frame_command): Rename to...
(frame_command_core): ...this, and update parameter types.
(class frame_command_helper): New class to wrap implementations of
frame related sub-commands.
(frame_apply_cmd_list): New static global.
(frame_cmd_list): Make static.
(select_frame_cmd_list): New global for sub-commands.
(info_frame_cmd_list): New global for sub-commands.
(_initialize_stack): Register sub-commands for 'frame',
'select-frame', and 'info frame'.  Update 'frame apply' commands
to use frame_apply_cmd_list.  Move function local static
frame_apply_list to file static frame_apply_cmd_list for
consistency.
* stack.h (select_frame_command): Delete declarationn.
(select_frame_for_mi): Declare new function.

gdb/doc/ChangeLog:

* gdb.texinfo (Frames): Rewrite the description of 'frame number'
to highlight that the number is also the frame's level.
(Selection): Rewrite documentation for 'frame' and 'select-frame'
commands.
(Frame Info): Rewrite documentation for 'info frame' command.

gdb/testsuite/ChangeLog:

* gdb.base/frame-selection.exp: New file.
* gdb.base/frame-selection.c: New file.

6 years agoRISC-V: Pc-rel to gp-rel relaxation function cleanup.
Jim Wilson [Fri, 28 Sep 2018 00:16:34 +0000 (17:16 -0700)]
RISC-V: Pc-rel to gp-rel relaxation function cleanup.

bfd/
* elfnn-riscv.c (riscv_init_pcgp_relocs): Add explanatory comment.
(riscv_free_pcgp_relocs, riscv_record_pcgp_reloc): Likewise.
(riscv_find_pcgp_hi_reloc, riscv_reocrd_pcgp_lo_reloc): Likewise.
(riscv_find_pcgp_lo_reloc): Likewise.
(riscv_delete_pcgp_hi_reloc, riscv_use_pcgp_hi_reloc): Delete.
(riscv_delete_pcgp_lo_reloc): Likewise.
(_bfd_riscv_relax_pc): Don't call riscv_use_pcgp_hi_reloc. Replace
calls to riscv_delete_pcgp_lo_reloc and riscv_delete_pcgp_hi_reloc
with TRUE.  Mark abfd arg as ATTRIBUTE_UNUSED.

6 years agoAutomatic date update in version.in
GDB Administrator [Fri, 28 Sep 2018 00:00:43 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agotestsuite: Fix race condition in check-libthread-db
Alan Hayward [Wed, 26 Sep 2018 13:06:54 +0000 (14:06 +0100)]
testsuite: Fix race condition in check-libthread-db

It is possible for the created thread to reach the breakpoint before
the main thread has set errno to 23.

Prevent this using a pthread barrier.

* gdb.threads/check-libthread-db.c (thread_routine): Use a
pthread barrier.
(main): Likewise.

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

6 years agoSkip broken assembler test on Windows host.
Sandra Loosemore [Wed, 26 Sep 2018 16:45:56 +0000 (09:45 -0700)]
Skip broken assembler test on Windows host.

2018-09-26  Sandra Loosemore  <sandra@codesourcery.com>

gas/
* testsuite/gas/all/gas.exp: Skip "Output file must be distinct
from input" test on Windows host.

6 years agogdb/riscv: Improve non-dwarf stack unwinding
Andrew Burgess [Wed, 12 Sep 2018 16:35:08 +0000 (17:35 +0100)]
gdb/riscv: Improve non-dwarf stack unwinding

This commit improves the prologue scanning stack unwinder, to better
support AUIPC, LUI, and more variants of ADD and ADDI.

This allows unwinding over frames containing large local variables,
where the frame size does not fit into a single instruction immediate,
and is first loaded into a temporary register, before being added to
the stack pointer.

A new test is added that tests this behaviour.  As there's nothing
truely RiscV specific about this test I've added it into gdb.base, but
as this depends on target specific code to perform the unwind it is
possible that some targets might fail this new test.

gdb/ChangeLog:

* riscv-tdep.c (riscv_insn::decode): Decode c.lui.
(riscv_scan_prologue): Split handling of AUIPC, LUI, ADD, ADDI,
and NOP.

gdb/testsuite/ChangeLog:

* gdb.base/large-frame-1.c: New file.
* gdb.base/large-frame-2.c: New file.
* gdb.base/large-frame.exp: New file.
* gdb.base/large-frame.h: New file.

6 years agoelf32-nds32: Remove elf32_nds32_allocate_dynrelocs
Simon Marchi [Wed, 26 Sep 2018 12:27:23 +0000 (08:27 -0400)]
elf32-nds32: Remove elf32_nds32_allocate_dynrelocs

It is unused, removing it fixes this error when building with clang:

    /home/emaisin/src/binutils-gdb/bfd/elf32-nds32.c:3172:1: error: unused function 'elf32_nds32_allocate_dynrelocs' [-Werror,-Wunused-function]
    elf32_nds32_allocate_dynrelocs (struct bfd_link_info *info, asection *sreloc,
    ^
    1 error generated.

gcc only reports the error if you remove "inline".  I don't know if this
is actually a mistake and it should actually be used though.

gdb/ChangeLog:

* elf32-nds32.c (elf32_nds32_allocate_dynrelocs): Remove.

6 years agoRemove dead definition from valops.c
Tom Tromey [Wed, 26 Sep 2018 11:34:25 +0000 (05:34 -0600)]
Remove dead definition from valops.c

This removes a variable definition in valops.c that has been
surrounded by "#if 0" since gdb moved to sourceware.

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

* valops.c (auto_abandon): Remove dead code.

6 years agoSmall fix for "winheight" usage
Tom Tromey [Mon, 3 Sep 2018 21:41:24 +0000 (15:41 -0600)]
Small fix for "winheight" usage

I noticed that the usage string for "winheight" has a couple of
extraneous ">"s in it.  I must have forgotten to remove these back
when I changed the text to use the GNU style for metasyntactic
variables.

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

* tui/tui-win.c (WIN_HEIGHT_USAGE): Remove extra ">"s.

6 years agoAutomatic date update in version.in
GDB Administrator [Wed, 26 Sep 2018 00:00:55 +0000 (00:00 +0000)]
Automatic date update in version.in

6 years agoRISC-V: Give error for RVE PLTs.
Jim Wilson [Tue, 25 Sep 2018 20:13:23 +0000 (13:13 -0700)]
RISC-V: Give error for RVE PLTs.

bfd/
* elfnn-riscv.c (riscv_make_plt_header): New arg output_bfd.  Change
return type to bfd_boolean.  If EF_RISCV_RVE call _bfd_error_handler
and return FALSE.  Return TRUE at end.
(riscv_make_plt_entry): Likewise.
(riscv_elf_finish_dynamic_symbol): Update call to riscv_make_plt_entry.
(riscv_elf_finish_dynamic_sections): Update call to
riscv_make_plt_header.

6 years agoS/390: Fix symbolic displacement in lay
Andreas Krebbel [Tue, 25 Sep 2018 15:13:28 +0000 (17:13 +0200)]
S/390: Fix symbolic displacement in lay

Increase the fixup length to 4 for the 20 bit displacement.

gas/ChangeLog:

2018-09-25  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/tc-s390.c (md_apply_fix): Set fx_size to 4 for 20 bit
displacements.
* testsuite/gas/s390/s390.exp: Run new test.
* testsuite/gas/s390/zarch-z990-symbol-lay.s: New test.

6 years agoRemove dead code from gdbserver's configure
Tom Tromey [Tue, 31 Jul 2018 13:49:55 +0000 (07:49 -0600)]
Remove dead code from gdbserver's configure

gdbserver's configure removes -Wmissing-prototypes from the warning
flags.  However, this flag is only useful for C, so this deletion is
no longer needed.

gdb/gdbserver/ChangeLog
2018-09-25  Tom Tromey  <tom@tromey.com>

* configure: Rebuild.
* configure.ac (WARN_CFLAGS): Don't remove -Wmissing-prototypes.

6 years agoCouple of minor tweaks to the linker testsuite.
Eric Botcazou [Tue, 25 Sep 2018 06:15:36 +0000 (08:15 +0200)]
Couple of minor tweaks to the linker testsuite.

This gets rid of the couple of linker failures for visium-elf:

FAIL: ld-elf/pr14156b
FAIL: ld-elf/pr22677

by tweaking the respective testcases.  The first tweak is the same as the
one made to the sibling testcase ld-elf/pr14156a.d about one year ago and
the  second tweak adds the usual main/start/_start/__start symbols.

ld/
* testsuite/ld-elf/pr14156b.d: Adjust for extra symbols.
* testsuite/ld-elf/pr22677.s: Define main/start/_start/__start.

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

6 years agoRISC-V: For PCREL_LO12, fix addend handling in auipc lookup.
Jim Wilson [Mon, 24 Sep 2018 21:36:41 +0000 (14:36 -0700)]
RISC-V: For PCREL_LO12, fix addend handling in auipc lookup.

bfd/
* elfnn-riscv.c (_bfd_riscv_relax_pc) <R_RISCV_PCREL_LO12_I>: New local
hi_sec_off which is symbol address with addend subtracted.  Use in
riscv_find_pcgp_hi_reloc and riscv_record_pcgp_lo_reloc calls.

6 years agoRISC-V: Allow pcrel_lo addends, error on addend overflow.
Jim Wilson [Mon, 24 Sep 2018 21:05:32 +0000 (14:05 -0700)]
RISC-V: Allow pcrel_lo addends, error on addend overflow.

bfd/
* elfnn-riscv.c (riscv_resolve_pcrel_lo_relocs): Add check for reloc
overflow with addend.  Use reloc_dangerous instead of reloc_overflow.
Add strings for the two errors handled here.
(riscv_elf_relocate_section) In case R_RISCV_PCREL_LO12_I, rewrite
comment.  Only give error with addend when used with section symbol.
In case bfd_reloc_dangerous, update error string.

ld/
* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Run pcrel-lo-addend-2.
* testsuite/ld-riscv/elf/ld-riscv-elf/pcrel-lo-addend-2.d: New.
* testsuite/ld-riscv/elf/ld-riscv-elf/pcrel-lo-addend-2.s: New.
* testsuite/ld-riscv/elf/ld-riscv-elf/pcrel-lo-addend.d: Update name
and error string.

6 years agoFix PR gdb/20948: --write option to GDB causes segmentation fault
Jozef Lawrynowicz [Tue, 11 Sep 2018 21:56:36 +0000 (22:56 +0100)]
Fix PR gdb/20948: --write option to GDB causes segmentation fault

When opening a BFD for update, as gdb --write does, modifications to
anything but the contents of sections is restricted.

Do not try to write back any ELF headers in this case.

bfd/ChangeLog
2018-09-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

PR gdb/20948
* elf.c (_bfd_elf_write_object_contents): Return from function
early if abfd->direction == both_direction.

gdb/testsuite/ChangeLog
2018-09-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

PR gdb/20948
* gdb.base/write_mem.exp: New test.
* gdb.base/write_mem.c: Likewise.

6 years agoAdd "const" to a few locals in gdb
Tom Tromey [Mon, 24 Sep 2018 12:15:17 +0000 (06:15 -0600)]
Add "const" to a few locals in gdb

I noticed that some code in gdb was doing:

    char *mumble = getenv (...)

However, using "const char *" here would be clearer.
This patch fixes the instances I could readily build.

Tested by rebuilding.

gdb/ChangeLog
2018-09-24  Tom Tromey  <tom@tromey.com>

* common/pathstuff.c (get_standard_cache_dir): Make
"xdg_cache_home" and "home" const.
* top.c (init_history): Make "tmpenv" const.
* main.c (get_init_files): Make "homedir" const.

6 years agoAllow setting a parameter to raise gdb.GdbError
Tom Tromey [Sat, 15 Sep 2018 07:09:22 +0000 (01:09 -0600)]
Allow setting a parameter to raise gdb.GdbError

A convention in the Python layer is that raising a gdb.GdbError will
not print the Python stack -- instead the exception is treated as any
other gdb exception.

PR python/18852 asks that this treatment be extended the the
get_set_value method of gdb.Parameter.  This makes sense, because it
lets Python-created parameters act like gdb parameters.

2018-09-23  Tom Tromey  <tom@tromey.com>

PR python/18852:
* python/py-param.c (get_set_value): Use gdbpy_handle_exception.

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

PR python/18852:
* python.texi (Parameters In Python): Document exception behavior
of get_set_string.

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

PR python/18852:
* gdb.python/py-parameter.exp: Add test for parameter that throws
on "set".

6 years agoConsolidate gdb.GdbError handling
Tom Tromey [Sat, 15 Sep 2018 06:57:12 +0000 (00:57 -0600)]
Consolidate gdb.GdbError handling

I noticed two nearly identical copies of the same code for handling
gdb.GdbError.  The only differences were in some error messages.
These differences didn't seem very important, so this patch pulls the
code out into a new function.

2018-09-23  Tom Tromey  <tom@tromey.com>

* python/py-function.c (fnpy_call): Use gdbpy_handle_exception.
* python/py-cmd.c (cmdpy_function): Use gdbpy_handle_exception.
* python/python-internal.h (gdbpy_handle_exception): Declare.
* python/py-utils.c (gdbpy_handle_exception): New function.

6 years agoCheck for negative argument in Type.template_argument
Tom Tromey [Sat, 15 Sep 2018 06:29:20 +0000 (00:29 -0600)]
Check for negative argument in Type.template_argument

typy_template_argument did not check if the template argument was
non-negative.  A negative value could cause a gdb crash.

2018-09-23  Tom Tromey  <tom@tromey.com>

PR python/17284:
* python/py-type.c (typy_template_argument): Check for negative
argument number.

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

PR python/17284:
* gdb.python/py-template.exp (test_template_arg): Add test for
negative template argument number.

6 years agoReport Python errors coming from gdb.post_event
Tom Tromey [Sat, 15 Sep 2018 06:07:32 +0000 (00:07 -0600)]
Report Python errors coming from gdb.post_event

PR python/14062 points out that errors coming from the gdb.post_event
callback are not reported.  This can make it hard to understand why
your Python code in gdb isn't working.

Because users have control over whether exceptions are printed at all,
it seems good to simply have post_event report errors in the usual
way.

2018-09-23  Tom Tromey  <tom@tromey.com>

PR python/14062:
* python/python.c (gdbpy_run_events): Do not ignore exceptions.

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

PR python/14062:
* gdb.python/python.exp: Add test for post_event error.

6 years agoAllow conversion of pointers to Python int
Tom Tromey [Sat, 15 Sep 2018 05:20:58 +0000 (23:20 -0600)]
Allow conversion of pointers to Python int

PR python/18170 questions why it's not possible to convert a pointer
value to a Python int.

Digging a bit shows that the Python 2.7 int() constructor will happily
return a long in some cases.  And, it seems gdb already understands
this in other places -- this is what gdb_py_object_from_longest
handles.

So, this patch simply extends valpy_int to allow pointer conversions,
as valpy_long does.

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

PR python/18170:
* python/py-value.c (valpy_int): Allow conversion from pointer
type.

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

PR python/18170:
* gdb.python/py-value.exp (test_value_numeric_ops): Add tests to
convert pointers to int and long.

6 years agoPreserve sign when converting gdb.Value to Python int
Tom Tromey [Sat, 15 Sep 2018 04:44:10 +0000 (22:44 -0600)]
Preserve sign when converting gdb.Value to Python int

PR python/20126 points out that sometimes the conversion of a
gdb.Value can result in a negative Python integer.  This happens
because valpy_int does not examine the signedness of the value's type.

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

PR python/20126:
* python/py-value.c (valpy_int): Respect type sign.

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

PR python/20126:
* gdb.python/py-value.exp (test_value_numeric_ops): Add
signed-ness conversion tests.

6 years agoAllow more Python scalar conversions
Tom Tromey [Sat, 15 Sep 2018 04:31:12 +0000 (22:31 -0600)]
Allow more Python scalar conversions

PR python/18352 points out that the gdb Python code can't convert an
integer-valued gdb.Value to a Python float.  While writing the test I
noticed that, similarly, converting integer gdb.Values to float does
not work.  However, all of these cases seem reasonable.

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

PR python/18352;
* python/py-value.c (valpy_float): Allow conversions from int or
char.
(valpy_int, valpy_long): Allow conversions from float.

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

PR python/18352;
* gdb.python/py-value.exp (test_float_conversion): New proc.
Use it.

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

6 years agoFix incorrect extraction of signed constants in nios2 disassembler.
Sandra Loosemore [Sun, 23 Sep 2018 19:31:23 +0000 (12:31 -0700)]
Fix incorrect extraction of signed constants in nios2 disassembler.

2018-09-23  Sandra Loosemore  <sandra@codesourcery.com>

opcodes/
* nios2-dis.c (nios2_print_insn_arg): Make sure signed conversions
are used when extracting signed fields and converting them to
potentially 64-bit types.