89632 Commits

Author SHA1 Message Date
a5ec5e3fe1 RISC-V/GAS: Support more relocs against constant addresses
Previously, some pseudoinstructions like "call" only accepted
symbolic addresses and rejected constant addresses with an
esoteric internal error.  This patch enables them by deferring
application of constant relocations to md_apply_fix, rather than
eagerly applying them during instruction assembly.

gas/ChangeLog

2017-01-09  Andrew Waterman <andrew@sifive.com>

	* config/tc-riscv.c (append_insn): Don't eagerly apply relocations
	against constants.
	(md_apply_fix): Mark relocations against constants as "done."
2017-01-09 09:20:05 -08:00
e294484ee7 RISC-V/GAS: Improve handling of invalid relocs
TLS relocs against constants previously segfaulted, and illegal
symbol subtractions were silently ignored.

The previous behavior was to segfault.

gas/ChangeLog

2017-01-09  Andrew Waterman <andrew@sifive.com>

	* config/tc-riscv.c (md_apply_fix): Report TLS relocations against
	constants.  Report disallowed symbol subtractions.
2017-01-09 09:18:36 -08:00
6ec11ab97a Remove some custom sections from RISC-V's default linker scripts
This was added so compressed loads could have smaller offsets for
accessing the data section, but the result was that writable sections
ended up in INITIAL_READONLY_SECTIONS.  This is a bad idea.  The fix is
to just remove this micro-optimization.

Thanks to Alan Morda for finding the problem!

ld/ChangeLog

2017-01-09  Palmer Dabbelt <palmer@dabbelt.com>
            Kito Cheng <kito.cheng@gmail.com>

        * emulparams/elf32lriscv-defs.sh (INITIAL_READONLY_SECTIONS):
        Removed.
        (SDATA_START_SYMBOLS): Likewise.
2017-01-09 09:12:20 -08:00
cd6581da62 Speed up objdump when displaying disassembly mixed with line number and source code information.
bfd	* dwarf2.c (lookup_address_in_function_table): Return early if
	there are no functions in the given comp unit, or if the high
	address of the last function in the comp unit is less than the
	desired address.

binutils * objdump.c (display_file): Add new parameter 'last_file'.  If
	last_file is true, do not call bfd_close at the end of the
	function.
	(main): Set the value of the last_file parameter when calling
	display_file.
2017-01-09 16:49:48 +00:00
20b52c88ea Add Swedish translation for GAS.
* po/sv.po: New Swedish translation.
	* configure.ac (ALL_LINGUAS): Add sv.
	* configure: Regenerate.
2017-01-09 10:11:50 +00:00
98f02962fe Improve objdump's behaviour when it encounters a corrupt binary with an excessively large symbol table.
PR binutils/21013
	* coffgen.c (_bfd_coff_get_external_symbols): Generate an error
	message if there are too many symbols to load.
2017-01-09 09:27:46 +00:00
011561117e RISC-V/GAS: Correct branch relaxation for weak symbols.
* config/tc-riscv.c (relaxed_branch_length): Use the long
	sequence when the target is a weak symbol.
2017-01-09 09:22:33 +00:00
3254d32c4b [GOLD] Set sh_info of .rela.plt for powerpc
* powerpc.cc (Target_powerpc::make_plt_section): Point sh_info of
	".rela.plt" at ".plt".
2017-01-09 12:10:56 +10:30
4d74727a4a .rela.dyn comment fix and add missing ChangeLog entry
ChangeLog entry missed from commit dd90581873.

	* readelf.c (process_section_headers): Correct .rel.dyn/.rela.dyn
	comment.
2017-01-09 12:10:55 +10:30
a631dd7b79 Automatic date update in version.in 2017-01-09 00:00:20 +00:00
f5e6296e21 [D] Fix crash when debug expression enabled.
While casting works as expected with expression debugging turned off,
this seems to be an indication that the D language parser function is
doing something wrong in the building of the expression.

Without changing the grammar, using UNOP_CAST_TYPE is the right thing to
do here, as the TypeExp handler has already wrapped the type around a
pair of OP_TYPE opcodes.

gdb/ChangeLog:

	* d-exp.y (CastExpression): Emit UNOP_CAST_TYPE.

gdb/testsuite/ChangeLog:

	* gdb.dlang/debug-expr.exp: New file.
2017-01-08 11:20:56 +01:00
2efa21564b Automatic date update in version.in 2017-01-08 00:00:24 +00:00
431e5de3f2 S/390: Issue error for overflowing relocs.
Building PIE executable from non-PIC code results in broken binaries.
With this patch the problem is detected at link-time.

bfd/ChangeLog:

2017-01-07  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* elf64-s390.c (elf_s390_relocate_section): Issue error for
	non-PLT relocs of shared libary symbol in exectuable.
2017-01-07 22:03:07 +01:00
0e123f69da [GOLD] powerpc.cc tidies
Plus some paranoia in symval_for_branch.  We shouldn't get there with
dynamic symbols, but if we ever did the static_cast to Powerpc_relobj
would be wrong.

	* powerpc.cc: Use shorter equivalent elfcpp typedef for
	Reltype and reloc_size throughout.
	(Target_powerpc::symval_for_branch): Exclude dynamic symbols.
	(Target_powerpc::Scan::local): Use local var r_sym.
	(Target_powerpc::Scan::global: Likewise.
	(Target_powerpc::Relocate::relocate): Delete shadowing r_sym.
2017-01-07 22:04:51 +10:30
a6eb589ffe Automatic date update in version.in 2017-01-07 00:00:21 +00:00
0e2d6fa6a3 Include gdb_proc_service.h in x86-linux-nat.h
$ make check-headers CHECK_HEADERS="x86-linux-nat.h"
...
../../binutils-gdb/gdb/x86-linux-nat.h:29:8: error: 'ps_err_e' does not name a type
 extern ps_err_e x86_linux_get_thread_area (pid_t pid, void *addr,
        ^

gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* x86-linux-nat.h: Include gdb_proc_service.h.
2017-01-06 14:33:01 +00:00
44d6d3f933 Include serial.h in ser-base.h.
$ make check-headers CHECK_HEADERS="ser-base.h"
...
../../binutils-gdb/gdb/ser-base.h:33:8: error: 'serial_ttystate' does not name a type
 extern serial_ttystate ser_base_get_tty_state (struct serial *scb);
        ^

gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* ser-base.h: Include serial.h.
2017-01-06 14:33:01 +00:00
656731fe0f Include ppc-tdep.h in ppc-linux-tdep.h
$ make check-headers CHECK_HEADERS="ppc-linux-tdep.h"
...
../../binutils-gdb/gdb/ppc-linux-tdep.h:34:24: error: 'PPC_NUM_REGS' was not declared in this scope
   PPC_ORIG_R3_REGNUM = PPC_NUM_REGS,
                        ^

gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* ppc-linux-tdep.h: Include ppc-tdep.h.
2017-01-06 14:33:01 +00:00
1ca8f924a4 Include signal.h in nat/amd64-linux-siginfo.h
$ make check-headers CHECK_HEADERS="nat/amd64-linux-siginfo.h"
....
../../binutils-gdb/gdb/nat/amd64-linux-siginfo.h:52:39: error: 'siginfo_t' was not declared in this scope
 int amd64_linux_siginfo_fixup_common (siginfo_t *native, gdb_byte *inf,
                                       ^
gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* nat/amd64-linux-siginfo.h: Include signal.h.
2017-01-06 14:33:01 +00:00
bc3008c48f Include break-common.h in nat/aarch64-linux-hw-point.h
$ make check-headers CHECK_HEADERS="nat/aarch64-linux-hw-point.h"
...
../../binutils-gdb/gdb/nat/aarch64-linux-hw-point.h:169:37: error: use of enum 'target_hw_bp_type' without previous declaration
 int aarch64_handle_breakpoint (enum target_hw_bp_type type, CORE_ADDR addr,
                                     ^
gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* nat/aarch64-linux-hw-point.h: Include break-common.h.
2017-01-06 14:33:01 +00:00
66c80d0307 Include mi-cmds.h in mi-parse.h
$ make check-headers CHECK_HEADERS="mi/mi-parse.h"
...
../../binutils-gdb/gdb/mi/mi-parse.h:77:6: error: use of enum 'print_values' without previous declaration
 enum print_values mi_parse_print_values (const char *name);
      ^

gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* mi/mi-parse.h: Include mi-cmds.h.
2017-01-06 14:33:00 +00:00
051d2ddae5 Include target.h in inf-loop.h
$ make check-headers CHECK_HEADERS="target.h inf-loop.h"
...
../../binutils-gdb/gdb/inf-loop.h:23:42: error: use of enum 'inferior_event_type' without previous declaration
 extern void inferior_event_handler (enum inferior_event_type event_type,
                                          ^
gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* inf-loop.c: Don't include "target.h".
	* inf-loop.h: Include it here.
2017-01-06 14:26:45 +00:00
8018d34f1e Include doublest.h and expression.h in dfp.h
$ make check-headers CHECK_HEADERS="dfp.h"
...
../../binutils-gdb/gdb/dfp.h:39:8: error: 'DOUBLEST' does not name a type
 extern DOUBLEST decimal_to_doublest (const gdb_byte *from, int len,
        ^
../../binutils-gdb/gdb/dfp.h:41:33: error: use of enum 'exp_opcode' without previous declaration
 extern void decimal_binop (enum exp_opcode,
                                 ^
gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* dfp.h: Include "dboulest.h" and "expression.h".
2017-01-06 14:26:45 +00:00
c0b8369c8a Include ax.h in ax-gdb.h
$ make check-headers CHECK_HEADERS="ax-gdb.h"
...

../../binutils-gdb/gdb/ax-gdb.h:104:8: error: 'agent_expr_up' does not name a type
 extern agent_expr_up gen_trace_for_expr (CORE_ADDR, struct expression *,
        ^

gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* ax-gdb.h: Include "ax.h"
2017-01-06 14:26:45 +00:00
ad5cba2adb Update gdb_ptrace.h in HFILES_NO_SRCDIR
Commit e379037 (Move gdb_ptrace.h to nat/), so we should update
file name in HFILES_NO_SRCDIR too.  Otherwise, 'make tags' complains,

$ make tags
make: *** No rule to make target `gdb_ptrace.h', needed by `TAGS'.  Stop.

gdb:

2017-01-06  Yao Qi  <yao.qi@linaro.org>

	* Makefile.in (HFILES_NO_SRCDIR): Replace gdb_ptrace.h
	with nat/gdb_ptrace.h.
2017-01-06 14:03:02 +00:00
fd13a84bb0 Retire Paul Brook as an ARM maintainer.
* MAINTAINERS: Move Paul Brook to the Past Maintainers section.
2017-01-06 12:24:54 +00:00
ac10a93e27 Automatic date update in version.in 2017-01-06 00:00:25 +00:00
1c33cd7f00 Fix ARI warning
This patch splits the expression before the && operator instead of
after it.

gdb:

2017-01-05  Yao Qi  <yao.qi@linaro.org>

	* mips-fbsd-tdep.c (mips_fbsd_sigframe_init): Move && to
	new line.
	(mips64_fbsd_sigframe_init): Likewise.
2017-01-05 14:45:05 +00:00
0ae60c3ef4 Prevent an abort in the FRV disassembler if the target bfd name is unknown.
PR 20946
	* frv-desc.c (lookup_mach_via_bfd_name): Return NULL if the name
	could not be matched.
	(frv_cgen_cpu_open): Allow for lookup_mach_via_bfd_name returning
	NULL.
2017-01-05 09:11:47 +00:00
c0386d4d54 Five fixes, for fcsel, fcvtz, fminnm, mls, and non-widening mul.
sim/aarch64/
	* cpustate.c: Include math.h.
	(aarch64_set_FP_float): Use signbit to check for signed zero.
	(aarch64_set_FP_double): Likewise.
	* simulator.c (do_vec_MOV_immediate, case 0x8): Add missing break.
	(do_vec_mul): In all DO_VEC_WIDENING_MUL calls, make second and fourth
	args same size as third arg.
	(fmaxnm): Use isnan instead of fpclassify.
	(fminnm, dmaxnm, dminnm): Likewise.
	(do_vec_MLS): Reverse order of subtraction operands.
	(dexSimpleFPCondSelect): Call aarch64_get_FP_double or
	aarch64_get_FP_float to get source register contents.
	(UINT_MIN, ULONG_MIN, FLOAT_UINT_MAX, FLOAT_UINT_MIN,
	DOUBLE_UINT_MAX, DOUBLE_UINT_MIN, FLOAT_ULONG_MAX, FLOAT_ULONG_MIN,
	DOUBLE_ULONG_MAX, DOUBLE_ULONG_MIN): New.
	(do_fcvtzu): Use ULONG instead of LONG, and UINT instead of INT in
	raise_exception calls.

	sim/testsuite/sim/aarch64/
	* fcsel.s: New.
	* fcvtz.s: New.
	* fminnm.s: New.
	* mls.s: New.
	* mul.s: New.
2017-01-04 16:07:50 -08:00
6ed0191f65 Automatic date update in version.in 2017-01-05 00:00:35 +00:00
c988ac1de5 Use correct OSABI constant for FreeBSD/mips binaries.
gdb/ChangeLog:

	* mips-fbsd-tdep.c (_initialize_mips_fbsd_tdep): Use
	GDB_OSABI_FREEBSD instead of GDB_OSABI_FREEBSD_ELF.
2017-01-04 12:15:22 -08:00
b268007c68 Add native target for FreeBSD/mips.
This supports the o32 and n64 ABIs.

gdb/ChangeLog:

	* Makefile.in (ALLDEPFILES): Add mips-fbsd-nat.c.
	* NEWS: Mention new FreeBSD/mips native configuration.
	* config/mips/fbsd.mh: New file.
	* configure.host: Add mips*-*-freebsd*.
	* mips-fbsd-nat.c: New file.
2017-01-04 09:41:58 -08:00
387360daf9 Add FreeBSD/mips architecture.
This has been tested for the n64 and o32 ABIs.  Signal frame unwinders for
both ABIs are provided.  FreeBSD/mips requires custom linkmap offsets since
it contains an additional l_off member in 'struct link_map' that other
FreeBSD platforms do not have.  Support for collecting and supplying
general purpose and floating point register sets are provided.  Common
routines for working with native format register sets are exported for
use by the native target.

gdb/ChangeLog:

	* Makefile.in (ALL_TARGET_OBS): Add mips-fbsd-tdep.o.
	(ALLDEPFILES): Add mips-fbsd-tdep.c.
	* NEWS: Mention new FreeBSD/mips target.
	* configure.tgt: Add mips*-*-freebsd*.
	* mips-fbsd-tdep.c: New file.
	* mips-fbsd-tdep.h: New file.

gdb/doc/ChangeLog:

	* gdb.texinfo (Contributors): Add SRI International and University
	of Cambridge for FreeBSD/mips.
2017-01-04 09:41:58 -08:00
b055631694 Use noyywrap option in lex files.
ld	PR 20958
	* ldlex.l (option): Add noyywrap
	(yywrap): Delete.
	* ldlex.h (yywrap): Delete prototype.

binutils
	PR 20958
	* syslex.l (option): Add noyywrap
	(yywrap): Delete.
2017-01-04 16:05:22 +00:00
8cf50cb070 [DWARF] Sync GCC dwarf.def change on AArch64
include/
	* dwarf2.def: Sync with mainline gcc sources.
2017-01-04 14:27:52 +00:00
7c2a23b23e update-copyright.py for binutils
This is a modified form of gcc's contrib/update-copyright.py.

	* update-copyright.py: New file.
	* add-log.el: Update copyright year range.
	* texi2pod.pl: Likewise.
2017-01-05 00:03:07 +10:30
e495212d22 Sync libiberty from gcc
Picks up copyright year update and other recent fixes.
2017-01-05 00:03:07 +10:30
0913ae5ad7 picflag.m4 high bit set in comment
* picflag.m4: Import from gcc.
2017-01-05 00:02:57 +10:30
d74d4880e2 [AArch64] Add separate feature flag for weaker release consistent load insns
The weaker release consistency support of ARMv8.3-A is allowed as an optional
extension for ARMv8.2-A, so separate command line option and feature flag is
added: -march=armv8.2-a+rcpc turns LDAPR, LDAPRB, LDAPRH instructions on.

opcodes/
	* aarch64-tbl.h (RCPC, RCPC_INSN): Define.
	(aarch64_opcode_table): Use RCPC_INSN.

include/
	* opcode/aarch64.h (AARCH64_FEATURE_RCPC): Define.
	(AARCH64_ARCH_V8_3): Update.

gas/
	* config/tc-aarch64.c (aarch64_features): Add rcpc.
	* doc/c-aarch64.texi (AArch64 Extensions): Document rcpc.
	* testsuite/gas/aarch64/ldst-exclusive-armv8_3.d: Rename to ...
	* testsuite/gas/aarch64/ldst-rcpc.d: This.
	* testsuite/gas/aarch64/ldst-exclusive-armv8_3.s: Rename to ...
	* testsuite/gas/aarch64/ldst-rcpc.s: This.
	* testsuite/gas/aarch64/ldst-rcpc-armv8_2.d: New test.
2017-01-04 12:31:08 +00:00
10ab38d930 When configuring GAS treat as sparcv9 target the same way as a sparc64 target.
PR gas/20992
	* configure.tgt: Treat sparcv9 as sparc64.
2017-01-04 11:49:00 +00:00
2aaaf250e8 Fix an internal error on writing pieced value
In ee40d8d (Move computed value's frame id to piece_closure), I only
updated read_pieced_value to use frame_id from piece_closure, but
forgot to update write_pieced_value, so it causes the following
internal error on arm-linux,

set variable l = 4^M
gdb/git/gdb/value.c:1579: internal-error: frame_id* deprecated_value_next_frame_id_hack(value*): Assertion `value->lval == lval_register' failed.^M
A problem internal to GDB has been detected,^M
further debugging may prove unreliable.^M
Quit this debugging session? (y or n) FAIL: gdb.base/store.exp: var longest l; setting l to 4 (GDB internal error)

This patch fixes the internal error.

gdb:

2017-01-04  Yao Qi  <yao.qi@linaro.org>

	* dwarf2loc.c (write_pieced_value): Don't use VALUE_FRAME_ID (to),
	use c->frame_id when the piece location is DWARF_VALUE_REGISTER.
2017-01-04 09:32:46 +00:00
c27e4edb52 Automatic date update in version.in 2017-01-04 00:00:20 +00:00
47523653a3 Check for shared lib support before running ld tests with -shared
Another fix now that we run these tests non-native.

	* testsuite/ld-elf/audit.exp: Check for shared lib support.
	* testsuite/ld-elf/compress.exp: Likewise.
	* testsuite/ld-elf/dwarf.exp: Likewise.
	* testsuite/ld-elf/shared.exp: Likewise.
	* testsuite/ld-elf/wrap.exp: Likewise.
	* testsuite/ld-ifunc/ifunc.exp: Likewise.
	* testsuite/ld-plugin/lto.exp: Check $CXX exists.
2017-01-04 09:39:12 +10:30
ae4fda6638 bfd: alpha: Fix crash caused by double free with --no-keep-memory
Without this, ld has been seen to crash in libc when freeing tsec_free:

*** Error in `/usr/bin/ld': double free or corruption (!prev): 0x0000000120ceb6a0 ***

_bfd_elf_link_read_relocs will always return the cached value if
present, even if keep_memory is false, therefore setting tsec_free to
NULL only when keep_memory is true is not sufficient.

	* elf64-alpha.c (elf64_alpha_relax_opt_call): Don't set tsec_free
	if relocs are cached.
2017-01-04 08:53:43 +10:30
cc917fd93d Add support for the Q extension to the RISCV ISA.
gas    * config/tc-riscv.c (riscv_set_arch): Whitelist the "q" ISA
        extension.
        (riscv_after_parse_args): Set FLOAT_ABI_QUAD when the Q ISA is
        enabled and no other ABI is specified.

include * opcode/riscv-opc.h: Add support for the "q" ISA extension.

opcodes * riscv-opc.c (riscv-opcodes): Add support for the "q" ISA
        extension.
        * riscv-opcodes/all-opcodes: Likewise.
2017-01-03 17:42:01 +00:00
de1010f408 Fix generation of GOT table when only GOT-relative relocs are used.
PR ld/21017
	* elf32-microblaze.c (microblaze_elf_check_relocs): Add an entry
	for R_MICROBLAZE_GOTOFF_64.
2017-01-03 16:18:41 +00:00
b52d3cfcfb Add fall through comment.
* riscv-dis.c (print_insn_args): Add fall through comment.
2017-01-03 16:02:36 +00:00
f90c58d593 Add new Serbian translation for the opcodes library.
* po/sr.po: New Serbian translation.
	* configure.ac (ALL_LINGUAS): Add sr.
	* configure: Regenerate.
2017-01-03 15:51:11 +00:00
09fe2662a7 Fix compile time warning about using a possibly uninitialised variable. 2017-01-03 15:26:27 +00:00