and though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here

  1. 04 Dec, 2016 2 commits
  2. 03 Dec, 2016 10 commits
    • Alan Modra's avatar
      PowerPC64 dot-symbol compatibility bugfixes · 8c5b4e52
      Alan Modra authored
      Lots of fixes for the compatibility code that handles linking of
      -mcall-aixdesc code (or that generated by 12 year old gcc) with
      current ELFv1 ABI code.
      
      1) A reference to a dot-symbol in an object file wasn't satisfied by a
         function descriptor in later object files.
      2) The as-needed code had bit-rotted;  Shared libs now need a strong
         reference to be counted as needed.
      3) --gc-sections involving dot-symbols was broken, needing
         func_desc_adjust to be run early and lots of other fixes.
      
      bfd/
      	* elf64-ppc.c (struct ppc_link_hash_entry): Delete "was_undefined".
      	(struct ppc_link_hash_table): Delete "twiddled_syms".  Add
      	"need_func_desc_adj".
      	(lookup_fdh): Link direct fdh sym via oh field and set flags.
      	(make_fdh): Make strong and weak undefined function descriptor
      	symbols.
      	(ppc64_elf_merge_symbol): New function.
      	(elf_backend_merge_symbol): Define.
      	(ppc64_elf_archive_symbol_lookup): Don't test undefweak for fake
      	function descriptors.
      	(add_symbol_adjust): Don't twiddle symbols to undefweak.
      	Propagate more ref flags to function descriptor symbol.  Make
      	some function descriptor symbols dynamic.
      	(ppc64_elf_before_check_relocs): Only run add_symbol_adjust for
      	ELFv1.  Set need_func_desc_adj.  Don't fix undefs list.
      	(ppc64_elf_check_relocs): Set non_ir_ref for descriptors.
      	Don't call lookup_fdh here.
      	(ppc64_elf_gc_sections): New function.
      	(bfd_elf64_bfd_gc_sections): Define.
      	(ppc64_elf_gc_mark_hook): Mark descriptor.
      	(func_desc_adjust): Don't make fake function descriptor syms strong
      	here.  Exit earlier on non-dotsyms.  Take note of elf.dynamic
      	flag when deciding whether a dynamic function descriptor might
      	be needed.  Transfer elf.dynamic and set elf.needs_plt.  Move
      	plt regardless of visibility.  Make descriptor dynamic if
      	entry sym is dynamic, not for other cases.
      	(ppc64_elf_func_desc_adjust): Don't run func_desc_adjust if
      	already done.
      	(ppc64_elf_edit_opd): Use oh field rather than lookup_fdh.
      	(ppc64_elf_size_stubs): Likewise.
      	(ppc_build_one_stub): Don't clear was_undefined.  Only set sym
      	undefweak if stub symbol is defined.
      	(undo_symbol_twiddle, ppc64_elf_restore_symbols): Delete.
      	* elf64-ppc.h (ppc64_elf_restore_symbols): Don't declare.
      ld/
      	* emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Don't call
      	ppc64_elf_restore_symbols.
      	* testsuite/ld-powerpc/dotsym1.d: New.
      	* testsuite/ld-powerpc/dotsym2.d: New.
      	* testsuite/ld-powerpc/dotsym3.d: New.
      	* testsuite/ld-powerpc/dotsym4.d: New.
      	* testsuite/ld-powerpc/dotsymref.s: New.
      	* testsuite/ld-powerpc/nodotsym.s: New.
      	* testsuite/ld-powerpc/powerpc.exp: Run new tests.
      8c5b4e52
    • Alan Modra's avatar
      PowerPC64 dot-sym testsuite fixes · 4e95fbcd
      Alan Modra authored
      This illustrates quite well why dot-symbols had to go.  PowerPC64 gcc
      for Linux stopped producing them 12 years ago, but the Linux kernel
      still persists in using them so it's necessary to keep and
      regression test ld support.
      
      	* testsuite/ld-elf/indirect1b.c: Give dot-symbol a version too.
      	* testsuite/ld-elf/indirect2.c: Likewise.
      	* testsuite/ld-elf/indirect3b.c: Likewise.
      	* testsuite/ld-elf/indirect4b.c: Likewise.
      	* testsuite/ld-elf/pr18718.c: Likewise.
      	* testsuite/ld-elf/pr18720b.c: Likewise.
      	* testsuite/ld-elf/pr19553c.c: Likewise.
      	* testsuite/ld-elfvers/vers.h (FUNC_SYMVER): Define.
      	* testsuite/ld-elfvers/vers1.c: Use FUNC_SYMVER for functions.
      	* testsuite/ld-elfvers/vers4.c: Likewise.
      	* testsuite/ld-elfvers/vers5.c: Likewise.
      	* testsuite/ld-elfvers/vers6.c: Likewise.
      	* testsuite/ld-elfvers/vers7a.c: Likewise.
      	* testsuite/ld-elfvers/vers9.c: Likewise.
      	* testsuite/ld-elfvers/vers15.c: Likewise.
      	* testsuite/ld-elfvers/vers18.c: Likewise.
      	* testsuite/ld-elfvers/vers22a.c: Likewise.
      	* testsuite/ld-elfvers/vers23a.c: Likewise.
      	* testsuite/ld-elfvers/vers27d1.c: Likewise.
      	* testsuite/ld-elfvers/vers21.c: Likewise.
      	(_old_bar): Use attribute weak rather than asm weak.
      	* testsuite/ld-ifunc/pr16467b.c: Give dot-symbol a version.
      	* testsuite/ld-plugin/pr12760b.c: Define warning on .bar rather than
      	bar for ppc64 -mcall-aixdesc.
      	* testsuite/ld-plugin/pr16746a.c: Similarly for foobar.
      	* testsuite/ld-plugin/pr16746b.c: Likewise.
      	* testsuite/ld-elf/shared.exp: Allow dot-symbol in warnings and errors.
      	* testsuite/ld-plugin/lto.exp: Likewise.
      	* testsuite/ld-plugin/plugin-6.d: Likewise.
      	* testsuite/ld-plugin/plugin-7.d: Likewise.
      	* testsuite/ld-plugin/plugin-8.d: Likewise.
      	* testsuite/ld-plugin/plugin-13.d: Likewise.
      	* testsuite/ld-plugin/plugin-14.d: Likewise.
      	* testsuite/ld-plugin/plugin-15.d: Likewise.
      	* testsuite/ld-plugin/plugin-16.d: Likewise.
      	* testsuite/ld-plugin/plugin-20.d: Likewise.
      	* testsuite/ld-plugin/plugin-21.d: Likewise.
      	* testsuite/ld-plugin/plugin-22.d: Likewise.
      	* testsuite/ld-plugin/plugin-23.d: Likewise.
      	* testsuite/ld-plugin/plugin.exp: Define .main and .puts for ppc64
      	-mcall-aixdesc.
      	* testsuite/ld-elfvers/vers.exp (test_ar): Trim dot-symbols.
      	(objdump_dynsymstuff): Likewise.
      	(objdump_symstuff): Likewise.  Pack flags to keep column count
      	consistent.
      	* testsuite/ld-elfweak/elfweak.exp (objdump_dynsymstuff,
      	objdump_symstuff): As for vers.exp.
      	* testsuite/ld-elfvers/vers6.sym: Allow dot-symbols.
      	* testsuite/ld-elfvers/vers1.sym: Allow missing F flag for
      	-mcall-aixdesc .opd syms and adjust for flag packing.
      	* testsuite/ld-elfvers/vers4.sym: Likewise.
      	* testsuite/ld-elfvers/vers4a.sym: Likewise.
      	* testsuite/ld-elfvers/vers7a.sym: Likewise.
      	* testsuite/ld-elfvers/vers9.sym: Likewise.
      	* testsuite/ld-elfvers/vers15.sym: Likewise.
      	* testsuite/ld-elfvers/vers18.sym: Likewise.
      	* testsuite/ld-elfvers/vers21.sym: Likewise.
      	* testsuite/ld-elfvers/vers22a.sym: Likewise.
      	* testsuite/ld-elfvers/vers23a.sym: Likewise.
      	* testsuite/ld-elfvers/vers27d.sym: Likewise.
      	* testsuite/ld-elfweak/strong.sym: Likewise.
      	* testsuite/ld-elfweak/strongcomm.sym: Likewise.
      	* testsuite/ld-elfweak/strongdata.sym: Likewise.
      4e95fbcd
    • Alan Modra's avatar
      ld-elfvers don't fail on non-empty results · ca16c5b3
      Alan Modra authored
      	* testsuite/ld-elfvers/vers.exp (objdump_dynsymstuff): Don't abort
      	on non-empty results with empty expected.
      ca16c5b3
    • Alan Modra's avatar
      Correct cdtest g++ version test · f522190f
      Alan Modra authored
      Fixes declaration conflict with built-in strncpy.
      
      	* testsuite/ld-cdtest/cdtest-foo.cc: Test for __GNUG__ >= 2.
      f522190f
    • Alan Modra's avatar
      Tidy ppc64_elf_hide_symbol · b8ac2841
      Alan Modra authored
      	* elf64-ppc.c (ppc64_elf_hide_symbol): Access hash table as
      	elf_link_hash_table rather than ppc_link_hash_table.
      b8ac2841
    • Alan Modra's avatar
      PowerPC64 add_symbol_adjust · 35dc6e06
      Alan Modra authored
      	* elf64-ppc.c (add_symbol_adjust): Delete dead code.
      35dc6e06
    • Alan Modra's avatar
      Indirect and warning symbols · 8400d40d
      Alan Modra authored
      It's possible but unlikely that an indirect symbol points at a warning
      symbol.
      
      	* elf64-ppc.c (add_symbol_adjust): Correct order of tests for
      	warning and indirect symbols.
      8400d40d
    • Alan Modra's avatar
      ppc64_elf_copy_indirect_symbol versioned_hidden fix · 474436e6
      Alan Modra authored
      As per _bfd_elf_link_hash_copy_indirect.
      
      	* elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy dynamic
      	flags when direct symbol is versioned_hidden.
      474436e6
    • Alan Modra's avatar
      try_copy_symbol_type node_class check · 4193bc58
      Alan Modra authored
      	* ldexp.c (try_copy_symbol_type): Remove unnecessary check.
      4193bc58
    • GDB Administrator's avatar
      Automatic date update in version.in · 10c56208
      GDB Administrator authored
      10c56208
  3. 02 Dec, 2016 25 commits
    • Simon Marchi's avatar
      Introduce enum_flag type for ui_out flags · bef721e2
      Simon Marchi authored
      This patch changes the ui_out flags to be an enum flag.
      
      gdb/ChangeLog:
      
      	* ui-out.h: Include "common/enum-flags.h".
      	(enum ui_flags): Rename to ...
      	(enum ui_out_flag): ... this.
      	(ui_out_flags): Define enum flag type.
      	(ui_out_test_flags): Change type of parameter to ui_out_flags.
      	(ui_out_new): Likewise.
      	* ui-out.c (ui_out_test_flags): Likewise.
      	(ui_out_new): Likewise.
      	* cli-out.c (cli_out_new): Update variable type.
      	* mi/mi-out.c (mi_out_new): Likewise.
      	* tui/tui-out.c (tui_out_new): Likewise.
      bef721e2
    • Luis Machado's avatar
      Remove unneeded pattern matching in gdb.base/maint.exp · 107c2d62
      Luis Machado authored
      This gets rid of more useless pattern matching cases in gdb.base/maint.exp.
      
      gdb/testsuite/ChangeLog:
      
      2016-12-02  Luis Machado  <lgustavo@codesourcery.com>
      
      	* gdb.base/maint.exp: Use gdb_test instead of gdb_test_multiple when
      	possible.
      	Remove useless pattern-matching code.
      107c2d62
    • Pedro Alves's avatar
      Support an "unlimited" number of user-defined arguments · df3ee9ca
      Pedro Alves authored
      New in v2:
      
        - A few adjustments / simplifications were possible now that we
          require C++11:
      
          . Use std::unique_ptr to make the user_args_stack std::vector own
            its elements:
      
             static std::vector<std::unique_ptr<user_args>> user_args_stack;
      
          . use vector::emplace_back to construct elements directly in the
            corresponding vectors.
      
          . use std::to_string instead of adding a gdb::to_string
            replacement.
      
        - Now includes a test.
      
      Docs/NEWS are unchanged from v1 and have already been approved.
      
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      I recently wrote a user-defined command that could benefit from
      supporting an unlimited number of arguments:
      
       http://palves.net/list-active-signal-handlers-with-gdb/
      
      E.g., 'info signal-dispositions 1 2 3 4 5 6 7 8 9 10 11'
      
      However, we currently only support up to 10 arguments passed to
      user-defined commands ($arg0..$arg9).
      
      I can't find a good reason for that, other than "old code with hard
      coded limits".  This patch removes that limit and modernizes the code
      along the way:
      
        - Makes the user_args struct a real C++ class that uses std::vector
          for storage.
      
        - Removes the "next" pointer from within user_args and uses a
          std::vector to maintain a stack instead.
      
        - Adds a new RAII-based scoped_user_args_level class to help
          push/pop user args in the stack instead of using a cleanup.
      
      gdb/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	* NEWS: Mention that user commands now accept an unlimited number
      	of arguments.
      	* cli/cli-script.c: Include <vector>.
      	(struct string_view): New type.
      	(MAXUSERARGS): Delete.
      	(struct user_args): Now a C++ class.
      	(user_args_stack): New.
      	(struct scoped_user_args_level): New type.
      	(execute_user_command): Use scoped_user_args_level.
      	(arg_cleanup): Delete.
      	(setup_user_args): Deleted, and refactored as ...
      	(user_args::user_args): ... this new constructor.  Limit of number
      	of arguments removed.
      	(insert_user_defined_cmd_args): Defer to user_args_stack.
      	(user_args::insert_args): New, bits based on old
      	insert_user_defined_cmd_args with limit of number of arguments
      	eliminated.
      
      gdb/doc/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	* gdb.texinfo (User-defined Commands): Limit on number of
      	arguments passed to user-defined commands removed; update.
      
      gdb/testsuite/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	* gdb.base/commands.exp (user_defined_command_manyargs_test): New
      	procedure.
      	(top level): Call it.
      df3ee9ca
    • Pedro Alves's avatar
      Test user-defined gdb commands and arguments stack · ec835369
      Pedro Alves authored
      We're missing a test that makes sure that arguments to user-defined
      commands are handled correctly when a user-defined command calls
      another user-defined command / recurses.
      
      The following patch changes that code, so add such a test first so we
      can be confident won't be breaking this use case.
      
      gdb/testsuite/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	* gdb.base/commands.exp (user_defined_command_args_stack_test):
      	New procedure.
      	(top level): Call it.
      ec835369
    • Pedro Alves's avatar
      Fix PR 20559 - "eval" command and $arg0...$arg9/$argc substitution · 01770bbd
      Pedro Alves authored
      It'd be handy to be able to iterate over command arguments in
      user-defined commands, in order to support optional arguments
      ($arg0..$argN).
      
      I thought I could make it work with "eval", but alas, it doesn't work
      currently.  E.g., with:
      
       define test
         set $i = 0
         while $i < $argc
           eval "print $arg%d", $i
           set $i = $i + 1
         end
       end
      
      we get:
      
       (gdb) test 1
       $1 = void
       (gdb) test 1 2 3
       $2 = void
       $3 = void
       $4 = void
       (gdb)
      
      The problem is that "eval" doesn't do user-defined command arguments
      substitution after expanding its own argument.  This patch fixes that,
      which makes the example above work:
      
       (gdb) test 1
       $1 = 1
       (gdb) test 1 2 3
       $2 = 1
       $3 = 2
       $4 = 3
       (gdb)
      
      New test included, similar the above, but also exercises expanding
      $argc.
      
      I think this is likely to simplify many scripts out there, so I'm
      adding an example to the manual and mentioning it in NEWS as well.
      
      gdb/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	PR cli/20559
      	* NEWS: Mention "eval" expands user-defined command arguments.
      	* cli/cli-script.c (execute_control_command): Adjust to rename.
      	(insert_args): Rename to ...
      	(insert_user_defined_cmd_args): ... this, and make extern.
      	* cli/cli-script.h (insert_user_defined_cmd_args): New
      	declaration.
      	* printcmd.c: Include "cli/cli-script.h".
      	(eval_command): Call insert_user_defined_cmd_args.
      
      gdb/doc/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	PR cli/20559
      	* gdb.texinfo (Define): Add example of using "eval" to process a
      	variable number of arguments.
      	(Output) <eval>: Add anchor.
      
      gdb/testsuite/ChangeLog:
      2016-12-02  Pedro Alves  <palves@redhat.com>
      
      	PR cli/20559
      	* gdb.base/commands.exp (user_defined_command_args_eval): New
      	procedure.
      	(top level): Call it.
      01770bbd
    • Nick Clifton's avatar
      Fix typo in changelog entry · 7ed7e438
      Nick Clifton authored
      7ed7e438
    • Nick Clifton's avatar
      Fix seg-fault in linker when passed a corrupt binary input file. · d7f399a8
      Nick Clifton authored
      	PR lf/20908
      	* elflink.c (bfd_elf_final_link): Check for ELF flavour binaries
      	when following indirect links.
      d7f399a8
    • Luis Machado's avatar
      Revert change to gdb.cp/ovldbreak.exp · 008459ea
      Luis Machado authored
      This reverts the timeout handling (removed by
      018572b8) for gdb.cp/ovldbreak.exp until we
      decide what to do about this particular function.
      
      gdb/testsuite/ChangeLog:
      
      2016-12-02  Luis Machado  <lgustavo@codesourcery.com>
      
      	* gdb.base/ovldbreak.exp (take_gdb_out_of_choice_menu): Restore
      	timeout handling.
      008459ea
    • Nick Clifton's avatar
      Fix seg-fault in the linker when examining a corrupt binary. · 531336e3
      Nick Clifton authored
      	PR ld/20909
      	* aoutx.h (aout_link_add_symbols): Fix off-by-one error in check
      	for an illegal string offset.
      531336e3
    • Tom Tromey's avatar
      PR symtab/16264 - support DW_AT_main_subprogram · 0c1b455e
      Tom Tromey authored
      This patch adds support for DW_AT_main_subprogram.
      This is PR symtab/16264.
      
      DW_AT_main_subprogram is used to mark a program's entry point.  GCC
      can emit this, and I hope to change the Rust compiler to emit it as
      well.
      
      GDB already supports an older, pre-DWARF 4 convention adopted by
      FORTRAN compilers, namely to emit DW_AT_calling_convention for the
      "main" function.  However, I think this support in GDB had a small
      bug, in that it seems to rely on the DW_AT_name being read before
      DW_AT_calling_convention.  This patch fixes this as well.
      
      Built and regtested on x86-64 Fedora 24 and the buildbot.  New test
      case included.
      
      2016-12-02  Tom Tromey  <tom@tromey.com>
      
      	PR symtab/16264:
      	* dwarf2read.c (struct partial_die_info) <main_subprogram>: New
      	member.
      	(add_partial_symbol): Call set_objfile_main_name.
      	(read_partial_die): Handle DW_AT_main_subprogram.
      	<DW_AT_calling_convention>: don't call set_objfile_main_name, but
      	set main_subprogram flag.
      
      2016-12-02  Tom Tromey  <tom@tromey.com>
      
      	* gdb.dwarf2/main-subprogram.c: New file.
      	* gdb.dwarf2/main-subprogram.exp: New file.
      0c1b455e
    • Nick Clifton's avatar
      Fix seg-fault in the linker when attempting to print out a malicious linker script. · f5ac6ab3
      Nick Clifton authored
      	PR ld/20910
      	* ldmain.c (main): Prevent evaluation of %<char> sequences when
      	printing out a linker script.
      f5ac6ab3
    • Claudiu Zissulescu's avatar
      [ARC] Sync cpu names with the ones accepted by GCC. · a9752fdf
      Claudiu Zissulescu authored
      gas/
      2016-12-02  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* testsuite/gas/arc/cpu-em-err.s: New file.
      	* testsuite/gas/arc/cpu-em4-err.s: Likewise.
      	* testsuite/gas/arc/cpu-fpuda-err.s: Likewise.
      	* testsuite/gas/arc/cpu-hs-err.s: Likewise.
      	* testsuite/gas/arc/cpu-quarkse-err.s: Likewise.
      	* testsuite/gas/arc/noargs_a7.s: Add .cpu.
      	* config/tc-arc.c (ARC_CPU_TYPE_A6xx): Define.
      	(ARC_CPU_TYPE_A7xx): Likewise.
      	(ARC_CPU_TYPE_AV2EM): Likewise.
      	(ARC_CPU_TYPE_AV2HS): Likewise.
      	(cpu_types): Update list of known CPU names.
      	(arc_show_cpu_list): New function.
      	(md_show_usage): Print accepted CPU names.
      	(cl_features): New variable.
      	(arc_select_cpu): Use cl_features.
      	(arc_option): Allow various .cpu names.
      	(md_parse_option): Set cl_features.
      	* doc/c-arc.texi: Update -mcpu and .cpu documentation.
      a9752fdf
    • Simon Marchi's avatar
      Rename some trace functions · e5a873b7
      Simon Marchi authored
      This patch renames a few trace-related functions, so that they adhere to
      the de facto standard of naming command entry point functions
      <command>_command.  I like the ease of looking up a command entry point
      if they all follow that rule.
      
      An enum label "tstop_command" conflicts with a new function name, so I
      renamed this one trace_stop_command.
      
      In v2:
      
      - Rename functions of the trace_find family, as well as
        trace_dump_command.
      
      gdb/ChangeLog:
      
      	* tracefile-tfile.c (tfile_write_status): Adjust to renames.
      	* tracefile.c (trace_save_command): Rename to...
      	(tsave_command): ...this.
      	(_initialize_tracefile): Adjust to renames.
      	* tracepoint.c (trace_actions_command): Rename to...
      	(actions_command): ...this.
      	(trace_start_command): Rename to...
      	(tstart_command): ...this, and adjust to renames..
      	(trace_stop_command): Rename to...
      	(tstop_command): ...this.
      	(trace_status_command): Rename to...
      	(tstatus_command): ...this, and adjust to renames.
      	(trace_find_command): Rename to...
      	(tfind_command): ...this.
      	(trace_find_pc_command): Rename to...
      	(tfind_pc_command): ...this.
      	(trace_find_tracepoint_command): Rename to...
      	(tfind_tracepoint_command): ...this.
      	(trace_find_line_command): Rename to...
      	(tfind_line_command): ...this.
      	(trace_find_range_command): Rename to...
      	(tfind_range_command): ...this.
      	(trace_find_outside_command): Rename to...
      	(tfind_outside_command): ...this.
      	(trace_dump_command): Rename to...
      	(tdump_command): ...this.
      	(tfind_1): Adjust to renames.
      	(trace_find_end_command): Rename to...
      	(tfind_end_command): ...this, and adjust to renames..
      	(trace_status_mi): Adjust to renames.
      	(parse_trace_status): Adjust to renames.
      	(_initialize_tracepoint): Adjust to renames.
      	* tracepoint.h (enum trace_stop_reason) <tstop_command>: Rename
      	to...
      	<trace_stop_command>: ...this.
      e5a873b7
    • Nick Clifton's avatar
      Fix seg-fault in linker when applying relocs to a corrupt binary. · fe6fae07
      Nick Clifton authored
      	PR ld/20911
      	* ldctor.c (ldctor_build_sets): Produce alternative error message
      	if the reloc was being applied to a special section.
      fe6fae07
    • Simon Marchi's avatar
      Remove mi_out_data::suppress_output · 233c8c27
      Simon Marchi authored
      The suppress_output field of the mi_ui_out_data structure is never actually
      set to 1/true.  We can therefore remove it, and remove all the
      
        if (suppress_output)
      
      checks.
      
      gdb/ChangeLog:
      
      	* mi/mi-out.c (mi_ui_out_data) <suppress_output>: Remove.
      	(mi_table_body): Remove suppress_output check.
      	(mi_table_end): Likewise.
      	(mi_table_header): Likewise.
      	(mi_begin): Likewise.
      	(mi_end): Likewise.
      	(mi_field_int): Likewise.
      	(mi_field_string): Likewise.
      	(mi_field_fmt): Likewise.
      	(mi_out_data_ctor): Likewise.
      233c8c27
    • Nick Clifton's avatar
      Fix seg-fault linking corrupt binary. · 68c638d6
      Nick Clifton authored
      	PR ld/20912
      	* emultempl/elf32.em (_place_orphan): Test for ELF format of the
      	orphan before looking for the SHF_EXCLUDE flag.
      68c638d6
    • Gary Benson's avatar
      Always pass a valid section header offset to elf_parse_notes · 08698b7b
      Gary Benson authored
      _bfd_elf_make_section_from_shdr calls elf_parse_notes with an offset
      of -1.  This argument is used to calculate Elf_Internal_Note.descpos,
      which ends up set to a positive but meaningless value.  This commit
      updates _bfd_elf_make_section_from_shdr to pass the correct offset to
      elf_parse_notes, making Elf_Internal_Note.descpos correct in all cases.
      
      bfd/ChangeLog:
      
      	* elf.c (_bfd_elf_make_section_from_shdr): Pass offset to
      	elf_parse_notes.
      08698b7b
    • Josh Conner's avatar
      Add support for Fushia OS. · d5451cd4
      Josh Conner authored
              * configure.ac: Add fuchsia to targets that use ELF.
              * configure: Regenerated.
      
      bfd     * configure.tgt: Add support for fuchsia (OS).
      
      gas     * configure.tgt: Add support for fuchsia (OS).
      
      ld      * Makefile.am: Add dependency information for earmelf_fuchsia.c.
              * Makefile.in: Regenerate.
              * configure.tgt: Add support for aarch64-*-fuchsia, arm*-*-fuchsia*, and
              x86_64-*-fuchsia* targets.
              * emulparams/armelf_fuchsia.sh: New file.
              * emulparams/armelfb_fuchsia.sh: New file.
      d5451cd4
    • Yao Qi's avatar
      [AArch64] Recognize STR instruction in prologue · 432ec081
      Yao Qi authored
      This patch teaches GDB AArch64 backend to recognize STR instructions
      in prologue, like 'str x19, [sp, #-48]!' or 'str w0, [sp, #44]'.
      The unit test is added too.
      
      gdb:
      
      2016-12-02  Yao Qi  <yao.qi@linaro.org>
      	    Pedro Alves  <palves@redhat.com>
      
      	* aarch64-tdep.c (aarch64_analyze_prologue): Recognize STR
      	instruction.
      	(aarch64_analyze_prologue_test): More tests.
      432ec081
    • Yao Qi's avatar
      Add unit test to aarch64 prologue analyzer · 4d9a9006
      Yao Qi authored
      We don't have an effective way to test prologue analyzer which is
      highly dependent on instruction patterns in prologue generated by
      compiler.  GDB prologue analyzer may not handle the new sequences
      generated by new compiler, or may still handle some sequences that
      generated by very old compilers which are no longer used.  The
      former is a functionality issue, while the latter is a maintenance
      issue.
      
      The input and output of prologue analyzer is quite clear, so it
      fits for unit test.  The input is series of instructions, and the
      output are 1) where prologue end, 2) where registers are saved.
      In aarch64, they are represented in 'struct aarch64_prologue_cache'.
      
      This patch refactors aarch64_analyze_prologue so it can read
      instructions from either real target or test harness.  In unit
      test aarch64_analyze_prologue_test, aarch64_analyze_prologue gets
      instructions we prepared in the test, as the input of prologue
      analyzer.  Then, we checked various fields in
      'struct aarch64_prologue_cache'.
      
      gdb:
      
      2016-12-02  Yao Qi  <yao.qi@linaro.org>
      	    Pedro Alves  <palves@redhat.com>
      
      	* aarch64-tdep.c: Include "selftest.h".
      	(abstract_instruction_reader): New class.
      	(instruction_reader): New class.
      	(aarch64_analyze_prologue): Add new parameter reader.  Call
      	reader.read instead of read_memory_unsigned_integer.
      	[GDB_SELF_TEST] (instruction_reader_test): New class.
      	(aarch64_analyze_prologue_test): New function.
      	(_initialize_aarch64_tdep) [GDB_SELF_TEST]: Register
      	selftests::aarch64_analyze_prologue_test.
      	* trad-frame.c (trad_frame_cache_zalloc):
      	(trad_frame_alloc_saved_regs): Add a new function.
      	* trad-frame.h (trad_frame_alloc_saved_regs): Declare.
      4d9a9006
    • Luis Machado's avatar
      Don't handle timeout inside gdb_test_multiple · 018572b8
      Luis Machado authored
      This fixes a few cases where the testcase is explicitly handling timeouts
      inside gdb_test_multiple when it is not necessary.
      
      It also converts two gdb_test_multiple calls to gdb_test_no_output calls
      (also removing the timeout handling).
      
      gdb/testsuite/ChangeLog:
      
      2016-12-01  Luis Machado  <lgustavo@codesourcery.com>
      
      	* gdb.base/maint.exp: Remove timeout handling for gdb_test_multiple.
      	* gdb.cp/gdb2495.exp: Likewise and convert gdb_test_multiple into
      	gdb_test_no_output for a couple of cases.
      	* gdb.cp/ovldbreak.exp: Remove timeout handling for gdb_test_multiple.
      018572b8
    • Cary Coutant's avatar
      Fix problem where orphan section is treated as a KEEP section. · 397b8d2a
      Cary Coutant authored
      gold/
      	PR gold/20717
      	* script-sections.cc (Script_sections): Set *keep to false when
      	no match.
      397b8d2a
    • Cary Coutant's avatar
      Fix problem causing internal error when -z max-page-size is used. · be2884c1
      Cary Coutant authored
      If the default starting address is less than the new ABI page size,
      we end up misaligning the file header, causing an internal error.
      
      gold/
      	PR gold/20834
      	* target.h (Target::default_text_segment_address): Bump default
      	start address up to ABI page size.
      be2884c1
    • Cary Coutant's avatar
      Implement --push-state/--pop-state. · 376c3ecd
      Cary Coutant authored
      gold/
      	PR gold/18989
      	* options.cc (General_options::object_format_to_string): New function.
      	(General_options::copy_from_posdep_options): New function.
      	(General_options::parse_push_state): New function.
      	(General_options::parse_pop_state): New function.
      	* options.h (--push-state, --pop-state): New options.
      	(General_options::object_format_to_string): New method.
      	(General_options::set_incremental_disposition): New method.
      	(General_options::copy_from_posdep_options): New method.
      	(General_options::options_stack_): New data member.
      376c3ecd
    • GDB Administrator's avatar
      Automatic date update in version.in · 6a67d49e
      GDB Administrator authored
      6a67d49e
  4. 01 Dec, 2016 3 commits
    • Simon Marchi's avatar
      Class-ify ui_out_table · 36d18bc5
      Simon Marchi authored
      This patch makes a class out of the ui_out_table structure, the
      structure responsible for managing the generation of an UI table.
      
      To simplify the ui_out_table object, I changed it so that it can only be
      used for generating a single object.  Instead of clearing the header
      list when starting a new table, we an ui_out_table when starting a
      table and delete it when we're done.  Therefore, the checks:
      
        if (uiout->table->flag)
        if (!uiout->table->flag)
      
      are respectively replaced with
      
        if (uiout->table != nullptr)
        if (uiout->table == nullptr)
      
      Note: I removed the check at the beginning of ui_out_begin, because
      there is an equivalent check at the beginning of verify_field.
      
      New in v2:
      
        - use "enum class" for ui_out_table::state and update references.
      
      gdb/ChangeLog:
      
      	* ui-out.c (enum ui_out_table_state): Move to class
      	ui_out_table as ui_out_table::state.
      	(struct ui_out_table): Change to ...
      	(class ui_out_table): ... this.
      	<flag>: Remove.
      	<entry_level>: Rename to ...
      	<m_entry_level>: ... this.
      	<columns>: Rename to ...
      	<m_nr_cols>: ... this.
      	<id>: Rename to ...
      	<m_id>: ... this.
      	<headers>: Rename to ...
      	<m_headers>: ... this.
      	<headers_iterator>: Rename to ...
      	<m_headers_iterator>: ... this.
      	<start_body, append_header, start_row, get_next_header,
      	query_field, current_state, entry_level>: New methods.
      	(struct ui_out) <table>: Change type to unique_ptr to
      	ui_out_table.
      	(append_header_to_list, get_next_header, clear_header_list,
      	clear_table): Remove.
      	(ui_out_table_begin): Instantiate ui_out_table object.  Update
      	table check.
      	(ui_out_table_body): Update table check, replace code with call
      	to ui_out_table::start_body.
      	(ui_out_table_end): Update table check, replace manual cleanup
      	with assignment of uiout->table unique_ptr to nullptr.
      	(ui_out_table_header): Update table check, replace call to
      	append_header_to_list with call to append_header method.
      	(ui_out_begin): Remove one table state check, update another.
      	Replace code with call to start_row method.
      	(verify_field): Update table checks.
      	(ui_out_query_field): Update table check, replace code with call
      	to query_field method.
      	(ui_out_new): Remove table initialization code.
      36d18bc5
    • Simon Marchi's avatar
      ui_out_table: Replace boolean flag with enum · 77a179e7
      Simon Marchi authored
      This patch is just a little cleanup, it replaces the body_flag field of
      ui_out_table with an enum.  It expresses more explicitly the
      intent of the field (check that state == TABLE_STATE_HEADERS conveys
      more what we want to do than checking for !body_flag).
      
      New in v2:
      
        - Remove unnecessary ui_out_table_state::.
      
      gdb/ChangeLog:
      
      	* ui-out.c (enum ui_out_table_state): New enum.
      	(struct ui_out_table) <body_flag>: Remove field.
      	<state>: New field.
      	(ui_out_table_begin): Replace usages of body_flag with state.
      	(ui_out_table_body): Likewise.
      	(ui_out_table_end): Likewise.
      	(ui_out_table_header): Likewise.
      	(ui_out_begin): Likewise.
      	(verify_field): Likewise.
      	(ui_out_new): Likewise.
      77a179e7
    • Simon Marchi's avatar
      Simplify ui-out level code · 33b2fac6
      Simon Marchi authored
      Now that we use a vector to store the levels, we don't have to keep a
      separate level field in ui_out to keep track of the current level.  We
      can efficiently derive it from the vector size.  That causes a little
      change in the meaning of the level, as in they are now 1-based instead
      of 0-based (the initial level has the "id" 1 now), but it shouldn't
      change anything in the behavior.
      
      Additionally, push_level and pop_level don't really need to return the
      new level, making them return void simplifies the code a bit.
      
      Finally, the ui_out_begin/ui_out_end callbacks in the ui_out_impl
      interface don't need to be passed the level, it's never actually used.
      
      New in v2:
      
       - Remove or update stale comments.
      
      gdb/ChangeLog:
      
      	* ui-out.h (ui_out_begin_ftype): Remove level parameter.
      	(ui_out_end_ftype): Likewise.
      	* ui-out.c (struct ui_out) <level>: Replace field with a method
      	that dynamically computes the result.
      	(current_level): Get vector's back item instead of using
      	uiout->level.
      	(push_level): Make return type void.
      	(pop_level): Make return type void and update access to
      	ui_out::level.
      	(uo_begin): Remove level parameter.
      	(uo_end): Likewise.
      	(ui_out_table_begin): Update access to uiout::level.
      	(ui_out_begin): Don't read return value from push_level, call
      	uiout->level() instead, update call to uo_begin.
      	(ui_out_end): Don't read return value from pop_level, update
      	call to uo_end.
      	(verify_field): Update access to uiout->level.
      	(ui_out_new): Don't initialize ui_out::level, call push_level
      	to push the initial level instead of doing it by hand.
      	* cli-out.c (cli_begin): Remove level parameter.
      	(cli_end): Likewise.
      	* mi/mi-out.c (mi_begin): Likewise.
      	(mi_end): Likewise.
      33b2fac6