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

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

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

gas/

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

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

This patch adds the verification rules for move prefix constraints.

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

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

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

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

include/

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

opcodes/

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

gas/

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

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

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

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

include/

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

opcodes/

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

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

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

include/

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

opcodes/

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

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

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

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

gas/

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

include/

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

opcodes/

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

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

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

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

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

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

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

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

include/

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

opcodes/

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

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

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

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

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

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

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

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

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

Gdb can use this function in its stack unwinder.

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

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

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

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

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

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

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

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

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

gas/ChangeLog

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

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

include/ChangeLog

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

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

opcodes/ChangeLog

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

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

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

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

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

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

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

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

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

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

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

As reported by Jan here:

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

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

gdb/testsuite/ChangeLog:

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

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

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

gdb/testsuite/ChangeLog:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gdb/ChangeLog:

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

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

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

gdb/ChangeLog:

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

gdb/gdbserver/ChangeLog:

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

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

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

gdb/ChangeLog:

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

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

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

gdb/ChangeLog:

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

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

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

gdb/ChangeLog:

* gdb_proc_service.h: Whitespace change.

gdb/gdbserver/ChangeLog:

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

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

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

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

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

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

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

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

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

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

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

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

* README: Minor change.

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

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

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

Commit

    c221b2f Testsuite: Add gdb_can_simple_compile

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

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

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

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

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

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

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

This commit fixes all such warnings.

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

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

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

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

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

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

* README: Remove some leftover text.

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

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

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

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

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

* PROBLEMS: Rewrite.
* README: Update.

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

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

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

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

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

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

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

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

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

gdb/ChangeLog:

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

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

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

sim/common/ChangeLog:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gdb/ChangeLog:

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

gdb/doc/ChangeLog:

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

gdb/testsuite/ChangeLog:

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

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

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

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

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

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

Prevent this using a pthread barrier.

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

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

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

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

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

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

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

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

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

gdb/ChangeLog:

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

gdb/testsuite/ChangeLog:

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

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

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

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

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

gdb/ChangeLog:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gas/ChangeLog:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

I noticed that some code in gdb was doing:

    char *mumble = getenv (...)

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

Tested by rebuilding.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6 years agoMark more file descriptors close-on-exec
Tom Tromey [Tue, 18 Sep 2018 22:45:59 +0000 (16:45 -0600)] 
Mark more file descriptors close-on-exec

I noticed a couple of spots in gdb that were opening files but not
marking the file descriptors as close-on-exec.  This patch fixes
these.

There are still a few more of these, but they are in code that I can't
compile, so I'd prefer not to touch.

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

* ctf.c (ctf_start): Use gdb_fopen_cloexec.
* common/scoped_mmap.c (mmap_file): Use gdb_open_cloexec.

6 years agoAlso recognize __sighndlr on Solaris/x86
Rainer Orth [Sun, 23 Sep 2018 17:49:14 +0000 (19:49 +0200)] 
Also recognize __sighndlr on Solaris/x86

Unlike Solaris/SPARC, the __sighndlr function isn't recognized as part
of a signal handler, causing a couple of testcases to fail.

The following patch fixes that.  A followup patch will move this to
common code to avoid such unnecessary discrepancies between
Solaris/SPARC and x86 in the future.

While this fixes a couple of backtraces to now correctly print

#1  <signal handler called>

they often fail later with

#2  0x0ff3ffffff00857f in ?? ()
Backtrace stopped: Cannot access memory at address 0xff3000002e0886f

which needs further investigation.

Tested on amd64-pc-solaris2.11 (running the tests with both -m64 and
-m32).

* amd64-sol2-tdep.c (amd64_sol2_sigtramp_p): Also recognize
__sighndlr.
* i386-sol2-tdep.c (i386_sol2_sigtramp_p): Likewise.

6 years agoRemove a spurious target_terminal::ours() from windows_nat_target::wait()
Jon Turney [Mon, 26 Sep 2016 14:45:28 +0000 (15:45 +0100)] 
Remove a spurious target_terminal::ours() from windows_nat_target::wait()

This causes the inferior to stop with SIGTTIN if it tries to read from the
terminal after it has been continued.

See https://cygwin.com/ml/cygwin/2016-09/msg00285.html for reproduction.

Since MinGW doesn't have a tcsetpgrp(), I don't think this problem would be
observed there, but Cygwin does so target_terminal::ours() will call it.

Calling target_terminal::ours() here seems to be is no longer appropriate
after the "Merge async and sync code paths" changes (as the inferior is now
in a separate process group even in sync mode(?), which is always used on
Windows targets)

This call was added in commit c44537cf (and see
https://sourceware.org/ml/gdb-patches/2007-02/msg00167.html for what it
fixed, which is not regressed by this change)

When windows_nat_target::wait() is entered, the inferior is running (either
it's been just been started or attached to, or windows_continue() was
called), so grabbing the controlling terminal away from it here seems to be
wrong, since infrun.c takes care of calling target_terminal::ours() when the
inferior stops.

gdb/ChangeLog:

2018-08-02  Jon Turney  <jon.turney@dronecode.org.uk>

* windows-nat.c (windows_nat_target::wait): Remove a spurious
target_terminal::ours().

6 years agoFix build error in aarch64-linux-tdep.c on macOS
Simon Marchi [Sun, 23 Sep 2018 14:12:29 +0000 (10:12 -0400)] 
Fix build error in aarch64-linux-tdep.c on macOS

When building with --enable-targets=all on macOS, I get this error:

  CXX    aarch64-linux-tdep.o
/Users/simark/src/binutils-gdb/gdb/aarch64-linux-tdep.c:328:7: error: no matching function for call to 'store_integer'
      store_integer ((gdb_byte *)&vg_target, sizeof (uint64_t), byte_order,
      ^~~~~~~~~~~~~
/Users/simark/src/binutils-gdb/gdb/defs.h:556:13: note: candidate template ignored: requirement 'Or<is_same<unsigned long long, long>, is_same<unsigned long long, unsigned long> >::value' was not satisfied [with T = unsigned long long]
extern void store_integer (gdb_byte *addr, int len, enum bfd_endian byte_order,
            ^

I believe it's because uint64_t is defined as "unsigned long long" on macOS,
even though "unsigned long" is also 64 bits.  Other 64-bits platforms define
uint64_t as "unsigned long".

This makes the type of the argument to store_integer (unsigned long long) not
match the requirement that it must be the same as ULONGEST, which is unsigned
long.

Fix it by changing the type of the vl variable to be ULONGEST, which is what
extract_unsigned_integer returns anyway.

gdb/ChangeLog:

* aarch64-linux-tdep.c (aarch64_linux_supply_sve_regset): Change type
of vl to ULONGEST.

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

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

6 years agoRevert part of commit 32ec8896025
Alan Modra [Fri, 21 Sep 2018 03:16:03 +0000 (12:46 +0930)] 
Revert part of commit 32ec8896025

echo "__thread char *p;" | gcc -c -g -xc - -o thread.o
With current powerpc64le-linux-gcc has this reloc in .debug_info
0000000000000025 0000000d0000004e R_PPC64_DTPREL64 0000000000000000 p + 8000

That stops me looking at .debug_info.
~/build/gas-virgin/powerpc64le-linux/binutils/readelf -wi thread.o
readelf: Warning: unable to apply unsupported reloc type 78 to section .debug_info
Older readelf continued on after the warning, dumping .debug_info.

* readelf.c (apply_relocations): Don't return FALSE for warnings.

6 years agocsky-opc.h: Initialize fields of last array elements
Simon Marchi [Fri, 21 Sep 2018 14:27:48 +0000 (10:27 -0400)] 
csky-opc.h: Initialize fields of last array elements

clang gives these errors:

In file included from /Users/simark/src/binutils-gdb/opcodes/csky-dis.c:30:
/Users/simark/src/binutils-gdb/opcodes/csky-opc.h:2330:8: error: missing field 'transfer' initializer [-Werror,-Wmissing-field-initializers]
  {NULL}
       ^
/Users/simark/src/binutils-gdb/opcodes/csky-opc.h:8126:10: error: missing field 'transfer' initializer [-Werror,-Wmissing-field-initializers]
    {NULL}
         ^

They go away when we Initialize all fields.  I noticed there used to be some
files built with -Wno-missing-field-initializers, but it's not the case
anymore, since commit e7ae278d0474ab84ba3b1ee932a19e83616ddacc.  There is still
a NO_WMISSING_FIELD_INITIALIZERS variable defined in the Makefile, but it's
unused, so I removed it to avoid further confusion.

opcodes/ChangeLog:

* Makefile.am: Remove NO_WMISSING_FIELD_INITIALIZERS.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* configure: Re-generate.
* configure.ac: Remove check for -Wno-missing-field-initializers.
* csky-opc.h (csky_v1_opcodes): Initialize all fields of last element.
(csky_v2_opcodes): Likewise.

6 years agoelf32-nds32: Don't define fls if it is provided by the system
Simon Marchi [Fri, 21 Sep 2018 14:27:30 +0000 (10:27 -0400)] 
elf32-nds32: Don't define fls if it is provided by the system

The fls function already exists on macOS and FreeBSD (and probably others),
leading to this error:

/Users/simark/src/binutils-gdb/bfd/elf32-nds32.c:5074:1: error: static declaration of 'fls' follows non-static declaration
fls (register unsigned int x)
^
/usr/include/strings.h:87:6: note: previous declaration is here
int      fls(int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
         ^

Add a configure-time check for it, and only define it if the system doesn't
provide it.

bfd/ChangeLog:

* configure.ac: Check for fls.
* elf32-nds32.c (fls): Only define if !HAVE_FLS.
* config.in: Re-generate.
* configure: Re-generate.

6 years agoRemove redundant test in update_inserted_breakpoint_locations
Yacov Simhony [Fri, 21 Sep 2018 13:53:51 +0000 (07:53 -0600)] 
Remove redundant test in update_inserted_breakpoint_locations

Remove a redundant test in update_inserted_breakpoint_locations.

gdb/ChangeLog
2018-09-21  Yacov Simhony  <ysimhony@gmail.com>

* breakpoint.c (update_inserted_breakpoint_locations): Remove
redundant condition.

6 years agoCorrect ChangeLog entry for commit b8426d169d3f8a
H.J. Lu [Fri, 21 Sep 2018 11:36:08 +0000 (04:36 -0700)] 
Correct ChangeLog entry for commit b8426d169d3f8a

commit b8426d169d3f8ab820f3bdaf45fbc64f8bb827ed
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Sep 21 04:24:40 2018 -0700

    gas: Make bfin-parse.c/rl78-parse.c/rx-parse.c depend on bfd/reloc.c

It is for PR gas/23691, not PR gas/23692.

6 years agogas: Make bfin-parse.c/rl78-parse.c/rx-parse.c depend on bfd/reloc.c
H.J. Lu [Fri, 21 Sep 2018 11:24:40 +0000 (04:24 -0700)] 
gas: Make bfin-parse.c/rl78-parse.c/rx-parse.c depend on bfd/reloc.c

Since bfin-parse.c, rl78-parse.c and rx-parse.c use BFD_RELOC_XXX, we
need to regenerate them when bfd/reloc.c changhes.

PR gas/23692
* Makefile.am (bfin-parse.c): Depend on $(srcdir)/../bfd/reloc.c.
(rl78-parse.c): Likewise.
(rx-parse.c): Likewise.
* Makefile.in: Regenerated.

6 years agoELF: Don't include zero size sections at start of PT_NOTE segment
H.J. Lu [Fri, 21 Sep 2018 11:07:50 +0000 (04:07 -0700)] 
ELF: Don't include zero size sections at start of PT_NOTE segment

We shouldn't include zero size sections at start of PT_NOTE segment,
similar to PT_DYNAMIC segment.

PR binutils/23694
* include/elf/internal.h (ELF_SECTION_IN_SEGMENT_1): Don't
include zero size sections at start of PT_NOTE segment.

6 years agoFix more fallout from 17f6ade235fc
Alan Modra [Fri, 21 Sep 2018 00:22:08 +0000 (09:52 +0930)] 
Fix more fallout from 17f6ade235fc

gas/
* testsuite/gas/avr/large-debug-line-table.d: Update.
ld/
* testsuite/ld-avr/gc-section-debugline.d: Update.

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

6 years agold: Add the entry symbol, _main, for LynxOS targets
H.J. Lu [Thu, 20 Sep 2018 19:28:09 +0000 (12:28 -0700)] 
ld: Add the entry symbol, _main, for LynxOS targets

Add the entry symbol, _main, to fix:

FAIL: ld-elf/64ksec
FAIL: ld-elf/comm-data4
FAIL: ld-elf/comm-data5
FAIL: ld-elf/eh5
FAIL: ld-elf/empty
FAIL: ld-elf/empty2
FAIL: ld-elf/endsym
FAIL: ld-elf/exclude3a
FAIL: ld-elf/linkonce2
FAIL: ld-elf/orphan3
FAIL: ld-elf/pr12851
FAIL: ld-elf/pr14156a
FAIL: ld-elf/pr14156b
FAIL: ld-elf/pr14926
FAIL: ld-elf/pr20513a
FAIL: ld-elf/pr20513b
FAIL: ld-elf/stab
FAIL: ld-elf/var1
FAIL: ld-elf/warn3
FAIL: section size overflow

for i386-lynxos target.

* testsuite/ld-checks/over2.s: Add "_main" for LynxOS targets.
* testsuite/ld-elf/comm-data4.s: Likewise.
* testsuite/ld-elf/comm-data5.s: Likewise.
* testsuite/ld-elf/eh5b.s: Likewise.
* testsuite/ld-elf/empty.s: Likewise.
* testsuite/ld-elf/empty2.s: Likewise.
* testsuite/ld-elf/exclude3.s: Likewise.
* testsuite/ld-elf/fini0.s: Likewise.
* testsuite/ld-elf/init0.s: Likewise.
* testsuite/ld-elf/linkonce1b.s: Likewise.
* testsuite/ld-elf/orphan3a.s: Likewise.
* testsuite/ld-elf/pr14926.s: Likewise.
* testsuite/ld-elf/pr20513a.s: Likewise.
* testsuite/ld-elf/sec64k.exp: Likewise.
* testsuite/ld-elf/start.s: Likewise.
* testsuite/ld-elf/var1.s: Likewise.

6 years agoRISC-V: Fix library search path for rv32.
Jim Wilson [Thu, 20 Sep 2018 19:06:28 +0000 (12:06 -0700)] 
RISC-V: Fix library search path for rv32.

2018-09-19  Kito Cheng  <kito@andestech.com>
ld/
* emulparams/elf32lriscv.sh: Correct the library search path.
* emulparams/elf32lriscv_ilp32.sh: Likewise.
* emulparams/elf32lriscv_ilp32f.sh: Likewise.

6 years agoMore Solaris procfs cleanup
Rainer Orth [Thu, 20 Sep 2018 18:01:05 +0000 (20:01 +0200)] 
More Solaris procfs cleanup

This procfs.c (and friends) cleanup patch grew along a couple of lines:

* First I noticed that PR_MODEL_NATIVE is always defined now that
  Solaris 10 is the minimum supported version.

* Then there was a cleanup that I'd missed when removing support for
  !NEW_PROC_API, IRIX, and Tru64 UNIX: given that sysset_t is no longer
  dynamic, there's no need for the special sysset_t_alloc, but we can
  just use XNEW instead.

* Then I found one of those ARI warning mails on gdb-patches, discovered
  how to run it myself and fixed a large number of the warnings, among
  them all uses of sprintf.

  I had to silence the warnings in only 3 instances of the same issue,
  namely references to LDT in function names which are due to the
  libthread_db API.

* Even so, there were several formatting glitches, like braces around
  single statements in an if, which I chose to fix while I was at it.

The result has been tested on amd64-pc-solaris2.11 and
amd64-pc-solaris2.11.

* proc-utils.h (PROC_CTL_WORD_TYPE): Remove.

* procfs.c: Don't check for PR_MODEL_NATIVE definition.
* sparc-sol2-nat.c: Likewise.  Remove Linux, __arch64__ references.
* sol-thread.c (ps_pdmodel): Don't guard definition.

* procfs.c: Fix formatting.

* procfs.c (sysset_t_alloc): Remove.
(create_procinfo): Use XNEW instead of sysset_t_alloc.
(procfs_debug_inferior): Likewise.
(procfs_set_exec_trap): Likewise.
(proc_set_traced_sysentry): Don't allocate argp dynamically.
(proc_set_traced_sysexit): Likewise.

* procfs.c (create_procinfo): Use xsnprintf to fix ARI warning.
(dead_procinfo): Likewise.
(proc_warn): Likewise.
(proc_error): Likewise.
(proc_get_LDT_entry): Likewise.
(do_attach): Likewise.
(procfs_target::pid_to_str): Likewise.
(iterate_over_mappings): Likewise.

* procfs.c (create_procinfo): Fix ARI warning.
(proc_get_status): Likewise.
(proc_stop_process): Likewise.
(proc_run_process): Likewise.
(proc_kill): Likewise.
(proc_get_LDT_entry): Likewise.
(procfs_find_LDT_entry): Likewise.
(proc_update_threads): Likewise.
(proc_iterate_over_threads): Likewise.
(do_attach): Likewise.
(procfs_xfer_memory): Likewise.
(invalidate_cache): Likewise.
(procfs_target::resume): Likewise.
(procfs_init_inferior): Likewise.
(procfs_set_exec_trap): Likewise.
(procfs_target::thread_alive): Likewise.
(procfs_target::pid_to_exec_file): Likewise.
(iterate_over_mappings): Likewise.
(procfs_target::make_corefile_notes): Likewise.
* sol-thread.c (sol_thread_target::thread_alive): Likewise.

* procfs.c (procfs_find_LDT_entry): Silence ARI warning.
(procfs_find_LDT_entry): Likewise.
* sol-thread.c (ps_lgetLDT): Likewise.

6 years agogas: Update expected outputs of "readelf -wL"
H.J. Lu [Thu, 20 Sep 2018 17:55:36 +0000 (10:55 -0700)] 
gas: Update expected outputs of "readelf -wL"

Update expected outputs of "readelf -wL" for

commit 17f6ade235fc96b4e572b5251b344d426c5f1cd5
Author: John Darrington <john@darrington.wattle.id.au>
Date:   Wed Sep 19 19:56:29 2018 +0200

    binutils --dwarf=decodedline: Add display of is_stmt flag

which adds display of is_stmt flag.

PR binutils/23695
* testsuite/gas/elf/dwarf2-11.d: Update expected outputs of
"readelf -wL".
* testsuite/gas/elf/dwarf2-12.d: Likewise.
* testsuite/gas/elf/dwarf2-13.d: Likewise.
* testsuite/gas/elf/dwarf2-14.d: Likewise.
* testsuite/gas/elf/dwarf2-15.d: Likewise.
* testsuite/gas/elf/dwarf2-16.d: Likewise.
* testsuite/gas/elf/dwarf2-17.d: Likewise.
* testsuite/gas/elf/dwarf2-18.d: Likewise.
* testsuite/gas/elf/dwarf2-5.d: Likewise.
* testsuite/gas/elf/dwarf2-6.d: Likewise.
* testsuite/gas/elf/dwarf2-7.d: Likewise.

6 years agobinutils --dwarf=decodedline: Add display of is_stmt flag
John Darrington [Wed, 19 Sep 2018 17:56:29 +0000 (19:56 +0200)] 
binutils --dwarf=decodedline: Add display of is_stmt flag

binutils/
    * dwarf.c (display_debug_lines_decoded): Add display of is_stmt.
    * testsuite/binutils-all/dw5.W: Deal with the consequences.
    * testsuite/binutils-all/objdump.WL: Deal with the consequences.

6 years agoAdd '_' in the match pattern.
Hafiz Abid Qadeer [Tue, 18 Sep 2018 10:23:30 +0000 (11:23 +0100)] 
Add '_' in the match pattern.

I was looking at GDB testcase results for arm-eabi target with qemu and
noticed that register groups returned by the qemu can have '_' in the
name e.g. 'cp_regs'. The reggroups.exp fails to recognize that as group
name. Fixed by adding '_' in the pattern.

2018-09-20  Hafiz Abid Qadeer  <abidh@codesourcery.com>

gdb.base/reggroups.exp (fetch_reggroups): Add '_' in match pattern.

6 years agoS12Z/GAS: Correct a signed vs unsigned comparison error with GCC 4.1
Maciej W. Rozycki [Thu, 20 Sep 2018 14:49:01 +0000 (15:49 +0100)] 
S12Z/GAS: Correct a signed vs unsigned comparison error with GCC 4.1

Fix a build error:

cc1: warnings being treated as errors
.../gas/config/tc-s12z.c: In function 'lex_opr':
.../gas/config/tc-s12z.c:617: warning: comparison between signed and unsigned
.../gas/config/tc-s12z.c:624: warning: comparison between signed and unsigned
make[4]: *** [config/tc-s12z.o] Error 1

observed with GCC 4.1.2 with the `s12z-elf' target.

Here we have a constant assembly instruction operand, whose value is
within the 24-bit unsigned range, to be placed in a machine instruction
such as to use the least space-consuming encoding.  So the sign of that
value does not matter, because signed values are out of range and are
not supposed to appear here, and we only have this warning here because
the `X_add_number' member of `struct expressionS' is of the `offsetT'
type, which is signed.

Use an auxiliary variable of an unsigned data type then, observing that
both `offsetT' and `valueT' have the same width, as they correspond to
`bfd_signed_vma' and `bfd_vma' respectively.

gas/
* config/tc-s12z.c (lex_opr): Use an auxiliary unsigned variable
in encoding a constant operand.

6 years agoPPC/GAS: Correct a signed vs unsigned comparison error with GCC 4.1
Maciej W. Rozycki [Thu, 20 Sep 2018 14:49:01 +0000 (15:49 +0100)] 
PPC/GAS: Correct a signed vs unsigned comparison error with GCC 4.1

Fix a build error:

cc1: warnings being treated as errors
.../gas/config/tc-ppc.c: In function 'ppc_dwsect':
.../gas/config/tc-ppc.c:4091: warning: comparison between signed and unsigned
make[4]: *** [config/tc-ppc.o] Error 1

observed with GCC 4.1.2 with the `powerpc-beos' target.

Here `flag' identifies the type of a DWARF section, as used with the the
first operand to the `.dwsect' pseudo-op, and has no notion of a sign,
or for that matter being arithmetic in the first place[1].  We already
handle this correctly with the `flag' member of the `xcoff_dwsect_name'
structure, however not in the local variable used in GAS to hold the
parsed value of said `.dwsect' pseudo-op's operand.

Use an unsigned data type in GAS then too, observing that both `offsetT'
and `valueT' have the same width, as they correspond to `bfd_signed_vma'
and `bfd_vma' respectively.

References:

[1] "AIX Version 7.2: Assembler Language Reference", IBM Corporation
    2015, 2018, Section ".dwsect pseudo-op", pp. 531-532

gas/
* config/tc-ppc.c (ppc_dwsect): Use `valueT' rather than
`offsetT' as the type of `flag'.

6 years agoARC: Fix build errors with large constants and C89
Maciej W. Rozycki [Thu, 20 Sep 2018 14:49:00 +0000 (15:49 +0100)] 
ARC: Fix build errors with large constants and C89

Fix build errors:

cc1: warnings being treated as errors
In file included from .../opcodes/arc-opc.c:2630:
.../opcodes/arc-nps400-tbl.h:38: warning: integer constant is too large for 'long' type
.../opcodes/arc-nps400-tbl.h:38: warning: integer constant is too large for 'long' type
.../opcodes/arc-nps400-tbl.h:41: warning: integer constant is too large for 'long' type
.../opcodes/arc-nps400-tbl.h:41: warning: integer constant is too large for 'long' type
[...]
.../opcodes/arc-nps400-tbl.h:712: warning: integer constant is too large for 'long' type
.../opcodes/arc-nps400-tbl.h:712: warning: integer constant is too large for 'long' type
.../opcodes/arc-nps400-tbl.h:715: warning: integer constant is too large for 'long' type
.../opcodes/arc-nps400-tbl.h:715: warning: integer constant is too large for 'long' type
make[4]: *** [arc-opc.lo] Error 1

and:

cc1: warnings being treated as errors
.../gas/config/tc-arc.c: In function 'md_number_to_chars_midend':
.../gas/config/tc-arc.c:802: warning: integer constant is too large for 'long' type
.../gas/config/tc-arc.c:810: warning: integer constant is too large for 'long' type
make[4]: *** [config/tc-arc.o] Error 1

observed with GCC 4.1.2 and presumably other C89 compilers with the
`arc-elf' and `arc-linux-gnu' targets, caused by the use of constants
the values of which are outside the range of the `int' type (or the
`long' type if it is of the same with).  In the C89 language standard
such constants are not implicitly converted to a wider type and an
explicit suffix is required for such constants.

Add a `ull' suffix then as with such constants used in other ports.

gas/
* config/tc-arc.c (md_number_to_chars_midend): Append `ull' to
large constants.

opcodes/
* arc-nps400-tbl.h: Append `ull' to large constants throughout.

6 years agoRS6000/BFD: Remove dead duplicate `config.bfd' target matchers
Maciej W. Rozycki [Thu, 20 Sep 2018 14:49:00 +0000 (15:49 +0100)] 
RS6000/BFD: Remove dead duplicate `config.bfd' target matchers

Remove duplicate `rs6000-*-aix5.[01]' and `rs6000-*-aix[5-9]*' target
configuration selectors meant to correspond to `powerpc64-*-aix5.[01]'
and `powerpc64-*-aix[5-9]*' respectively for the purpose of BFD target
vector selection in `config.bfd'.

These selectors were added with commit 9a9e2ca33263 ("rs6000 xcoff bfd
config"), <https://sourceware.org/ml/binutils/2010-12/msg00372.html>,
and have been dead right from the beginning, because they appear twice
each in the case statement, which means the earlier instance of each
takes precedence and the other one is ignored.  Here ones that alias to
`powerpc-*-aix5.[01]' and `powerpc-*-aix[5-9]*' respectively immediately
above are used instead.

bfd/
* config.bfd <rs6000-*-aix5.[01], rs6000-*-aix[5-9]*>: Remove
duplicate `case' selectors.

6 years agoAndes Technology has good news for you, we plan to update the nds32 port of binutils...
Nick Clifton [Thu, 20 Sep 2018 12:27:31 +0000 (13:27 +0100)] 
Andes Technology has good news for you, we plan to update the nds32 port of binutils on upstream!

We have not only removed all unsupported and obsolete code, but also supported lost of new features,
including better link-time relaxations and TLS implementations. Besides, the files generated by the
newly assembler and linker usually get higher performance and more optimized code size.

ld * emultempl/nds32elf.em (hyper_relax): New variable.
(nds32_elf_create_output_section_statements):
the parameters of bfd_elf32_nds32_set_target_option
(PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_OPTIONS,
PARSE_AND_LIST_ARGS_CASES): Add new option --mhyper-relax.
* emultempl/nds32elf.em (nds32_elf_after_open): Updated.
* emultempl/nds32elf.em (tls_desc_trampoline): New variable.
* (nds32_elf_create_output_section_statements): Updated.
* (nds32_elf_after_parse): Disable relaxations when PIC is enable.
* (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_OPTIONS,
PARSE_AND_LIST_ARGS_CASES): Add new option --m[no-]tlsdesc-trampoline.

include * elf/nds32.h: Remove the unused target features.
* dis-asm.h (disassemble_init_nds32): Declared.
* elf/nds32.h (E_NDS32_NULL): Removed.
(E_NDS32_HAS_DSP_INST, E_NDS32_HAS_ZOL): New.
* opcode/nds32.h: Ident.
(N32_SUB6, INSN_LW): New macros.
(enum n32_opcodes): Updated.
* elf/nds32.h: Doc fixes.
* elf/nds32.h: Add R_NDS32_LSI.
* elf/nds32.h: Add new relocations for TLS.

gas  * config/tc-nds32.c: Remove the unused target features.
(nds32_relax_relocs, md_pseudo_table, nds32_elf_record_fixup_exp,
nds32_set_elf_flags_by_insn, nds32_insert_relax_entry,
nds32_apply_fix): Likewise.
(nds32_no_ex9_begin): Removed.
* config/tc-nds32.c (add_mapping_symbol_for_align,
make_mapping_symbol, add_mapping_symbol): New functions.
* config/tc-nds32.h (enum mstate): New.
(nds32_segment_info_type): Likewise.
* configure.ac (--enable-dsp-ext, --enable-zol-ext): New options.
* config.in: Regenerated.
* configure: Regenerated.
* config/tc-nds32.c (nds32_dx_regs):
Set the value according to the configuration.
(nds32_perf_ext, nds32_perf_ext2, nds32_string_ext, nds32_audio_ext):
Likewise.
(nds32_dsp_ext): New variable. Set the value according to the
configuration.
(nds32_zol_ext): Likewise.
(asm_desc, nds32_pseudo_opcode_table): Make them static.
(nds32_set_elf_flags_by_insn): Updated.
(nds32_check_insn_available): Updated.
(nds32_str_tolower): New function.
* config/tc-nds32.c (relax_table): Updated.
(md_begin): Updated.
(md_assemble): Use XNEW macro to allocate space for `insn.info',
and then remember to free it.
(md_section_align): Cast (-1) to ValueT.
(nds32_get_align): Cast (~0U) to addressT.
(nds32_relax_branch_instructions): Updated.
(md_convert_frag): Add new local variable `final_r_type'.
(invalid_prev_frag): Add new bfd_boolean parameter `relax'.
All callers changed.
* config/tc-nds32.c (struct nds32_relocs_pattern): Add `insn' field.
(struct nds32_hint_map): Add `option_list' field.
(struct suffix_name, suffix_table): Remove the unused `pic' field.
(do_pseudo_b, do_pseudo_bal): Remove the suffix checking.
(do_pseudo_la_internal, do_pseudo_pushpopm): Indent.
(relax_hint_bias, relax_hint_id_current): New static variables.
(reset_bias, relax_hint_begin): New variables.
(nds_itoa): New function.
(CLEAN_REG, GET_OPCODE): New macros.
(struct relax_hint_id): New.
(nds32_relax_hint): For .relax_hint directive, we can use `begin'
and `end' to mark the relax pattern without giving exactly id number.
(nds32_elf_append_relax_relocs): Handle the case that the .relax_hint
directives are attached to pseudo instruction.
(nds32_elf_save_pseudo_pattern): Change the second parameter from
instruction's opcode to byte code.
(nds32_elf_build_relax_relation): Add new bfd_boolean parameter
`pseudo_hint'.
(nds32_lookup_pseudo_opcode): Fix the overflow issue.
(enum nds32_insn_type): Add N32_RELAX_ALU1 and N32_RELAX_16BIT.
(nds32_elf_record_fixup_exp, relax_ls_table, hint_map,
nds32_find_reloc_table, nds32_match_hint_insn, nds32_parse_name):
Updated.
* config/tc-nds32.h (MAX_RELAX_NUM): Extend it to 6.
(enum nds32_relax_hint_type): Merge NDS32_RELAX_HINT_LA and
NDS32_RELAX_HINT_LS into NDS32_RELAX_HINT_LALS. Add
NDS32_RELAX_HINT_LA_PLT, NDS32_RELAX_HINT_LA_GOT and
NDS32_RELAX_HINT_LA_GOTOFF.
* config/tc-nds32.h (relax_ls_table): Add floating load/store
to gp relax pattern.
(hint_map, nds32_find_reloc_table): Likewise.
* configure.ac: Define NDS32_LINUX_TOOLCHAIN.
* configure: Regenerated.
* config.in: Regenerated.
* config/tc-nds32.h (enum nds32_ramp): Updated.
(enum nds32_relax_hint_type): Likewise.
* config/tc-nds32.c: Include "errno.h" and "limits.h".
(relax_ls_table): Add TLS relax patterns.
(nds32_elf_append_relax_relocs): Attach BFD_RELOC_NDS32_GROUP on
each instructions of TLS patterns.
(nds32_elf_record_fixup_exp): Updated.
(nds32_apply_fix): Likewise.
(suffix_table): Add TLSDESC suffix.

binutils* testsuite/binutils-all/objcopy.exp: Set the unsupported reloc number
from 215 to 255 for NDS32.

bfd * elf32-nds32.c (nds32_elf_relax_loadstore):
Remove the unused target features.
(bfd_elf32_nds32_set_target_option): Remove the unused parameters.
(nds32_elf_relax_piclo12, nds32_elf_relax_letlslo12,
nds32_elf_relax_letlsadd, nds32_elf_relax_letlsls,
nds32_elf_relax_pltgot_suff, nds32_elf_relax_got_suff
nds32_elf_relax_gotoff_suff, calculate_plt_memory_address,
calculate_plt_offset, calculate_got_memory_address,
nds32_elf_check_dup_relocs): Removed.
All callers changed.
* elf32-nds32.h: Remove the unused macros and defines.
(elf_nds32_link_hash_table): Remove the unused variable.
(bfd_elf32_nds32_set_target_option): Update prototype.
(nds32_elf_ex9_init): Removed.
* elf32-nds32.c (nds32_convert_32_to_16): Updated.
* elf32-nds32.c (HOWTO2, HOWTO3): Define new HOWTO macros
to initialize array nds32_elf_howto_table in any order
without lots of EMPTY_HOWTO.
(nds32_reloc_map): Updated.
* reloc.c: Add BFD_RELOC_NDS32_LSI.
* bfd-in2.h: Regenerated.
* bfd/libbfd.h: Regenerated.
* elf32-nds32.c (nds32_elf_relax_howto_table): Add R_NDS32_LSI.
(nds32_reloc_map): Likewise.
(nds32_elf_relax_flsi): New function.
(nds32_elf_relax_section): Support floating load/store relaxation.
* elf32-nds32.c (NDS32_GUARD_SEC_P, elf32_nds32_local_gp_offset):
New macro.
(struct elf_nds32_link_hash_entry): New `offset_to_gp' field.
(struct elf_nds32_obj_tdata): New `offset_to_gp' and `hdr_size' fields.
(elf32_nds32_allocate_local_sym_info, nds32_elf_relax_guard,
nds32_elf_is_target_special_symbol, nds32_elf_maybe_function_sym):
New functions.
(nds32_info_to_howto_rel): Add BFD_ASSERT.
(bfd_elf32_bfd_reloc_type_table_lookup, nds32_elf_link_hash_newfunc,
nds32_elf_link_hash_table_create, nds32_elf_relocate_section,
nds32_elf_relax_loadstore, nds32_elf_relax_lo12, nds32_relax_adjust_label,
bfd_elf32_nds32_set_target_option, nds32_fag_mark_relax): Updated.
(nds32_elf_final_sda_base): Improve it to find the better gp value.
(insert_nds32_elf_blank): Must consider `len' when inserting blanks.
* elf32-nds32.h (bfd_elf32_nds32_set_target_option): Update prototype.
(struct elf_nds32_link_hash_table): Add new variable `hyper_relax'.
* elf32-nds32.c (elf32_nds32_allocate_dynrelocs): New function.
(create_got_section): Likewise.
(allocate_dynrelocs, nds32_elf_size_dynamic_sections,
nds32_elf_relocate_section, nds32_elf_finish_dynamic_symbol): Updated.
(nds32_elf_check_relocs): Fix the issue that the shared library may
has TEXTREL entry in the dynamic section.
(nds32_elf_create_dynamic_sections): Enable to call readonly_dynrelocs
since the TEXTREL issue is fixed in the nds32_elf_check_relocs.
(nds32_elf_finish_dynamic_sections): Update and add DT_RELASZ
dynamic entry.
(calculate_offset): Remove the unused parameter `pic_ext_target' and
related codes.
All callers changed.
(elf_backend_dtrel_excludes_plt): Disable it temporarily since it
will cause some errors for our test cases.
* elf32-nds32.c (nds32_elf_merge_private_bfd_data): Allow to link the
generic object.
* reloc.c: Add TLS relocations.
* libbfd.h: Regenerated.
* bfd-in2.h: Regenerated.
* elf32-nds32.h (struct section_id_list_t): New.
(elf32_nds32_lookup_section_id, elf32_nds32_check_relax_group,
elf32_nds32_unify_relax_group, nds32_elf_unify_tls_model):
New prototypes.
(elf32_nds32_compute_jump_table_size, elf32_nds32_local_tlsdesc_gotent):
New macro.
(nds32_insertion_sort, bfd_elf32_nds32_set_target_option,
elf_nds32_link_hash_table): Updated.
* elf32-nds32.c (enum elf_nds32_tls_type): New.
(struct elf32_nds32_relax_group_t, struct relax_group_list_t): New.
(elf32_nds32_add_dynreloc, patch_tls_desc_to_ie, get_tls_type,
fls, ones32, list_insert, list_insert_sibling, dump_chain,
elf32_nds32_check_relax_group, elf32_nds32_lookup_section_id,
elf32_nds32_unify_relax_group, nds32_elf_unify_tls_model): New functions.
(elf_nds32_obj_tdata): Add new fields.
(elf32_nds32_relax_group_ptr, nds32_elf_local_tlsdesc_gotent): New macros.
(nds32_elf_howto_table): Add TLS relocations.
(nds32_reloc_map): Likewise.
(nds32_elf_copy_indirect_symbol, nds32_elf_size_dynamic_sections,
nds32_elf_finish_dynamic_symbol, elf32_nds32_allocate_local_sym_info,
nds32_elf_relocate_section, bfd_elf32_nds32_set_target_option,
nds32_elf_check_relocs, allocate_dynrelocs): Updated.
(nds32_elf_relax_section): Call nds32_elf_unify_tls_model.
(dtpoff_base): Rename it to `gottpof' and then update it.

opcodes * nds32-asm.c (operand_fields): Remove the unused fields.
(nds32_opcodes): Remove the unused instructions.
* nds32-dis.c (nds32_ex9_info): Removed.
(nds32_parse_opcode): Updated.
(print_insn_nds32): Likewise.
* nds32-asm.c (config.h, stdlib.h, string.h): New includes.
(LEX_SET_FIELD, LEX_GET_FIELD): Update defines.
(nds32_asm_init, build_operand_hash_table, build_keyword_hash_table,
build_opcode_hash_table): New functions.
(nds32_keyword_table, nds32_keyword_count_table, nds32_field_table,
nds32_opcode_table): New.
(hw_ktabs): Declare it to a pointer rather than an array.
(build_hash_table): Removed.
* nds32-asm.h (enum): Add SYN_INPUT, SYN_OUTPUT, SYN_LOPT,
SYN_ROPT and upadte HW_GPR and HW_INT.
* nds32-dis.c (keywords): Remove const.
(match_field): New function.
(nds32_parse_opcode): Updated.
* disassemble.c (disassemble_init_for_target):
Add disassemble_init_nds32.
* nds32-dis.c (eum map_type): New.
(nds32_private_data): Likewise.
(get_mapping_symbol_type, is_mapping_symbol, nds32_symbol_is_valid,
nds32_add_opcode_hash_table, disassemble_init_nds32): New functions.
(print_insn_nds32): Updated.
* nds32-asm.c (parse_aext_reg): Add new parameter.
(parse_re, parse_re2, parse_aext_reg): Only reduced registers
are allowed to use.
All callers changed.
* nds32-asm.c (keyword_usr, keyword_sr): Updated.
(operand_fields): Add new fields.
(nds32_opcodes): Add new instructions.
(keyword_aridxi_mx): New keyword.
* nds32-asm.h (enum): Add NASM_ATTR_DSP_ISAEXT, HW_AEXT_ARIDXI_MX
and NASM_ATTR_ZOL.
(ALU2_1, ALU2_2, ALU2_3): New macros.
* nds32-dis.c (nds32_filter_unknown_insn): Updated.

This page took 0.053156 seconds and 4 git commands to generate.