Add REGISTRY for struct address_space.

This patch adds REGISTRY for struct address_space.

gdb:

2013-11-20  Yao Qi  <yao@codesourcery.com>

	* progspace.c (struct address_space): Update comments.
	<REGISTRY_FIELDS>: New fields.
	DEFINE_REGISTRY for address_space.
	(new_address_space): Call address_space_alloc_data.
	(free_address_space): Call address_space_free_data.
	* progspace.h: Use DECLARE_REGISTRY.
Associate target_dcache to address_space.

Hi,
Nowadays, 'target_dcache' is a global variable in GDB, which is not
necessary.  It can be a per-address-space variable.  In this patch, we
associate target_dcache to address_space.

gdb/doc:

2013-11-20  Yao Qi  <yao@codesourcery.com>

	* gdb.texinfo (Caching Target Data): Update doc for
	per-address-space dcache.

gdb:

2013-11-20  Yao Qi  <yao@codesourcery.com>

	* progspace.h (struct address_space_data): Declare.
	* target-dcache.c: Include "progspace.h".
	(target_dache): Remove.
	(target_dcache_aspace_key): New.
	(target_dcache_cleanup): New function.
	(target_dcache_init_p): Get data through
	target_dcache_aspace_key.
	(target_dcache_invalidate): Likewise.
	(target_dcache_get): Likewise.
	(target_dcache_get_or_init): Likewise.
	(_initialize_target_dcache): Initialize
	target_dcache_aspace_key.
gdb/arm-tdep.c: Remove "Infinite loop detected" error message.

Since as far back as the beginning of the sourceware repository
the ARM port has printed an error "Infinite loop detected" when
the next_pc calculated is the same as the current one, for example
when encountering a branch to the current PC address.

This causes the test gdb.base/random-signal.exp as the error message
is not expected. I have not been able to find a good reason for the
message to be here so remove it and let the test pass.

gdb/ChangeLog:

2013-11-20  Will Newton  <will.newton@linaro.org>

	* arm-tdep.c (arm_get_next_pc): Remove "Infinite loop detected"
	error message.
Revert "Do not issue error messages when parsing a PSTATE register".

This reverts commit 03e621be975dacc9cec9f5782698bdb098f6a49c.
gas/testsuite/

	* gas/aarch64/msr.s: Add tests.
	* gas/aarch64/msr.d: Update.

include/opcode

	* aarch64.h (aarch64_pstatefields): Change element type to
	aarch64_sys_reg.

opcodes/

	* aarch64-opc.c (aarch64_pstatefields): Update.
Fix conditions in creating a bitfield.

Bitfields are represented by intervals [start, begin]. It means that for an
interval comprised by only one  bit start and end will be equal.
The present condition does not always hold. On the other hand in target-description.c
(tdesc_gdb_type) bitfield is created when "f->type" is null. The routine
maint_print_maint_print_c_tdesc_cmd is modified to follow the same strategy.

2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* target-descriptions.c (maint_print_maint_print_c_tdesc_cmd):
	Modified logic of creating a bitfield to be in sync with
	tdesc_gdb_type.

testsuite/
	* gdb.xml/maint_print_struct.xml (bitfield): Added bitfield having
	start and end equal 0.

Change-Id: I8c62db049995f0c0c30606d9696b86afe237cbb9
Add MPX registers XML files.

2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* features/i386/Makefile: Adapts for using MPX registers.
	* features/i386/32bit-mpx.xml: New file.
	* features/i386/64bit-mpx.xml: Likewise.
	* features/i386/amd64-mpx-linux.c: Likewise.
	* features/i386/amd64-mpx-linux.xml: Likewise.
	* features/i386/amd64-mpx.c: Likewise.
	* features/i386/amd64-mpx.xml: Likewise.
	* features/i386/i386-mpx-linux.c: Likewise.
	* features/i386/i386-mpx-linux.xml: Likewise.
	* features/i386/i386-mpx.c: Likewise.
	* features/i386/i386-mpx.xml: Likewise.
	* regformats/i386/amd64-mpx-linux.dat: New file.
	* regformats/i386/amd64-mpx.dat: Likewise.
	* regformats/i386/i386-mpx-linux.dat: Likewise.
 	* regformats/i386/i386-mpx.dat: Likewise.
Add MPX support for i386

2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Add MPX
	registers on the range of registers to be read from
	xsave buffer.
	(i386_linux_read_description): Add case for MPX.
	* i386-linux-tdep.c: Include features/i386/i386-mpx-linux.c.
	(i386_linux_gregset_reg_offset): Add MPX registers.
	(i386_linux_core_read_description): Initialize also MPX.
	(_initialize_i386_linux_tdep): Add mpx initialization.
	* i386-tdep.h (gdbarch_tdep): Add fields bnd0r_regnum, bnd0_regnum,
	mpx_register_names.
	(i386_regnum): Add MPX registers.
	(I386_MPX_NUM_REGS): New macro.
	(i386_bnd_regnum_p): New function.
	* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set
	number of registers to be the number of BNDSTATUS.
	(tdesc_i386_mpx_linux): Add description for MPX Linux registers.
	* i386-tdep.c: Include features/i386/i386-mpx.c.
	(i386_mpx_names): Add MPX register names array.
	(i386_bnd_names): Add bnd pseudo register names array.
	(i386_bndr_regnum_p): Lookup register numbers for bnd raw
	registers.
	(i386_bndr_regnum_p): Lookup register numbers for bnd raw registers.
	(386_mpx_ctrl_regnum_p): Lookup register numbers for MPX control
	registers.
	(i386_bnd_type): New function.
	(i386_pseudo_register_type): Use i386_bnd_type for bnd pseudo
	register types.
	(i386_pseudo_register_read_into_value): Add bnd case.
	(i386_pseudo_register_write): Add bnd pseudo registers.
	(i386_register_reggroup_p): Add MPX register to the group all.
	(i386_validate_tdesc_p): Add MPX to the target 	description
	validation.
	(i386_pseudo_register_name): Add bnd pseudo registers.
	(i386_gdbarch_init): Add MPX for architecture initialization.
	(_initia_initialize_i386_tdep): Add mpx initialization.
	* i387-tdep.c (xsave_mpx_offset): New vector for MPX offsets on
	XSAVE buffer.
	(XSAVE_MPX_ADDR): New macro.
	(i387_supply_xsave): Add MPX case.
	(i387_collect_xsave): Add MPX case.
	* i387-tdep.h (I387_BND0R_REGNUM): New macro.
	(I387_BNDCFGU_REGNUM): New macro.
	(I387_NUM_MPX_REGS): New macro.
	(I387_NUM_BND_REGS): New macro.
	(I387_NUM_MPX_CTRL_REGS): New macro.
	(I387_MPXEND_REGNUM): New macro.
	* common/i386-xstate.h (I386_XSTATE_BNDREGS): New macro.
	(I386_XSTATE_BNDCFG): Likewise.
	(I386_XSTATE_MPX_MASK): Likewise.
	(I386_XSTATE_ALL_MASK): New macro represents flags for all states.
	(I386_XSTATE_BNDREGS_SIZE): New macro.
	(I386_XSTATE_BNDCFG_SIZE): Likewise.
	(I386_XSTATE_SIZE): Adapt for MPX.
	(I386_XSTATE_MAX_SIZE): Likewise.

Change-Id: I9ddb7d49434d86fa18eb6b99515203d7c567aefd
Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>

Conflicts:

	gdb/ChangeLog
MPX for amd64

2013-06-24  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset):
	Add MPX registers.
	(amd64_linux_read_description): Add initialization for MPX and
	AVX independently.
	* amd64-linux-tdep.c: Includes features/i386/amd64-mpx-linux.c.
	(amd64_linux_gregset_reg_offset): Add MPX registers.
	(amd64_linux_core_read_description): Add initialization for MPX
	registers.
	(_initialize_amd64_linux_tdep): Initialize MPX targets.
	* amd64-linux-tdep.h (AMD64_LINUX_RAX_REGNUM): Set it to the last
	register on the list.
	(tdesc_amd64_mpx_linux) Add new target	for MPX.
	* amd64-tdep.c: Includes features/i386/amd64-mpx.c.
	(amd64_mpx_names): MPX register names.
	(amd64_init_abi): Add MPX register while initializing the ABI.
	(_initialize_amd64_tdep): Initialize MPX targets.
	* amd64-tdep.h (amd64_regnum): Add MPX registers.
	(AMD64_NUM_REGS): Set number of registers taking MPX into account.

Change-Id: I4a785c181e2fb45e4086650b2f87426caeb2f800
Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>

Conflicts:

	gdb/ChangeLog
Add MPX support to gdbserver.

2013-05-22  Walfred Tedeschi  <walfred.tedeschi@intel.com>

gdbserver/
	* Makefile.in: Add i386-mpx.c, i386-mpx-linux.c, amd64-mpx.c,
	amd64-mpx-linux.c, x32-mpx.c and x32-mpx-linux.c generation.

	* configure.srv (srv_i386_regobj): Add i386-mpx.o.
	(srv_i386_linux_regobj): Add i386-mpx-linux.o.
	(srv_amd64_regobj): Add amd64-mpx.o.
	(srv_amd64_linux_regobj): Add amd64-mpx-linux.o.
	(srv_i386_32bit_xmlfiles): Add i386/32bit-mpx.xml.
	(srv_i386_64bit_xmlfiles): Add i386/64bit-mpx.xml.

	* i387-fp.c (num_pl_bnd_register) Added constant.
	(num_pl_bnd_cfg_registers) Added constant.
	(struct i387_xsave) Added reserved area and MPX fields.
	(i387_cache_to_xsave, i387_xsave_to_cache) Add MPX.

	* linux-x86-low.c (init_registers_i386_mpx_linux): Declare new
	function.
	(tdesc_i386_mpx_linux): Add MPX amd64 target.
	(init_registers_amd64_mpx_linux): Declare new function.
	(tdesc_amd64_mpx_linux): Add MPX amd64 target.
	(x86_64_regmap): Add MPX registers.
	(x86_linux_read_description): Add MPX case.
	(initialize_low_arch): Initialize MPX targets.

Change-Id: I394d81afa76d11375ce792cefad0ceb9825fb379
Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>
Add pretty-printer for MPX bnd registers.

Boundary length is simpler implemented by means of a pretty
printer. This simplifies users life when examining a bound register.

Changelog:
2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* python/lib/gdb/command/bound_register.py: New file.
	* gdb/data-directory/Makefile.in: copy bond_register.py to the right path to
	be initialized at gdb startup.
testsuite/
	* gdb.python/py-pp-maint.exp: Consider new pretty-print added for registers.

Change-Id: Id4f39845e5ece56c370a1fd4343648909f08b731
Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>

Conflicts:

	gdb/ChangeLog
Add MPX registers tests.

2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>

	* common/i386-gcc-cpuid.h (bit_MPX): Synchronize with gcc file.
testsuite/
	* gdb.arch/i386-mpx.c: New file
	* gdb.arch/i386-mpx.exp: New file.

Change-Id: Ica4c9ee823c8210ca876e31f27dcd8583b660a9f
Signed-off-by: Walfred Tedeschi <walfred.tedeschi@intel.com>
set_address_space_data if dcache is NULL.

gdb:

2013-11-20  Yao Qi  <yao@codesourcery.com>

	* target-dcache.c (target_dcache_get_or_init): Call
	set_address_space_data if 'dcache' is NULL.
test: test eval routines with EVAL_AVOID_SIDE_EFFECTS flag set

Ensure that certain commands (e.g. whatis/ptype) and sizeof intrinsic
have no side effects (variables cannot be altered).

2013-11-20  Sanimir Agovic  <sanimir.agovic@intel.com>

testsuite/
	* gdb.base/eval-avoid-side-effects.exp: New test.
remove strerror module

This fixes the mingw build breakage reported by Pierre.

I found that the gnulib strerror module somehow requires us to pull in
the gethostname module.  However, pulling in the gethostname module
makes many things break.

I've sent a bug report to gnulib.

Meanwhile, removing the strerror module should not harm gdb and fixes
the build.

I'm checking this in.

2013-11-20  Tom Tromey  <tromey@redhat.com>

	* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Remove
	strerror module.
	* gnulib/aclocal.m4: Update.
	* gnulib/config.in: Update.
	* gnulib/configure: Update.
	* gnulib/import/Makefile.am: Update.
	* gnulib/import/Makefile.in: Update.
	* gnulib/import/errno.in.h: Remove.
	* gnulib/import/intprops.h: Remove.
	* gnulib/import/m4/errno_h.m4: Remove.
	* gnulib/import/m4/gnulib-cache.m4: Update.
	* gnulib/import/m4/gnulib-comp.m4: Update.
	* gnulib/import/m4/strerror.m4: Remove.
	* gnulib/import/m4/sys_socket_h.m4: Remove.
	* gnulib/import/strerror-override.c: Remove.
	* gnulib/import/strerror-override.h: Remove.
	* gnulib/import/strerror.c: Remove.
	* gnulib/update-gnulib.sh: Update.
	* scripttempl/elf32msp430.sc (.data): Set the based on the next
	free location in the text memory region, not a computation based
	upon the size of the text section.  Orphaned sections or other
	linker scripts might insert new sections between the .text section
	and the .data section.
	* scripttempl/elf32msp430_3.sc (.data): Likewise.
Make the maint.exp:'maint print objfiles' test less fragile.

I was "lucky" enough that an unrelated patch changed how many symtabs
GDB expands in a plain run to main, and that triggered a latent issue
in this test:

  PASS: gdb.base/maint.exp: maint print objfiles: header
  PASS: gdb.base/maint.exp: maint print objfiles: psymtabs
  FAIL: gdb.base/maint.exp: maint print objfiles: symtabs

The problem is in my case, expect is managing to alway put in the
buffer chunks like this:


  Psymtabs:
  ../../../src/gdb/testsuite/gdb.base/break1.c at 0x1ed2280, ../../../src/gdb/testsuite/gdb.base/break.c at 0x1ed21d0,

  Symtabs:
  ../../../src/gdb/testsuite/gdb.base/break.c at 0x1f044f0, /usr/include/stdio.h at 0x1ed25a0, /usr/include/libio.h at 0x1ed2510, /usr/include/bits/types.h at 0x1ed2480, /usr/lib/gcc/x86_64-redhat-linux/4.7.2/include/stddef.h at 0x1ed23f0,


  Object file /usr/lib/debug/lib64/ld-2.15.so.debug:  Objfile at 0x1f4bff0, bfd at 0x1f2d940, 0 minsyms

  Psymtabs:
  bsearch.c at 0x1f65340, ../sysdeps/x86_64/multiarch/init-arch.c at
  0x1f65290, ...

Note: Psymtabs:/Symtabs:/Psymtabs:.

So, the loop matches the first Psymtabs in the buffer.  Then we're
left with


  ../../../src/gdb/testsuite/gdb.base/break1.c at 0x1ed2280, ../../../src/gdb/testsuite/gdb.base/break.c at 0x1ed21d0,

  Symtabs:
  ../../../src/gdb/testsuite/gdb.base/break.c at 0x1f044f0, /usr/include/stdio.h at 0x1ed25a0, /usr/include/libio.h at 0x1ed2510, /usr/include/bits/types.h at 0x1ed2480, /usr/lib/gcc/x86_64-redhat-linux/4.7.2/include/stddef.h at 0x1ed23f0,


  Object file /usr/lib/debug/lib64/ld-2.15.so.debug:  Objfile at 0x1f4bff0, bfd at 0x1f2d940, 0 minsyms

  Psymtabs:
  bsearch.c at 0x1f65340, ../sysdeps/x86_64/multiarch/init-arch.c at
  0x1f65290, ...

In the next iteration, because the psymtabs regex comes first, we
match with the Psymtabs: line, then of course, end up with just

  bsearch.c at 0x1f65340, ../sysdeps/x86_64/multiarch/init-arch.c at
  0x1f65290, ...

in the buffer.  The "Symtabs:" line is lost.  expect then reads more
gdb output, and manages to again retrieve the same pattern.  Rinse,
repeat, and the test never matches any "Symtab:" line.

We don't know the order the matches lines will appear, so the fix is
to consume one line at a time, and run it through all three milestone
regexes.

gdb/testsuite/
2013-11-20  Pedro Alves  <palves@redhat.com>

	* gdb.base/maint.exp (maint print objfiles): Consume one line at a
	time, and run it through all three milestone regexes.
get rid of py-value.c:is_intlike (use is_integral_type instead)

is_intlike was mostly duplicating is_integral_type, with the exception
of the handling of TYPE_CODE_PTR when parameter PTR_OK is nonzero.
This patches deletes the is_intlike function, using is_integral_type
instead, and adjusting the two locations where this function gets
called.

The code should remain strictly equivalent.

gdb/ChangeLog:

        * python/py-value.c (is_intlike): Delete.
        (valpy_int): Replace use of CHECK_TYPEDEF and is_intlike
        by use of is_integral_type.
        (valpy_long): Replace use of CHECK_TYPEDEF and is_intlike
        by use of is_integral_type and check for TYPE_CODE_PTR.
Add missing ChangeLog entry.

2013-11-20  Pedro Alves  <palves@redhat.com>

	* gdb.base/maint.exp (maint print objfiles): Consume one line at a
	time, and run it through all three milestone regexes.
Add mpx1static, mpx2 and mpx2static tests

	* ld-x86-64/mpx.exp (build_tests): Add libmpx2a.a, libmpx2b.a
	and libmpx2c.a.
	(run_tests): Add mpx1static, mpx2 and mpx2static.
	* ld-x86-64/mpx2.out: Likewise.
	* ld-x86-64/mpx2a.c: Likewise.
	* ld-x86-64/mpx2a.rd: Likewise.
	* ld-x86-64/mpx2b.c: Likewise.
	* ld-x86-64/mpx2c.c: Likewise.
	* ld-x86-64/mpx2c.rd: Likewise.