external/binutils.git
7 years ago[AArch64] Optimize .gnu.hash table size for executable
Jiong Wang [Fri, 20 Jan 2017 13:30:32 +0000 (13:30 +0000)]
[AArch64] Optimize .gnu.hash table size for executable

bfd/
* elfnn-aarch64.c (elf_aarch64_hash_symbol): New function.
(elf_backend_hash_symbol): Define.

ld/
* testsuite/ld-aarch64/aarch64-elf.exp (aarch64elflinktests): New tests.
* testsuite/ld-aarch64/func-in-so.s: New test source file.
* testsuite/ld-aarch64/func-sym-hash-opt.s: Likewise.
* testsuite/ld-aarch64/func-sym-hash-opt.d: New expected test result.

7 years agoUpdated Irish translation for the opcodes library.
Nick Clifton [Fri, 20 Jan 2017 12:25:07 +0000 (12:25 +0000)]
Updated Irish translation for the opcodes library.

* po/ga.po: Updated Irish translation.

7 years agoFix potential array overrun in x86 assembler.
Nick Clifton [Fri, 20 Jan 2017 10:32:25 +0000 (10:32 +0000)]
Fix potential array overrun in x86 assembler.

* config/tc-i386.c (parse_operands): Check for operand overflow
before setting the unspecified bit.

7 years agoFix problem in aarch64 gold sources uncovered by Coverty - using sizeof on a pointer...
Nick Clifton [Fri, 20 Jan 2017 10:21:17 +0000 (10:21 +0000)]
Fix problem in aarch64 gold sources uncovered by Coverty - using sizeof on a pointer instead of an array.

* aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS
        from a pointer to an array.

7 years agoSync zlib sources with GCC, upgrading to 1.2.10.
Nick Clifton [Fri, 20 Jan 2017 10:17:42 +0000 (10:17 +0000)]
Sync zlib sources with GCC, upgrading to 1.2.10.

Changes in 1.2.10 (2 Jan 2017)
- Avoid warnings on snprintf() return value
- Fix bug in deflate_stored() for zero-length input
- Fix bug in gzwrite.c that produced corrupt gzip files
- Remove files to be installed before copying them in Makefile.in
- Add warnings when compiling with assembler code

Changes in 1.2.9 (31 Dec 2016)
- Fix contrib/minizip to permit unzipping with desktop API [Zouzou]
- Improve contrib/blast to return unused bytes
- Assure that gzoffset() is correct when appending
- Improve compress() and uncompress() to support large lengths
- Fix bug in test/example.c where error code not saved
- Remedy Coverity warning [Randers-Pehrson]
- Improve speed of gzprintf() in transparent mode
- Fix inflateInit2() bug when windowBits is 16 or 32
- Change DEBUG macro to ZLIB_DEBUG
- Avoid uninitialized access by gzclose_w()
- Allow building zlib outside of the source directory
- Fix bug that accepted invalid zlib header when windowBits is zero
- Fix gzseek() problem on MinGW due to buggy _lseeki64 there
- Loop on write() calls in gzwrite.c in case of non-blocking I/O
- Add --warn (-w) option to ./configure for more compiler warnings
- Reject a window size of 256 bytes if not using the zlib wrapper
- Fix bug when level 0 used with Z_HUFFMAN or Z_RLE
- Add --debug (-d) option to ./configure to define ZLIB_DEBUG
- Fix bugs in creating a very large gzip header
- Add uncompress2() function, which returns the input size used
- Assure that deflateParams() will not switch functions mid-block
- Dramatically speed up deflation for level 0 (storing)
- Add gzfread(), duplicating the interface of fread()
- Add gzfwrite(), duplicating the interface of fwrite()
- Add deflateGetDictionary() function
- Use snprintf() for later versions of Microsoft C
- Fix *Init macros to use z_ prefix when requested
- Replace as400 with os400 for OS/400 support [Monnerat]
- Add crc32_z() and adler32_z() functions with size_t lengths
- Update Visual Studio project files [AraHaan]

7 years agoobjdump: Better objdump section headers in wide mode
Andrew Burgess [Wed, 28 Dec 2016 13:22:44 +0000 (13:22 +0000)]
objdump: Better objdump section headers in wide mode

When displaying the section headers table using objdump (-h), the column
containing the section header name is currently fixed at 13 characters.
A section name that is longer than 13 characters will overflow the
column causing the table to become miss-aligned.

In this commit I change the behaviour so that _in wide mode_ (-w -h) the
section name column is dynamically resized to fit the longest section
name we plan to display.  In wide mode the column still retains a
minimum width of 13 characters.

In non-wide more the behaviour is completely unchanged.

While I was changing the dump_headers function I have unified the two
printf lines that handled the different address widths into a single
printf, the address width is now passed into printf using the '*' field
width format character.

binutils/ChangeLog:

* objdump.c (dump_section_header): Extract max section name length
from data parameter, use this when formatting output.
(find_longest_section_name): New function.
(dump_headers): Calculate longest section name when in wide mode,
reformat to unify printing of header line.

ld/ChangeLog:

* testsuite/ld-elf/eh-frame-hdr.d: Update expected results.

7 years agofix gdbserver build in nat/linux-ptrace.c on arm-android
Joel Brobecker [Tue, 17 Jan 2017 12:08:02 +0000 (13:08 +0100)]
fix gdbserver build in nat/linux-ptrace.c on arm-android

The following change replaced an include of gregset.h by
an include of <sys/procfs.h>:

    commit 39b22471578843019026c50fcdbe0483a6045970
    Date:   Thu Aug 11 12:01:22 2016 +0100
    Subject: Fix fallout from gdb/20413's fix
             (x32: linux_ptrace_test_ret_to_nx: Cannot PTRACE_PEEKUSER)

Unfortunately, this broke gdbserver on Android, because that file
does not exist on this platform.  This patch fixes the issue by
conditionalizing its include with HAVE_SYS_PROCFS_H (which we check
both in gdb/configure and gdbserver/configure).

gdb/ChangeLog:

        * nat/linux-ptrace.c: Only include <sys/procfs.h> if
        HAVE_SYS_PROCFS_H is defined.

Tested by rebuilding gdbserver on arm-android and GNU/Linux.

7 years agoAutomatic date update in version.in
GDB Administrator [Fri, 20 Jan 2017 00:00:39 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoAutomatic date update in version.in
GDB Administrator [Thu, 19 Jan 2017 00:00:31 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoPR ld/20995: MIPS: Set GAS flags correctly for tests
Maciej W. Rozycki [Wed, 18 Jan 2017 18:07:58 +0000 (18:07 +0000)]
PR ld/20995: MIPS: Set GAS flags correctly for tests

Complement commit 9acc85a62eb7 ("Use dynrelro for symbols in relro
sections too").

ld/
PR ld/20995
* testsuite/ld-elf/elf.exp: Set GAS flags correctly for the
`mips*-*-*' target and `pr20995' and `pr20995-2' tests.

7 years agoPR ld/20828: Fix linker script symbols wrongly forced local with section GC
Maciej W. Rozycki [Mon, 16 Jan 2017 22:10:57 +0000 (22:10 +0000)]
PR ld/20828: Fix linker script symbols wrongly forced local with section GC

Fix a generic ELF linker regression introduced with a chain of changes
made to unused input section garbage collection:

- commit 1a766c6843ce ("Also hide symbols without PLT nor GOT
  references."),
  <https://sourceware.org/ml/binutils/2011-09/msg00076.html>,

- commit 1d5316ab67e1 ("PR ld/13177: garbage collector retains zombie
  references to external libraries"),
  <https://sourceware.org/ml/binutils/2011-10/msg00161.html>,

- commit 6673f753c019 ("Fix PR 12772, garbage collection of dynamic
  syms"), <https://sourceware.org/ml/binutils/2011-12/msg00077.html>,

causing the garbage collection of unused symbols present in a DSO
involved in a link to make identically named symbols ordinarily defined
(i.e. not hidden or PROVIDEd) by a linker script local, even though the
latter symbols are supposed to be global as if no DSO defined them as
well.

This is because linker script assignments are processed very late as
`lang_process' proceeds, down in the call to `ldemul_before_allocation',
which is made after the call to `lang_gc_sections' to do input section
garbage collecting.  Consequently if unused, then any such DSO-defined
symbol has already been garbage-collected and internally marked local.
It would ordinarily be removed from dynamic symbol table output, however
a linker script assignment correctly replaces its original definition
with the new one and enters it into the dynamic symbol table produced as
it is supposed to be exported.  The original local marking is however
retained making the symbol local in the dynamic symbol table and
therefore not available externally.  This also causes a sorting problem
with the MIPS target, which does not expect non-section local dynamic
symbols to be output and produces an invalid binary.

Fix the problem then, by removing the `forced_local' marking for the
offending case and add suitable test cases.  First to verify that unused
symbols ordinarily defined with linker script assignments remain
exported in the context of input section garbage collection whether or
not a DSO defining identically named symbols is present in the link.
Second that a linker version script still correctly retains or removes
such symbols as requested.

bfd/
PR ld/20828
* elflink.c (bfd_elf_record_link_assignment): Clear any
`forced_local' marking for DSO symbols that are not being
provided.

ld/
PR ld/20828
* testsuite/ld-elf/pr20828-1.sd: New test.
* testsuite/ld-elf/pr20828-2a.sd: New test.
* testsuite/ld-elf/pr20828-2b.sd: New test.
* testsuite/ld-elf/pr20828.ld: New test linker script.
* testsuite/ld-elf/pr20828.ver: New test version script.
* testsuite/ld-elf/pr20828.s: New test source.
* testsuite/ld-elf/shared.exp: Run the new test.

7 years agoPR gas/20649: MIPS: Fix GOT16/LO16 reloc pairing with comdat sections
Maciej W. Rozycki [Wed, 18 Jan 2017 18:18:21 +0000 (18:18 +0000)]
PR gas/20649: MIPS: Fix GOT16/LO16 reloc pairing with comdat sections

Correct a regression from commit 8614eeee67f9 ("Traditional MIPS
patches"), <https://sourceware.org/ml/binutils/2000-07/msg00018.html>,
which caused symbols in linkonce or what is these days known as comdat
sections to be treated as external for the purpose of PIC relocation
generation even if their binding remains STB_LOCAL.  This in turn
disabled GOT16/LO16 relocation pairing with references to such symbols,
as no complementing LO16 relocation is expected for external GOT16
references in the o32 ABI, which ultimately leads to link errors, e.g.:

ld: comdat-reloc.o: Can't find matching LO16 reloc against `foo' for R_MIPS_GOT16 at 0x24 in section `.text.bar[bar]'

as with the LD test case included with this change.

Revert the special case for symbols in comdat sections then, making code
actually match `adjust_reloc_syms' as indicated in its explanatory
comment, and adjust calling code accordingly.  Also bring back the
corresponding description of what now is `s_is_linkonce', lost with
commit 5f0fe04bc550 ("Improved MIPS16/MIPS32 code intermixing for
gas."), <https://www.sourceware.org/ml/binutils/2006-07/msg00039.html>.

gas/
PR gas/20649
* config/tc-mips.c (pic_need_relax): Don't check for linkonce
symbols, remove the `segtype' parameter.
(mips_frob_file, md_estimate_size_before_relax): Adjust
accordingly.
(s_is_linkonce): Add an explanatory comment.
* testsuite/gas/mips/comdat-reloc.d: New test.
* testsuite/gas/mips/comdat-reloc.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new test.

ld/
PR gas/20649
* testsuite/ld-mips-elf/mips-elf.exp: Add PIC comdat GOT16/LO16
relocation pairing link test.

7 years ago[ARM] Fix the decoding of indexed element VCMLA instruction
Szabolcs Nagy [Wed, 18 Jan 2017 17:08:34 +0000 (17:08 +0000)]
[ARM] Fix the decoding of indexed element VCMLA instruction

Bit 24 of the indexed element vcmla decode mask was incorrectly
left unset.  This could cause incorrect disassembly of some
currently undefined instructions as vcmla.

Rotatation immediates were not printed correctly in the disassembly
(could print 170 and 280 instead of 180 and 270).

opcodes/
* arm-dis.c (coprocessor_opcodes): Fix vcmla mask and disassembly.

gas/
* testsuite/gas/arm/armv8_3-a-simd.s: Add vcmla tests.
* testsuite/gas/arm/armv8_3-a-simd.d: Update.

7 years agoAllocate data in cached_reg_t
Alan Hayward [Wed, 18 Jan 2017 15:15:50 +0000 (15:15 +0000)]
Allocate data in cached_reg_t

2017-01-18  Alan Hayward  <alan.hayward@arm.com>

* remote.c (struct cached_reg): Change data into a pointer.
* (stop_reply_dtr): Free data pointers before deleting vector.
(process_stop_reply): Likewise.
(remote_parse_stop_reply): Allocate space for data

7 years agoUse register_size () instead of MAX_REGISTER_SIZE
Alan Hayward [Wed, 18 Jan 2017 11:23:02 +0000 (11:23 +0000)]
Use register_size () instead of MAX_REGISTER_SIZE

2017-01-18  Alan Hayward  <alan.hayward@arm.com>

* amd64-tdep.c (amd64_pseudo_register_read_value): remove
MAX_REGISTER_SIZE.
(amd64_pseudo_register_read_value): Likewise.
* remote.c (fetch_register_using_p): Remove MAX_REGISTER_SIZE.
(store_register_using_P): Likewise.
* regcache.c (regcache_xfer_part): Likewise.

7 years agoAdd support for processing lex source files with flex v 2.6.3
Bernhard Rosenkranzer [Wed, 18 Jan 2017 13:38:27 +0000 (13:38 +0000)]
Add support for processing lex source files with flex v 2.6.3

PR 21059
binutils* arlex.l: Support processing with flex 2.6.3.
* deflex.l: Likewise.

gas * config/bfin-lex.l: Support processing with flex 2.6.3.
* itbl-lex.l: Likewise.

7 years agoCatch gas exit-via-signal
Nathan Sidwell [Wed, 18 Jan 2017 13:23:10 +0000 (08:23 -0500)]
Catch gas exit-via-signal

gas/
* as.h (gas_assert): Use abort.
(as_assert): Remove.
(signal_init): Declare.
* as.c (main): Call signal_init.
* messages.c: #include <signal.h>
(as_assert): Delete.
(as_abort): Allow NULL FILE.
(signal_crash): New.
(signal_init): Register fatal signal handlers.
* configure.ac: Check for strsignal.
* config.in: Rebuilt.
* configure: Rebuilt.

7 years agoSkip linker tests for unique symbols in shared libraries if the target does not suppo...
Dimitar Dimitrov [Wed, 18 Jan 2017 12:23:19 +0000 (12:23 +0000)]
Skip linker tests for unique symbols in shared libraries if the target does not support building shared libraries.

ld * testsuite/ld-unique/unique.exp: Filter shared lib cases in
uniqeue.exp, as not all targets have such support.

7 years agoStop the (optional) dialong control data from being aligned when parsing/writing...
Dmitry Timoshkov [Wed, 18 Jan 2017 11:40:06 +0000 (11:40 +0000)]
Stop the (optional) dialong control data from being aligned when parsing/writing windows resource files.

binutils* resbin.c: Optional dialog control data immediately follow
the control description without alignment.
* testsuite/binutils-all/windres/controldata.rc: New test.
source.
* testsuite/binutils-all/windres/controldata.rsd: New test.

7 years agoUpdated Swedish translation for GAS.
Nick Clifton [Wed, 18 Jan 2017 11:35:29 +0000 (11:35 +0000)]
Updated Swedish translation for GAS.

7 years agoFixes for addv and xtn2 instructions.
Jim Wilson [Wed, 18 Jan 2017 00:01:40 +0000 (16:01 -0800)]
Fixes for addv and xtn2 instructions.

sim/aarch64/
* simulator.c (do_vec_ADDV): Call aarch64_set_vec_u64 instead of
aarch64_set_reg_u64.  In case 2, call HALT_UNALLOC if not full.  In
case 3, call HALT_UNALLOC unconditionally.
(do_vec_XTN): Delete shifts.  In case 2, change index from i + 4 to
i + 2.  Delete if on bias, change index to i + bias * X.

sim/testsuite/sim/aarch64/
* addv.s: New.
* xtn.s: New.

7 years agoAutomatic date update in version.in
GDB Administrator [Wed, 18 Jan 2017 00:00:27 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoRISC-V/bfd: Hook elf_backend_object_p to set the mach type.
Kuan-Lin Chen [Tue, 17 Jan 2017 01:46:28 +0000 (09:46 +0800)]
RISC-V/bfd: Hook elf_backend_object_p to set the mach type.

7 years agoAutomatic date update in version.in
GDB Administrator [Tue, 17 Jan 2017 00:00:21 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agogdb: sparc: split real and pseudo registers.
Ivo Raisr [Mon, 16 Jan 2017 16:45:48 +0000 (08:45 -0800)]
gdb: sparc: split real and pseudo registers.

gdb/ChangeLog:

2017-01-16  Ivo Raisr  <ivo.raisr@oracle.com>

Split real and pseudo registers.
* sparc-tdep.h (SPARC_CORE_REGISTERS): New macro.
(sparc32_pseudo_regnum): New enum.
* sparc64-tdep.h (sparc64_pseudo_regnum): New enum.
* sparc-tdep.c (SPARC32_FPU_REGISTERS): New macro.
(SPARC32_CP0_REGISTERS): New macro.
(sparc32_pseudo_register_name): New function.
(sparc32_register_name): Use sparc32_pseudo_register_name.
(sparc32_pseudo_register_type): New function.
(sparc32_register_type): Use sparc32_pseudo_register_type.
(sparc32_pseudo_register_read, sparc32_pseudo_register_write): Handle
pseudo register numbers.
* sparc64-tdep.c SPARC64_FPU_REGISTERS): New macro.
(SPARC64_CP0_REGISTERS): New macro.
(sparc64_pseudo_register_name): New function.
(sparc64_register_name): Use sparc64_pseudo_register_name.
(sparc64_pseudo_register_type): New function.
(sparc64_register_type): Use sparc64_pseudo_register_type.
(sparc64_pseudo_register_read, sparc64_pseudo_register_write): Handle
pseudo register numbers.
(sparc64_store_floating_fields, sparc64_extract_floating_fields,
sparc64_store_arguments): Handle pseudo register numbers.

7 years agoUpdated Swedish translations for GAS and LD subdirectories.
Nick Clifton [Mon, 16 Jan 2017 10:59:23 +0000 (10:59 +0000)]
Updated Swedish translations for GAS and LD subdirectories.

gas * po/sv.po: Updated Swedish translation.
ld * po/sv.po: Updated Swedish translation.

7 years agoAutomatic date update in version.in
GDB Administrator [Mon, 16 Jan 2017 00:00:21 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoAutomatic date update in version.in
GDB Administrator [Sun, 15 Jan 2017 00:00:21 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoAutomatic date update in version.in
GDB Administrator [Sat, 14 Jan 2017 00:00:23 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoGold: Fix build with GCC 4.2
H.J. Lu [Fri, 13 Jan 2017 15:46:14 +0000 (07:46 -0800)]
Gold: Fix build with GCC 4.2

PR gold/21040
* powerpc.cc (Powerpc_relobj<size, big_endian>::make_toc_relative):
Cast 0x80008000 to uint64_t.

7 years agoDon't print too much if remote_debug is on
Yao Qi [Fri, 13 Jan 2017 15:45:33 +0000 (15:45 +0000)]
Don't print too much if remote_debug is on

If we turn "remote debug" on and GDB does some vFile operations,
a lot of things will be printed in the screen, which makes
"remote debug" useless.

This patch changes the code that we only print 512 chars in max in
debugging messages, like this,

Sending packet: $qXfer:features:read:target.xml:0,fff#7d...Packet received: l<?xml version="1.0"?>\n<!-- Copyright (C) 2010-2016 Free Software Foundation, Inc.\n\n     Copying and distribution of this file, with or without modification,\n     are permitted in any medium without royalty provided the copyright\n     notice and this notice are preserved.  -->\n\n<!-- AMD64 with AVX - Includes Linux-only special "register".  -->\n\n<!DOCTYPE target SYSTEM "gdb-target.dtd">\n<target>\n  <architecture>i386:x86-64</architecture>\n  <osabi>GNU/Linux</osabi>\n  <xi:include href="64bit-core.xml"/>\n  <xi:[14 bytes omitted]

Sending packet: $qXfer:auxv:read::0,1000#6b...Packet received: l!\000\000\000\000\000\000\000\000d\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000@\000@\000\000\000\000\000\004\000\000\000\000\000\000\0008\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\a\000\000\000\000\000\000\000\177\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\004@\000\000\000\000\000\013\000\000\000\000\000\000\003\000\000\000\000\000\000\f\000\000\000\000\000\000\003\000\000\000\000\000\000\r\000\000\000\000\000\000\003\000\000\000\000\000\000\016\000\000\000\000\000\000\003\000\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\000\000\000\000\000\177\000\000\037\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\00\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000[582 bytes omitted]

gdb:

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

* remote.c (REMOTE_DEBUG_MAX_CHAR): New macro.
(putpkt_binary): Print only REMOTE_DEBUG_MAX_CHAR chars in debug
output.
(getpkt_or_notif_sane_1): Likewise.

7 years ago'make check-headers' for c++ header
Yao Qi [Fri, 13 Jan 2017 14:40:11 +0000 (14:40 +0000)]
'make check-headers' for c++ header

If I run 'make check-headers', I get these errors,
....
In file included from ../../binutils-gdb/gdb/common/common-defs.h:78:0,
                 from ../../binutils-gdb/gdb/defs.h:28,
                 from <command-line>:0:
../../binutils-gdb/gdb/common/common-utils.h:23:18: fatal error: string: No such file or directory
 #include <string>
                  ^

because we still parse headers as c file with a c compiler, which is no
longer true after we moved to C++.  This patch changes it to use C++
compiler and parse headers as c++ headers.

gdb:

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

* Makefile.in (checker-headers): Use CXX and CXX_DIALET instead
of CC.  Pass "-x c++-header" instead of "-x c".

7 years agoReturn -1 on memory error in print_insn_m68k
Yao Qi [Fri, 13 Jan 2017 12:27:39 +0000 (12:27 +0000)]
Return -1 on memory error in print_insn_m68k

m68k-dis.c:print_insn_m68k doesn't return -1 on memory error, but GDB
expects it returning -1 on memory error.

opcodes:

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

* m68k-dis.c (match_insn_m68k): Extend comments.  Return -1
if FETCH_DATA returns 0.
(m68k_scan_mask): Likewise.
(print_insn_m68k): Update code to handle -1 return value.

7 years agoRemove magic numbers in m68k-dis.c:print_insn_arg
Yao Qi [Fri, 13 Jan 2017 12:21:22 +0000 (12:21 +0000)]
Remove magic numbers in m68k-dis.c:print_insn_arg

When I inspect the return values of disassmblers, I happen to see
various -1/-2/-3 magic numbers are used in m68k-dis.c.  This patch
is to replace them with enum.

-1 and -2 is "clearly documented" in print_ins_arg's comments, but
-3 isn't.  In fact, -3 is returned when FETCH_DATA returns false,
which means memory error (because fetch_data return 0 on memory
error).  So I name enum PRINT_INSN_ARG_MEMORY_ERROR for -3.

This patch is a refactor patch, doesn't affect any functionality.

opcodes:

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

* m68k-dis.c (enum print_insn_arg_error): New.
(NEXTBYTE): Replace -3 with
PRINT_INSN_ARG_MEMORY_ERROR.
(NEXTULONG): Likewise.
(NEXTSINGLE): Likewise.
(NEXTDOUBLE): Likewise.
(NEXTDOUBLE): Likewise.
(NEXTPACKED): Likewise.
(FETCH_ARG): Likewise.
(FETCH_DATA): Update comments.
(print_insn_arg): Update comments. Replace magic numbers with
enum.
(match_insn_m68k): Likewise.

7 years agoAutomatic date update in version.in
GDB Administrator [Fri, 13 Jan 2017 00:00:22 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoFix incorrect byte counts.
Cary Coutant [Thu, 12 Jan 2017 19:51:18 +0000 (11:51 -0800)]
Fix incorrect byte counts.

gold/
* object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.

7 years agox86-64: Also generate unwind info for .plt.bnd
H.J. Lu [Thu, 12 Jan 2017 18:30:56 +0000 (10:30 -0800)]
x86-64: Also generate unwind info for .plt.bnd

Also generate unwind info for the .plt.bnd section.  Sine it is the same
as unwind info for the .plt.got section, we use unwind info for the
.plt.got section to cover the the .plt.bnd section.

bfd/

PR ld/21038
* elf64-x86-64.c (elf_x86_64_link_hash_table): Add
plt_bnd_eh_frame.
(elf_x86_64_check_relocs): Create .eh_frame section for the
.plt.bnd section.
(elf_x86_64_size_dynamic_sections): Allocate and initialize
.eh_frame section for the .plt.bnd section.
(elf_x86_64_finish_dynamic_sections): Adjust .eh_frame section
for the .plt.bnd section.

ld/

PR ld/21038
* testsuite/ld-x86-64/pr21038b.d: Updated.
* testsuite/ld-x86-64/pr21038c.d: New file.
* testsuite/ld-x86-64/pr21038c.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run pr21038c.

7 years agoAdd support for locating separate debug info files via the build-id method.
Nick Clifton [Thu, 12 Jan 2017 16:56:54 +0000 (16:56 +0000)]
Add support for locating separate debug info files via the build-id method.

PR binutils/20876
bfd * opncls.c (find_separate_debug_file): Add include_dirs
parameter.  Only include the directory part of the bfd's filename
in search paths if include_dirs is true.  Add a couple of extra
locations for looking for debug files.
( bfd_follow_gnu_debuglink): Update invocation of
find_separate_debug_file.
(bfd_follow_gnu_debugaltlink): Likewise.
(get_build_id): New function: Finds the build-id of the given bfd.
(get_build_id_name): New function: Computes the name of the
separate debug info file for a bfd, based upon its build-id.
(check_build_id_file): New function: Checks to see if a separate
debug info file exists at the given location, and that its
build-id matches that of the original bfd.
(bfd_follow_build_id_debuglink): New function: Finds a separate
debug info file for a given bfd by using the build-id method.
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Try using the build-id
method of locating a separate debug info file before using the
debuglink method.
* bfd-in2.h: Regenerate.

binutils * NEWS: Mention the new feature.
* testsuite/binutils-all/objdump.exp (test_build_id_debuglink):
New proc to test the location of separate debug info files using
the build-id method.

7 years agoEnable Intel AVX512_VPOPCNTDQ instructions
Igor Tsimbalist [Thu, 12 Jan 2017 16:42:17 +0000 (08:42 -0800)]
Enable Intel AVX512_VPOPCNTDQ instructions

gas/

2017-01-12  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>

* config/tc-i386.c (cpu_arch): Add .avx512_vpopcntdq.
(cpu_noarch): Add noavx512_vpopcntdq.
* doc/c-i386.texi: Document avx512_vpopcntdq, noavx512_vpopcntdq.
* testsuite/gas/i386/i386.exp: Run AVX512_VPOPCNTDQ tests.
* testsuite/gas/i386/avx512_vpopcntdqd-intel.d: New file.
* testsuite/gas/i386/avx512_vpopcntdqd.d: Ditto.
* testsuite/gas/i386/avx512_vpopcntdqd.s: Ditto.
* testsuite/gas/i386/x86-64-avx512_vpopcntdqd-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512_vpopcntdqd.d: Ditto.
* testsuite/gas/i386/x86-64-avx512_vpopcntdqd.s: Ditto.

opcodes/

2017-01-12  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>

* i386-dis.c (enum): Add PREFIX_EVEX_0F3855, EVEX_W_0F3855_P_2.
* i386-dis-evex.h (evex_table): Updated.
* i386-gen.c (cpu_flag_init): Add CPU_AVX512_VPOPCNTDQ_FLAGS,
CPU_ANY_AVX512_VPOPCNTDQ_FLAGS. Update CPU_ANY_AVX512F_FLAGS.
(cpu_flags): Add CpuAVX512_VPOPCNTDQ.
* i386-opc.h (enum): (AVX512_VPOPCNTDQ): New.
(i386_cpu_flags): Add cpuavx512_vpopcntdq.
* i386-opc.tbl: Add Intel AVX512_VPOPCNTDQ instructions.
* i386-init.h: Regenerate.
* i386-tbl.h: Ditto.

7 years agoUpdate comment in remote_can_async_p
Simon Marchi [Thu, 12 Jan 2017 16:15:01 +0000 (11:15 -0500)]
Update comment in remote_can_async_p

I find this comment counter intuitive, and it probably predates the
always-target-async change.  AFAIK, remote will always be async, unless
the user explicitly prevents it with "maint set target-async off".

gdb/ChangeLog:

* remote.c (remote_can_async_p): Update comment.

7 years agoUpdate comment in linux_nat_can_async_p
Simon Marchi [Thu, 12 Jan 2017 16:04:53 +0000 (11:04 -0500)]
Update comment in linux_nat_can_async_p

I think this comment is outdated.  Nowadays, linux-nat is always async,
unless the user has explictly turned it off with
"maint set target-async off".

gdb/ChangeLog:

* linux-nat.c (linux_nat_can_async_p): Update comment.

7 years agoRemove dead serial_interface_lookup calls
Simon Marchi [Thu, 12 Jan 2017 15:39:35 +0000 (10:39 -0500)]
Remove dead serial_interface_lookup calls

By inspecting the serial_add_interface calls, I found that the serial
interface names that we have today are:

 - hardwire
 - terminal
 - pipe
 - tcp
 - event

 The calls to serial_interface_lookup with any other names are most
 likely leftovers which can be removed since these serial interfaces
 don't exist anymore.  The commits that removed the "pc" and "parallel"
 interfaces are respectively:

  cb2a4ac5dae478fcd9d6e772530c3aba0576fc7a

and

  e386d4d2fb55042f77d0557a0849ed2464aee7b3

gdb/ChangeLog:

* serial.c (serial_open): Forget about "pc" and "lpt" serial interface.

7 years agoPrevent internal assembler errors if a stabs creation function builds an badly format...
Nick Clifton [Thu, 12 Jan 2017 14:56:13 +0000 (14:56 +0000)]
Prevent internal assembler errors if a stabs creation function builds an badly formatted input string.

* read.c (temp_ilp): New function.  Installs a temporary input
line pointer.
(restore_ilp): New function.  Restores the original input line
pointer.
* read.h (temp_ilp): Prototype.
(restore_ilp): Prototype.
* stabs.c (dot_func_p): Use bfd_boolean type.
(generate_asm_file): Use temp_ilp and restore_ilp.
(stabs_generate_asm_lineno): Likewise.
(stabs_generate_asm_endfunc): Likewise.

7 years agoReturn -1 on memory error in print_insn_msp430
Yao Qi [Thu, 12 Jan 2017 09:40:41 +0000 (09:40 +0000)]
Return -1 on memory error in print_insn_msp430

Disassemblers in opcodes return -1 on memory error, but msp430 doesn't
follow this convention.  If I change GDB not to throw exception in
disassemble_info.memory_error_func and rely on the return value of
disassembler, I'll get the following output.

(gdb) disassemble 0x0,+8
Dump of assembler code from 0x0 to 0x8:
   0x00000000:  .word   0xffff; ????
   0x00000002:  .word   0xffff; ????
   0x00000004:  .word   0xffff; ????
   0x00000006:  .word   0xffff; ????
End of assembler dump.

This patch teaches print_insn_msp430 and its callees to return -1
on memory error.

opcodes:

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

* msp430-dis.c (msp430_singleoperand): Return -1 if
msp430dis_opcode_signed returns false.
(msp430_doubleoperand): Likewise.
(msp430_branchinstr): Return -1 if
msp430dis_opcode_unsigned returns false.
(msp430x_calla_instr): Likewise.
(print_insn_msp430): Likewise.

7 years agoAutomatic date update in version.in
GDB Administrator [Thu, 12 Jan 2017 00:00:25 +0000 (00:00 +0000)]
Automatic date update in version.in

7 years agoFix more compile errors with GCC 4.2.
Cary Coutant [Wed, 11 Jan 2017 21:42:24 +0000 (13:42 -0800)]
Fix more compile errors with GCC 4.2.

gold/
PR gold/21040
* x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
Remove unnecessary 'typename' keyword.
(Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
(Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
(Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
(Output_data_plt_x86_64_bnd::do_write): Likewise.

7 years agoFix compile errors with GCC 4.2.
Cary Coutant [Wed, 11 Jan 2017 19:47:27 +0000 (11:47 -0800)]
Fix compile errors with GCC 4.2.

gold/
PR gold/21040
* x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
Remove unnecessary 'typename' keyword.
(Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
(Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
(Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
* testsuite/copy_test_relro_1.cc (p, b, c, q): Add separate extern
declarations.

7 years agoFix test cases to work for i386.
Cary Coutant [Wed, 11 Jan 2017 19:26:26 +0000 (11:26 -0800)]
Fix test cases to work for i386.

gold/
PR gold/21039
* testsuite/script_test_13.sh: Adjust patterns to work for i386.
* testsuite/script_test_15a.sh: Likewise.
* testsuite/script_test_15b.sh: Likewise.
* testsuite/script_test_15c.sh: Likewise.

7 years agox86-64: Correct unwind info for the BND PLT
H.J. Lu [Wed, 11 Jan 2017 17:16:44 +0000 (09:16 -0800)]
x86-64: Correct unwind info for the BND PLT

Since the BND PLT has

 230: 68 00 00 00 00        pushq  $0x0
 235: f2 e9 e5 ff ff ff     bnd jmpq 220 <.plt>
 23b: 0f 1f 44 00 00        nopl   0x0(%rax,%rax,1)

instead of

 230: ff 25 e2 0d 20 00     jmpq   *0x200de2(%rip)        # 201018
<func>
 236: 68 00 00 00 00        pushq  $0x0
 23b: e9 e0 ff ff ff        jmpq   220 <.plt>

its unwind info should be

DW_CFA_def_cfa_expression (DW_OP_breg7 (rsp): 8; DW_OP_breg16 (rip): 0;
DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl;
DW_OP_plus)

bfd/

PR ld/21038
* elf64-x86-64.c (elf_x86_64_eh_frame_bnd_plt): New.
(elf_x86_64_bnd_arch_bed): Use elf_x86_64_eh_frame_bnd_plt and
elf_x86_64_eh_frame_plt_got.
(elf_x86_64_size_dynamic_sections): Get unwind info from
elf_x86_64_bnd_arch_bed for the BND PLT.

ld/

PR ld/21038
* testsuite/ld-x86-64/pr21038a.d: New file.
* testsuite/ld-x86-64/pr21038a.s: Likewise.
* testsuite/ld-x86-64/pr21038b.d: Likewise.
* testsuite/ld-x86-64/pr21038b.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run pr21038a and pr21038b.

7 years agoFix typo in lookup_cmd_1 comment
Simon Marchi [Wed, 11 Jan 2017 16:15:26 +0000 (11:15 -0500)]
Fix typo in lookup_cmd_1 comment

gdb/ChangeLog:

* cli/cli-decode.c (lookup_cmd_1): Fix typo in comment.

7 years agoAdd support for x86/64 redox target.
Jeremy Soller [Wed, 11 Jan 2017 15:05:53 +0000 (15:05 +0000)]
Add support for x86/64 redox target.

bfd * config.bfd: Add entries for i686-redox and x86_64-redox.

gas * configure.tgt: Add entry for i386-redox.

ld * configure.tgt: Add entries for x86-redox and x86_64-redox.

7 years agoAdd constructor and destructor to demangle_parse_info
Tom Tromey [Tue, 29 Nov 2016 04:39:47 +0000 (21:39 -0700)]
Add constructor and destructor to demangle_parse_info

This adds a constructor and destructor to demangle_parse_info, and
then changes all the users to use them.  This removes
make_cleanup_cp_demangled_name_parse_free and its single use.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-type.c (typy_legacy_template_argument): Update.
* cp-support.h (struct demangle_parse_info) (demangle_parse_info,
~demangle_parse_info): Declare new members.
(cp_demangled_name_to_comp): Return unique_ptr.
(cp_demangled_name_parse_free)
(make_cleanup_cp_demangled_name_parse_free)
(cp_new_demangle_parse_info): Remove.
* cp-support.c (do_demangled_name_parse_free_cleanup)
(make_cleanup_cp_demangled_name_parse_free): Remove.
(inspect_type, cp_canonicalize_string_full)
(cp_canonicalize_string): Update.
(mangled_name_to_comp): Change return type.
(cp_class_name_from_physname, method_name_from_physname)
(cp_func_name, cp_remove_params): Update.
* cp-name-parser.y (demangle_parse_info): New constructor, from
cp_new_demangle_parse_info.
(~demangle_parse_info): New destructor, from
cp_demangled_name_parse_free.
(cp_merge_demangle_parse_infos): Update.
(cp_demangled_name_to_comp): Change return type.

7 years agoRemove cleanups from execute_gdb_command
Tom Tromey [Tue, 29 Nov 2016 04:11:53 +0000 (21:11 -0700)]
Remove cleanups from execute_gdb_command

This replaces a cleanup in execute_gdb_command with an instance of
std::string.

Testing showed that this originally missed a cleanup that was returned
by prevent_dont_repeat.  This version of the patch changes
prevent_dont_repeat to return a scoped_restore rather than a cleanup.

2017-01-10  Tom Tromey  <tom@tromey.com>

* top.c (prevent_dont_repeat): Change return type.
* python/python.c (execute_gdb_command): Use std::string.
Update.
* guile/guile.c (gdbscm_execute_gdb_command): Update.
* command.h (prevent_dont_repeat): Change return type.
* breakpoint.c (bpstat_do_actions_1): Update.

7 years agoUse scoped_value_mark in dwarf2_evaluate_loc_desc_full
Tom Tromey [Tue, 22 Nov 2016 04:04:59 +0000 (21:04 -0700)]
Use scoped_value_mark in dwarf2_evaluate_loc_desc_full

This changes dwarf2_evaluate_loc_desc_full to use scoped_value_mark.

Note that this function previously called do_cleanup using the same
cleanup multiple times.  I had thought this was buggy, but re-reading
make_my_cleanup2 indicates that it is not.  Nevertheless it is
surprising, and at least one of the calls (the one that is completely
removed in this patch) seems to have been done under the assumption
that it would still have some effect.

2017-01-10  Tom Tromey  <tom@tromey.com>

* value.h (scoped_value_mark::~scoped_value_mark): Call
free_to_mark.
(scoped_value_mark::free_to_mark): New method.
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use
scoped_value_mark.

7 years agoAdd scoped_value_mark
Tom Tromey [Tue, 22 Nov 2016 01:02:11 +0000 (18:02 -0700)]
Add scoped_value_mark

This adds a scoped_value_mark class, that records the value mark in
the constructor and then calls value_free_to_mark in the destructor.
It then updates various spots in gdb to use this class, rather than a
cleanup.

It would be better overall to replace "struct value *" with a
shared_ptr, maybe eliminating the need for this class (watchpoints
would perhaps need some new mechanism as well).  However, that's
difficult to do.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-value.c (valpy_dereference, valpy_referenced_value)
(valpy_reference_value, valpy_const_value, valpy_get_address)
(valpy_get_dynamic_type, valpy_lazy_string, valpy_do_cast)
(valpy_getitem, valpy_call, valpy_binop_throw, valpy_negative)
(valpy_absolute, valpy_richcompare_throw): Use scoped_value_mark.
* dwarf2loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
scoped_value_mark.
* dwarf2-frame.c (execute_stack_op): Use scoped_value_mark.
* value.h (scoped_value_mark): New class.

7 years agoRemove make_cleanup_discard_psymtabs
Tom Tromey [Mon, 21 Nov 2016 23:50:20 +0000 (16:50 -0700)]
Remove make_cleanup_discard_psymtabs

This removes make_cleanup_discard_psymtabs in favor of a new class.

2017-01-10  Tom Tromey  <tom@tromey.com>

* dwarf2read.c (dwarf2_build_psymtabs): Use psymtab_discarder.
* psympriv.h (make_cleanup_discard_psymtabs): Don't declare.
* psymtab.c (discard_psymtabs_upto): Remove.
(make_cleanup_discard_psymtabs): Remove.
(struct psymtab_state): Remove.

7 years agoIntroduce and use gdb::unlinker
Tom Tromey [Mon, 21 Nov 2016 23:26:20 +0000 (16:26 -0700)]
Introduce and use gdb::unlinker

This introduces a new class, gdb::unlinker, that unlinks a file in the
destructor.  The user of this class has the option to preserve the
file instead, by calling the "keep" method.

This patch then changes the spots in gdb that use unlink in a cleanup
to use this class instead.  In one spot I went ahead and removed all
the cleanups from the function.

This fixes one latent bug -- do_bfd_delete_cleanup could refer to
freed memory, by decref'ing the BFD before using its filename.

2017-01-10  Tom Tromey  <tom@tromey.com>

* record-full.c (record_full_save_cleanups): Remove.
(record_full_save): Use gdb::unlinker.
* gcore.c (do_bfd_delete_cleanup): Remove.
(gcore_command): Use gdb::unlinker, unique_xmalloc_ptr.  Remove
cleanups.
* dwarf2read.c (unlink_if_set): Remove.
(write_psymtabs_to_index): Use gdb::unlinker.
* common/gdb_unlinker.h: New file.

7 years agoUse class to manage BFD reference counts
Tom Tromey [Mon, 21 Nov 2016 18:12:23 +0000 (11:12 -0700)]
Use class to manage BFD reference counts

This introduces a new specialization of gdb::ref_ptr that can be used
to manage BFD reference counts.  Then it changes most places in gdb to
use this new class, rather than explicit reference-counting or
cleanups.  This patch removes make_cleanup_bfd_unref.

If you look you will see a couple of spots using "release" where a use
of gdb_bfd_ref_ptr would be cleaner.  These will be fixed in the next
patch.

I think this patch fixes some latent bugs.  For example, it seems to
me that previously objfpy_add_separate_debug_file leaked a BFD.

I'm not 100% certain that the macho_symfile_read_all_oso change is
correct.  The existing code here is hard for me to follow.  One goal
of this sort of automated reference counting, though, is to make it
more difficult to make logic errors; so hopefully the code is clear
now.

2017-01-10  Tom Tromey  <tom@tromey.com>

* windows-tdep.c (windows_xfer_shared_library): Update.
* windows-nat.c (windows_make_so): Update.
* utils.h (make_cleanup_bfd_unref): Remove.
* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_unref): Remove.
* symfile.h (symfile_bfd_open)
(find_separate_debug_file_in_section): Return gdb_bfd_ref_ptr.
* symfile.c (read_symbols, symbol_file_add)
(separate_debug_file_exists): Update.
(symfile_bfd_open): Return gdb_bfd_ref_ptr.
(generic_load, reread_symbols): Update.
* symfile-mem.c (symbol_file_add_from_memory): Update.
* spu-linux-nat.c (spu_bfd_open): Return gdb_bfd_ref_ptr.
(spu_symbol_file_add_from_memory): Update.
* solist.h (struct target_so_ops) <bfd_open>: Return
gdb_bfd_ref_ptr.
(solib_bfd_fopen, solib_bfd_open): Return gdb_bfd_ref_ptr.
* solib.c (solib_bfd_fopen, solib_bfd_open): Return
gdb_bfd_ref_ptr.
(solib_map_sections, reload_shared_libraries_1): Update.
* solib-svr4.c (enable_break): Update.
* solib-spu.c (spu_bfd_fopen): Return gdb_bfd_ref_ptr.
* solib-frv.c (enable_break2): Update.
* solib-dsbt.c (enable_break): Update.
* solib-darwin.c (gdb_bfd_mach_o_fat_extract): Return
gdb_bfd_ref_ptr.
(darwin_solib_get_all_image_info_addr_at_init): Update.
(darwin_bfd_open): Return gdb_bfd_ref_ptr.
* solib-aix.c (solib_aix_bfd_open): Return gdb_bfd_ref_ptr.
* record-full.c (record_full_save): Update.
* python/py-objfile.c (objfpy_add_separate_debug_file): Update.
* procfs.c (insert_dbx_link_bpt_in_file): Update.
* minidebug.c (find_separate_debug_file_in_section): Return
gdb_bfd_ref_ptr.
* machoread.c (macho_add_oso_symfile): Change abfd to
gdb_bfd_ref_ptr.
(macho_symfile_read_all_oso): Update.
(macho_check_dsym): Return gdb_bfd_ref_ptr.
(macho_symfile_read): Update.
* jit.c (bfd_open_from_target_memory): Return gdb_bfd_ref_ptr.
(jit_bfd_try_read_symtab): Update.
* gdb_bfd.h (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec)
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
gdb_bfd_ref_ptr.
(gdb_bfd_ref_policy): New struct.
(gdb_bfd_ref_ptr): New typedef.
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec)
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
gdb_bfd_ref_ptr.
* gcore.h (create_gcore_bfd): Return gdb_bfd_ref_ptr.
* gcore.c (create_gcore_bfd): Return gdb_bfd_ref_ptr.
(gcore_command): Update.
* exec.c (exec_file_attach): Update.
* elfread.c (elf_symfile_read): Update.
* dwarf2read.c (dwarf2_get_dwz_file): Update.
(try_open_dwop_file, open_dwo_file): Return gdb_bfd_ref_ptr.
(open_and_init_dwo_file): Update.
(open_dwp_file): Return gdb_bfd_ref_ptr.
(open_and_init_dwp_file): Update.
* corelow.c (core_open): Update.
* compile/compile-object-load.c (compile_object_load): Update.
* common/gdb_ref_ptr.h (ref_ptr::operator->): New operator.
* coffread.c (coff_symfile_read): Update.
* cli/cli-dump.c (bfd_openr_or_error, bfd_openw_or_error): Return
gdb_bfd_ref_ptr.  Rename.
(dump_bfd_file, restore_command): Update.
* build-id.h (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
* build-id.c (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
(find_separate_debug_file_by_buildid): Update.

7 years agoAdd gdb_ref_ptr.h
Tom Tromey [Mon, 21 Nov 2016 00:48:31 +0000 (17:48 -0700)]
Add gdb_ref_ptr.h

This adds a new gdb_ref_ptr.h, that implements a reference-counting
smart pointer class, where the user of the class supplies a
reference-counting policy object.

This class will be used in the next patch, which changes most explicit
BFD reference counts to use this new type.  Meanwhile, this patch
changes gdbpy_ref to be a specialization of this new class.

This change required adding new nullptr_t overloads some operators in
gdb_ref_ptr.h.  I suspect this was needed because some Python header
redefines NULL, but I'm not certain.

2017-01-10  Tom Tromey  <tom@tromey.com>

* common/gdb_ref_ptr.h: New file.
* python/py-ref.h (struct gdbpy_ref_policy): New.
(gdbpy_ref): Now a typedef.

7 years agoRemove make_cleanup_htab_delete
Tom Tromey [Sun, 20 Nov 2016 20:20:32 +0000 (13:20 -0700)]
Remove make_cleanup_htab_delete

This removes make_cleanup_htab_delete in favor of destructors,
building on an earlier patch that added the htab_up typedef.

Testing revealed that more cleanup-removal work was needed in
dwarf2loc.c, so this version of the patch changes code there to use
unordered_set and vector, removing some more cleanups.

2017-01-10  Tom Tromey  <tom@tromey.com>

* utils.h (make_cleanup_htab_delete): Don't declare.
* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete):
Remove.
* linespec.c (decode_compound_collector): Add constructor,
destructor.
(lookup_prefix_sym): Remove cleanup.
(symtab_collector): Add constructor, destructor.
(collect_symtabs_from_filename): Remove cleanup.
* disasm.c (do_mixed_source_and_assembly): Use htab_up.
* compile/compile-c-symbols.c (generate_c_for_variable_locations):
Use htab_up.
* gnu-v3-abi.c (gnuv3_print_vtable): Use htab_up.
* dwarf2read.c (dw2_expand_symtabs_matching)
(dw2_map_symbol_filenames, dwarf_decode_macros)
(write_psymtabs_to_index): Use htab_up.
* dwarf2loc.c (func_verify_no_selftailcall)
(call_site_find_chain_1, func_verify_no_selftailcall)
(chain_candidate, call_site_find_chain_1): Use std::unordered_set,
std::vector, gdb::unique_xmalloc_ptr.
(call_sitep): Remove typedef.
(dwarf2_locexpr_baton_eval): Remove unused variable.

7 years agoRemove make_cleanup_py_decref and make_cleanup_py_xdecref
Tom Tromey [Sun, 20 Nov 2016 18:16:41 +0000 (11:16 -0700)]
Remove make_cleanup_py_decref and make_cleanup_py_xdecref

make_cleanup_py_decref and make_cleanup_py_xdecref are now unused, so
this patch removes themm.  Future Python changes should use gdbpy_ref
instead.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python-internal.h (make_cleanup_py_decref)
(make_cleanup_py_xdecref): Don't declare.
* python/py-utils.c (py_decref, make_cleanup_py_decref)
(py_xdecref, make_cleanup_py_xdecref): Remove.

7 years agoUse gdbpy_ref rather than make_cleanup_py_decref
Tom Tromey [Sun, 20 Nov 2016 18:04:40 +0000 (11:04 -0700)]
Use gdbpy_ref rather than make_cleanup_py_decref

This changes some spots in py-framefilter.c to use gdbpy_ref rather
than make_cleanup_py_decref or make_cleanup_py_xdecref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (py_mi_print_variables): Use gdbpy_ref.
(py_print_locals, enumerate_locals, py_print_args): Use gdbpy_ref.

7 years agoUse gdbpy_ref in enumerate_args
Tom Tromey [Sun, 20 Nov 2016 17:57:28 +0000 (10:57 -0700)]
Use gdbpy_ref in enumerate_args

This changes enumerate_args to use gdbpy_ref, and gets rid of many
gotos.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (enumerate_args): Use gdbpy_ref.

7 years agoUse gdbpy_ref in py-utils.c
Tom Tromey [Sun, 20 Nov 2016 17:52:25 +0000 (10:52 -0700)]
Use gdbpy_ref in py-utils.c

This changes more places in py-utils.c to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-utils.c (unicode_to_encoded_string)
(python_string_to_target_string)
(python_string_to_target_python_string)
(python_string_to_host_string, gdbpy_obj_to_string)
(get_addr_from_python): Use gdbpy_ref.

7 years agoUse gdbpy_ref in pyuw_object_attribute_to_pointer
Tom Tromey [Sun, 20 Nov 2016 17:48:51 +0000 (10:48 -0700)]
Use gdbpy_ref in pyuw_object_attribute_to_pointer

This changes pyuw_object_attribute_to_pointer to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-unwind.c (pyuw_object_attribute_to_pointer): Use
gdbpy_ref.

7 years agoUse gdbpy_ref in python.c
Tom Tromey [Sun, 20 Nov 2016 17:46:23 +0000 (10:46 -0700)]
Use gdbpy_ref in python.c

This changes more places in python.c to use gdbpy_ref.

Additionally, previously gdbpy_apply_type_printers would return
EXT_LANG_RC_ERROR if a type printer returned None.  However, that
doesn't seem correct to me; this patch changes it to return
EXT_LANG_RC_NOP in this case.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (eval_python_command, gdbpy_decode_line)
(gdbpy_run_events, gdbpy_start_type_printers)
(gdbpy_apply_type_printers): Use gdbpy_ref.

7 years agoUse gdbpy_ref in py-param.c
Tom Tromey [Sun, 20 Nov 2016 17:34:34 +0000 (10:34 -0700)]
Use gdbpy_ref in py-param.c

This changes py-param.c to use gdbpy_ref in a couple more spots.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-param.c (get_doc_string, compute_enum_values): Use
gdbpy_ref.

7 years agoUse gdbpy_ref in py-inferior.c
Tom Tromey [Sun, 20 Nov 2016 17:31:17 +0000 (10:31 -0700)]
Use gdbpy_ref in py-inferior.c

This changes py-inferior.c to use gdbpy_ref in more places.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-inferior.c (find_thread_object, build_inferior_list):
Use gdbpy_ref.

7 years agoUse gdbpy_ref in py_print_frame
Tom Tromey [Sun, 20 Nov 2016 17:27:59 +0000 (10:27 -0700)]
Use gdbpy_ref in py_print_frame

This changes py_print_frame to use gdbpy_ref in more places.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.

7 years agoUse gdbpy_ref in bpfinishpy_out_of_scope
Tom Tromey [Sun, 20 Nov 2016 17:25:29 +0000 (10:25 -0700)]
Use gdbpy_ref in bpfinishpy_out_of_scope

This changes bpfinishpy_out_of_scope to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-finishbreakpoint.c (bpfinishpy_out_of_scope): Use
gdbpy_ref.

7 years agoUse gdbpy_ref in py-cmd.c
Tom Tromey [Sun, 20 Nov 2016 17:23:08 +0000 (10:23 -0700)]
Use gdbpy_ref in py-cmd.c

This changes py-cmd.c to use gdbpy_ref in more places.  This also
fixes a latent memory leak in cmdpy_completer_helper, which
unnecessarily increfs the result of PyObject_CallMethodObjArgs.  This
is not needed because that function returns a new reference.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-cmd.c (cmdpy_completer_helper): Use gdbpy_ref.  Remove
extra incref.
(cmdpy_completer_handle_brkchars, cmdpy_completer, cmdpy_init):
Use gdbpy_ref.

7 years agoUse gdbpy_ref in gdbpy_breakpoint_cond_says_stop
Tom Tromey [Sun, 20 Nov 2016 17:13:31 +0000 (10:13 -0700)]
Use gdbpy_ref in gdbpy_breakpoint_cond_says_stop

This changes gdbpy_breakpoint_cond_says_stop to use gdbpy_ref rather
than explicit reference management.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Use
gdbpy_ref.

7 years agoUse gdbpy_ref in archpy_disassemble
Tom Tromey [Sun, 20 Nov 2016 17:10:58 +0000 (10:10 -0700)]
Use gdbpy_ref in archpy_disassemble

This changes archpy_disassemble to use gdbpy_ref.  It also fixes a
latent bug where archpy_disassemble was decref'ing the results of a
all to PyArg_ParseTupleAndKeywords.  This is incorrect because
PyArg_ParseTupleAndKeywords returns borrowed references.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-arch.c (archpy_disassemble): Use gdbpy_ref.  Don't
decref results of PyArg_ParseTupleAndKeywords.

7 years agoChange python_run_simple_file to use gdbpy_ref
Tom Tromey [Sat, 12 Nov 2016 19:08:17 +0000 (12:08 -0700)]
Change python_run_simple_file to use gdbpy_ref

This changes python_run_simple_file to use gdbpy_ref and
unique_xmalloc_ptr.  Thi fixes a latent bug in this function, where
the error path previously ran the cleanups and then referred to one of
the objects just freed.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (python_run_simple_file): Use
unique_xmalloc_ptr, gdbpy_ref.

7 years agoUse gdbpy_ref in py-prettyprint.c
Tom Tromey [Sat, 12 Nov 2016 19:07:16 +0000 (12:07 -0700)]
Use gdbpy_ref in py-prettyprint.c

This changes some spots in py-prettyprint.c to use gdbpy_ref.  It also
changes push_dummy_python_frame to be a class, rather than having it
create a cleanup.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-prettyprint.c (print_stack_unless_memory_error)
(print_string_repr, print_children): Use gdbpy_ref.
(dummy_python_frame): New class.
(dummy_python_frame::dummy_python_frame): Rename from
push_dummy_python_frame.
(py_restore_tstate): Remove.

7 years agoUse gdbpy_ref in py_print_frame
Tom Tromey [Sat, 12 Nov 2016 18:57:45 +0000 (11:57 -0700)]
Use gdbpy_ref in py_print_frame

This changes py_print_frame to use gdbpy_ref in a few spots.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.

7 years agoRemove ensure_python_env
Tom Tromey [Sat, 12 Nov 2016 18:53:50 +0000 (11:53 -0700)]
Remove ensure_python_env

All of gdb has been converted away from ensure_python_env and
varobj_ensure_python_env now; so remove them.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (ensure_python_env, restore_python_env):
Remove.
* python/python-internal.h (ensure_python_env): Don't declare.
* varobj.h (varobj_ensure_python_env): Don't declare.
* varobj.c (varobj_ensure_python_env): Remove.

7 years agoUse gdbpy_enter_varobj in varobj_value_get_print_value
Tom Tromey [Sat, 12 Nov 2016 18:51:59 +0000 (11:51 -0700)]
Use gdbpy_enter_varobj in varobj_value_get_print_value

This changes the last function in varobj.c to use gdbpy_enter_varobj.

2017-01-10  Tom Tromey  <tom@tromey.com>

* varobj.c (varobj_value_get_print_value): Use
gdbpy_enter_varobj.

7 years agoChange type of encoding argument to gdbpy_extract_lazy_string
Tom Tromey [Sat, 12 Nov 2016 18:48:48 +0000 (11:48 -0700)]
Change type of encoding argument to gdbpy_extract_lazy_string

This changes gdbpy_extract_lazy_string's "encoding" argument to be a
unique_xmalloc_ptr.  I chose this rather than std::string because it
can sometimes be NULL.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-prettyprint.c (print_string_repr, print_children):
Update.
* python/py-lazy-string.c (gdbpy_extract_lazy_string): Change type
of "encoding".
* varobj.c (varobj_value_get_print_value): Update.
* python/python-internal.h (gdbpy_extract_lazy_string): Update.

7 years agoUse gdbpy_enter_varobj in more of varobj.c
Tom Tromey [Sat, 12 Nov 2016 18:37:52 +0000 (11:37 -0700)]
Use gdbpy_enter_varobj in more of varobj.c

This converts most of the remaining functions in varobj.c to use
gdbpy_enter_varobj.

2017-01-10  Tom Tromey  <tom@tromey.com>

* varobj.c (varobj_get_display_hint)
(dynamic_varobj_has_child_method, install_new_value_visualizer)
(varobj_set_visualizer, free_variable): Use
gdbpy_enter_varobj.

7 years agoUse gdbpy_enter in python.c
Tom Tromey [Sat, 12 Nov 2016 18:32:05 +0000 (11:32 -0700)]
Use gdbpy_enter in python.c

This changes the last functions in python.c to use gdbpy_enter.  I
split gdbpy_finish_initialization into two functions in order to avoid
some "goto"s.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (python_command): Use gdbpy_enter, gdbpy_ref.
(do_finish_initialization): New function.  Use gdbpy_ref.
(gdbpy_finish_initialization): Use gdbpy_enter.  Call
do_finish_initialization.

7 years agoUse gdbpy_enter in py-param.c
Tom Tromey [Sat, 12 Nov 2016 18:23:36 +0000 (11:23 -0700)]
Use gdbpy_enter in py-param.c

This converts the remaining functions in py-param.c to use
gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-param.c (get_set_value, get_show_value): Use
gdbpy_enter, gdbpy_ref.

7 years agoUse gdbpy_enter in fnpy_call
Tom Tromey [Sat, 12 Nov 2016 18:15:46 +0000 (11:15 -0700)]
Use gdbpy_enter in fnpy_call

This changes fnpy_call to use gdbpy_enter and gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-function.c (fnpy_call): Use gdbpy_enter, gdbpy_ref.

7 years agoUse gdbpy_enter in cmdpy_function
Tom Tromey [Sat, 12 Nov 2016 18:12:41 +0000 (11:12 -0700)]
Use gdbpy_enter in cmdpy_function

This changes cmdpy_function to use gdbpy_enter and gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-cmd.c (cmdpy_function): Use gdbpy_enter, gdbpy_ref.

7 years agoUse gdbpy_enter_varobj in py-varobj.c
Tom Tromey [Wed, 9 Nov 2016 03:14:32 +0000 (20:14 -0700)]
Use gdbpy_enter_varobj in py-varobj.c

This converts the remaining functions in py-varobj.c to use
gdbpy_enter_varobj.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-varobj.c (py_varobj_iter_dtor, py_varobj_iter_next):
Use gdbpy_enter_varobj.

7 years agoIntroduce gdbpy_enter_varobj and use it
Tom Tromey [Tue, 8 Nov 2016 23:18:24 +0000 (16:18 -0700)]
Introduce gdbpy_enter_varobj and use it

This introduces gdbpy_enter_varobj, a subclass of gdbpy_enter; then
changes one function in py-varobj.c to use it.  gdbpy_enter_varobj
takes a varobj as an argument, similar to varobj_ensure_python_env.

2017-01-10  Tom Tromey  <tom@tromey.com>

* varobj.c (gdbpy_enter_varobj): New constructor.
* python/python-internal.h (gdbpy_enter_varobj): New class.
* python/py-varobj.c (py_varobj_get_iterator): Use
gdbpy_enter_varobj.

7 years agoUse gdbpy_enter in py-xmethod.c
Tom Tromey [Tue, 8 Nov 2016 22:47:39 +0000 (15:47 -0700)]
Use gdbpy_enter in py-xmethod.c

This changes the remaining functions in py-xmethod.c to use
gdbpy_enter; using gdbpy_ref and unique_xmalloc_ptr as
appropriate.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-xmethods.c (gdbpy_get_xmethod_result_type): Use
gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.
(gdbpy_invoke_xmethod): Use gdbpy_ref, gdbpy_enter.
(gdbpy_get_xmethod_arg_types): Use gdbpy_ref,
unique_xmalloc_ptr.
(gdbpy_get_xmethod_arg_types): Use gdbpy_ref, gdbpy_enter.

7 years agoUse gdbpy_ref in invoke_match_method
Tom Tromey [Tue, 8 Nov 2016 22:35:24 +0000 (15:35 -0700)]
Use gdbpy_ref in invoke_match_method

Change invoke_match_method to use gdbpy_ref.
I neglected to convert this function in my earlier series.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-xmethods.c (invoke_match_method): Use
gdbpy_ref.

7 years agoUse gdbpy_enter in gdbpy_get_matching_xmethod_workers
Tom Tromey [Tue, 8 Nov 2016 22:34:55 +0000 (15:34 -0700)]
Use gdbpy_enter in gdbpy_get_matching_xmethod_workers

Change gdbpy_get_matching_xmethod_workers to use gdbpy_enter and
gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): use
gdbpy_enter, gdbpy_ref.

7 years agoUse gdbpy_enter in python_interactive_command
Tom Tromey [Tue, 8 Nov 2016 22:15:01 +0000 (15:15 -0700)]
Use gdbpy_enter in python_interactive_command

This changes python_interactive_command to use gdbpy_enter.
Previously this function was leaving a dangling cleanup -- this is
sort of ok in a command function, but IMO it's still better to clean
up.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (python_interactive_command): Use gdbpy_enter.

7 years agoUse gdbpy_enter in gdbpy_before_prompt_hook
Tom Tromey [Tue, 8 Nov 2016 22:13:49 +0000 (15:13 -0700)]
Use gdbpy_enter in gdbpy_before_prompt_hook

Change gdbpy_before_prompt_hook to use gdbpy_enter and gdbpy_ref.
This also rearranges the function a tiny bit to make it more clear.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (gdbpy_before_prompt_hook): Use gdbpy_enter,
gdbpy_ref.

7 years agoUse gdbpy_enter in py-prettyprint.c
Tom Tromey [Tue, 8 Nov 2016 18:38:22 +0000 (11:38 -0700)]
Use gdbpy_enter in py-prettyprint.c

Change py-prettyprint.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Use
gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.

7 years agoIntroduce htab_up and use gdbpy_enter in py-framefilter.c
Tom Tromey [Tue, 8 Nov 2016 18:11:55 +0000 (11:11 -0700)]
Introduce htab_up and use gdbpy_enter in py-framefilter.c

This introduces a new "htab_up" typedef, which is a std::unique_ptr
that can call htab_delete.  Then it changes some code in
py-framefilter.c to use both gdbpy_enter and the new htab_up.

2017-01-10  Tom Tromey  <tom@tromey.com>

* utils.h (htab_deleter): New struct.
(htab_up): New typedef.
* python/py-framefilter.c (gdbpy_apply_frame_filter): Use
gdbpy_enter, gdbpy_ref, htab_up.

7 years agoUse gdbpy_enter in py-unwind.c
Tom Tromey [Tue, 8 Nov 2016 03:41:50 +0000 (20:41 -0700)]
Use gdbpy_enter in py-unwind.c

Change py-unwind.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-unwind.c (pending_frame_invalidate): Remove.
(pyuw_sniffer): Use gdbpy_enter and gdbpy_ref.

7 years agoUse gdbpy_enter in py-xmethods.c
Tom Tromey [Mon, 7 Nov 2016 23:13:40 +0000 (16:13 -0700)]
Use gdbpy_enter in py-xmethods.c

Change the simple parts of py-xmethods.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-xmethods.c (gdbpy_free_xmethod_worker_data)
(gdbpy_clone_xmethod_worker_data): Use gdbpy_enter.

7 years agoUse gdbpy_enter in py-type.c
Tom Tromey [Mon, 7 Nov 2016 23:12:17 +0000 (16:12 -0700)]
Use gdbpy_enter in py-type.c

Change py-type.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-type.c (save_objfile_types): Use gdbpy_enter.

7 years agoUse gdbpy_enter in python.c
Tom Tromey [Mon, 7 Nov 2016 23:11:37 +0000 (16:11 -0700)]
Use gdbpy_enter in python.c

Change the simple parts of python.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/python.c (gdbpy_eval_from_control_command)
(gdbpy_source_script, gdbpy_run_events)
(gdbpy_source_objfile_script, gdbpy_execute_objfile_script)
(gdbpy_free_type_printers, gdbpy_finish_initialization): Use
gdbpy_enter.

7 years agoUse gdbpy_enter in py-progspace.c
Tom Tromey [Mon, 7 Nov 2016 23:08:36 +0000 (16:08 -0700)]
Use gdbpy_enter in py-progspace.c

Change py-progspace.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-progspace.c (py_free_pspace): Use gdbpy_enter.

7 years agoUse gdbpy_enter in py-objfile.c
Tom Tromey [Mon, 7 Nov 2016 23:07:53 +0000 (16:07 -0700)]
Use gdbpy_enter in py-objfile.c

Change py-objfile.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-objfile.c (py_free_objfile): Use gdbpy_enter.

7 years agoUse gdbpy_enter in py-inferior.c
Tom Tromey [Mon, 7 Nov 2016 23:06:26 +0000 (16:06 -0700)]
Use gdbpy_enter in py-inferior.c

Change py-inferior.c to use gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-inferior.c (python_on_normal_stop, python_on_resume)
(python_on_inferior_call_pre, python_on_inferior_call_post)
(python_on_memory_change, python_on_register_change)
(python_inferior_exit, python_new_objfile, add_thread_object)
(delete_thread_object, py_free_inferior): Use gdbpy_enter.