binutils-gdb.git
7 years agoPE linker script improvements.
Nick Clifton [Tue, 13 Dec 2016 17:05:20 +0000 (17:05 +0000)]
PE linker script improvements.

PR ld/19254
* scripttempl/pe.sc (.fini): KEEP this section.
(.gcc_except_table): Likewise.
(.pdata): Also accept .pdata*.

7 years agoFix aarch64 sim bug with adds64, and add testcases for last 3 bug fixes.
Jim Wilson [Tue, 13 Dec 2016 16:35:31 +0000 (08:35 -0800)]
Fix aarch64 sim bug with adds64, and add testcases for last 3 bug fixes.

sim/aarch64
* simulator.c (NEG, POS): Move before set_flags_for_add64.
(set_flags_for_add64): Replace with a modified copy of
set_flags_for_sub64.

sim/testsuite/sim/aarch64
* testutils.inc (pass): Move .Lpass to start.
(fail): Move .Lfail to start.  Return 1 instead of 0.
(start): Moved .Lpass and .Lfail to here.
* adds.s: New.
* fstur.s: New.
* tbnz.s: New.

7 years ago[AArch64] Recognize R_AARCH64_P32_ABS32 as 32-bit relocation in readelf
Jiong Wang [Tue, 13 Dec 2016 12:52:59 +0000 (12:52 +0000)]
[AArch64] Recognize R_AARCH64_P32_ABS32 as 32-bit relocation in readelf

binutils/
* readelf.c (is_32bit_abs_reloc): Recognize R_AARCH64_P32_ABS32.

7 years ago[AArch64] Make LD testcases support ILP32 mode
Jiong Wang [Tue, 13 Dec 2016 12:50:17 +0000 (12:50 +0000)]
[AArch64] Make LD testcases support ILP32 mode

ld/
* testsuite/ld-aarch64/aarch64-elf.exp (aarch64_choose_lp64_emul): New
function.
(run_dump_test_lp64): New function which pass LP64 mode options to both
assembler and linker when building test binary.
(aarch64elftests): Remove eh-frame-merge test.
(eh-frame-merge-lp64): Restrict eh-frame-merge test to LP64 only.
(run_dump_test): Migrate to run_dump_test_lp64 if the test source was
written for LP64 only.
* testsuite/ld-aarch64/erratum843419.d: Support ILP32 mode.
* testsuite/ld-aarch64/farcall-b-defsym.d: Likewise.
* testsuite/ld-aarch64/farcall-b-plt.d: Likewise.
* testsuite/ld-aarch64/farcall-b.d: Likewise.
* testsuite/ld-aarch64/farcall-bl-defsym.d: Likewise.
* testsuite/ld-aarch64/farcall-bl-plt.d: Likewise.
* testsuite/ld-aarch64/farcall-bl.d: Likewise.
* testsuite/ld-aarch64/ifunc-15.d: Likewise.
* testsuite/ld-aarch64/ifunc-16.d: Likewise.
* testsuite/ld-aarch64/ifunc-5a-local.d: Likewise.
* testsuite/ld-aarch64/ifunc-5a.d: Likewise.
* testsuite/ld-aarch64/ifunc-5b-local.d: Likewise.
* testsuite/ld-aarch64/ifunc-5b.d: Likewise.
* testsuite/ld-aarch64/ifunc-5r-local.d: Likewise.
* testsuite/ld-aarch64/ifunc-6a.d: Likewise.
* testsuite/ld-aarch64/ifunc-6b.d: Likewise.
* testsuite/ld-aarch64/ifunc-7a.d: Likewise.
* testsuite/ld-aarch64/ifunc-7b.d: Likewise.
* testsuite/ld-aarch64/ifunc-8.d: Likewise.
* testsuite/ld-aarch64/limit-b.d: Likewise.
* testsuite/ld-aarch64/limit-bl.d: Likewise.

7 years ago[AArch64] Make GAS testcases support ILP32 mode
Jiong Wang [Tue, 13 Dec 2016 12:46:35 +0000 (12:46 +0000)]
[AArch64] Make GAS testcases support ILP32 mode

gas/
* gas/testsuite/gas/aarch64/addsub.d: Support ILP32 mode.
* gas/testsuite/gas/aarch64/advsimd-across.d: Likewise.
* gas/testsuite/gas/aarch64/advsimd-armv8_3.d: Likewise.
* gas/testsuite/gas/aarch64/advsimd-fp16.d: Likewise.
* gas/testsuite/gas/aarch64/advsimd-misc.d: Likewise.
* gas/testsuite/gas/aarch64/advsisd-copy.d: Likewise.
* gas/testsuite/gas/aarch64/advsisd-misc.d: Likewise.
* gas/testsuite/gas/aarch64/alias.d: Likewise.
* gas/testsuite/gas/aarch64/armv8-ras-1.d: Likewise.
* gas/testsuite/gas/aarch64/b_1.d: Likewise.
* gas/testsuite/gas/aarch64/beq_1.d: Likewise.
* gas/testsuite/gas/aarch64/bitfield-dump: Likewise.
* gas/testsuite/gas/aarch64/bitfield-no-aliases.d: Likewise.
* gas/testsuite/gas/aarch64/codealign.d: Likewise.
* gas/testsuite/gas/aarch64/codealign_1.d: Likewise.
* gas/testsuite/gas/aarch64/crc32-directive.d: Likewise.
* gas/testsuite/gas/aarch64/crc32.d: Likewise.
* gas/testsuite/gas/aarch64/crypto-directive.d: Likewise.
* gas/testsuite/gas/aarch64/crypto.d: Likewise.
* gas/testsuite/gas/aarch64/dwarf.d: Likewise.
* gas/testsuite/gas/aarch64/float-fp16.d: Likewise.
* gas/testsuite/gas/aarch64/floatdp2.d: Likewise.
* gas/testsuite/gas/aarch64/fp-armv8_3.d: Likewise.
* gas/testsuite/gas/aarch64/fp-const0-parse.d: Likewise.
* gas/testsuite/gas/aarch64/fp_cvt_int.d: Likewise.
* gas/testsuite/gas/aarch64/fpmov.d: Likewise.
* gas/testsuite/gas/aarch64/inst-directive.d: Likewise.
* gas/testsuite/gas/aarch64/ldr_1.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-exclusive.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-reg-imm-post-ind.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-reg-imm-pre-ind.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-reg-pair.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-reg-reg-offset.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-reg-uns-imm.d: Likewise.
* gas/testsuite/gas/aarch64/ldst-reg-unscaled-imm.d: Likewise.
* gas/testsuite/gas/aarch64/lor-directive.d: Likewise.
* gas/testsuite/gas/aarch64/lor.d: Likewise.
* gas/testsuite/gas/aarch64/lse-atomic.d: Likewise.
* gas/testsuite/gas/aarch64/mapmisc.d: Likewise.
* gas/testsuite/gas/aarch64/mov-no-aliases.d: Likewise.
* gas/testsuite/gas/aarch64/mov.d: Likewise.
* gas/testsuite/gas/aarch64/movi.d: Likewise.
* gas/testsuite/gas/aarch64/movw_label.d: Likewise.
* gas/testsuite/gas/aarch64/msr.d: Likewise.
* gas/testsuite/gas/aarch64/neon-fp-cvt-int.d: Likewise.
* gas/testsuite/gas/aarch64/neon-frint.d: Likewise.
* gas/testsuite/gas/aarch64/neon-ins.d: Likewise.
* gas/testsuite/gas/aarch64/neon-not.d: Likewise.
* gas/testsuite/gas/aarch64/neon-vfp-reglist-post.d: Likewise.
* gas/testsuite/gas/aarch64/neon-vfp-reglist.d: Likewise.
* gas/testsuite/gas/aarch64/no-aliases.d: Likewise.
* gas/testsuite/gas/aarch64/optional.d: Likewise.
* gas/testsuite/gas/aarch64/pac.d: Likewise.
* gas/testsuite/gas/aarch64/pan-directive.d: Likewise.
* gas/testsuite/gas/aarch64/pan.d: Likewise.
* gas/testsuite/gas/aarch64/rdma-directive.d: Likewise.
* gas/testsuite/gas/aarch64/rdma.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_g0.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_g0_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_g1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_hi12.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12-1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsldm-1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsldm-page-1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-1.d: Likewise.
* gas/testsuite/gas/aarch64/shifted.d: Likewise.
* gas/testsuite/gas/aarch64/sve.d: Likewise.
* gas/testsuite/gas/aarch64/symbol.d: Likewise.
* gas/testsuite/gas/aarch64/sysreg-1.d: Likewise.
* gas/testsuite/gas/aarch64/sysreg-2.d: Likewise.
* gas/testsuite/gas/aarch64/sysreg-3.d: Likewise.
* gas/testsuite/gas/aarch64/sysreg.d: Likewise.
* gas/testsuite/gas/aarch64/system-2.d: Likewise.
* gas/testsuite/gas/aarch64/system-3.d: Likewise.
* gas/testsuite/gas/aarch64/system.d: Likewise.
* gas/testsuite/gas/aarch64/tbz_1.d: Likewise.
* gas/testsuite/gas/aarch64/tlbi_op.d: Likewise.
* gas/testsuite/gas/aarch64/tls.d: Likewise.
* gas/testsuite/gas/aarch64/uao-directive.d: Likewise.
* gas/testsuite/gas/aarch64/uao.d: Likewise.
* gas/testsuite/gas/aarch64/virthostext-directive.d: Likewise.
* gas/testsuite/gas/aarch64/virthostext.d: Likewise.
* gas/testsuite/gas/aarch64/adr_1.d: Restrict test under -mabi=lp64.
* gas/testsuite/gas/aarch64/int-insns.d: Likewise.
* gas/testsuite/gas/aarch64/programmer-friendly.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-data.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_g1_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_g2.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12-ldst16.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12-ldst32.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12-ldst64.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12-ldst8.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12_nc-ldst16.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12_nc-ldst32.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12_nc-ldst64.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-dtprel_lo12_nc-ldst8.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-gotoff_g0_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-gotoff_g1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-gottprel_g0_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-gottprel_g1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-insn.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsdesc_off_g0_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsdesc_off_g1.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsgd_g0_nc.d: Likewise.
* gas/testsuite/gas/aarch64/reloc-tlsgd_g1.d: Likewise.
* gas/testsuite/gas/aarch64/tail_padding.d: Likewise.
* gas/testsuite/gas/aarch64/tls-desc.d: Likewise.

7 years agoAdd a 'Past Maintainers' section to the MAINTAINERS file. Retire Mark Mitchell's...
Nick Clifton [Tue, 13 Dec 2016 11:19:23 +0000 (11:19 +0000)]
Add a 'Past Maintainers' section to the MAINTAINERS file.  Retire Mark Mitchell's name to this section.

* MAINTAINERS (Past Maintainers): New section.  Move Mark
Mitchell's name here.

7 years agoWhen using linker scripts, place linker-generated sections by the output section...
Cary Coutant [Tue, 13 Dec 2016 02:51:29 +0000 (18:51 -0800)]
When using linker scripts, place linker-generated sections by the output section name.

2016-12-12  Igor Kudrin  <ikudrin@accesssoftek.com>
    Cary Coutant  <ccoutant@gmail.com>

gold/
PR gold/14676
* script-sections.cc (Output_section_definition::output_section_name):
For linker-generated sections, compare with output section name.
* testsuite/Makefile.am (script_test_13): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/script_test_13.c: New source file.
* testsuite/script_test_13.sh: New script.
* testsuite/script_test_13.t: New linker script.

7 years agoFix edge cases in orphan section placement.
Cary Coutant [Tue, 13 Dec 2016 01:52:09 +0000 (17:52 -0800)]
Fix edge cases in orphan section placement.

There were still some cases I found where orphan section placement
was screwy -- where the script has no output section description for
either .data or .bss, a .bss orphan section ends up getting placed
before the .data section. In addition, if there is an output section
description for a data section not named .data (e.g., .rela.dyn),
the orphan .bss gets placed before it. This patch cleans that up,
by tracking the last allocated section even as we're adding orphans.

I've also improved segment layout in the absence of a PHDRS clause.
A zero-length NOBITS section will no longer force a new segment
when followed by a PROGBITS section.

2016-12-12  Cary Coutant  <ccoutant@gmail.com>

gold/
* script-sections.cc (Orphan_section_placement::update_last_alloc):
New method.
(Orphan_section_placement::find_place): Place orphan .data section
after either RODATA or TEXT.
(Script_sections::place_orphan): Call update_last_alloc for allocated
sections.
(Script_sections::create_segments): Improve handling of BSS.

7 years agoAutomatic date update in version.in
GDB Administrator [Tue, 13 Dec 2016 00:00:25 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoDon't add PHDR for objcopy/strip or ld script specifying PHDRS
Alan Modra [Mon, 12 Dec 2016 23:00:06 +0000 (09:30 +1030)]
Don't add PHDR for objcopy/strip or ld script specifying PHDRS

HPPA64 needs to add a DT_PHDR header for shared libs.  That's fine
when linking but shouldn't happen for strip/objcopy.  Also PHDR must
come first so there's no need to look at all program headers.

bfd/
* elf64-hppa.c (elf64_hppa_modify_segment_map): Don't add PHDR
for objcopy/strip or when a ld script specifies PHDRS.
ld/
* testsuite/ld-elf/nobits-1.d: Remove xfail for hppa64.
* testsuite/ld-elf/note-1.d: Likewise.
* testsuite/ld-elf/note-2.d: Likewise.

7 years agoDon't fudge p_vaddr when PHDR in segment
Alan Modra [Mon, 12 Dec 2016 22:59:47 +0000 (09:29 +1030)]
Don't fudge p_vaddr when PHDR in segment

RX does horrible fudges to PT_LOAD p_vaddr, that affect the testsuite
and mean the target won't support dynamic objects.  The latter
probably doesn't matter too much since RX is an embedded target, but
it's easy to stop some of the fudges in order to reduce special cases
for RX in the testsuite.  The changes make sense in isolation too.

bfd/
* elf32-rx.c (elf32_rx_modify_program_headers): Don't adjust
segments that include the ELF file header or program headers.
ld/
* testsuite/ld-elf/flags1.d: Run for RX.
* testsuite/ld-scripts/phdrs.exp: Likewise.
* testsuite/ld-scripts/pr14962.d: Likewise.
* testsuite/ld-scripts/pr14962-2.d: Likewise.

7 years ago[GOLD] Allow for larger alignment in script_test_15
Alan Modra [Mon, 12 Dec 2016 22:59:26 +0000 (09:29 +1030)]
[GOLD] Allow for larger alignment in script_test_15

PowerPC64 aligns .got to a 256 byte boundary.  This tends to bump the
data segment file size.

PR gold/16711
* testsuite/script_test_15a.sh: Allows larger p_filesz.
* testsuite/script_test_15b.sh: Likewise.
* testsuite/script_test_15c.sh: Likewise.

7 years ago[GOLD] Adjust testcase for PowerPC64
Alan Modra [Mon, 12 Dec 2016 22:51:56 +0000 (09:21 +1030)]
[GOLD] Adjust testcase for PowerPC64

Since the linker created .TOC. symbol is placed at roughly .got+32k,
.toc input sections must be placed in or after .got if .toc entries
are accessed using 16-bit signed offset relocs.  crt1.o contains such
a relocation.

PR gold/20717
* testsuite/pr20717.t: Add .got output section containing .toc.

7 years agoPort c++/78252 from GCC
Nathan Sidwell [Mon, 12 Dec 2016 17:52:37 +0000 (12:52 -0500)]
Port c++/78252 from GCC

PR c++/78252
* cp-demangle.c (struct d_print_info): Add is_lambda_arg field.
(d_print_init): Initialize it.
(d_print_comp_inner) <DEMANGLE_COMPONENT_TEMPLATE_PARAM>: Check
is_lambda_arg for auto.
<DEMANGLE_COMPONENT_REFERENCE,
DEMANGLE_COMPONENT_RVALUE_REFERENCE>: Skip smashing check when
is_lambda_arg.
<DEMANGLE_COMPONENT_LAMBDA>: Increment is_lambda_arg around arg
printing.
* testsuite/demangle-expected: Add lambda auto mangling cases.

7 years agoRemove assert on exec_bfd in cris_delayed_get_disassembler
Yao Qi [Mon, 12 Dec 2016 09:09:43 +0000 (09:09 +0000)]
Remove assert on exec_bfd in cris_delayed_get_disassembler

cris_delayed_get_disassembler has an assert that exec_bfd can't be
NULL, but this assert can be triggered like this,

(gdb) set architecture cris
The target architecture is assumed to be cris
(gdb) disassemble 0x0,+4
Dump of assembler code from 0x0 to 0x4:
   0x00000000:
../../binutils-gdb/gdb/cris-tdep.c:3798: internal-error: int cris_delayed_get_disassembler(bfd_vma, disassemble_info*): Assertion `exec_bfd != NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

however, cris_get_disassembler does have code to handle the case that
bfd is NULL,

  /* If there's no bfd in sight, we return what is valid as input in all
     contexts if fed back to the assembler: disassembly *with* register
     prefix.  Unfortunately this will be totally wrong for v32.  */
  if (abfd == NULL)
    return print_insn_cris_with_register_prefix;

This patch is to remove this assert.

gdb:

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

PR tdep/20955
* cris-tdep.c (cris_delayed_get_disassembler): Remove the
assert.

7 years agoHandle memory error in print_insn_rx
Yao Qi [Mon, 12 Dec 2016 09:03:34 +0000 (09:03 +0000)]
Handle memory error in print_insn_rx

Nowadays, memory error in rx disassembly is not handled, so if I
start a fresh GDB, and disassemble,

(gdb) set architecture rx
The target architecture is assumed to be rx
(gdb) disassemble 0x0,+4
Dump of assembler code from 0x0 to 0x4:
   0x00000000: brk
   0x00000001: brk
   0x00000002: brk
   0x00000003: brk

the output is wrong.  This patch adds code to call dis->memory_error_func
on memory error, and longjmp to print_insn_rx.  With this patch applied,

(gdb) set architecture rx
The target architecture is assumed to be rx
(gdb) disassemble 0,+4
Dump of assembler code from 0x0 to 0x4:
   0x00000000: Cannot access memory at address 0x0

opcodes:

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

* rx-dis.c: Include <setjmp.h>
(struct private): New.
(rx_get_byte): Check return value of read_memory_func, and
call memory_error_func and OPCODES_SIGLONGJMP on error.
(print_insn_rx): Call OPCODES_SIGSETJMP.

7 years agoHandle memory error in print_insn_rl78_common
Yao Qi [Mon, 12 Dec 2016 09:03:34 +0000 (09:03 +0000)]
Handle memory error in print_insn_rl78_common

Nowadays, memory error in rl78 disassembly is not handled, so if I
start a fresh GDB, and disassemble,

(gdb) set architecture rl78
The target architecture is assumed to be rl78
(gdb) disassemble 0x0,+4
Dump of assembler code from 0x0 to 0x4:
   0x00000000: nop
   0x00000001: nop
   0x00000002: nop
   0x00000003: nop

the output is wrong.  This patch adds code to call dis->memory_error_func
on memory error, and longjmp to print_insn_rl78_common.  With this
patch applied,

(gdb) set architecture rl78
The target architecture is assumed to be rl78
(gdb) disassemble 0,+4
Dump of assembler code from 0x0 to 0x4:
   0x00000000: Cannot access memory at address 0x0

opcodes:

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

* rl78-dis.c: Include <setjmp.h>.
(struct private): New.
(rl78_get_byte): Check return value of read_memory_func, and
call memory_error_func and OPCODES_SIGLONGJMP on error.
(print_insn_rl78_common): Call OPCODES_SIGJMP.

7 years agoFix earlier ChangeLog entry to give Igor credit, add testcases.
Igor Kudrin [Mon, 12 Dec 2016 04:31:09 +0000 (20:31 -0800)]
Fix earlier ChangeLog entry to give Igor credit, add testcases.

2016-12-01  Cary Coutant  <ccoutant@gmail.com>
    Igor Kudrin  <ikudrin@accesssoftek.com>

PR gold/20717
* script-sections.cc (Script_sections): Set *keep to false when
no match.

2016-12-11  Igor Kudrin  <ikudrin@accesssoftek.com>

PR gold/20717
* testsuite/Makefile.am (pr20717): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/pr20717.c: New test source file.
* testsuite/pr20717.sh: New test script.
* testsuite/pr20717.t: New test linker script.

7 years agoFix problems with bss handling in linker scripts.
Cary Coutant [Mon, 12 Dec 2016 01:31:25 +0000 (17:31 -0800)]
Fix problems with bss handling in linker scripts.

PR 16711 noted that gold allocates file space for BSS sections when using
a linker script. I've fixed that by rewriting set_section_addresses and
set_section_list_addresses to track the file offset separate from the
current virtual address, so that BSS sections do not move the file offset.
Now, if a series of BSS sections come at the end of a segment, we do not
allocate file space; but if a script forces them into the middle of a
segment, we will still allocate file space (matching Gnu ld behavior).
I've also added a warning when that happens.

That exposed another problem where orphan .bss sections were sometimes
placed in the middle of a segment. For example, if the script mentions
the .got section, but both .data and .bss are orphans, gold would put
both .data and .bss in front of .got. I've fixed that by ensuring that
orphan BSS sections are always placed after all other allocated sections.

It also exposed a problem where the SUBALIGN property is not handled
properly. The ld manual clearly states that it should override input section
alignment, whether greater or less than the given alignment, but gold would
only increase an input section's alignment. Gold would also place the output
section based on its original alignment before the SUBALIGN property took
effect, leading to a misaligned output section (where the input section
was properly aligned in memory, but was not aligned relative to the start
of the section), in violation of the ELF/gABI spec. I've fixed that by
making sure that the SUBALIGN property overrides the internal alignment of
the input sections as well as the external alignment of the output section.
This affected the behavior of script_test_2, which was written to expect
a misaligned section.

The net effect is, I think, improved compatibility with the BFD linker.
There are still cases where orphan placement differs, but the differences
should be rarer and less important. ALIGN and SUBALIGN behavior is closer,
but still not an exact match -- I still found cases where ld would create
a misaligned output section, and where gold will properly align it.

gold/
PR gold/16711
* output.cc (Output_section::set_final_data_size): Calculate data size
based on relative offset rather than file offset.
(Output_segment::set_section_addresses): Track file offset separately
from address offset.
(Output_segment::set_section_list_addresses): Add pfoff parameter.
Track file offset separately.  Don't move file offset for BSS
sections.
* output.h (Output_segment::set_section_list_addresses): Add pfoff
parameter.
* script-sections.cc (Orphan_section_placement): Add PLACE_LAST_ALLOC.
(Orphan_section_placement::Orphan_section_placement): Initialize it.
(Orphan_section_placement::output_section_init): Track last allocated
section.
(Orphan_section_placement::find_place): Place BSS after last allocated
section.
(Output_section_element_input::set_section_addresses): Always override
input section alignment when SUBALIGN is specified.
(Output_section_definition::set_section_addresses): Override alignment
of output section when SUBALIGN is specified.

* testsuite/Makefile.am (script_test_15a, script_test_15b)
(script_test_15c): New test cases.
* testsuite/Makefile.in: Regenerate.
* testsuite/script_test_2.cc: Adjust expected layout.
* testsuite/script_test_15.c: New source file.
* testsuite/script_test_15a.sh: New shell script.
* testsuite/script_test_15a.t: New linker script.
* testsuite/script_test_15b.sh: New shell script.
* testsuite/script_test_15b.t: New linker script.
* testsuite/script_test_15c.sh: New shell script.
* testsuite/script_test_15c.t: New linker script.

7 years agoRegenerate Makefile.in to get rid of annoying diffs caused by non-deterministic automake.
Cary Coutant [Mon, 12 Dec 2016 00:40:11 +0000 (16:40 -0800)]
Regenerate Makefile.in to get rid of annoying diffs caused by non-deterministic automake.

* Makefile.in: Regenerate.

7 years agoAutomatic date update in version.in
GDB Administrator [Mon, 12 Dec 2016 00:00:21 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoAutomatic date update in version.in
GDB Administrator [Sun, 11 Dec 2016 00:00:23 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoAutomatic date update in version.in
GDB Administrator [Sat, 10 Dec 2016 00:00:21 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoMIPS16: Remove unused `>' operand code
Maciej W. Rozycki [Fri, 9 Dec 2016 23:11:40 +0000 (23:11 +0000)]
MIPS16: Remove unused `>' operand code

This code has never been used throughout the repository history, and
likely not before either, as due to the assymetry of MIPS16 instruction
set encoding there are no 32-bit shift operations having their immediate
shift count placed in the position of the usual `rx' instruction field.

gas/
* config/tc-mips.c (mips16_macro_build) <'>'>: Remove case.

include/
* opcode/mips.h: Remove references to `>' operand code.

opcodes/
* mips16-opc.c (decode_mips16_operand) <'>'>: Remove cases.

7 years agoMIPS16/opcodes: Use hexadecimal interpretation for the `e' operand code
Maciej W. Rozycki [Fri, 9 Dec 2016 22:50:07 +0000 (22:50 +0000)]
MIPS16/opcodes: Use hexadecimal interpretation for the `e' operand code

Make the `e' operand code used with raw EXTEND instructions use the
hexadecimal rather than decimal format, for consistency with what is
actually produced by code in `print_insn_mips16' dedicated to EXTEND
disassembly.  Due to that special handling the operand code is only
interpreted for assembly however, which accepts either format either
way, so there is no functional change here.

opcodes/
* mips16-opc.c (decode_mips16_operand) <'e'>: Use HINT rather
than UINT.

gas/
* testsuite/gas/mips/mips16-extend.d: New test.
* testsuite/gas/mips/mips16-extend.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new test.

7 years agoMIPS16/opcodes: Reformat raw EXTEND and undecoded output
Maciej W. Rozycki [Fri, 9 Dec 2016 22:27:00 +0000 (22:27 +0000)]
MIPS16/opcodes: Reformat raw EXTEND and undecoded output

Use a tab rather than a space to separate `extend' and its uninterpreted
argument output, like with regular instructions.  Separate hexadecimal
halves of undecoded extended instructions output with a space instead of
presenting them concatenated.

opcodes/
* mips-dis.c (print_insn_mips16): Use a tab rather than a space
to separate `extend' and its uninterpreted argument output.
Separate hexadecimal halves of undecoded extended instructions
output.

binutils/
* testsuite/binutils-all/mips/mips16-extend-noinsn.d: New test.
* testsuite/binutils-all/mips/mips16-extend-noinsn.s: New test
source.
* testsuite/binutils-all/mips/mips.exp: Run the new test.

7 years agogdb: Remove support for obsolete OSABIs and a.out
Pedro Alves [Fri, 9 Dec 2016 16:08:49 +0000 (16:08 +0000)]
gdb: Remove support for obsolete OSABIs and a.out

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

* Makefile.in (ALL_TARGET_OBS): Remove vax-obsd-tdep.o.
* alpha-fbsd-tdep.c (_initialize_alphafbsd_tdep): Adjust.
* alpha-nbsd-tdep.c: Move comment to _initialize_alphanbsd_tdep.
(alphanbsd_core_osabi_sniffer): Delete.
(_initialize_alphanbsd_tdep): No longer handle a.out.
* alpha-obsd-tdep.c (_initialize_alphaobsd_tdep): Adjust.
* amd64-fbsd-tdep.c (_initialize_amd64fbsd_tdep): Adjust.
* amd64-nbsd-tdep.c (_initialize_amd64nbsd_tdep): Adjust.
* amd64-obsd-tdep.c (amd64obsd_supply_regset)
(amd64obsd_combined_regset)
(amd64obsd_iterate_over_regset_sections, amd64obsd_core_init_abi):
Delete.
(_initialize_amd64obsd_tdep): Don't handle a.out.
* arm-nbsd-nat.c (struct md_core, fetch_core_registers)
(arm_netbsd_core_fns): Delete.
(_initialize_arm_netbsd_nat): Don't register arm_netbsd_core_fns.
* arm-nbsd-tdep.c (arm_netbsd_aout_init_abi)
(arm_netbsd_aout_osabi_sniffer): Delete.
(_initialize_arm_netbsd_tdep): Don't handle a.out.
* arm-obsd-tdep.c (armobsd_core_osabi_sniffer): Delete.
(_initialize_armobsd_tdep): Don't handle a.out.
* arm-tdep.c (arm_gdbarch_init): Remove bfd_target_aout_flavour
case.
* breakpoint.c (disable_breakpoints_in_unloaded_shlib): Remove
SunOS a.out handling.
* configure.tgt (vax-*-netbsd* | vax-*-knetbsd*-gnu): Remove
vax-obsd-tdep.o from gdb_target_objs.
(vax-*-openbsd*): Likewise.
(*-*-freebsd*): Adjust default gdb_osabi.
(*-*-openbsd*): Likewise.
* dbxread.c (block_address_function_relative): Delete.
(dbx_symfile_read): Remove reference to
block_address_function_relative.
(dbx_symfile_read): Don't call read_dbx_dynamic_symtab.
(read_dbx_dynamic_symtab): Delete.
(process_one_symbol): Remove references to
block_address_function_relative.
* defs.h (GDB_OSABI_FREEBSD_AOUT, GDB_OSABI_NETBSD_AOUT): Remove.
(GDB_OSABI_FREEBSD_ELF): Rename to ...
(GDB_OSABI_FREEBSD): ... this.
(GDB_OSABI_NETBSD_ELF): Rename to ...
(GDB_OSABI_NETBSD): ... this.
(GDB_OSABI_OPENBSD_ELF): Rename to ...
(GDB_OSABI_OPENBSD): ... this.
(GDB_OSABI_HPUX_ELF, GDB_OSABI_HPUX_SOM): Remove.
* fbsd-tdep.c: Adjust comment.
* hppa-nbsd-tdep.c (_initialize_hppanbsd_tdep): Adjust.
* hppa-obsd-tdep.c (GDB_OSABI_NETBSD_CORE): Delete.
(hppaobsd_core_osabi_sniffer): Delete.
(_initialize_hppabsd_tdep): Don't handle a.out.
* hppa-tdep.c (hppa_stub_frame_unwind_cache): Don't handle
GDB_OSABI_HPUX_SOM.
(hppa_gdbarch_init): Likewise.
* i386-bsd-tdep.c (i386bsd_aout_osabi_sniffer)
(i386bsd_core_osabi_sniffer, _initialize_i386bsd_tdep): Delete.
* i386-fbsd-tdep.c (i386fbsdaout_init_abi): Delete.  Merge bits
with ...
(i386fbsd_init_abi): ... this.
(_initialize_i386fbsd_tdep): Don't handle a.out.
* i386-nbsd-tdep.c (_initialize_i386nbsd_tdep): Adjust.
* i386-obsd-tdep.c (i386obsd_aout_supply_regset)
(i386obsd_aout_gregset)
(i386obsd_aout_iterate_over_regset_sections): Delete.
(i386obsd_init_abi): Merge with i386obsd_elf_init_abi.
(i386obsd_aout_init_abi): Delete.
(_initialize_i386obsd_tdep): Don't handle a.out.
* m68k-bsd-tdep.c (m68kobsd_sigtramp_cache_init)
(m68kobsd_sigtramp): Delete.
(m68kbsd_init_abi): Merge with ...
(m68kbsd_elf_init_abi): ... this, and delete it.
(m68kbsd_aout_init_abi): Delete.
(m68kbsd_aout_osabi_sniffer, m68kbsd_core_osabi_sniffer): Delete.
(_initialize_m68kbsd_tdep): Don't handle a.out.
* mips-nbsd-tdep.c (_initialize_mipsnbsd_tdep): Adjust.
* mips64-obsd-tdep.c (_initialize_mips64obsd_tdep): Adjust.
* osabi.c (gdb_osabi_names): Remove "a.out" entries.  Drop "ELF"
suffixes.  Remove "HP-UX" entries.
(generic_elf_osabi_sniff_abi_tag_sections): Adjust.
(generic_elf_osabi_sniffer): No longer handle GDB_OSABI_HPUX_ELF.
Adjust.
(_initialize_ppcfbsd_tdep): Adjust.
* ppc-nbsd-tdep.c (_initialize_ppcnbsd_tdep): Adjust.
* ppc-obsd-tdep.c (GDB_OSABI_NETBSD_CORE)
(ppcobsd_core_osabi_sniffer): Delete.
(_initialize_ppcobsd_tdep): Don't handle a.out.
* rs6000-tdep.c (rs6000_gdbarch_init): Adjust.
* sh-nbsd-tdep.c (GDB_OSABI_NETBSD_CORE)
(shnbsd_core_osabi_sniffer): Delete.
(_initialize_shnbsd_tdep): Don't handle a.out.
* solib.c (clear_solib): Don't handle SunOS/a.out.
* sparc-nbsd-tdep.c (sparc32nbsd_init_abi): Make extern.
(sparc32nbsd_aout_init_abi): Delete.
(sparc32nbsd_elf_init_abi): Merged into sparc32nbsd_init_abi.
(sparcnbsd_aout_osabi_sniffer): Delete.
(GDB_OSABI_NETBSD_CORE, sparcnbsd_core_osabi_sniffer): Delete.
(_initialize_sparcnbsd_tdep): No longer handle a.out.
* sparc-obsd-tdep.c (sparc32obsd_init_abi)
(_initialize_sparc32obsd_tdep): Adjust.
* sparc-tdep.h (sparc32nbsd_elf_init_abi): Rename to ...
(sparc32nbsd_init_abi): ... this.
* sparc64-fbsd-tdep.c (_initialize_sparc64fbsd_tdep): Adjust.
* sparc64-nbsd-tdep.c (_initialize_sparc64nbsd_tdep): Adjust.
* sparc64-obsd-tdep.c (_initialize_sparc64obsd_tdep): Adjust.
* stabsread.c: Update comment.
* symmisc.c (print_objfile_statistics): Don't mention "a.out" in
output.
* vax-nbsd-tdep.c (_initialize_vaxnbsd_tdep): Adjust.
* vax-obsd-tdep.c: Delete file.

7 years agoAdd ChangeLog entries
Yao Qi [Fri, 9 Dec 2016 15:44:48 +0000 (15:44 +0000)]
Add ChangeLog entries

ChangeLog entries are missed in my two previous commits.

7 years agoCreate tdep->rx_psw_type and tdep->rx_fpsw_type lazily
Yao Qi [Fri, 9 Dec 2016 15:27:43 +0000 (15:27 +0000)]
Create tdep->rx_psw_type and tdep->rx_fpsw_type lazily

I build GDB with all targets enabled, and "set architecture rx",
GDB crashes,

(gdb) set architecture rx

Program received signal SIGSEGV, Segmentation fault.
append_flags_type_flag (type=0x20cc360, bitpos=bitpos@entry=0, name=name@entry=0xd27529 "C") at ../../binutils-gdb/gdb/gdbtypes.c:4926
4926    name);
(gdb) bt 10
 #0  append_flags_type_flag (type=0x20cc360, bitpos=bitpos@entry=0, name=name@entry=0xd27529 "C") at ../../binutils-gdb/gdb/gdbtypes.c:4926
 #1  0x00000000004ce725 in rx_gdbarch_init (info=..., arches=<optimized out>) at ../../binutils-gdb/gdb/rx-tdep.c:1051
 #2  0x00000000006b05a4 in gdbarch_find_by_info (info=...) at ../../binutils-gdb/gdb/gdbarch.c:5269
 #3  0x000000000060eee4 in gdbarch_update_p (info=...) at ../../binutils-gdb/gdb/arch-utils.c:557
 #4  0x000000000060f8a8 in set_architecture (ignore_args=<optimized out>, from_tty=1, c=<optimized out>) at ../../binutils-gdb/gdb/arch-utils.c:531
 #5  0x0000000000593d0b in do_set_command (arg=<optimized out>, arg@entry=0x20bee81 "rx ", from_tty=from_tty@entry=1, c=c@entry=0x20b1540)
    at ../../binutils-gdb/gdb/cli/cli-setshow.c:455
 #6  0x00000000007665c3 in execute_command (p=<optimized out>, p@entry=0x20bee70 "set architecture rx ", from_tty=1) at ../../binutils-gdb/gdb/top.c:666
 #7  0x00000000006935f4 in command_handler (command=0x20bee70 "set architecture rx ") at ../../binutils-gdb/gdb/event-top.c:577
 #8  0x00000000006938d8 in command_line_handler (rl=<optimized out>) at ../../binutils-gdb/gdb/event-top.c:767
 #9  0x0000000000692c2c in gdb_rl_callback_handler (rl=0x20be7f0 "") at ../../binutils-gdb/gdb/event-top.c:200

The cause is that we want to access some builtin types in gdbarch init, but
it is not initialized yet.  I fix it by creating the type when it is to be
used.  We've already done this in sparc, sparc64 and m68k.

gdb:

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

PR tdep/20954
* rx-tdep.c (rx_psw_type): New function.
(rx_fpsw_type): New function.
(rx_register_type): Call rx_psw_type and rx_fpsw_type.
(rx_gdbarch_init): Move code to rx_psw_type and
rx_fpsw_type.

gdb/testsuite:

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

* gdb.base/all-architectures.exp.in: Remove kfail for "rx".

7 years agoCreate tdep->rl78_psw_type lazily
Yao Qi [Fri, 9 Dec 2016 15:27:43 +0000 (15:27 +0000)]
Create tdep->rl78_psw_type lazily

I build GDB for all targets enabled.  When I "set architecture rl78",
GDB crashes,

(gdb) set architecture rl78

Program received signal SIGSEGV, Segmentation fault.
append_flags_type_flag (type=0x20cc0e0, bitpos=bitpos@entry=0, name=name@entry=0x11dba3f "CY") at ../../binutils-gdb/gdb/gdbtypes.c:4926
4926    name);
(gdb) bt 10
 #0  append_flags_type_flag (type=0x20cc0e0, bitpos=bitpos@entry=0, name=name@entry=0x11dba3f "CY") at ../../binutils-gdb/gdb/gdbtypes.c:4926
 #1  0x00000000004aaca8 in rl78_gdbarch_init (info=..., arches=<optimized out>) at ../../binutils-gdb/gdb/rl78-tdep.c:1410
 #2  0x00000000006b05a4 in gdbarch_find_by_info (info=...) at ../../binutils-gdb/gdb/gdbarch.c:5269
 #3  0x000000000060eee4 in gdbarch_update_p (info=...) at ../../binutils-gdb/gdb/arch-utils.c:557
 #4  0x000000000060f8a8 in set_architecture (ignore_args=<optimized out>, from_tty=1, c=<optimized out>) at ../../binutils-gdb/gdb/arch-utils.c:531
 #5  0x0000000000593d0b in do_set_command (arg=<optimized out>, arg@entry=0x20be851 "rl78", from_tty=from_tty@entry=1, c=c@entry=0x20b1540)
    at ../../binutils-gdb/gdb/cli/cli-setshow.c:455
 #6  0x00000000007665c3 in execute_command (p=<optimized out>, p@entry=0x20be840 "set architecture rl78", from_tty=1) at ../../binutils-gdb/gdb/top.c:666
 #7  0x00000000006935f4 in command_handler (command=0x20be840 "set architecture rl78") at ../../binutils-gdb/gdb/event-top.c:577
 #8  0x00000000006938d8 in command_line_handler (rl=<optimized out>) at ../../binutils-gdb/gdb/event-top.c:767
 #9  0x0000000000692c2c in gdb_rl_callback_handler (rl=0x20be890 "") at ../../binutils-gdb/gdb/event-top.c:200

The cause is that we want to access some builtin types in gdbarch init, but
it is not initialized yet.  I fix it by creating the type when it is to be
used.  We've already done this in sparc, sparc64 and m68k.

gdb:

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

PR tdep/20953
* rl78-tdep.c (rl78_psw_type): New function.
(rl78_register_type): Call rl78_psw_type.
(rl78_gdbarch_init): Move code to rl78_psw_type.

gdb/testsuite:

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

* gdb.base/all-architectures.exp.in: Remove kfail for rl78.

7 years agoAdd test that exercises all bfd architecture, osabi, endian, etc. combinations
Pedro Alves [Fri, 9 Dec 2016 14:59:09 +0000 (14:59 +0000)]
Add test that exercises all bfd architecture, osabi, endian, etc. combinations

This adds a test that exposes several problems fixed by earlier
patches:

#1 - Buffer overrun when host/target formats match, but sizes don't.
     https://sourceware.org/ml/gdb-patches/2016-03/msg00125.html

#2 - Missing handling for FR-V FR300.
     https://sourceware.org/ml/gdb-patches/2016-03/msg00117.html

#3 - BFD architectures with spaces in their names (v850).
     https://sourceware.org/ml/binutils/2016-03/msg00108.html

#4 - The OS ABI names with spaces issue.
     https://sourceware.org/ml/gdb-patches/2016-03/msg00116.html

#5 - Bogus HP/PA long double format.
     https://sourceware.org/ml/gdb-patches/2016-03/msg00122.html

#6 - Cris big endian internal error.
     https://sourceware.org/ml/gdb-patches/2016-03/msg00126.html

#7 - Several PowerPC bfd archs/machines not handled by gdb.
     https://sourceware.org/bugzilla/show_bug.cgi?id=19797

And hopefully helps catch others in the future.

This started out as a test that simply did,

 gdb -ex "print 1.0L"

to exercise #1 above.

Then to cover both 32-bit target / 64-bit host and the converse, I
thought of having the testcase print the floats twice, once with the
architecture set to "i386" and then to "i386:x86-64".  This way it
wouldn't matter whether gdb was built as 32-bit or a 64-bit program.

Then I thought that other archs might have similar host/target
floatformat conversion issues as well.  Instead of hardcoding some
architectures in the test file, I thought we could just iterate over
all bfd architectures and OS ABIs supported by the gdb build being
tested.  This is what then exposed all the other problems listed
above...

With an --enable-targets=all, this exercises over 14 thousand
combinations.  If left in a single test file, it all consistenly runs
in under a minute on my machine (An Intel i7-4810MQ @ 2.8 MHZ running
Fedora 23).  Split in 8 chunks, as in this commit, it runs in around
25 seconds, with make -j8.

To avoid flooding the gdb.sum file, it avoids calling "pass" on each
tested combination/iteration.  I'm explicitly not implementing that by
passing an empty message to gdb_test / gdb_test_multiple, because I
still want a FAIL to be logged in gdb.sum.  So instead this puts the
internal passes in the gdb.log file, only, prefixed "IPASS:", for
internal pass.  TBC, if some iteration fails, it'll still show up as
FAIL in gdb.sum.  If this is an approach that takes on, I can see us
extending the common bits to support it for all testcases.

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

* gdb.base/all-architectures-0.exp: New file.
* gdb.base/all-architectures-1.exp: New file.
* gdb.base/all-architectures-2.exp: New file.
* gdb.base/all-architectures-3.exp: New file.
* gdb.base/all-architectures-4.exp: New file.
* gdb.base/all-architectures-5.exp: New file.
* gdb.base/all-architectures-6.exp: New file.
* gdb.base/all-architectures-7.exp: New file.
* gdb.base/all-architectures.exp.in: New file.

7 years agoUse code cache in aarch64 prologue analyzer
Yao Qi [Fri, 9 Dec 2016 09:51:20 +0000 (09:51 +0000)]
Use code cache in aarch64 prologue analyzer

This patch change aarch prologue analyzer using code cache, in order
to improve the performance of remote debugging.

gdb.perf/skip-prologue.exp (measured by wall-time) is improved when
the program is compiled without debug information.

Original Patched Original Patched
without dbg without dbg with dbg with dbg

/ 11.1635239124 9.99472999573 9.65339517593 9.66648793221
-fstack-protector-all 11.2560930252 9.338118 9.63896489143 9.59474396706

gdb:

2016-12-9  Yao Qi  <yao.qi@linaro.org>

* aarch64-tdep.c (instruction_reader::read): Call
read_code_unsigned_integer instead of
read_memory_unsigned_integer.

7 years agoUse code cache in arm prologue analyzer
Yao Qi [Fri, 9 Dec 2016 09:51:20 +0000 (09:51 +0000)]
Use code cache in arm prologue analyzer

This patch change arm prologue analyzer using code cache, in order
to improve the performance of remote debugging.

gdb.perf/skip-prologue.exp (measured by wall-time) is improved a lot,

Original Patched Original Patched
without dbg without dbg with dbg with dbg

-marm 14.166741848 9.32852292061   11.4908499718   9.16302204132
-marm    14.6705040932   9.34849786758   18.2788009644   9.14823913574
\-fstack-protector-all
-mthumb 34.4391930103 10.6062178612  13.7886838913 10.3094120026
-mthumb
\-fstack-protector-all 34.9310460091 10.6413481236 25.3875930309 10.6294929981

gdb:

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

* arm-tdep.c (skip_prologue_function): Call
read_code_unsigned_integer instead of
read_memory_unsigned_integer.
(thumb_analyze_prologue): Likewise.
(arm_analyze_load_stack_chk_guard): Likewise.
(arm_skip_stack_protector): Likewise.
(arm_analyze_prologue):Likewise.
(extend_buffer_earlier): Call target_read_code instead
of target_read_memory.
(arm_adjust_breakpoint_address): Likewise.

7 years agoCompile gdb.perf/skip-prologue.c with and without debug info
Yao Qi [Fri, 9 Dec 2016 09:51:20 +0000 (09:51 +0000)]
Compile gdb.perf/skip-prologue.c with and without debug info

gdb.perf/skip-prologue.exp is intended to measure the performance of
skipping prologue with prologue analysis by setting breakpoints.
However, if program is compiled with debug info, GDB is smart to
skip prologue by line table from debug info, so prologue analysis
is not exercised at all.

This patch adds a parameter COMPILE to specify compiling with
debug information, otherwise, it is compiled without debug
information.

gdb/testsuite:

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

* gdb.perf/skip-prologue.exp: Add parameter COMPILE.

7 years agoHurd: Adjust to changes to "push pruning old threads down to the target"
Thomas Schwinge [Wed, 25 May 2016 16:54:40 +0000 (18:54 +0200)]
Hurd: Adjust to changes to "push pruning old threads down to the target"

For "info threads", we currently run into:

    $ gdb/gdb -q -nw -nx --batch -ex start -ex info\ threads bfd/doc/chew
    Temporary breakpoint 1 at 0x80486e0: file ../../../W._C._Handy/bfd/doc/chew.c, line 1535.
    [New Thread 10656.5]

    Thread 4 hit Temporary breakpoint 1, main (ac=1, av=0x102cd84) at ../../../W._C._Handy/bfd/doc/chew.c:1535
    1535    {
      Id   Target Id         Frame
      1    bogus thread id 1 Can't fetch registers from thread bogus thread id 1: No such thread

Before commit e8032dde10b743253125d7defb5f5503b21c1d26,
gdb/thread.c:update_thread_list used to call prune_threads, after that change
it doesn't anymore, and we don't implement the to_update_thread_list target
method where the prune_threads call got moved.  For now, apply a fix, related
to commit c82f56d9d760a9b4034eeaac44f2f0fa5779ff69 "Hurd: Adjust to
startup-with-shell changes", which restores the previous behavior:

      Id   Target Id         Frame
    * 4    Thread 10688.4    main (ac=1, av=0x102cd84) at ../../../W._C._Handy/bfd/doc/chew.c:1535
      5    Thread 10688.5    0x0106096c in ?? () from /lib/i386-gnu/libc.so.0.3

Not perfect, but at least better.

gdb/
* gnu-nat.c (gnu_create_inferior): After startup_inferior, call
prune_threads.

7 years agoAvoid PATH_MAX usage
Thomas Schwinge [Thu, 8 Dec 2016 17:42:03 +0000 (18:42 +0100)]
Avoid PATH_MAX usage

On GNU/Hurd, there is no "#define PATH_MAX", so this failed to build.

gdb/
* inferior.c (print_selected_inferior): Avoid PATH_MAX usage.

7 years agoAutomatic date update in version.in
GDB Administrator [Fri, 9 Dec 2016 00:00:25 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoMIPS16/opcodes: Fix off-by-one indentation in `print_mips16_insn_arg'
Maciej W. Rozycki [Thu, 8 Dec 2016 23:29:37 +0000 (23:29 +0000)]
MIPS16/opcodes: Fix off-by-one indentation in `print_mips16_insn_arg'

opcodes/
* mips-dis.c (print_mips16_insn_arg): Remove extraneous
indentation space across.

7 years agoMIPS16/opcodes: Fix PC-relative operation delay-slot adjustment
Maciej W. Rozycki [Thu, 8 Dec 2016 23:29:01 +0000 (23:29 +0000)]
MIPS16/opcodes: Fix PC-relative operation delay-slot adjustment

Complement commit dd8b7c222e0e ("MIPS: mips16e jalrc/jrc opcodes"),
<https://sourceware.org/ml/binutils/2005-07/msg00349.html>, and stop the
disassembler making a delay-slot adjustment for PC-relative operations
following either MIPS16e compact jumps, or undefined RR/J(AL)R(C)
encodings that have the `l' (link) and `ra' (source register is `ra')
bits set both at a time.  Adjust code description for accuracy.  Add a
suitable test case.

opcodes/
* mips-dis.c (print_mips16_insn_arg): Avoid delay-slot
adjustment for PC-relative operations following MIPS16e compact
jumps or undefined RR/J(AL)R(C) encodings.

binutils/
* testsuite/binutils-all/mips/mips16-pcrel.d: New test.
* testsuite/binutils-all/mips/mips16-pcrel.s: New test source.
* testsuite/binutils-all/mips/mips.exp: Run the new test.

7 years agoARC/GAS: Correct a `spaces' global shadowing error
Maciej W. Rozycki [Thu, 8 Dec 2016 22:55:42 +0000 (22:55 +0000)]
ARC/GAS: Correct a `spaces' global shadowing error

Fix a commit a9752fdf8398 ("[ARC] Sync cpu names with the ones accepted
by GCC.") build regression:

cc1: warnings being treated as errors
.../gas/config/tc-arc.c: In function 'arc_show_cpu_list':
.../gas/config/tc-arc.c:3452: error: declaration of 'spaces' shadows a global declaration
.../gas/../include/libiberty.h:248: error: shadowed declaration is here
make[4]: *** [tc-arc.o] Error 1

in a way following commit 91d6fa6a035c ("Add -Wshadow to the gcc command
line options used when compiling the binutils.").

gas/
* config/tc-arc.c (arc_show_cpu_list): Rename `spaces' local
variable to `space_buf'.

7 years agoARM/GAS: Correct an `index' global shadowing error
Maciej W. Rozycki [Thu, 8 Dec 2016 22:53:39 +0000 (22:53 +0000)]
ARM/GAS: Correct an `index' global shadowing error

Fix a commit 008a97eff0ca ("[GAS][ARM]Generate unpredictable warning for
pc used in data processing instructions with register-shifted register
operand.") build regression:

cc1: warnings being treated as errors
.../gas/config/tc-arm.c: In function 'encode_arm_shift':
.../gas/config/tc-arm.c:7439: error: declaration of 'index' shadows a global declaration
/usr/include/string.h:303: error: shadowed declaration is here
make[4]: *** [tc-arm.o] Error 1

in a way following commit 91d6fa6a035c ("Add -Wshadow to the gcc command
line options used when compiling the binutils.").

gas/
* config/tc-arm.c (encode_arm_shift): Rename `index' local
variable to `op_index'.

7 years agoAArch64/opcodes: Correct another `index' global shadowing error
Maciej W. Rozycki [Thu, 8 Dec 2016 22:51:44 +0000 (22:51 +0000)]
AArch64/opcodes: Correct another `index' global shadowing error

Fix a commit c2c4ff8d52a2 ("[AArch64] Add ARMv8.3 FCMLA and FCADD
instructions") build regression:

cc1: warnings being treated as errors
.../opcodes/aarch64-dis.c: In function 'aarch64_ext_sve_addr_rr_lsl':
.../opcodes/aarch64-dis.c:1324: error: declaration of 'index' shadows a global declaration
/usr/include/string.h:303: error: shadowed declaration is here
make[4]: *** [aarch64-asm.lo] Error 1

in a way following commit 91d6fa6a035c ("Add -Wshadow to the gcc command
line options used when compiling the binutils.").

opcodes/
* aarch64-asm.c (aarch64_ins_reglane): Rename `index' local
variable to `reglane_index'.

7 years agoFix crash when disassembling invalid range on powerpc vle
Luis Machado [Thu, 8 Dec 2016 13:25:09 +0000 (07:25 -0600)]
Fix crash when disassembling invalid range on powerpc vle

I got a report of a gdb crash for vle and further investigation showed an
attempt to disassemble an invalid memory range.  I tracked the crash down
to the code in get_powerpc_dialect, where we fail to make sure we have a
valid section pointer before dereferencing it.

There is no such problem for rs6000-based disassembling.

opcodes/ChangeLog:

2016-12-08  Luis Machado  <lgustavo@codesourcery.com>

* ppc-dis.c (get_powerpc_dialect): Check NULL info->section.

7 years agoAlways use a hex prefix when displaying the alignment of program headers.
Etienne Buira [Thu, 8 Dec 2016 12:52:21 +0000 (12:52 +0000)]
Always use a hex prefix when displaying the alignment of program headers.

* readelf.c (process_program_headers): Always use hex prefix when
displaying the segment alignment.

7 years ago[GOLD] Don't assert in powerpc stub_table
Alan Modra [Thu, 8 Dec 2016 05:38:29 +0000 (16:08 +1030)]
[GOLD] Don't assert in powerpc stub_table

A branch in a non-exec section that needs a stub can lead to this
assertion.

* powerpc.cc (Powerpc_relobj::stub_table): Return NULL rather
then asserting.

7 years ago[GOLD] fix typo in --stub-group-multi help
Alan Modra [Thu, 8 Dec 2016 00:19:28 +0000 (10:49 +1030)]
[GOLD] fix typo in --stub-group-multi help

* options.h (--stub-group-multi): Fix typo.

7 years agosync binutils config/ with gcc
Alan Modra [Wed, 7 Dec 2016 23:20:17 +0000 (09:50 +1030)]
sync binutils config/ with gcc

config/
* acx.m4: Import from gcc.
* bootstrap-asan.mk: Likewise.
* multi.m4: Likewise.
/
* configure: Regnerate.
gas/
* configure: Regnerate.
ld/
* configure: Regnerate.
libiberty/
* configure: Regnerate.
zlib/
* configure: Regnerate.

7 years agoPR20932, Internal error during record link assignment
Alan Modra [Wed, 7 Dec 2016 23:21:00 +0000 (09:51 +1030)]
PR20932, Internal error during record link assignment

PR ld/20932
* elflink.c (bfd_elf_record_link_assignment): Handle warning symbols.

7 years agoHurd: In the CLI, use parse_thread_id instead of global_thread_id_to_ptid
Simon Marchi [Thu, 8 Dec 2016 08:45:59 +0000 (09:45 +0100)]
Hurd: In the CLI, use parse_thread_id instead of global_thread_id_to_ptid

Follow-up to commit 14f6890677849172a4b13779acd9089c9baa3a81.
global_thread_id_to_ptid expects global thread numbers, which are nowadays only
used in MI, never presented to the user in the CLI.  Since this is a CLI
command, it should accept the inferior-qualified format instead.

gdb/
* gnu-nat.c (set_sig_thread_cmd): Use parse_thread_id instead of
global_thread_id_to_ptid.

7 years agoHurd, C++: Mach/Hurd headers and MIG stubs are not yet fit for C++
Thomas Schwinge [Mon, 5 Dec 2016 10:59:03 +0000 (11:59 +0100)]
Hurd, C++: Mach/Hurd headers and MIG stubs are not yet fit for C++

..., so handle these in "C" mode still:

gdb/
* config/i386/i386gnu.mh (%_S.o %_U.o): Add "-x c" to
"COMPILE.post".
* gnu-nat.c: #include Mach/Hurd headers before all others.  Wrap
Mach/Hurd headers and MIG stubs' prototypes in 'extern "C"'.
* i386-gnu-nat.c: Likewise.

7 years agoHurd, C++: kern_return_t vs. error_t
Thomas Schwinge [Fri, 25 Nov 2016 10:02:17 +0000 (11:02 +0100)]
Hurd, C++: kern_return_t vs. error_t

GNU/Hurd uses its own "typedef enum __error_t_codes error_t;"
([glibc]/sysdeps/mach/hurd/bits/errno.h), contrary to the default
"typedef int error_t;" ([glibc]/stdlib/errno.h).

The Mach/Hurd RPCs return kern_return_t values, for which, upon assigning them
to an error_t variable, GCC in C++ mode tells us "error: invalid conversion
from 'kern_return_t {aka int}' to 'error_t {aka __error_t_codes}'".  Instead of
casting all these RPC return values to "error_t", just use "kern_return_t"
variables:

gdb/
* gnu-nat.c (proc_get_exception_port, proc_set_exception_port)
(INF_RESUME_MSGPORT_RPC, proc_get_state, _proc_get_exc_port)
(proc_steal_exc_port, proc_restore_exc_port, make_proc)
(inf_startup, inf_set_pid, inf_validate_procinfo)
(inf_validate_task_sc, inf_set_traced, inf_validate_procs)
(inf_signal, inf_continue, gnu_wait, S_exception_raise_request)
(do_mach_notify_dead_name, S_proc_wait_reply)
(S_msg_sig_post_untraced_reply, S_msg_sig_post_reply)
(port_msgs_queued, gnu_read_inferior, gnu_write_inferior)
(gnu_find_memory_regions, steal_exc_port, thread_takeover_sc_cmd)
(flush_inferior_icache): Instead of "error_t" use "kern_return_t".
* i386-gnu-nat.c (fetch_fpregs, store_fpregs, i386_gnu_dr_get)
(i386_gnu_dr_set): Likewise.

7 years agoHurd, C++: Avoid "const char *" to "char *" casts
Thomas Schwinge [Fri, 25 Nov 2016 14:16:13 +0000 (15:16 +0100)]
Hurd, C++: Avoid "const char *" to "char *" casts

... by a bit of code refactoring:

gdb/
* gnu-nat.c (set_task_pause_cmd, set_signals_cmd)
(set_exceptions_cmd): Add variants taking an "int arg" instead of
a "char *".  Make the "char *" variants use the former.
(set_noninvasive_cmd): Also use the "int arg" variants.

7 years agoHurd, C++: Avoid GNU C nested functions
Thomas Schwinge [Fri, 25 Nov 2016 13:56:01 +0000 (14:56 +0100)]
Hurd, C++: Avoid GNU C nested functions

..., which C++ doesn't allow, so...

gdb/
* gnu-nat.c (gnu_create_inferior): Move nested "trace_me"
function...
(gnu_ptrace_me): ... here.

7 years agoHurd, C++: Explicitly cast "void *"
Thomas Schwinge [Fri, 25 Nov 2016 10:01:39 +0000 (11:01 +0100)]
Hurd, C++: Explicitly cast "void *"

C++ doesn't do implicit type conversions from "void *", so we have to...

gdb/
* i386-gnu-nat.c (i386_gnu_dr_set_control_one)
(i386_gnu_dr_set_addr_one): Explicitly cast "void *".

7 years agoAutomatic date update in version.in
GDB Administrator [Thu, 8 Dec 2016 00:00:27 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoHurd: Adjust to "Per-inferior/Inferior-qualified thread IDs" changes
Thomas Schwinge [Tue, 24 May 2016 17:36:57 +0000 (19:36 +0200)]
Hurd: Adjust to "Per-inferior/Inferior-qualified thread IDs" changes

    [...]/gdb/gnu-nat.c: In function 'set_sig_thread_cmd':
    [...]/gdb/gnu-nat.c:2973:7: warning: implicit declaration of function 'thread_id_to_pid' [-Wimplicit-function-declaration]
           ptid_t ptid = thread_id_to_pid (atoi (args));
           ^
    [...]/gdb/gnu-nat.c:2973:7: error: invalid initializer

That's commit 5d5658a1d3c3eb2a09c03f2f0662a1c01963c869, which renamed
`thread_id_to_pid` to `global_thread_id_to_ptid`.

gdb/
* gnu-nat.c (set_sig_thread_cmd): Call global_thread_id_to_ptid
instead of thread_id_to_pid.

7 years agoMIPS/include: opcode/mips.h: Correct INSN_CHIP_MASK
Maciej W. Rozycki [Wed, 7 Dec 2016 03:12:50 +0000 (03:12 +0000)]
MIPS/include: opcode/mips.h: Correct INSN_CHIP_MASK

Complement commit e407c74b5b60 ("Support for MIPS R5900 (Sony Playstation
2)"), <https://sourceware.org/ml/binutils/2012-12/msg00240.html>, and
commit 2c62985659da ("MIPS: Add Octeon 3 support") and update the chip
mask accordingly.

include/
* opcode/mips.h (INSN_CHIP_MASK): Update according to bit use.

7 years agoMIPS/opcodes: Correct an `interaction' comment typo
Maciej W. Rozycki [Wed, 7 Dec 2016 02:55:27 +0000 (02:55 +0000)]
MIPS/opcodes: Correct an `interaction' comment typo

opcodes/
* mips-dis.c (print_mips16_insn_arg): Fix comment typo.

7 years agoMIPS16/opcodes: Update opcode table comment
Maciej W. Rozycki [Wed, 7 Dec 2016 02:53:03 +0000 (02:53 +0000)]
MIPS16/opcodes: Update opcode table comment

opcodes/
* mips16-opc.c (mips16_opcodes): Update comment naming structure
members.

7 years agoMIPS/opcodes: Reformat `-M' disassembler option's help text
Maciej W. Rozycki [Wed, 7 Dec 2016 02:35:33 +0000 (02:35 +0000)]
MIPS/opcodes: Reformat `-M' disassembler option's help text

Align output produced consistently and fix other formatting issues.

opcodes/
* mips-dis.c (print_mips_disassembler_options): Reformat output.

7 years agoMIPS/include: opcode/mips.h: Add a comment for ASE_DSPR3
Maciej W. Rozycki [Wed, 7 Dec 2016 02:27:57 +0000 (02:27 +0000)]
MIPS/include: opcode/mips.h: Add a comment for ASE_DSPR3

Complement commit 8f4f9071ad5f ("Add MIPS32 DSPr3 support.").

include/
* opcode/mips.h (ASE_DSPR3): Add a comment.

7 years agoMIPS/GAS: Use local `isa' consistently in `is_opcode_valid'
Maciej W. Rozycki [Wed, 7 Dec 2016 02:24:18 +0000 (02:24 +0000)]
MIPS/GAS: Use local `isa' consistently in `is_opcode_valid'

Replace a global `mips_opts.isa' reference in `is_opcode_valid' and use
a local copy just made in `isa'.  No functional change.

gas/
* config/tc-mips.c (is_opcode_valid): Use local `isa'
consistently.

7 years agoFix internal error in the linker by replacing a call to abort with an error message.
Nick Clifton [Wed, 7 Dec 2016 10:19:42 +0000 (10:19 +0000)]
Fix internal error in the linker by replacing a call to abort with an error message.

PR ld/20932
* elflink.c (bfd_elf_record_link_assignment): Replace call to
abort with an error message and error return value.

7 years ago[GOLD] PowerPC --stub-group-multi
Alan Modra [Wed, 7 Dec 2016 03:45:59 +0000 (14:15 +1030)]
[GOLD] PowerPC --stub-group-multi

Adds a new option, defaulting to off, that allows a group of stubs to
serve multiple output sections.  Prior to this patch powerpc gold
allowed this unconditionally, which is a little unsafe with clever
code that discards/reuses sections at runtime.

* options.h (--stub-group-multi): New PowerPC option.
* powerpc.cc (Stub_control): Add multi_os_ var and param
to constructor.  Sort start_ var later.  Comment State.
(Stub_control::can_add_to_stub_group): Heed multi_os_.
(Target_powerpc::group_sections): Update.

7 years ago[GOLD] powerpc64le-linux fails to link large Linux kernel
Alan Modra [Wed, 7 Dec 2016 03:42:26 +0000 (14:12 +1030)]
[GOLD] powerpc64le-linux fails to link large Linux kernel

Gold attaches stubs to an existing section in contrast to ld.bfd which
inserts a new section for stubs.  If we want stubs before branches,
then the stubs must be added to the previous section.  Adding to the
previous section is a disaster if there is a large gap between the
previous section and the group.

PR gold/20878
* powerpc.cc (Stub_control): Replace stubs_always_before_branch_
with stubs_always_after_branch_, group_end_addr_ with
group_start_addr_.
(Stub_control::can_add_to_stub_group): Rewrite to suit scanning
sections by increasing address.
(Target_powerpc::group_sections): Scan that way.  Delete corner
case.
* options.h (--stub-group-size): Update help string.

7 years ago[GOLD] PowerPC stub debug
Alan Modra [Wed, 7 Dec 2016 03:41:57 +0000 (14:11 +1030)]
[GOLD] PowerPC stub debug

Some more debug output, and a little hardening.

* powerpc.cc (Stub_table_owner): Provide constructor.
(Powerpc_relobj::set_stub_table): Resize fill with -1.
(Target_powerpc::Branch_info::make_stub): Provide target debug
output on returning false.

7 years agoAutomatic date update in version.in
GDB Administrator [Wed, 7 Dec 2016 00:00:19 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoRemove unnecessary inferior lookup in inferior_command
Simon Marchi [Tue, 6 Dec 2016 21:19:33 +0000 (16:19 -0500)]
Remove unnecessary inferior lookup in inferior_command

In the case where we switch to a non-running inferior, we do a
"find_inferior_id (num)", although we did the same call right before.

gdb/ChangeLog:

* inferior.c (inferior_command): Remove duplicate
find_inferior_id call.

7 years agoFix seg-fault in strip when copying a corrupt binary.
Nick Clifton [Tue, 6 Dec 2016 16:53:57 +0000 (16:53 +0000)]
Fix seg-fault in strip when copying a corrupt binary.

PR binutils/20931
* elf.c (copy_special_section_fields): Check for an invalid
sh_link field before attempting to follow it.

7 years agoFix seg-fault running strip on a corrupt binary.
Nick Clifton [Tue, 6 Dec 2016 16:26:42 +0000 (16:26 +0000)]
Fix seg-fault running strip on a corrupt binary.

PR binutils/20930
* objcopy.c (mark_symbols_used_in_relocations): Check for a null
symbol pointer pointer before attempting to mark the symbol as
kept.

7 years agoFix seg-fault running strip on a corrupt binary.
Nick Clifton [Tue, 6 Dec 2016 15:58:15 +0000 (15:58 +0000)]
Fix seg-fault running strip on a corrupt binary.

PR binutils/20929
* aoutx.h (squirt_out_relocs): Check for relocs without an
associated symbol.

7 years agofix typo
Nick Clifton [Tue, 6 Dec 2016 15:34:33 +0000 (15:34 +0000)]
fix typo

7 years agoStop the assembler from running out of memory when asked to generate a huge number...
Nick Clifton [Tue, 6 Dec 2016 15:31:14 +0000 (15:31 +0000)]
Stop the assembler from running out of memory when asked to generate a huge number of spaces.

PR gas/20901
* read.c (s_space): Place an upper limit on the number of spaces
generated.

7 years agoAssert on lval_register
Yao Qi [Tue, 6 Dec 2016 14:25:51 +0000 (14:25 +0000)]
Assert on lval_register

This patch adds asserts where the value's lval must be lval_register.
This triggers an error in frame_register_unwind because VALUE_REGNUM
is used but value's lval is not lval_register.

This also reveals a design issue in frame_register_unwind, that is
arguments addrp and realnump are mutually exclusive, we either use
addrp (for lval_memory), or use realnump (for lval_register).  This
can be done in a separate patch.

gdb:

2016-12-06  Yao Qi  <yao.qi@linaro.org>

* frame.c (frame_register_unwind): Set *realnump if *lvalp is
lval_register.
* value.c (deprecated_value_next_frame_id_hack): Assert
value->lval is lval_register.
(deprecated_value_regnum_hack): Likewise.

7 years agoFix mmix assembler test to account for changes in the error messages produced by...
Nick Clifton [Tue, 6 Dec 2016 14:13:57 +0000 (14:13 +0000)]
Fix mmix assembler test to account for changes in the error messages produced by the assembler.

PR gas/20896
* testsuite/gas/mmix/err-byte1.s: Adjust expected warning messages
to account for patch to next_char_of_string.

7 years agoPowerPC64 toc optimisation for power9
Alan Modra [Tue, 6 Dec 2016 05:36:14 +0000 (16:06 +1030)]
PowerPC64 toc optimisation for power9

Recognize power9 and a few other insns from older machines.  Fixes
linker complaints like "toc optimization is not supported for
0xf4090002 instruction".  0xf4090002 is stxsd v0,0(r9)

bfd/
* elf64-ppc.c (ok_lo_toc_insn): Add r_type param.  Recognize
lq,lfq,lxv,lxsd,lxssp,lfdp,stq,stfq,stxv,stxsd,stxssp,stfdp.
Don't match lmd and stmd.
ld/
* testsuite/ld-powerpc/tocopt7.s,
* testsuite/ld-powerpc/tocopt7.out,
* testsuite/ld-powerpc/tocopt7.d: New test.
* testsuite/ld-powerpc/tocopt8.s,
* testsuite/ld-powerpc/tocopt8.d: New test.
* testsuite/ld-powerpc/powerpc.exp: Run them.

7 years agoargv.c (expandargv): Check for directories passed as @-files.
DJ Delorie [Tue, 6 Dec 2016 06:40:44 +0000 (01:40 -0500)]
argv.c (expandargv): Check for directories passed as @-files.

gcc pr 78584

7 years agoAutomatic date update in version.in
GDB Administrator [Tue, 6 Dec 2016 00:00:23 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoFix gold/testsuite/file_in_many_sections_test.sh file mode
Alan Modra [Mon, 5 Dec 2016 21:23:51 +0000 (07:53 +1030)]
Fix gold/testsuite/file_in_many_sections_test.sh file mode

chmod a+x

7 years agoFix problem where absolute local symbols are omitted when output has many sections.
Cary Coutant [Mon, 5 Dec 2016 18:41:09 +0000 (10:41 -0800)]
Fix problem where absolute local symbols are omitted when output has many sections.

2016-12-05  Cary Coutant  <ccoutant@gmail.com>
            Tristan Gingold  <gingold@adacore.com>

gold/
* object.cc (Sized_relobj_file::do_count_local_symbols): Check
is_ordinary before using shndx.
* testsuite/Makefile.am (file_in_many_sections_test.sh): New test case.
* testsuite/Makefile.in: Regenerate.
* testsuite/file_in_many_sections.c: New source file.
* testsuite/file_in_many_sections_test.sh: New script.

7 years agoFix fault in assembler when passed a bogus input file.
Nick Clifton [Mon, 5 Dec 2016 17:36:45 +0000 (17:36 +0000)]
Fix fault in assembler when passed a bogus input file.

PR gas/20902
* read.c (next_char_of_string): Do end advance past the end of the
buffer.

7 years agoFix ICE in assembler when passed a bogus input file.
Nick Clifton [Mon, 5 Dec 2016 16:54:59 +0000 (16:54 +0000)]
Fix ICE in assembler when passed a bogus input file.

PR gas/20904
* as.h (SKIP_ALL_WHITESPACE): New macro.
* expr.c (operand): Use it.

7 years agoFix seg-fault in the binutils utilities when reading a corrupt input file.
Nick Clifton [Mon, 5 Dec 2016 16:34:45 +0000 (16:34 +0000)]
Fix seg-fault in the binutils utilities when reading a corrupt input file.

PR binutils/20905
* peicode.h (pe_ILF_object_p): Use strnlen to avoid running over
the end of the string buffer.

7 years agoFix seg-fault in linker when passed a bogus input script.
Nick Clifton [Mon, 5 Dec 2016 16:00:43 +0000 (16:00 +0000)]
Fix seg-fault in linker when passed a bogus input script.

PR ld/20906
* ldlex.l: Check for bogus strings in linker scripts.

7 years agobinutils: add myself to MAINTAINERS
Jose E. Marchesi [Mon, 5 Dec 2016 15:57:53 +0000 (16:57 +0100)]
binutils: add myself to MAINTAINERS

2016-12-05  Jose E. Marchesi  <jose.marchesi@oracle.com>

* MAINTAINERS: Add myself as maintainer for the SPARC targets.

7 years agoFix abort when running tools on a bogus binary.
Nick Clifton [Mon, 5 Dec 2016 14:59:02 +0000 (14:59 +0000)]
Fix abort when running tools on a bogus binary.

PR binutils/20907
* peicode.h (pe_ILF_build_a_bfd): Replace abort with error return.

7 years agoFix seg-fault running strip on a corrupt binary.
Nick Clifton [Mon, 5 Dec 2016 14:32:30 +0000 (14:32 +0000)]
Fix seg-fault running strip on a corrupt binary.

PR binutils/20921
* aoutx.h (squirt_out_relocs): Check for and report any relocs
that could not be recognised.

7 years ago[ARM] Add ARMv8.3 VCMLA and VCADD instructions
Szabolcs Nagy [Mon, 5 Dec 2016 14:24:17 +0000 (14:24 +0000)]
[ARM] Add ARMv8.3 VCMLA and VCADD instructions

Add support for VCMLA and VCADD advanced SIMD complex number instructions.

The command line option is -march=armv8.3-a+fp16+simd for enabling all
instructions.

In arm-dis.c the formatting syntax was abused a bit to select between
0 vs 90 or 180 vs 270 or 90 vs 270 based on a bit value instead of
duplicating entries in the opcode table.

gas/
* config/tc-arm.c (do_vcmla, do_vcadd): Define.
(neon_scalar_for_vcmla): Define.
(enum operand_parse_code): Add OP_IROT1 and OP_IROT2.
(NEON_ENC_TAB): Add DDSI and QQSI variants.
(insns): Add vcmla and vcadd.
* testsuite/gas/arm/armv8_3-a-simd.d: New.
* testsuite/gas/arm/armv8_3-a-simd.s: New.
* testsuite/gas/arm/armv8_3-a-simd-bad.d: New.
* testsuite/gas/arm/armv8_3-a-simd-bad.l: New.
* testsuite/gas/arm/armv8_3-a-simd-bad.s: New.

opcodes/
* arm-dis.c (coprocessor_opcodes): Add vcmla and vcadd.
(print_insn_coprocessor): Add 'V' format for neon D or Q regs.

7 years ago[ARC] Don't check extAuxRegister second argument for sign.
Claudiu Zissulescu [Mon, 5 Dec 2016 14:09:48 +0000 (15:09 +0100)]
[ARC] Don't check extAuxRegister second argument for sign.

gas/
2016-12-05  Claudiu Zissulescu  <claziss@synopsys.com>

* testsuite/gas/arc/textauxregister-1.d: New file.
* testsuite/gas/arc/textauxregister-1.s: Likewise.
* testsuite/gas/arc/textcondcode-err.s: Likewise.
* testsuite/gas/arc/textcoreregister-err.s: Likewise.
* config/tc-arc.c (tokenize_extregister): Return bfd_boolean,
don't check second argument of extension auxiliary register for
signess.
(arc_extcorereg): Consider the return of tokenize_extregister
function call.

7 years ago[ARM] Add ARMv8.3 VJCVT instruction
Szabolcs Nagy [Mon, 5 Dec 2016 14:13:27 +0000 (14:13 +0000)]
[ARM] Add ARMv8.3 VJCVT instruction

Add support for VJCVT javascript conversion instruction.

gas/
* config/tc-arm.c (arm_ext_v8_3, do_vjcvt): Define.
(insns): Add vjcvt.
* testsuite/gas/aarch64/armv8_3-a-fp.s: New.
* testsuite/gas/aarch64/armv8_3-a-fp.d: New.
* testsuite/gas/aarch64/armv8_3-a-fp-bad.s: New.
* testsuite/gas/aarch64/armv8_3-a-fp-bad.d: New.
* testsuite/gas/aarch64/armv8_3-a-fp-bad.l: New.

opcodes/
* arm-dis.c (coprocessor_opcodes): Add vjcvt.

7 years ago[ARM] Add ARMv8.3 command line option and feature flag
Szabolcs Nagy [Mon, 5 Dec 2016 14:07:25 +0000 (14:07 +0000)]
[ARM] Add ARMv8.3 command line option and feature flag

ARMv8.3 is an architectural extension of ARMv8.  Add the
feature macro and -march=armv8.3-a gas command line option
for the ARM target.

https://community.arm.com/groups/processors/blog/2016/10/27/armv8-a-architecture-2016-additions

gas/
* config/tc-arm.c (arm_archs): Add "armv8.3-a".
* doc/c-arm.texi (-march): Add "armv8.3-a".

include/
* opcode/arm.h (ARM_EXT2_V8_3A, ARM_AEXT2_V8_3A): New.
(ARM_ARCH_V8_3A): New.

7 years agobfd,ld: Continue after partially-successful relaxed call relocations in sparc.
Alyssa Milburn [Mon, 5 Dec 2016 06:59:18 +0000 (22:59 -0800)]
bfd,ld: Continue after partially-successful relaxed call relocations in sparc.

bfd/ChangeLog:

2016-12-05  Alyssa Milburn <amilburn@zall.org>

   * elfxx-sparc.c: Do not stop processing relocations after
     partially relaxing a call with WDISP30.

ld/ChangeLog:

2016-12-05  Alyssa Milburn <amilburn@zall.org>

* testsuite/ld-sparc/wdispcall.s: New file.
     * testsuite/ld-sparc/wdispcall.dd: Likewise.
     * testsuite/ld-sparc/sparc.exp: Run new test.

7 years agoFix seg-fault attempting to strip a corrupt binary.
Nick Clifton [Mon, 5 Dec 2016 13:35:50 +0000 (13:35 +0000)]
Fix seg-fault attempting to strip a corrupt binary.

PR binutils/20922
* elf.c (find_link): Check for null headers before attempting to
match them.

7 years agoFix seg-fault running strip on a corrupt binary.
Nick Clifton [Mon, 5 Dec 2016 13:11:01 +0000 (13:11 +0000)]
Fix seg-fault running strip on a corrupt binary.

PR ld/20923
* objcopy.c (mark_symbols_used_in_relocations): Check for a null
symbol pointer before attempting to mark the symbol as kept.

7 years agoFix seg-fault in linker parsing a corrupt input file.
Nick Clifton [Mon, 5 Dec 2016 12:25:34 +0000 (12:25 +0000)]
Fix seg-fault in linker parsing a corrupt input file.

PR ld/20924
(aout_link_add_symbols): Fix off by one error checking for
overflow of string offset.

7 years agoFix assertion failure in linker triggered by corrupt input file.
Nick Clifton [Mon, 5 Dec 2016 12:14:22 +0000 (12:14 +0000)]
Fix assertion failure in linker triggered by corrupt input file.

PR ld/20925
* aoutx.h (aout_link_add_symbols): Replace BFD_ASSERT with return
FALSE.

7 years agofix typo
Nick Clifton [Mon, 5 Dec 2016 11:25:26 +0000 (11:25 +0000)]
fix typo

7 years agoAutomatic date update in version.in
GDB Administrator [Mon, 5 Dec 2016 00:00:22 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoFix bugs with tbnz/tbz instructions.
Jim Wilson [Sun, 4 Dec 2016 01:29:44 +0000 (17:29 -0800)]
Fix bugs with tbnz/tbz instructions.

sim/aarch64
* simulator.c (tbnz, tbz): Cast 1 to uint64_t before shifting.
(dexTestBranchImmediate): Shift high bit of pos by 5 not 4.

7 years agoAutomatic date update in version.in
GDB Administrator [Sun, 4 Dec 2016 00:00:23 +0000 (00:00 +0000)]
Automatic date update in version.in