88391 Commits

Author SHA1 Message Date
874d7e6ef9 [AArch64][SVE 10/32] Move range check out of parse_aarch64_imm_float
Since some SVE constants are no longer explicitly tied to the 8-bit
FP immediate format, it seems better to move the range checks out of
parse_aarch64_imm_float and into the callers.

gas/
	* config/tc-aarch64.c (parse_aarch64_imm_float): Remove range check.
	(parse_operands): Check the range of 8-bit FP immediates here instead.
2016-09-21 16:49:15 +01:00
6a9deabec4 [AArch64][SVE 09/32] Improve error messages for invalid floats
Previously:

        fmov d0, #2

would give an error:

        Operand 2 should be an integer register

whereas the user probably just forgot to add the ".0" to make:

        fmov d0, #2.0

This patch reports an invalid floating point constant unless the
operand is obviously a register.

The FPIMM8 handling is only relevant for SVE.  Without it:

        fmov z0, z1

would try to parse z1 as an integer immediate zero (the res2 path),
whereas it's more likely that the user forgot the predicate.  This is
tested by the final patch.

gas/
	* config/tc-aarch64.c (parse_aarch64_imm_float): Report a specific
	low-severity error for registers.
	(parse_operands): Report an invalid floating point constant for
	if parsing an FPIMM8 fails, and if no better error has been
	recorded.
	* testsuite/gas/aarch64/diagnostic.s,
	testsuite/gas/aarch64/diagnostic.l: Add tests for integer operands
	to FMOV.
2016-09-21 16:49:07 +01:00
04a3379ace [AArch64][SVE 08/32] Generalise aarch64_double_precision_fmovable
SVE has single-bit floating-point constants that don't really
have any relation to the AArch64 8-bit floating-point encoding.
(E.g. one of the constants selects between 0 and 1.)  The easiest
way of representing them in the aarch64_opnd_info seemed to be
to use the IEEE float representation directly, rather than invent
some new scheme.

This patch paves the way for that by making the code that converts IEEE
doubles to IEEE floats accept any value in the range of an IEEE float,
not just zero and 8-bit floats.  It leaves the range checking to the
caller (which already handles it).

gas/
	* config/tc-aarch64.c (aarch64_double_precision_fmovable): Rename
	to...
	(can_convert_double_to_float): ...this.  Accept any double-precision
	value that converts to single precision without loss of precision.
	(parse_aarch64_imm_float): Update accordingly.
2016-09-21 16:48:59 +01:00
1799c0d064 [AArch64][SVE 07/32] Replace hard-coded uses of REG_TYPE_R_Z_BHSDQ_V
To remove parsing ambiguities and to avoid register names being
accidentally added to the symbol table, the immediate parsing
routines reject things like:

	.equ	x0, 0
	add	v0.4s, v0.4s, x0

An explicit '#' must be used instead:

	.equ	x0, 0
	add	v0.4s, v0.4s, #x0

Of course, it wasn't possible to predict what other register
names might be added in future, so this behaviour was restricted
to the register names that were defined at the time.  For backwards
compatibility, we should continue to allow things like:

	.equ	p0, 0
	add	v0.4s, v0.4s, p0

even though p0 is now an SVE register.

However, it seems reasonable to extend the x0 behaviour above to
SVE registers when parsing SVE instructions, especially since none
of the SVE immediate formats are relocatable.  Doing so removes the
same parsing ambiguity for SVE instructions as the x0 behaviour removes
for base AArch64 instructions.

As a prerequisite, we then need to be able to tell the parsing routines
which registers to reject.  This patch changes the interface to make
that possible, although the set of rejected registers doesn't change
at this stage.

gas/
	* config/tc-aarch64.c (parse_immediate_expression): Add a
	reg_type parameter.
	(parse_constant_immediate): Likewise, and update calls.
	(parse_aarch64_imm_float): Likewise.
	(parse_big_immediate): Likewise.
	(po_imm_nc_or_fail): Update accordingly, passing down a new
	imm_reg_type variable.
	(po_imm_of_fail): Likewise.
	(parse_operands): Likewise.
2016-09-21 16:48:50 +01:00
10d7665010 [AArch64][SVE 06/32] Generalise parse_neon_reg_list
Rename parse_neon_reg_list to parse_vector_reg_list and take
in the required register type as an argument.  Later patches
will reuse the function for SVE registers.

gas/
	* config/tc-aarch64.c (parse_neon_reg_list): Rename to...
	(parse_vector_reg_list): ...this and take a register type
	as input.
	(parse_operands): Update accordingly.
2016-09-21 16:48:41 +01:00
53021dd1a0 [AArch64][SVE 05/32] Rename parse_neon_type_for_operand
Generalise the name of parse_neon_type_for_operand to
parse_vector_type_for_operand.  Later patches will add SVEisms to it.

gas/
	* config/tc-aarch64.c (parse_neon_type_for_operand): Rename to...
	(parse_vector_type_for_operand): ...this.
	(parse_typed_reg): Update accordingly.
2016-09-21 16:48:34 +01:00
8f9a77affe [AArch64][SVE 04/32] Rename neon_type_el to vector_type_el
Similar to the previous patch, but this time for the neon_type_el
structure.

gas/
	* config/tc-aarch64.c (neon_type_el): Rename to...
	(vector_type_el): ...this.
	(parse_neon_type_for_operand): Update accordingly.
	(parse_typed_reg): Likewise.
	(aarch64_reg_parse): Likewise.
	(vectype_to_qualifier): Likewise.
	(parse_operands): Likewise.
	(eq_neon_type_el): Likewise.  Rename to...
	(eq_vector_type_el): ...this.
	(parse_neon_reg_list): Update accordingly.
2016-09-21 16:48:25 +01:00
f06935a5c1 [AArch64][SVE 03/32] Rename neon_el_type to vector_el_type
Later patches will add SVEisms to neon_el_type, so this patch renames
it to something more generic.

gas/
	* config/tc-aarch64.c (neon_el_type: Rename to...
	(vector_el_type): ...this.
	(neon_type_el): Update accordingly.
	(parse_neon_type_for_operand): Likewise.
	(vectype_to_qualifier): Likewise.
2016-09-21 16:48:16 +01:00
bd11d5d837 [AArch64][SVE 02/32] Avoid hard-coded limit in indented_print
The maximum indentation needed by aarch64-gen.c grows as more
instructions are added to aarch64-tbl.h.  Rather than having to
increase the indentation limit to a higher value, it seemed better
to replace it with "%*s".

opcodes/
	* aarch64-gen.c (indented_print): Avoid hard-coded indentation limit.
2016-09-21 16:48:06 +01:00
a235d3aece [AArch64][SVE 01/32] Remove parse_neon_operand_type
A false return from parse_neon_operand_type had an overloaded
meaning: either the parsing failed, or there was nothing to parse
(which isn't necessarily an error).  The only caller, parse_typed_reg,
would therefore not consume the suffix if it was invalid but instead
(successfully) parse the register without a suffix.  It would still
leave inst.parsing_error with an error about the invalid suffix.

It seems wrong for a successful parse to leave an error message,
so this patch makes parse_typed_reg return PARSE_FAIL instead.

The patch doesn't seem to make much difference in practice.
Most possible follow-on errors use set_first_error and so the
error about the suffix tended to win despite the successful parse.

gas/
	* config/tc-aarch64.c (parse_neon_operand_type): Delete.
	(parse_typed_reg): Call parse_neon_type_for_operand directly.
2016-09-21 16:47:57 +01:00
3d0ec88224 MIPS/testsuite: mips16-thunks: Use `standard_output_file'
Correct a commit 2151ccc56c74 ("Always organize test artifacts in a
directory hierarchy") regression causing:

Running .../gdb/testsuite/gdb.arch/mips16-thunks.exp ...
gdb compile failed, Assembler messages:
Fatal error: can't create .../gdb/testsuite/gdb.arch/mips16-thunks-inmain.o: No such file or directory
gdb compile failed, Assembler messages:
Fatal error: can't create .../gdb/testsuite/gdb.arch/mips16-thunks-main.o: No such file or directory
gdb compile failed, mips-mti-linux-gnu-gcc: error: .../gdb/testsuite/gdb.arch/mips16-thunks-inmain.o: No such file or directory
mips-mti-linux-gnu-gcc: error: .../gdb/testsuite/gdb.arch/mips16-thunks-main.o: No such file or directory
UNSUPPORTED: gdb.arch/mips16-thunks.exp: No MIPS16 support in the toolchain.

by using `standard_output_file' to construct output file names
throughout.

	gdb/testsuite/
	* gdb.arch/mips16-thunks.exp: Use `standard_output_file'
	throughout.
2016-09-21 12:59:33 +01:00
fc6cda2ee8 Keep reserved bits in CPSR on write
In patch https://sourceware.org/ml/gdb-patches/2016-04/msg00529.html
I cleared reserved bits when reading CPSR.  It makes a problem that
these bits (zero) are written back to kernel through ptrace, and it
changes the state of the processor on some recent kernel, which is
unexpected.

In this patch, I keep these reserved bits when write CPSR back to
hardware.

gdb:

2016-09-21  Yao Qi  <yao.qi@linaro.org>

	* aarch32-linux-nat.c (aarch32_gp_regcache_collect): Keep
	bits 20 to 23.

gdb/gdbserver:

2016-09-21  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch32-low.c (arm_fill_gregset): Keep bits 20 to
	23.
2016-09-21 12:29:53 +01:00
44b8317a75 Automatic date update in version.in 2016-09-21 00:00:18 +00:00
12c58cd4dc Avoid -Wduplicated-cond warnings in gdb/python
I tried building gdb with -Wduplicated-cond.  This patch fixes the
simpler issue that was found.

In Python 3, "int" and "long" are synonyms, so code like:

      else if (PyLong_Check (obj))
...
      else if (PyInt_Check (obj))

.... will trigger this warning.  The fix is to conditionalize the
PyInt_Check branches on Python 2.

Tested by rebuilding, with both version of Python, on x86-64 Fedora 24.

2016-09-20  Tom Tromey  <tom@tromey.com>

	* python/py-value.c (convert_value_from_python): Make PyInt_Check
	conditional on Python 2.
	* python/py-arch.c (archpy_disassemble): Make PyInt_Check
	conditional on Python 2.
2016-09-20 10:35:27 -06:00
9f7efd5bf7 ppc: Fix record support of Store String Word instructions
gdb/ChangeLog
2016-09-20  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>

	* rs6000-tdep.c (ppc_process_record_op31): Fix record of Store String
	Word instructions.
2016-09-20 12:24:30 -03:00
d4ed4da3f5 ld: Fix mistake in ChangeLog
The previous commit contained a small mistake in the ChangeLog, fixed in
this commit.
2016-09-20 15:34:20 +01:00
a5bf7d4fe7 ld: Extend documentation for EXCLUDE_FILE
There was a gap in the documentation of EXCLUDE_FILE that could cause
confusion to a user.  When writing an input section specifier like this:

    *(EXCLUDE_FILE (somefile.o) .text .text.*)

this could mean one of the following:

   1. All '.text' and '.text.*' from all files except for 'somefile.o',
   or
   2. All '.text' from all files except 'somefile.o', and all '.text.*'
   sections from all files.

It turns out that the second interpretation is correct, but the manual
does not make this clear (to me at least).  Hopefully this patch makes
things clearer.

ld/ChangeLog:

	* ld/ld.texinfo (Input Section Basics): Expand the description of
	EXCLUDE_FILE.
2016-09-20 14:22:34 +01:00
7d5adfe311 Use 'event_ptid' instead of 'resume_ptid' on startup_inferior (fix for regression on my last commit)
Pedro pointed out a regression happening on gdb.mi/mi-exec-run.exp,
and as it turned out, this was a thinko when dealing with some events
on startup_inferior.  Basically, one needs to pass 'event_ptid' to
target_mourn_inferior, but I mistakenly passed 'resume_ptid'.

This commit fixes it.

Built and regtested on BuildBot, now with fixed e-mail notifications!

gdb/ChangeLog:
2016-09-20  Sergio Durigan Junior  <sergiodj@redhat.com>

	* fork-inferior.c (startup_inferior): Pass 'event_ptid' instead of
	'resume_ptid' to 'target_mourn_inferior'.  Fix regression
	introduced by my last commit.
2016-09-20 07:10:26 -04:00
e8eafa2bf8 Automatic date update in version.in 2016-09-20 00:00:23 +00:00
6679754127 gdb: Fix build breakage with GCC 4.1 and --disable-nls
Ref: https://sourceware.org/ml/gdb-patches/2016-09/msg00203.html

The std::{min,max} patch caused build failures when configuring GDB
with with --disable-nls and using GCC 4.1.

The reason is this bit in common/gdb_locale.h:

 #ifdef ENABLE_NLS
 ...
 #else
 # define gettext(Msgid) (Msgid)
 ...
 #endif

This causes problems if the <libintl.h> header is first included at
any point after "gdb_locale.h".

Specifically, the gettext&co declarations in libintl.h:

 extern char *gettext (__const char *__msgid)
      __THROW __attribute_format_arg__ (1);

end up broken after preprocessing:

 extern char *(__const char *__msgid)
      throw () __attribute__ ((__format_arg__ (1)));

After the std::min/std::max change to include <algorithm>, this now
happens with at least the GCC 4.1 copy of <algorithm>, which includes
<libintl.h> via <bits/stl_algobase.h>, <iosfwd>, and
<bits/c++locale.h>.

The fix is to simply remove the troublesome *gettext and *textdomain
macros, leaving only the _ and N_ ones.

gdb/ChangeLog:
2016-09-19  Pedro Alves  <palves@redhat.com>

	* common/gdb_locale.h [!ENABLE_NLS] (gettext, dgettext, dcgettext,
	textdomain, bindtextdomain): Delete macros.
	* main.c (captured_main) [!ENABLE_NLS]: Skip bintextdomain and
	textdomain calls.
2016-09-19 16:55:35 +01:00
b19753ce31 bfd: allow negative offsets to _GLOBAL_OFFSET_TABLE_ in elf64 SPARC
The code compiled with the -fpic model in SPARC uses 13-bit signed
immediate PC-relative loads to fetch entries from the GOT table.  In
theory this would allow using a GOT table (.got section) containing up
to 1024 entries in elf32 or 512 entries in elf64.

However, in elf64 sparc GNU targets _GLOBAL_OFFSET_TABLE_ is always
placed at the beginning of the .got section, making it impossible to use
negative offsets.  This limits the usage of -fpic to GOT tables
containing a maximum of 257 entries in elf64.

This patch activates an optimization that is already used in sparc-elf32
also in sparc-elf64, that sets _GLOBAL_OFFSET_TABLE_ to point 0x1000
into the .got section if the section size is bigger than 0x1000.

2016-09-19  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections): Allow
	negative offsets to _GLOBAL_OFFSET_TABLE_ if the .got section is
	bigger than 0x1000 bytes.
2016-09-19 05:19:14 -07:00
2387dd9049 nm handling of synthetic symbols
Symbol sorting means we can't assume that the last n symbols are
synthetic.

	* nm.c (print_symbol): Remove is_synthetic param.  Test sym->flags
	instead.
	(print_size_symbols, print_symbols): Adjust to suit, deleting
	now unused synth_count param and fromsynth var.
	(display_rel_file): Adjust, localizing synth_count.
2016-09-19 15:16:50 +09:30
bc1e6c81d5 Consolidate target_mourn_inferior between GDB and gdbserver
This patch consolidates the API of target_mourn_inferior between GDB
and gdbserver, in my continuing efforts to make sharing the
fork_inferior function possible between both.

GDB's version of the function did not care about the inferior's ptid
being mourned, but gdbserver's needed to know this information.  Since
it actually makes sense to pass the ptid as an argument, instead of
depending on a global value directly (which GDB's version did), I
decided to make the generic API to accept it.  I then went on and
extended all calls being made on GDB to include a ptid argument (which
ended up being inferior_ptid most of the times, anyway), and now we
have a more sane interface.

On GDB's side, after talking to Pedro a bit about it, we decided that
just an assertion to make sure that the ptid being passed is equal to
inferior_ptid would be enough for now, on the GDB side.  We can remove
the assertion and perform more operations later if we ever pass
anything different than inferior_ptid.

Regression tested on our BuildBot, everything OK.

I'd appreciate a special look at gdb/windows-nat.c's modification
because I wasn't really sure what to do there.  It seemed to me that
maybe I should build a ptid out of the process information there, but
then I am almost sure the assertion on GDB's side would trigger.

gdb/ChangeLog:
2016-09-19  Sergio Durigan Junior  <sergiodj@redhat.com>

	* darwin-nat.c (darwin_kill_inferior): Adjusting call to
	target_mourn_inferior to include ptid_t argument.
	* fork-child.c (startup_inferior): Likewise.
	* gnu-nat.c (gnu_kill_inferior): Likewise.
	* inf-ptrace.c (inf_ptrace_kill): Likewise.
	* infrun.c (handle_inferior_event_1): Likewise.
	* linux-nat.c (linux_nat_attach): Likewise.
	(linux_nat_kill): Likewise.
	* nto-procfs.c (interrupt_query): Likewise.
	(procfs_interrupt): Likewise.
	(procfs_kill_inferior): Likewise.
	* procfs.c (procfs_kill_inferior): Likewise.
	* record.c (record_mourn_inferior): Likewise.
	* remote-sim.c (gdbsim_kill): Likewise.
	* remote.c (remote_detach_1): Likewise.
	(remote_kill): Likewise.
	* target.c (target_mourn_inferior): Change declaration to accept
	new ptid_t argument; use gdb_assert on it.
	* target.h (target_mourn_inferior): Move function prototype from
	here...
	* target/target.h (target_mourn_inferior): ... to here.  Adjust it
	to accept new ptid_t argument.
	* windows-nat.c (get_windows_debug_event): Adjusting call to
	target_mourn_inferior to include ptid_t argument.

gdb/gdbserver/ChangeLog:
2016-09-19  Sergio Durigan Junior  <sergiodj@redhat.com>

	* server.c (start_inferior): Call target_mourn_inferior instead of
	mourn_inferior; pass ptid_t argument to it.
	(resume): Likewise.
	(handle_target_event): Likewise.
	* target.c (target_mourn_inferior): New function.
	* target.h (mourn_inferior): Delete macro.
2016-09-19 00:17:29 -04:00
73cca75e7b Automatic date update in version.in 2016-09-19 00:00:21 +00:00
93689493b3 gdb/s390: Fix build breakage due to std::min/std::max usage without header
[...]
  .../gdb/s390-linux-nat.c: In function 'void s390_prepare_to_resume(lwp_info*)':
  .../gdb/s390-linux-nat.c:703:20: error: 'min' is not a member of 'std'
      watch_lo_addr = std::min (watch_lo_addr, area->lo_addr);
  [...]

gdb/ChangeLog:
2016-09-18  Pedro Alves  <palves@redhat.com>

	* s390-linux-nat.c: Include <algorithm>.
2016-09-19 00:30:30 +01:00
768adc05c4 gdb: Fix std::{min, max}-related build breakage on 32-bit hosts
Building on a 32-bit host fails currently with errors like:

  .../src/gdb/exec.c: In function ‘target_xfer_status section_table_read_available_memory(gdb_byte*, ULONGEST, ULONGEST, ULONGEST*)’:
  .../src/gdb/exec.c:801:54: error: no matching function for call to ‘min(ULONGEST, long unsigned int)’
      end = std::min (offset + len, r->start + r->length);
							^
  In file included from /usr/include/c++/5.3.1/algorithm:61:0,
		   from .../src/gdb/exec.c:46:
  /usr/include/c++/5.3.1/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
       min(const _Tp& __a, const _Tp& __b)
       ^
  /usr/include/c++/5.3.1/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
  .../src/gdb/exec.c:801:54: note:   deduced conflicting types for parameter ‘const _Tp’ (‘long long unsigned int’ and ‘long unsigned int’)
      end = std::min (offset + len, r->start + r->length);
							^
  In file included from /usr/include/c++/5.3.1/algorithm:61:0,
		   from .../src/gdb/exec.c:46:
  /usr/include/c++/5.3.1/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
       min(const _Tp& __a, const _Tp& __b, _Compare __comp)
       ^

The problem is that the std::min/std::max function templates use the
same type for both parameters.  When the argument types are different,
the compiler can't automatically deduce which template specialization
to pick from the arguments' types.

Fix that by specifying the specialization we want explicitly.

gdb/ChangeLog:
2016-09-18  Pedro Alves  <palves@redhat.com>

	* breakpoint.c (hardware_watchpoint_inserted_in_range): Explicitly
	specify the std:min/std::max specialization.
	* exec.c (section_table_read_available_memory): Likewise.
	* remote.c (remote_read_qxfer): Likewise.
	* target.c (simple_verify_memory): Likewise.
2016-09-18 23:56:01 +01:00
498f644143 Automatic date update in version.in 2016-09-18 00:00:23 +00:00
7f3c5ec870 Improve MinGW support in Readline
These changes were already accepted upstream in Readline,
but GDB did not yet import a newer Readline version.

readline/Changelog.gdb:

	* util.c: Include rlshell.h.
	(_rl_tropen) [_WIN32 && !__CYGWIN__]: Open the trace file in the
	user's temporary directory.
	* tcap.h [HAVE_NCURSES_TERMCAP_H]: Include ncurses/termcap.h.
	* input.c (w32_isatty) [_WIN32 && !__CYGWIN__]: New function, to
	replace isatty that is not reliable enough on MS-Windows.
	(isatty) [_WIN32 && !__CYGWIN__]: Redirect to w32_isatty.
	(rl_getc): Call _getch, not getch, which could be an ncurses
	function when linked with ncurses, in which case getch will return
	EOF for any keystroke, because there's no curses window.
	* tilde.c (tilde_expand_word) [_WIN32]:
	* histfile.c (history_filename) [_WIN32]: Windows-specific
	environment variable to replace HOME if that is undefined.
	* funmap.c (default_funmap): Compile rl_paste_from_clipboard on
	all Windows platforms, not just Cygwin.
	* readline.h (rl_paste_from_clipboard): Include declaration for
	all Windows platforms.
	* display.c (insert_some_chars, delete_chars): Don't use the
	MinGW-specific code if linked with ncurses.
	* configure.in:
	* config.h.in: Support ncurses/termcap.h.  The configure script
	was updated accordingly.
	* complete.c [_WIN32 && !__CYGWIN__]: Initialize
	_rl_completion_case_fold to 1.
	(printable_part, rl_filename_completion_function)
	[_WIN32 && !__CYGWIN__]: Handle the drive letter.
2016-09-17 11:50:37 +03:00
a3fa21cadc Automatic date update in version.in 2016-09-17 00:00:23 +00:00
cd94f6d535 Introduce cleanup to restore current_uiout
Make a globally available cleanup from a pre-existing one in infrun.c.
This is used in a following patch.

gdb/ChangeLog:

	* infrun.c (restore_current_uiout_cleanup): Move to ui-out.c.
	(print_stop_event): Use make_cleanup_restore_current_uiout.
	* python/python.c (execute_gdb_command): Likewise.
	* ui-out.c (restore_current_uiout_cleanup): Move from infrun.c.
	(make_cleanup_restore_current_uiout): New function definition.
	* ui-out.h (make_cleanup_restore_current_uiout): New function
	declaration.
	* utils.c (do_restore_ui_out): Remove.
	(make_cleanup_restore_ui_out): Remove.
	* utils.h (make_cleanup_restore_ui_out): Remove.
2016-09-16 15:44:29 -04:00
325fac504a gdb: Use std::min and std::max throughout
Otherwise including <string> or some other C++ header is broken.
E.g.:

  In file included from /opt/gcc/include/c++/7.0.0/bits/char_traits.h:39:0,
		   from /opt/gcc/include/c++/7.0.0/string:40,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/infrun.c:68:
  /opt/gcc/include/c++/7.0.0/bits/stl_algobase.h:243:56: error: macro "min" passed 3 arguments, but takes just 2
       min(const _Tp& __a, const _Tp& __b, _Compare __comp)
							  ^
  /opt/gcc/include/c++/7.0.0/bits/stl_algobase.h:265:56: error: macro "max" passed 3 arguments, but takes just 2
       max(const _Tp& __a, const _Tp& __b, _Compare __comp)
							  ^
  In file included from .../src/gdb/infrun.c:21:0:

To the best of my grepping abilities, I believe I adjusted all min/max
calls.

gdb/ChangeLog:
2016-09-16  Pedro Alves  <palves@redhat.com>

	* defs.h (min, max): Delete.
	* aarch64-tdep.c: Include <algorithm> and use std::min and
	std::max throughout.
	* aarch64-tdep.c: Likewise.
	* alpha-tdep.c: Likewise.
	* amd64-tdep.c: Likewise.
	* amd64-windows-tdep.c: Likewise.
	* arm-tdep.c: Likewise.
	* avr-tdep.c: Likewise.
	* breakpoint.c: Likewise.
	* btrace.c: Likewise.
	* ctf.c: Likewise.
	* disasm.c: Likewise.
	* doublest.c: Likewise.
	* dwarf2loc.c: Likewise.
	* dwarf2read.c: Likewise.
	* environ.c: Likewise.
	* exec.c: Likewise.
	* f-exp.y: Likewise.
	* findcmd.c: Likewise.
	* ft32-tdep.c: Likewise.
	* gcore.c: Likewise.
	* hppa-tdep.c: Likewise.
	* i386-darwin-tdep.c: Likewise.
	* i386-tdep.c: Likewise.
	* linux-thread-db.c: Likewise.
	* lm32-tdep.c: Likewise.
	* m32r-tdep.c: Likewise.
	* m88k-tdep.c: Likewise.
	* memrange.c: Likewise.
	* minidebug.c: Likewise.
	* mips-tdep.c: Likewise.
	* moxie-tdep.c: Likewise.
	* nds32-tdep.c: Likewise.
	* nios2-tdep.c: Likewise.
	* nto-procfs.c: Likewise.
	* parse.c: Likewise.
	* ppc-sysv-tdep.c: Likewise.
	* probe.c: Likewise.
	* record-btrace.c: Likewise.
	* remote.c: Likewise.
	* rs6000-tdep.c: Likewise.
	* rx-tdep.c: Likewise.
	* s390-linux-nat.c: Likewise.
	* s390-linux-tdep.c: Likewise.
	* ser-tcp.c: Likewise.
	* sh-tdep.c: Likewise.
	* sh64-tdep.c: Likewise.
	* source.c: Likewise.
	* sparc-tdep.c: Likewise.
	* symfile.c: Likewise.
	* target-memory.c: Likewise.
	* target.c: Likewise.
	* tic6x-tdep.c: Likewise.
	* tilegx-tdep.c: Likewise.
	* tracefile-tfile.c: Likewise.
	* tracepoint.c: Likewise.
	* valprint.c: Likewise.
	* value.c: Likewise.
	* xtensa-tdep.c: Likewise.
	* cli/cli-cmds.c: Likewise.
	* compile/compile-object-load.c: Likewise.
2016-09-16 19:55:17 +01:00
8193adea2f S390: Hardware breakpoint support
Add hardware breakpoint support for S390 targets.

gdb/ChangeLog:

	* s390-linux-nat.c (PER_BIT, PER_EVENT_BRANCH, PER_EVENT_IFETCH)
	(PER_EVENT_STORE, PER_EVENT_NULLIFICATION)
	(PER_CONTROL_BRANCH_ADDRESS, PER_CONTROL_SUSPENSION)
	(PER_CONTROL_ALTERATION): New macros.
	(struct s390_debug_reg_state) <break_areas>: New member.
	(s390_forget_process): Free break_areas as well.
	(s390_linux_new_fork): Copy break_areas as well.
	(s390_prepare_to_resume): Install hardware breakpoints.
	(s390_can_use_hw_breakpoint): Indicate support for hardware
	breakpoints.
	(s390_insert_hw_breakpoint, s390_remove_hw_breakpoint): New
	linux_nat target methods.
	(_initialize_s390_nat): Register them.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp: No longer skip hardware breakpoint tests on s390.
2016-09-16 19:25:55 +02:00
0e00e962c5 linux-nat: Add function lwp_is_stepping
Add the function lwp_is_stepping which indicates whether the given LWP
is currently single-stepping.  This is a common interface, usable from
native GDB as well as from gdbserver.

gdb/gdbserver/ChangeLog:

	* linux-low.c (lwp_is_stepping): New function.

gdb/ChangeLog:

	* nat/linux-nat.h (lwp_is_stepping): New declaration.
	* linux-nat.c (lwp_is_stepping): New function.
2016-09-16 19:25:55 +02:00
169fe0df15 S390: Enable "maint set show-debug-regs"
Implement a new function for dumping the S390 "debug
registers" (actually, the PER info) and invoke it at appropriate places.
Respect the variable show_debug_regs and make it settable by the user.

gdb/ChangeLog:

	* s390-linux-nat.c (gdbcmd.h): New include.
	(s390_show_debug_regs): New function.
	(s390_stopped_by_watchpoint): Call it, if show_debug_regs is set.
	(s390_prepare_to_resume): Likewise.
	(_initialize_s390_nat): Register the command "maint set
	show-debug-regs".
2016-09-16 19:25:55 +02:00
373c3dad74 S390: Multi-inferior watchpoint support
Support different sets of watchpoints in multiple inferiors.

gdb/ChangeLog:

	* s390-linux-nat.c (watch_areas): Remove variable.  Replace by a
	member of...
	(struct s390_debug_reg_state): ...this.  New struct.
	(struct s390_process_info): New struct.
	(s390_process_list): New variable.
	(s390_find_process_pid, s390_add_process, s390_process_info_get)
	(s390_get_debug_reg_state): New functions.
	(s390_stopped_by_watchpoint): Now access the watch_areas VEC via
	s390_get_debug_reg_state.
	(s390_prepare_to_resume): Likewise.
	(s390_insert_watchpoint): Likewise.
	(s390_remove_watchpoint): Likewise.
	(s390_forget_process, s390_linux_new_fork): New linux_nat target
	methods.
	(_initialize_s390_nat): Register them.
2016-09-16 19:25:54 +02:00
17c84ccaf0 S390: Migrate watch areas from list to VEC type
For S390, the list of active watchpoints is maintained in a list based
at "watch_base".  This refactors the list to a vector "watch_areas".

gdb/ChangeLog:

	* s390-linux-nat.c (s390_watch_area): New typedef.  Define a VEC.
	(watch_base): Remove variable.
	(watch_areas): New variable.
	(s390_stopped_by_watchpoint): Transform operations on the
	watch_base list to equivalent operations on the watch_areas VEC.
	(s390_prepare_to_resume): Likewise.
	(s390_insert_watchpoint): Likewise.
	(s390_remove_watchpoint): Likewise.
2016-09-16 19:25:54 +02:00
9c2996c982 S390: Avoid direct access to lwp_info structure
When using the lwp_info structure, avoid accessing its members directly,
and use the advertised function interfaces instead.  This is according
to the instructions in linux-nat.h and prepares for making some of the
code common between gdb and gdbserver.

gdb/ChangeLog:

	* s390-linux-nat.c (s390_prepare_to_resume): Use advertised lwp
	functions instead of accessing lwp_info structure members.
	(s390_mark_per_info_changed): New function.
	(s390_new_thread): Use it.
	(s390_refresh_per_info_cb): New function.
	(s390_refresh_per_info): Remove parameter.  Refresh all lwps of
	the current process.
	(s390_insert_watchpoint): Adjust call to s390_refresh_per_info.
	(s390_remove_watchpoint): Likewise.
2016-09-16 19:25:54 +02:00
d41a5c096e testsuite: Fix false FAIL in gdb.cp/casts.exp
gcc-6.2.1-1.fc26.x86_64

gdb compile failed, /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected primary-expression before 'int'
 decltype(int x)
          ^~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected ')' before 'int'
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:1: error: expected unqualified-id before 'decltype'
 decltype(int x)
 ^~~~~~~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc: In function 'int main(int, char**)':
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:59:14: error: expected primary-expression before 'decltype'
   double y = decltype(2);
              ^~~~~~~~

'decltype' is a registered keyword since C++11 which is now a default for GCC.

On Thu, 15 Sep 2016 14:06:56 +0200, Pedro Alves wrote:

Seems to be exercising the FLAG_SHADOW bits:

...
    {"__typeof__", TYPEOF, OP_TYPEOF, 0 },
    {"__typeof", TYPEOF, OP_TYPEOF, 0 },
    {"typeof", TYPEOF, OP_TYPEOF, FLAG_SHADOW },
    {"__decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX },
    {"decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX | FLAG_SHADOW },
...

/* This is used to associate some attributes with a token.  */

enum token_flag
{
...
  /* If this bit is set, the token is conditional: if there is a
     symbol of the same name, then the token is a symbol; otherwise,
     the token is a keyword.  */

  FLAG_SHADOW = 2
};

So perhaps a better fix is to move that particular test to a
separate testcase that force-compiles with -std=c++03.

gdb/testsuite/ChangeLog
2016-09-16  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.cp/casts.cc (decltype): Move it ...
	(main): ... with its call to ...
	* gdb.cp/casts03.cc: ... a new file.
	* gdb.cp/casts.exp: Add new file casts03.cc, move decltype test to it.
2016-09-16 19:23:22 +02:00
f807f43d7e [ARC] Disassemble correctly extension instructions.
For each MAJOR-MINOR opcode tuple, we can have either a 3-operand, or
2-operand, or a single operand instruction format, depending on the
values present in i-field, and a-field.

The disassembler is reading the section containing the extension
instruction format and stores them in a table.  Each table element
represents a linked list with encodings for a particular MAJOR-MINOR
tuple.

The current implementation checks only against the first element of
the list, hence, the issue.

This patch is walking the linked list until empty or finds an opcode
match.  It also adds a test outlining the found problem.

opcodes/
2016-09-15  Claudiu Zissulescu  <claziss@synopsys.com>

	* arc-dis.c (find_format): Walk the linked list pointed by einsn.

gas/
2016-09-15  Claudiu Zissulescu  <claziss@synopsys.com>

	* testsuite/gas/arc/textinsnxop.d: New file.
	* testsuite/gas/arc/textinsnxop.s: Likewise.
2016-09-16 14:49:33 +02:00
0a0df90827 Automatic date update in version.in 2016-09-16 00:00:18 +00:00
d2dfe70034 testsuite: Fix C++11 compilation failure for gdb.cp/m-static.exp
gcc-6.2.1-1.fc26.x86_64

g++ -std=c++03:
no warnings

g++:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:0:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:34: error: ‘constexpr’ needed for in-class initialization of static
data member ‘const float gnu_obj_4::somewhere’ of non-integral type [-fpermissive]
   static const float somewhere = 3.14159;
                                  ^~~~~~~

clang++:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: warning: in-class initializer for static data member of type 'const
float' is a GNU extension [-Wgnu-static-float-init]
  static const float somewhere = 3.14159;
                     ^           ~~~~~~~
1 warning generated.

clang++ -std=c++11:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: error: in-class initializer for static data member of type 'const
float' requires 'constexpr' specifier [-Wstatic-float-init]
  static const float somewhere = 3.14159;
                     ^           ~~~~~~~
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:3: note: add 'constexpr'
  static const float somewhere = 3.14159;
  ^
  constexpr
1 error generated.

OK for check-in?

After the fix out of the 4 combinations above only this one remains non-empty:

clang++:
In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:
/home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: warning: in-class initializer for static data member of type 'const
float' is a GNU extension [-Wgnu-static-float-init]
  static const float somewhere = 3.14159;
                     ^           ~~~~~~~
1 warning generated.

On Thu, 15 Sep 2016 15:10:50 +0200, Pedro Alves wrote:

Hmm, OK, now that I read the test, I think you were right in trying to
keep it safe, actually.  The .exp file has:

if { $non_dwarf } { setup_xfail *-*-* }
gdb_test "print test4.everywhere" "\\$\[0-9\].* = 317" "static const int initialized in class definition"
if { $non_dwarf } { setup_xfail *-*-* }
gdb_test "print test4.somewhere" "\\$\[0-9\].* = 3.14\[0-9\]*" "static const float initialized in class definition"
                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Added by this:

 https://sourceware.org/bugzilla/show_bug.cgi?id=11702
 https://sourceware.org/ml/gdb-patches/2010-06/msg00677.html
 https://sourceware.org/ml/gdb-patches/2010-06/txt00011.txt

So the new patch would make that highlighted tested above not
test what its test message says it is testing.

So I now think your original patch is better.  Please push
that one instead.

gdb/testsuite/ChangeLog
2016-09-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.cp/m-static.h (gnu_obj_4::somewhere): Use constexpr for C++11.
2016-09-15 23:45:11 +02:00
e2a92b1649 Update ISA 3.0 / POWER9 gdb tests to match GAS test cases.
* gdb.arch/powerpc-power.s: Update Power9 instruction tests
	and sync up the test with tests in gas/testsuite/gas/ppc.
	* gdb.arch/powerpc-power.exp: Likewise.
2016-09-15 16:10:05 -05:00
49b4de6424 testsuite: Disable ccache
There were always various problems with compatibility with ccache:
	https://bugzilla.redhat.com/show_bug.cgi?id=488863
	https://bugzilla.redhat.com/show_bug.cgi?id=759592
	https://sourceware.org/ml/gdb-patches/2009-02/msg00397.html

IMO in a summary ccache finds more a benefit of faster compilation despite the
debug info is no longer exactly the same (as without ccache).

Although for example in this case ccache helped to find a real GDB bug:
	https://sourceware.org/ml/gdb-patches/2015-01/msg00497.html

For the GDB testcases ccache has (IMO) no real performance advantage and it
just brings heisenbugs - false FAILs - from time to time:

Breakpoint 1, main () at gdb/testsuite/gdb.base/vdso-warning.c:21^M
	21        return 0;^M
	(gdb) PASS: gdb.base/vdso-warning.exp: run: startup
	->
	Breakpoint 1, main () at gdb/testsuite/gdb.base/hbreak-unmapped.c:21^M
	21        return 0;^M
	(gdb) FAIL: gdb.base/vdso-warning.exp: run: startup

So I find most safe and easy to just disable ccache for all testsuites.

gdb/testsuite/ChangeLog
2016-09-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* lib/future.exp: Set CCACHE_DISABLE, clear CCACHE_NODISABLE.
2016-09-15 14:06:11 +02:00
d7cd93a718 gas: run the sparc test dcti-couples-v9 only in ELF targets.
gas/ChangeLog:

2016-09-15  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* testsuite/gas/sparc/sparc.exp (gas_64_check): Run
	dcti-couples-v9 only in ELF targets to avoid spurious failures in
	sparc-aout and sparc-coff targets.
2016-09-15 12:20:54 +02:00
fb324ee93a Fix typo in readelf error message.
* readelf.c (process_mips_specific): Fix typo in error message.
2016-09-15 10:42:08 +01:00
fd486b633e Modify POWER9 support to match final ISA 3.0 documentation.
opcodes/
	* ppc-opc.c (powerpc_opcodes) <slbiag>: New mnemonic.
	<addex., brd, brh, brw, lwzmx, nandxor, rldixor, setbool,
	xor3>: Delete mnemonics.
	<cp_abort>: Rename mnemonic from ...
	<cpabort>: ...to this.
	<setb>: Change to a X form instruction.
	<sync>: Change to 1 operand form.
	<copy>: Delete mnemonic.
	<copy_first>: Rename mnemonic from ...
	<copy>: ...to this.
	<paste, paste.>: Delete mnemonics.
	<paste_last>: Rename mnemonic from ...
	<paste.>: ...to this.

gas/
	* testsuite/gas/ppc/power9.d <slbiag, cpabort> New tests.
	<addex., brd, brh, brw, lwzmx, nandxor, rldixor, setbool,
	xor3, cp_abort, copy_first, paste, paste_last, sync>: Remove tests.
	<copy, paste.>: Update tests.
	* testsuite/gas/ppc/power9.s: Likewise.
2016-09-14 22:10:51 -05:00
b82c1d9741 Automatic date update in version.in 2016-09-15 00:00:19 +00:00
4f90d84b2f Fix ld --gc-section segfault with ARMv8-M entry function in absolute section
bfd/
2016-09-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* elf32-arm.c (elf32_arm_gc_mark_extra_sections): Only mark section
	not already marked.

ld/
2016-09-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* testsuite/ld-arm/cmse-veneers.s: Add a test for ARMv8-M Security
	Extensions entry functions in absolute section.
	* testsuite/ld-arm/cmse-veneers.rd: Adapt expected output accordingly.
2016-09-14 16:03:43 +01:00
e6d042fe27 Fix seg-fault in objdump when run on a fuzzed PE binary.
PR binutils/20605
	* peicode.h (pe_bfd_read_buildid): Check that the Data Directory
	contains a valid size for the Debug directory.
2016-09-14 15:32:01 +01:00
fc7514d6f2 gas: improve architecture mismatch diagnostics in sparc
Merely dumping the mnemonic name in "architecture mismatch" errors may
not provide enough information to determine what went wrong, as the same
mnemonic can be used for different variants of an instruction pertaining
to different architecture levels.

This little patch makes the assembler to include the instruction
arguments in the error message.

gas/ChangeLog:

2016-09-14  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* config/tc-sparc.c (sparc_ip): Print the instruction arguments
	in "architecture mismatch" error messages.
2016-09-14 07:15:24 -07:00