external/binutils.git
9 years agoConsider addressable memory unit size in various value functions
Simon Marchi [Tue, 28 Jul 2015 15:01:50 +0000 (11:01 -0400)]
Consider addressable memory unit size in various value functions

This patch updates various value handling functions to make them
consider the addressable memory unit size of the current architecture.
This allows to correctly extract and print values on architectures whose
addressable memory unit is not 8 bits.

The patch doesn't cover all the code that would ideally need to be
adjusted, only the code paths that we happen to use, plus a few obvious
ones.  Specifically, those areas are not covered by this patch:

 - Management of unavailable bits
 - Bitfields
 - C++ stuff

Regression-tested on x86-64 Ubuntu 14.04.  I saw no related test result
change.

gdb/ChangeLog:

* c-valprint.c (c_val_print_array): Consider addressable memory
unit size.
(c_val_print_ptr): Likewise.
(c_val_print_int): Likewise.
* findvar.c (read_frame_register_value): Likewise.
* valarith.c (find_size_for_pointer_math): Likewise.
(value_ptrdiff): Likewise.
(value_subscripted_rvalue): Likewise.
* valops.c (read_value_memory): Likewise (and rename variables).
(value_assign): Likewise.
(value_repeat): Likewise.
(value_array): Likewise.
(value_slice): Likewise.
* valprint.c (generic_val_print_ptr): Likewise.
(generic_val_print_enum): Likewise.
(generic_val_print_bool): Likewise.
(generic_val_print_int): Likewise.
(generic_val_print_char): Likewise.
(generic_val_print_float): Likewise.
(generic_val_print_decfloat): Likewise.
(generic_val_print_complex): Likewise.
(val_print_scalar_formatted): Likewise.
(val_print_array_elements): Likewise.
* value.c (set_value_parent): Likewise.
(value_contents_copy_raw): Likewise.
(set_internalvar_component): Likewise.
(value_primitive_field): Likewise.
(value_fetch_lazy): Likewise.
* value.h (read_value_memory): Update comment.

9 years agoIntroduce get_value_arch
Simon Marchi [Tue, 28 Jul 2015 15:01:50 +0000 (11:01 -0400)]
Introduce get_value_arch

Similar to get_type_arch, used to get the gdbarch associated to a
struct value.

gdb/ChangeLog:

* value.c (get_value_arch): New function.
* value.h (get_value_arch): New declaration.

9 years agoUpdate comments in struct value for non-8-bits architectures
Simon Marchi [Tue, 28 Jul 2015 15:01:49 +0000 (11:01 -0400)]
Update comments in struct value for non-8-bits architectures

gdb/ChangeLog:

* value.c (struct value): Update comments.

9 years agoUpdate comment for struct type's length field, introduce type_length_units
Simon Marchi [Tue, 28 Jul 2015 15:01:49 +0000 (11:01 -0400)]
Update comment for struct type's length field, introduce type_length_units

This patch tries to clean up a bit the blur around the length field in
struct type, regarding its use with architectures with non-8-bits
addressable memory.  It clarifies that the field is expressed in host
bytes, which is what is the closest to the current reality.

It also introduces a new function to get the length of the type in
target addressable memory units.

gdb/ChangeLog:

* gdbtypes.c (type_length_units): New function.
* gdbtypes.h (type_length_units): New declaration.
(struct type) <length>: Update comment.

9 years agoAdd cores for M5100 series
Robert Suchanek [Tue, 28 Jul 2015 10:26:39 +0000 (11:26 +0100)]
Add cores for M5100 series

gas/

* config/tc-mips.c (mips_cpu_info_table): Add m5100 and m5101 entries.
* doc/c-mips.texi: Document m5100 and m5101 for -march=.

9 years agoAdd -march=interaptiv
Robert Suchanek [Tue, 28 Jul 2015 10:26:31 +0000 (11:26 +0100)]
Add -march=interaptiv

gas/

* config/tc-mips.c (mips_cpu_info_table): Add interaptiv entry.
* doc/c-mips.text: Document -march=interaptiv.

9 years agoFallout from "Reorder more powerpc64 sections for -z relro"
Alan Modra [Tue, 28 Jul 2015 01:33:57 +0000 (11:03 +0930)]
Fallout from "Reorder more powerpc64 sections for -z relro"

Commit 23283c1b changed the layout of some bss style sections on
powerpc64, but neglected to add a page gap before the third PT_LOAD
segment created by this reording.  Without a page gap we get two
PT_LOAD headers that overlap by one page in memory.  That shouldn't be
allowed because the dynamic loader will load garbage from the first
page of the last segment over the last page of the previous segment.

bfd/
* elf.c (_bfd_elf_map_sections_to_segments): Do not make a new
segment for loaded sections after nonloaded sections if the
sections are on the same page.
ld/testsuite/
* ld-powerpc/elfv2so.d: Update

9 years agoCheck for asprintf and vasprintf during configure stage.
Iain Buclaw [Tue, 28 Jul 2015 07:57:32 +0000 (09:57 +0200)]
Check for asprintf and vasprintf during configure stage.

This should fix some build errors seen on AIX, MinGW, and possibly other
non-GNU systems too due to missing asprintf().

bfd/

* configure.in: Add asprintf and vasprintf to AC_CHECK_DECLS.
* config.in, configure: Regenerate.

9 years agoAutomatic date update in version.in
GDB Administrator [Tue, 28 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoSet NOPIE_CFLAGS and NOPIE_LDFLAGS
H.J. Lu [Mon, 27 Jul 2015 23:16:17 +0000 (16:16 -0700)]
Set NOPIE_CFLAGS and NOPIE_LDFLAGS

GCC 6 can be configured to generate PIE by default.  But some linker
size tests expect non-PIE.  This patch defines NOPIE_CFLAGS to
"-fno-PIE" and NOPIE_LDFLAGS to "-no-pie" if target compiler supports
them.  Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS to linker size tests if
needed.

* config/default.exp (NOPIE_CFLAGS): New.
(NOPIE_LDFLAGS): Likewise.
* ld-size/size.exp (run_cc_link_tests): Add $NOPIE_CFLAGS and
$NOPIE_LDFLAGS if needed.
(run_ld_link_exec_tests): Add $NOPIE_CFLAGS if needed.

9 years agogdb.mi/mi-pending.c: Return NULL instead of nothing in thread function
Simon Marchi [Mon, 27 Jul 2015 19:49:24 +0000 (15:49 -0400)]
gdb.mi/mi-pending.c: Return NULL instead of nothing in thread function

Using gcc 5.2 (maybe other versions as well), building mi-pending.c gives
these warnings:

./gdb.mi/mi-pending.c: In function ‘thread_func’:
./gdb.mi/mi-pending.c:34:5: warning: ‘return’ with no value, in function returning non-void
     return;
     ^
./gdb.mi/mi-pending.c:38:5: warning: ‘return’ with no value, in function returning non-void
     return;
     ^
gdb_compile_pthreads assumes that the build was successful only if there
is no output. These warnings therefore make gdb_compile_pthreads think
that the build failed, and the test doesn't run.

The easy fix is to replace the "return" with "return NULL".  I am
pushing this as obvious.

gdb/testsuite/ChangeLog:

* gdb.mi/mi-pending.c (thread_func): Replace return with return
NULL.

9 years agoRemove xfail in gdb.mi/mi-watch.exp
Simon Marchi [Mon, 27 Jul 2015 19:02:10 +0000 (15:02 -0400)]
Remove xfail in gdb.mi/mi-watch.exp

I noticed there was an unexpected pass in mi-watch.exp when running on
x86_64.  Doing a bit of archeology shows that the xfail was added by
4a543da.  This particular test failed on the MIPS architecture, which
the original contributor was working with.  Here is the thread:

https://www.sourceware.org/ml/gdb-patches/2007-09/msg00151.html

Looking at the latest buildbot results for MIPS, it seems that it's also
an unexpected pass on that architecture.  Therefore, I see no reason to
leave the xfail in place.

gdb/testsuite/ChangeLog:

* gdb.mi/mi-watch.exp (test_watchpoint_triggering): Remove xfail.

9 years agoFactor out complex printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:26 +0000 (14:11 -0400)]
Factor out complex printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out complex
printing code to ...
(generic_val_print_complex): ... this new function.

9 years agoFactor out decfloat printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:25 +0000 (14:11 -0400)]
Factor out decfloat printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out decfloat
printing code to ...
(generic_val_print_decfloat): ... this new function.

9 years agoFactor out float printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:24 +0000 (14:11 -0400)]
Factor out float printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out float
printing code to ...
(generic_val_print_float): ... this new function.

9 years agoFactor out char printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:24 +0000 (14:11 -0400)]
Factor out char printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out char
printing code to ...
(generic_val_print_char): ... this new function.

9 years agoFactor out int printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:23 +0000 (14:11 -0400)]
Factor out int printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out integer
printing code to ...
(generic_val_print_int): ... this new function.

9 years agoFactor out bool printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:23 +0000 (14:11 -0400)]
Factor out bool printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out bool
printing code to ...
(generic_val_print_bool): ... this new function.

9 years agoFactor out function/method printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:22 +0000 (14:11 -0400)]
Factor out function/method printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out function/method
printing code to ...
(generic_val_print_func): ... this new function.

9 years agoFactor out flags printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:22 +0000 (14:11 -0400)]
Factor out flags printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out flags
printing code to ...
(generic_val_print_flags): ... this new function.

9 years agoFactor out enum printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:21 +0000 (14:11 -0400)]
Factor out enum printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out enum
printing code to ...
(generic_val_print_enum): ... this new function.

9 years agoFactor out reference printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:21 +0000 (14:11 -0400)]
Factor out reference printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out reference
printing code to ...
(generic_val_print_ref): ... this new function.

9 years agoFactor out memberptr printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:20 +0000 (14:11 -0400)]
Factor out memberptr printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out memberptr
printing code to ...
(generic_val_print_memberptr): ... this new function.

9 years agoFactor out pointer printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:19 +0000 (14:11 -0400)]
Factor out pointer printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out pointer
printing code to ...
(generic_val_print_ptr): ... this new function.

9 years agoFactor out array printing code from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:19 +0000 (14:11 -0400)]
Factor out array printing code from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out array
printing code to ...
(generic_val_print_array): ... this new function.

9 years agoFactor out print_unpacked_pointer from generic_val_print
Simon Marchi [Mon, 27 Jul 2015 18:11:18 +0000 (14:11 -0400)]
Factor out print_unpacked_pointer from generic_val_print

gdb/ChangeLog:

* valprint.c (generic_val_print): Factor out
print_unpacked_pointer code to ...
(print_unpacked_pointer): ... this new function.

9 years agoCheck address of versined symbol
H.J. Lu [Mon, 27 Jul 2015 17:04:31 +0000 (10:04 -0700)]
Check address of versined symbol

Since GCC 5 folds symbol address comparison, assuming each symbol has a
different address, &foo == &bar is always false for GCC 5.  This patch
adds check_ptr_eq if 2 addresses are the same and uses it to check the
address of versined symbol.

PR ld/18718
* ld-elf/check-ptr-eq.c: New file.
* ld-elf/pr18718.c (main): Call check_ptr_eq.
* ld-elf/shared.exp: Add check-ptr-eq.c to PR ld/18718 tests.

9 years agoHave SIGTERM promptly quit GDB even when the dummy target is active
Patrick Palka [Fri, 24 Jul 2015 17:58:47 +0000 (13:58 -0400)]
Have SIGTERM promptly quit GDB even when the dummy target is active

GDB currently does not promptly quit after receiving a SIGTERM while no
proper target is active.  This is because in handle_sigterm we currently
look at target_can_async_p to determine whether to asynchronously quit
GDB using an async signal handler or to asynchronously quit using the
quit flag.  However, target_can_async_p is always false under the dummy
target, so under this target we always use the quit flag and not the
async signal handler to signal that GDB should quit.  So GDB won't quit
until a code path that checks the quit flag is executed.

To fix this issue, this patch makes the SIGTERM handler no longer
inspect target_can_async_p, and instead makes the handler
unconditionally set the quit flag _and_ mark the corresponding async
signal handler, so that if the target is async (or if it's the dummy
target) then we will likely quit through the async signal handler, and
if it's not async then we will likely quit through the quit flag.  This
redundant approach is similar to how we handle SIGINT.

gdb/ChangeLog:

* event-top.c (handle_sigterm): Don't inspect
target_can_async_p.  Always set the quit flag and always mark
the async signal handler.

gdb/testsuite/ChangeLog:

* gdb.base/gdb-sigterm-2.exp: New test.

9 years ago[gdbserver] Don't set srv_linux_usrregs for aarch64*-*-linux*
Yao Qi [Mon, 27 Jul 2015 15:15:48 +0000 (16:15 +0100)]
[gdbserver] Don't set srv_linux_usrregs for aarch64*-*-linux*

We don't use PTRACE_PEEKUSR/PTRACE_POKEUSR on aarch64-linux, so don't
need to set srv_linux_usrregs.  This patch removes that line.

gdb/gdbserver:

2015-07-27  Yao Qi  <yao.qi@linaro.org>

* configure.srv (case aarch64*-*-linux*): Don't set
srv_linux_usrregs.

9 years agoFix ChangeLog entry
Yao Qi [Mon, 27 Jul 2015 15:12:31 +0000 (16:12 +0100)]
Fix ChangeLog entry

9 years agoRemove REMOTE_EXAMPLES from gdb/Makefile.in
Yao Qi [Thu, 23 Jul 2015 15:26:14 +0000 (16:26 +0100)]
Remove REMOTE_EXAMPLES from gdb/Makefile.in

I happen to see REMOTE_EXAMPLES isn't used anywhere, so this patch
removes it.

REMOTE_EXAMPLES was added in the following commit in 1991,

commit 86bbb439c8fa01fd55d6cbce102483a471ffd0c4
Author: John Gilmore <gnu@cygnus>
Date:   Fri May 3 19:57:13 1991 +0000

    There should be a Makefile in the cvs main directory, configured
    for "./config.gdb none", so that things like "make tags" and "make tar"
    will work.

and it was used like:

TARFILES = ${TAGFILES_MAINDIR} ${OTHERS} ${REMOTE_EXAMPLES}

However TARFILES was removed by the change latter in 1994,

Tue Aug 16 15:24:03 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

* symtab.c (decode_line_1): If funfirstline and we get a
non-LOC_BLOCK symbol (e.g. variable or type), then error().

* Makefile.in (TARFILES, NONSRC, SFILES_STAND, SFILES_KGDB):
Remove; unused.

Since then, REMOTE_EXAMPLES is not used any more.

gdb:

2015-07-27  Yao Qi  <yao.qi@linaro.org>

* Makefile.in (REMOTE_EXAMPLES): Remove it.

9 years agoRegenerate configure files
H.J. Lu [Mon, 27 Jul 2015 14:56:32 +0000 (07:56 -0700)]
Regenerate configure files

bfd/

* configure: Regenerated.

binutils/

* configure: Regenerated.

gas/

* configure: Regenerated.

gold/

* configure: Regenerated.

gprof/

* configure: Regenerated.

ld/

* configure: Regenerated.

opcodes/

* configure: Regenerated.

9 years agoSync toplevel files with GCC
H.J. Lu [Mon, 27 Jul 2015 14:49:05 +0000 (07:49 -0700)]
Sync toplevel files with GCC

Sync with GCC
2015-07-24  Michael Darling  <darlingm@gmail.com>

PR other/66259
* config-ml.in: Reflects renaming of configure.in to configure.ac
* configure: Likewise
* configure.ac: Likewise

9 years agoSync config with GCC
H.J. Lu [Mon, 27 Jul 2015 14:43:26 +0000 (07:43 -0700)]
Sync config with GCC

Sync with GCC
2015-07-24  Micahel Darling  <darlingm@gmail.com>

PR other/66259
* gettext.m4: Reflects renaming of configure.in to configure.ac
* po.m4: Likewise
* stdint.m4: Likewise
* tcl.m4: Likewise

9 years agoFix the address size computation for the MSP430 port.
Nick Clifton [Mon, 27 Jul 2015 14:15:28 +0000 (15:15 +0100)]
Fix the address size computation for the MSP430 port.

* elf32-msp430.c (uses_large_model): New function.
(msp430_elf_eh_frame_address_size): New function.
(elf_backend_eh_frame_address_size): Define.

9 years agoAppend $PLT_CFLAGS to CC/CXX for S-records tests
H.J. Lu [Mon, 27 Jul 2015 12:18:20 +0000 (05:18 -0700)]
Append $PLT_CFLAGS to CC/CXX for S-records tests

S-records tests don't work with -fno-plt.  This path appends $PLT_CFLAGS
to CC and CXX for S-records tests.

* ld-srec/srec.exp (CC): Save and restore.  Append $PLT_CFLAGS.
(CXX): Likewise.

9 years agoPass $PLT_CFLAGS to ld_compile
H.J. Lu [Mon, 27 Jul 2015 12:17:26 +0000 (05:17 -0700)]
Pass $PLT_CFLAGS to ld_compile

Some linker shard library tests without PIC expect PLT.  This patch
passes $PLT_CFLAGS to ld_compile.

* ld-shared/shared.exp: Pass $PLT_CFLAGS to ld_compile.

9 years agoAppend $PLT_CFLAGS to CC for NOCROSSREFS tests
H.J. Lu [Mon, 27 Jul 2015 12:16:38 +0000 (05:16 -0700)]
Append $PLT_CFLAGS to CC for NOCROSSREFS tests

NOCROSSREFS tests don't work with -fno-plt.  This path appends
$PLT_CFLAGS to CC for NOCROSSREFS tests.

* ld-scripts/crossref.exp (CC): Save and restore.  Append
$PLT_CFLAGS.

9 years agoAdd $PLT_CFLAGS to -fPIC for run_cc_link_tests
H.J. Lu [Mon, 27 Jul 2015 12:15:48 +0000 (05:15 -0700)]
Add $PLT_CFLAGS to -fPIC for run_cc_link_tests

Some x86 linker tests expect PLT.  This patch adds $PLT_CFLAGS to -fPIC
for run_cc_link_tests.

* ld-i386/i386.exp (run_cc_link_tests): Add $PLT_CFLAGS to
-fPIC if needed.
* ld-x86-64/mpx.exp (run_cc_link_tests): Likewise.
* ld-x86-64/x86-64.exp (run_cc_link_tests): Likewise.

9 years agoPass $PLT_CFLAGS to ld_compile
H.J. Lu [Mon, 27 Jul 2015 12:15:01 +0000 (05:15 -0700)]
Pass $PLT_CFLAGS to ld_compile

Some linker visibility tests without PIC expect PLT.  This patch passes
$PLT_CFLAGS to ld_compile.

* ld-elfvsb/elfvsb.exp (visibility_run): Pass $PLT_CFLAGS to
ld_compile.

9 years agoPass $PLT_CFLAGS to build_binary
H.J. Lu [Mon, 27 Jul 2015 12:13:55 +0000 (05:13 -0700)]
Pass $PLT_CFLAGS to build_binary

Some linker symbol version tests without PIC expect PLT.  This patch
adds $PLT_CFLAGS to CFLAGS.

* ld-elfvers/vers.exp (build_vers_lib_no_pic): Pass $PLT_CFLAGS
to build_binary.

9 years agoSet PLT_CFLAGS to "-fplt" if supported
H.J. Lu [Mon, 27 Jul 2015 10:42:39 +0000 (03:42 -0700)]
Set PLT_CFLAGS to "-fplt" if supported

GCC 6 supports -fno-plt.  But some linker tests expect PLT.  This patch
defines PLT_CFLAGS to "-fplt" if target compiler supports it.

* config/default.exp (PLT_CFLAGS): New.

9 years ago[AArch64] Fix extern protected data handling
Szabolcs Nagy [Mon, 27 Jul 2015 10:48:48 +0000 (11:48 +0100)]
[AArch64] Fix extern protected data handling

Emit *GLOB_DAT instead of *RELATIVE relocs for protected data
in shared objects.

This is needed for the fix of glibc bug 17711:
https://sourceware.org/bugzilla/show_bug.cgi?id=17711

bfd:
PR ld/18705
* elfnn-aarch64.c (elf_backend_extern_protected_data): Define.

ld/testsuite:
PR ld/18705
* ld-aarch64/protected-data.d: New.
* ld-aarch64/protected-data.s: New.
* ld-aarch64/aarch64-elf.exp: Add new test.

9 years ago[ARM] Fix extern protected data handling
Szabolcs Nagy [Mon, 27 Jul 2015 10:45:27 +0000 (11:45 +0100)]
[ARM] Fix extern protected data handling

Emit *GLOB_DAT instead of *RELATIVE relocs for protected data
in shared objects.

This is needed for the fix of glibc bug 17711:
https://sourceware.org/bugzilla/show_bug.cgi?id=17711

bfd:
PR ld/18705
* elf32-arm.c (elf_backend_extern_protected_data): Define.

ld/testsuite:
PR ld/18705
* ld-arm/protected-data.d: New.
* ld-arm/protected-data.s: New.
* ld-arm/arm-elf.exp: Add new test.

9 years agoAutomatic date update in version.in
GDB Administrator [Mon, 27 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoCompile PR ld/18718 tests with -O2
H.J. Lu [Sun, 26 Jul 2015 21:55:39 +0000 (14:55 -0700)]
Compile PR ld/18718 tests with -O2

PR ld/18718
* ld-elf/shared.exp: Compile PR ld/18718 tests with -O2.

9 years agoSet errcnt and warncnt to 0 in run_host_cmd_yesno
H.J. Lu [Sun, 26 Jul 2015 18:55:57 +0000 (11:55 -0700)]
Set errcnt and warncnt to 0 in run_host_cmd_yesno

run_host_cmd_yesno should set errcnt and warncnt to 0.  Otherwise, they
may leak to the next run.

* lib/ld-lib.exp (run_host_cmd_yesno): Set errcnt and warncnt
to 0.

9 years agoMake arm_unaligned_reloc test less sensitive to disassembler output format.
Doug Kwan [Sun, 26 Jul 2015 07:54:26 +0000 (00:54 -0700)]
Make arm_unaligned_reloc test less sensitive to disassembler output format.

9 years agoremote.c: Make read_ptid return a null value when no thread id is found.
Kevin Buettner [Fri, 10 Jul 2015 17:25:29 +0000 (10:25 -0700)]
remote.c: Make read_ptid return a null value when no thread id is found.

When using GDB to debug an RX target using the GDB remote protocol,
using a Renesas supplied debug agent, I encountered the following
assertion error:

thread.c:85: internal-error: inferior_thread: Assertion `tp' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) n
Command aborted.

This assertion error occurs due to the fact that the value associated
with inferior_ptid is not on the thread list.

The remote debug output (obtained with "set debug remote 1") is fairly
short, so I will include it up to the point where things go wrong -
which is somewhat before the assertion failure:

    (gdb) target remote coyote.lan:61234
    Remote debugging using coyote.lan:61234
    Sending packet: $qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+#c9...Ack
    Packet received: PacketSize=c00;qXfer:memory-map:read-;qXfer:features:read-;QStartNoAckMode+;multiprocess+;QNonStop+
    Packet qSupported (supported-packets) is supported
    Sending packet: $QStartNoAckMode#b0...Ack
    Packet received: OK
    Sending packet: $Hgp0.0#ad...Packet received: OK
    Sending packet: $QNonStop:0#8c...Packet received: OK
    Sending packet: $qTStatus#49...Packet received:
    Packet qTStatus (trace-status) is NOT supported
    Sending packet: $?#3f...Packet received: S02
    Sending packet: $qfThreadInfo#bb...Packet received: m1
    Sending packet: $qsThreadInfo#c8...Packet received: l
    Sending packet: $qAttached:a410#bf...Packet received: 0
    Packet qAttached (query-attached) is supported
    Sending packet: $Hc-1#09...Packet received: OK
    Sending packet: $qC#b4...Packet received: QC not supported

Above is the trace starting from the invocation of "target remote"
through the call of get_current_thread() in remote_start_remote().
Below, I've pasted this line of code along with additional lines of
context.  The test following the call is especially important to
understanding both the problem and my patch.

          /* We have thread information; select the thread the target
             says should be current.  If we're reconnecting to a
             multi-threaded program, this will ideally be the thread
             that last reported an event before GDB disconnected.  */
          inferior_ptid = get_current_thread (wait_status);
          if (ptid_equal (inferior_ptid, null_ptid))
            {
              /* Odd... The target was able to list threads, but not
                 tell us which thread was current (no "thread"
                 register in T stop reply?).  Just pick the first
                 thread in the thread list then.  */
              inferior_ptid = thread_list->ptid;
            }
        }

Prior to getting to the code pasted above, remote_start_remote()
made a call to target_update_thread_list().  This corresponds to the
following lines from the above trace:

    Sending packet: $qfThreadInfo#bb...Packet received: m1
    Sending packet: $qsThreadInfo#c8...Packet received: l
    Sending packet: $qAttached:a410#bf...Packet received: 0
    Packet qAttached (query-attached) is supported

Once target_update_thread_list has completed, the thread list
contains a single entry: {pid = 42000, lwp = 1, tid = 0}.

remote_start_remote() then makes a call to set_continue_thread(),
accounting for this line of the trace:

    Sending packet: $Hc-1#09...Packet received: OK

Finally, the call to get_current_thread() is responsible for the last
line of the trace that I provided above:

    Sending packet: $qC#b4...Packet received: QC not supported

get_current_thread() calls stop_reply_extract_thread() with the wait
status. This returns null_ptid.

get_current_thread() then calls remote_current_thread with a null
inferior_ptid.  After the calls to putpkt() and getpkt(), rs->buf[0]
is 'Q', so read_ptid() is called and its result is returned.

The buffer passed to read_ptid() is " not supported".  read_ptid ultimately
returns a ptid of {pid = 4200, lwp = 0, tid = 0}.

However, this thread is not on the thread list.  As noted earlier, the
call to target_update_thread_list() had placed {pid = 42000, lwp = 1,
tid = 0} on the list.  This is the only thread in the list.

When these calls ultimately return to remote_start_remote(),
inferior_ptid gets set to {pid = 4200, lwp = 0, tid = 0}, which
(again) is not on the thread list.

It appears to me that the string " not supported" is coming from the
debug agent.  If so, it should be fixed, but I don't see a reason to
not consult the thread list in order to place a valid thread id in
inferior_ptid.

This (consultation of the thread list) is what is done when
inferior_ptid is null_ptid:

  if (ptid_equal (inferior_ptid, null_ptid))
    {
      /* Odd... The target was able to list threads, but not
 tell us which thread was current (no "thread"
 register in T stop reply?).  Just pick the first
 thread in the thread list then.  */
      inferior_ptid = thread_list->ptid;
    }

My patch causes a null inferior_ptid to be returned by read_ptid when
no thread id is found in the response from the debug agent.  This
return value ends up being returned by remote_current_thread() and
then by get_current_thread.  The assignment then places this null
value into inferior_ptid.  That, in turn, allows the ptid_equal test
(noted above) to fetch a valid thread from the thread list.  I no
longer see the assertion failure due a good value (which is on the
thread list) being placed in inferior_ptid.

This patch also adds two log warnings that may be output when "set
debug remote 1" is used.  When running against the Renesas debug agent
mentioned earlier, this is the relevant portion of the log output:

Sending packet: $qC#b4...Packet received: QC not supported
warning: garbage in qC reply
warning: couldn't determine remote current thread; picking first in list.

gdb/ChangeLog:

* remote.c (read_ptid): Return null_ptid when no thread id
is found.
(remote_current_thread): Add log warning for malformed
qC reply.
(remote_start_remote): Add log warning when current thread
not found.

9 years agoAutomatic date update in version.in
GDB Administrator [Sun, 26 Jul 2015 00:00:11 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoRevert "Sync readline/ to version 7.0 alpha"
Patrick Palka [Sat, 25 Jul 2015 19:41:05 +0000 (15:41 -0400)]
Revert "Sync readline/ to version 7.0 alpha"

This reverts commit b558ff043d41ba8d17a82f5f9ae5f9dade66160e.
This reverts commit 4a11f2065906976675808364ddbd1c0f77eea41f.

The initial import commit failed to retain local changes made to
readline's configure.in (and the commit message erroneously stated that
there were no local changes that needed to be reapplied).  Also the
import caused a couple of build errors and a scattering of testsuite
regressions throughout many arches.  It's probably better to start over
with this import, hopefully more carefully next time.

9 years agoRevert: * Makefile.in (check/%.exp): Pass directory for GDB_PARALLEL.
Doug Evans [Sat, 25 Jul 2015 19:07:28 +0000 (12:07 -0700)]
Revert: * Makefile.in (check/%.exp): Pass directory for GDB_PARALLEL.

Regressions, e.g.,
http://gdb-build.sergiodj.net/builders/Fedora-x86_64-m32/builds/1501

gdb/testsuite/ChangeLog:

Revert:
* Makefile.in (check/%.exp): Pass directory for GDB_PARALLEL.
(workers/%.worker, build-perf): New rule.
(GDB_PERFTEST_MODE): New variable.
(check-perf): Use it.
(clean): Clean up gdb.perf parallel build subdirs.
* lib/build-piece.exp: New file.
* lib/cache.exp (gdb_do_cache): Include $GDB_PARALLEL in path name.
* lib/gdb.exp (standard_output_file): Include $GDB_PARALLEL in path
name.
(standard_temp_file): Ditto.
(GDB_PARALLEL handling): Make outputs,temp,cache directories as subdirs
of $GDB_PARALLEL.

9 years agoDon't build readline's shared libs by default
Patrick Palka [Sat, 25 Jul 2015 15:14:34 +0000 (11:14 -0400)]
Don't build readline's shared libs by default

Since the sync to version 7.0-alpho, readline now by default builds
(unused) shared libraries alongside static libraries, whereas before it
only built static libraries.  A couple of GDB buildbots were not happy
with this change:

  http://gdb-build.sergiodj.net/builders/AIX-POWER7-plain/builds/240
  http://gdb-build.sergiodj.net/builders/Fedora-i686/builds/1518

To get these buildbots building again, this patch alters readline's
configure.ac file to not build shared libraries by default, as was the
case with readline 6.2.  A more permanent fix may be to alter the
top-level Makefile.def to pass --disable-shared to readline, or to
investigate why these building these shared libraries are giving the
buildbots trouble.  (I think the proximate reason why the i686 buildbot
fails is because it passes CFLAGS=-m32 instead of CC="gcc -m32" to the
top-level configure script, and readline's linker commands don't inherit
CFLAGS.  Not sure about the AIX failure.)

readline/ChangeLog.gdb:

* configure.ac: Default opt_shared_libs to no.
* configure: Regenerate.

9 years agoAdd missing ChangeLog files
H.J. Lu [Sat, 25 Jul 2015 15:10:51 +0000 (08:10 -0700)]
Add missing ChangeLog files

9 years agoSkip missing symbol version section check for executable
H.J. Lu [Sat, 25 Jul 2015 14:56:18 +0000 (07:56 -0700)]
Skip missing symbol version section check for executable

Missing symbol version section is a run-time problem only if it will
be referenced dynamically at run-time.  We should skip the check for
locally defined symbol, which isn't referenced by shared library, when
linking executable.

bfd/

PR ld/18718
* elflink.c (elf_link_output_extsym): Check symbol version
section check only if not linking executable, the symbol is
referenced by shared library or not locally defined.

ld/testsuite/

PR ld/18718
* ld-elf/pr18718.c: New file.
* ld-elf/shared.exp: Run tests for PR ld/18718.

9 years agoSync readline/ to version 7.0 alpha
Patrick Palka [Wed, 15 Jul 2015 00:29:21 +0000 (20:29 -0400)]
Sync readline/ to version 7.0 alpha

This patch syncs our upstream copy of readline from version 6.2 to the
latest version, 7.0 alpha (released July 10 2015).

I essentially copied what was done the last time readline was synced,
when Jan updated to readline 6.2 in 2011:
http://sourceware.org/ml/gdb-patches/2011-05/msg00003.html

Procedure:

1. I extracted the readline-7.0-alpha tarball on top of readline/.
2. I deleted all the new files under doc/ that were deliberately omitted
   before.
3. I regenerated readline/configure and readline/examples/rlfe/configure
   using autoconf 2.64.  No other configure files need regenerating.
4. I updated the function gdb_printable_part in completer.c with a
   trivial change made to the readline function it is based off of,
   printable_part in readline/complete.c.  There is more work to be done in
   completer.c to sync it with readline/complete.c, but it is non-trivial
   and should probably be done separately anyway.

Local patches that had to be reapplied:

    None.  readline 7.0 alpha contains all of our local readline
    patches.

New files in readline/:

    colors.{c,h}
    examples/{hist_erasedups,hist_purgecmd,rl-callbacktest,rlbasic}.c
    parse-colors.{c,h}
    readline.pc.in
    configure.ac

Deleted files in readline/:

    configure.in

Regressions:

After the sync there is one testsuite regression, the test
"signal SIGINT" in gdb.gdb/selftest.exp which now FAILs.  Previously,
the readline 6.2 SIGINT handler would temporarily reinstall the
underlying application's SIGINT handler and immediately re-raise SIGINT
so that the orginal handler gets invoked.  But now (since readline 6.3)
its SIGINT handler does not re-raise SIGINT or directly invoke the
original handler; it now sets a flag marking that SIGINT was raised, and
waits until readline explicitly has control to call the application's
SIGINT handler.  Anyway, because SIGINT is no longer re-raised from
within readline's SIGINT handler, doing "signal SIGINT" with a stopped
inferior gdb process will no longer resume and then immediately stop the
process (since there is no 2nd SIGINT to immediately catch).  Instead,
the inferior gdb process will now just print "Quit" and continue to run.
So with this commit, this particular test case is adjusted to reflect
this change in behavior (we now have to send a 2nd SIGINT manually to
stop it).

Aside from this one testsuite regression, I personally noticed no
regression in user-visible behavior.  Though I only tested on x86_64
and on i686 Debian Stretch.

Getting this kind of change in at the start of the GDB 7.11 development
cycle will allow us to get a lot of passive testing from developers and
from bleeding-edge users.

readline/ChangeLog.gdb:

Import readline 7.0 alpha
* configure: Regenerate.
* examples/rlfe/configure: Regenerate.

gdb/ChangeLog:

* completer.c (gdb_printable_part): Sync with readline function
it is based off of.

gdb/testsuite/ChangeLog:

* gdb.gdb/selftest.exp (test_with_self): Update test to now
expect the GDB inferior to no longer immediately stop after
being resumed with "signal SIGINT".

9 years agoFix broken -Bsymbolic-functions
Alan Modra [Sat, 25 Jul 2015 07:08:42 +0000 (16:38 +0930)]
Fix broken -Bsymbolic-functions

For selected targets.  The testcase reveals a number of targets that
still need fixing.

bfd/
* elf32-arm.c (elf32_arm_final_link_relocate): Use SYMBOLIC_BIND to
check if a symbol should be bound symbolically.
* elf32-hppa.c (elf32_hppa_check_relocs,
elf32_hppa_adjust_dynamic_symbol, elf32_hppa_relocate_section,
elf32_hppa_finish_dynamic_symbol): Likewise.
* elf32-m68k.c (elf_m68k_check_relocs,
elf_m68k_relocate_section): Likewise.
* elf32-nios2.c (nios2_elf32_relocate_section,
nios2_elf32_check_relocs, allocate_dynrelocs): Likewise.
* elf32-tic6x.c (elf32_tic6x_finish_dynamic_symbol,
elf32_tic6x_relocate_section): Likewise.
ld/testsuite/
* ld-elf/symbolic-func.s,
* ld-elf/symbolic-func.r: New test.
* ld-elf/elf.exp: Run it.

9 years agoRevert 4fd4095a5ffe3d4e50e0dac5f8ad37b8478afa9d, log individual measurements.
Doug Evans [Sat, 25 Jul 2015 00:39:56 +0000 (17:39 -0700)]
Revert 4fd4095a5ffe3d4e50e0dac5f8ad37b8478afa9d, log individual measurements.

I think I lost a patch along the way, because I remember needing
something like this, but the reverted patch isn't the right way to
do this.  Removing ...

gdb/testsuite/ChangeLog:

* gdb.perf/lib/perftest/measure.py (MeasurementCpuTime::stop): Print
result.
(MeasurementWallTime::stop): Ditto.
(MeasurementVmSizeTime::stop): Ditto.

9 years agoAutomatic date update in version.in
GDB Administrator [Sat, 25 Jul 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoAdd gmonster-{1,2} perf testcases.
Doug Evans [Fri, 24 Jul 2015 22:46:31 +0000 (15:46 -0700)]
Add gmonster-{1,2} perf testcases.

These testcases are mocks of real programs.
GDB doesn't care what the programs do, they just have to look
and/or behave like the real program.
These testcases exercise gdb when debugging really large programs.
E.g., gmonster-1 has 10,000 CUs, and gmonster-2 has 1000 shared libs
(which is actually a little small, 5000 would be more accurate).

gdb/testsuite/ChangeLog:

* gdb.perf/lib/perftest/utils.py: New file.
* gdb.perf/gm-hello.cc: New file.
* gdb.perf/gm-pervasive-typedef.cc: New file.
* gdb.perf/gm-pervasive-typedef.h: New file.
* gdb.perf/gm-std.cc: New file.
* gdb.perf/gm-std.h: New file.
* gdb.perf/gm-use-cerr.cc: New file.
* gdb.perf/gm-utils.h: New file.
* gdb.perf/gmonster-null-lookup.py: New file.
* gdb.perf/gmonster-pervasive-typedef.py: New file.
* gdb.perf/gmonster-print-cerr.py: New file.
* gdb.perf/gmonster-ptype-string.py: New file.
* gdb.perf/gmonster-runto-main.py: New file.
* gdb.perf/gmonster-select-file.py: New file.
* gdb.perf/gmonster1-null-lookup.exp: New file.
* gdb.perf/gmonster1-pervasive-typedef.exp: New file.
* gdb.perf/gmonster1-print-cerr.exp: New file.
* gdb.perf/gmonster1-ptype-string.exp: New file.
* gdb.perf/gmonster1-runto-main.exp: New file.
* gdb.perf/gmonster1-select-file.exp: New file.
* gdb.perf/gmonster1.cc: New file.
* gdb.perf/gmonster1.exp: New file.
* gdb.perf/gmonster2-null-lookup.exp: New file.
* gdb.perf/gmonster2-pervasive-typedef.exp: New file.
* gdb.perf/gmonster2-print-cerr.exp: New file.
* gdb.perf/gmonster2-ptype-string.exp: New file.
* gdb.perf/gmonster2-runto-main.exp: New file.
* gdb.perf/gmonster2-select-file.exp: New file.
* gdb.perf/gmonster2.cc: New file.
* gdb.perf/gmonster2.exp: New file.

9 years agoAdd perf testcase generator.
Doug Evans [Fri, 24 Jul 2015 22:43:15 +0000 (15:43 -0700)]
Add perf testcase generator.

gdb/testsuite/ChangeLog:

* gdb.perf/README: New file.
* lib/perftest.exp (tcl_string_list_to_python_list): New function.
* lib/gen-perf-test.exp: New file.

9 years agoPerfTest::assemble functions return results.
Doug Evans [Fri, 24 Jul 2015 22:38:21 +0000 (15:38 -0700)]
PerfTest::assemble functions return results.

gdb/testsuite/ChangeLog:

* lib/perftest.exp (PerfTest::compile): Unconditionally call body.
(PerfTest::startup): New function.
(PerfTest::run): Return result of calling body.
(PerfTest::assemble): Rewrite.
* gdb.perf/backtrace.exp (PerfTest::assemble): Update function result.
* gdb.perf/disassemble.exp (PerfTest::assemble): Ditto.
* gdb.perf/single-step.exp (PerfTest::assemble): Ditto.
* gdb.perf/skip-prologue.exp (PerfTest::assemble): Ditto.
* gdb.perf/solib.exp (PerfTest::assemble): Ditto.

9 years agolib/gdb.exp (clean_restart): Make executable optional.
Doug Evans [Fri, 24 Jul 2015 22:35:12 +0000 (15:35 -0700)]
lib/gdb.exp (clean_restart): Make executable optional.

gdb/testsuite/ChangeLog:

* lib/gdb.exp (clean_restart): Make executable optional.

9 years agoClean up testsuite compiler_info support.
Doug Evans [Fri, 24 Jul 2015 22:32:45 +0000 (15:32 -0700)]
Clean up testsuite compiler_info support.

gdb/testsuite/ChangeLog:

* gdb.base/watchpoint.exp (test_complex_watchpoint): Remove
compiler_info references.
* gdb.cp/temargs.exp: Ditto.
* lib/gdb.exp: Unset compiler_info instead of setting to "unknown".
(get_compiler_info): Early exit if already computed.  Set compiler_info
to "unknown" if there was a problem.
(test_compiler_info): Add function comment.  Call get_compiler_info.

9 years agoAdd parallel build support for perf tests.
Doug Evans [Fri, 24 Jul 2015 22:28:46 +0000 (15:28 -0700)]
Add parallel build support for perf tests.

gdb/testsuite/ChangeLog:

* Makefile.in (check/%.exp): Pass directory for GDB_PARALLEL.
(workers/%.worker, build-perf): New rule.
(GDB_PERFTEST_MODE): New variable.
(check-perf): Use it.
(clean): Clean up gdb.perf parallel build subdirs.
* lib/build-piece.exp: New file.
* lib/cache.exp (gdb_do_cache): Include $GDB_PARALLEL in path name.
* lib/gdb.exp (standard_output_file): Include $GDB_PARALLEL in path
name.
(standard_temp_file): Ditto.
(GDB_PARALLEL handling): Make outputs,temp,cache directories as subdirs
of $GDB_PARALLEL.

9 years agoWorkaround debian change to default value of --as-needed.
Doug Evans [Fri, 24 Jul 2015 22:24:37 +0000 (15:24 -0700)]
Workaround debian change to default value of --as-needed.

gdb/testsuite/ChangeLog:

* lib/future.exp (gdb_default_target_compile): New option
"early_flags".
* lib/gdb.exp (gdb_compile): Undo debian's change in default of
--as-needed.

9 years agoPrint data from individual perf runs.
Doug Evans [Fri, 24 Jul 2015 22:11:07 +0000 (15:11 -0700)]
Print data from individual perf runs.

gdb/testsuite/ChangeLog:

* gdb.perf/lib/perftest/measure.py (MeasurementCpuTime::stop): Print
result.
(MeasurementWallTime::stop): Ditto.
(MeasurementVmSizeTime::stop): Ditto.

9 years agoCall gdb_exit before gdb_skip_xml_test on gdb.base/catch-syscall.exp
Sergio Durigan Junior [Fri, 24 Jul 2015 20:46:49 +0000 (16:46 -0400)]
Call gdb_exit before gdb_skip_xml_test on gdb.base/catch-syscall.exp

The gdb_skip_xml_test procedure explicitly says that it cannot be
invoked when GDB is running.  However, the testcase for "catch
syscall" is wrongly doing that, which is causing a failure on
native-extended-gdbserver tests:

  new FAIL: gdb.base/catch-syscall.exp: set tdesc filename /home/gdb-buildbot/fedora-x86-64-3/fedora-x86-64-native-extended-gdbserver-m32/build/gdb/testsuite/outputs/gdb.base/catch-syscall/trivial.xml (got interactive prompt)

This obvious commit fixes this, by calling gdb_exit before gdb_skip_xml_test.

Checked in as obvious.

gdb/testsuite/ChangeLog
2015-07-24  Sergio Durigan Junior  <sergiodj@redhat.com>

* gdb.base/catch-syscall.exp: Call gdb_exit before
gdb_skip_xml_test.

9 years agoFix s390 GNU/Linux build after enum __ptrace_request changes
Pedro Alves [Fri, 24 Jul 2015 19:29:53 +0000 (20:29 +0100)]
Fix s390 GNU/Linux build after enum __ptrace_request changes

The buildbot noticed that the enum __ptrace_request series broke the
s390 GNU/Linux build:

../../binutils-gdb/gdb/s390-linux-nat.c: In function 'fetch_regs':
../../binutils-gdb/gdb/s390-linux-nat.c:226:54: error: macro "ptrace" requires 4 arguments, but only 3 given
   if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0)
                                                      ^
../../binutils-gdb/gdb/s390-linux-nat.c: In function 'store_regs':
../../binutils-gdb/gdb/s390-linux-nat.c:243:54: error: macro "ptrace" requires 4 arguments, but only 3 given
   if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0)
                                                      ^

Fix this the same way it's handled everywhere else -- just pass 0 as
forth argument, which also handles non-varargs ptrace prototypes in
non-glibc libcs, e.g., Bionic (if it ever gets a s390 port...).

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* s390-linux-nat.c (fetch_regs, store_regs, fetch_fpregs)
(s390_stopped_by_watchpoint, s390_prepare_to_resume): Pass 0 as
forth argument to ptrace PTRACE_PEEKUSR_AREA/PTRACE_POKEUSR_AREA.

9 years agogdb.python/py-events.exp and normal_stop observers ordering
Pedro Alves [Fri, 24 Jul 2015 18:34:17 +0000 (19:34 +0100)]
gdb.python/py-events.exp and normal_stop observers ordering

I have patches that:

 1 - make the CLI print stop info from a normal_stop observer, like MI
     does.

 2 - happen to change the order in which the Python and CLI/TUI
     normal_stop observers are installed.

With those in place, py-events.exp regresses like shown below [1],
because the Python stop events are output before CLI prints stop info,
instead of after, and the test doesn't expect that.

With the same Python hooks, the order in which MI and Python events is
emited today is already undefined, because MI also uses the
normal_stop observer for output.  I see no reason that we should in
general define the order observers, interpreters and scripting
languages get their turn at being notified of these events.  So this
patch makes the test cope with Python->CLI output order too.

Tested on x86_64 Fedora 20.

gdb/testsuite/
2015-07-24  Pedro Alves  <palves@redhat.com>

* gdb.python/py-events.exp: Accept output between the stop event
and the prompt.
* gdb.python/py-evsignal.exp: Likewise.
* gdb.python/py-evthreads.exp: Likewise.

[1] - The regressions in question look like:

Before said patches:
  (gdb) continue
  Continuing.
  event type: continue

  Breakpoint 2, first () at /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.python/py-events.c:30
  30   for (i = 0; i < 2; i++)
  event type: stop
  event type: stop
  stop reason: breakpoint
  first breakpoint number: 2
  breakpoint number: 2
  breakpoint number: 3
  all threads stopped
  (gdb) PASS: gdb.python/py-events.exp: continue

After said patches:
  (gdb) continue
  Continuing.
  event type: continue
  event type: stop
  event type: stop
  stop reason: breakpoint
  first breakpoint number: 2
  breakpoint number: 2
  breakpoint number: 3
  all threads stopped

  Breakpoint 2, first () at /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.python/py-events.c:30
  30   for (i = 0; i < 2; i++)
  (gdb) FAIL: gdb.python/py-events.exp: continue

9 years agoPR gdb/18717: internal error if non-leader thread exits process
Pedro Alves [Fri, 24 Jul 2015 18:18:44 +0000 (18:18 +0000)]
PR gdb/18717: internal error if non-leader thread exits process

If a non-leader thread exits the process while all other threads are
ptrace-stopped, native gdb fails an assertion.  The test added by this
commit catches it:

 /home/pedro/gdb/mygit/build/../src/gdb/linux-nat.c:3198: internal-error: linux_nat_filter_event: Assertion `lp->resumed' failed.
 A problem internal to GDB has been detected,
 further debugging may prove unreliable.
 Quit this debugging session? (y or n)
 FAIL: gdb.threads/non-leader-exit-process.exp: program exits normally (GDB internal error)

The fix is just to remove the assertion.

With that out of the way, neither GDB not GDBserver handle this
perfectly though, so I'm adding a KFAIL:

 (gdb) continue
 Continuing.
 [Thread 0x7ffff7fc0700 (LWP 15350) exited]
 No unwaited-for children left.
 Couldn't get registers: No such process.
 (gdb) KFAIL: gdb.threads/non-ldr-exit.exp: program exits normally (PRMS: gdb/18717)

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

PR gdb/18717
* linux-nat.c (linux_nat_filter_event): Don't assert that the lwp
is resumed, and extend the debug log.

gdb/testsuite/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

PR gdb/18717
* gdb.threads/non-ldr-exit.c: New file.
* gdb.threads/non-ldr-exit.exp: New file.

9 years agoFix failed exec error message
Pedro Alves [Fri, 24 Jul 2015 16:27:58 +0000 (17:27 +0100)]
Fix failed exec error message

Ref: https://sourceware.org/ml/gdb-patches/2015-07/msg00629.html

This fixes the bogus command line in the error message shown when the
SHELL environment variable points somewhere that's not something that
resembles a shell:

  $ SHELL=/nonexisting gdb /home/pedro/a.out
  (gdb) r
  Starting program: /home/pedro/a.out
 - Cannot exec /home/pedro/a.out -c exec /home/pedro/a.out .
 + Cannot exec /nonexisting -c exec /home/pedro/a.out .
  Error: No such file or directory
  During startup program exited with code 127.
  (gdb)

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* fork-child.c (fork_inferior): Print argv[0] instead of exec_file.

9 years agoAdd 'U' suffix to silence GCC 6 warning
H.J. Lu [Fri, 24 Jul 2015 16:10:18 +0000 (09:10 -0700)]
Add 'U' suffix to silence GCC 6 warning

GCC 6 warns:

error: result of ‘63 << 26’ requires 33 bits to represent, but ‘int’ only has 32 bits [-Werror=shift-overflow=]

on 0x3f << 26.  This patch adds 'U' suffix to make integer constant
unsigned.

* alpha.c (OP_Jxx): Add 'U' suffix to make it unsigned.
(OP_BSR): Likewise.
(Jxx_FUNC_JMP): Likewise.
(Jxx_FUNC_JSR): Likewise.
(Jxx_FUNC_RET): Likewise.
(Jxx_FUNC_JSR_COROUTINE): Likewise.
(alpha_find_call): Replace 0x3f with 0x3fU.

9 years agoUse 0xffffffffffffffffLL to silence GCC 6 warning
H.J. Lu [Fri, 24 Jul 2015 16:05:33 +0000 (09:05 -0700)]
Use 0xffffffffffffffffLL to silence GCC 6 warning

GCC 6 warns:

error: result of ‘4294967295ll << 32’ requires 65 bits to represent, but ‘long long int’ only has 64 bits [-Werror=shift-overflow=]

on ((((bfd_signed_vma) 0xffffffff) << 32) | 0xffffffff).  This patch
replaces it with bfd_signed_vma) 0xffffffffffffffffLL.

* stabs.c (parse_stab_range_type): Use 0xffffffffffffffffLL.

9 years agoFix the evaluation of RL78 complex relocs, by making immediate values be computed...
Nick Clifton [Fri, 24 Jul 2015 15:44:27 +0000 (16:44 +0100)]
Fix the evaluation of RL78 complex relocs, by making immediate values be computed relative to a new absolute symbol.

gas * config/tc-rl78.c (rl78_abs_sym): New local variable.
(md_begin): Initialise the new symbol.
(OPIMM): Define the value to be relative to the new symbol and not
the absolute section symbol.

ld * emulparams/elf32rl78.sh (OTHER_SECTIONS): Provide a value for
the _-rl78_abs__ symbol.

tests * gas/all/struct.d: Allow for extra symbols in the output.
* gas/macros/test1.d: Likewise.
* gas/elf/elf.exp: Add an rl78 machine.
* gas/elf/sections2e-rl78: New file.

tests * binutils-all/localize-hidden-1.d: Allow for extra symbols in the
output.
        * binutils-all/strip-11.d: Skip for the RL78.

9 years agoLinux: sys/ptrace.h -> nat/gdb_ptrace.h everywhere
Pedro Alves [Fri, 24 Jul 2015 13:57:20 +0000 (14:57 +0100)]
Linux: sys/ptrace.h -> nat/gdb_ptrace.h everywhere

So that we pick the enum __ptrace_request fix everywhere.

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* aarch64-linux-nat.c: Include nat/gdb_ptrace.h instead of
sys/ptrace.h.
* alpha-linux-nat.c: Likewise.
* amd64-linux-nat.c: Likewise.
* arm-linux-nat.c: Likewise.
* hppa-linux-nat.c: Likewise.
* i386-linux-nat.c: Likewise.
* ia64-linux-nat.c: Likewise.
* linux-fork.c: Likewise.
* linux-nat.c: Likewise.
* m32r-linux-nat.c: Likewise.
* m68klinux-nat.c: Likewise.
* mips-linux-nat.c: Likewise.
* nat/linux-btrace.c: Likewise.
* nat/linux-ptrace.c: Likewise.
* nat/linux-ptrace.h
* nat/mips-linux-watch.c: Likewise.
* nat/x86-linux-dregs.c: Likewise.
* ppc-linux-nat.c: Likewise.
* s390-linux-nat.c: Likewise.
* spu-linux-nat.c: Likewise.
* tilegx-linux-nat.c: Likewise.
* x86-linux-nat.c: Likewise.
* xtensa-linux-nat.c: Likewise.

gdb/gdbserver/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.c: Likewise.om>

* linux-aarch64-low.c: Include nat/gdb_ptrace.h instead of
sys/ptrace.h.
* linux-arm-low.c: Likewise.
* linux-cris-low.c: Likewise.
* linux-crisv32-low.c: Likewise.
* linux-low.c: Likewise.
* linux-m68k-low.c: Likewise.
* linux-mips-low.c: Likewise.
* linux-nios2-low.c: Likewise.
* linux-s390-low.c: Likewise.
* linux-sparc-low.c: Likewise.
* linux-tic6x-low.c: Likewise.
* linux-tile-low.c: Likewise.
* linux-x86-low.c: Likewise.

9 years agoC++: handle glibc's ptrace(enum __ptrace_request, ...)
Pedro Alves [Fri, 24 Jul 2015 13:57:20 +0000 (14:57 +0100)]
C++: handle glibc's ptrace(enum __ptrace_request, ...)

Building in C++ mode issues ~40 warnings like this:

 ../../src/gdb/linux-nat.c: In function ‘int linux_handle_extended_wait(lwp_info*, int, int)’:
 ../../src/gdb/linux-nat.c:2016:51: warning: invalid conversion from ‘int’ to ‘__ptrace_request’ [-fpermissive]
ptrace (PTRACE_GETEVENTMSG, pid, 0, &new_pid);

The issue is that in glibc, ptrace's first parameter is an enum.
That's not a problem if we pick the PTRACE_XXX requests from
sys/ptrace.h, as those will be values of the corresponding enum.
However, we have fallback definitions for PTRACE_XXX symbols when the
system headers miss them (such as PTRACE_GETEVENTMSG above), and those
are plain integer constants.  E.g., nat/linux-ptrace.h:

 #define PTRACE_GETEVENTMSG 0x4201

One idea would be to fix this by defining those fallbacks like:

 -#define PTRACE_GETEVENTMSG 0x4201
 +#define PTRACE_GETEVENTMSG ((enum __ptrace_request) 0x4201)

However, while glibc's ptrace uses enum __ptrace_request for first
parameter:

  extern long int ptrace (enum __ptrace_request __request, ...) __THROW;

other libc's, like e.g., Android's bionic do not -- in that case, the
first parameter is int:

  long ptrace(int request, pid_t pid, void * addr, void * data);

So the fix I came up is to make configure/ptrace.m4 also detect the
type of the ptrace's first parameter and defin PTRACE_TYPE_ARG1, as
already does the for parameters 3-4, and then simply wrap ptrace with
a macro that casts the first argument to the detected type.  (I'm
leaving adding a nicer wrapper for when we drop building in C).

While this adds the wrapper, GNU/Linux files won't use it until the
next patch, which makes all native GNU/Linux files include
gdb_ptrace.h.

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* ptrace.m4 (ptrace tests): Test in C++ mode.  Try with 'enum
__ptrace_request as first parameter type instead of int.
(PTRACE_TYPE_ARG1): Define.
* nat/gdb_ptrace.h [!PTRACE_TYPE_ARG5] (ptrace): Define as wrapper
that casts first argument to PTRACE_TYPE_ARG1.
* config.in: Regenerate.
* configure: Regenerate.

gdb/gdbserver/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* config.in: Regenerate.
* configure: Regenerate.

9 years agoMove gdb_ptrace.h to nat/
Pedro Alves [Fri, 24 Jul 2015 13:57:19 +0000 (14:57 +0100)]
Move gdb_ptrace.h to nat/

Now that gdbserver's configure defines PTRACE_TYPE_ARGx etc., we'll be
able to make gdbserver use gdb_ptrace.h too.  Move it to the native
target files directory.

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* gdb_ptrace.h: Move ...
* nat/gdb_ptrace.h: ... here.
* inf-ptrace.c: Adjust.

9 years agomake gdbserver use the same ptrace autoconf checks as gdb
Pedro Alves [Fri, 24 Jul 2015 13:57:19 +0000 (14:57 +0100)]
make gdbserver use the same ptrace autoconf checks as gdb

This factors the ptrace checks out of gdb's configure.ac to a new
ptrace.m4 file, and then makes gdbserver's configure.ac source it too.

gdb/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* acinclude.m4: Include ptrace.m4.
* configure.ac: Call GDB_AC_PTRACE and move ptrace checks ...
* ptrace.m4: ... to this new file.

gdb/gdbserver/ChangeLog:
2015-07-24  Pedro Alves  <palves@redhat.com>

* acinclude.m4: Include ../ptrace.m4.
* configure.ac: Call GDB_AC_PTRACE.
* config.in, configure: Regenerate.

9 years agoRemove proc->priv->new_inferior
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Remove proc->priv->new_inferior

As the result of the previous patch, new_inferior is no longer used.
This patch is to remove it.

gdb/gdbserver:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* linux-low.c (linux_create_inferior): Remove setting to
proc->priv->new_inferior.
(linux_attach): Likewise.
(linux_low_filter_event): Likewise.
* linux-low.h (struct process_info_private) <new_inferior>: Remove.

9 years agoInitialise target descrption after skipping extra traps for --wrapper
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Initialise target descrption after skipping extra traps for --wrapper

Nowadays, when --wrapper is used, GDBserver skips extra traps/stops
in the wrapper program, and stops at the first instruction of the
program to be debugged.  However, GDBserver created target description
in the first stop of inferior, and the executable of the inferior
is the wrapper program rather than the program to be debugged.  In
this way, the target description can be wrong if the architectures
of wrapper program and program to be debugged are different.  This
is shown by some fails in gdb.server/wrapper.exp on buildbot.

We are testing i686-linux GDB (Fedora-i686) on an x86_64-linux box
(fedora-x86-64-4) in buildbot, such configuration causes fails in
gdb.server/wrapper.exp like this:

spawn /home/gdb-buildbot-2/fedora-x86-64-4/fedora-i686/build/gdb/testsuite/../../gdb/gdbserver/gdbserver --once --wrapper env TEST=1 -- :2346 /home/gdb-buildbot-2/fedora-x86-64-4/fedora-i686/build/gdb/testsuite/outputs/gdb.server/wrapper/wrapper
Process /home/gdb-buildbot-2/fedora-x86-64-4/fedora-i686/build/gdb/testsuite/outputs/gdb.server/wrapper/wrapper created; pid = 8795
Can't debug 64-bit process with 32-bit GDBserver
Exiting
target remote localhost:2346
localhost:2346: Connection timed out.
(gdb) FAIL: gdb.server/wrapper.exp: setting breakpoint at marker

See https://sourceware.org/ml/gdb-testers/2015-q3/msg01541.html

In this case, program to be debugged ("wrapper") is 32-bit but wrapper
program ("/usr/bin/env") is 64-bit, so GDBserver gets the 64-bit
target description instead of 32-bit.

The root cause of this problem is that GDBserver creates target
description too early, and the rationale of fix could be creating
target description once the GDBserver skips extra traps and inferior
stops at the first instruction of the program we want to debug.  IOW,
when GDBserver skips extra traps, the inferior's tdesc is NULL, and
mywait and its callees shouldn't use inferior's tdesc, so in this
patch, we skip code that requires register access, see changes in
linux_resume_one_lwp_throw and need_step_over_p.

In linux_low_filter_event, if target description isn't initialised and
GDBserver attached the process, we create target description immediately,
because GDBserver don't have to skip extra traps for attach, IOW, it
makes no sense to use --attach and --wrapper together.  Otherwise, the
process is launched by GDBserver, we keep the status pending, and return.

After GDBserver skipped extra traps in start_inferior, we call a
target_ops hook arch_setup to initialise target description there.

gdb/gdbserver:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* linux-low.c (linux_arch_setup): New function.
(linux_low_filter_event): If proc->tdesc is NULL and
proc->attached is true, call the_low_target.arch_setup.
Otherwise, keep status pending, and return.
(linux_resume_one_lwp_throw): Don't call get_pc if
thread->while_stepping isn't NULL.  Don't call
get_thread_regcache if proc->tdesc is NULL.
(need_step_over_p): Return 0 if proc->tdesc is NULL.
(linux_target_ops): Install arch_setup.
* server.c (start_inferior): Call the_target->arch_setup.
* target.h (struct target_ops) <arch_setup>: New field.
(target_arch_setup): New marco.
* lynx-low.c (lynx_target_ops): Update.
* nto-low.c (nto_target_ops): Update.
* spu-low.c (spu_target_ops): Update.
* win32-low.c (win32_target_ops): Update.

9 years agoSet proc->priv->new_inferior out of linux_add_process
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Set proc->priv->new_inferior out of linux_add_process

Nowadays, we set proc->priv->new_inferior to 1 inside linux_add_process,
and new_inferior is used as a flag to initialise target description later.
linux_add_process is used for the three cases, fork/vfork event
(handle_extended_wait), run the program (linux_create_inferior), and
attach to the process (linux_attach).  In the first case, the child's
target description is copied from parent's, so we don't need to initialise
target description again later, which means we don't need to set
proc->priv->new_inferior to 1 in this case.  For the rest of two cases,
we need this flag.

This patch move the code setting proc->priv->new_inferior to 1 inside
linux_add_process to linux_create_inferior and linux_attach.  No
functionality is changed.

gdb/gdbserver:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* linux-low.c (linux_add_process): Don't set
proc->priv->new_inferior.
(linux_create_inferior): Set proc->priv->new_inferior to 1.
(linux_attach): Likewise.

9 years agoRefactor start_inferior
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Refactor start_inferior

This patch is to refactor function start_inferior that signal_pid
is return in one place.

gdb/gdbserver:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* server.c (start_inferior): Code refactor.

9 years agoTest --wrapper when restarting process.
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Test --wrapper when restarting process.

My patch series will affect the code starting inferior in GDBserver
(callees of start_inferior), so we need tests to cover how
start_inferior is used in different cases.

In server.c:process_serial_event, start_inferior is used when
GBDserver receives 'R' packet, and this patch is to add a test
for this path, and see how --wrapper option works when the process
is restarted.

gdb/testsuite:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* gdb.server/ext-wrapper.exp: Test --wrapper option when
restarting process.

9 years agoSet general_thread after restart
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Set general_thread after restart

When I run gdb.server/ext-restart.exp, I get the following GDB internal
error,

run^M
The program being debugged has been started already.^M
Start it from the beginning? (y or n) y^M
Sending packet: $vKill;53c5#3d...Packet received: OK^M
Packet vKill (kill) is supported^M
Sending packet: $vFile:close:6#b6...Packet received: F0^M
Sending packet: $vFile:close:3#b3...Packet received: F0^M
Starting program: /scratch/yao/gdb/build-git/x86_64/gdb/testsuite/gdb.server/ext-restart ^M
Sending packet: $QDisableRandomization:1#cf...Packet received: OK^M
Sending packet: $R0#82...Sending packet: $qC#b4...Packet received: QCp53c5.53c5^M  <-- [1]
Sending packet: $qAttached:53c5#c9...Packet received: E01^M
warning: Remote failure reply: E01^M
....
0x00002aaaaaaac2d0 in ?? () from target:/lib64/ld-linux-x86-64.so.2^M
/home/yao/SourceCode/gnu/gdb/git/gdb/thread.c:88: internal-error: inferior_thread: Assertion `tp' failed.^M
A problem internal to GDB has been detected,^M
further debugging may prove unreliable.^M
Quit this debugging session? (y or n) FAIL: gdb.server/ext-restart.exp: run to main (GDB internal error)
Resyncing due to internal error.

the test is to restart the program, to make sure GDBserver handles
packet 'R' correctly.  From the GDBserver output, we can see,

 Remote debugging from host 127.0.0.1^M
 Process /scratch/yao/gdb/build-git/x86_64/gdb/testsuite/gdb.server/ext-restart created; pid = 21445^M
 GDBserver restarting^M
 Process /scratch/yao/gdb/build-git/x86_64/gdb/testsuite/gdb.server/ext-restart created; pid = 21446^M
 Killing process(es): 21446

we first start process 21445(0x53c5), kill it and restart a new process
21446.  However, in the gdb output above [1], we can see that the reply
of qC is still the old process id rather than the new one.  Looks
general_thread isn't up to date after GDBserver receives R packet.
This patch is to update general_thread after call start_inferior.

gdb/gdbserver:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* server.c (process_serial_event): Set general_thread.

gdb/testsuite:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* gdb.server/ext-restart.exp: New file.

9 years agoTest --wrapper in extended-remote
Yao Qi [Fri, 24 Jul 2015 13:40:34 +0000 (14:40 +0100)]
Test --wrapper in extended-remote

We didn't test --wrapper option in extended-remote before, this patch
is to add a test case for it.  In order to pass option --wrapper to
gdbserver in extended-remote, I add arg in gdbserver_start_extended,
and its default value is "", so that other places use
gdbserver_start_extended don't have to be updated.

gdb/testsuite:

2015-07-24  Yao Qi  <yao.qi@linaro.org>

* lib/gdbserver-support.exp (gdbserver_start_extended): Add
argument options.
* gdb.server/ext-wrapper.exp: New file.

9 years agoReplace -g with -ggdb3 in ld compress tests
H.J. Lu [Fri, 24 Jul 2015 11:14:04 +0000 (04:14 -0700)]
Replace -g with -ggdb3 in ld compress tests

Use -ggdb3 to generate .debug_macro sections, which are bigger and are
always compressed.

* ld-elf/compress.exp (build_tests): Replace -g with -ggdb3.
* ld-elf/zlibbegin.rS: Also expect "GC".
* ld-elf/zlibnormal.rS: Likewise.

9 years agoRemove leading/trailing white spaces in ChangeLog
H.J. Lu [Fri, 24 Jul 2015 11:08:12 +0000 (04:08 -0700)]
Remove leading/trailing white spaces in ChangeLog

9 years agoCorrect reloc section name
Alan Modra [Fri, 24 Jul 2015 05:14:26 +0000 (14:44 +0930)]
Correct reloc section name

* elf.c (_bfd_elf_assign_file_positions_for_non_load): Use .rela
prefix for reloc section corresponding to rela section associated
with renamed debug section.

9 years agobfd_get_section_by_name_if hash chain traversal
Alan Modra [Fri, 24 Jul 2015 05:06:38 +0000 (14:36 +0930)]
bfd_get_section_by_name_if hash chain traversal

This function stops too soon, as I found when the hash chain happened
to contain two .debug_macro sections and a .bss section:
.debug_macro -> .bss -> .debug_macro

* section.c (bfd_get_section_by_name_if): Iterate over entire hash
chain.

9 years agoAutomatic date update in version.in
GDB Administrator [Fri, 24 Jul 2015 00:00:14 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years ago2015-07-23 Ian Coolidge <icoolidge@google.com>
Han Shen [Thu, 23 Jul 2015 22:52:22 +0000 (15:52 -0700)]
2015-07-23  Ian Coolidge  <icoolidge@google.com>

Plumb --pic-veneer option for gold.

gold/ChangeLog:
* arm.cc (Reloc_stub::stub_type_for_reloc): Plumb to stub generation.
* options.h (General_options): Add --pic-veneer option.

9 years agoFix DT_MIPS_RLD_MAP_REL tag for n64 target and 32-bit host.
Joseph Myers [Thu, 23 Jul 2015 21:52:04 +0000 (21:52 +0000)]
Fix DT_MIPS_RLD_MAP_REL tag for n64 target and 32-bit host.

For the case of MIPS n64 target and 32-bit host, the computation of
the DT_MIPS_RLD_MAP_REL tag involves sdyn->output_section->vma +
sdyn->output_offset (64-bit) being added to b (32-bit host pointer),
so losing the high part and resulting in an incorrect
DT_MIPS_RLD_MAP_REL tag, and all dynamically linked glibc tests
failing for n64.  This patch fixes this (spot-tested with glibc tests;
however, I don't have a self-contained testcase for this bug).

* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections)
<DT_MIPS_RLD_MAP_REL>: Add target address to host address
difference, not to host pointer.

9 years agoFix crash when reading dummy CUs.
Doug Evans [Thu, 23 Jul 2015 16:21:48 +0000 (09:21 -0700)]
Fix crash when reading dummy CUs.

Dummy CUs are used by the incremental linker to pre-allocate space
in the output file. They have a DWARF header but no contents.

gdb/ChangeLog:

* dwarf2read.c (dwarf2_per_cu_data): Add comment.
(load_cu): Handle dummy CUs.
(dw2_do_instantiate_symtab, process_queuef): Ditto.
(dwarf2_fetch_die_loc_sect_off, dwarf2_fetch_constant_bytes): Ditto.

gdb/testsuite/ChangeLog:

* gdb.dwarf2/dw2-dummy-cu.S: New file.
* gdb.dwarf2/dw2-dummy-cu.exp: New file.

9 years agopy-linetable.c: Fix doc of LineTable.source_lines' return type
Ciro Santilli [Thu, 23 Jul 2015 13:36:25 +0000 (06:36 -0700)]
py-linetable.c: Fix doc of LineTable.source_lines' return type

The ltpy_get_all_source_lines function, use to implement
the gdb.LineTable.source_lines method, returns a list:

    source_list = PyDict_Keys (source_dict);
    return source_list;

This patch fixes the function's documentation as well as its docstring
to say that it returns a list rather than a FrozenSet.

gdb/ChangeLog:

        * py-linetable.c (ltpy_get_all_source_lines): Adjust function
        documentation to say that it returns a list rather than
        a FrozenSet.
        (linetable_object_methods): Update the docstring of the
        "source_line" entry.

Tested on x86_64-linux.

9 years agogdb/gdbtypes: fix handling of typedef layers between array types
Pierre-Marie de Rodat [Wed, 22 Jul 2015 10:25:14 +0000 (12:25 +0200)]
gdb/gdbtypes: fix handling of typedef layers between array types

When a dynamic array type contains a typedef-wrapped array, an assertion
failure occurs during type resolution.  This is what happens in the
following Ada case:

    type Rec_Type is record
       I : Integer;
       B : Boolean;
    end record;

    type Vec_Type is array (1 .. 4) of Rec_Type;

    type Array_Type is array (Positive range <>) of Vec_Type;

If users try to print or even pass to an inferior call a variable A of
type Array_Type, GDB will raise an error:

    (gdb) print a
    ../../src/gdb/gdbtypes.c:1807: internal-error:
    resolve_dynamic_array: Assertion `TYPE_CODE (type) ==
    TYPE_CODE_ARRAY' failed.
    A problem internal to GDB has been detected,
    further debugging may prove unreliable.
    Quit this debugging session? (y or n)

What happens is that during dynamic array type resolution, we first peel
TYPE_CODE_TYPEDEF layers wrapping the array element type and check if
its type is itself TYPE_CODE_ARRAY.  If it is, we pass the
typedef-wrapped type to a recursive call to resolve_dynamic_array
whereas this function expects only TYPE_CODE_ARRAY types.

This patch makes it pass the peeled type to the recursive call so that
type resolution can continue smoothly.

gdb/ChangeLog:

* gdbtypes.c (resolve_dynamic_array): Pass the peeled element
type to the recursive call instead of the original (maybe
TYPE_CODE_TYPEDEF) type.

gdb/testsuite/ChangeLog:

* gdb.ada/var_arr_typedef.exp: New testcase.
* gdb.ada/var_arr_typedef/pack.adb: New file.
* gdb.ada/var_arr_typedef/pack.ads: New file.
* gdb.ada/var_arr_typedef/var_arr_typedef.adb: New file.

9 years agoReturn zero in aarch64_linux_can_use_hw_breakpoint if target doesn't support HW watch...
Yao Qi [Thu, 23 Jul 2015 10:22:34 +0000 (11:22 +0100)]
Return zero in aarch64_linux_can_use_hw_breakpoint if target doesn't support HW watchpoint/breakpoint

Nowadays aarch64_linux_can_use_hw_breakpoint always return one, but it
can be smarter, say, if GDB knows target doesn't support HW watchpoint
or breakpoint because HW watchpoint/breakpoint is disabled in linux
kernel, for example, it can safely return zero.

gdb:

2015-07-23  Yao Qi  <yao.qi@linaro.org>

* aarch64-linux-nat.c (aarch64_linux_can_use_hw_breakpoint): If
TYPE is watchpoint, return zero if aarch64_num_wp_regs is zero.
If TYPE is breakpoint, return zero if arch64_num_bp_regs is zero.

9 years agoFix ubsan signed integer overflow
Alan Modra [Thu, 23 Jul 2015 03:11:38 +0000 (12:41 +0930)]
Fix ubsan signed integer overflow

IMO a fairly useless warning in this case, but technically correct.

PR 18708
* i386-dis.c (get64): Avoid signed integer overflow.

9 years agoAutomatic date update in version.in
GDB Administrator [Thu, 23 Jul 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

9 years agoFix memory operand size for vcvtt?ps2u?qq instructions
H.J. Lu [Wed, 22 Jul 2015 20:24:20 +0000 (13:24 -0700)]
Fix memory operand size for vcvtt?ps2u?qq instructions

When disassembling AVX512 vcvtt?ps2u?q instructions with data
broadcasting enabled, memory operand size should be DWORD.

gas/testsuite/

PR binutils/18631
* gas/i386avx512dq-intel.d: Replace "QWORD" with "DWORD" in
vcvtt?ps2u?qq instructions disassembly regexes.
Add disassembly regex for new test.
* gas/i386/avx512dq.d: Likewise.
* gas/i386/avx512dq_vl-intel.d: Likewise.
* gas/i386/avx512dq_vl.d: Likewise.
* gas/i386/x86-64-avx512dq-intel.d: Likewise.
* gas/i386/x86-64-avx512dq.d: Likewise.
* gas/i386/x86-64-avx512dq_vl-intel.d: Likewise.
* gas/i386/x86-64-avx512dq_vl.d: Likewise.
* gas/i386/avx512dq.s: Add new test for Intel syntax with memory
operand and broadcasting enabled.
* gas/i386/avx512dq_vl.s: Likewise.
* gas/i386/x86-64-avx512dq.s: Likewise.
* gas/i386/x86-64-avx512dq_vl.s: Likewise.

opcodes/

PR binutils/18631
* i386-dis-evex.h (EVEX_W_0F78_P_2): Replace "EXxmmq" with
"EXEvexHalfBcstXmmq" for the second operand.
(EVEX_W_0F79_P_2): Likewise.
(EVEX_W_0F7A_P_2): Likewise.
(EVEX_W_0F7B_P_2): Likewise.