external/binutils.git
8 years agoAdd bound related fields to the siginfo structure
Walfred Tedeschi [Tue, 2 Feb 2016 10:58:36 +0000 (11:58 +0100)]
Add bound related fields to the siginfo structure

Both Linux and glibc have introduced bound related fields in the
segmentation fault fields of the siginfo_t type. Add the new fields
to our x86's siginfo_t type too.

Kernel patch:
http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=ee1b58d36aa1b5a79eaba11f5c3633c88231da83

Glibc patch:
http://repo.or.cz/w/glibc.git/commit/d4358b51c26a634eb885955aea06cad26af6f696

2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>

gdb/ChangeLog:

* linux-tdep.c (linux_get_siginfo_type): Add the _addr_bnd
structure to the siginfo if extra_fields contains
LINUX_SIGINFO_FIELD_ADDR_BND.

8 years agoUse linux_get_siginfo_type_with_fields for x86
Walfred Tedeschi [Tue, 2 Feb 2016 10:50:17 +0000 (11:50 +0100)]
Use linux_get_siginfo_type_with_fields for x86

Use linux_get_siginfo_type_with_fields for adding bound fields on
segmentation fault for i386/amd64 siginfo.

2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>

gdb/ChangeLog:

* linux-tdep.h (linux_get_siginfo_type_with_fields): Make extern.
* linux-tdep.c (linux_get_siginfo_type_with_fields): Make extern.
* i386-linux-tdep.h (x86_linux_get_siginfo_type): New
function.
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Add
x86_linux_get_siginfo_type for the amd64 abi.
* i386-linux-tdep.c (x86_linux_get_siginfo_type): New
function.
(i386_linux_init_abi): Add new function at the i386 ABI
initialization.

8 years agoPreparation for new siginfo on Linux
Walfred Tedeschi [Tue, 2 Feb 2016 10:46:28 +0000 (11:46 +0100)]
Preparation for new siginfo on Linux

First add new structure and function to allow architecture customization
for the siginfo structure.

2016-01-15  Walfred Tedeschi  <walfred.tedeschi@intel.com>

gdb/ChangeLog:

* linux-tdep.h (linux_siginfo_extra_field_values): New enum values.
(linux_siginfo_extra_fields): New enum type.
* linux-tdep.c (linux_get_siginfo_type_with_fields): New function.
(linux_get_siginfo_type): Use new function.

8 years agoMerge gdb and gdbserver implementations for siginfo
Walfred Tedeschi [Tue, 2 Feb 2016 10:42:56 +0000 (11:42 +0100)]
Merge gdb and gdbserver implementations for siginfo

Extract the compatible siginfo handling from amd64-linux-nat.c and
gdbserver/linux-x86-low to a new file nat/amd64-linux-siginfo.c.

2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>

gdb/ChangeLog:

* nat/amd64-linux-siginfo.c: New file.
* nat/amd64-linux-siginfo.h: New file.
* Makefile.in (HFILES_NO_SRCDIR): Add nat/amd64-linux-siginfo.h.
(amd64-linux-siginfo.o): New rule.
* config/i386/linux64.mh (NATDEPFILES): Add amd64-linux-siginfo.o.
* amd64-linux-nat.c (nat/amd64-linux-siginfo.h): New include.
(compat_siginfo_from_siginfo, siginfo_from_compat_siginfo)
(compat_x32_siginfo_from_siginfo, siginfo_from_compat_x32_siginfo)
(compat_timeval, compat_sigval, compat_x32_clock, cpt_si_pid)
(cpt_si_uid, cpt_si_timerid, cpt_si_overrun, cpt_si_status)
(cpt_si_utime, cpt_si_stime, cpt_si_ptr, cpt_si_addr, cpt_si_band)
(cpt_si_fd, si_timerid, si_overrun): Move to nat/amd64-linux-siginfo.c.

gdb/gdbserver/ChangeLog:

* configure.srv (x86_64-*-linux*): Add amd64-linux-siginfo.o
to srv_tgtobj.
(i[34567]86-*-linux*): Add amd64-linux-siginfo.o
to srv_tgtobj.
* linux-x86-low.c [__x86_64__]: Include
"nat/amd64-linux-siginfo.h".
(compat_siginfo_from_siginfo, siginfo_from_compat_siginfo)
(compat_x32_siginfo_from_siginfo, siginfo_from_compat_x32_siginfo)
(compat_timeval, compat_sigval, compat_x32_clock, cpt_si_pid)
(cpt_si_uid, cpt_si_timerid, cpt_si_overrun, cpt_si_status)
(cpt_si_utime, cpt_si_stime, cpt_si_ptr, cpt_si_addr, cpt_si_band)
(cpt_si_fd, si_timerid, si_overrun): Move from
nat/amd64-linux-siginfo.c.
* Makefile.in (amd64-linux-siginfo.o:): New rule.

8 years agoAutomatic date update in version.in
GDB Administrator [Tue, 2 Feb 2016 00:00:09 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoDon't add DT_NEEDED for unmatched symbol
H.J. Lu [Mon, 1 Feb 2016 23:49:52 +0000 (15:49 -0800)]
Don't add DT_NEEDED for unmatched symbol

Don't add DT_NEEDED if a symbol from a library loaded via DT_NEEDED
doesn't match the symbol referenced by regular object.

bfd/

PR ld/19553
* elflink.c (elf_link_add_object_symbols): Don't add DT_NEEDED
if a symbol from a library loaded via DT_NEEDED doesn't match
the symbol referenced by regular object.

ld/testsuite/

PR ld/19553
* testsuite/ld-elf/indirect.exp: Run tests for PR ld/19553.
* testsuite/ld-elf/pr19553.map: New file.
* testsuite/ld-elf/pr19553.map: Likewise.
* testsuite/ld-elf/pr19553a.c: Likewise.
* testsuite/ld-elf/pr19553b.c: Likewise.
* testsuite/ld-elf/pr19553b.out: Likewise.
* testsuite/ld-elf/pr19553c.c: Likewise.
* testsuite/ld-elf/pr19553c.out: Likewise.
* testsuite/ld-elf/pr19553d.c: Likewise.
* testsuite/ld-elf/pr19553d.out: Likewise.

8 years agogdb.texinfo (Value Sizes): Fix typo.
Doug Evans [Mon, 1 Feb 2016 23:48:56 +0000 (15:48 -0800)]
gdb.texinfo (Value Sizes): Fix typo.

8 years agogdb.texinfo (Skipping Over Functions and Files): Fix typo.
Doug Evans [Mon, 1 Feb 2016 23:39:23 +0000 (15:39 -0800)]
gdb.texinfo (Skipping Over Functions and Files): Fix typo.

8 years agogdb.base/skip.exp: Clean up multiple references to same test name.
Doug Evans [Mon, 1 Feb 2016 23:22:05 +0000 (15:22 -0800)]
gdb.base/skip.exp: Clean up multiple references to same test name.

8 years agoMention PR remote/19496 in gdb/testsuite/ChangeLog entry
Pedro Alves [Mon, 1 Feb 2016 19:22:25 +0000 (19:22 +0000)]
Mention PR remote/19496 in gdb/testsuite/ChangeLog entry

8 years agoTest gdb.threads/forking-threads-plus-breakpoint.exp with displaced stepping off
Pedro Alves [Mon, 1 Feb 2016 18:48:04 +0000 (18:48 +0000)]
Test gdb.threads/forking-threads-plus-breakpoint.exp with displaced stepping off

This exposes the internal error Don mentioned in PR19496:

  (1) internal error --  gdb/target.c:2713: internal-error: Can't determine the current address space of thread

More analysis here:

  https://sourceware.org/ml/gdb-patches/2016-01/msg00685.html

The (now kfailed) internal error looks like:

 continue &
 Continuing.
 (gdb) PASS: gdb.threads/forking-threads-plus-breakpoint.exp: cond_bp_target=1: detach_on_fork=on: displaced=off: continue &
 [New Thread 2846.2847]
 (...)
 [New Thread 2867.2867]
 /home/pedro/gdb/mygit/src/gdb/target.c:2723: internal-error: Can't determine the current address space of thread Thread 2846.2846

 A problem internal to GDB has been detected,
 further debugging may prove unreliable.
 Quit this debugging session? (y or n) KFAIL: gdb.threads/forking-threads-plus-breakpoint.exp: cond_bp_target=1: detach_on_fork=on: displaced=off: inferior 1 exited (GDB internal error) (PRMS: remote/19496)
 Resyncing due to internal error.

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

PR remote/19496
* gdb.threads/forking-threads-plus-breakpoint.exp
(displaced_stepping_supported): New global.
(probe_displaced_stepping_support): New procedure.
(do_test): Add 'displaced' parameter, and use it.
(top level): Check for displaced stepping support.  Add displaced
stepping on/off testing axis.

8 years agogdb: Guard against undefined behaviour in mi-vla-fortran.exp
Andrew Burgess [Fri, 11 Dec 2015 19:58:50 +0000 (19:58 +0000)]
gdb: Guard against undefined behaviour in mi-vla-fortran.exp

The test gdb.mi/mi-vla-fortran.exp reveals an issue with the DWARF
generated by gfortran.

In the test a pointer variable 'pvla2' is created:
    real, pointer :: pvla2 (:, :)

Initially this variable will be unassociated, so something like this:
    l = associated(pvla2)

should return false.

In the test gdb stops at a point _before_ pvla2 is associated with
anything, and we then try to print pvla2, the expectation is that gdb
should reply <not associated>.

The problem is that the data the DWARF directs gdb to read (to identify
if the variable is associated or not) is not initialised until the first
time pvla2 is accessed.

As a result gdb ends up reading uninitialised memory, sometimes this
uninitialised memory indicates the variable is associated (when it's
not).  This first mistake can lead to a cascade of errors, reading
uninitialised memory, with the result that gdb builds an invalid type to
associate with the variable pvla2.

In some cases, this invalid type can be very large, which when we try to
print pvla2 causes gdb to allocate a large amount of memory.

A recent commit added a new gdb variable 'max-value-size', which
prevents gdb from allocating values of extreme size.  As a result
directly trying to print pvla2 will now now error rather than allocate a
large amount of memory.

However, some of the later tests create a varobj for pvla2, and then
ask for the children of that varobj to be displayed.  In the case where
an invalid type has been computed for pvla2 then the number of children
can be wrong, and very big, in which case trying to display all of these
children can cause gdb to consume an excessive amount of memory.

This commit first detects if printing pvla2 triggers the max-value-size
error, if it does then we avoid all the follow on tests relating to the
unassociated pvla2, which avoids the second error printing the varobj
children.

gdb/testsuite/ChangeLog:

* gdb.mi/mi-vla-fortran.exp: Add XFAIL for accessing unassociated
pointer.  Don't perform further tests on the unassociated pointer
if the first test fails.

8 years agogdb: New set/show max-value-size command.
Andrew Burgess [Fri, 11 Dec 2015 17:37:49 +0000 (17:37 +0000)]
gdb: New set/show max-value-size command.

For languages with dynamic types, an incorrect program, or uninitialised
variables within a program, could result in an incorrect, overly large
type being associated with a value.  Currently, attempting to print such
a variable will result in gdb trying to allocate an overly large buffer.

If this large memory allocation fails then the result can be gdb either
terminating, or (due to memory contention) becoming unresponsive for the
user.

A new user visible variable in gdb helps guard against such problems,
two new commands are available:

   set max-value-size
   show max-value-size

The 'max-value-size' is the maximum size of memory in bytes that gdb
will allocate for the contents of a value.  Any attempt to allocate a
value with a size greater than this will result in an error.  The
initial default for this limit is set at 64k, this is based on a similar
limit that exists within the ada specific code.

It is possible for the user to set max-value-size to unlimited, in which
case the old behaviour is restored.

gdb/ChangeLog:

* value.c (max_value_size): New variable.
(MIN_VALUE_FOR_MAX_VALUE_SIZE): New define.
(show_max_value_size): New function.
(check_type_length_before_alloc): New function.
(allocate_value_contents): Call check_type_length_before_alloc.
(set_value_enclosing_type): Likewise.
(_initialize_values): Add set/show handler for max-value-size.
* NEWS: Mention new set/show command.

gdb/doc/ChangeLog:

* gdb.texinfo (Value Sizes): New section.
(Data): Add the 'Value Sizes' node to the menu.

gdb/testsuite/ChangeLog:

* gdb.base/max-value-size.c: New file.
* gdb.base/max-value-size.exp: New file.
* gdb.base/huge.exp: Disable max-value-size for this test.

8 years agoFix ARC TLS support.
Claudiu Zissulescu [Mon, 1 Feb 2016 17:03:56 +0000 (17:03 +0000)]
Fix ARC TLS support.

       * config/tc-arc.c (md_apply_fix): Allow addendum.
        (arc_reloc_op): Allow complex expressions for tpoff.
        (md_apply_fix): Handle resolved TLS local symbol.

* gas/arc/tls-relocs1.d: New file.
* gas/arc/tls-relocs1.s: Likewise.

8 years agoFix a problem building the ARM assembler using LLVM.
Loria [Mon, 1 Feb 2016 14:32:25 +0000 (14:32 +0000)]
Fix a problem building the ARM assembler using LLVM.

PR target/19311
* config/tc-arm.c (encode_arm_immediate): Recode to improve
efficiency and avoid an LLVM loop optimization bug.

8 years agoAdd support for importing data from ILF images.
Nathaniel Smith [Mon, 1 Feb 2016 13:44:15 +0000 (13:44 +0000)]
Add support for importing data from ILF images.

* peicode.h (pe_ILF_build_a_bfd): Create an import symbol for both
CODE and DATA.

8 years agoFix error building Microblaze assembler on a 32-bit host.
Nick Clifton [Mon, 1 Feb 2016 11:36:59 +0000 (11:36 +0000)]
Fix error building Microblaze assembler on a 32-bit host.

* config/tc-microblaze.c (parse_imm): Fix compile time warning
message extending a negative 32-bit value into a larger signed
value on a 32-bit host.

8 years agox86 synthetic plt symbols
Alan Modra [Mon, 1 Feb 2016 10:57:02 +0000 (21:27 +1030)]
x86 synthetic plt symbols

Changing "pushq $1" in the following to "pushq $too_big" results in an
abort.  BFD shouldn't abort on (deliberately) bad user input.

 400480:       ff 25 9a 0b 20 00       jmpq   *0x200b9a(%rip)
 400486:       68 01 00 00 00          pushq  $0x1
 40048b:       e9 d0 ff ff ff          jmpq   400460 <_init+0x20>

* elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Don't abort on
an out of range reloc_index.
* elf32-i386.c (elf_i386_get_plt_sym_val): Likewise.

8 years agoFix undefined compilation behaviour shifting a value into the sign bit of a signed...
Michael McConville [Mon, 1 Feb 2016 10:41:32 +0000 (10:41 +0000)]
Fix undefined compilation behaviour shifting a value into the sign bit of a signed integer.

* cgen-dis.c (count_decodable_bits): Use unsigned value for mask
test bit.

8 years agoFix NetBSD build with BSD and GNU make(1).
Kamil Rytarowski [Mon, 1 Feb 2016 10:35:38 +0000 (10:35 +0000)]
Fix NetBSD build with BSD and GNU make(1).

* Makefile.am (OPTIONAL_BACKENDS): Add netbsd-core.lo.
(OPTIONAL_BACKENDS_CFILES): Add netbsd-core.c.
* Makefile.in: Regenerated.

8 years agoFix some comments in varobj.{c,h}
Simon Marchi [Mon, 1 Feb 2016 03:22:19 +0000 (22:22 -0500)]
Fix some comments in varobj.{c,h}

A few typos.  The comment about varobj_create has been misplaced since
the dawn of time.

gdb/ChangeLog:

* varobj.h (struct varobj): Fix typos in comments.
(struct lang_varobj_ops): Likewise.
* varobj.c (VAROBJ_TABLE_SIZE): Likewise.
(varobj_create): Move misplaced comment.

8 years agoelf64-s390.c: Fix -Werror=misleading-indentation
Jan Kratochvil [Mon, 1 Feb 2016 02:47:47 +0000 (03:47 +0100)]
elf64-s390.c: Fix -Werror=misleading-indentation

../../bfd/elf64-s390.c: In function 'elf_s390_reloc_name_lookup':
../../bfd/elf64-s390.c:340:5: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
     if (strcasecmp (elf64_s390_vtinherit_howto.name, r_name) == 0)
     ^~
../../bfd/elf64-s390.c:333:3: note: ...this 'for' clause, but it is not
   for (i = 0;
   ^~~

bfd/
* elf64-s390.c (elf_s390_reloc_name_lookup): Fix indentation.

8 years agoAutomatic date update in version.in
GDB Administrator [Mon, 1 Feb 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoFix /usr/bin/ld: final link failed: File truncated error on hppa.
John David Anglin [Sun, 31 Jan 2016 16:52:24 +0000 (11:52 -0500)]
Fix /usr/bin/ld: final link failed: File truncated error on hppa.

8 years agoCheck reloc against IFUNC symbol only with dynamic symbols
H.J. Lu [Sat, 30 Jan 2016 22:11:03 +0000 (14:11 -0800)]
Check reloc against IFUNC symbol only with dynamic symbols

There is no need to check relocation IFUNC symbol if there are no
dynamic symbols.

bfd/

PR ld/19539
* elf32-i386.c (elf_i386_reloc_type_class): Check relocation
against STT_GNU_IFUNC symbol only with dynamic symbols.
* elf64-x86-64.c (elf_x86_64_reloc_type_class): Likewise.

ld/

PR ld/19539
* testsuite/ld-elf/pr19539.d: New file.
* testsuite/ld-elf/pr19539.s: Likewise.
* testsuite/ld-elf/pr19539.t: Likewise.

8 years agoAutomatic date update in version.in
GDB Administrator [Sun, 31 Jan 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoAutomatic date update in version.in
GDB Administrator [Sat, 30 Jan 2016 00:00:09 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoFix two misleading indentation warnings
Simon Marchi [Fri, 29 Jan 2016 20:32:29 +0000 (15:32 -0500)]
Fix two misleading indentation warnings

Two small changes so everything builds with latest GCC and its
-Wmisleading-indentation.

In the aarch64-tdep.c case, the two misindented lines should actually be
part of the for loop.  It looks like the indentation is all done using
spaces in that file though...  I fixed it (changed for tabs + spaces) for
the lines I touched.

In the xcoffread.c case, we can simply remove the braces and fix the
indentation.

gdb/ChangeLog:

* aarch64-tdep.c (aarch64_record_asimd_load_store): Add braces
to for include additional lines.
* xcoffread.c (scan_xcoff_symtab): Remove unnecessary braces.

8 years agoReplace == with = in gas/configure.ac
H.J. Lu [Fri, 29 Jan 2016 15:47:45 +0000 (07:47 -0800)]
Replace == with = in gas/configure.ac

PR gas/19532
* configure.ac (compressed_debug_sections): Replace == with =.
* configure: Regenerated.

8 years agoReplace == with = in ld/configure.ac
H.J. Lu [Fri, 29 Jan 2016 15:47:13 +0000 (07:47 -0800)]
Replace == with = in ld/configure.ac

 PR ld/19533
* configure.ac (compressed_debug_sections): Replace == with =.
* configure: Regenerated.

8 years agoAdd testsuite/ to the last gas ChangeLog entry
H.J. Lu [Fri, 29 Jan 2016 13:01:07 +0000 (05:01 -0800)]
Add testsuite/ to the last gas ChangeLog entry

8 years agoAdd option -mfence-as-lock-add=[no|yes].
Andrew Senkevich [Fri, 29 Jan 2016 12:46:50 +0000 (15:46 +0300)]
Add option -mfence-as-lock-add=[no|yes].

With -mfence-as-lock-add=yes lfence, mfence and sfence will be encoded
as lock addl $0x0, (%{r,e}sp).

gas/:

    * config/tc-i386.c (avoid_fence): New.
    (output_insn): Encode as lock addl $0x0, (%{r,e}sp) if avoid_fence
    is true.
    (OPTION_FENCE_AS_LOCK_ADD): New.
    (md_longopts): Add -mfence-as-lock-add.
    (md_parse_option): Handle -mfence-as-lock-add.
    (md_show_usage): Add -mfence-as-lock-add=[no|yes].
    * doc/c-i386.texi (-mfence-as-lock-add): Document.

gas/testsuite/:

    * gas/i386/i386.exp: Run new tests.
    * gas/i386/fence-as-lock-add.s: New.
    * gas/i386/fence-as-lock-add-yes.d: Likewise.
    * gas/i386/fence-as-lock-add-no.d: Likewise.
    * gas/i386/x86-64-fence-as-lock-add-yes.d: Likewise.
    * gas/i386/x86-64-fence-as-lock-add-no.d: Likewise.

8 years agoAutomatic date update in version.in
GDB Administrator [Fri, 29 Jan 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoSet BFD_DECOMPRESS to decompress debug sections
H.J. Lu [Thu, 28 Jan 2016 21:29:53 +0000 (13:29 -0800)]
Set BFD_DECOMPRESS to decompress debug sections

We should set BFD_DECOMPRESS to decompress debug sections when reading in
DWARF debug sections.

bfd/

PR binutils/19523
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Set BFD_DECOMPRESS to
decompress debug sections.

binutils/

PR binutils/19523
* Makefile.am (check-DEJAGNU): Pass CC and CC_FOR_BUILD to
runtest.
* Makefile.in: Regenerated.
* testsuite/binutils-all/compress.exp (test_gnu_debuglink): New
proc.
Run test_gnu_debuglink for native ELF build.

8 years agoAdd ChangeLog entry for update to gdb.dlang demangle tests.
Iain Buclaw [Thu, 28 Jan 2016 20:53:51 +0000 (21:53 +0100)]
Add ChangeLog entry for update to gdb.dlang demangle tests.

8 years agoAlign dlang demangle tests with libiberty.
Iain Buclaw [Thu, 28 Jan 2016 20:47:44 +0000 (21:47 +0100)]
Align dlang demangle tests with libiberty.

gdb/testsuite/ChangeLog:
* gdb.dlang/demangle.exp: Sync tests from libiberty testsuite.

8 years agoSync libiberty with GCC.
Iain Buclaw [Thu, 28 Jan 2016 20:44:42 +0000 (21:44 +0100)]
Sync libiberty with GCC.

libiberty/ChangeLog:
* d-demangle.c (dlang_call_convention): Handle extern Objective-C
function calling convention.
(dlang_call_convention_p): Likewise.
(dlang_type): Likewise.
* testsuite/d-demangle-expected: Add coverage tests.

* d-demangle.c (dlang_function_args): Append ',' for variadic functions
only if parameters were seen before the elipsis symbol.
* testsuite/d-demangle-expected: Add coverage test for parameter-less
variadic functions.

* d-demangle.c (dlang_type): Handle function types only in the context
of seeing a pointer type symbol.
* testsuite/d-demangle-expected: Update function pointer tests.

8 years agoAdd rawmemchr to imported gnulib modules
Simon Marchi [Thu, 28 Jan 2016 18:49:46 +0000 (13:49 -0500)]
Add rawmemchr to imported gnulib modules

rawmemchr is a dependency of strchrnul, so it should be explicitly
listed.

gdb/ChangeLog:

* gnulib/import/Makefile.am: Regenerate.
* gnulib/import/Makefile.in: Regenerate.
* gnulib/import/m4/gnulib-cache.m4: Regenerate.
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add rawmemchr.

8 years agoImport strchrnul from gnulib and use it
Simon Marchi [Thu, 28 Jan 2016 15:28:56 +0000 (10:28 -0500)]
Import strchrnul from gnulib and use it

For a forthcoming patch, I need a "skip_to_colon" function.  I noticed
there are two skip_to_semicolon (one in gdb and one in gdbserver). I
thought we could put it in common/, and generalize it for any character.
It turns out that the strchrnul function does exactly that.  I imported
the corresponding module from gnulib, for those systems that do not have
it.

There are probably more places where this function can be used instead
of doing the work by hand (I am looking at
remote-utils.c::look_up_one_symbol).

gdb/ChangeLog:

* remote.c (skip_to_semicolon): Remove.
(remote_parse_stop_reply): Use strchrnul instead of
skip_to_semicolon.
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add
strchrnul.
* gnulib/aclocal.m4: Regenerate.
* gnulib/config.in: Regenerate.
* gnulib/configure: Regenerate.
* gnulib/import/Makefile.am: Regenerate.
* gnulib/import/Makefile.in: Regenerate.
* gnulib/import/m4/gnulib-cache.m4: Regenerate.
* gnulib/import/m4/gnulib-comp.m4: Regenerate.
* gnulib/import/m4/rawmemchr.m4: New file.
* gnulib/import/m4/strchrnul.m4: New file.
* gnulib/import/rawmemchr.c: New file.
* gnulib/import/rawmemchr.valgrind: New file.
* gnulib/import/strchrnul.c: New file.
* gnulib/import/strchrnul.valgrind: New file.

gdb/gdbserver/ChangeLog:

* server.c (skip_to_semicolon):  Remove.
(process_point_options): Use strchrnul instead of
skip_to_semicolon.

8 years ago[testsuite] Fix tiemout fail in gdb.fortran/vla-value.exp
Yao Qi [Thu, 28 Jan 2016 14:27:48 +0000 (14:27 +0000)]
[testsuite] Fix tiemout fail in gdb.fortran/vla-value.exp

In vla.f90, this single line of source is compiled to many instructions,

  vla2(:, :, :) = 1311                ! vla2-allocated

it is quite slow (about several minutes in my testing) to step over this
source line without range stepping.  This patch is to increase the timeout
value by 15 times, which is a magic number to make sure timeout disappears
in my testing with a slow arm-linux board.

gdb/testsuite:

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

* gdb.fortran/vla-value.exp: Wrap test with with_timeout_factor.

8 years agoFix GDB crash in dprintf.exp
Yao Qi [Thu, 28 Jan 2016 14:16:42 +0000 (14:16 +0000)]
Fix GDB crash in dprintf.exp

I see GDB crashes in dprintf.exp on aarch64-linux testing,

(gdb) PASS: gdb.base/dprintf.exp: agent: break 29
set dprintf-style agent^M
(gdb) PASS: gdb.base/dprintf.exp: agent: set dprintf style to agent
continue^M
Continuing.
ASAN:SIGSEGV
=================================================================
==22475==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x000000494820 sp 0x7fff389b83a0 bp 0x62d000082417 T0)
    #0 0x49481f in remote_add_target_side_commands /home/yao/SourceCode/gnu/gdb/git/gdb/remote.c:9190^M
    #1 0x49e576 in remote_add_target_side_commands /home/yao/SourceCode/gnu/gdb/git/gdb/remote.c:9174^M
    #2 0x49e576 in remote_insert_breakpoint /home/yao/SourceCode/gnu/gdb/git/gdb/remote.c:9240^M
    #3 0x5278b7 in insert_bp_location /home/yao/SourceCode/gnu/gdb/git/gdb/breakpoint.c:2734^M
    #4 0x52ac09 in insert_breakpoint_locations /home/yao/SourceCode/gnu/gdb/git/gdb/breakpoint.c:3159^M
    #5 0x52ac09 in update_global_location_list /home/yao/SourceCode/gnu/gdb/git/gdb/breakpoint.c:12686

the root cause of this problem in this case is about linespec and
symtab which produces additional incorrect location and a NULL is added to
bp_tgt->tcommands.  I posted a patch
https://sourceware.org/ml/gdb-patches/2015-12/msg00321.html to fix it
in linespec (the fix causes regression), but GDB still shouldn't add
NULL into bp_tgt->tcommands.  The logic of build_target_command_list
looks odd to me.  If we get something wrong in parse_cmd_to_aexpr (it
returns NULL), we shouldn't continue, instead we should set flag
null_command_or_parse_error.  This is what this patch does.  In the
meantime, we find build_target_condition_list has the same problem, so
fix it too.

gdb:

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

* breakpoint.c (build_target_command_list): Don't call continue
if aexpr is NULL.
(build_target_condition_list): Likewise.

8 years agoAutomatic date update in version.in
GDB Administrator [Thu, 28 Jan 2016 00:00:22 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agorx: Treat scalars larger than 8 bytes as aggregates in rx_push_dummy_call.
Kevin Buettner [Sat, 23 Jan 2016 22:06:08 +0000 (15:06 -0700)]
rx: Treat scalars larger than 8 bytes as aggregates in rx_push_dummy_call.

This patch fixes the following failures (which are also GDB internal errors)
for the -m64bit-doubles multilib:

FAIL: gdb.base/callfuncs.exp: p t_double_complex_values(dc1, dc2) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_double_complex_values(dc3, dc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_double_complex_many_args(dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc1, ldc2) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_values(ldc3, ldc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: p t_long_double_complex_many_args(ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1,ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_double_complex_values(dc1, dc2) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_double_complex_values(dc3, dc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_double_complex_many_args(dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_long_double_complex_values(ldc1, ldc2) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_long_double_complex_values(ldc3, ldc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_long_double_complex_many_args(ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4, ldc1, ldc2, ldc3, ldc4) (GDB internal error)
FAIL: gdb.base/callfuncs.exp: noproto: p t_long_double_complex_many_args(ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1,ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1, ldc1) (GDB internal error)
FAIL: gdb.base/varargs.exp: print find_max_double_real(4, dc1, dc2, dc3, dc4) (GDB internal error)
FAIL: gdb.base/varargs.exp: print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4) (GDB internal error)

The assertion failure which is tripped is:

  gdb_assert (arg_size <= 4);

While it may seem that the patch ought to disallow scalars larger than
4, scalars of size 8 are explicitly handled by the code elsewhere.

This came up because gcc has a complex type that is 16 bytes in length
when 64-bit doubles are used.

gdb/ChangeLog:

* rx-tdep.c (rx_push_dummy_call): Treat scalars larger than 8
bytes as aggregates.

8 years agoRemove trailing `]' in --enable-compressed-debug-sections
H.J. Lu [Wed, 27 Jan 2016 18:24:51 +0000 (10:24 -0800)]
Remove trailing `]' in --enable-compressed-debug-sections

* configure.ac (compressed_debug_sections): Remove trailing `]'.
* configure: Regenerated.

8 years agoAdd Keith Seitz as Linespec Maintainer
Joel Brobecker [Wed, 27 Jan 2016 09:54:37 +0000 (13:54 +0400)]
Add Keith Seitz as Linespec Maintainer

gdb/ChangeLog:

        * MAINTAINERS (Responsible Maintainers): Add Keith Seitz as
        Linespec Maintainers.

8 years agoAutomatic date update in version.in
GDB Administrator [Wed, 27 Jan 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoFix function comments
Simon Marchi [Tue, 26 Jan 2016 21:30:03 +0000 (16:30 -0500)]
Fix function comments

Two obvious fixes.

gdb/ChangeLog:

* common/common-utils.c (skip_spaces): Fix comment.
(skip_to_space_const): Likewise.

8 years agoFix subject verb agreement in the description of several debug settings.
John Baldwin [Fri, 22 Jan 2016 16:56:18 +0000 (08:56 -0800)]
Fix subject verb agreement in the description of several debug settings.

gdb/doc/ChangeLog:

* gdb.texinfo (Debugging Output): Fix subject verb disagreements.

8 years agoRemove argument pc in get_next_pcs
Yao Qi [Tue, 26 Jan 2016 14:08:26 +0000 (14:08 +0000)]
Remove argument pc in get_next_pcs

Nowadays, get_next_pcs in linux_target_ops has two parameters PC
and REGCACHE.  Parameter PC looks redundant because it can be go
from REGCACHE.  The patch is to remove PC from the arguments for
various functions.

gdb:

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

* arch/arm-get-next-pcs.c (thumb_deal_with_atomic_sequence_raw):
Remove argument pc.  Get pc by regcache_read_pc.  Callers updated.
(arm_deal_with_atomic_sequence_raw): Likewise.
(thumb_get_next_pcs_raw): Likewise.
(arm_get_next_pcs_raw): Likewise.
(arm_get_next_pcs): Remove argument pc.  Callers updated.
* arch/arm-get-next-pcs.h (arm_get_next_pcs): Update declaration.

gdb/gdbserver:

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

* linux-arm-low.c (arm_gdbserver_get_next_pcs): Remove argument pc.
* linux-low.c (install_software_single_step_breakpoints): Don't
call regcache_read_pc.
* linux-low.h (struct linux_target_ops) <get_next_pcs>: Remove
argument pc.

8 years ago[GDBserver] Use regcache_read_pc in install_software_single_step_breakpoints
Yao Qi [Tue, 26 Jan 2016 14:08:26 +0000 (14:08 +0000)]
[GDBserver] Use regcache_read_pc in install_software_single_step_breakpoints

In install_software_single_step_breakpoints, we've got the regcache
of current_thread, so we don't have to bother get_pc to get pc,
instead we can get pc from regcache directly.  Note that the callers
of install_software_single_step_breakpoints have already switched
current_thread to LWP.

Since the pc is got from regcache_read_pc, in the next patch, we can
get pc inside the implementation of *the_low_target.get_next_pcs and
stop passing pc to *the_low_target.get_next_pcs.

gdb/gdbserver:

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

* linux-low.c (install_software_single_step_breakpoints): Call
regcache_read_pc instead of get_pc.

8 years ago[GDBserver] Block and unblock SIGIO
Yao Qi [Tue, 26 Jan 2016 13:50:22 +0000 (13:50 +0000)]
[GDBserver] Block and unblock SIGIO

Nowadays, GDBserver disables async io (by ignoring SIGIO) when process
a serial event, and enables async io (by installing signal handler) when
resume the inferior and wait.  GDBserver may miss SIGIO (by interrupt)
and doesn't process SIGIO in time, which is shown by
gdb.base/interrupt-noterm.exp.  In the test, GDB sends "continue &" and
then "interrupt".  if '\003' arrives at a period between GDBserver
receives vCont;c and enables async io, SIGIO is ignored because signal
handler isn't installed.  GDBserver waits for the inferior and can not
notice '\003' until it returns from wait.

This patch changes the code to install SIGIO handler early, but block
and unblock SIGIO as needed.  In this way, we don't remove SIGIO
handler, so SIGIO can't be ignored.  However, GDBserver needs to
remove the signal handler when connection is closed.

gdb/gdbserver:

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

* remote-utils.c (remote_close) [!USE_WIN32API]: Ignore SIGIO.
(unblock_async_io): Rename to ...
(block_unblock_async_io): ... it.  New function.
(enable_async_io): Don't install SIGIO handler.  Unblock it
instead.
(disable_async_io): Don't ignore SIGIO.  Block it instead.
(initialize_async_io): Install SIGIO handler.  Don't call
unblock_async_io.

8 years ago[GDBserver] Check input interrupt after reading in a packet
Yao Qi [Tue, 26 Jan 2016 13:50:22 +0000 (13:50 +0000)]
[GDBserver] Check input interrupt after reading in a packet

GDBserver may read some packet together with '\003' in one go.  We've
already checked '\003' first when reading packet by my patch,

  Check input interrupt first when reading packet
  https://sourceware.org/ml/gdb-patches/2016-01/msg00057.html

but if we don't check '\003' *after* each packet, the interrupt will
be processed next time GDBserver reads from the buffer, so that the
interrupt isn't processed in time.  For example, GDB sends vCont;c and
interrupt (see gdb.base/interrupt-noterm.exp), we'll resume the
inferior and wait once packet vCont;c is seen.  If we don't check the
interrupt character after vCont;c packet, interrupt character will stay
in the buffer unattended until GDBserver returns from the wait, which
may take a while.  Note that since we've read '\003' from file
descriptor, SIGIO signal handler input_interrupt doesn't help either.

This issue can be exposed by hacking the end of getpkt like
@@ -1041,6 +1050,9 @@ getpkt (char *buf)
        }
     }

+  if (readchar_bufcnt > 0)
+    gdb_assert (*readchar_bufp != '\003');
+
   return bp - buf;
 }

and this can trigger internal error,
(gdb) PASS: gdb.base/interrupt-noterm.exp: interrupt
Remote connection closed^M
(gdb) FAIL: gdb.base/interrupt-noterm.exp: inferior received SIGINT
Remote debugging from host 10.2.206.40^M
/home/yao/SourceCode/gnu/gdb/git/gdb/gdbserver/remote-utils.c:1054: A problem internal to GDBserver has been detected.^M
getpkt: Assertion `*readchar_bufp != '\003'' failed.^M

This patch is to peek the buffer, if it is '\003', consume it and call
*the_target->request_interrupt.

gdb/gdbserver:

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

* remote-utils.c (getpkt): If the buffer isn't empty, and the
first character is '\003', call *the_target->request_interrupt.

8 years agoSkip thumb2 conditional backward search test for PE based targets.
Nick Clifton [Tue, 26 Jan 2016 09:13:38 +0000 (09:13 +0000)]
Skip thumb2 conditional backward search test for PE based targets.

* testsuite/gas/arm/thumb2_it_search.d: Skip for PE targets.

8 years agoRename OPTION_OMIT_LOCK_PREFIX to OPTION_MOMIT_LOCK_PREFIX
H.J. Lu [Tue, 26 Jan 2016 01:01:11 +0000 (17:01 -0800)]
Rename OPTION_OMIT_LOCK_PREFIX to OPTION_MOMIT_LOCK_PREFIX

Use OPTION_MXXX for -mxxx option in x86 assembler.

* config/tc-i386.c (OPTION_OMIT_LOCK_PREFIX): Renamed to ...
(OPTION_MOMIT_LOCK_PREFIX): This.
(md_longopts): Updated.
(md_parse_option): Likewise.

8 years agoAutomatic date update in version.in
GDB Administrator [Tue, 26 Jan 2016 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoFix GCC6 -Wmisleading-indentation issues.
Mark Wielaard [Mon, 25 Jan 2016 19:29:54 +0000 (20:29 +0100)]
Fix GCC6 -Wmisleading-indentation issues.

GCC6 will warn about misleading indentation issues like:

gdb/ada-lang.c: In function ‘ada_evaluate_subexp’:
ada-lang.c:11423:9: error: statement is indented as if it were guarded by...
         arg1 = unwrap_value (arg1);
         ^~~~

gdb/ada-lang.c:11421:7: note: ...this ‘else’ clause, but it is not
       else
       ^~~~

In this case it would be a bug except for the fact the if clause already
returned early. So this misindented statement really only got executed
for the else case. But it could easily mislead a reader, so adding a
proper else block is the correct solution.

In case of c-typeprint.c (c_type_print_base) the if statement is indeed
misleadingly indented, but not a bug. Just indent correctly. The inflow.c
(terminal_ours_1) misindented block comes from the removal of an if clause
in commit d9d2d8b which looks correct. Just introduce an else to fixup the
indentation of the block. The linux-record.c misleadingly indented return
statements are just that. Misleading to the reader, but not actual bugs.
Just unindent them so they don't look like they fall under the wrong if
clause.

8 years agoAvoid the use of gp-relative addressing when abicalls are in effect.
Catherine Moore [Mon, 25 Jan 2016 20:39:40 +0000 (12:39 -0800)]
Avoid the use of gp-relative addressing when abicalls are in effect.

8 years agoPrevent .noinit section from incorrect placement for AVR.
Denis Chertykov [Mon, 25 Jan 2016 19:33:25 +0000 (22:33 +0300)]
Prevent .noinit section from incorrect placement for AVR.

When .data and .bss sections are empty .noinit section is placed at data
region's start. This will be incorrect for devices that has different
data start address than data region start in linker script.
The patch updates .noinit section's VMA to end of .bss section. So, .noinit
section will be placed at .data section address (-Tdata=<address>) when .data
and .bss sections are empty.

ld/

* scripttempl/avr.sc (.noinit): Force .noinit VMA to end of .bss VMA.
* scripttempl/avrtiny.sc (.noinit): Likewise.

8 years agoRemove new_thread_notify and dead_thread_notify
Yao Qi [Mon, 25 Jan 2016 16:11:43 +0000 (16:11 +0000)]
Remove new_thread_notify and dead_thread_notify

They were added by

  PATCH: Multithreaded debugging for gdbserver
  https://sourceware.org/ml/gdb-patches/2002-06/msg00157.html

but as a no-op, and the last usage of them was removed by

  [gdbserver/RFC/RFA] Implement multiprocess extensions, add linux multiproces support.
  https://sourceware.org/ml/gdb-patches/2009-03/msg00667.html

This patch is to remove them.

gdb/gdbserver:

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

* remote-utils.c (new_thread_notify): Remove.
(dead_thread_notify): Likewise.
* remote-utils.h (new_thread_notify): Remove declaration.
(dead_thread_notify): Likewise.

8 years agoARC/BFD: Fix a build error from `index' shadowing a global declaration
Maciej W. Rozycki [Mon, 25 Jan 2016 16:06:46 +0000 (16:06 +0000)]
ARC/BFD: Fix a build error from `index' shadowing a global declaration

bfd/
* elf32-arc.c (elf_arc_finish_dynamic_symbol): Rename `index' to
`dynindx'.

8 years ago[PATCH[ARM]Check mapping symbol while backward searching for IT block.
Renlin Li [Mon, 25 Jan 2016 15:06:54 +0000 (15:06 +0000)]
[PATCH[ARM]Check mapping symbol while backward searching for IT block.

opcodes/

* arm-dis.c (mapping_symbol_for_insn): New function.
(find_ifthen_state): Call mapping_symbol_for_insn().

gas/

* testsuite/gas/arm/thumb2_it_search.d: New.
* testsuite/gas/arm/thumb2_it_search.s: New.

8 years agoFix PR 19461: strange "info thread" behavior in non-stop
Pedro Alves [Mon, 25 Jan 2016 12:00:20 +0000 (12:00 +0000)]
Fix PR 19461: strange "info thread" behavior in non-stop

If you have "set follow-fork child" set, then if you do "info threads"
right after a fork, and before the child reports any other event to
GDB core, you'll see:

(gdb) info threads
  Id   Target Id         Frame
* 1.1  Thread 0x7ffff7fc1740 (LWP 31875) "fork-plus-threa" (running)
  2.1  process 31879 "fork-plus-threa" Selected thread is running.
(gdb)

The "Selected thread is running." bit is a bogus error.  That was GDB
trying to fetch the current frame of thread 2.1, because the external
runnning state is "stopped", and then throwing an error because the
thread is actually running.

This actually affects all-stop + schedule-multiple as well.

The problem here is that on a fork event, GDB doesn't update the
external parent/child running states.

New comprehensive test included.  The "kill inferior 1" / "kill
inferior 2" bits also trip on PR gdb/19494 (hang killing unfollowed
fork children), which was fixed by the previous patch.

gdb/ChangeLog:
2016-01-25  Pedro Alves  <palves@redhat.com>

PR threads/19461
* infrun.c (handle_inferior_event_1) <fork/vfork>: Update
parent/child running states.

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

PR threads/19461
* gdb.base/fork-running-state.c: New file.
* gdb.base/fork-running-state.exp: New file.

8 years agoFix PR 19494: hang when killing unfollowed fork children
Pedro Alves [Mon, 25 Jan 2016 12:00:20 +0000 (12:00 +0000)]
Fix PR 19494: hang when killing unfollowed fork children

linux_nat_kill relies on get_last_target_status to determine whether
the current inferior is stopped at a unfollowed fork/vfork event.
This is bad because many things can happen ever since we caught the
fork/vfork event...  This commit rewrites that code to instead walk
the thread list looking for unfollowed fork events, similarly to what
was done for remote.c.

New test included.  The main idea of the test is make sure that when
the program stops for a fork catchpoint, and the user kills the
parent, gdb also kills the unfollowed fork child.  Since the child
hasn't been added as an inferior at that point, we need some other
portable way to detect that the child is gone.  The test uses a pipe
for that.  The program forks twice, so you have grandparent, child and
grandchild.  The grandchild inherits the write side of the pipe.  The
grandparent hangs reading from the pipe, since nothing ever writes to
it.  If, when GDB kills the child, it also kills the grandchild, then
the grandparent's pipe read returns 0/EOF and the test passes.
Otherwise, if GDB doesn't kill the grandchild, then the pipe read
never returns and the test times out, like:

 FAIL: gdb.base/catch-fork-kill.exp: fork-kind=fork: exit-kind=kill: fork: kill parent (timeout)
 FAIL: gdb.base/catch-fork-kill.exp: fork-kind=vfork: exit-kind=kill: vfork: kill parent (timeout)

No regressions on x86_64 Fedora 20.  New test passes with gdbserver as
well.

gdb/ChangeLog:
2016-01-25  Pedro Alves  <palves@redhat.com>

PR gdb/19494
* linux-nat.c (kill_one_lwp): New, factored out from ...
(kill_callback): ... this.
(kill_wait_callback): New, factored out from ...
(kill_wait_one_lwp): ... this.
(kill_unfollowed_fork_children): New function.
(linux_nat_kill): Use it.

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

PR gdb/19494
* gdb.base/catch-fork-kill.c: New file.
* gdb.base/catch-fork-kill.exp: New file.

8 years agoMove foreach_with_prefix to lib/gdb.exp
Pedro Alves [Mon, 25 Jan 2016 12:00:18 +0000 (12:00 +0000)]
Move foreach_with_prefix to lib/gdb.exp

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

* gdb.base/step-sw-breakpoint-adjust-pc.exp (foreach_with_prefix):
Delete, moved to lib/gdb.exp.
* gdb.threads/forking-threads-plus-breakpoint.exp
(foreach_with_prefix): Likewise.
* gdb.threads/process-dies-while-handling-bp.exp
(foreach_with_prefix): Likewise.
* lib/gdb.exp (foreach_with_prefix): New procedure.

8 years agoDelete ChangeLog entry from the wrong place
Pedro Alves [Mon, 25 Jan 2016 12:54:48 +0000 (12:54 +0000)]
Delete ChangeLog entry from the wrong place

Missed actually removing this in 37e42b4fe92c...

8 years agogdb.trace/testsuite: Bump stack collection fudge factor.
Marcin Kościelnicki [Sat, 23 Jan 2016 14:42:11 +0000 (15:42 +0100)]
gdb.trace/testsuite: Bump stack collection fudge factor.

These two tests collect 64 words from $sp onwards, hoping that's enough
to capture a few whole stack frames.  Unfortunately, that's not enough
for s390, which tends to have large frame sizes - minimum 24 words on
s390, 20 on s390x (which just barely passes).  Bump it to 128 words,
let's hope no machine needs more.

Tested on x86_64, s390, s390x.

gdb/testsuite/ChangeLog:

* gdb.trace/backtrace.exp: Bump stack collection fudge factor.
* gdb.trace/entry-values.exp: Bump stack collection fudge factor.

8 years agoAdd missing end-of-comment marker to previous delta. (Doh!)
Nick Clifton [Mon, 25 Jan 2016 09:44:18 +0000 (09:44 +0000)]
Add missing end-of-comment marker to previous delta.  (Doh!)

8 years agoFix memory corruption on Mach-O systems by suppressing a memory tidy up.
Nick Clifton [Mon, 25 Jan 2016 09:35:33 +0000 (09:35 +0000)]
Fix memory corruption on Mach-O systems by suppressing a memory tidy up.

PR target/19435
* mach-o.c (bfd_mach_o_close_and_cleanup): Suppress code to free
dsym filename buffer.

8 years agoAutomatic date update in version.in
GDB Administrator [Mon, 25 Jan 2016 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoMIPS/BFD: Simplify register index calculation in BZ16_REG_FIELD
Maciej W. Rozycki [Sun, 24 Jan 2016 00:55:13 +0000 (00:55 +0000)]
MIPS/BFD: Simplify register index calculation in BZ16_REG_FIELD

Just mask higher bits off, which returns the same set of 3-bit register
encodings of { 0, 1, 2, 3, 4, 5, 6, 7 } for the allowed 5-bit encodings
of { 16, 17, 2, 3, 4, 5, 6, 7 }.  Input has already been validated with
OP16_VALID_REG.

bfd/
* elfxx-mips.c (BZ16_REG_FIELD): Simplify calculation.

8 years agoMIPS/BFD: Correct register index calculation in BZ16_REG
Maciej W. Rozycki [Sun, 24 Jan 2016 00:49:26 +0000 (00:49 +0000)]
MIPS/BFD: Correct register index calculation in BZ16_REG

For the 3-bit register encodings of { 0, 1, 2, 3, 4, 5, 6, 7 } return
the 5-bit encodings of { 16, 17, 2, 3, 4, 5, 6, 7 } respectively rather
than { 24, 25, 2, 3, 4, 5, 6, 7 }.

bfd/
* elfxx-mips.c (BZ16_REG): Correct calculation.

8 years agoAutomatic date update in version.in
GDB Administrator [Sun, 24 Jan 2016 00:00:10 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agogdb.trace: Fix unavailable-dwarf-piece.exp on big endian targets
Marcin Kościelnicki [Sat, 23 Jan 2016 12:17:34 +0000 (13:17 +0100)]
gdb.trace: Fix unavailable-dwarf-piece.exp on big endian targets

The test constructs fake DWARF info for a C structure involving bitfields.
DWARF bitfields are always counted from LSB, while the order in which
bitfields are allocated in a C struct depends on the target endianness -
thus the generated DWARF marks different bitfields as unavailable when
target is big endian.  Accordingly, we need different expected outputs.

Tested on s390 and s390x, no regression on x86_64.

gdb/testsuite/ChangeLog:

* gdb.trace/unavailable-dwarf-piece.exp: Fix bitfield handling on big
endian targets.

8 years agogdb.trace: Fix another expected message on continue.
Marcin Kościelnicki [Sat, 23 Jan 2016 11:06:08 +0000 (12:06 +0100)]
gdb.trace: Fix another expected message on continue.

Missed one message in bd0a71fa16f668341a9361c695bc3ca44d27b322, since it
didn't trigger on s390x or amd64 (fast tracepoint out of range due to
shared library usage), noticed on s390.

Pushed as obvious.

gdb/testsuite/ChangeLog:

* gdb.trace/pending.exp: Fix expected message on continue.

8 years agoAutomatic date update in version.in
GDB Administrator [Sat, 23 Jan 2016 00:00:10 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agotestsuite: gdb.gdb/selftest.exp: Drop expected Thread number
Jan Kratochvil [Fri, 22 Jan 2016 20:49:38 +0000 (21:49 +0100)]
testsuite: gdb.gdb/selftest.exp: Drop expected Thread number

Pedro Alves:
Looks like you forgot to amend before pushing though -- the version
checked in still had "Thread 1".

gdb/testsuite/ChangeLog
2016-01-22  Jan Kratochvil  <jan.kratochvil@redhat.com>
    Pedro Alves  <palves@redhat.com>

Fix testsuite compatibility with Guile.
* gdb.gdb/selftest.exp (send ^C to child process): Drop expected Thread
number.

8 years agotestsuite: Fix PR threads/19422 regression + Guile regression
Jan Kratochvil [Fri, 22 Jan 2016 20:21:45 +0000 (21:21 +0100)]
testsuite: Fix PR threads/19422 regression + Guile regression

The PR threads/19422 patchset added a new regression.

Additionally below it there was already a regression if --with-guile (which is
default if Guile is found) was used.

racy case #1:

(xgdb) PASS: gdb.gdb/selftest.exp: Set xgdb_prompt
^M
Thread 1 "xgdb" received signal SIGINT, Interrupt.^M
0x00007ffff583bfdd in poll () from /lib64/libc.so.6^M
(gdb) FAIL: gdb.gdb/selftest.exp: send ^C to child process
signal SIGINT^M
Continuing with signal SIGINT.^M
^C^M
Thread 1 "xgdb" received signal SIGINT, Interrupt.^M
0x00007ffff5779da0 in sigprocmask () from /lib64/libc.so.6^M
(gdb) PASS: gdb.gdb/selftest.exp: send SIGINT signal to child process
backtrace^M
errstring=errstring@entry=0x7e0e6c "", mask=mask@entry=RETURN_MASK_ALL) at exceptions.c:240^M
errstring=errstring@entry=0x7e0e6c "", mask=mask@entry=RETURN_MASK_ALL) at exceptions.c:240^M
(gdb) PASS: gdb.gdb/selftest.exp: backtrace through signal handler

racy case #2:

(xgdb) PASS: gdb.gdb/selftest.exp: Set xgdb_prompt
^M
Thread 1 "xgdb" received signal SIGINT, Interrupt.^M
0x00007ffff583bfdd in poll () from /lib64/libc.so.6^M
(gdb) FAIL: gdb.gdb/selftest.exp: send ^C to child process
signal SIGINT^M
Continuing with signal SIGINT.^M
^C^M
Thread 2 "xgdb" received signal SIGINT, Interrupt.^M
[Switching to Thread 0x7ffff3b7f700 (LWP 13227)]^M
0x00007ffff6b88b10 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0^M
(gdb) PASS: gdb.gdb/selftest.exp: send SIGINT signal to child process
backtrace^M
(gdb) FAIL: gdb.gdb/selftest.exp: backtrace through signal handler

Pedro Alves:
Not all targets support thread names, and even those that do, not all
use the program name as default thread name -- I think that's only true
for GNU/Linux, actually.  So I think it's best to not expect that, like:
            -re "(Thread .*|Program) received signal SIGINT.*$gdb_prompt $" {

gdb/testsuite/ChangeLog
2016-01-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

Fix testsuite compatibility with Guile.
* gdb.gdb/selftest.exp (send ^C to child process): Accept also Thread.
(thread 1): New test for backtrace through signal handler.

8 years agoReword the string description of native FreeBSD ptids.
John Baldwin [Thu, 21 Jan 2016 17:51:35 +0000 (09:51 -0800)]
Reword the string description of native FreeBSD ptids.

The prior format led to confusing messages when threads were created
or added such as "[New process 14757, LWP 100537]".  The new format
reports this as "[New LWP 100434 of process 15652]".

gdb/ChangeLog:

* fbsd-nat.c (fbsd_pid_to_str): Adjust string format.

8 years agogdb.trace: Fix write_inferior_data_ptr on 32-bit big-endian machines.
Marcin Kościelnicki [Fri, 22 Jan 2016 13:25:02 +0000 (14:25 +0100)]
gdb.trace: Fix write_inferior_data_ptr on 32-bit big-endian machines.

Noticed and tested on 31-bit s390.  This bug caused completely broken
fast tracepoints.

gdb/gdbserver/ChangeLog:

* tracepoint.c (write_inferior_data_ptr): Cast to uintptr_t, so that
it works properly on big-endian machines where sizeof (CORE_ADDR)
!= sizeof (void *).

8 years ago[testsuite] Unbuffer the output in gdb.base/multi-forks.c
Yao Qi [Thu, 21 Jan 2016 17:28:06 +0000 (17:28 +0000)]
[testsuite] Unbuffer the output in gdb.base/multi-forks.c

This patch unbuffer the output of the program so that the test harness
can count the number of "done" from output correctly.

gdb/testsuite:

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

PR testsuite/19491
* gdb.base/multi-forks.c: Include
../lib/unbuffer_output.c
(main): Call gdb_unbuffer_output.

8 years ago[ARM] perror_with_name when failed to fetch/store registers
Yao Qi [Fri, 22 Jan 2016 09:01:09 +0000 (09:01 +0000)]
[ARM] perror_with_name when failed to fetch/store registers

I see the following test fail on native arm-linux gdb testing...

(gdb) PASS: gdb.base/killed-outside.exp: registers: get pid of inferior
Executing on target: kill -9 2346    (timeout = 300)
spawn kill -9 2346^M
flushregs^M
Register cache flushed.^M
warning: Unable to fetch general registers.^M
PC not available^M
(gdb) PASS: gdb.base/killed-outside.exp: registers: flushregs
info threads^M
  Id   Target Id         Frame ^M
* 1    process 2346 "killed-outside" (gdb) FAIL: gdb.base/killed-outside.exp: registers: info threads (timeout)

since the inferior disappeared, ptrace will fail.  In that case, the
exception should be thrown, so that the caller can handle that.

gdb:

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

* arm-linux-nat.c (fetch_fpregs): Call perror_with_name
instead of warning.
(store_fpregs, fetch_regs, store_regs): Likewise.
(fetch_wmmx_regs, store_wmmx_regs): Likewise.
(fetch_vfp_regs, store_vfp_regs): Likewise.

8 years ago* breakpoint.c (init_breakpoint_sal): Add comment.
Doug Evans [Fri, 22 Jan 2016 01:02:39 +0000 (17:02 -0800)]
* breakpoint.c (init_breakpoint_sal): Add comment.

8 years ago* lib/ada.exp (gdb_compile_ada): Fix typo.
Doug Evans [Fri, 22 Jan 2016 00:20:02 +0000 (16:20 -0800)]
* lib/ada.exp (gdb_compile_ada): Fix typo.

8 years agoAutomatic date update in version.in
GDB Administrator [Fri, 22 Jan 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agogdb.trace: Fix string collection for 64-bit platforms.
Marcin Kościelnicki [Thu, 21 Jan 2016 15:58:12 +0000 (16:58 +0100)]
gdb.trace: Fix string collection for 64-bit platforms.

String collection always used ref32 to fetch the string pointer.  Make it
use gen_fetch instead.

As a side effect, this patch changes dup+const+trace+pop sequence used
for collecting the string's address to a trace_quick opcode.  This
results in a shorter agent expression.

This appeared to work on x86_64 since it's a little-endian platform, and
malloc (used in gdb.trace/collection.exp) returns addresses in low 4GB.
Noticed and tested on s390x-ibm-linux-gnu, also tested on
i686-unknown-linux-gnu and x86_64-unknown-linux-gnu.

gdb/ChangeLog:

* ax-gdb.c (gen_traced_pop): Use gen_fetch for string collection.

8 years agoFix linker testsuite failures for ARM netbsdelf target.
Nick Clifton [Thu, 21 Jan 2016 15:20:57 +0000 (15:20 +0000)]
Fix linker testsuite failures for ARM netbsdelf target.

PR ld/19453
* testsuite/ld-arm/arm-elf.exp: Skip tests that do not work for
the arm-netbsdelf target.

8 years agoFix gas testsuite failures for ARM netbesdelf configuration.
Nick Clifton [Thu, 21 Jan 2016 14:39:34 +0000 (14:39 +0000)]
Fix gas testsuite failures for ARM netbesdelf configuration.

PR gas/19454
* testsuite/gas/arm/mapshort-elf.d: Fix expected output to cope
with arm-netbsdelf target.
* testsuite/gas/arm/blx-bl-convert.d: Skip for netbsdelf.

8 years agoFix compile time errors building ARC target on a 32-bit host.
Nick Clifton [Thu, 21 Jan 2016 13:54:11 +0000 (13:54 +0000)]
Fix compile time errors building ARC target on a 32-bit host.

* elf32-arc.c (ADD_RELA): Fix compile time warning errors by
changing the type of _loc to be bfd_byte *.
(elf_arc_finish_dynamic_symbol): Likewise.

8 years agogdb: Small cleanup to disasm.c:maybe_add_dis_line_entry
Andrew Burgess [Thu, 21 Jan 2016 11:56:25 +0000 (12:56 +0100)]
gdb: Small cleanup to disasm.c:maybe_add_dis_line_entry

Give the function a better name (drop "maybe_") and update the header
comment.

gdb/ChangeLog:

* disasm.c (maybe_add_dis_line_entry): Rename to...
(add_dis_line_entry): ...this, and update header comment.
(do_mixed_source_and_assembly): Now use add_dis_line_entry.

8 years agogdb: Respect CXXFLAGS when building with C++ compiler
Pedro Alves [Thu, 21 Jan 2016 11:18:45 +0000 (11:18 +0000)]
gdb: Respect CXXFLAGS when building with C++ compiler

Currently, even when built with --enable-build-with-cxx, gdb uses
CFLAGS instead of CXXFLAGS.  This commit fixes it.

CXXFLAGS set in the environment when configure was run is now honored
in the generated gdb/Makefile, and you can also override CXXFLAGS in
the command like at make time, with the usual 'make CXXFLAGS="..."'

Objects built with a C compiler (e.g., gnulib) still honor CFLAGS
instead.

gdb/ChangeLog:
2016-01-21  Pedro Alves  <palves@redhat.com>

* Makefile.in (COMPILER_CFLAGS): New.
(CXXFLAGS): Get it from configure.
(INTERNAL_CFLAGS_BASE, INTERNAL_LDFLAGS): Use COMPILER_CFLAGS
instead of CFLAGS.
* build-with-cxx.m4 (GDB_AC_BUILD_WITH_CXX): Set and AC_SUBST
COMPILER_CFLAGS.
* configure: Regenerate.

gdb/gdbserver/ChangeLog:
2016-01-21  Pedro Alves  <palves@redhat.com>

* Makefile.in (COMPILER_CFLAGS, CXXFLAGS): New.
(INTERNAL_CFLAGS_BASE): Use COMPILER_CFLAGS instead of CFLAGS.
* configure: Regenerate.

8 years agoFix unexpected failures in the linker testsuite for ARM VxWorks targets.
Nick Clifton [Thu, 21 Jan 2016 10:51:25 +0000 (10:51 +0000)]
Fix unexpected failures in the linker testsuite for ARM VxWorks targets.

PR ld/19455
* elf32-arm.c (elf32_arm_create_dynamic_sections): Set the ELF
class of the linker stub bfd.
(elf32_arm_check_relocs): Skip check for pic format after
processing a vxWorks R_ARM_ABS12 reloc.
* elflink.c (bfd_elf_final_link): Check for ELFCLASSNONE when
reporting a class mismatch.

* testsuite/ld-arm/vxworks1-lib.dd: Update for current
disassmebler output.
* testsuite/ld-arm/vxworks1-lib.rd: Likewise.
* testsuite/ld-arm/vxworks1.dd: Likewise.
* testsuite/ld-arm/vxworks1.rd: Likewise.
* testsuite/ld-arm/vxworks1.ld: Set the output format.

8 years agoFix regression introduced in "break *<EXPR>" by explicit location patches.
Joel Brobecker [Tue, 8 Dec 2015 18:04:56 +0000 (19:04 +0100)]
Fix regression introduced in "break *<EXPR>" by explicit location patches.

A relatively recent patch support for explicit locations, and part
of that patch cleaned up the way we parse breakpoint locations.
Unfortunatly, a small regression crept in for "*<EXPR>" breakpoint
locations. In particular, on PIE programs, one can see the issue by
doing the following, with any program:

    (gdb) b *main
    Breakpoint 1 at 0x51a: file hello.c, line 3.
    (gdb) run
    Starting program: /[...]/hello
    Error in re-setting breakpoint 1: Warning:
    Cannot insert breakpoint 1.
    Cannot access memory at address 0x51a

    Warning:
    Cannot insert breakpoint 1.
    Cannot access memory at address 0x51a

Just for the record, this regression was introduced by:

    commit a06efdd6effd149a1d392df8d62824e44872003a
    Date:   Tue Aug 11 17:09:35 2015 -0700
    Subject: Explicit locations: introduce address locations

What happens is that the patch makes the implicit assumption that
the address computed the first time is static, as if it was designed
to only support litteral expressions (Eg. "*0x1234"). This allows
the shortcut of not re-computing the breakpoint location's address
when re-setting breakpoints.

However, this does not work in general, as demonstrated in the example
above.

This patch plugs that hole simply by saving the original expression
used to compute the address as part of the address location, so as
to then re-evaluate that expression during breakpoint re-set.

gdb/ChangeLog:

        * location.h (new_address_location): Add new parameters
        "addr_string" and "addr_string_len".
        (get_address_string_location): Add declaration.
        * location.c (new_address_location): Add new parameters
        "addr_string" and "addr_string_len".  If not NULL, store
        a copy of the addr_string in the new location as well.
        (get_address_string_location): New function.
        (string_to_event_location): Update call to new_address_location.
        * linespec.c (event_location_to_sals) <ADDRESS_LOCATION>:
        Save the event location in the parser's state before
        passing it to convert_address_location_to_sals.
        * breakpoint.c (create_thread_event_breakpoint): Update call
        to new_address_location.
        (init_breakpoint_sal): Get the event location's string, if any,
        and use it to update call to new_address_location.
        * python/py-finishbreakpoint.c (bpfinishpy_init):
        Update call to new_address_location.
        * spu-tdep.c (spu_catch_start): Likewise.

        * config/djgpp/fnchange.lst: Add entries for
        gdb/testsuite/gdb.base/break-fun-addr1.c and
        gdb/testsuite/gdb.base/break-fun-addr2.c.

gdb/testsuite/ChangeLog:

        * gdb.base/break-fun-addr.exp: New file.
        * gdb.base/break-fun-addr1.c: New file.
        * gdb.base/break-fun-addr2.c: New file.

8 years ago[AArch64] Relax long branch veneer insertion for non STT_FUNC symbol
Jiong Wang [Wed, 20 Jan 2016 16:57:59 +0000 (16:57 +0000)]
[AArch64] Relax long branch veneer insertion for non STT_FUNC symbol

  As defined at AArch64 ELF Specification (4.6.7 Call and Jump
  relocations), symbol with type of non STT_FUNC but in different input
  section with relocation place should insert long branch veneer also.

  Meanwhile the current long branch veneer infrastructure havn't considered
  the situation where the branch destination is "sym_value + rela->addend".

  This was OK because we only insert veneer for long call destination is
  STT_FUNC symbol for which the addend is always zero. But as we relax the
  support to other situations by this patch, we need to handle addend be
  non-zero value. For example, for static function, relocation against
  "local symbol" are turned into relocation against "section symbol + offset"
  where there is a valid addend.

  bfd/
* elfnn-aarch64.c (aarch64_type_of_stub): Allow insert long branch
veneer for sym_sec != input_sec.
(elfNN_aarch64_size_stub): Support STT_SECTION symbol.
(elfNN_aarch64_final_link_relocate): Take rela addend into account when
calculation destination.

  ld/
* testsuite/ld-aarch64/farcall-section.d: Delete.
* testsuite/ld-aarch64/farcall-section.s: Delete.
* testsuite/ld-aarch64/farcall-b-section.d: New expectation file.
* testsuite/ld-aarch64/farcall-bl-section.d: Likewise.
* testsuite/ld-aarch64/farcall-b-section.s: New testcase.
* testsuite/ld-aarch64/farcall-bl-section.s: Likewise.
* testsuite/ld-aarch64/aarch64-elf.exp: Likewise.

8 years agoConvert macros in elf-linux-core.h to inline functions
Alan Modra [Thu, 21 Jan 2016 03:03:53 +0000 (13:33 +1030)]
Convert macros in elf-linux-core.h to inline functions

Besides changing some macros into inline functions, this removes
redundant memsets and uses bfd_put_* rather than H_PUT_*.

* elf-linux-core.h (swap_linux_prpsinfo32_out): New function.
(swap_linux_prpsinfo64_out): New function.
(LINUX_PRPSINFO32_SWAP_FIELDS): Delete.
(LINUX_PRPSINFO64_SWAP_FIELDS): Delete.
* elf.c (elfcore_write_linux_prpsinfo32): Adjust.  Don't memset.
(elfcore_write_linux_prpsinfo64): Likewise.
* elf32-ppc.c (swap_ppc_linux_prpsinfo32_out): New function.
(PPC_LINUX_PRPSINFO32_SWAP_FIELDS): Delete.
(elfcore_write_ppc_linux_prpsinfo32): Adjust.  Don't memset.

8 years agoRename elf-linux-psinfo.h to elf-linux-core.h
Alan Modra [Thu, 21 Jan 2016 02:45:02 +0000 (13:15 +1030)]
Rename elf-linux-psinfo.h to elf-linux-core.h

Since it will sometime have more than just prpsinfo.  Also,
elf32-ppc.c needlessly includes this header.

* elf-linux-core.h: Rename from elf-linux-psinfo.h.
* elf.c: Adjust #include.
* elf32-ppc.c: Don't #include elf-linux-psinfo.h
* Makefile.am (SOURCE_HFILES): Update.
* Makefile.in: Regenerate.
* po/SRC-PORFILES.in: Regenerate.

8 years agobfd/configure reorganisation
Alan Modra [Tue, 19 Jan 2016 01:54:09 +0000 (12:24 +1030)]
bfd/configure reorganisation

Corefile code should be moved after running config.bfd, because it
uses want64.

* configure.ac: Move corefile selection later in file.  Move
tdefaults code immediately after other target vector code.
* configure: Regenerate.

8 years agoDetect the arm/thumb mode of code SIGRETURN or RT_SIGRETURN returns to
Yao Qi [Thu, 21 Jan 2016 07:48:50 +0000 (07:48 +0000)]
Detect the arm/thumb mode of code SIGRETURN or RT_SIGRETURN returns to

This patch fixes the following regression introduced by commit d0e59a68

step^M
39      } /* handler */^M
1: x/i $pc^M
=> 0x8740 <handler+80>: sub     sp, r11, #0^M
(gdb) step^M
^M
Program received signal SIGSEGV, Segmentation fault.^M
setitimer () at ../sysdeps/unix/syscall-template.S:81^M
81      ../sysdeps/unix/syscall-template.S: No such file or directory.^M
1: x/i $pc^M
=> 0xb6eff9c0 <setitimer>:      push    {r7}^M
(gdb) FAIL: gdb.base/sigstep.exp: continue to handler, si+advance in handler, step from handler: leave handler

in my test setting, program is compiled in arm mode, but the glibc
is built in thumb mode, so when we do 'step' to step over syscall
instruction svc for SIGRETURN, GDB should set breakpoint for arm mode
in the program, even though the current program in glibc is in thumb
mode.  Current GDB doesn't consider the case that the mode of program
SIGRETURN goes to can be different from current program mode.

In fact, GDB has taken care of this arm/thumb mode changes already,
see

/* Copy the value of next pc of sigreturn and rt_sigrturn into PC,
   return 1.  In addition, set IS_THUMB depending on whether we
   will return to ARM or Thumb code.  Return 0 if it is not a
   rt_sigreturn/sigreturn syscall.  */
static int
arm_linux_sigreturn_return_addr (struct frame_info *frame,
 unsigned long svc_number,
 CORE_ADDR *pc, int *is_thumb)

but in the commit d0e59a68

> -  arm_linux_sigreturn_return_addr (frame, svc_number, &return_addr, &is_thumb);
> +  if (svc_number == ARM_SIGRETURN || svc_number == ARM_RT_SIGRETURN)
> +    next_pc = arm_linux_sigreturn_next_pc (regcache, svc_number);

the IS_THUMB setting is lost, so it is a regression.

gdb:

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

* arm-linux-tdep.c (arm_linux_sigreturn_next_pc): Add parameter
is_thumb and set it according to CPSR saved on the stack.
(arm_linux_get_next_pcs_syscall_next_pc): Pass is_thumb to
arm_linux_sigreturn_next_pc.

gdb/gdbserver:

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

* linux-arm-low.c (arm_sigreturn_next_pc): Add parameter
is_thumb and set it according to CPSR saved on the stack.
(get_next_pcs_syscall_next_pc): Pass is_thumb to
arm_sigreturn_next_pc.

8 years agoAutomatic date update in version.in
GDB Administrator [Thu, 21 Jan 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

8 years agoFix sorting of enum values in FlagEnumerationPrinter
Simon Marchi [Wed, 20 Jan 2016 18:42:53 +0000 (13:42 -0500)]
Fix sorting of enum values in FlagEnumerationPrinter

The lambda function used to sort the enumerator list does not work
properly.  This list consists of tuples, (enum label, enum value).  The
key function returns x.enumval.  enumval not being defined for a tuple,
we see this exception in the test log:

  Python Exception <class 'AttributeError'> 'tuple' object has no attribute 'enumval'

The function should return the second item of the tuple, which is the
enumval.

The pretty-printer still worked mostly correctly, except that the
enumeration values were not sorted.  The test still passed because the
enumeration values are already sorted where they are defined.  The test
also passed despite the exception being printed, because the right output
was printed after the exception:

  print (enum flag_enum) (FLAG_1)
  Python Exception <type 'exceptions.AttributeError'> 'tuple' objecthas no attribute 'enumval':M
  $7 = 0x1 [FLAG_1]
  (gdb) PASS: gdb.python/py-pp-maint.exp: print FLAG_1

New in v2:

- Improved test case, I stole Pedro's example directly.  It verifies
  that the sorting of enumerators by value works, by checking that
  printing FOO_MASK appears as FOO_1 | FOO_2 | FOO_3.

  I noticed that I could change the regexps to almost anything and the
  tests would still pass.  I think it was because of the | in there.  I
  made them more robust by using string_to_regexp.  I used curly braces
  { } instead of quoting marks " " for strings, so that I could use
  square brackets [ ] in them without having to escape them all.  I also
  removed the "message" part of the tests, since they are redundant with
  the command, and it's just more maintenance to have to update them.

  Tested with Python 2.7 and 3.5.

gdb/ChangeLog:

* python/lib/gdb/printing.py (FlagEnumerationPrinter.__call__):
Fix enumerators sort key function.

gdb/testsuite/ChangeLog:

* gdb.python/py-pp-maint.exp: Change/add enum flag tests.
* gdb.python/py-pp-maint.c (enum flag_enum): Use more complex
enum flag values.

8 years agognu_vector.exp: Respect `should_kfail' for PR 8549
Andreas Arnez [Wed, 20 Jan 2016 18:41:45 +0000 (19:41 +0100)]
gnu_vector.exp: Respect `should_kfail' for PR 8549

The gnu_vector test case yields a new FAIL on s390x:

  FAIL: gdb.base/gnu_vector.exp: verify vector return value

It was introduced by commit 77ae9c1933b50 "gdb.base/gnu_vector.exp:
Don't test output from the inferior".  That commit dropped the special
handling for GDB's inability (on some targets) to set the return value.

This change re-establishes the logic from before, converting the above
FAIL to a KFAIL (PRMS gdb/8549).

gdb/testsuite/ChangeLog:

* gdb.base/gnu_vector.exp: Re-establish handling for should_kfail
when GDB can not set the vector return value.  Add more comments
for clarification.