deliverable/binutils-gdb.git
10 years agodaily update
Alan Modra [Sat, 8 Nov 2014 23:00:33 +0000 (09:30 +1030)] 
daily update

10 years agoCorrect buffer overrun test
Alan Modra [Sat, 8 Nov 2014 01:42:08 +0000 (12:12 +1030)] 
Correct buffer overrun test

* peXXigen.c (pe_print_idata): Revert last patch, cast lhs instead.

10 years agoFix a typo in gas/ChangeLog
H.J. Lu [Sat, 8 Nov 2014 01:47:54 +0000 (17:47 -0800)] 
Fix a typo in gas/ChangeLog

10 years agoFix race condition when using --threads with linker plugins.
Evgeniy Dushistov [Sat, 8 Nov 2014 00:12:58 +0000 (16:12 -0800)] 
Fix race condition when using --threads with linker plugins.

2014-11-06  Evgeniy Dushistov  <dushistov@mail.ru>

gold/
* plugin.cc: use lock to searialize calls of Plugin_manager::claim_file
* plugin.h: add lock definition

10 years agodaily update
Alan Modra [Fri, 7 Nov 2014 23:01:06 +0000 (09:31 +1030)] 
daily update

10 years agoCast time value to unsigned long to print
H.J. Lu [Fri, 7 Nov 2014 21:41:02 +0000 (13:41 -0800)] 
Cast time value to unsigned long to print

* readelf.c (process_dynamic_section): Cast time value to unsigned
long to print.

10 years agoCast to unsigned long in range checks
H.J. Lu [Fri, 7 Nov 2014 21:39:15 +0000 (13:39 -0800)] 
Cast to unsigned long in range checks

* peXXigen.c (pe_print_idata): Cast to unsigned long in range
checks.

10 years agoX32: Add REX prefix to encode R_X86_64_GOTTPOFF
H.J. Lu [Fri, 7 Nov 2014 20:22:53 +0000 (12:22 -0800)] 
X32: Add REX prefix to encode R_X86_64_GOTTPOFF

Structions with R_X86_64_GOTTPOFF relocation must be encoded with REX
prefix even if it isn't required by destination register.  Otherwise
linker can't safely perform IE -> LE optimization.

bfd/

PR ld/17482
* elf64-x86-64.c (elf_x86_64_relocate_section): Update comments
for IE->LE transition.

gas/

PR ld/17482
* config/tc-i386.c (output_insn): Add a dummy REX_OPCODE prefix
for structions with R_X86_64_GOTTPOFF relocation for x32 if needed.

gas/testsuite/

PR ld/17482
* gas/i386/ilp32/x32-tls.d: New file.
* gas/i386/ilp32/x32-tls.s: Likewise.

ld/testsuite/

PR ld/17482
* ld-x86-64/tlsie4.dd: Updated.

10 years agogdb.base/sigstep.exp: xfail gdb/17511 on i?86 Linux
Pedro Alves [Fri, 7 Nov 2014 15:20:47 +0000 (15:20 +0000)] 
gdb.base/sigstep.exp: xfail gdb/17511 on i?86 Linux

Running gdb.base/sigstep.exp with --target=i686-pc-linux-gnu on a
64-bit kernel naturally trips on PR gdb/17511 as well, given this is a
kernel bug.

I haven't really tested a real 32-bit kernel/machine, but given the
code in question in the kernel is shared between 32-bit and 64-bit,
I'm quite sure the bug triggers in those cases as well.

So, simply xfail i?86-*-linux* too.

gdb/testsuite/
2014-11-07  Pedro Alves  <palves@redhat.com>

PR gdb/17511
* gdb.base/sigstep.exp (in_handler_map) <si+advance>: xfail
i?86-*-linux*.

10 years agoRevert old nexti prologue check and eliminate in_prologue
Pedro Alves [Fri, 7 Nov 2014 13:53:01 +0000 (13:53 +0000)] 
Revert old nexti prologue check and eliminate in_prologue

The in_prologue check in the nexti code is obsolete; this commit
removes that, and then removes the in_prologue function as nothing
else uses it.

Looking at the code in GDB that makes use in_prologue, all we find is
this one caller:

      if ((ecs->event_thread->control.step_over_calls == STEP_OVER_NONE)
  || ((ecs->event_thread->control.step_range_end == 1)
      && in_prologue (gdbarch, ecs->event_thread->prev_pc,
      ecs->stop_func_start)))
{
  /* I presume that step_over_calls is only 0 when we're
     supposed to be stepping at the assembly language level
     ("stepi").  Just stop.  */
  /* Also, maybe we just did a "nexti" inside a prolog, so we
     thought it was a subroutine call but it was not.  Stop as
     well.  FENN */
  /* And this works the same backward as frontward.  MVS */
  end_stepping_range (ecs);
  return;
}

This was added by:

 commit 100a02e1deec2f037a15cdf232f026dc79763bf8
 ...
     From Fernando Nasser:
     * infrun.c (handle_inferior_event): Handle "nexti" inside function
     prologues.

The mailing list thread is here:

  https://sourceware.org/ml/gdb-patches/2001-01/msg00047.html

Not much discussion there, and no test, but looking at the code around
what was patched in that revision, we see that the checks that detect
whether the program has just stepped into a subroutine didn't rely on
the unwinders at all back then.

From 'git show 100a02e1:gdb/infrun.c':

    if (stop_pc == ecs->stop_func_start         /* Quick test */
        || (in_prologue (stop_pc, ecs->stop_func_start) &&
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            !IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name))
        || IN_SOLIB_CALL_TRAMPOLINE (stop_pc, ecs->stop_func_name)
        || ecs->stop_func_name == 0)
      {
        /* It's a subroutine call.  */

        if ((step_over_calls == STEP_OVER_NONE)
            || ((step_range_end == 1)
                && in_prologue (prev_pc, ecs->stop_func_start)))
          {
            /* I presume that step_over_calls is only 0 when we're
               supposed to be stepping at the assembly language level
               ("stepi").  Just stop.  */
            /* Also, maybe we just did a "nexti" inside a prolog,
               so we thought it was a subroutine call but it was not.
               Stop as well.  FENN */
            stop_step = 1;
            print_stop_reason (END_STEPPING_RANGE, 0);
            stop_stepping (ecs);
            return;
          }

Stripping the IN_SOLIB_RETURN_TRAMPOLINE checks for simplicity, we had:

    if (stop_pc == ecs->stop_func_start         /* Quick test */
        || in_prologue (stop_pc, ecs->stop_func_start)
        || ecs->stop_func_name == 0)
      {
        /* It's a subroutine call.  */

That is, detecting a subroutine call was based on prologue detection
back then.  So the in_prologue check in the current tree only made
sense back then as it was undoing a bad decision the in_prologue check
that used to exist above did.

Today, the check for a subroutine call relies on frame ids instead,
which are stable throughout the function.  So we can just remove the
in_prologue check for nexti, and the whole in_prologue function along
with it.

Tested on x86_64 Fedora 20, and also by nexti-ing manually a prologue.

gdb/
2014-11-07  Pedro Alves  <palves@redhat.com>

* infrun.c (process_event_stop_test) <subroutine check>: Don't
check if we did a "nexti" inside a prologue.
* symtab.c (in_prologue): Delete function.
* symtab.h (in_prologue): Delete declaration.

10 years agoAdd more fixes for inavlid memory accesses triggered by corrupt files.
Nick Clifton [Fri, 7 Nov 2014 13:39:45 +0000 (13:39 +0000)] 
Add more fixes for inavlid memory accesses triggered by corrupt files.

PR binutils/17531
* readelf.c (get_data): Avoid allocating memory when we know that
the read will fail.
(find_section_by_type): New function.
(get_unwind_section_word): Check for invalid symbol indicies.
Check for invalid reloc types.
(get_32bit_dynamic_section): Add range checks.
(get_64bit_dynamic_section): Add range checks.
(process_dynamic_section): Check for a corrupt time value.
(process_symbol_table): Add range checks.
(dump_section_as_strings): Add string length range checks.
(display_tag_value): Likewise.
(display_arm_attribute): Likewise.
(display_gnu_attribute): Likewise.
(display_tic6x_attribute): Likewise.
(display_msp430x_attribute): Likewise.
(process_mips_specific): Add range check.

10 years agotekhex architecure
Alan Modra [Fri, 7 Nov 2014 10:52:02 +0000 (21:22 +1030)] 
tekhex architecure

is a don't care.

* tekhex.c (tekhex_set_arch_mach): Ignore unknown arch errors.

10 years agotekhex buffer management and symbol types
Alan Modra [Fri, 7 Nov 2014 09:59:43 +0000 (20:29 +1030)] 
tekhex buffer management and symbol types

Dramatically reduces memory consumption and processing time for large
all-zero data segments.  Allows multiple symbol types attached to a
given segment to survive objcopy.

* tekhex.c (CHUNK_SPAN): Define.
(struct data_struct <chunk_init>): Use one byte per span, update
all code accessing this field.
(find_chunk): Add create param, don't create new entry unless set.
(insert_byte): Don't save zeros.
(first_phase): Set section SEC_CODE or SEC_DATA flag depending
on symbol type.  Create an alternate section if both types of
symbol are given.  Attach type '2' and '6' symbols to absolute
section.
(move_section_contents): Fix caching of chunk.  Don't create chunk
when reading, or for writing zeros.
(tekhex_set_section_contents): Don't create initial chunks.
(tekhex_write_object_contents): Use CHUNK_SPAN.

10 years agoaoutx.h tidy
Alan Modra [Fri, 7 Nov 2014 09:48:25 +0000 (20:18 +1030)] 
aoutx.h tidy

Save a multiplication, and any concern that the buffer allocation
might be smaller than the amount read (as it could be if the header
size isn't a multiple of EXTERNAL_NLIST_SIZE).

* aoutx.h (aout_get_external_symbols): Tidy allocation of symbol buffer.

10 years agosymtab.h (lookup_global_symbol): Improve function comment.
Doug Evans [Fri, 7 Nov 2014 07:51:21 +0000 (23:51 -0800)] 
symtab.h (lookup_global_symbol): Improve function comment.

gdb/ChangeLog:

* symtab.h (lookup_global_symbol): Improve function comment.

10 years agoRename lookup_symbol_global to lookup_global_symbol.
Doug Evans [Fri, 7 Nov 2014 07:48:18 +0000 (23:48 -0800)] 
Rename lookup_symbol_global to lookup_global_symbol.

gdb/ChangeLog:

* symtab.c (lookup_global_symbol): Renamed from lookup_symbol_global.
All callers updated.
* symtab.h (lookup_global_symbol): Update decl.
(lookup_static_symbol): Move decl to better location.

10 years agosymtab.c (basic_lookup_symbol_nonlocal): Add comment.
Doug Evans [Fri, 7 Nov 2014 07:34:28 +0000 (23:34 -0800)] 
symtab.c (basic_lookup_symbol_nonlocal): Add comment.

gdb/ChangeLog:

* symtab.c (basic_lookup_symbol_nonlocal): Add comment.

10 years agoRename some "aux" functions.
Doug Evans [Fri, 7 Nov 2014 07:29:49 +0000 (23:29 -0800)] 
Rename some "aux" functions.

"aux" doesn't contribute anything to the name, and it makes the
reader wonder what it's supposed to mean.

gdb/ChangeLog:

* symtab.c (lookup_local_symbol): Renamed from lookup_symbol_aux_local.
All callers updated.
(lookup_symbol_in_all_objfiles): Renamed from
lookup_symbol_aux_symtabs.  All callers updated.
(lookup_symbol_via_quick_fns): Renamed from lookup_symbol_aux_quick.
All callers updated.
(lookup_symbol_in_objfile_symtabs): Renamed from
lookup_symbol_aux_objfile.  All callers updated.

10 years agolookup_symbol_in_block: Renamed from lookup_symbol_aux_block.
Doug Evans [Fri, 7 Nov 2014 07:04:15 +0000 (23:04 -0800)] 
lookup_symbol_in_block: Renamed from lookup_symbol_aux_block.

gdb/ChangeLog:

* symtab.c (lookup_symbol_in_block): Renamed from
lookup_symbol_aux_block.  All callers updated.

10 years agoRename lookup_symbol_static to lookup_symbol_in_static_block,
Doug Evans [Fri, 7 Nov 2014 06:56:46 +0000 (22:56 -0800)] 
Rename lookup_symbol_static to lookup_symbol_in_static_block,
and lookup_static_symbol_aux to lookup_static_symbol.

gdb/ChangeLog:

* symtab.c (lookup_static_symbol): Renamed from
lookup_static_symbol_aux.  All callers updated.
(lookup_symbol_in_static_block): Renamed from lookup_symbol_static.
All callers updated.

10 years agoNew macro ALL_BLOCK_SYMBOLS_WITH_NAME.
Doug Evans [Fri, 7 Nov 2014 06:50:12 +0000 (22:50 -0800)] 
New macro ALL_BLOCK_SYMBOLS_WITH_NAME.

gdb/ChangeLog:

* block.h (ALL_BLOCK_SYMBOLS_WITH_NAME): New macro.
* block.c (block_lookup_symbol): Use it.
* cp-support.c (make_symbol_overload_list_block): Use it.
* symtab.c (iterate_over_symbols): Use it.

10 years agoMove lookup_block_symbol to block.c, rename to block_lookup_symbol.
Doug Evans [Fri, 7 Nov 2014 06:32:25 +0000 (22:32 -0800)] 
Move lookup_block_symbol to block.c, rename to block_lookup_symbol.

There is another function, lookup_symbol_aux_block, and
the names lookup_block_symbol and lookup_symbol_aux_block don't
convey any real difference between them.

The difference is that lookup_block_symbol lives in the lower level
block API, and lookup_symbol_aux_block lives in the higher level symtab API.
This patch makes this distinction clear.

gdb/ChangeLog:

* symtab.c (lookup_block_symbol): Moved to ...
* block.c (block_lookup_symbol):  ... here and renamed.
All callers updated.
* block.h (block_lookup_symbol): Declare.
* symtab.h (lookup_block_symbol): Delete.

10 years agoRevert bfd_get_size checks
Alan Modra [Thu, 6 Nov 2014 23:07:39 +0000 (09:37 +1030)] 
Revert bfd_get_size checks

* archive.c (_bfd_slurp_extended_name_table): Revert bfd_get_size check.
* coffcode.h (coff_set_alignment_hook): Likewise.
(coff_slurp_line_table): Likewise.
* coffgen.c (coff_get_normalized_symtab): Likewise.
(_bfd_coff_get_external_symbols): Likewise.
* elf.c (bfd_elf_get_str_section): Likewise.
* tekhex.c (first_phase): Likewise.

10 years agoUse ALL_PRIMARY_SYMTABS instead of ALL_SYMTABS in some places.
Doug Evans [Fri, 7 Nov 2014 01:27:55 +0000 (17:27 -0800)] 
Use ALL_PRIMARY_SYMTABS instead of ALL_SYMTABS in some places.

Non-primary symtabs share the block vector with their primary symtabs.
In these cases there's no need to use ALL_SYMTABS.

gdb/ChangeLog:

* ada-lang.c (ada_make_symbol_completion_list): Use
ALL_PRIMARY_SYMTABS instead of ALL_SYMTABS.
* symtab.c (lookup_objfile_from_block): Ditto.

10 years agoForgotten ChangeLog entry for previous commit.
Doug Evans [Fri, 7 Nov 2014 01:24:12 +0000 (17:24 -0800)] 
Forgotten ChangeLog entry for previous commit.

gdb/ChangeLog:

* gdbtypes.h (TYPE_CODE_CLASS): Delete.  All uses changed to use
TYPE_CODE_STRUCT.

10 years agoDelete TYPE_CODE_CLASS, it's just an alias of TYPE_CODE_STRUCT.
Doug Evans [Fri, 7 Nov 2014 01:19:06 +0000 (17:19 -0800)] 
Delete TYPE_CODE_CLASS, it's just an alias of TYPE_CODE_STRUCT.

gdb/ChangeLog:

* gdbtypes.h (TYPE_CODE_CLASS): Delete.  All uses changed to use
TYPE_CODE_STRUCT.

10 years agosolib_global_lookup: Fetch arch from objfile, not target_gdbarch.
Doug Evans [Fri, 7 Nov 2014 01:10:51 +0000 (17:10 -0800)] 
solib_global_lookup: Fetch arch from objfile, not target_gdbarch.

gdb/ChangeLog:

* objfiles.c (get_objfile_arch): Constify.
* objfiles.h (get_objfile_arch): Update prototype.
* solib.c (solib_global_lookup): Fetch arch from objfile,
not target_gdbarch.

10 years agodaily update
Alan Modra [Thu, 6 Nov 2014 23:01:04 +0000 (09:31 +1030)] 
daily update

10 years agoAdd mach parameter to nios2_find_opcode_hash.
Sandra Loosemore [Thu, 6 Nov 2014 21:12:21 +0000 (13:12 -0800)] 
Add mach parameter to nios2_find_opcode_hash.

2014-11-06  Sandra Loosemore  <sandra@codesourcery.com>

include/opcode/
* nios2.h (nios2_find_opcode_hash): Add mach parameter to
declaration.  Fix obsolete comment.

opcodes/
* nios2-dis.c (nios2_find_opcode_hash): Add mach parameter.
(nios2_disassemble): Adjust call to nios2_find_opcode_hash.

gas/
* config/tc-nios2.c (nios2_diagnose_overflow): Adjust call to
nios2_find_opcode_hash.

10 years agoUpdate Nios II prologue analysis to remove detection of long-obsolete
Sandra Loosemore [Thu, 6 Nov 2014 20:56:27 +0000 (12:56 -0800)] 
Update Nios II prologue analysis to remove detection of long-obsolete
code sequences.

2014-11-06  Sandra Loosemore  <sandra@codesourcery.com>

gdb/
* nios2-tdep.c (wild_insn): Delete.
(profiler_insn, irqentry_insn): Delete.
(nios2_match_sequence): Delete.
(nios2_analyze_prologue): Update comments.  Remove matching
of obsolete profiler_insn and irqentry_insn sequences.

10 years agoPrevent archive memebers with illegal pathnames from being extracted from an archive.
Nick Clifton [Thu, 6 Nov 2014 14:49:10 +0000 (14:49 +0000)] 
Prevent archive memebers with illegal pathnames from being extracted from an archive.

PR binutils/17552, binutils/17533
* bucomm.c (is_valid_archive_path): New function.  Returns false
for absolute pathnames and pathnames that include /../.
* bucomm.h (is_valid_archive_path): Add prototype.
* ar.c (extract_file): Use new function to check for valid
pathnames when extracting files from an archive.
* objcopy.c (copy_archive): Likewise.
* doc/binutils.texi: Update documentation to mention the
limitation on pathname of archive members.

10 years agoRevert changes in previous deltas that introduced new failures into
Nick Clifton [Thu, 6 Nov 2014 14:39:58 +0000 (14:39 +0000)] 
Revert changes in previous deltas that introduced new failures into
the linker testsuite.

* aoutx.h (slurp_symbol_table): Revert previous delta.
(slurp_reloc_table): Likewise.
* compress.c (bfd_get_full_section_contents): Remove file size
test.
* coffgen.c (coff_get_normalized_symtab): Allow zero-sized symtabs
and do not complain about linker generated files.

10 years agobfd/elf-attrs.c: Fix possible infinite loop parsing attributes
Will Newton [Wed, 5 Nov 2014 15:24:30 +0000 (15:24 +0000)] 
bfd/elf-attrs.c: Fix possible infinite loop parsing attributes

Handle the case of a zero length section or sub-section in
_bfd_elf_parse_attributes and in doing so prevent an infinite loop
in the parser.

bfd/ChangeLog:

2014-11-06  Will Newton  <will.newton@linaro.org>

* elf-attrs.c (_bfd_elf_parse_attributes): Handle zero
length sections and sub-sections.

10 years agodaily update
Alan Modra [Wed, 5 Nov 2014 23:00:53 +0000 (09:30 +1030)] 
daily update

10 years agoMore fixes for memory problems uncovered by file fuzzers.
Nick Clifton [Wed, 5 Nov 2014 17:57:54 +0000 (17:57 +0000)] 
More fixes for memory problems uncovered by file fuzzers.

PR binutils/17512
* coffcode.h (handle_COMDAT): Replace abort with BFD_ASSERT.
Replace another abort with an error message.
(coff_slurp_line_table): Add more range checking.
* peXXigen.c (pe_print_debugdata): Add range checking.

10 years agoMore fixes for reading corrupt ELF files.
Nick Clifton [Wed, 5 Nov 2014 16:19:03 +0000 (16:19 +0000)] 
More fixes for reading corrupt ELF files.

PR binutils/15731
* readelf.c (printable_section_name): New function.
(printable_section_name_from_index): New function.
(dump_relocations): Use new function.
(process_program_headers, get_32bit_elf_symbols,
(get_64bit_elf_symbols, process_section_headers,
(process_section_groups, process_relocs, ia64_process_unwind,
(hppa_process_unwind, get_unwind_section_word, decode_arm_unwind,
(arm_process_unwind, process_version_sections,
(process_symbol_table, apply_relocations, get_section_contents,
(dump_section_as_strings, dump_section_as_bytes,
(display_debug_section, process_attributes, process_mips_specific,
(process_mips_specific process_gnu_liblist): Likewise.
(get_unwind_section_word): Check for a missing symbol table.
Replace aborts with error messages.
(arm_process_unwind): Check for a missing string table.
(process_attributes): Check for an attribute length that is too
small.
(process_mips_specific): Check for a corrupt GOT symbol offset.

10 years agoFix gnu11 fallout on Solaris 10+
Rainer Orth [Wed, 5 Nov 2014 14:07:38 +0000 (15:07 +0100)] 
Fix gnu11 fallout on Solaris 10+

* sigsetmask.c (_POSIX_SOURCE): Remove.

10 years agoFix segfault when creating a dso with discarded .dynsym section.
Matthew Fortune [Wed, 5 Nov 2014 10:56:59 +0000 (10:56 +0000)] 
Fix segfault when creating a dso with discarded .dynsym section.

bfd/

* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Fix segfault
when creating a dso with discarded dynsym section.

10 years agoUpdate .MIPS.abiflags to support MIPS R6
Matthew Fortune [Tue, 4 Nov 2014 23:37:28 +0000 (23:37 +0000)] 
Update .MIPS.abiflags to support MIPS R6

bfd/

* elfxx-mips.c (update_mips_abiflags_isa): Add E_MIPS_ARCH_32R6
and E_MIPS_ARCH_64R6 support.

ld/testsuite/

* ld-mips-elf/abiflags-strip10-ph.d: New file.
* ld-mips-elf/mips-eld.exp: Run the new test.

gas/

* config/tc-mips.c (mips_elf_final_processing): Add INSN_ISA32R6
and INSN_ISA64R6 support.

gas/testsuite/

* gas/mips/elf_arch_mips32r6.d: New file.
* gas/mips/elf_arch_mips64r6.d: New file.
* gas/mips/mips.exp: Run the new tests.

10 years ago2014-11-05 Jan-Benedict Glaw <jbglaw@lug-owl.de>
Jan-Benedict Glaw [Wed, 5 Nov 2014 09:08:37 +0000 (10:08 +0100)] 
2014-11-05  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

* readelf.c (process_mips_specific): Fix format string warning.

10 years agoMore fixes for processing corrupt files.
Nick Clifton [Wed, 5 Nov 2014 10:13:16 +0000 (10:13 +0000)] 
More fixes for processing corrupt files.

PR binutils/17512
* coffcode.h (coff_set_alignment_hook): Warn if the file lies
about the number of relocations it contains.
(coff_sort_func_alent): Return 0 if the pointers are NULL.
(coff_slurp_line_table): Add more range checks.  Do not free new
tables created when sorting line numbers.
* peXXigen.c (pe_print_idata): Add range checks.
(pe_print_edata): Likewise.
(rsrc_print_resource_entries): Likewise.  Avoid printing control
characters.  Terminate priniting if corruption is detected.
(rsrc_print_resource_directory): Terminate printing if an unknown
directory type is encountered.
(pe_print_debugdata): Fix off-by-one error.
(rsrc_count_entries): Add range checking.
(rsrc_parse_entry): Likewise.

10 years agoCast result of obstack_next_free
Alan Modra [Tue, 4 Nov 2014 22:48:27 +0000 (09:18 +1030)] 
Cast result of obstack_next_free

obstack_next_free is supposed to return a void*, rather than a char*
as it does currently.  Avoid warning on void* arithmetic when
obstack_next_free gets it proper return type.

* cp-valprint.c (cp_print_value_fields): Cast obstack_next_free
to char* before doing pointer arithmetic.

10 years agoUse obstack_blank_fast to shrink obstacks
Alan Modra [Tue, 4 Nov 2014 08:55:34 +0000 (19:25 +1030)] 
Use obstack_blank_fast to shrink obstacks

obstack_blank isn't the correct macro to call for shrinking obstacks
since it does size checking.

* charset.c (convert_between_encodings): Shrink obstack using
obstack_blank_fast.
* minsyms.c (install_minimal_symbols): Likewise.

10 years agoUpdate description of ownership of files in include/
Doug Evans [Wed, 5 Nov 2014 00:14:14 +0000 (16:14 -0800)] 
Update description of ownership of files in include/

10 years agoFix -Wshadow warning
Matthew Fortune [Tue, 4 Nov 2014 23:40:22 +0000 (23:40 +0000)] 
Fix -Wshadow warning

binutils/

* readelf.c (process_mips_specific): Rename index to idx.

10 years agodaily update
Alan Modra [Tue, 4 Nov 2014 23:01:00 +0000 (09:31 +1030)] 
daily update

10 years agotui: Fix newterm call for older ncurses
Simon Marchi [Tue, 4 Nov 2014 13:27:06 +0000 (08:27 -0500)] 
tui: Fix newterm call for older ncurses

Older versions of ncurses' newterm can't take NULL for their ofp and ifp
parameters. Newer versions can, and they fall back on stdout/stdin if
that is the case.

This patch explicitly passes stdout/stdin to the call to newterm to
avoid segfaulting with older ncurses.

gdb/Changelog:

2014-11-04  Simon Marchi  <simon.marchi@ericsson.com>

* tui/tui.c (tui_enable): Pass stdout and stdin to newterm.

10 years agogarbage collect gdb/breakpoint.c:breakpoint_thread_match
Pedro Alves [Tue, 4 Nov 2014 18:42:28 +0000 (18:42 +0000)] 
garbage collect gdb/breakpoint.c:breakpoint_thread_match

Used to be necessary for the thread-hop code, but that's gone now.
Nothing uses this anymore.

gdb/
2014-11-04  Pedro Alves  <palves@redhat.com>

* breakpoint.c (breakpoint_thread_match): Delete function.
* breakpoint.h (breakpoint_thread_match): Delete declaration.

10 years agoFix problem with linker created sections being mistakenly flagged
Nick Clifton [Tue, 4 Nov 2014 16:00:10 +0000 (16:00 +0000)] 
Fix problem with linker created sections being mistakenly flagged
as corrupt by the new error checking code in bfd_get_full_section_contents.

PR binutils/17512
* compress.c (bfd_get_full_section_contents): Improve test for
linker created objects.

10 years agoMore fixes for memory corruption when readelf processes corrupt files.
Nick Clifton [Tue, 4 Nov 2014 15:29:03 +0000 (15:29 +0000)] 
More fixes for memory corruption when readelf processes corrupt files.

PR binutils/17531
(get_32bit_program_headers): Verify program header entry size
before reading in the program headers.
(get_64bit_program_headers): Likewise.
(get_unwind_section_word): Do nothing if no section was provided.
Fail if the offset is outside of the section.
(print_dynamic_symbol): Catch out of range symbol indicies.
(process_mips_specific): Likewise.
(process_attributes): Make sure that there is enough space left in
the section before attempting to read the length of the next
attribute.

10 years agoFix a seg-fault triggered by reading a mal-formed archive.
Nick Clifton [Tue, 4 Nov 2014 13:15:37 +0000 (13:15 +0000)] 
Fix a seg-fault triggered by reading a mal-formed archive.

PR binutils/17533
* archive.c (_bfd_slurp_extended_name_table): Handle archives with
corrupt extended name tables.

10 years agoDon't use register keyword
Alan Modra [Tue, 4 Nov 2014 05:01:09 +0000 (15:31 +1030)] 
Don't use register keyword

* expr.c (expr_symbol_where): Don't use register keyword.
* app.c (app_push, app_pop, do_scrub_chars): Likewise.
* ecoff.c (add_string, add_ecoff_symbol, add_aux_sym_symint,
add_aux_sym_rndx, add_aux_sym_tir, add_procedure, add_file,
ecoff_build_lineno, ecoff_setup_ext, allocate_cluster.
allocate_scope, allocate_vlinks, allocate_shash,
allocate_thash, allocate_tag, allocate_forward, allocate_thead,
allocate_lineno_list): Likewise.
* frags.c (frag_more, frag_var, frag_variant, frag_wane): Likewise.
* input-file.c (input_file_push, input_file_pop): Likewise.
* input-scrub.c (input_scrub_push, input_scrub_next_buffer): Likewise.
* subsegs.c (subseg_change): Likewise.
* symbols.c (colon, symbol_table_insert, symbol_find_or_make)
(dollar_label_name, fb_label_name): Likewise.
* write.c (relax_align): Likewise.
* config/tc-alpha.c (s_alpha_pdesc): Likewise.
* config/tc-bfin.c (bfin_s_bss): Likewise.
* config/tc-i860.c (md_estimate_size_before_relax): Likewise.
* config/tc-m68hc11.c (md_convert_frag): Likewise.
* config/tc-m68k.c (m68k_ip, crack_operand): Likewise.
(md_convert_frag_1, s_even): Likewise.
* config/tc-mips.c (mips_clear_insn_labels): Likewise.
* config/tc-mn10200.c (md_begin): Likewise.
* config/tc-s390.c (s390_setup_opcodes, md_begin): Likewise.
* config/tc-sh.c (sh_elf_cons): Likewise.
* config/tc-tic4x.c (tic4x_cons, tic4x_stringer): Likewise.
* config/m68k-parse.y (m68k_reg_parse): Likewise.  Convert from K&R.
(yylex, m68k_ip_op, yyerror): Convert from K&R.

10 years agoUse frag_now_fix_octets in gas d10v, d30v
Alan Modra [Tue, 4 Nov 2014 04:11:00 +0000 (14:41 +1030)] 
Use frag_now_fix_octets in gas d10v, d30v

obstack_next_free is supposed to return a void* rather than the char*
it does currently, so expressions involving pointer arithmetic need
a cast.  Avoid the issue.

* config/tc-d10v.c (find_opcode): Call frag_now_fix_octets rather
than equivalent obstack_next_free expression.
* config/tc-d30v.c (find_format): Likewise.

10 years agoRegenerate spu overlay and icache manager files
Alan Modra [Tue, 4 Nov 2014 03:19:12 +0000 (13:49 +1030)] 
Regenerate spu overlay and icache manager files

Nothing to see here, just the changed placement of section headers.

* emultempl/spu_icache.o_c: Regenerate.
* emultempl/spu_ovl.o_c: Regenerate.

10 years agoProvide stat function for spu overlay manager iovec
Alan Modra [Tue, 4 Nov 2014 03:09:38 +0000 (13:39 +1030)] 
Provide stat function for spu overlay manager iovec

Commit f54498b4 broke spu-elf, specifically the change "Do not try to
load a string table bigger than the file", because bfd_get_size
returns zero for the spu built-in overlay manager bfd.

* elf32-spu.c (ovl_mgr_stat): New function.
(spu_elf_open_builtin_lib): Pass to bfd_openr_iovec.

10 years agoFixes for crashes running readelf.
Nick Clifton [Tue, 4 Nov 2014 11:58:16 +0000 (11:58 +0000)] 
Fixes for crashes running readelf.

PR binutils/17531
* readelf.c (get_data): If the reason parameter is null, do not
print any error messages.
(get_32bit_section_headers): Verify section header entry size
before reading in the section headers.
(get_64bit_section_headers): Likewise.
(process_section_headers): Pass FALSE to get_section_headers.
(get_file_header): Pass TRUE to get_section_headers.
(process_dynamic_section): Change an assert to an error message.
(process_symbol_table): Handle corrupt histograms.

10 years agoFix evaluation of method calls under EVAL_SKIP.
Siva Chandra [Sat, 18 Oct 2014 13:14:00 +0000 (06:14 -0700)] 
Fix evaluation of method calls under EVAL_SKIP.

When evaluating method calls under EVAL_SKIP, the "object" and the
arguments to the method should also be evaluated under EVAL_SKIP,
instead of skipping to evaluate them as was being done previously.

gdb/ChangeLog:

PR c++/17494
* eval.c (evaluate_subexp_standard): Evaluate the "object" and
the method args also under EVAL_SKIP when evaluating method
calls under EVAL_SKIP.

gdb/testsuite/ChangeLog:

PR c++/17494
* gdb.cp/pr17494.cc: New file.
* gdb.cp/pr17494.exp: New file.

10 years agodaily update
Alan Modra [Mon, 3 Nov 2014 23:00:33 +0000 (09:30 +1030)] 
daily update

10 years agoWhen relaxing, update size of symbols.
Andrew Burgess [Mon, 27 Oct 2014 10:45:18 +0000 (10:45 +0000)] 
When relaxing, update size of symbols.

When performing linker relaxation, reduce the size of symbols that span
the deleted bytes.  This ensures that, for example, function symbols
will have the correct size.

bfd/ChangeLog:

* elf32-avr.c (elf32_avr_relax_delete_bytes): During linker
relaxation, reduce the size of symbols that span the deleted
bytes.

ld/ChangeLog:

* testsuite/ld-avr/relax-02.d: Update to check size of symbols has
changed.
* testsuite/ld-avr/relax-03.d: Likewise.

10 years agoWhen relaxing, update symbols at the very end of the section.
Andrew Burgess [Sat, 25 Oct 2014 14:08:14 +0000 (15:08 +0100)] 
When relaxing, update symbols at the very end of the section.

Symbols at the very end of a section were not being updated correctly
when linker relaxation takes place due to the use of '<' instead of
'<='.  Added a couple of tests to cover this behaviour.

bfd/ChangeLog:

* elf32-avr.c (elf32_avr_relax_delete_bytes): Modify symbols
located at the very end of the section.

ld/ChangeLog:

* ld/testsuite/ld-avr/relax-02.d: New file.
* ld/testsuite/ld-avr/relax-02.s: New file.
* ld/testsuite/ld-avr/relax-03.d: New file.
* ld/testsuite/ld-avr/relax-03.s: New file.

10 years agoMore fixes for buffer overruns instigated by corrupt binaries.
Nick Clifton [Mon, 3 Nov 2014 17:44:00 +0000 (17:44 +0000)] 
More fixes for buffer overruns instigated by corrupt binaries.

PR binutils/17512
* objdump.c (slurp_symtab): Fail gracefully if the table could not
be read.
(dump_relocs_in_section): Likewise.

* aoutx.h (slurp_symbol_table): Check that computed table size is
not bigger than the file from which is it being read.
(slurp_reloc_table): Likewise.
* coffcode.h (coff_slurp_line_table): Remove unneeded local
'warned'.  Do not try to print the details of a symbol with an
invalid index.
* coffgen.c (make_a_sectiobn_from_file): Check computed string
index against length of string table.
(bfd_coff_internal_syment_name): Check read in string offset
against length of string table.
(build_debug_section): Return a pointer to the section used.
(_bfd_coff_read_string_table): Store the length of the string
table in the coff_tdata structure.
(bfd_coff_free_symbols): Set the length of the string table to
zero when it is freed.
(coff_get_normalized_symtab): Check offsets against string table
or data table lengths as appropriate.
* cofflink.c (_bfd_coff_link_input_bfd): Check offset against
length of string table.
* compress.c (bfd_get_full_section_contents): Check computed size
against the size of the file.
* libcoff-in.h (obj_coff_strings_len): Define.
(struct coff_tdata): Add strings_len field.
* libcoff.h: Regenerate.
* peXXigen.c (pe_print_debugdata): Do not attempt to print the
data if the debug section is too small.
* xcofflink.c (xcoff_link_input_bfd):  Check offset against
length of string table.

10 years agoImport updated translations supplied by the Translation Project.
Nick Clifton [Mon, 3 Nov 2014 12:26:48 +0000 (12:26 +0000)] 
Import updated translations supplied by the Translation Project.

bfd, binutils, gprof, opcodes:
* po/fi.po: Updated Finnish translation.

binutils:
* po/sv.po: Updated Swedish translation.

gprof:
* po/hu.po: New Hungarian translation.

10 years agoAdd missing changelog entries
Yao Qi [Mon, 3 Nov 2014 12:12:18 +0000 (20:12 +0800)] 
Add missing changelog entries

Some changelog entries are missing in previous commits.  Add them.

10 years agoFixes a snafu checking the size of 20-bit immedaite values.
Nick Clifton [Mon, 3 Nov 2014 11:15:53 +0000 (11:15 +0000)] 
Fixes a snafu checking the size of 20-bit immedaite values.

* config/tc-msp430.c (msp430_srcoperand): Fix range test for
20-bit values.

10 years agomdebugread.c (parse_procedure): Delete unnecessary forward decl.
Doug Evans [Mon, 3 Nov 2014 05:34:59 +0000 (21:34 -0800)] 
mdebugread.c (parse_procedure): Delete unnecessary forward decl.

gdb/ChangeLog:

* mdebugread.c (parse_procedure): Delete unnecessary forward decl.

10 years agoxcoffread.c (process_linenos): Delete unnecessary code.
Doug Evans [Mon, 3 Nov 2014 04:17:12 +0000 (20:17 -0800)] 
xcoffread.c (process_linenos): Delete unnecessary code.

gdb/ChangeLog:

* xcoffread.c (process_linenos): Delete unnecessary zeroing of
main_subfile before returning.

10 years agodaily update
Alan Modra [Sun, 2 Nov 2014 23:01:00 +0000 (09:31 +1030)] 
daily update

10 years agoread_pieced_value do big endian processing only in case of valid gdb_regnum
Victor Kamensky [Sun, 2 Nov 2014 21:28:35 +0000 (13:28 -0800)] 
read_pieced_value do big endian processing only in case of valid gdb_regnum

During armv7b testing gdb.base/store.exp test was failling with
'GDB internal error' with the following message:

Temporary breakpoint 1, wack_double (u=
../../binutils-gdb/gdb/regcache.c:177: internal-error: register_size: Assertion `regnum >= 0 && regnum < (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch))' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

It turns out that compiler generated DWARF with non-existent
register numbers. The compiler issue is present in both little endian
(armv7) and big endian (armv7b) (it is separate issue). Here is
example for one of formal parameters of wack_double function:

 <2><792>: Abbrev Number: 10 (DW_TAG_formal_parameter)
    <793>   DW_AT_name        : u
    <795>   DW_AT_decl_file   : 1
    <796>   DW_AT_decl_line   : 115
    <797>   DW_AT_type        : <0x57c>
    <79b>   DW_AT_location    : 6 byte block: 6d 93 4 6c 93 4   (DW_OP_reg29 (r29); DW_OP_piece: 4; DW_OP_reg28 (r28); DW_OP_piece: 4)

In both big and little endian cases gdbarch_dwarf2_reg_to_regnum
returns -1 which is stored into gdb_regnum. But it causes severe
problem only in big endian case because in read_pieced_value and
write_pieced_value functions BFD_ENDIAN_BIG related processing
happen regardless of gdb_regnum value, for example register_size
function is called and in case of gdb_regnum=-1, it cause
'GDB internal error' and crash.

Solution is to move BFD_ENDIAN_BIG related processing under
(gdb_regnum != -1) branch of processing.

gdb/ChangeLog:

2014-11-02  Victor Kamensky  <victor.kamensky@linaro.org>

* dwarf2loc.c (read_pieced_value): Do big endian
processing only if gdb_regnum is not -1.
(write_pieced_value): Ditto.

10 years agoARM: arm_breakpoint should be little endian form in case for arm BE8
Victor Kamensky [Sun, 2 Nov 2014 21:28:35 +0000 (13:28 -0800)] 
ARM: arm_breakpoint should be little endian form in case for arm BE8

tdep->arm_breakpoint, tdep->thumb_breakpoint, tdep->thumb2_breakpoint
should be set le_ variants in case of arm BE8 code. Those instruciton
sequences are writen to target with simple write_memory, without
regarding gdbarch_byte_order_for_code. But in BE8 case even data
memory is in big endian form, instructions are still in little endian
form.

Because of this issue there are many issues while running gdb test
case in armv7b mode. For example gdb.arch/arm-disp-step.exp test fails
because it gets SIGILL when displaced instrucion sequence reaches
break instruction, which is in wrong byte order.

Solution is to set tdep->xxx_breakpoint sequences in BE8 case (i.e
when gdbarch_byte_order_for_code is BFD_ENDIAN_BIG.

gdb/ChangeLog:

2014-11-02  Victor Kamensky  <victor.kamensky@linaro.org>

* arm-linux-tdep.c (arm_linux_init_abi): Use
info.byte_order_for_code to choose endianity of breakpoint
instructions snippets.

10 years agoARM: extract_arm_insn function need to read instrs correctly in be8 case
Victor Kamensky [Sun, 2 Nov 2014 21:28:35 +0000 (13:28 -0800)] 
ARM: extract_arm_insn function need to read instrs correctly in be8 case

extract_arm_insn function needs to read instructions in
gdbarch_byte_order_for_code byte order, because in case armv7b,
even data is big endian, instructions are still little endian.
Currently function uses gdbarch_byte_order which would be
big endian in armv7b case.

Because of this issue pretty much all gdb.reverse/ tests are
failing with 'Process record does not support instruction' message.

Fix is to change gdbarch_byte_order to gdbarch_byte_order_for_code,
when passed to extract_unsigned_integer that reads instruction.

gdb/ChangeLog:

2014-11-02  Victor Kamensky  <victor.kamensky@linaro.org>

* arm-tdep.c (extract_arm_insn): Use
gdbarch_byte_order_for_code to read arm instruction.

10 years agoMatch the working directory on remote host
Yao Qi [Sun, 2 Nov 2014 13:08:06 +0000 (21:08 +0800)] 
Match the working directory on remote host

The test in gdb.python/python.exp tests "extended-prompt" and expects
working directory is printed.  However, working directory on remote
host doesn't have "gdb/testsuite", so the test fails on remote host
like:

set extended-prompt \w ^M
^M
/home/yao FAIL: gdb.python/python.exp: set extended prompt working directory (timeout)

This patch is to get the working directory first, and use it to match
the output of "set extended-prompt \\w ".  It works for remote host
and non remote host.

gdb/testsuite:

2014-11-02  Yao Qi  <yao@codesourcery.com>

* gdb.python/python.exp: Get working directory and match the
output of "set extended-prompt \\w " with it.

10 years agodaily update
Alan Modra [Sat, 1 Nov 2014 23:00:42 +0000 (09:30 +1030)] 
daily update

10 years agoobjfiles.h: Remove some unused macros.
Doug Evans [Sat, 1 Nov 2014 04:46:08 +0000 (21:46 -0700)] 
objfiles.h: Remove some unused macros.

gdb/ChangeLog:

* objfiles.h (ALL_PSPACE_OBJFILES_SAFE): Delete, unused.
(ALL_PSPACE_SYMTABS, ALL_PSPACE_PRIMARY_SYMTABS): Ditto.

10 years agovalops.c: Fix some whitespace.
Doug Evans [Sat, 1 Nov 2014 03:20:48 +0000 (20:20 -0700)] 
valops.c: Fix some whitespace.

gdb/ChangeLog:

* valops.c (value_cast_pointers): Fix whitespace.
(typecmp, search_struct_method, value_struct_elt, find_oload_champ):
Ditto.

10 years agoFix %lx format used with bfd_size_type mismatch in readelf.c
Hans-Peter Nilsson [Sat, 1 Nov 2014 02:34:00 +0000 (03:34 +0100)] 
Fix %lx format used with bfd_size_type mismatch in readelf.c

* readelf.c (get_32bit_elf_symbols): Cast error
parameters of bfd_size_type with the %lx format to
unsigned long.

10 years agodaily update
Alan Modra [Fri, 31 Oct 2014 23:00:35 +0000 (09:30 +1030)] 
daily update

10 years agoMIPS: Add Octeon 3 support
Naveen H.S [Fri, 31 Oct 2014 20:48:04 +0000 (13:48 -0700)] 
MIPS: Add Octeon 3 support

binutils:
2014-10-31  Andrew Pinski  <apinski@cavium.com>
            Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* readelf.c (print_mips_isa_ext): Print the value of Octeon3.

gas:
2014-10-31  Andrew Pinski  <apinski@cavium.com>
            Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* config/tc-mips.c (CPU_IS_OCTEON): Handle CPU_OCTEON3.
(mips_cpu_info_table): Octeon3 enables virt ase.
* doc/c-mips.texi: Document octeon3 as an acceptable value for
-march=.

gas/testsuite:
2014-10-31  Andrew Pinski  <apinski@cavium.com>
            Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* gas/mips/mips.exp: Add support for Octeon3 architecture.
Also add in support for running Octeon3 tests.
* gas/mips/octeon3.d: New test.
* gas/mips/octeon3.s: New test source.

opcodes:
2014-10-31  Andrew Pinski  <apinski@cavium.com>
            Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* mips-dis.c (mips_arch_choices): Add octeon3.
* mips-opc.c (IOCT): Include INSN_OCTEON3.
(IOCT2): Likewise.
(IOCT3): New define.
(IVIRT): New define.
(mips_builtin_opcodes): Add dmfgc0, dmtgc0, hypcall, mfgc0, mtgc0,
tlbinv, tlbinvf, tlbgr, tlbgwi, tlbginv, tlbginvf, tlbgwr, tlbgp, tlti
IVIRT instructions.
Extend mtm0, mtm1, mtm2, mtp0, mtp1, mtp2 instructions to take another
operand for IOCT3.

bfd:
2014-10-31  Andrew Pinski  <apinski@cavium.com>
            Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* archures.c: Add octeon3 for mips target.
* bfd-in2.h: Regenerate.
* bfd/cpu-mips.c: Define I_mipsocteon3.
nfo_struct): Add octeon3 support.
* bfd/elfxx-mips.c: (_bfd_elf_mips_mach): Add support for
octeon3.
(mips_set_isa_flags): Add support for octeon3.
(bfd_mips_isa_ext): Add bfd_mach_mips_octeon3.
(mips_mach_extensions): Make bfd_mach_mips_octeon3 an
extension of bfd_mach_mips_octeon2.
(print_mips_isa_ext): Print the value of Octeon3.

10 years agoAdd forgotten changelog entry.
Andrew Pinski [Fri, 31 Oct 2014 20:24:24 +0000 (13:24 -0700)] 
Add forgotten changelog entry.
2014-10-21  Andrew Pinski  <apinski@cavium.com>

* config/tc-aarch64.c (aarch64_cpus):
Add thunderx.
* doc/c-aarch64.texi: Document that thunderx
is a valid processor name.

10 years agoAdd dlang demangling support to c++filt.
Iain Buclaw [Fri, 31 Oct 2014 18:38:39 +0000 (18:38 +0000)] 
Add dlang demangling support to c++filt.

binutils/ChangeLog:
* cxxfilt.c (main): Add case for dlang_demangling style.

10 years agoFix an (almost) infinite loop in the tekhex parser.
Nick Clifton [Fri, 31 Oct 2014 18:00:55 +0000 (18:00 +0000)] 
Fix an (almost) infinite loop in the tekhex parser.

PR binutils/17512
* tekhex.c (first_phase): Check that the section range is sane.

10 years agoAvoid allocating over-large buffers when parsing corrupt binaries.
Nick Clifton [Fri, 31 Oct 2014 16:36:31 +0000 (16:36 +0000)] 
Avoid allocating over-large buffers when parsing corrupt binaries.

PR binutils/17512
* coffgen.c (_bfd_coff_get_external_symbols): Do not try to load a
symbol table bigger than the file.
* elf.c (bfd_elf_get_str_section): Do not try to load a string
table bigger than the file.

* readelf.c (process_program_headers): Avoid memory exhaustion due
to corrupt values in a dynamis segment header.
(get_32bit_elf_symbols): Do not attempt to read an over-large
section.
(get_64bit_elf_symbols): Likewise.

10 years agooops - changelog omitted from previous delta.
Nick Clifton [Fri, 31 Oct 2014 10:19:53 +0000 (10:19 +0000)] 
oops - changelog omitted from previous delta.

10 years agoIn response to a public outcry the strings program now defaults to using the
Nick Clifton [Fri, 31 Oct 2014 10:10:37 +0000 (10:10 +0000)] 
In response to a public outcry the strings program now defaults to using the
--all option which displays text from anywhere in the input file(s).  The
default used to be --data, which only displays text from loadable data sections,
but this requires the use of the BFD library.  Since the BFD library almost
certainly still contains buffer overrun and/or memory corruption bugs, and
since the strings program is often used to examine malicious code, it was
decided that the --data option option represents a possible security risk.

* strings.c: Add new command line option --data to only scan the
initialized, loadable data secions of binaries.  Choose the
default behaviour of --all or --data based upon a configure
option.
* doc/binutils.texi (strings): Update documentation.  Include
description  of why the --data option might be unsafe.
* configure.ac: Add new option --disable-default-strings-all which
restores the old behaviour of strings using --data by default.  If
the option is not used make strings use --all by default.
* NEWS: Mention the new behaviour of strings.
* configure: Regenerate.
* config.in: Regenerate.

10 years agoAdd ability to add attributes to gdb.Objfile and gdb.Progspace objects.
Doug Evans [Fri, 31 Oct 2014 00:05:17 +0000 (17:05 -0700)] 
Add ability to add attributes to gdb.Objfile and gdb.Progspace objects.

gdb/ChangeLog:

* NEWS: Mention ability add attributes to gdb.Objfile and
gdb.Progspace objects.
* python/py-objfile.c (objfile_object): New member dict.
(objfpy_dealloc): Py_XDECREF dict.
(objfpy_initialize): Initialize dict.
(objfile_getset): Add __dict__.
(objfile_object_type): Set tp_dictoffset member.
* python/py-progspace.c (progspace_object): New member dict.
(pspy_dealloc): Py_XDECREF dict.
(pspy_initialize): Initialize dict.
(pspace_getset): Add __dict__.
(pspace_object_type): Set tp_dictoffset member.

gdb/doc/ChangeLog:

* python.texi (Progspaces In Python): Document ability to add
random attributes to gdb.Progspace objects.
(Objfiles In Python): Document ability to add random attributes to
gdb.objfile objects.

gdb/testsuite/ChangeLog:

* gdb.python/py-objfile.exp: Add tests for setting random attributes
in objfiles.
* gdb.python/py-progspace.exp: Add tests for setting random attributes
in progspaces.

10 years agodaily update
Alan Modra [Thu, 30 Oct 2014 23:00:33 +0000 (09:30 +1030)] 
daily update

10 years agoFixes a seg-fault in the ihex parser when it encounters a malformed ihex file.
Nick Clifton [Thu, 30 Oct 2014 17:16:17 +0000 (17:16 +0000)] 
Fixes a seg-fault in the ihex parser when it encounters a malformed ihex file.

PR binutils/17512
* ihex.c (ihex_scan): Fix typo in invocation of ihex_bad_byte.

10 years agoCloses another memory corruption, this time due to heap overrun.
Nick Clifton [Thu, 30 Oct 2014 15:52:10 +0000 (15:52 +0000)] 
Closes another memory corruption, this time due to heap overrun.

PR binutils/17512
* coffgen.c (coff_get_normalized_symtab): Prevent buffer overrun.

10 years agoSkip tests that use cd for remote hosts
Luis Machado [Thu, 30 Oct 2014 11:48:10 +0000 (09:48 -0200)] 
Skip tests that use cd for remote hosts

Several GDB tests change directory before compiling the test program
in order to test source file names that include directories.  This
doesn't work on a remote host because default_target_compile in
DejaGnu's target.exp copies each source file with
"[remote_download host $x]" which uses "[file tail $file] to strip
off the directory of each file.  If the source directory is remote
mounted on the host, this also leaves copied files in the source
directory.

A similar skip is already used in gdb.test/fullname.exp:

    # We rely on being able to copy things around.

    if { [is_remote host] } {
untested "setting breakpoints by full path"
return -1
    }

This patch causes three GDB tests that use "cd" to be skipped for a
remote host.  For gdb.base/fullpath-expand.exp this eliminates two
failures and prevents the test from leaving files fullpath-expand.c
and fullpath-expand-func.c in gdb/testsuite.  For
gdb.base/realname-expand.exp it eliminates two failures.  For
gdb.linespec/macro-relative.exp it prevents file macro-relative.c
from being left in gdb/testsuite/gdb.linespec/base/two.

gdb/testsuite/

* gdb.base/fullpath-expand.exp: Skip for a remote host.
* gdb.base/realname-expand.exp: Likewise.
* gdb.linespec/macro-relative.exp: Likewise.

10 years agold/testsuite/ld-unique: Fix running unique tests on ARM
Will Newton [Thu, 23 Oct 2014 17:20:27 +0000 (18:20 +0100)] 
ld/testsuite/ld-unique: Fix running unique tests on ARM

The @ character is a comment character on ARM, so use % instead. Also
use a wider glob for matching ARM targets to make sure the test gets
run.

ld/testsuite/ChangeLog:

2014-10-30  Will Newton  <will.newton@linaro.org>

* ld-unique/unique.exp: Use a wider glob for matching ARM
targets.
* ld-unique/unique.s: Use % instead of @ in .type directive.
* ld-unique/unique_shared.s: Likewise.

10 years agoRemove the artificial limit on code alignment through the use of the
Dr Philipp Tomsich [Thu, 30 Oct 2014 10:53:09 +0000 (10:53 +0000)] 
Remove the artificial limit on code alignment through the use of the
fixed part of a fragment for output generation only, which required
MAX_MEM_FOR_RS_ALIGN_CODE to be large enough to hold the maximum pad.

* config/tc-aarch64.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define to 7.
* config/tc-aarch64.c (aarch64_handle_align): Rewrite to handle
large alignments with a constant fragment size of
MAX_MEM_FOR_RS_ALIGN_CODE.

10 years agoFix error message strings so that they can be translated properly.
Nick Clifton [Thu, 30 Oct 2014 09:53:56 +0000 (09:53 +0000)] 
Fix error message strings so that they can be translated properly.

* readelf.c (CHECK_ENTSIZE_VALUES): Rewrite error message so that
there is a single string for translation.
(dynamic_section_mips_val): Likewise.

10 years agoDon't replace '\' with '\\' in before_prompt_hook
Yao Qi [Thu, 30 Oct 2014 01:42:36 +0000 (09:42 +0800)] 
Don't replace '\' with '\\' in before_prompt_hook

In gdb/command/prompt.py:before_prompt_hook, the '\' in the new prompt
is replaced with '\\', shown as below,

>     def before_prompt_hook(self, current):
>         if self.value is not '':
>             newprompt = gdb.prompt.substitute_prompt(self.value)
>             return newprompt.replace('\\', '\\\\')
>         else:
>             return None

I don't see any explanations on this in comments nor email.  As doc
said, "set extended-prompt \w" substitute the current working
directory, but it prints something different from what pwd or
os.getcwdu() prints on mingw32 host.

(gdb) python print os.getcwdu()^M
\\build2-lucid-cs\yqi\yqi\arm-none-eabi

(gdb) pwd^M
Working directory \\build2-lucid-cs\yqi\yqi\arm-none-eabi

(gdb) set extended-prompt \w
\\\\build2-lucid-cs\\yqi\\yqi\\arm-none-eabi

This makes me think whether the substitution in before_prompt_hook is
necessary or not.  This patch is to remove this substitution.

Run gdb.python on x86_64-linux and arm-none-eabi on mingw32 host.  No
regressions.

gdb:

2014-10-30  Yao Qi  <yao@codesourcery.com>

* python/lib/gdb/command/prompt.py (before_prompt_hook): Don't
replace '\\' with '\\\\'.

10 years agodaily update
Alan Modra [Wed, 29 Oct 2014 23:00:40 +0000 (09:30 +1030)] 
daily update

10 years agoFixes another memory corruption bug introduced by patches for PR 17512.
Nick Clifton [Wed, 29 Oct 2014 20:58:13 +0000 (20:58 +0000)] 
Fixes another memory corruption bug introduced by patches for PR 17512.

* elf.c (bfd_section_from_shdr): Fix heap use after free memory
leak.

10 years agoDocument the GDB 7.8.1 release in gdb/ChangeLog
Joel Brobecker [Wed, 29 Oct 2014 19:57:04 +0000 (12:57 -0700)] 
Document the GDB 7.8.1 release in gdb/ChangeLog

gdb/ChangeLog:

GDB 7.8.1 released.

10 years agoMisc about gold for aarch64 backend.
Han Shen [Wed, 29 Oct 2014 18:28:46 +0000 (11:28 -0700)] 
Misc about gold for aarch64 backend.

The patch does the following things:
  -- Add support for ifunc.
  -- Enable safe icf
  -- Add support for TLSLD relocations
     R_AARCH64_TLSLD_ADR_PAGE21,
     R_AARCH64_TLSLD_ADD_LO12_NC,
     R_AARCH64_TLSLD_MOVW_DTPREL_G1,
     R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC.
     (R_AARCH64_TLSLD_MOVW_* are used by LLVM.)
  -- Add support for TLSLD->TLSLE relaxation.
  -- Add support for R_AARCH64_LD_PREL_LO19, R_AARCH64_ADR_PREL_LO21.
  -- Fix 2 encoding bugs in AArch64_relocate_functions::update_movnz.
  -- Correct TLS relocation properties in gold/aarch64-reloc.def.
  -- Update testsuite/icf_safe_so_test.cc, testsuite/icf_safe_test.sh.

gold/
2014-10-29  Han Shen  <shenhan@google.com>
            Jing Yu   <jingyu@google.com>

* aarch64-reloc.def: Add LD_PREL_LO12, ADR_PREL_LO21,
TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
TLSLD_MOVW_DTPREL_G0_NC. Change property of TLS relocations to
Symbol::TLS_REF.
* aarch64.cc (Target_aarch64::do_can_check_for_function_pointers): New
method.
(Target_aarch64::reloc_needs_plt_for_ifunc): New method.
(Target_aarch64::tls_ld_to_le): New method.
(Target_aarch64::aarch64_info): Enable can_icf_inline_merge_sections
for 64bit targets.
(Output_data_plt_aarch64::irelative_rel_): New data member.
(Output_data_plt_aarch64::add_entry): Add irelative entries to plt.
(Output_data_plt_aarch64::add_local_ifunc_entry): New method.
(Output_data_plt_aarch64::add_relocation): New method.
(Output_data_plt_aarch64::do_write): Add gold_assert on got_irelative
offset. Add got_irelative size to got size.
(AArch64_relocate_functions): Typedef AArch64_valtype. Replace long
type string with the new typename.
(AArch64_relocate_functions::update_adr): Replace parameter x with
immed.
(AArch64_relocate_functions::update_movnz): Correct wrong val mask.
(AArch64_relocate_functions::reloc_common): New method.
(AArch64_relocate_funcsions::rela_general): Extract common part out
into reloc_common method.
(AArch64_relocate_functions::rela_general): Likewise.
(AArch64_relocate_functions::pcrela_general): Likewise.
(AArch64_relocate_functions::adr): New method.
(AArch64_relocate_functions::adrp): Calculate immed before calling
update_adr.
(AArch64_relocate_functions::adrp): Likewise.
(AArch64_relocate_functions::movnz): Cast x to SignedW type when
comparing x to 0. Calculate immed from ~x when x < 0.
(Target_aarch64::optimize_tls_reloc): Add new cases for
TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
TLSLD_MOVW_DTPREL_G0_NC.
(Target_aarch64::possible_function_pointer_reloc): Implement this
method.
(Target_aarch64::Scan::local_reloc_may_be_function_pointer): Update
comment.
(Target_aarch64::Scan::local): Add codes to handle STT_GNU_IFUNC
symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
(Target_aarch64::Scan::global): Add codes to handle STT_GNU_IFUNC
symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
(Target_aarch64::make_plt_entry): Call add_entry with two more
parameters.
(Target_aarch64::make_local_ifunc_plt_entry): New method.
(Target_aarch64::Relocate::relocate): Add cases for LD_PREL_LO19,
ADR_PREL_LO21, TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC,
TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC.
(Target_aarch64::Relocate::relocate_tls): Add cases for
TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1,
TLSLD_MOVW_DTPREL_G0_NC.
* testsuite/icf_safe_so_test.cc: Correct test comment.
* testsuite/icf_safe_test.sh: Add AArch64 arch.

10 years agoThis PR shows that GDB can easily trigger an assertion here, in
Pedro Alves [Wed, 29 Oct 2014 18:25:27 +0000 (18:25 +0000)] 
This PR shows that GDB can easily trigger an assertion here, in
infrun.c:

 5392              /* Did we find the stepping thread?  */
 5393              if (tp->control.step_range_end)
 5394                {
 5395                  /* Yep.  There should only one though.  */
 5396                  gdb_assert (stepping_thread == NULL);
 5397
 5398                  /* The event thread is handled at the top, before we
 5399                     enter this loop.  */
 5400                  gdb_assert (tp != ecs->event_thread);
 5401
 5402                  /* If some thread other than the event thread is
 5403                     stepping, then scheduler locking can't be in effect,
 5404                     otherwise we wouldn't have resumed the current event
 5405                     thread in the first place.  */
 5406                  gdb_assert (!schedlock_applies (currently_stepping (tp)));
 5407
 5408                  stepping_thread = tp;
 5409                }

Like:

 gdb/infrun.c:5406: internal-error: switch_back_to_stepped_thread: Assertion `!schedlock_applies (1)' failed.

The way the assertion is written is assuming that with schedlock=step
we'll always leave threads other than the one with the stepping range
locked, while that's not true with the "next" command.  With schedlock
"step", other threads still run unlocked when "next" detects a
function call and steps over it.  Whether that makes sense or not,
still, it's documented that way in the manual.  If another thread hits
an event that doesn't cause a stop while the nexting thread steps over
a function call, we'll get here and fail the assertion.

The fix is just to adjust the assertion.  Even though we found the
stepping thread, we'll still step-over the breakpoint that just
triggered correctly.

Surprisingly, gdb.threads/schedlock.exp doesn't have any test that
steps over a function call.  This commits fixes that.  This ensures
that "next" doesn't switch focus to another thread, and checks whether
other threads run locked or not, depending on scheduler locking mode
and command.  There's a lot of duplication in that file that this ends
cleaning up.  There's more that could be cleaned up, but that would
end up an unrelated change, best done separately.

This new coverage in schedlock.exp happens to trigger the internal
error in question, like so:

 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (1) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (3) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (5) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (7) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (9) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next does not change thread (switched to thread 0)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: current thread advanced - unlocked (wrong amount)

That's because we have more than one thread running the same loop, and
while one thread is stepping over a function call, the other thread
hits the step-resume breakpoint of the first, which needs to be
stepped over, and we end up in switch_back_to_stepped_thread exactly
in the problem case.

I think a simpler and more directed test is also useful, to not rely
on internal breakpoint magics.  So this commit also adds a test that
has a thread trip on a conditional breakpoint that doesn't cause a
user-visible stop while another thread is stepping over a call.  That
currently fails like this:

 FAIL: gdb.threads/next-bp-other-thread.exp: schedlock=step: next over function call (GDB internal error)

Tested on x86_64 Fedora 20.

gdb/
2014-10-29  Pedro Alves  <palves@redhat.com>

PR gdb/17408
* infrun.c (switch_back_to_stepped_thread): Use currently_stepping
instead of assuming a thread with a stepping range is always
stepping.

gdb/testsuite/
2014-10-29  Pedro Alves  <palves@redhat.com>

PR gdb/17408
* gdb.threads/schedlock.c (some_function): New function.
(call_function): New global.
(MAYBE_CALL_SOME_FUNCTION): New macro.
(thread_function): Call it.
* gdb.threads/schedlock.exp (get_args): Add description parameter,
and use it instead of a global counter.  Adjust all callers.
(get_current_thread): Use "find current thread" for test message
here rather than having all callers pass down the same string.
(goto_loop): New procedure, factored out from ...
(my_continue): ... this.
(step_ten_loops): Change parameter from test message to command to
use.  Adjust.
(list_count): Delete global.
(check_result): New procedure, factored out from duplicate top
level code.
(continue tests): Wrap in with_test_prefix.
(test_step): New procedure, factored out from duplicate top level
code.
(top level): Test "step" in combination with all scheduler-locking
modes.  Test "next" in combination with all scheduler-locking
modes, and in combination with stepping over a function call or
not.
* gdb.threads/next-bp-other-thread.c: New file.
* gdb.threads/next-bp-other-thread.exp: New file.

10 years agoPR 17408 - assertion failure in switch_back_to_stepped_thread
Pedro Alves [Wed, 29 Oct 2014 18:15:39 +0000 (18:15 +0000)] 
PR 17408 - assertion failure in switch_back_to_stepped_thread

This PR shows that GDB can easily trigger an assertion here, in
infrun.c:

 5392              /* Did we find the stepping thread?  */
 5393              if (tp->control.step_range_end)
 5394                {
 5395                  /* Yep.  There should only one though.  */
 5396                  gdb_assert (stepping_thread == NULL);
 5397
 5398                  /* The event thread is handled at the top, before we
 5399                     enter this loop.  */
 5400                  gdb_assert (tp != ecs->event_thread);
 5401
 5402                  /* If some thread other than the event thread is
 5403                     stepping, then scheduler locking can't be in effect,
 5404                     otherwise we wouldn't have resumed the current event
 5405                     thread in the first place.  */
 5406                  gdb_assert (!schedlock_applies (currently_stepping (tp)));
 5407
 5408                  stepping_thread = tp;
 5409                }

Like:

 gdb/infrun.c:5406: internal-error: switch_back_to_stepped_thread: Assertion `!schedlock_applies (1)' failed.

The way the assertion is written is assuming that with schedlock=step
we'll always leave threads other than the one with the stepping range
locked, while that's not true with the "next" command.  With schedlock
"step", other threads still run unlocked when "next" detects a
function call and steps over it.  Whether that makes sense or not,
still, it's documented that way in the manual.  If another thread hits
an event that doesn't cause a stop while the nexting thread steps over
a function call, we'll get here and fail the assertion.

The fix is just to adjust the assertion.  Even though we found the
stepping thread, we'll still step-over the breakpoint that just
triggered correctly.

Surprisingly, gdb.threads/schedlock.exp doesn't have any test that
steps over a function call.  This commits fixes that.  This ensures
that "next" doesn't switch focus to another thread, and checks whether
other threads run locked or not, depending on scheduler locking mode
and command.  There's a lot of duplication in that file that this ends
cleaning up.  There's more that could be cleaned up, but that would
end up an unrelated change, best done separately.

This new coverage in schedlock.exp happens to trigger the internal
error in question, like so:

 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (1) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (3) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (5) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (7) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next to increment (9) (GDB internal error)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: next does not change thread (switched to thread 0)
 FAIL: gdb.threads/schedlock.exp: schedlock=step: cmd=next: call_function=1: current thread advanced - unlocked (wrong amount)

That's because we have more than one thread running the same loop, and
while one thread is stepping over a function call, the other thread
hits the step-resume breakpoint of the first, which needs to be
stepped over, and we end up in switch_back_to_stepped_thread exactly
in the problem case.

I think a simpler and more directed test is also useful, to not rely
on internal breakpoint magics.  So this commit also adds a test that
has a thread trip on a conditional breakpoint that doesn't cause a
user-visible stop while another thread is stepping over a call.  That
currently fails like this:

 FAIL: gdb.threads/next-bp-other-thread.exp: schedlock=step: next over function call (GDB internal error)

Tested on x86_64 Fedora 20.

gdb/
2014-10-29  Pedro Alves  <palves@redhat.com>

PR gdb/17408
* infrun.c (switch_back_to_stepped_thread): Use currently_stepping
instead of assuming a thread with a stepping range is always
stepping.

gdb/testsuite/
2014-10-29  Pedro Alves  <palves@redhat.com>

PR gdb/17408
* gdb.threads/schedlock.c (some_function): New function.
(call_function): New global.
(MAYBE_CALL_SOME_FUNCTION): New macro.
(thread_function): Call it.
* gdb.threads/schedlock.exp (get_args): Add description parameter,
and use it instead of a global counter.  Adjust all callers.
(get_current_thread): Use "find current thread" for test message
here rather than having all callers pass down the same string.
(goto_loop): New procedure, factored out from ...
(my_continue): ... this.
(step_ten_loops): Change parameter from test message to command to
use.  Adjust.
(list_count): Delete global.
(check_result): New procedure, factored out from duplicate top
level code.
(continue tests): Wrap in with_test_prefix.
(test_step): New procedure, factored out from duplicate top level
code.
(top level): Test "step" in combination with all scheduler-locking
modes.  Test "next" in combination with all scheduler-locking
modes, and in combination with stepping over a function call or
not.
* gdb.threads/next-bp-other-thread.c: New file.
* gdb.threads/next-bp-other-thread.exp: New file.

10 years agoPR python/17372 - Python hangs when displaying help()
Pedro Alves [Thu, 23 Oct 2014 16:13:35 +0000 (17:13 +0100)] 
PR python/17372 - Python hangs when displaying help()

This is more of a readline/terminal issue than a Python one.

PR17372 is a regression in 7.8 caused by the fix for PR17072:

 commit 0017922d0292d8c374584f6100874580659c9973
 Author: Pedro Alves <palves@redhat.com>
 Date:   Mon Jul 14 19:55:32 2014 +0100

    Background execution + pagination aborts readline/gdb

    gdb_readline_wrapper_line removes the handler after a line is
    processed.  Usually, we'll end up re-displaying the prompt, and that
    reinstalls the handler.  But if the output is coming out of handling
    a stop event, we don't re-display the prompt, and nothing restores the
    handler.  So the next input wakes up the event loop and calls into
    readline, which aborts.
...
    gdb/
    2014-07-14  Pedro Alves  <palves@redhat.com>

        PR gdb/17072
        * top.c (gdb_readline_wrapper_line): Tweak comment.
        (gdb_readline_wrapper_cleanup): If readline is enabled, reinstall
        the input handler callback.

The problem is that installing the input handler callback also preps
the terminal, putting it in raw mode and with echo disabled, which is
bad if we're going to call a command that assumes cooked/canonical
mode, and echo enabled, like in the case of the PR, Python's
interactive shell.  Another example I came up with that doesn't depend
on Python is starting a subshell with "(gdb) shell /bin/sh" from a
multi-line command.  Tests covering both these examples are added.

The fix is to revert the original fix for PR gdb/17072, and instead
restore the callback handler after processing an asynchronous target
event.

Furthermore, calling rl_callback_handler_install when we already have
some input in readline's line buffer discards that input, which is
obviously a bad thing to do while the user is typing.  No specific
test is added for that, because I first tried calling it even if the
callback handler was still installed and that resulted in hundreds of
failures in the testsuite.

gdb/
2014-10-29  Pedro Alves  <palves@redhat.com>

PR python/17372
* event-top.c (change_line_handler): Call
gdb_rl_callback_handler_remove instead of
rl_callback_handler_remove.
(callback_handler_installed): New global.
(gdb_rl_callback_handler_remove, gdb_rl_callback_handler_install)
(gdb_rl_callback_handler_reinstall): New functions.
(display_gdb_prompt): Call gdb_rl_callback_handler_remove and
gdb_rl_callback_handler_install instead of
rl_callback_handler_remove and rl_callback_handler_install.
(gdb_disable_readline): Call gdb_rl_callback_handler_remove
instead of rl_callback_handler_remove.
* event-top.h (gdb_rl_callback_handler_remove)
(gdb_rl_callback_handler_install)
(gdb_rl_callback_handler_reinstall): New declarations.
* infrun.c (reinstall_readline_callback_handler_cleanup): New
cleanup function.
(fetch_inferior_event): Install it.
* top.c (gdb_readline_wrapper_line) Call
gdb_rl_callback_handler_remove instead of
rl_callback_handler_remove.
(gdb_readline_wrapper_cleanup): Don't call
rl_callback_handler_install.

gdb/testsuite/
2014-10-29  Pedro Alves  <palves@redhat.com>

PR python/17372
* gdb.python/python.exp: Test a multi-line command that spawns
interactive Python.
* gdb.base/multi-line-starts-subshell.exp: New file.

10 years agoThix fixes an obvious coding error that led to a GDB crash on AIX or HPUX.
Dennis Brueni [Wed, 29 Oct 2014 17:17:32 +0000 (17:17 +0000)] 
Thix fixes an obvious coding error that led to a GDB crash on AIX or HPUX.

* elf.c (elfcore_write_lwpstatus): fix typo in call to memcpy

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