deliverable/binutils-gdb.git
9 years agoS390: Fix compiler invocation with "compile" command
Andreas Arnez [Fri, 27 Feb 2015 09:47:54 +0000 (10:47 +0100)] 
S390: Fix compiler invocation with "compile" command

On 64-bit S390 platforms the "compile" command always failed because
gcc was not invoked correctly.  This patch fixes the compiler
invocation.

gdb/ChangeLog:

* s390-linux-tdep.c (s390_gcc_target_options): Not just handle
31-bit targets, but 64-bit targets as well.
(s390_gnu_triplet_regexp): New function.
(s390_gdbarch_init): Set the gcc_target_options gdbarch method for
64-bit targets as well.  Set the gnu_triplet_regexp gdbarch
method.

9 years agoMark latest entry in gdb/ChangeLog as "(tiny patch)".
Joel Brobecker [Fri, 27 Feb 2015 08:49:59 +0000 (09:49 +0100)] 
Mark latest entry in gdb/ChangeLog as "(tiny patch)".

9 years agoRetrieve segment registers on Windows amd64
Jon TURNEY [Wed, 18 Feb 2015 23:13:47 +0000 (23:13 +0000)] 
Retrieve segment registers on Windows amd64

For amd64, CONTEXT_FULL does not contain CONTEXT_SEGMENTS, which seems
to be needed to retrieve all the segment registers.  Add it explicitly,
with a little de-cruftification.

The value of the segment registers isn't terribly useful on amd64, but
at least this makes the output of 'info registers' correct.

Before:

    (gdb)  i r cs ss ds es fs gs
    cs             0x33     51
    ss             0x2b     43
    ds             0x0      0
    es             0x0      0
    fs             0x0      0
    gs             0x0      0

After:

    (gdb) i r cs ss ds es fs gs
    cs             0x33     51
    ss             0x2b     43
    ds             0x2b     43
    es             0x2b     43
    fs             0x53     83
    gs             0x2b     43

gdb/ChangeLog

2015-02-27  Jon TURNEY  <jon.turney@dronecode.org.uk>

* windows-nat.c (CONTEXT_DEBUGGER): Remove.
(CONTEXT_DEBUGGER_DR): Add CONTEXT_SEGMENTS.  Incorporate flags
from CONTEXT_DEBUGGER.

9 years agoAdjust ChangeLog entry.
Marcus Shawcroft [Fri, 27 Feb 2015 08:07:55 +0000 (08:07 +0000)] 
Adjust ChangeLog entry.

9 years agoAdd missing CHECK_TYPEDEF calls to recent vptr_{fieldno,basetype} cleanup.
Doug Evans [Fri, 27 Feb 2015 01:31:29 +0000 (17:31 -0800)] 
Add missing CHECK_TYPEDEF calls to recent vptr_{fieldno,basetype} cleanup.

gdb/ChangeLog:

* gdbtypes.c (internal_type_vptr_fieldno): Add missing call to
CHECK_TYPEDEF.
(set_type_vptr_fieldno): Ditto.
(internal_type_vptr_basetype, set_type_vptr_basetype): Ditto.
* gnu-v3-abi.c (gnuv3_dynamic_class): Ditto.

gdb/testsuite/ChangeLog:

* gdb.cp/class2.cc (Dbase, D): New classes.
(main): New local delta.
* gdb.cp/class2.exp: Test printing delta.
* gdb.cp/classes.cc (DynamicBase2, DynamicBar): New classes.
(dynbar): New global.
* gdb.cp/classes.exp (test_ptype_class_objects): Test ptype DynamicBar.

9 years agoFix recent h8300 configury changes
Alan Modra [Thu, 26 Feb 2015 02:31:50 +0000 (13:01 +1030)] 
Fix recent h8300 configury changes

* Makefile.am (ALL_EMULATION_SOURCES): Sort new h8300 entries.
(eh8300elf_linux.c, eh8300helf_linux.c, eh8300self_linux.c,
eh8300sxelf_linux.c): Do not invoke genscripts here.
* Makefile.in: Regenerate.

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

9 years ago[AArch64] Add tiny DESC test cases.
Marcus Shawcroft [Thu, 19 Feb 2015 09:52:24 +0000 (09:52 +0000)] 
[AArch64] Add tiny DESC test cases.

9 years ago[AArch64] Add support for :tlsdesc: and TLSDESC_LD_PREL19
Marcus Shawcroft [Wed, 18 Feb 2015 15:37:35 +0000 (15:37 +0000)] 
[AArch64] Add support for :tlsdesc: and TLSDESC_LD_PREL19

9 years ago[AArch64] Add support for :tlsdesc: and TLSDESC_ADR_PREL21
Marcus Shawcroft [Wed, 18 Feb 2015 15:36:40 +0000 (15:36 +0000)] 
[AArch64] Add support for :tlsdesc: and TLSDESC_ADR_PREL21

9 years agoAdd tiny memory model GD test cases.
Marcus Shawcroft [Thu, 19 Feb 2015 09:10:11 +0000 (09:10 +0000)] 
Add tiny memory model GD test cases.

9 years agoAdd ADR :tlsgd: directive and TLSGD_ADR_PREL21 support.
Marcus Shawcroft [Fri, 13 Feb 2015 07:13:57 +0000 (07:13 +0000)] 
Add ADR :tlsgd: directive and TLSGD_ADR_PREL21 support.

9 years agoAdding tls-tiny-ie test.
Marcus Shawcroft [Wed, 18 Feb 2015 18:10:59 +0000 (18:10 +0000)] 
Adding tls-tiny-ie test.

9 years agoAdding support for TLSIE_LD_GOTTREL_PREL19.
Marcus Shawcroft [Fri, 13 Feb 2015 09:57:11 +0000 (09:57 +0000)] 
Adding support for TLSIE_LD_GOTTREL_PREL19.

9 years agoAdding ld_literal_type.
Marcus Shawcroft [Wed, 18 Feb 2015 18:10:27 +0000 (18:10 +0000)] 
Adding ld_literal_type.

Extend the address modifier parsing to distinguish between the
modifers used in LDR literal and LDR register offset address modes.

The current parser incorrectly accepts the :got: modifier on a
register offset instruction resulting in silent corruption of the
output binary.

9 years agoAdding test case for abuse of :got: in offset load
Marcus Shawcroft [Wed, 18 Feb 2015 18:32:43 +0000 (18:32 +0000)] 
Adding test case for abuse of :got: in offset load

The :got: modifier is not meaningful in a register offset load store
instruction and should result in a diagnostic.

9 years agoAdding adr_type and prevent adr :got:
Marcus Shawcroft [Thu, 5 Feb 2015 16:57:09 +0000 (16:57 +0000)] 
Adding adr_type and prevent adr :got:

The current implementation of the :got: assembler modifier does not
distinguish the ADR and ADRP instruction.  The :got: modifier does not
make sense on and ADR instruction and should be error'd rather than
the current behavior of applying an inappropriate relocation to the
output and scrambling the underlying instruction silently.

9 years agoAdd test case for ADR :got:foo
Marcus Shawcroft [Thu, 5 Feb 2015 13:16:33 +0000 (13:16 +0000)] 
Add test case for ADR :got:foo

The modifier :got: does not make sense on an ADR instruction.  Add a
test case to ensure we gripe.

9 years agoFix field size for TLSDESC_CALL
Marcus Shawcroft [Wed, 18 Feb 2015 15:08:34 +0000 (15:08 +0000)] 
Fix field size for TLSDESC_CALL

This relocation is a marker and does not result in a modification to
the binary.  Changing the HOWTO bit field width to reflect this
property.

9 years agoFix field size for TLSLE_MOVW_TPREL_* relocations.
Marcus Shawcroft [Thu, 26 Feb 2015 21:20:05 +0000 (21:20 +0000)] 
Fix field size for TLSLE_MOVW_TPREL_* relocations.

The HOWTO table entries for the TLSLE_MOVW_TPREL_* relocations are
wrong by inspection.  The current implementation does not actually use
these field widths for these relocations but they should be corrected.

9 years agoFix TLSIE_MOVW_GOTTPREL_G0_NC field size.
Marcus Shawcroft [Wed, 18 Feb 2015 15:00:27 +0000 (15:00 +0000)] 
Fix TLSIE_MOVW_GOTTPREL_G0_NC field size.

9 years agoRemove dead code.
Marcus Shawcroft [Fri, 13 Feb 2015 06:02:52 +0000 (06:02 +0000)] 
Remove dead code.

9 years agoFix arithmetic overflows running srconv on fuzzed binaries.
Nick Clifton [Thu, 26 Feb 2015 22:16:16 +0000 (22:16 +0000)] 
Fix arithmetic overflows running srconv on fuzzed binaries.

PR binutils/17512
* coffgrok.c (do_type): Check for an out of range tag index.
Check for integer overflow computing array dimension.
(do_define): Likewise.

9 years agoFixes illegal memory access errors and arithmetic overflows when running strip on...
Nick Clifton [Thu, 26 Feb 2015 21:32:04 +0000 (21:32 +0000)] 
Fixes illegal memory access errors and arithmetic overflows when running strip on fuzzed binaries.

PR binutils/17512
* coffcode.h (coff_compute_section_file_positions): Report
negative page sizes.
* elf.c (elf_fake_sections): Handle excessive alignmment powers.
(assign_file_positions_for_non_load_sections): Replace assertion
with an error message.
(rewrite_elf_program_header): Handle excessive segment
alignments.
* mach-o.c (bfd_mach_o_read_section_32): Likewise.
(bfd_mach_o_read_section_64): Likewise.
* peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Use %B to
print a bfd name, not %A.

9 years agogdbserver/Linux: Simplify stepping past program breakpoint a little
Pedro Alves [Thu, 26 Feb 2015 18:48:46 +0000 (18:48 +0000)] 
gdbserver/Linux: Simplify stepping past program breakpoint a little

.decr_pc_after_break is never higher than .breakpoint_len, so use
.breakpoint_len directly.  Based on idea from Yao here:
https://sourceware.org/ml/gdb-patches/2015-02/msg00689.html

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

* linux-low.c (linux_wait_1): When incrementing the PC past a
program breakpoint always use the_low_target.breakpoint_len as
increment, rather than the maximum between that and
the_low_target.decr_pc_after_break.

9 years agoAdd ATTRIBUTE_PRINTF attributes, and fix fallout
Pedro Alves [Thu, 26 Feb 2015 18:29:12 +0000 (18:29 +0000)] 
Add ATTRIBUTE_PRINTF attributes, and fix fallout

Fixes building gdb on x86_64-apple-darwin14 with clang, which produces
a number of warnings from -Wformat-nonliteral.

Ref: https://sourceware.org/ml/gdb/2015-02/msg00047.html

gdb/ChangeLog:
2015-02-26  Pedro Alves  <palves@redhat.com>

* auto-load.h (file_is_auto_load_safe): Add ATTRIBUTE_PRINTF.
* complaints.c (vcomplaint): Pass argument FMT directly to
printf-like functions instead of complaint->fmt.
* ctf.c (ctf_save_write_metadata): Add ATTRIBUTE_PRINTF.
* darwin-nat.c (inferior_debug): Add ATTRIBUTE_PRINTF.
* compile/compile-loc2c.c (pushf, unary, binary): Add
ATTRIBUTE_PRINTF.
(do_compile_dwarf_expr_to_c): Pass string literal as format string
to pushf.
(BINARY): Pass string literal as format string to 'binary'.
* compile/compile-object-load.c (link_callbacks_einfo): Add
ATTRIBUTE_PRINTF.
* guile/guile-internal.h (gdbscm_printf): Add ATTRIBUTE_PRINTF.

9 years agoobjcopy: Avoid shadowing optarg.
Andrew Burgess [Thu, 26 Feb 2015 17:17:46 +0000 (17:17 +0000)] 
objcopy: Avoid shadowing optarg.

In commit 7173b38a442c007a554ea200817a0eadce89c87b I used optarg as the
name for a function parameter, shadowing the global of that name.  This
commit changes the function parameter to be called arg.

binutils/ChangeLog:

* objcopy.c (init_section_add): Rename optarg to arg in order to
avoid shadowing a global variable.

9 years agoRename windows-termcap.c -> stub-termcap.c
Pedro Alves [Thu, 26 Feb 2015 17:13:58 +0000 (17:13 +0000)] 
Rename windows-termcap.c -> stub-termcap.c

Preparation for using this on all hosts.

Confirmed that --host=x86_64-w64-mingw32 still builds the stub
termcap.

gdb/ChangeLog:
2015-02-26  Pedro Alves  <palves@redhat.com>

* windows-termcap.c: Rename to ...
* stub-termcap.c: ... this.  Adjust header line.
* Makefile.in (SFILES): Refer to stub-termcap.c instead of
windows-termcap.c.
* configure: Regenerate.
* configure.ac: Refer to stub-termcap.o instead of
windows-termcap.o.
* gdb_curses.h: Mention stub-termcap.c instead of
windows-termcap.c.

9 years agocompile: Fix GNU-IFUNC funcs called from injected code
Jan Kratochvil [Thu, 26 Feb 2015 16:40:57 +0000 (17:40 +0100)] 
compile: Fix GNU-IFUNC funcs called from injected code

One could not call IFUNCs (=indirect functions) from the compiled injected
code.  Either it errored with:
gdb command line:1:1: error: function return type cannot be function

or it just called the IFUNC dispatcher in normal way, returning real function
implementation address instead of the function return value (and thus no
function was called).

gdb/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

* compile/compile-c-symbols.c (convert_one_symbol, convert_symbol_bmsym)
(gcc_symbol_address): Call gnu_ifunc_resolve_addr.

gdb/testsuite/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

* gdb.compile/compile-ifunc.c: New file.
* gdb.compile/compile-ifunc.exp: New file.

9 years agoFix print of value type in a corner case of finish
Antoine Tremblay [Wed, 25 Feb 2015 16:00:01 +0000 (11:00 -0500)] 
Fix print of value type in a corner case of finish

When doing finish in a function, if gdb fails to return a value, gdb
also fails at printing the value type if this type is a struct.

For example :

(gdb) fin
....
Value returned has type: . Cannot determine contents

This patch fixes this by calling type_to_string to print the type
so that we can support these types.

This patch returns the following example output :

(gdb) fin
....
Value returned has type: struct test. Cannot determine contents

Also, this patch modifies structs.exp to check that we return the
correct type.

gdb/ChangeLog:
* gdb/infcmd.c (print_return_value): use type_to_string to print type.

gdb/testsuite/ChangeLog:
* gdb.base/structs.exp: Check for correct struct on finish.

9 years agoFix undefined arithmetic operations detected by -fsanitize=undefined when running...
Nick Clifton [Thu, 26 Feb 2015 14:21:54 +0000 (14:21 +0000)] 
Fix undefined arithmetic operations detected by -fsanitize=undefined when running readelf on fuzzed binaries.

PR binutils/17512
* dwarf.c (display_debug_loc): Pacify the undefined behaviour
sanitizer by simplifying address difference calculation.
(struct Frame_Chunk): Change type of cfa_offset to dwarf_vma in
order to avoid arithmetic overflows.
(frame_display_row): Cast cfa_offset before printing it.
(display_debug_frames): Likewise.
Check for an unexpected segment size.
Chnage type of 'l' local to dwarf_vma and cast it back to an int
when printing.
(process_cu_tu_index): Tighten check for an invalid ncols value.
* readelf.c (process_corefile_note_segment): Check for
inote.descdata extending beyond the end of the section.
(process_v850_notes): Likewise.

9 years agoDwarf assembler: handle one instruction function
Yao Qi [Thu, 26 Feb 2015 14:21:19 +0000 (14:21 +0000)] 
Dwarf assembler: handle one instruction function

On aarch64, we got the following fail:

(gdb) disassemble func
Dump of assembler code for function func:
   0x0000000000400730 <+0>:     ret
End of assembler dump.^M
(gdb) x/2i func+0^M
   0x400730 <func>:     ret^M
   0x400734 <main>:     stp     x29, x30, [sp,#-16]!^M
(gdb) FAIL: gdb.dwarf2/dw2-ifort-parameter.exp: x/2i func+0

the pattern in proc function_range expects to match <func+0>, however,
GDB doesn't display the offset when it is zero.  This patch is to
adjust the pattern when $func_length is zero.

gdb/testsuite:

2015-02-26  Yao Qi  <yao.qi@linaro.org>

* lib/dwarf.exp (function_range): Adjust pattern when $func_length
is zero.

9 years agoSEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
Jan Kratochvil [Thu, 26 Feb 2015 13:08:01 +0000 (14:08 +0100)] 
SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file

The attached patch fixes the SEGV and lets GDB successfully
load all kernel modules installed by default on RHEL 7.

Valgrind on F-21 x86_64 host has shown me more clear what is the problem:

Reading symbols from /home/jkratoch/t/cordic.ko...Reading symbols from
/home/jkratoch/t/cordic.ko.debug...=================================================================
==22763==ERROR: AddressSanitizer: heap-use-after-free on address 0x6120000461c8 at pc 0x150cdbd bp 0x7fffffffc7e0 sp 0x7fffffffc7d0
READ of size 8 at 0x6120000461c8 thread T0
    #0 0x150cdbc in ppc64_elf_get_synthetic_symtab /home/jkratoch/redhat/gdb-test-asan/bfd/elf64-ppc.c:3282
    #1 0x8c5274 in elf_read_minimal_symbols /home/jkratoch/redhat/gdb-test-asan/gdb/elfread.c:1205
    #2 0x8c55e7 in elf_symfile_read /home/jkratoch/redhat/gdb-test-asan/gdb/elfread.c:1268
[...]
0x6120000461c8 is located 264 bytes inside of 288-byte region [0x6120000460c0,0x6120000461e0)
freed by thread T0 here:
    #0 0x7ffff715454f in __interceptor_free (/lib64/libasan.so.1+0x5754f)
    #1 0xde9cde in xfree common/common-utils.c:98
    #2 0x9a04f7 in do_my_cleanups common/cleanups.c:155
    #3 0x9a05d3 in do_cleanups common/cleanups.c:177
    #4 0x8c538a in elf_read_minimal_symbols /home/jkratoch/redhat/gdb-test-asan/gdb/elfread.c:1229
    #5 0x8c55e7 in elf_symfile_read /home/jkratoch/redhat/gdb-test-asan/gdb/elfread.c:1268
[...]
previously allocated by thread T0 here:
    #0 0x7ffff71547c7 in malloc (/lib64/libasan.so.1+0x577c7)
    #1 0xde9b95 in xmalloc common/common-utils.c:41
    #2 0x8c4da2 in elf_read_minimal_symbols /home/jkratoch/redhat/gdb-test-asan/gdb/elfread.c:1147
    #3 0x8c55e7 in elf_symfile_read /home/jkratoch/redhat/gdb-test-asan/gdb/elfread.c:1268
[...]
SUMMARY: AddressSanitizer: heap-use-after-free /home/jkratoch/redhat/gdb-test-asan/bfd/elf64-ppc.c:3282 ppc64_elf_get_synthetic_symtab
[...]
==22763==ABORTING

A similar case a few lines later I have fixed in 2010 by:
        https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=3f1eff0a2c7f0e7078f011f55b8e7f710aae0cc2

My testcase does not always reproduce it but at least a bit:
 * GDB without ppc64 target (even as a secondary one) is reported as "untested"
 * ASAN-built GDB with ppc64 target always crashes (and PASSes with this fix)
 * unpatched non-ASAN-built GDB with ppc64 target crashes from commandline
 * unpatched non-ASAN-built GDB with ppc64 target PASSes from runtest (?)

gdb/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

* elfread.c (elf_read_minimal_symbols): Use bfd_alloc for
bfd_canonicalize_symtab.

gdb/testsuite/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

* gdb.arch/cordic.ko.bz2: New file.
* gdb.arch/cordic.ko.debug.bz2: New file.
* gdb.arch/ppc64-symtab-cordic.exp: New file.

9 years agoFixes a resource exhaustion problem when running windres on a corrupt binary.
Nick Clifton [Thu, 26 Feb 2015 12:23:18 +0000 (12:23 +0000)] 
Fixes a resource exhaustion problem when running windres on a corrupt binary.

PR binutils/17512
* resrc.c (write_rc_messagetable): Tighten check for invalid
message lengths.

9 years agoPowerPC64 thread-safe stubs not needed for iplt
Alan Modra [Thu, 26 Feb 2015 10:56:42 +0000 (21:26 +1030)] 
PowerPC64 thread-safe stubs not needed for iplt

I was looking at a current glibc using objdump today and saw an odd
plt call stub.

0000000000044d80 <00000033.plt_call.__strchrnul>:
   44d80:       f8 41 00 28     std     r2,40(r1)
   44d84:       e9 82 8c f8     ld      r12,-29448(r2)
   44d88:       7d 89 03 a6     mtctr   r12
   44d8c:       e8 42 8d 00     ld      r2,-29440(r2)
   44d90:       28 22 00 00     cmpldi  r2,0
   44d94:       4c e2 04 20     bnectr+
   44d98:       48 13 84 f0     b       17d288 <realloc@plt>

What?  It doesn't branch to __strchrnul@plt on finding a zero r2?

Turns out this isn't a real problem since the stub is for loading an
ifunc, so will not be lazily resolved and thus r2 will never be zero.
Of course, that means the thread-safety check is unnecessary.

I also tweak the special __tls_get_addr_opt call stub here, to
restore r2 immediately after the call.  Not doing that might affect
eh_frame unwinding.

* elf64-ppc.c (plt_stub_size, build_plt_stub): Don't build
thread-safe stubs for iplt.
(build_tls_get_addr_stub): Restore r2 immediately after call.

9 years agoRework signal frame probing for FreeBSD/x86
John Baldwin [Wed, 25 Feb 2015 14:51:42 +0000 (09:51 -0500)] 
Rework signal frame probing for FreeBSD/x86

- Use signal frame sniffers that look for the signal trampoline
  instruction sequence to detect most signal frames.

- FreeBSD kernels between 9.2 and 10.1 inclusive do not include the
  signal trampoline code in process core dumps.  To detect signal
  frames for core dumps under these kernels, use the
  kern.proc.sigtramp.<pid> sysctl to fetch the location of the signal
  trampoline in the gdb process and assume that PC values within this
  location are signal frames.  This depends on that location being
  identical for all binaries.

gdb/ChangeLog:
2015-02-25  John Baldwin  <jhb@FreeBSD.org>

* amd64fbsd-nat.c: Include sys/user.h.
(_initialize_amd64fbsd_nat): Use the KERN_PROC_SIGTRAMP sysctl
instead of KERN_PS_STRINGS to locate the signal trampoline.
* i386fbsd-nat.c: Include sys/user.h.
(_initialize_i386fbsd_nat): Use the KERN_PROC_SIGTRAMP sysctl
instead of KERN_PS_STRINGS to locate the signal trampoline.
* amd64fbsd-tdep.c (amd64fbsd_sigtramp_code): New.
(amd64fbsd_sigtramp_p): New.
(amd64fbsd_sigtramp_start_addr, amd64fbsd_sigtramp_end_addr): No
longer set default values.
(amd64fbsd_init_abi): Set "sigtramp_p" to "amd64fbsd_sigtramp_p".
* i386fbsd-tdep.c (i386fbsd_sigtramp_start)
(i386fbsd_sigtramp_middle, i386fbsd_sigtramp_end)
(i386fbsd_freebsd4_sigtramp_start)
(i386fbsd_freebsd4_sigtramp_middle)
(i386fbsd_freebsd4_sigtramp_end, i386fbsd_osigtramp_start)
(i386fbsd_osigtramp_middle, i386fbsd_osigtramp_end): New.
(i386fbsd_sigtramp_p): New.
(i386fbsd_sigtramp_start_addr, i386fbsd_sigtramp_end_addr): No
longer set default values.
(i386fbsd_init_abi): Set "sigtramp_p" to "i386fbsd_sigtramp_p".

9 years agoFix infinite recursion in amd64fbsd_sigcontext_addr
John Baldwin [Thu, 26 Feb 2015 11:07:57 +0000 (11:07 +0000)] 
Fix infinite recursion in amd64fbsd_sigcontext_addr

amd64fbsd_sigcontext_addr is using frame_unwind_register_unsigned to
fetch the stack pointer which results in infinite recursion.  This
patch changes it to use get_frame_register to match the
sigcontext_addr methods in the i386-bsd and amd64-linux targets
instead.

gdb/ChangeLog:
2015-02-25  John Baldwin  <jhb@freebsd.org>

* amd64fbsd-tdep.c (amd64fbsd_sigcontext_addr): Use
get_frame_register instead of frame_unwind_register_unsigned.

9 years agoChange // comment in gdb/compile/
Jan Kratochvil [Thu, 26 Feb 2015 10:50:08 +0000 (11:50 +0100)] 
Change // comment in gdb/compile/

Missing ChangeLog in the previous commit:
bb2b33b9395662e7562be34b47b9533620b583c6

gdb/ChangeLog
2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

PR build/18033
* compile/compile-c-support.c (c_compute_program): Change // comment.
* compile/compile-object-load.c (setup_sections): Change // comment.

9 years agoChange // comment in gdb/compile/
Jan Kratochvil [Thu, 26 Feb 2015 10:48:18 +0000 (11:48 +0100)] 
Change // comment in gdb/compile/

9 years agoRemove // comment in gdb/iq2000-tdep.c
Joel Brobecker [Thu, 26 Feb 2015 09:42:04 +0000 (10:42 +0100)] 
Remove // comment in gdb/iq2000-tdep.c

gdb/ChangeLog:

PR build/18033:
* iq2000-tdep.c (iq2000_frame_cache): Delete C++-style comment.

9 years ago[ARM]Update for Tag_ABI_HardFP_use per EABI doc
Terry Guo [Thu, 26 Feb 2015 06:11:41 +0000 (14:11 +0800)] 
[ARM]Update for Tag_ABI_HardFP_use per EABI doc

Updated how we merge and display this attribute per the latest
EABI documents.

bfd/ChangeLog
* elf32-arm.c (elf32_arm_merge_eabi_attributes): Update how we
merge Tag_ABI_HardFP_use.

binutils/ChangeLog
* readelf.c (arm_attr_tag_ABI_HardFP_use): Update how we
display it.

ld/testsuite/ChangeLog
* ld-arm/attr-merge-3.attr: Remove Tag_ABI_HardFP_use.
* ld-arm/attr-merge-vfp-10.d: Likewise.
* ld-arm/attr-merge-vfp-10r.d: Likewise.
* ld-arm/attr-merge-vfp-12.d: Likewise.
* ld-arm/attr-merge-vfp-12r.d: Likewise.
* ld-arm/attr-merge-vfp-13.d: Likewise.
* ld-arm/attr-merge-vfp-13r.d: Likewise.
* ld-arm/attr-merge-vfp-14.d: Likewise.
* ld-arm/attr-merge-vfp-14r.d: Likewise.
* ld-arm/attr-merge-vfp-6.d: Likewise.
* ld-arm/attr-merge-vfp-6r.d: Likewise.
* ld-arm/attr-merge-vfp-7.d: Likewise.
* ld-arm/attr-merge-vfp-7r.d: Likewise.
* ld-arm/attr-merge-vfp-8.d: Likewise.
* ld-arm/attr-merge-vfp-8r.d: Likewise.

9 years agoUse dynamic text relocs for protected vars
Alan Modra [Mon, 23 Feb 2015 06:15:05 +0000 (16:45 +1030)] 
Use dynamic text relocs for protected vars

Rather than reporting a link error on attempting to use dynbss for
protected vars, use dynamic text relocs.

* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Heed -z nocopyreloc.
Use text relocs rather than giving an error on trying to use
.dynbss for protected shared lib vars.
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise.

9 years agoAutomatic date update in version.in
GDB Administrator [Thu, 26 Feb 2015 00:00:08 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 years agoobjcopy: Factor out some of the option parsing code.
Andrew Burgess [Fri, 20 Feb 2015 20:12:56 +0000 (20:12 +0000)] 
objcopy: Factor out some of the option parsing code.

This patch splits out some of the option parsing code, increasing code
reuse.

binutils/ChangeLog:

* objcopy.c (init_section_add): New function.
(section_add_load_file): New function.
(copy_main): Make use of new functions.

9 years agoAVR/ld: Use .avr.prop data during linker relaxation.
Andrew Burgess [Thu, 8 Jan 2015 22:07:48 +0000 (22:07 +0000)] 
AVR/ld: Use .avr.prop data during linker relaxation.

Make use of the data held within the .avr.prop section during linker
relaxation in order to maintain the properties of the .org and .align
directives.

In relation to the .align directives, if enough bytes are deleted before
a .align directive then the alignment can be moved while still
maintaining the alignment requirement.

bfd/ChangeLog:

* elf32-avr.c (struct elf_avr_section_data): New structure.
(struct avr_relax_info): New structure.
(elf_avr_new_section_hook): New function.
(struct elf_avr_section_data): Add relax_info.
(get_avr_relax_info): New function.
(init_avr_relax_info): New function.
(elf32_avr_relax_delete_bytes): Find next property record before
deleting bytes.  When deleting don't move bytes beyond the next
property record.
(avr_elf32_assign_records_to_section): New function.
(avr_property_record_compare): New function.
(avr_load_all_property_sections): New function.
(elf32_avr_relax_section): Load property data.  After relaxing the
section, move any .align directives that have enough deleted bytes
before them.
(bfd_elf32_new_section_hook): Define.

ld/testsuite/ChangeLog:

* ld-avr/avr-prop-1.d: New file.
* ld-avr/avr-prop-1.s: New file.
* ld-avr/avr-prop-2.d: New file.
* ld-avr/avr-prop-2.s: New file.
* ld-avr/avr-prop-3.d: New file.
* ld-avr/avr-prop-3.s: New file.
* ld-avr/avr-prop-4.d: New file.
* ld-avr/avr-prop-4.s: New file.

9 years agoavr/objdump: Support dumping .avr.prop section.
Andrew Burgess [Thu, 8 Jan 2015 21:55:43 +0000 (21:55 +0000)] 
avr/objdump: Support dumping .avr.prop section.

Add support to objdump for dumping the .avr.prop section in a structured
way.

binutils/ChangeLog:

* od-elf32_avr.c: Add elf32-avr.h include.
(OPT_AVRPROP): Define.
(options[]): Add 'avr-prop' entry.
(elf32_avr_help): Add avr-prop help text.
(elf32_avr_dump_avr_prop): New function.
(elf32_avr_dump): Add check for avr-prop.

bfd/ChangeLog:

* elf32-avr.h (struct avr_property_header): New strucure.
(avr_elf32_load_property_records): Declare.
(avr_elf32_property_record_name): Declare.
* elf32-avr.c: Add bfd_stdint.h include.
(retrieve_local_syms): New function.
(get_elf_r_symndx_section): New function.
(get_elf_r_symndx_offset): New function.
(internal_reloc_compare): New function.
(struct avr_find_section_data): New structure.
(avr_is_section_for_address): New function.
(avr_find_section_for_address): New function.
(avr_elf32_load_records_from_section): New function.
(avr_elf32_load_property_records): New function.
(avr_elf32_property_record_name): New function.

gas/testsuite/ChangeLog:

* gas/avr/avr-prop-1.d: New file.
* gas/avr/avr-prop-1.s: New file.

9 years agoavr/gas: Write out data to track .org/.align usage.
Andrew Burgess [Thu, 8 Jan 2015 20:55:10 +0000 (20:55 +0000)] 
avr/gas: Write out data to track .org/.align usage.

Adds support to the assembler to write out data for tracking the use of
.org and .align directives.  This data is collected within the assembler
and written out to a section ".avr.prop" (if there's anything to write
out).

This patch does not add any tests.  The next patch in this series will
add a better mechanism for visualising the contents of .avr.prop which
will make writing tests much easier.

This patch also does not make any use of this collected data, that will
also come along in a later patch; the intended consumer is the linker,
during linker relaxation this information will be used to ensure that
the .org and .align directives are honoured.

bfd/ChangeLog:

* elf32-avr.h (AVR_PROPERTY_RECORD_SECTION_NAME): Define.
(AVR_PROPERTY_RECORDS_VERSION): Define.
(AVR_PROPERTY_SECTION_HEADER_SIZE): Define.
(struct avr_property_record): New structure.

gas/ChangeLog:

* config/tc-avr.c: Add elf32-avr.h include.
(struct avr_property_record_link): New structure.
(avr_output_property_section_header): New function.
(avr_record_size): New function.
(avr_output_property_record): New function.
(avr_create_property_section): New function.
(avr_handle_align): New function.
(exclude_section_from_property_tables): New function.
(create_record_for_frag): New function.
(append_records_for_section): New function.
(avr_create_and_fill_property_section): New function.
(avr_post_relax_hook): New function.
* config/tc-avr.h (md_post_relax_hook): Define.
(avr_post_relax_hook): Declare.
(HANDLE_ALIGN): Define.
(avr_handle_align): Declare.
(strut avr_frag_data): New structure.
(TC_FRAG_TYPE): Define.

9 years ago[SH] Fix clrs, sets, pref insn arch memberships.
Oleg Endo [Wed, 25 Feb 2015 20:22:54 +0000 (21:22 +0100)] 
[SH] Fix clrs, sets, pref insn arch memberships.

opcodes/
* sh-opc.h (clrs, sets): Mark as arch_sh3_nommu_up instead of
arch_sh_up.
(pref): Mark as arch_sh2a_nofpu_or_sh3_nommu_up instead of
arch_sh2a_nofpu_or_sh4_nommu_nofpu_up.

gas/testsuite/
* gas/sh/arch/arch.exp: Replace dead code to generate expected .s files
with ...
* gas/sh/arch/sh-opc-gen-as.pl: ... this new script.
* gas/sh/arch/arch_expected.txt: Regenerate.
* gas/sh/arch/sh-dsp.s: Likewise.
* gas/sh/arch/sh-opc-gen-as.pl: Likewise.
* gas/sh/arch/sh.s: Likewise.
* gas/sh/arch/sh2.s: Likewise.
* gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s: Likewise.
* gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s: Likewise.
* gas/sh/arch/sh2a-nofpu.s: Likewise.
* gas/sh/arch/sh2a-or-sh3e.s: Likewise.
* gas/sh/arch/sh2a-or-sh4.s: Likewise.
* gas/sh/arch/sh2a.s: Likewise.
* gas/sh/arch/sh2e.s: Likewise.
* gas/sh/arch/sh3-dsp.s: Likewise.
* gas/sh/arch/sh3-nommu.s: Likewise.
* gas/sh/arch/sh3.s: Likewise.
* gas/sh/arch/sh3e.s: Likewise.
* gas/sh/arch/sh4-nofpu.s: Likewise.
* gas/sh/arch/sh4-nommu-nofpu.s: Likewise.
* gas/sh/arch/sh4.s: Likewise.
* gas/sh/arch/sh4a-nofpu.s: Likewise.
* gas/sh/arch/sh4a.s: Likewise.
* gas/sh/arch/sh4al-dsp.s: Likewise.

ld/testsuite/
* ld-sh/arch/arch_expected.txt: Regenerate.
* ld-sh/arch/sh-dsp.s: Likewise.
* ld-sh/arch/sh.s: Likewise.
* ld-sh/arch/sh2.s: Likewise.
* ld-sh/arch/sh2a-nofpu-or-sh3-nommu.s: Likewise.
* ld-sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s: Likewise.
* ld-sh/arch/sh2a-nofpu.s: Likewise.
* ld-sh/arch/sh2a-or-sh3e.s: Likewise.
* ld-sh/arch/sh2a-or-sh4.s: Likewise.
* ld-sh/arch/sh2a.s: Likewise.
* ld-sh/arch/sh2e.s: Likewise.
* ld-sh/arch/sh3-dsp.s: Likewise.
* ld-sh/arch/sh3-nommu.s: Likewise.
* ld-sh/arch/sh3.s: Likewise.
* ld-sh/arch/sh3e.s: Likewise.
* ld-sh/arch/sh4-nofpu.s: Likewise.
* ld-sh/arch/sh4-nommu-nofpu.s: Likewise.
* ld-sh/arch/sh4.s: Likewise.
* ld-sh/arch/sh4a-nofpu.s: Likewise.
* ld-sh/arch/sh4a.s: Likewise.
* ld-sh/arch/sh4al-dsp.s: Likewise.

9 years ago[gas][ARM] Document supported ARMv8 cores.
Kyrylo Tkachov [Wed, 25 Feb 2015 13:40:08 +0000 (13:40 +0000)] 
[gas][ARM] Document supported ARMv8 cores.

2015-02-25  Matthew Wahab  <matthew.wahab@arm.com>

* doc/c-arm.texi (-mcpu=): Add cortex-a53, cortex-a57 and
cortex-a72.

9 years ago[aarch64] Fix one fail in gdb.xml/tdesc-regs.exp
Yao Qi [Wed, 25 Feb 2015 10:39:59 +0000 (10:39 +0000)] 
[aarch64] Fix one fail in gdb.xml/tdesc-regs.exp

Hi,
I see the following fail in aarch64-linux-gnu testing...

(gdb) set tdesc file /XXX/gdb/testsuite/gdb.xml/single-reg.xml^M
warning: Architecture rejected target-supplied description^M
(gdb) FAIL: gdb.xml/tdesc-regs.exp: set tdesc file single-reg.xml

core-regs isn't set for aarch64 target, and looks it is an oversight
when aarch64 port was added.

gdb/testsuite:

2015-02-25  Yao Qi  <yao.qi@linaro.org>

* gdb.xml/tdesc-regs.exp: Set core-regs to aarch64-core.xml for
aarch64*-*-* target.

9 years agoAutomatic date update in version.in
GDB Administrator [Wed, 25 Feb 2015 00:00:07 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 years agoAdds support for emulating V850 e3v5 instructions to the simulator.
Nick Clifton [Tue, 24 Feb 2015 17:58:50 +0000 (17:58 +0000)] 
Adds support for emulating V850 e3v5 instructions to the simulator.

* v850.igen: Add more e3v5 support.
(FMAF.S): New pattern.
(FMSF.S): New pattern.
(FNMAF.S): New pattern.
(FNMSF.S): New pattern.
(cnvq15q30): New pattern.
(cnvq30q15): New pattern.
(cnvq31q62): New pattern.
(cnvq62q31): New pattern.
(dup.h): New pattern.
(dup.w): New pattern.
(expq31): New pattern.
(modadd): New pattern.
(mov.dw): New pattern.
(mov.h): New pattern.
(mov.w): New pattern.
(pki16i32): New pattern.
(pki16ui8): New pattern.
(pki32i16): New pattern.
(pki64i32): New pattern.
(pkq15q31): New pattern.
(pkq30q31): New pattern.
(pkq31q15): New pattern.
(pkui8i16): New pattern.
(vabs.h): New pattern.
(vabs.w): New pattern.
(vadd.dw): New placeholder pattern.
(vadd.h): New placeholder pattern.
(vadd.w): New placeholder pattern.
(vadds.h): New placeholder pattern.
(vadds.w): New placeholder pattern.
(vaddsat.h): New placeholder pattern.
(vaddsat.w): New placeholder pattern.
(vand): New pattern.
(vbiq.h): New placeholder pattern.
(vbswap.dw): New placeholder pattern.
(vbswap.h): New placeholder pattern.
(vbswap.w): New placeholder pattern.
(vcalc.h): New placeholder pattern.
(vcalc.w): New placeholder pattern.
(vcmov): New placeholder pattern.

9 years agoAdds support for generating notes in V850 binaries.
Nick Clifton [Tue, 24 Feb 2015 17:54:09 +0000 (17:54 +0000)] 
Adds support for generating notes in V850 binaries.

bfd * elf32-v850.c (v850_set_note): New function.  Creates a Renesas
style note entry.
(v850_elf_make_note_section): New function.  Creates a note
section.
(v850_elf_create_sections): New function.  Create a note section
if one is not already present.
(v850_elf_set_note): New function.  Adds a note to a bfd.
(v850_elf_copy_private_bfd_data): New function.  Copies V850
notes.
(v850_elf_merge_notes): New function.  Merges V850 notes.
(print_v850_note): New function.  Displays a V850 note.
(v850_elf_print_notes): New function. Displays all notes attached
to a bfd.
(v850_elf_merge_private_bfd_data): Call v850_elf_merge_notes.
(v850_elf_print_private_bfd_data): Call v850_elf_print_notes.
(v850_elf_fake_sections): Set the type of the V850 note section.
* bfd-in.h (v850_elf_create_sections): Add prototype.
(v850_elf_set_note): Add prototype.
* bfd-in2.h: Regenerate.

binutils* readelf.c (get_machine_flags): Remove deprecated V850 machine
flags.
(get_v850_section_type_name): New function.  Handles V850 special
sections.
(get_section_type_name): Add support for V850.
(get_v850_elf_note_type): New function.  Returns the name of a
V850 note.
(print_v850_note): New function.  Prints a V850 note.
(process_v850_notes): New function.  Prints V850 notes.
(process_note_sections): Add support for V850.

binutils/testsute
* binutils-all/objcopy.exp: Skip the strip-10 test for the V850.

gas * config/tc-v850.c (soft_float): New variable.
(v850_data_8): New variable.
(md_show_usage): Add -msoft-float/-mhard-float.
(md_parse_option): Likewise.
(md_begin): Set the default value of soft_float.
(v850_md_end): New function.  Creates a note section.
* config/tc-v850.h (md_end): Define.
* doc/c-v850.texi: Document -msoft-float/-mhard-float.

gas/testsuite
* gas/elf/elf.exp: Add special version of the section2 test for
the V850.
* gas/elf/section2.e-v850: New file.

include/elf
* v850.h (EF_RH850_SIMD): Delete deprecated flag.
(EF_RH850_CACHE): Likewise.
(EF_RH850_MMU): Likewise.
(EF_RH850_DATA_ALIGN8): Likewise.
(SHT_RENESAS_IOP): Fix typo in name.
(SHT_RENESAS_INFO): Define.
(V850_NOTE_SECNAME): Define.
(SIZEOF_V850_NOTE): Define.
(V850_NOTE_NAME): Define.
(enum v850_notes): New enum.
(NUM_V850_NOTES): Define.

ld/ChangeLog
2015-02-24  Nick Clifton  <nickc@redhat.com>

* Makefile.am (ev850.c): Add dependency upon
$(srcdir)/emultempl/v850elf.em.
(ev850_rh850.c): Likewise.
* Makefile.in: Regenerate.
* emultempl/v850elf.em: New file.
* emulparams/v850.sh (EXTRA_EM_FILE): Define.
* emulparams/v850_rh850.sh (EXTRA_EM_FILE): Define.
* scripttempl/v850.sc: Add .note.renesas section.
* scripttempl/v850_rh850.sc: Likewise.

ld/testsuite
* ld-elf/extract-symbol-1sec.d: Expect to fail on the V850.

9 years agoFixes compiling peXXigen under MAC OS/X where the wcsncasecmp function is not available.
Nick Clifton [Tue, 24 Feb 2015 17:01:23 +0000 (17:01 +0000)] 
Fixes compiling peXXigen under MAC OS/X where the wcsncasecmp function is not available.

* configure.ac (AC_CHECK_HEADERS): Add wctype.h.
* configure: Regenerate.
* config.in: Regenerate.
* peXXigen.c: Include wctype.h if HAVE_WCTYPE_H is defined.
(u16_mbtowc): Use wint_t types if HAVE_WCTYPE_H is defined.
(rsrc_cmp): Use towlower instead of wcsncasecmp if HAVE_WCTYPE_H
is defined.

9 years agoreadelf: handle corrupted chains better
Mike Frysinger [Tue, 24 Feb 2015 06:47:51 +0000 (01:47 -0500)] 
readelf: handle corrupted chains better

The current chain walker tries to protect itself against loops, by only
works with loops of length 1: a chain that points to itself.  If you have
a chain longer than that (3->4->3->4->...), readelf will still hang.

Since we know the max length of the chain, simply abort when we've walked
more times than that.  The only way that could have happened is if there
was a loop.

9 years agoAdd aligned string merge test
Alan Modra [Tue, 24 Feb 2015 12:34:20 +0000 (23:04 +1030)] 
Add aligned string merge test

* ld-elf/merge3.s, * ld-elf/merge3.d: New test.

9 years agoSpeed up the display of unwind tables by using a binary chop search to locate functio...
Dmitry Antipov [Tue, 24 Feb 2015 13:21:10 +0000 (13:21 +0000)] 
Speed up the display of unwind tables by using a binary chop search to locate function symbols.

* readelf.c (find_symbol_for_address): Use a binary search to
speed up symbol location.  Skip check for function symbol type.
(*_unw_aux_info): Add funtab and nfuns fields contains a sorted
list of function symbols.
(dump_ia64_unwind): Initialise the funtab and nfuns fields and
pass them to find_symbol_for_address.
(dump_hppa_unwind): Likewise.
(arm_print_vma_and_name): Pass funtab to find_symbol_for_address.
(dump_arm_unwind): Initialise the funtab and nfuns fields.

9 years agoThis patch modifies the AVR linker script templates to use __<name>_REGION_LENGTH__...
Senthil Kumar Selvaraj [Tue, 24 Feb 2015 11:26:28 +0000 (11:26 +0000)] 
This patch modifies the AVR linker script templates to use __<name>_REGION_LENGTH__ symbols, if provided, for setting memory region lengths, defaulting to the current constant values otherwise.

ld * scripttempl/avr.sc: Add new user_signatures region. Define and Use
symbols for all region lengths.
* scripttempl/avrtiny.sc: Define and use symbols for all region lengths.

testsuite * ld-avr/region_overflow.d: New test.
* ld-avr/region_overflow.s: Likewise.

9 years agoImproves the warning message produyced by objdump when it cannot load a section.
Nick Clifton [Tue, 24 Feb 2015 11:10:07 +0000 (11:10 +0000)] 
Improves the warning message produyced by objdump when it cannot load a section.

* objdump.c (dump_section): Extend the warning message displayed
when a section cannot be loaded.

9 years agoFix the detection of illegal memory accesses in the MSP430 simulator.
Nick Clifton [Tue, 24 Feb 2015 10:27:07 +0000 (10:27 +0000)] 
Fix the detection of illegal memory accesses in the MSP430 simulator.

* msp430-sim.c (sim_open): Allocate memory regions matching those
declared in the libgloss/msp430 linker scripts.
Allow sim_load_file to fail.
(get_op): Test the correct address bit when checking for out of
range addresses.
Include the address in the error message when an illegal access to
the hardware multiplier is detected.
(put_op): Test the correct address bit when checking for out of
range addresses.

9 years agoFix the gas test align2 for the PDP11 by ensuring that the .text and .data sections...
Nick Clifton [Tue, 24 Feb 2015 10:13:51 +0000 (10:13 +0000)] 
Fix the gas test align2 for the PDP11 by ensuring that the .text and .data sections are written to their aligned sizes.

* pdp11.c (set_section_contents): Pad the .text and .data sections
to their aligned sizes.

9 years agoPowerPC64 GOLD: complain on misaligned _DS relocs
Alan Modra [Tue, 24 Feb 2015 07:46:26 +0000 (18:16 +1030)] 
PowerPC64 GOLD: complain on misaligned _DS relocs

PR 18010
* powerpc.cc (Powerpc_relocate_functions::addr16_ds): Always
complain if value is not a multiple of four.
(Target_powerpc::Relocate::relocate): Correct handling of
R_POWERPC_GOT_TPREL16 and R_POWERPC_GOT_TPREL16_LO for ppc64.

9 years agoAutomatic date update in version.in
GDB Administrator [Tue, 24 Feb 2015 00:00:11 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 years agoFix typo in earlier entry.
Doug Evans [Mon, 23 Feb 2015 21:39:45 +0000 (13:39 -0800)] 
Fix typo in earlier entry.

9 years agoPR gdb/18008: Fix typo in documentation
Sergio Durigan Junior [Mon, 23 Feb 2015 21:15:29 +0000 (16:15 -0500)] 
PR gdb/18008: Fix typo in documentation

This obvious patch fixes a typo in our documentation
(s/problam/problem).

gdb/doc/ChangeLog:
2015-02-23  Sergio Durigan Junior  <sergiodj@redhat.com>

PR gdb/18008
* gdb.texinfo (maint internal-error, maint internal-warning, maint
demangler-warning): Fix typo ("problam").

9 years agogdbserver: redo stepping over breakpoint that was on top of a permanent breakpoint
Pedro Alves [Mon, 23 Feb 2015 18:59:38 +0000 (18:59 +0000)] 
gdbserver: redo stepping over breakpoint that was on top of a permanent breakpoint

I'm going to add an alternate mechanism of breakpoint trap
identification to 'check_stopped_by_breakpoint' that does not rely on
checking the instruction at PC.  The mechanism currently used to tell
whether we're stepping over a permanent breakpoint doesn't fit in that
new method.  This patch redoes the whole logic in a different way that
works with both old and new methods, in essence moving the "stepped
permanent breakpoint" detection "one level up".  It makes lower level
check_stopped_by_breakpoint always the adjust the PC, and then has
linux_wait_1 advance the PC past the breakpoint if necessary.  This
ends up being better also because this now handles
non-decr_pc_after_break targets too.  Before, such targets would get
stuck forever reexecuting the breakpoint instruction.

Tested on x86_64 Fedora 20.

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

* linux-low.c (check_stopped_by_breakpoint): Don't check if the
thread was doing a step-over; always adjust the PC if
we stepped over a permanent breakpoint.
(linux_wait_1): If we stepped over breakpoint that was on top of a
permanent breakpoint, manually advance the PC past it.

9 years agodelete_breakpoints: Rewrite using gdb_test_multiple
Pedro Alves [Mon, 23 Feb 2015 17:35:09 +0000 (17:35 +0000)] 
delete_breakpoints: Rewrite using gdb_test_multiple

Because delete_breakpoints uses gdb_expect directly, an internal error
results in slow timeouts instead of quickly bailing out.  This patch
rewrites the procedure to use gdb_test_multiple instead, while
preserving the existing general logic ("delete breakpoints" + "info
breakpoints").

gdb/testsuite/
2015-02-23  Pedro Alves  <palves@redhat.com>

* lib/gdb.exp (delete_breakpoints): Rewrite using
gdb_test_multiple.

9 years agoAdds a space between the operands of the RL78's MOV instruction for consistency with...
Vinay [Mon, 23 Feb 2015 17:16:30 +0000 (17:16 +0000)] 
Adds a space between the operands of the RL78's MOV instruction for consistency with the disassembling of other instructions.

* rl78-decode.opc (MOV): Added space between two operands for
'mov' instruction in index addressing mode.
* rl78-decode.c: Regenerate.

9 years agoAdd support for the h8300-linux target.
Yoshinori Sato [Mon, 23 Feb 2015 17:04:53 +0000 (17:04 +0000)] 
Add support for the h8300-linux target.

ld * Makefile.am: (ALL_EMULATION_SOURCES): Add new emulations.
* Makefile.in: Regenerate.
* configure.tgt: Add h8300-*-linux
* emulparams/h8300elf_linux.sh: Add new emulation.
* emulparams/h8300helf_linux.sh: Likewise.
* emulparams/h8300self_linux.sh: Likewise.
* emulparams/h8300sxelf_linux.sh: Likewise.

bfd * config.bfd: Add h8300-*-linux.
* configure.ac: Add h8300_elf32_linux_vec.
* configure: Regenerate.
* elf32-h8300.c: Likewise.
* targets.c(_bfd_target_vector): Likewise.

gas * config/tc-h8300.c (line_separater_chars): Add a version for
h8300-linux that includes a separator.
(default_mach): New variable.
(md_main): Use it.
(md_longopts): Add '--march' option.
(md_parse_option): Parse the new option.
* config/tc-h8300.h (TARGET_FORMAT): Add elf32-h8300-linux.
* configure.tgt: Add h8300-*-linux
* doc/c-h8300.texi: Document --march.

9 years agoremote.c: simplify parsing stop reasons in T stop replies
Pedro Alves [Mon, 23 Feb 2015 16:45:39 +0000 (16:45 +0000)] 
remote.c: simplify parsing stop reasons in T stop replies

We need to be careful with parsing optional stop reasons that start
with an hex character ("awatch", "core"), as GDBs that aren't aware of
them parse them as real numbers.  That's silly of course, given that
there should be a colon after those magic "numbers".  So if strtol on
"abbz:" doesn't return "first invalid char" pointing to the colon, we
know that "abbz" isn't really a register number.  It must be optional
stop info we don't know about.  This adjusts GDB to work that way,
removing the need for the special casing done upfront:

  /* If this packet is an awatch packet, don't parse the 'a'
     as a register number.  */
  if (strncmp (p, "awatch", strlen("awatch")) != 0
      && strncmp (p, "core", strlen ("core") != 0))

For as long as we care about compatibility with GDB 7.9, we'll need to
continue to be careful about this, so I added a comment.

Tested on x86_64 Fedora 20, native gdbserver.

gdb/ChangeLog:
2015-02-23  Pedro Alves  <palves@redhat.com>

* remote.c (skip_to_semicolon): New function.
(remote_parse_stop_reply) <T stop reply>: Use it.  Don't
special case the stop reasons that look like hex numbers
upfront.  Instead handle real register numbers after matching
all the known stop reasons.

9 years agoFixes a problem where "ld -ixxx" would report an error of "ld: bad -rpath option".
Nick Clifton [Mon, 23 Feb 2015 15:33:56 +0000 (15:33 +0000)] 
Fixes a problem where "ld -ixxx" would report an error of "ld: bad -rpath option".

* lexsup.c (parse_args): Produce a more reasonable error message
when -ixxx or -rxxx is the last option on the linker command line.

9 years agoFixes the generation of dwarf line debug information for the msp430, even in the...
Nick Clifton [Mon, 23 Feb 2015 14:53:02 +0000 (14:53 +0000)] 
Fixes the generation of dwarf line debug information for the msp430, even in the presence of function sections and linker garbage collection.

PR 17940
* dwarf2dbg.c (out_header): When generating dwarf sections use
real symbols not temps for the start and end symbols.
* config/tc-msp430.h (TC_FORCE_RELOCATION_SUB_SAME): Also prevent
adjustments to relocations in debug sections.
(TC_LINKRELAX_FIXUP): Likewise.

* elf32-msp430.c (msp430_elf_relax_delete_bytes): Adjust debug
symbols at end of sections.  Adjust function sizes.

9 years agoFixes a typo in the license notice in include/elf/score.h
Nick Clifton [Mon, 23 Feb 2015 13:43:11 +0000 (13:43 +0000)] 
Fixes a typo in the license notice in include/elf/score.h

PR 17915
* score.h: Fix typo in license header.

9 years agogdb.base/info-os.c: Include stdlib.h
Pedro Alves [Mon, 23 Feb 2015 14:03:48 +0000 (14:03 +0000)] 
gdb.base/info-os.c: Include stdlib.h

Fixes:

 > gdb compile failed, /gdb/testsuite/gdb.base/info-os.c: In function 'main':
 > /gdb/testsuite/gdb.base/info-os.c:65:3: warning: implicit declaration of function 'atexit' [-Wimplicit-function-declaration]
 >    atexit (ipc_cleanup);
 >    ^
 > FAIL: gdb.base/info-os.exp: cannot compile test program

with recent GCCs.

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

* gdb.base/info-os.c: Include stdlib.h.

9 years agoFixes a couple of typos in the license header of the cpu-w65.c file.
Nick Clifton [Mon, 23 Feb 2015 13:39:51 +0000 (13:39 +0000)] 
Fixes a couple of typos in the license header of the cpu-w65.c file.

PR 17914
* cpu-w65.c: Correct typos in license notice.

9 years agogdbserver: 64-bit kernel / 32-inferior, syscall restarting
Pedro Alves [Mon, 23 Feb 2015 13:03:10 +0000 (13:03 +0000)] 
gdbserver: 64-bit kernel / 32-inferior, syscall restarting

$ make check RUNTESTFLAGS="--target_board=native-gdbserver/-m32 clone-thread_db.exp"

gdb.log shows:

  Running target native-gdbserver/-m32
  ...
  clone-thread_db: src/gdb/testsuite/gdb.threads/clone-thread_db.c:57: thread_fn: Assertion `res != -1' failed.
  ...
  (gdb) FAIL: gdb.threads/clone-thread_db.exp: continue to end

That was waitpid returning -1 / EINTR.  We don't see that when testing
with unix/-m32 (native debugging).  Turns out to be that when
debugging a 32-bit inferior, a 64-bit GDBserver is reading/writing
$orig_eax from/to the wrong ptrace register buffer offset.  When
gdbserver is 64-bit, the ptrace register buffer is in 64-bit layout,
so the register is found at "ORIG_EAX * 8", not at "ORIG_EAX * 4".

Fixes these with --target_board=native-gdbserver/-m32 on x86_64 Fedora 20:

    -FAIL: gdb.threads/clone-thread_db.exp: continue to end
    +PASS: gdb.threads/clone-thread_db.exp: continue to end

    -FAIL: gdb.threads/hand-call-in-threads.exp: all dummies popped
    +PASS: gdb.threads/hand-call-in-threads.exp: all dummies popped
     PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on all_threads_running
     PASS: gdb.threads/hand-call-in-threads.exp: breakpoint on hand_call
     PASS: gdb.threads/hand-call-in-threads.exp: disable scheduler locking
    @@ -29339,15 +29331,15 @@ PASS: gdb.threads/hand-call-in-threads.e
     PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 4
     PASS: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 5
     PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 1
    -FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2
    -FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3
    -FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4
    +PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2
    +PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3
    +PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4
     PASS: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 5
     PASS: gdb.threads/hand-call-in-threads.exp: enable scheduler locking
     PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 1
    -FAIL: gdb.threads/hand-call-in-threads.exp: hand call, thread 2
    -FAIL: gdb.threads/hand-call-in-threads.exp: hand call, thread 3
    -FAIL: gdb.threads/hand-call-in-threads.exp: hand call, thread 4
    +PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 2
    +PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 3
    +PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 4
     PASS: gdb.threads/hand-call-in-threads.exp: hand call, thread 5
     PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 1
     PASS: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 2

gdb/gdbserver/ChangeLog
2015-02-23  Pedro Alves  <palves@redhat.com>

* linux-x86-low.c (REGSIZE): Define in both 32-bit and 64-bit
modes.
(x86_fill_gregset, x86_store_gregset): Use it when handling
$orig_eax.

9 years agoAutomatic date update in version.in
GDB Administrator [Mon, 23 Feb 2015 00:00:09 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 years agosim/erc32: Use readline.h for readline types and functions.
Jiri Gaisler [Thu, 19 Feb 2015 22:31:34 +0000 (23:31 +0100)] 
sim/erc32: Use readline.h for readline types and functions.

Use gdb's readline.h for readline types.

9 years agoSet GOLD_DEFAULT_SIZE to 32 for x32
H.J. Lu [Sun, 22 Feb 2015 13:18:50 +0000 (05:18 -0800)] 
Set GOLD_DEFAULT_SIZE to 32 for x32

* configure.ac (default_size): Set to 32 for x32.
* configure: Regenerated.

9 years agotestcase for PR symtab/17855
Doug Evans [Sun, 22 Feb 2015 17:11:55 +0000 (09:11 -0800)] 
testcase for PR symtab/17855

gdb/testsuite/ChangeLog:

PR symtab/17855
* gdb.ada/exec_changed.exp: Add second test where symbol lookup cache
is read after symbols have been re-read.
* gdb.ada/exec_changed/first.adb (First): New procedure Break_Me.
* gdb.ada/exec_changed/second.adb (Second): Ditto.

9 years agoPR c++/17976, symtab/17821
Doug Evans [Sun, 22 Feb 2015 05:58:31 +0000 (21:58 -0800)] 
PR c++/17976, symtab/17821

This patch addresses two issues.

The basic problem is that "(anonymous namespace)" doesn't get entered
into the symbol table because when dwarf2read.c:new_symbol_full is called
the DIE has no name (dwarf2_name returns NULL).

PR 17976: ptype '(anonymous namespace)' should work like any namespace

PR 17821: perf issue looking up (anonymous namespace)

bash$ gdb monster-program
(gdb) mt set per on
(gdb) mt set symbol-cache-size 0
(gdb) break (anonymous namespace)::foo

Before:

Command execution time: 3.266289 (cpu), 6.169030 (wall)
Space used: 811429888 (+12910592 for this command)

After:

Command execution time: 1.264076 (cpu), 4.057408 (wall)
Space used: 798781440 (+0 for this command)

gdb/ChangeLog:

PR c++/17976, symtab/17821
* cp-namespace.c (cp_search_static_and_baseclasses): New parameter
is_in_anonymous.  All callers updated.
(find_symbol_in_baseclass): Ditto.
(cp_lookup_nested_symbol_1): Ditto.  Don't search all static blocks
for symbols in an anonymous namespace.
* dwarf2read.c (namespace_name): Don't call dwarf2_name, fetch
DW_AT_name directly.
(dwarf2_name): Convert missing namespace name to
CP_ANONYMOUS_NAMESPACE_STR.

gdeb/testsuite/ChangeLog:

* gdb.cp/anon-ns.exp: Add test for ptype '(anonymous namespace)'.

9 years agosim/erc32: File loading via command line did not work
Jiri Gaisler [Thu, 19 Feb 2015 22:31:25 +0000 (23:31 +0100)] 
sim/erc32: File loading via command line did not work

* sis.c (main) load binary file from argv parameters

9 years agosim/erc32: Fix incorrect simulator performance report
Jiri Gaisler [Thu, 19 Feb 2015 22:31:24 +0000 (23:31 +0100)] 
sim/erc32: Fix incorrect simulator performance report

9 years agosim/erc32: Remove unused defines in Makefile and switch off statistics
Jiri Gaisler [Thu, 19 Feb 2015 22:31:23 +0000 (23:31 +0100)] 
sim/erc32: Remove unused defines in Makefile and switch off statistics

9 years agosim/erc32: Use fenv.h for host FPU access
Jiri Gaisler [Thu, 19 Feb 2015 22:31:22 +0000 (23:31 +0100)] 
sim/erc32: Use fenv.h for host FPU access

9 years agosim/erc32: Perform pseudo-init if binary linked to non-zero address.
Jiri Gaisler [Thu, 19 Feb 2015 22:31:21 +0000 (23:31 +0100)] 
sim/erc32: Perform pseudo-init if binary linked to non-zero address.

Binaries produced by most erc32 tool-chains do not include
system initialization. sis will detect this and initialize
necessary registers for memory and timer control.

9 years agosim/erc32: Corrected wrong CPU implementation and version ID in psr
Jiri Gaisler [Thu, 19 Feb 2015 22:31:20 +0000 (23:31 +0100)] 
sim/erc32: Corrected wrong CPU implementation and version ID in psr

9 years agosim/erc32: Disassembly in stand-alone mode did not work.
Jiri Gaisler [Thu, 19 Feb 2015 22:31:19 +0000 (23:31 +0100)] 
sim/erc32: Disassembly in stand-alone mode did not work.

The API to print_insn_sparc() has changed over the years ...

9 years agoAutomatic date update in version.in
GDB Administrator [Sun, 22 Feb 2015 00:00:08 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 years agobinutils: readelf: add missing newline to warning message
Mike Frysinger [Sat, 21 Feb 2015 21:10:04 +0000 (16:10 -0500)] 
binutils: readelf: add missing newline to warning message

9 years agoTestsuite patch for: i386: Fix internal error when prstatus in core file is too big
Jan Kratochvil [Sat, 21 Feb 2015 14:24:20 +0000 (15:24 +0100)] 
Testsuite patch for: i386: Fix internal error when prstatus in core file is too big

gdb/testsuite/ChangeLog
2015-02-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

PR corefiles/17808
* gdb.arch/i386-biarch-core.core.bz2: New file.
* gdb.arch/i386-biarch-core.exp: New file.

9 years agogdb.threads/multi-create-ns-info-thr.exp and native-extended-remote board
Pedro Alves [Sat, 21 Feb 2015 12:03:23 +0000 (12:03 +0000)] 
gdb.threads/multi-create-ns-info-thr.exp and native-extended-remote board

The buildbot shows that the new
gdb.threads/multi-create-ns-info-thr.exp test is timing out when
tested with --target=native-extended-remote.  The reason is:

 No breakpoints or watchpoints.
 (gdb) break main
 Breakpoint 1 at 0x10000b00: file ../../../binutils-gdb/gdb/testsuite/gdb.threads/multi-create.c, line 72.
 (gdb) run
 Starting program: /home/gdb-buildbot/fedora-21-ppc64be-1/fedora-ppc64be-native-extended-gdbserver/build/gdb/testsuite/outputs/gdb.threads/multi-create-ns-info-thr/multi-cre
 ate-ns-info-thr
 Process /home/gdb-buildbot/fedora-21-ppc64be-1/fedora-ppc64be-native-extended-gdbserver/build/gdb/testsuite/outputs/gdb.threads/multi-create-ns-info-thr/multi-create-ns-inf
 o-thr created; pid = 16266
 Unexpected vCont reply in non-stop mode: T0501:00003fffffffd190;40:00000080560fe290;thread:p3f8a.3f8a;core:0;
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 (gdb) break multi-create.c:45
 Breakpoint 2 at 0x10000994: file ../../../binutils-gdb/gdb/testsuite/gdb.threads/multi-create.c, line 45.
 (gdb) commands
 Type commands for breakpoint(s) 2, one per line.

Non-stop tests don't really work with the
--target_board=native-extended-remote board, because tests toggle
non-stop on after GDB is already connected to gdbserver, while
Currently, non-stop must be enabled before connecting.

This adjusts the test to bail if running to main fails, like all other
non-stop tests.

Note non-stop tests do work with --target_board=native-gdbserver.

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

* gdb.threads/multi-create-ns-info-thr.exp: Return early if
runto_main fails.

9 years agoAutomatic date update in version.in
GDB Administrator [Sat, 21 Feb 2015 00:00:09 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 years agoFix gdb.base/solib-corrupted.exp after dtrace probes changes
Pedro Alves [Fri, 20 Feb 2015 23:10:53 +0000 (23:10 +0000)] 
Fix gdb.base/solib-corrupted.exp after dtrace probes changes

Commit 6f9b8491 (Adapt `info probes' to support printing probes of
different types.) added a new type column to "info probes".  That
caused a solib-corrupted.exp regression:

 ~~~~~~~~~~~~~~~~~~~~~
 Running /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.base/solib-corrupted.exp ...
 FAIL: gdb.base/solib-corrupted.exp: corrupted list

 === gdb Summary ===

 # of expected passes            2
 # of unexpected failures        1
 ~~~~~~~~~~~~~~~~~~~~~

Tested on x86_64 Fedora 20.

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

* gdb.base/solib-corrupted.exp: Expect "stap" as first column of
info probes.

9 years agoGNU/Linux: Stop using libthread_db/td_ta_thr_iter
Pedro Alves [Fri, 20 Feb 2015 20:21:59 +0000 (20:21 +0000)] 
GNU/Linux: Stop using libthread_db/td_ta_thr_iter

TL;DR - GDB can hang if something refreshes the thread list out of the
target while the target is running.  GDB hangs inside td_ta_thr_iter.
The fix is to not use that libthread_db function anymore.

Long version:

Running the testsuite against my all-stop-on-top-of-non-stop series is
still exposing latent non-stop bugs.

I was originally seeing this with the multi-create.exp test, back when
we were still using libthread_db thread event breakpoints.  The
all-stop-on-top-of-non-stop series forces a thread list refresh each
time GDB needs to start stepping over a breakpoint (to pause all
threads).  That test hits the thread event breakpoint often, resulting
in a bunch of step-over operations, thus a bunch of thread list
refreshes while some threads in the target are running.

The commit adds a real non-stop mode test that triggers the issue,
based on multi-create.exp, that does an explicit "info threads" when a
breakpoint is hit.  IOW, it does the same things the as-ns series was
doing when testing multi-create.exp.

The bug is a race, so it unfortunately takes several runs for the test
to trigger it.  In fact, even when setting the test running in a loop,
it sometimes takes several minutes for it to trigger for me.

The race is related to libthread_db's td_ta_thr_iter.  This is
libthread_db's entry point for walking the thread list of the
inferior.

Sometimes, when GDB refreshes the thread list from the target,
libthread_db's td_ta_thr_iter can somehow see glibc's thread list as a
cycle, and get stuck in an infinite loop.

The issue is that when a thread exits, its thread control structure in
glibc is moved from a "used" list to a "cache" list.  These lists are
simply circular linked lists where the "next/prev" pointers are
embedded in the thread control structure itself.  The "next" pointer
of the last element of the list points back to the list's sentinel
"head".  There's only one set of "next/prev" pointers for both lists;
thus a thread can only be in one of the lists at a time, not in both
simultaneously.

So when thread C exits, simplifying, the following happens.  A-C are
threads.  stack_used and stack_cache are the list's heads.

Before:

  stack_used -> A -> B -> C -> (&stack_used)
  stack_cache -> (&stack_cache)

After:

  stack_used -> A -> B -> (&stack_used)
  stack_cache -> C -> (&stack_cache)

td_ta_thr_iter starts by iterating at the list's head's next, and
iterates until it sees a thread whose next pointer points to the
list's head again.  Thus in the before case above, C's next points to
stack_used, indicating end of list.  In the same case, the stack_cache
list is empty.

For each thread being iterated, td_ta_thr_iter reads the whole thread
object out of the inferior.  This includes the thread's "next"
pointer.

In the scenario above, it may happen that td_ta_thr_iter is iterating
thread B and has already read B's thread structure just before thread
C exits and its control structure moves to the cached list.

Now, recall that td_ta_thr_iter is running in the context of GDB, and
there's no locking between GDB and the inferior.  From it's local copy
of B, td_ta_thr_iter believes that the next thread after B is thread
C, so it happilly continues iterating to C, a thread that has already
exited, and is now in the stack cache list.

After iterating C, td_ta_thr_iter finds the stack_cache head, which
because it is not stack_used, td_ta_thr_iter assumes it's just another
thread.  After this, unless the reverse race triggers, GDB gets stuck
in td_ta_thr_iter forever walking the stack_cache list, as no thread
in thatlist has a next pointer that points back to stack_used (the
terminating condition).

Before fully understanding the issue, I tried adding cycle detection
to GDB's td_ta_thr_iter callback.  However, td_ta_thr_iter skips
calling the callback in some cases, which means that it's possible
that the callback isn't called at all, making it impossible for GDB to
break the loop.  I did manage to get GDB stuck in that state more than
once.

Fortunately, we can avoid the issue altogether.  We don't really need
td_ta_thr_iter for live debugging nowadays, given PTRACE_EVENT_CLONE.
We already know how to map and lwp id to a thread id without iterating
(thread_from_lwp), so use that more.

gdb/ChangeLog:
2015-02-20  Pedro Alves  <palves@redhat.com>

* linux-nat.c (linux_handle_extended_wait): Call
thread_db_notice_clone whenever a new clone LWP is detected.
(linux_stop_and_wait_all_lwps, linux_unstop_all_lwps): New
functions.
* linux-nat.h (thread_db_attach_lwp): Delete declaration.
(thread_db_notice_clone, linux_stop_and_wait_all_lwps)
(linux_unstop_all_lwps): Declare.
* linux-thread-db.c (struct thread_get_info_inout): Delete.
(thread_get_info_callback): Delete.
(thread_from_lwp): Use td_thr_get_info and record_thread.
(thread_db_attach_lwp): Delete.
(thread_db_notice_clone): New function.
(try_thread_db_load_1): If /proc is mounted and shows the
process'es task list, walk over all LWPs and call thread_from_lwp
instead of relying on td_ta_thr_iter.
(attach_thread): Don't call check_thread_signals here.  Split the
tail part of the function (which adds the thread to the core GDB
thread list) to ...
(record_thread): ... this function.  Call check_thread_signals
here.
(thread_db_wait): Don't call thread_db_find_new_threads_1.  Always
call thread_from_lwp.
(thread_db_update_thread_list): Rename to ...
(thread_db_update_thread_list_org): ... this.
(thread_db_update_thread_list): New function.
(thread_db_find_thread_from_tid): Delete.
(thread_db_get_ada_task_ptid): Simplify.
* nat/linux-procfs.c: Include <sys/stat.h>.
(linux_proc_task_list_dir_exists): New function.
* nat/linux-procfs.h (linux_proc_task_list_dir_exists): Declare.

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

* thread-db.c: Include "nat/linux-procfs.h".
(thread_db_init): Skip listing new threads if the kernel supports
PTRACE_EVENT_CLONE and /proc/PID/task/ is accessible.

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

* gdb.threads/multi-create-ns-info-thr.exp: New file.

9 years agolinux-nat.c: fix a few lin_lwp_attach_lwp issues
Pedro Alves [Fri, 20 Feb 2015 20:21:59 +0000 (20:21 +0000)] 
linux-nat.c: fix a few lin_lwp_attach_lwp issues

This function has a few latent bugs that are triggered by a non-stop
mode test that will be added in a subsequent patch.

First, as described in the function's intro comment, the function is
supposed to return 1 if we're already auto attached to the thread, but
haven't processed the PTRACE_EVENT_CLONE event of its parent thread
yet.

Then, we may find that we're trying to attach to a clone child that
hasn't yet stopped for its initial stop, and therefore 'waitpid(...,
WNOHANG)' returns 0.  In that case, we're currently adding the LWP to
the stopped_pids list, which results in linux_handle_extended_wait
skipping the waitpid call on the child, and thus confusing things
later on when the child eventually reports the stop.

Then, the tail end of lin_lwp_attach_lwp always sets the
last_resume_kind of the LWP to resume_stop, which is wrong given that
the user may be doing "info threads" while some threads are running.

And then, the else branch of lin_lwp_attach_lwp always sets the
stopped flag of the LWP.  This branch is reached if the LWP is the
main LWP, which may well be running at this point (to it's wrong to
set its 'stopped' flag).

AFAICS, there's no reason anymore for special-casing the main/leader
LWP here:

- For the "attach" case, linux_nat_attach already adds the main LWP to
the lwp list, and sets its 'stopped' flag.

- For the "run" case, after linux_nat_create_inferior, end up in
linux_nat_wait_1 here:

  /* The first time we get here after starting a new inferior, we may
     not have added it to the LWP list yet - this is the earliest
     moment at which we know its PID.  */
  if (ptid_is_pid (inferior_ptid))
    {
      /* Upgrade the main thread's ptid.  */
      thread_change_ptid (inferior_ptid,
  ptid_build (ptid_get_pid (inferior_ptid),
      ptid_get_pid (inferior_ptid), 0));

      lp = add_initial_lwp (inferior_ptid);
      lp->resumed = 1;
    }

... which adds the LWP to the LWP list already, before
lin_lwp_attach_lwp can ever be reached.

gdb/ChangeLog:
2015-02-20  Pedro Alves  <palves@redhat.com>

* linux-nat.c (lin_lwp_attach_lwp): No longer special case the
main LWP.  Handle the case of waitpid returning 0 if we're already
attached to the LWP.  Don't set the LWP's last_resume_kind to
resume_stop if we already knew about the LWP.
(linux_nat_filter_event): Add debug logs.

9 years agoGarbage collect forward_target_decr_pc_after_break
Pedro Alves [Thu, 19 Feb 2015 20:48:49 +0000 (20:48 +0000)] 
Garbage collect forward_target_decr_pc_after_break

The definition was removed a year ago, but the declaration managed to
stay behind.

gdb/ChangeLog
2015-02-20  Pedro Alves  <palves@redhat.com>

* target.h (forward_target_decr_pc_after_break): Delete
declaration.

9 years agofix gdbserver/linux-low'c's pending status handling
Pedro Alves [Thu, 19 Feb 2015 20:48:54 +0000 (20:48 +0000)] 
fix gdbserver/linux-low'c's pending status handling

Another fix I'm working made schedlock.exp fail with gdbserver
frequently.  Looking deeper, it turns out to be a pre-existing bug.

status_pending_p_callback is filtering out LWPs incorrectly.  The
result is that that sometimes status_pending_p_callback returns a
pending event for an LWP that isn't expected, and then GDBserver gets
very confused.

E.g,. when doing a step-over, linux_wait_for_event is called with a
particular LWP's ptid, meaning events for all other LWPs should be
left pending, but here we see it retuning an event for some other LWP:

 linux_wait_1: [<all threads>]
 step_over_bkpt set [LWP 29577.29577], doing a blocking wait      <--------
 my_waitpid (-1, 0x40000001)
 my_waitpid (-1, 0x80000001): status(57f), 0
 LWFE: waitpid(-1, ...) returned 0, ERRNO-OK
 pc is 0x4007a0
 src/gdb/gdbserver/linux-low.c:2587: A problem internal to GDBserver has been detected.
 linux_wait_1: got event for 29581                                <--------

 Remote connection closed
 (gdb) FAIL: gdb.threads/schedlock.exp: continue to breakpoint: return to loop (initial)
 delete breakpoints

Tested on x86_64 Fedora 20.

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

* linux-low.c (status_pending_p_callback): Use ptid_match.

9 years agoFix no-attach-trace.exp with "target remote" / gdbserver
Pedro Alves [Fri, 20 Feb 2015 19:50:36 +0000 (19:50 +0000)] 
Fix no-attach-trace.exp with "target remote" / gdbserver

 $ make check RUNTESTFLAGS="--target_board=native-gdbserver no-attach-trace.exp"
 ...
 (gdb) trace main
 Tracepoint 1 at 0x400594: file /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.trace/no-attach-trace.c, line 25.
 (gdb) PASS: gdb.trace/no-attach-trace.exp: set tracepoint on main
 tstart
 You can't do that when your target is `exec'
 (gdb) FAIL: gdb.trace/no-attach-trace.exp: tstart

Even though this target supports tracing, the test restarts GDB and
doesn't do gdb_run_cmd so does not reconnect to the remote target.  So
at that point, GDB only has the "exec" target, which obviously doesn't
do tracing.

The test is about doing "tstart" before running a program, so the fix
is to do gdb_target_supports_trace with whatever target GDB ends up
connected after clean_restart.

Tested on x86_64 Fedora 20, native, native-gdbserver and
native-extended-gdbserver boards.  The test passes with the latter,
and is skipped with the first two.

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

* gdb.trace/no-attach-trace.exp: Don't run to main.  Do
clean_restart before gdb_target_supports_trace.

9 years agoPR18006: internal error if threaded program calls clone(CLONE_VM)
Pedro Alves [Fri, 20 Feb 2015 19:00:21 +0000 (19:00 +0000)] 
PR18006: internal error if threaded program calls clone(CLONE_VM)

On GNU/Linux, if a pthreaded program has a thread call clone(CLONE_VM)
directly, and then that clone LWP hits a debug event (breakpoint,
etc.) GDB internal errors.  Threaded programs shouldn't really be
calling clone directly, but GDB shouldn't crash either.

The crash looks like this:

 (gdb) break clone_fn
 Breakpoint 2 at 0x4007d8: file clone-thread_db.c, line 35.
 (gdb) r
 ...
 [Thread debugging using libthread_db enabled]
 ...
 src/gdb/linux-nat.c:1030: internal-error: lin_lwp_attach_lwp: Assertion `lwpid > 0' failed.
 A problem internal to GDB has been detected,
 further debugging may prove unreliable.

The problem is that 'clone' ends up clearing the parent thread's tid
field in glibc's thread data structure.  For x86_64, the glibc code in
question is here:

  sysdeps/unix/sysv/linux/x86_64/clone.S:

   ...
          testq   $CLONE_THREAD, %rdi
          jne     1f
          testq   $CLONE_VM, %rdi
          movl    $-1, %eax            <----
          jne     2f
          movl    $SYS_ify(getpid), %eax
          syscall
  2:      movl    %eax, %fs:PID
          movl    %eax, %fs:TID        <----
  1:

When GDB refreshes the thread list out of libthread_db, it finds a
thread with LWP with pid -1 (the clone's parent), which naturally
isn't yet on the thread list.  GDB then tries to attach to that bogus
LWP id, which is caught by that assertion.

The fix is to detect the bad PID early.

Tested on x86-64 Fedora 20.  GDBserver doesn't need any fix.

gdb/ChangeLog:
2015-02-20  Pedro Alves  <palves@redhat.com>

PR threads/18006
* linux-thread-db.c (thread_get_info_callback): Return early if
the thread's lwp id is -1.

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

PR threads/18006
* gdb.threads/clone-thread_db.c: New file.
* gdb.threads/clone-thread_db.exp: New file.

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