Commit Graph

90137 Commits

Author SHA1 Message Date
Kuan-Lin Chen
c1b465c94e RISC-V: Fix the offset of CFA relocation.
gas/ChangeLog:

2017-03-02  Kuan-Lin Chen  <rufus@andestech.com>

        * config/tc-riscv.c (md_apply_fix): Compute the correct offsets
        for CFA relocations.
2017-03-14 09:51:29 -07:00
Andrew Waterman
2c232b8361 RISC-V: Fix [dis]assembly of srai/srli
These were simple copy/paste errors from the compressed left shift
pattern, which can't have a 0-register.
2017-03-14 09:23:18 -07:00
H.J. Lu
9216a6f335 Use addr_mask to check VMA and LMA
Since BFD64 may be used on 32-bit address, we need to apply addr_mask
to check VMA and LMA.

	* ldlang.c (lang_check_section_addresses): Use addr_mask to
	check VMA and LMA.
2017-03-14 09:09:54 -07:00
Simon Marchi
cf81cf6081 Make length_of_subexp static
It isn't used anywhere else than the file it's defined in.

gdb/ChangeLog:

	* parse.c (length_of_subexp): Make static.
	* parser-defs.h (length_of_subexp): Remove.
2017-03-14 10:25:53 -04:00
Nick Clifton
c799a79d66 Try harder to find the correct symbol to associate with OPEN GNU BUILD notes.
* readelf.c (print_gnu_build_attribute_description): Move symbol
	printing code to...
	(print_symbol_for_build_attribute): New function.  ...here.
	Add to find the best symbol to associate with an OPEN note.
	Add code to cache the symbol table and string table, so that they
	are not loaded every time a note is displayed.
	* testsuite/binutils-all/note-2-32.s: Add a function symbol.
	* testsuite/binutils-all/note-2-64.s: Likewise.
	* testsuite/binutils-all/note-2-32.d: Update expected note output.
	* testsuite/binutils-all/note-2-64.d: Likewise.
2017-03-14 12:57:09 +00:00
Anton Kolesov
0efcde634d Add test name argument to get_valueof, get_integer_valueof and get_sizeof
An optional parameter TEST has been added to get_hexadecimal_valueof in commit:

  https://sourceware.org/ml/gdb-patches/2016-06/msg00469.html

This patch adds a similar optional parameter to other related methods that
retrieve expression values: get_valueof, get_integer_valueof and get_sizeof.
Thus tests that evaluate same expression multiple times can provide custom
test names, ensuring that test names will be unique.

gdb/testsuite/ChangeLog:
2017-03-14  Anton Kolesov  <anton.kolesov@synopsys.com>

	* lib/gdb.exp (get_valueof, get_integer_valueof, get_sizeof):
	  Add optional 'test' parameter.
2017-03-14 15:07:25 +03:00
Andreas Arnez
a379284af2 linux-nat: Exploit /proc/<pid>/mem for writing
So far linux_proc_xfer_partial refused to handle write requests.  This is
still based on the assumption that the Linux kernel does not support
writes to /proc/<pid>/mem.  That used to be true, but has changed with
Linux 2.6.39 released in May 2011.

This patch lifts this restriction and now exploits /proc/<pid>/mem for
writing to inferior memory as well, if possible.

gdb/ChangeLog:

	* linux-nat.c (linux_proc_xfer_partial): Handle write operations
	as well.
2017-03-14 11:14:49 +01:00
Pedro Alves
8a6200ba86 Restore test-cp-name-parser build
Commit c8b23b3f89 ("Add constructor and destructor to
demangle_parse_info") a while ago broke the "test-cp-name-parser"
build:

 $ make test-cp-name-parser
 [...]
 src/gdb/cp-name-parser.y: In function ‘int main(int, char**)’:
 src/gdb/cp-name-parser.y:2190:9: error: cannot convert ‘std::unique_ptr<demangle_parse_info>’ to ‘demangle_parse_info*’ in assignment
   result = cp_demangled_name_to_comp (str2, &errmsg);
	  ^
 src/gdb/cp-name-parser.y:2199:38: error: ‘cp_demangled_name_parse_free’ was not declared in this scope
   cp_demangled_name_parse_free (result);
				       ^
 src/gdb/cp-name-parser.y:2211:14: error: cannot convert ‘std::unique_ptr<demangle_parse_info>’ to ‘demangle_parse_info*’ in assignment
	result = cp_demangled_name_to_comp (argv[arg], &errmsg);
	       ^
 src/gdb/cp-name-parser.y:2219:43: error: ‘cp_demangled_name_parse_free’ was not declared in this scope
	cp_demangled_name_parse_free (result);
					    ^
 Makefile:2107: recipe for target 'test-cp-name-parser.o' failed
 make: *** [test-cp-name-parser.o] Error 1

This commit restores it.

gdb/ChangeLog:
2017-03-14  Pedro Alves  <palves@redhat.com>

	* cp-name-parser.y (cp_demangled_name_to_comp): Update comment.
	(main): Use std::unique_ptr.  Remove calls to
	cp_demangled_name_parse_free.
2017-03-14 00:11:09 +00:00
GDB Administrator
9c7272f083 Automatic date update in version.in 2017-03-14 00:00:40 +00:00
Simon Marchi
f79ec20666 alpha-bsd-nat: Use ptid from regcache instead of inferior_ptid
gdb/ChangeLog:

	* alpha-bsd-nat.c (alphabsd_fetch_inferior_registers,
	alphabsd_store_inferior_registers): Use regcache->ptid instead
	of inferior_ptid.
2017-03-13 18:51:41 -04:00
Simon Marchi
edb5fb00a6 aix-thread: Use ptid from regcache instead of inferior_ptid
gdb/ChangeLog:

	* aix-thread.c (aix_thread_fetch_registers,
	aix_thread_store_registers): Use regcache->ptid instead of
	inferior_ptid.
2017-03-13 18:51:40 -04:00
Simon Marchi
551196862e aarc64-linux-nat: Use ptid from regcache instead of inferior_ptid
gdb/ChangeLog:

	* aarch64-linux-nat.c (fetch_gregs_from_thread,
	store_gregs_to_thread, fetch_fpregs_from_thread,
	store_fpregs_to_thread): Use regcache->ptid instead of
	inferior_ptid.
2017-03-13 18:51:39 -04:00
Simon Marchi
6a06fbb7b7 amd64-linux-nat: Use ptid from regcache instead of inferior_ptid
gdb/ChangeLog:

	* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers,
	amd64_linux_fetch_inferior_registers): Use regcache->ptid
	instead of inferior_ptid.
2017-03-13 18:51:39 -04:00
Simon Marchi
c6386875ba Add asserts in target_fetch/store_registers
We are currently assuming that regcache->ptid is equal to inferior_ptid
when we call target_fetch/store_registers.  These asserts just validate
that assumption.  Also, since the following patches will change target
code to use regcache->ptid instead of inferior_ptid, asserting that they
are the same should ensure that our changes don't have any unintended
consequences.

gdb/ChangeLog:

	* target.c (target_fetch_registers, target_store_registers): Add
	assert.
2017-03-13 18:51:38 -04:00
Simon Marchi
ddaaf0fb86 Introduce regcache_get_ptid
This patch introduces the regcache_get_ptid function, which can be used
to retrieve the ptid a regcache is connected to.  It is used in
subsequent patches.

gdb/ChangeLog:

	* regcache.h (regcache_get_ptid): New function.
	* regcache.c (regcache_get_ptid): New function.
2017-03-13 18:51:38 -04:00
Simon Marchi
1a01e7c6b0 gdbserver: Use pattern rule for the remaining %-ipa.o objects
gdb/gdbserver/ChangeLog:

	* Makefile.in (%-ipa.o: %-ipa.c): New rule.
	(ax-ipa.o: ax.c): Remove.
	(linux-i386-ipa.o: linux-i386-ipa.c): Remove.
	(linux-amd64-ipa.o: linux-amd64-ipa.c): Remove.
	(linux-aarch64-ipa.o: linux-aarch64-ipa.c): Remove.
	(linux-s390-ipa.o: linux-s390-ipa.c): Remove.
	(linux-ppc-ipa.o: linux-ppc-ipa.c): Remove.
2017-03-13 18:44:05 -04:00
Simon Marchi
36bc18a810 gdbserver: Use pattern rule for IPA objects from common/
gdb/gdbserver/ChangeLog:

	* Makefile.in (%-ipa.o: ../common/%.c): New rule.
	(print-utils-ipa.o: ../common/print-utils.c): Remove.
	(rsp-low-ipa.o: ../common/rsp-low.c): Remove.
	(errors-ipa.o: ../common/errors.c): Remove.
	(format-ipa.o: ../common/format.c): Remove.
	(common-utils-ipa.o: ../common/common-utils.c): Remove.
2017-03-13 18:44:05 -04:00
Simon Marchi
a8ebe3d5f1 gdbserver: Use pattern rule for IPA objects from gdbserver/
gdb/gdbserver/ChangeLog:

	* Makefile.in (%-ipa.o: %.c): New rule.
	(tracepoint-ipa.o: tracepoint.c): Remove.
	(utils-ipa.o: utils.c): Remove.
	(remote-utils-ipa.o: remote-utils.c): Remove.
	(regcache-ipa.o: regcache.c): Remove.
	(i386-linux-ipa.o: i386-linux.c): Remove.
	(i386-mmx-linux-ipa.o: i386-mmx-linux.c): Remove.
	(i386-avx-linux-ipa.o: i386-avx-linux.c): Remove.
	(i386-mpx-linux-ipa.o: i386-mpx-linux.c): Remove.
	(i386-avx-mpx-linux-ipa.o: i386-avx-mpx-linux.c): Remove.
	(i386-avx-avx512-linux-ipa.o: i386-avx-avx512-linux.c): Remove.
	(i386-avx-mpx-avx512-pku-linux-ipa.o: i386-avx-mpx-avx512-pku-linux.c): Remove.
	(amd64-linux-ipa.o: amd64-linux.c): Remove.
	(amd64-avx-linux-ipa.o: amd64-avx-linux.c): Remove.
	(amd64-mpx-linux-ipa.o: amd64-mpx-linux.c): Remove.
	(amd64-avx-mpx-linux-ipa.o: amd64-avx-mpx-linux.c): Remove.
	(amd64-avx-avx512-linux-ipa.o: amd64-avx-avx512-linux.c): Remove.
	(amd64-avx-mpx-avx512-pku-linux-ipa.o: amd64-avx-mpx-avx512-pku-linux.c): Remove.
	(aarch64-ipa.o: aarch64.c): Remove.
	(s390-linux32-ipa.o: s390-linux32.c): Remove.
	(s390-linux32v1-ipa.o: s390-linux32v1.c): Remove.
	(s390-linux32v2-ipa.o: s390-linux32v2.c): Remove.
	(s390-linux64-ipa.o: s390-linux64.c): Remove.
	(s390-linux64v1-ipa.o: s390-linux64v1.c): Remove.
	(s390-linux64v2-ipa.o: s390-linux64v2.c): Remove.
	(s390-te-linux64-ipa.o: s390-te-linux64.c): Remove.
	(s390-vx-linux64-ipa.o: s390-vx-linux64.c): Remove.
	(s390-tevx-linux64-ipa.o: s390-tevx-linux64.c): Remove.
	(s390x-linux64-ipa.o: s390x-linux64.c): Remove.
	(s390x-linux64v1-ipa.o: s390x-linux64v1.c): Remove.
	(s390x-linux64v2-ipa.o: s390x-linux64v2.c): Remove.
	(s390x-te-linux64-ipa.o: s390x-te-linux64.c): Remove.
	(s390x-vx-linux64-ipa.o: s390x-vx-linux64.c): Remove.
	(s390x-tevx-linux64-ipa.o: s390x-tevx-linux64.c): Remove.
	(powerpc-32l-ipa.o: powerpc-32l.c): Remove.
	(powerpc-altivec32l-ipa.o: powerpc-altivec32l.c): Remove.
	(powerpc-cell32l-ipa.o: powerpc-cell32l.c): Remove.
	(powerpc-vsx32l-ipa.o: powerpc-vsx32l.c): Remove.
	(powerpc-isa205-32l-ipa.o: powerpc-isa205-32l.c): Remove.
	(powerpc-isa205-altivec32l-ipa.o: powerpc-isa205-altivec32l.c): Remove.
	(powerpc-isa205-vsx32l-ipa.o: powerpc-isa205-vsx32l.c): Remove.
	(powerpc-e500l-ipa.o: powerpc-e500l.c): Remove.
	(powerpc-64l-ipa.o: powerpc-64l.c): Remove.
	(powerpc-altivec64l-ipa.o: powerpc-altivec64l.c): Remove.
	(powerpc-cell64l-ipa.o: powerpc-cell64l.c): Remove.
	(powerpc-vsx64l-ipa.o: powerpc-vsx64l.c): Remove.
	(powerpc-isa205-64l-ipa.o: powerpc-isa205-64l.c): Remove.
	(powerpc-isa205-altivec64l-ipa.o: powerpc-isa205-altivec64l.c): Remove.
	(powerpc-isa205-vsx64l-ipa.o: powerpc-isa205-vsx64l.c): Remove.
	(tdesc-ipa.o: tdesc.c): Remove.
	(x32-linux-ipa.o: x32-linux.c): Remove.
	(x32-avx-linux-ipa.o: x32-avx-linux.c): Remove.
	(x32-avx512-linux-ipa.o: x32-avx512-linux.c): Remove.
2017-03-13 18:44:04 -04:00
Simon Marchi
50cfacb78f gdbserver: Use pattern rule for objects from arch/
gdb/gdbserver/ChangeLog:

	* Makefile.in (%.o: ../arch/%.c): New rule.
	(arm.o: ../arch/arm.c): Remove.
	(arm-linux.o: ../arch/arm-linux.c): Remove.
	(arm-get-next-pcs.o: ../arch/arm-get-next-pcs.c): Remove.
	(aarch64-insn.o: ../arch/aarch64-insn.c): Remove.
2017-03-13 18:44:03 -04:00
Simon Marchi
c5a22423d0 gdbserver: Use pattern rule for objects from nat/
gdb/gdbserver/ChangeLog:

	* Makefile.in (%.o: ../nat/%.c): New rule.
	(x86-dregs.o: ../nat/x86-dregs.c): Remove.
	(amd64-linux-siginfo.o: ../nat/amd64-linux-siginfo.c): Remove.
	(linux-btrace.o: ../nat/linux-btrace.c): Remove.
	(linux-osdata.o: ../nat/linux-osdata.c): Remove.
	(linux-procfs.o: ../nat/linux-procfs.c): Remove.
	(linux-ptrace.o: ../nat/linux-ptrace.c): Remove.
	(linux-waitpid.o: ../nat/linux-waitpid.c): Remove.
	(mips-linux-watch.o: ../nat/mips-linux-watch.c): Remove.
	(ppc-linux.o: ../nat/ppc-linux.c): Remove.
	(linux-personality.o: ../nat/linux-personality.c): Remove.
	(aarch64-linux-hw-point.o: ../nat/aarch64-linux-hw-point.c): Remove.
	(aarch64-linux.o: ../nat/aarch64-linux.c): Remove.
	(x86-linux.o: ../nat/x86-linux.c): Remove.
	(x86-linux-dregs.o: ../nat/x86-linux-dregs.c): Remove.
	(linux-namespaces.o: ../nat/linux-namespaces.c): Remove.
2017-03-13 18:44:03 -04:00
Simon Marchi
6bda016bec gdbserver: Use pattern rule for objects from common/
gdb/gdbserver/ChangeLog:

	* Makefile.in (%.o: ../common/%.c): New rule.
	(signals.o: ../common/signals.c): Remove.
	(print-utils.o: ../common/print-utils.c): Remove.
	(rsp-low.o: ../common/rsp-low.c): Remove.
	(common-utils.o: ../common/common-utils.c): Remove.
	(posix-strerror.o: ../common/posix-strerror.c): Remove.
	(mingw-strerror.o: ../common/mingw-strerror.c): Remove.
	(vec.o: ../common/vec.c): Remove.
	(gdb_vecs.o: ../common/gdb_vecs.c): Remove.
	(xml-utils.o: ../common/xml-utils.c): Remove.
	(ptid.o: ../common/ptid.c): Remove.
	(buffer.o: ../common/buffer.c): Remove.
	(format.o: ../common/format.c): Remove.
	(filestuff.o: ../common/filestuff.c): Remove.
	(agent.o: ../common/agent.c): Remove.
	(errors.o: ../common/errors.c): Remove.
	(environ.o: ../common/environ.c): Remove.
	(common-debug.o: ../common/common-debug.c): Remove.
	(cleanups.o: ../common/cleanups.c): Remove.
	(common-exceptions.o: ../common/common-exceptions.c): Remove.
	(fileio.o: ../common/fileio.c): Remove.
	(common-regcache.o: ../common/common-regcache.c): Remove.
	(signals-state-save-restore.o: ../common/signals-state-save-restore.c): Remove.
	(new-op.o: ../common/new-op.c): Remove.
	(btrace-common.o: ../common/btrace-common.c): Remove.
2017-03-13 18:44:02 -04:00
Simon Marchi
21122961ec gdbserver: Use pattern rule for objects from target/
gdb/gdbserver/ChangeLog:

	* Makefile.in (%.o: ../target/%.c): New rule.
	(waitstatus.o: ../target/waitstatus.c): Remove.
2017-03-13 18:44:02 -04:00
Simon Marchi
c362e6217b gdbserver: Use pattern rule for regformats source file generation
gdb/gdbserver/ChangeLog:

	* Makefile.in
	(%.c: ../regformats/%.dat,
	(%.c: ../regformats/arm/%.dat,
	(%.c: ../regformats/i386/%.dat,
	(%.c: ../regformats/rs6000/%.dat): New rules.
	(aarch64.c): Remove.
	(reg-arm.c): Remove.
	(arm-with-iwmmxt.c): Remove.
	(arm-with-vfpv2.c): Remove.
	(arm-with-vfpv3.c): Remove.
	(arm-with-neon.c): Remove.
	(reg-bfin.c): Remove.
	(reg-cris.c): Remove.
	(reg-crisv32.c): Remove.
	(i386.c): Remove.
	(i386-linux.c): Remove.
	(i386-avx.c): Remove.
	(i386-avx-linux.c): Remove.
	(i386-avx-avx512.c): Remove.
	(i386-avx-avx512-linux.c): Remove.
	(i386-mpx.c): Remove.
	(i386-mpx-linux.c): Remove.
	(i386-avx-mpx-avx512-pku.c): Remove.
	(i386-avx-mpx-avx512-pku-linux.c): Remove.
	(i386-avx-mpx.c): Remove.
	(i386-avx-mpx-linux.c): Remove.
	(i386-mmx.c): Remove.
	(i386-mmx-linux.c): Remove.
	(reg-ia64.c): Remove.
	(reg-m32r.c): Remove.
	(reg-m68k.c): Remove.
	(reg-cf.c): Remove.
	(mips-linux.c): Remove.
	(mips-dsp-linux.c): Remove.
	(mips64-linux.c): Remove.
	(mips64-dsp-linux.c): Remove.
	(nios2-linux.c): Remove.
	(powerpc-32.c): Remove.
	(powerpc-32l.c): Remove.
	(powerpc-altivec32l.c): Remove.
	(powerpc-cell32l.c): Remove.
	(powerpc-vsx32l.c): Remove.
	(powerpc-isa205-32l.c): Remove.
	(powerpc-isa205-altivec32l.c): Remove.
	(powerpc-isa205-vsx32l.c): Remove.
	(powerpc-e500l.c): Remove.
	(powerpc-64l.c): Remove.
	(powerpc-altivec64l.c): Remove.
	(powerpc-cell64l.c): Remove.
	(powerpc-vsx64l.c): Remove.
	(powerpc-isa205-64l.c): Remove.
	(powerpc-isa205-altivec64l.c): Remove.
	(powerpc-isa205-vsx64l.c): Remove.
	(s390-linux32.c): Remove.
	(s390-linux32v1.c): Remove.
	(s390-linux32v2.c): Remove.
	(s390-linux64.c): Remove.
	(s390-linux64v1.c): Remove.
	(s390-linux64v2.c): Remove.
	(s390-te-linux64.c): Remove.
	(s390-vx-linux64.c): Remove.
	(s390-tevx-linux64.c): Remove.
	(s390x-linux64.c): Remove.
	(s390x-linux64v1.c): Remove.
	(s390x-linux64v2.c): Remove.
	(s390x-te-linux64.c): Remove.
	(s390x-vx-linux64.c): Remove.
	(s390x-tevx-linux64.c): Remove.
	(tic6x-c64xp-linux.c): Remove.
	(tic6x-c64x-linux.c): Remove.
	(tic6x-c62x-linux.c): Remove.
	(reg-sh.c): Remove.
	(reg-sparc64.c): Remove.
	(reg-spu.c): Remove.
	(amd64.c): Remove.
	(amd64-linux.c): Remove.
	(amd64-avx.c): Remove.
	(amd64-avx-linux.c): Remove.
	(amd64-avx-avx512.c): Remove.
	(amd64-avx-avx512-linux.c): Remove.
	(amd64-mpx.c): Remove.
	(amd64-mpx-linux.c): Remove.
	(amd64-avx-mpx-avx512-pku.c): Remove.
	(amd64-avx-mpx-avx512-pku-linux.c): Remove.
	(amd64-avx-mpx.c): Remove.
	(amd64-avx-mpx-linux.c): Remove.
	(x32.c): Remove.
	(x32-linux.c): Remove.
	(x32-avx.c): Remove.
	(x32-avx-linux.c): Remove.
	(x32-avx-avx512.c): Remove.
	(x32-avx-avx512-linux.c): Remove.
	(reg-xtensa.c): Remove.
	(reg-tilegx.c): Remove.
	(reg-tilegx32.c): Remove.
2017-03-13 18:44:01 -04:00
Simon Marchi
7978d7c385 testsuite: Disable backslash_in_multi_line_command_test for old DejaGnus
I noticed that backslash_in_multi_line_command_test in
gdb.base/commands.exp failed on our RHEL6 servers.  I traced it to the
old version of DejaGnu (1.4.4).  I have found that instead of receiving
the expected:

  "print \\\nargc\n"

gdb received:

  "print  argc\n"

thus breaking the test and its purpose.  Versionof DejaGnu < 1.5 mess
up sending "\\\n", it somehow gets replaced with a space.  I found that
the following commit in DejaGnu fixed the issue:

http://git.savannah.gnu.org/cgit/dejagnu.git/commit/lib/remote.exp?id=3f39294f5cd6802858838d3bcc0ccce847ae17f2

Even though the commit is almost 10 years old, the following release of
DejaGnu was only in 2013, which is why we still have systems with the
old code.

If the DejaGnu version is < 1.5, we just skip the test.

gdb/testsuite/ChangeLog:

	* gdb.base/commands.exp (backslash_in_multi_line_command_test):
	Skip for versions of DejaGnu < 1.5.
2017-03-13 18:02:08 -04:00
Simon Marchi
896c0c1ede testsuite: Introduce dejagnu_version
The next patch will require checking the DejaGnu version.  There is
already a test that does this,
gdb.threads/attach-many-short-lived-threads.exp.  This patch introduces
a new procedure, dejagnu_version, and makes that test use it.

The version number is "right-padded" with zeroes, to make sure that we
always return a triplet (major, minor, patch).

The procedure does not consider the DejaGnu versions from git.  For
example, if you used DejaGnu from its current master branch, the version
would be "1.6.1-git", meaning that 1.6.1 will be the next release.  I
figured we'll cross that bridge when (and if) we get there.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (dejagnu_version): New proc.
	* gdb.threads/attach-many-short-lived-threads.exp (bad_dejagnu):
	Use dejagnu_version.
2017-03-13 18:02:07 -04:00
mark
b9da89d161 Merge libiberty: Initialize d_printing in all cplus_demangle_fill_* functions.
While integrating the d_printing recursion guard change into gdb I
noticed we forgot to initialize the demangle_component d_printing
field in cplus_demangle_fill_{name,extended_operator,ctor,dtor}.
As is done in cplus_demangle_fill_{component,builtin_type,operator}.
It happened to work because in gcc all demangle_components were
allocated through d_make_empty. But gdb has its own allocation
mechanism (as might other users).

libiberty/ChangeLog:

       * cp-demangle.c (cplus_demangle_fill_name): Initialize
       demangle_component d_printing.
       (cplus_demangle_fill_extended_operator): Likewise.
       (cplus_demangle_fill_ctor): Likewise.
       (cplus_demangle_fill_dtor): Likewise.

gdb/ChangeLog:

       * cp-name-parser.y (make_empty): Initialize d_printing to zero.
2017-03-13 20:51:42 +01:00
Nick Clifton
c793cac124 Sync libiberty sources with GCC.
PR demangler/70909
	PR demangler/67264
	* cp-demangle.c: Fix endless recursion. Pass
	struct demangle_component as non const.
	(d_make_empty): Initialize variable.
	(d_print_comp_inner): Limit recursion.
	(d_print_comp): Decrement variable.
	* cp-demint.c (cplus_demangle_fill_component): Initialize
	variable.
	(cplus_demangle_fill_builtin_type): Likewise.
	(cplus_demangle_fill_operator): Likewise.
	* testsuite/demangle-expected: Add tests.
2017-03-13 17:49:32 +00:00
Alan Modra
5ef2d51bd6 objdump -dS: warn if source is more recent than object
If the source file is more recent than the object file, line number
information in the object may no longer match the source.  So print a
warning message.

	* objdump.c (update_source_path): Add abfd param.  Add struct
	stat vars.  Pass to try_print_file_open.  Warn if source is more
	recent than object.
	(try_print_file_open, slurp_file): Add struct stat param to
	return fstat.
	(show_line): Call update_source_path with bfd.
2017-03-13 21:20:02 +10:30
Nick Clifton
f955cccff3 Rename R_AARCH64_TLSDESC_LD64_LO12_NC to R_AARCH64_TLSDESC_LD64_LO12 and R_AARCH64_TLSDESC_ADD_LO12_NC to R_AARCH64_TLSDESC_ADD_LO12.
PR binutils/21202
include	* elf/aarch64.h (R_AARCH64_TLSDESC_LD64_LO12_NC): Rename to
	R_AARCH64_TLSDESC_LD64_LO12.
	(R_AARCH64_TLSDESC_ADD_LO12_NC): Rename to
	R_AARCH64_TLSDESC_ADD_LO12_NC.

bfd	* reloc.c (BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC): Rename to
	BFD_RELOC_AARCH64_TLSDESC_LD64_LO12.
	(BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC): Rename to
	BFD_RELOC_AARCH64_TLSDESC_ADD_LO12.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
	* elfnn-aarch64.c (IS_AARCH64_TLS_RELAX_RELOC): Update reloc
	names.
	(IS_AARCH64_TLSDESC_RELOC): Likewise.
	(elfNN_aarch64_howto_table): Likewise.
	(aarch64_tls_transition_without_check): Likewise.
	(aarch64_reloc_got_type): Likewise.
	(elfNN_aarch64_final_link_relocate): Likewise.
	(elfNN_aarch64_tls_relax): Likewise.
	(elfNN_aarch64_relocate_section): Likewise.
	(elfNN_aarch64_gc_sweep_hook): Likewise.
	(elfNN_aarch64_check_relocs): Likewise.
	* elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise.
	(_bfd_aarch64_elf_resolve_relocation): Likewise.

gas	* config/tc-aarch64.c (reloc_table): Rename
	BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC to
	BFD_RELOC_AARCH64_TLSDESC_LD64_LO12.  Rname
	BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC to
	BFD_RELOC_AARCH64_TLSDESC_ADD_LO12.
	(md_apply_fix): Likewise.
	(aarch64_force_relocation): Likewise.
	* testsuite/gas/aarch64/tls.d: Update regexp.

ld	* testsuite/ld-aarch64/ifunc-5r-local.d: Update regexp.
2017-03-13 09:58:04 +00:00
Tristan Gingold
d40e34db39 ld: add an error in case of address space overflow.
ld/
	* ldlang.c (lang_check_section_addresses): Check for address space
	overflow.
	* testsuite/ld-checks/checks.exp (overflow_check): New procedure
	* testsuite/ld-checks/over.s: New test source.
	* testsuite/ld-checks/over.d: New test.
	* testsuite/ld-checks/over2.s: New test source.
	* testsuite/ld-checks/over2.d: New test.
2017-03-13 10:41:22 +01:00
Alexey Neyman
4b5900d8b8 PowerPC: incorrect library search order
First, need to match against just the CPU name, not the whole triplet.
Otherwise, the test picks up "*le-*" pattern from x86_64-apple-darwin
triplet.

Second, it should be testing for $target, not $host. Host may be
little endian by default, and the sysroot directory layout shouldn't
depend on whether it is built on LE or BE machine.

	* emulparams/elf32ppccommon.sh (LIBPATH_SUFFIX): Set from target
	cpu, not host.
2017-03-13 17:51:38 +10:30
GDB Administrator
b9d62f893f Automatic date update in version.in 2017-03-13 00:00:21 +00:00
GDB Administrator
d5bb792ca1 Automatic date update in version.in 2017-03-12 00:00:28 +00:00
Alan Modra
118aa6cf39 Add sysroot for ld -rpath search
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Add
	sysroot for -rpath search.
2017-03-11 23:40:21 +10:30
Alan Modra
316a1245fe Rewrite add_sysroot
Relative paths shouldn't have the sysroot prefix added.  The patch
also makes some attempt at supporting DOS paths, and tidies code using
the new add_sysroot.

	* emultempl/elf32.em (gld${EMULATION_NAME}_add_sysroot): Rewrite.
	Only prefix absolute paths with sysroot.  Handle DOS paths.
	(gld${EMULATION_NAME}_check_ld_elf_hints): Constify variable.
	(gld${EMULATION_NAME}_check_ld_so_conf): Likewise.
	(gld${EMULATION_NAME}_after_open): Short-circuit NULL path
	searches.  Rename variable.  Simplify get_runpath search.
2017-03-11 23:40:20 +10:30
Alan Modra
4aef764338 Remove bogus ATTRIBUTE_UNUSED
* elf32-ppc.c: Remove ATTRIBUTE_UNUSED throughout when function
	parameter is in fact used.  Whitespace fixes.
	* elf64-ppc.c: Likewise.
2017-03-11 23:40:10 +10:30
Alan Modra
bb4287c562 Don't use -rdynamic in ld test
This gcc option isn't well supported, so use the actual linker option
we want to test.

	* testsuite/ld-elf/shared.exp: Use -Wl,-export-dynamic rather
	than -rdynamic.
2017-03-11 11:04:02 +10:30
Alan Modra
e299b3551e Don't run new orphan tests on i860 and i960
These targets use the generic ELF support, so don't handle orphans
well.  The patch also updates the orphan doco to reflect this fact,
and deletes some ELF details that don't really add anything.

	* ld.texinfo (Orphan Sections): Mention that not all targets
	handle orphans well.  Delete ELF details.
	* testsuite/ld-elf/orphan-9.d: Don't run for i860 and i960.
	* testsuite/ld-elf/orphan-10.d: Likewise.
2017-03-11 10:51:56 +10:30
GDB Administrator
a08f8d99b8 Automatic date update in version.in 2017-03-11 00:00:23 +00:00
Keith Seitz
5f4d108508 c++/8218: Destructors w/arguments.
For a long time now, c++/8218 has noted that GDB is printing argument types
for destructors:

(gdb) ptype A
type = class A {
  public:
    ~A(int);
}

This happens because cp_type_print_method_args doesn't ignore artificial
arguments.  [It ignores the first `this' pointer because it simply skips
the first argument for any non-static function.]

This patch fixes this:

(gdb) ptype  A
type = class A {
  public:
    ~A();
}

I've adjusted gdb.cp/templates.exp to account for this and added a new
passing regexp.

gdb/ChangeLog

	PR c++/8218
	* c-typeprint.c (cp_type_print_method_args): Skip artificial arguments.

gdb/testsuite/ChangeLog

	PR c++/8128
	* gdb.cp/templates.exp (test_ptype_of_templates): Remove argument
	type from destructor regexps.
	Add a branch which actually passes the test.
	Adjust "ptype t5i" test names.
2017-03-10 10:32:09 -08:00
Chia-Hao Lo
7b5d48229b Make objdump's --wide command line option affect its output of DWARF debug information.
PR binutils/21235
	* objdump.c (main): Set do_wide with --wide.
2017-03-10 16:29:58 +00:00
Nick Clifton
8b1e5da10a Document that the .2byte and .4byte directives warn about overlarge values.
* doc/as.texinfo (2byte): Tidy up wording.  Add note that
	overlarge values will produce a warning message and be trunacted.
	(4byte): Likewise.
2017-03-10 15:42:04 +00:00
Nick Clifton
55e22ca83a Add basic recognition of new EM_ ELF machine numbers.
include	* elf/common.h (EM_LANAI): New machine number.
	(EM_BPF): Likewise.
	(EM_WEBASSEMBLY): Likewise.
	Move low value, deprecated, numbers to their numerical
	equivalents.

binutils * readelf.c (get_machine_name): Rearrange switch table in order of
	increasing machine number.  Add missing entries.
2017-03-10 10:50:34 +00:00
GDB Administrator
f9f791a1b1 Automatic date update in version.in 2017-03-10 00:00:28 +00:00
Andrew Burgess
14ea2c1b23 ld: Track changes to default region LMA even for empty sections
Given a linker script fragment like this:

   SECTIONS {
     . = 0x1000;
     .text   : AT(0x100) { *(.text)   }
     .data   : AT(0x200) { *(.data)   }
     .rodata : AT(0x300) { *(.rodata) }
   }

and an input file containing sections, '.text', '.data.1', and
'.rodata', then we'd expect the linker to place '.text' and '.rodata' in
the obvious way, and the '.data.1' orphan section would be located after
the '.data' section (assuming similar section properties).

Further, I believe that the expectation would be that the LMA for the
orphan '.data.1' section would start from 0x200 (as there is no '.data'
content).

However, right now, the LMA for '.data.1' would be 0x101, following on
from the '.text' section, this is because the change in LMA for the
'.data' section is not noticed by the linker, if there's no content in
the '.data' section.

What can be even more confusing to a user (though the cause is obvious
once you understand what's going on) is that adding some content to
'.data' will cause the orphan '.data.1' to switch to an LMA based off of
0x200.

This commit changes the behaviour so that an empty section that is in
the default lma region, and sets its lma, will adjust the lma of the
default region, this change will then be reflected in following sections
within the default lma memory region.

There's a new test to cover this issue that passes on a range of
targets, however, some targets generate additional sections, or have
stricter memory region size requirements that make it harder to come
up with a generic pass pattern, that still tests the required
features.  For now I've set the test to ignore these targets.

ld/ChangeLog:

	* ldlang.c (lang_size_sections_1): Shortcut loop only after
	tracking changes to the default regions LMA.
	* testsuite/ld-elf/orphan-9.ld: Extend header comment.
	* testsuite/ld-elf/orphan-10.d: New file.
	* testsuite/ld-elf/orphan-10.s: New file.
	* NEWS: Mention change in behaviour.
2017-03-09 21:11:06 +00:00
Andrew Burgess
77f5e65ecf ld: better handling of lma region for orphan sections
When picking an lma_region for an orphan section we currently create a
new lang_output_section_statement_type and then populate this with the
orphan section.

The problem is that the lang_output_section_statement_type has a prev
pointer that links back to the previous output section.  For non-orphan
output sections, that are created in linker script order, the prev
pointer will point to the output section that appears previous in linker
script order, as you'd probably expect.

The problem is that orphan sections are placed after processing the
linker script, and so, in the case of an output section created for an
orphan input section, the prev pointer actually points to the last
output section created.

This causes some unexpected behaviour when the orphan section is not
placed after the last non-orphan section that was created.

For example, consider this linker script:

  MEMORY {
    TEXT   : ORIGIN = 0x200,  LENGTH = 0x10
    RODATA : ORIGIN = 0x400,  LENGTH = 0x10
  }

  SECTIONS {
    .text   :           {*(.text)    } AT>TEXT
    .data   : AT(0x300) { *(.data)   }
    .rodata :           { *(.rodata) } AT>RODATA
  }

If we are processing an orphan section '.data.1' and decide to place
this after '.data', then the output section created will have a prev
pointer that references the '.rodata' output section.  The result of
this is that '.data.1' will actually be assigned to the RODATA lma
region, which is probably not the expected behaviour.

The reason why '.data.1' is placed into the lma region of the '.rodata'
section is that lma region propagation is done at the time we create the
output section, based on the previous output section pointer, which is
really just a last-output-section-created pointer at that point in time,
though the prev point is fixed up later to reflect the true order of the
output sections.

The solution I propose in this commit is to move the propagation of lma
regions into a separate pass of the linker, rather than performing this
as part of the enter/exit of output sections during linker script
parsing.

During this later phase we have all of the output sections to hand, and
the prev/next points have been fixed up by this point to reflect the
actual placement ordering.

There's a new test to cover this issue that passes on a range of
targets, however, some targets generate additional sections, or have
stricter memory region size requirements that make it harder to come
up with a generic pass pattern, that still tests the required
features.  For now I've set the test to ignore these targets.

ld/ChangeLog:

	* ldlang.c (lang_leave_output_section_statement): Move lma_region
	logic to...
	(lang_propagate_lma_regions): ...this new function.
	(lang_process): Call new function.
	* testsuite/ld-elf/orphan-9.d: New file.
	* testsuite/ld-elf/orphan-9.ld: New file.
	* testsuite/ld-elf/orphan-9.s: New file.
	* NEWS: Mention change in behaviour.
2017-03-09 21:11:05 +00:00
Andrew Burgess
a87ded7b88 ld: Orphan section documentation
Make more explicit mention of the fact that orphan sections can cause a
new output section to be created.  Though this information is clearly
implied in the manual it might not be clear enough.

A user _might_ (incorrectly) think that orphan sections can only be
inserted into an existing output section.

ld/ChangeLog:

	* ld.texinfo (Orphan Sections): Add more detail.
2017-03-09 21:10:58 +00:00
H.J. Lu
86fa6981e7 X86: Add pseudo prefixes to control encoding
Many x86 instructions have more than one encodings.  Assembler picks
the default one, usually the shortest one.  Although the ".s", ".d8"
and ".d32" suffixes can be used to swap register operands or specify
displacement size, they aren't very flexible.  This patch adds pseudo
prefixes, {xxx}, to control instruction encoding.  The available
pseudo prefixes are {disp8}, {disp32}, {load}, {store}, {vex2}, {vex3}
and {evex}.  Pseudo prefixes are preferred over the ".s", ".d8" and
".d32" suffixes, which are deprecated.

gas/

	* config/tc-i386.c (_i386_insn): Add dir_encoding and
	vec_encoding.  Remove swap_operand and need_vrex.
	(extra_symbol_chars): Add '}'.
	(md_begin): Mark '}' with LEX_BEGIN_NAME.  Allow '}' in
	mnemonic.
	(build_vex_prefix): Don't use 2-byte VEX encoding with
	{vex3}.  Check dir_encoding and load.
	(parse_insn): Check pseudo prefixes.  Set dir_encoding.
	(VEX_check_operands): Likewise.
	(match_template): Check dir_encoding and load.
	(parse_real_register): Set vec_encoding instead of need_vrex.
	(parse_register): Likewise.
	* doc/c-i386.texi: Document {disp8}, {disp32}, {load}, {store},
	{vex2}, {vex3} and {evex}.  Remove ".s", ".d8" and ".d32"
	* testsuite/gas/i386/i386.exp: Run pseudos and x86-64-pseudos.
	* testsuite/gas/i386/pseudos.d: New file.
	* testsuite/gas/i386/pseudos.s: Likewise.
	* testsuite/gas/i386/x86-64-pseudos.d: Likewise.
	* testsuite/gas/i386/x86-64-pseudos.s: Likewise.

opcodes/

	* i386-gen.c (opcode_modifiers): Replace S with Load.
	* i386-opc.h (S): Removed.
	(Load): New.
	(i386_opcode_modifier): Replace s with load.
	* i386-opc.tbl: Add {disp8}, {disp32}, {swap}, {vex2}, {vex3}
	and {evex}.  Replace S with Load.
	* i386-tbl.h: Regenerated.
2017-03-09 09:59:00 -08:00
Sam Thursfield
f03265d9cd Fix compile time warnings about using possibly uninitialised variables in rs6000-core.c.
* rs6000-core.c (CORE_NEW): Simplify macro when
	AIX_CORE_DUMPX_CORE and BFD64 are true to avoid compile warning.
2017-03-09 16:01:06 +00:00
H.J. Lu
c1fe188b15 Use CpuCET on rdsspq
* i386-opc.tbl: Use CpuCET on rdsspq.
	* i386-tbl.h: Regenerated.
2017-03-09 07:43:48 -08:00