platform/upstream/binutils.git
11 years agodaily update
Alan Modra [Sun, 2 Jun 2013 00:00:05 +0000 (00:00 +0000)]
daily update

11 years ago * gas/config/tc-avr.c: Change ISA for devices with USB support to
Denis Chertykov [Sat, 1 Jun 2013 07:14:44 +0000 (07:14 +0000)]
* gas/config/tc-avr.c: Change ISA for devices with USB support to
AVR_ISA_XMEGAU

* include/opcode/avr.h: Rename AVR_ISA_XCH to AVR_ISA_RMW. Remove
from AVR_ISA_XMEGA and add new AVR_ISA_XMEGAU

11 years agomerge from gcc
DJ Delorie [Sat, 1 Jun 2013 01:01:44 +0000 (01:01 +0000)]
merge from gcc

11 years agodaily update
Alan Modra [Sat, 1 Jun 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Sat, 1 Jun 2013 00:00:02 +0000 (00:00 +0000)]
*** empty log message ***

11 years ago * linux-x86-low.c (ps_get_thread_area): Properly extend address to
Doug Evans [Fri, 31 May 2013 19:14:33 +0000 (19:14 +0000)]
* linux-x86-low.c (ps_get_thread_area): Properly extend address to
64 bits in 64-cross-32 environment.

11 years agoDon't align text/data/bss sections for ELF
H.J. Lu [Fri, 31 May 2013 17:27:28 +0000 (17:27 +0000)]
Don't align text/data/bss sections for ELF

binutils/testsuite/

* binutils-all/i386/compressed-1b.d: Updated for text/data/bss
section alignment change.
* binutils-all/i386/compressed-1c.d: Likewise.
* binutils-all/x86-64/compressed-1b.d: Likewise.
* binutils-all/x86-64/compressed-1c.d: Likewise.

gas/

* config/tc-i386.c (md_begin): Don't align text/data/bss sections
for ELF.

gas/testsuite/

* gas/i386/size-3.d: Updated for text/data/bss section alignment
change.
* gas/i386/x86-64-size-1.d: Likewise.
* gas/i386/x86-64-unwind.d: Likewise.
* gas/i386/ilp32/x86-64-size-1.d: Likewise.
* gas/i386/ilp32/x86-64-size-5.d: Likewise.
* gas/i386/ilp32/x86-64-unwind.d: Likewise.

ld/testsuite/

* ld-i386/pr12718.d: Updated for text/data/bss section alignment
change.
* ld-i386/tlsbindesc.dd: Likewise.
* ld-i386/tlsbindesc.rd: Likewise.
* ld-i386/tlsnopic.dd: Likewise.
* ld-i386/tlspic.dd: Likewise.
* ld-x86-64/ilp32-4.d: Likewise.
* ld-x86-64/pr12718.d: Likewise.
* ld-x86-64/split-by-file.rd: Likewise.
* ld-x86-64/tlsbin.dd: Likewise.
* ld-x86-64/tlsbin.rd: Likewise.
* ld-x86-64/tlsbindesc.dd: Likewise.
* ld-x86-64/tlsbindesc.rd: Likewise.
* ld-x86-64/tlsdesc.dd: Likewise.
* ld-x86-64/tlsdesc.rd: Likewise.
* ld-x86-64/tlspic.dd: Likewise.
* ld-x86-64/tlspic.rd: Likewise.

11 years ago2013-05-31 Paul Brook <paul@codesourcery.com>
Catherine Moore [Fri, 31 May 2013 17:04:53 +0000 (17:04 +0000)]
2013-05-31  Paul Brook  <paul@codesourcery.com>

gas/
* config/tc-mips.c (s_ehword): New.

2013-05-31  Catherine Moore  <clm@codesourcery.com>

gas/testsuite/
* gas/mips/ehword.d: New.
* gas/mips/ehword.s: New.
* gas/mips/mips.exp: Run ehword test.

11 years agogdb/
Yao Qi [Fri, 31 May 2013 10:06:02 +0000 (10:06 +0000)]
gdb/
* tracepoint.c (all_tracepoint_actions_and_cleanup): Declare.
(encode_actions): Move code to ...
(all_tracepoint_actions_and_cleanup): ... here.  New.
(trace_dump_command): Likewise.

11 years ago*** empty log message ***
gdbadmin [Fri, 31 May 2013 00:00:32 +0000 (00:00 +0000)]
*** empty log message ***

11 years agodaily update
Alan Modra [Fri, 31 May 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago2013-05-30 Alexander Ivchenko <alexander.ivchenko@intel.com>
Cary Coutant [Thu, 30 May 2013 23:01:11 +0000 (23:01 +0000)]
2013-05-30  Alexander Ivchenko  <alexander.ivchenko@intel.com>
    Sriraman Tallam  <tmsriram@google.com>

* options.h (sort_section): New option.
* output.h (Input_section_sort_section_prefix_special_ordering_compare):
Rename from Input_section_sort_section_name_special_ordering_compare.
(Input_section_sort_section_name_compare): New struct.
* output.cc (Output_section::Input_section_sort_section_name_compare::
operator()): New function.
(Output_section::sort_attached_input_sections): Use new sort function
for .text if --sort-section=name is specified.
* layout.cc (Layout::make_output_section):
Add sorting by name when --sort-section=name is specified.
* testsuite/Makefile.am (text_section_grouping): Test option
--sort-section=name.
* testsuite/Makefile.in: Regenerate.
* testsuite/section_sorting_name.cc: New file.
* testsuite/section_sorting_name.sh: New file.

11 years ago2013-05-30 Paul Brook <paul@codesourcery.com>
Catherine Moore [Thu, 30 May 2013 20:27:21 +0000 (20:27 +0000)]
2013-05-30  Paul Brook  <paul@codesourcery.com>

bfd/
* bfd-in2.h: Regenerate.
* elf32-mips.c (elf_mips_eh_howto): New.
(bfd_elf32_bfd_reloc_type_lookup ): Support BFD_RELOC_MIPS_EH.
(bfd_elf32_bfd_reloc_name_lookup): Likewise.
(mips_elf32_rtype_to_howto): Support R_MIPS_EH.
* elf64-mips.c (elf_mips_eh_howto): New.
(bfd_elf64_bfd_reloc_type_lookup): Support BFD_RELOC_MIPS_EH.
(bfd_elf64_bfd_reloc_name_lookup): Likewise.
(mips_elf64_rtype_to_howto): Support R_MIPS_EH.
* libbfd.h: Regenerate.
* reloc.c (BFD_RELOC_MIPS_EH): New.

gas/
* config/tc-mips.c (md_apply_fix): Support BFD_RELOC_MIPS_EH.

include/elf
* mips.h (R_MIPS_EH): New.

11 years agomaintenance_expand_symtabs leaks a cleanup
Tom Tromey [Thu, 30 May 2013 17:44:54 +0000 (17:44 +0000)]
maintenance_expand_symtabs leaks a cleanup

It turns out that maintenance_expand_symtabs was missing a call to
do_cleanups.  I found this using the cleanup checker.

* symmisc.c (maintenance_expand_symtabs): Call do_cleanups.

11 years agofix up xml-support.c
Tom Tromey [Thu, 30 May 2013 17:41:38 +0000 (17:41 +0000)]
fix up xml-support.c

xml-support.c has a function that returns a cleanup via an out parameter.

This changes this function to be a normal cleanup constructor --
returning the cleanup directly and returning the other result via an
out parameter.

This is sort of a hack, but it lets the checker work here.

I also noticed that gdb_xml_create_parser_and_cleanup does not need to
be exported any more.

* xml-support.c (gdb_xml_create_parser_and_cleanup): Rename from
gdb_xml_create_parser_and_cleanup_1.  Return a cleanup.  Remove
'old_chain' argument.  Add 'parser_result' argument.
(gdb_xml_create_parser_and_cleanup): Remove old version.
(gdb_xml_parse_quick): Update.
(xml_process_xincludes): Update.
* xml-support.h (gdb_xml_create_parser_and_cleanup): Don't
declare.

11 years agofix compile_rx_or_error
Tom Tromey [Thu, 30 May 2013 17:39:34 +0000 (17:39 +0000)]
fix compile_rx_or_error

compile_rx_or_error looks like a constructor, but it can return NULL.
This patch changes it to remove the NULL return, making it work
like any other cleanup constructor.

This is a stylistic patch but I think it is also better for code to
follow the normal conventions.

* probe.c (collect_probes): Check arguments for NULL before
calling compile_rx_or_error.
* utils.c (compile_rx_or_error): Require 'rx' to be non-NULL.
Remove NULL return.

11 years agosome fixes to infrun.c
Tom Tromey [Thu, 30 May 2013 17:37:50 +0000 (17:37 +0000)]
some fixes to infrun.c

This fixes some of the problems in infrun.c that the checker reported.
I filed the remaining problems as bugs.

This patch is purely stylistic.

* infrun.c (adjust_pc_after_break): Introduce an outer null
cleanup.

11 years agofix mi-cmd-var.c
Tom Tromey [Thu, 30 May 2013 17:37:12 +0000 (17:37 +0000)]
fix mi-cmd-var.c

This is a stylistic change in mi-cmd-var.c that adds outer cleanups
where needed by the checker.

* mi/mi-cmd-var.c (varobj_update_one): Add an outer null cleanup.

11 years agofix cli-script.c
Tom Tromey [Thu, 30 May 2013 17:36:29 +0000 (17:36 +0000)]
fix cli-script.c

read_command_lines_1 had some (IMNSHO) spaghetti-ish code for cleanup
handling.  This makes the code much simpler to understand, by
introducing an outer cleanup.

This is another case where a stylistic change for the checker is also
nice for the reader.

* cli/cli-script.c (read_command_lines_1): Use a null cleanup
for 'old_chain'.  Do not check 'head' before processing
cleanups.

11 years agofix mi-cmd-stack.c
Tom Tromey [Thu, 30 May 2013 17:35:40 +0000 (17:35 +0000)]
fix mi-cmd-stack.c

mi-cmd-stack.d had a conditional cleanup, "cleanup_tuple" that
confused the checker.  However, there was no need for this, since it
was only used via do_cleanups at the end of the function, just before
another call to do_cleanups.

So, while this is a stylistic patch for the checker, I also consider
it a generic improvement for readers of the code.

* mi/mi-cmd-stack.c (list_arg_or_local): Remove
"cleanup_tuple".

11 years agofix dbxread.c
Tom Tromey [Thu, 30 May 2013 17:34:18 +0000 (17:34 +0000)]
fix dbxread.c

This is a stylistic change to make some code in dbxread.c analyzable
by the checker.

* dbxread.c (dbx_read_symtab): Declare 'back_to' in a more
inner scope.  Unconditionally call do_cleanups.

11 years agofix source.c
Tom Tromey [Thu, 30 May 2013 17:33:41 +0000 (17:33 +0000)]
fix source.c

find_and_open_source can leak a cleanup.

* source.c (find_and_open_source): Call do_cleanups.

11 years agofix linux-thread-db.c
Tom Tromey [Thu, 30 May 2013 17:31:48 +0000 (17:31 +0000)]
fix linux-thread-db.c

This is a stylistic change to make it so the checker can analyze a
function in linux-thread-db.c.

* linux-thread-db.c (thread_db_load_search): Unconditionally
call do_cleanups.

11 years agofix in solib-aix.c
Tom Tromey [Thu, 30 May 2013 17:31:00 +0000 (17:31 +0000)]
fix in solib-aix.c

solib_aix_bfd_open has an early "return" that doesn't run cleanups.
This fixes the problem by dropping the null_cleanup and using a later
cleanup as the master cleanup for the function.

* solib-aix.c (solib_aix_bfd_open): Don't use a null cleanup
for 'cleanup'; instead use a later one.

11 years agouse explicit returns to avoid checker confusion
Tom Tromey [Thu, 30 May 2013 17:30:03 +0000 (17:30 +0000)]
use explicit returns to avoid checker confusion

The checker does not understand the idiom

if (except.reason < 0) {
   do_cleanups (whatever);
   GDB_PY_HANDLE_EXCEPTION (except);
}

because it doesn't realize that the nested 'if' actually has the same
condition.

This fixes instances of this to be more explicit.

* python/py-breakpoint.c (bppy_get_commands): Use
explicit, unconditional return.
* python/py-frame.c (frapy_read_var): Likewise.
* python/python.c (gdbpy_decode_line): Likewise.

11 years agofix cp-namespace.c
Tom Tromey [Thu, 30 May 2013 17:29:06 +0000 (17:29 +0000)]
fix cp-namespace.c

cp_lookup_symbol_imports_or_template could return without
running cleanups.

* cp-namespace.c (cp_lookup_symbol_imports_or_template): Call
do_cleanups on all return paths.

11 years agofix top.c
Tom Tromey [Thu, 30 May 2013 17:27:44 +0000 (17:27 +0000)]
fix top.c

execute_command can leak a cleanup along one return path.

* top.c (execute_command): Discard 'cleanup_if_error' cleanups.

11 years agofix one bug in stabsread.c
Tom Tromey [Thu, 30 May 2013 17:25:15 +0000 (17:25 +0000)]
fix one bug in stabsread.c

Some code in stabsread.c can return without running cleanups.

* stabsread.c (read_struct_type): Call do_cleanups along
all return paths.

11 years ago * mips-linux-tdep.c: Adjust formatting throughout.
Maciej W. Rozycki [Thu, 30 May 2013 17:23:05 +0000 (17:23 +0000)]
* mips-linux-tdep.c: Adjust formatting throughout.

11 years agofix mipsread.c
Tom Tromey [Thu, 30 May 2013 17:21:51 +0000 (17:21 +0000)]
fix mipsread.c

Some code in mipsread.c could leak cleanups along some return paths.

* mipsread.c (read_alphacoff_dynamic_symtab): Call do_cleanups
along all return paths.

11 years agofix one bug in symfile.c
Tom Tromey [Thu, 30 May 2013 17:21:15 +0000 (17:21 +0000)]
fix one bug in symfile.c

find_separate_debug_file could leak a cleanup along some return paths.

* symfile.c (find_separate_debug_file): Call do_cleanups
along all return paths.

11 years agofix symtab.c
Tom Tromey [Thu, 30 May 2013 17:20:02 +0000 (17:20 +0000)]
fix symtab.c

search_symbols had some bad code resulting in a cleanup being both
discarded and run.

* symtab.c (search_symbols): Introduce a null cleanup for
'retval_chain'.

11 years agofix py-value.c
Tom Tromey [Thu, 30 May 2013 17:18:54 +0000 (17:18 +0000)]
fix py-value.c

Some code in py-value.c could exit a loop without running some
cleanups made in the loop.

* python/py-value.c (valpy_binop): Call do_cleanups before
exiting loop.

11 years agofix py-prettyprint.c
Tom Tromey [Thu, 30 May 2013 17:17:25 +0000 (17:17 +0000)]
fix py-prettyprint.c

print_children, in py-prettyprint.c, could call do_cleanups twice on
the same cleanup.

* python/py-prettyprint.c (print_children): Remove extra
do_cleanups call.

11 years agofix py-frame.c
Tom Tromey [Thu, 30 May 2013 17:16:05 +0000 (17:16 +0000)]
fix py-frame.c

A couple return paths in frapy_read_var were missing do_cleanups calls.

* python/py-frame.c (frapy_read_var): Call do_cleanups along
all return paths.

11 years agofix py-breakpoint.c
Tom Tromey [Thu, 30 May 2013 17:14:35 +0000 (17:14 +0000)]
fix py-breakpoint.c

One return path in bppy_get_commands was missing a do_cleanups call.

* python/py-breakpoint.c (bppy_get_commands): Call do_cleanups
along all return paths.

11 years agosimplify cli-logging.c for analysis
Tom Tromey [Thu, 30 May 2013 17:13:19 +0000 (17:13 +0000)]
simplify cli-logging.c for analysis

This is another stylistic patch.  It changes cli-logging.c to be
analyzable by the checker, again following the method of adding an
outer cleanup and unconditionally calling do_cleanups.

* cli/cli-logging.c (set_logging_redirect): Unconditionally
call do_cleanups.

11 years agofix varobj.c
Tom Tromey [Thu, 30 May 2013 17:11:38 +0000 (17:11 +0000)]
fix varobj.c

c_value_of_root is missing a call to do_cleanups at one return.
This fixes the problem by removing that return and letting control
fall through.

* varobj.c (c_value_of_root): Call do_cleanups along all
return paths.

11 years agomake a cleanup unconditionally in tracepoint.c
Tom Tromey [Thu, 30 May 2013 17:10:41 +0000 (17:10 +0000)]
make a cleanup unconditionally in tracepoint.c

This is another cosmetic patch.  It introduces an "outer" cleanup in
trace_dump_command and arranges to unconditionally call do_cleanups.
This lets the checker analyze the function.

* tracepoint.c (trace_dump_command): Unconditionally call
do_cleanups.

11 years agofix two buglets in breakpoint.c
Tom Tromey [Thu, 30 May 2013 17:09:02 +0000 (17:09 +0000)]
fix two buglets in breakpoint.c

First, output_thread_groups leaks a cleanup along one return path.

Second, parse_cmd_to_aexpr could return without running its cleanups,
if there was an exception in a TRY_CATCH.

* breakpoint.c (output_thread_groups, parse_cmd_to_aexpr): Call
do_cleanups earlier.

11 years agofix cleanup handling in macho_symfile_read
Tom Tromey [Thu, 30 May 2013 17:06:31 +0000 (17:06 +0000)]
fix cleanup handling in macho_symfile_read

macho_symfile_read leaks a cleanup by assigning to 'back_to' too late.

* machoread.c (macho_symfile_read): Assign first cleanup to
'back_to'.

11 years agofix cleanup handling in m32r_load
Tom Tromey [Thu, 30 May 2013 17:05:32 +0000 (17:05 +0000)]
fix cleanup handling in m32r_load

m32r_load is missing a call to do_cleanups along one return path.

* m32r-rom.c (m32r_load): Call do_cleanups at all returns.

11 years agofix list_available_thread_groups
Tom Tromey [Thu, 30 May 2013 17:04:47 +0000 (17:04 +0000)]
fix list_available_thread_groups

list_available_thread_groups, in mi-main.c, leaks a cleanup.
This changes it to call do_cleanups.

* mi/mi-main.c (list_available_thread_groups): Call do_cleanups.

11 years agocleanup fixes for inf-ptrace.c
Tom Tromey [Thu, 30 May 2013 17:04:03 +0000 (17:04 +0000)]
cleanup fixes for inf-ptrace.c

This is one of the stylistic patches.  The code here in inf-ptrace.c
is not incorrect, but it is in a style that the cleanup checker cannot
handle.  This patch changes it to a simpler style, following the usual
method of introducing an unconditional "outer" cleanup.

* inf-ptrace.c (inf_ptrace_create_inferior): Unconditionally
call discard_cleanups.
(inf_ptrace_attach): Likewise.

11 years agocleanup fixes for remote-mips.c
Tom Tromey [Thu, 30 May 2013 17:03:00 +0000 (17:03 +0000)]
cleanup fixes for remote-mips.c

remote-mips.c has a few 'return's where cleanups are not run.

* remote-mips.c (mips_exit_debug): Call do_cleanups on all
return paths.
(mips_initialize): Likewise.
(common_open): Call do_cleanups.

11 years agofix up cleanup handling in internal_vproblem
Tom Tromey [Thu, 30 May 2013 17:01:16 +0000 (17:01 +0000)]
fix up cleanup handling in internal_vproblem

internal_vproblem can return, so this introduces proper cleanup
handling there.  Otherwise it may make a cleanup that is leaked.

* utils.c (internal_vproblem): Call do_cleanups.

11 years agofix linespec bug noticed by the checker
Tom Tromey [Thu, 30 May 2013 16:57:38 +0000 (16:57 +0000)]
fix linespec bug noticed by the checker

This fixes a linespec bug noticed by the cleanup checker.

find_linespec_symbols did this:

  cleanup = demangle_for_lookup (name, state->language->la_language,
 &lookup_name);
[...]
      cleanup = make_cleanup (xfree, canon);

But this is wrong, as it makes a subsequent call to do_cleanups not
clean up all the local state.

* linespec.c (find_linespec_symbols): Don't reassign to 'cleanup'.

11 years agoremove erroneous return from setup_user_args
Tom Tromey [Thu, 30 May 2013 16:31:33 +0000 (16:31 +0000)]
remove erroneous return from setup_user_args

This fixes setup_user_args to drop a useless and confusing "return".

* cli/cli-script.c (setup_user_args): Don't return after error.

11 years agofix cleanups in som_symtab_read
Tom Tromey [Thu, 30 May 2013 16:28:29 +0000 (16:28 +0000)]
fix cleanups in som_symtab_read

This fixes som_symtab_read not to leak cleanups.

* somread.c (som_symtab_read): Call do_cleanups.

11 years agofix print_command_1
Tom Tromey [Thu, 30 May 2013 16:25:49 +0000 (16:25 +0000)]
fix print_command_1

This is a stylistic patch to make it so the checker can analyze
print_command_1.  This amounts to installing an outer cleanup and
unconditionally invoking it.

* printcmd.c (print_command_1): Unconditionally call do_cleanups.

11 years agosome cleanup checker fixes
Tom Tromey [Thu, 30 May 2013 16:24:36 +0000 (16:24 +0000)]
some cleanup checker fixes

Fix some bugs pointed out by the cleanup checker.  This one just fixes
some simple CLI reports, where CLI commands know that their caller
will do cleanups.  This an older style with few instances, so it is
simpler to fix them up than to teach the checker about it.

* cli/cli-cmds.c (cd_command, alias_command): Call do_cleanups.
* cli/cli-dump.c (restore_binary_file): Call do_cleanups.
* interps.c (interpreter_exec_cmd): Call do_cleanups.
* source.c (show_substitute_path_command): Call do_cleanups.
(unset_substitute_path_command, set_substitute_path_command):
Likewise.
* symfile.c (load_command): Call do_cleanups.

11 years agoadd the cleanup checker
Tom Tromey [Thu, 30 May 2013 16:22:06 +0000 (16:22 +0000)]
add the cleanup checker

This patch adds the cleanup checker.  This is a Python plugin for GCC
that checks some rules for cleanup handling.  In particular it tries
to notice when cleanups are left dangling at the end of a function.

It does this by applying a few simple rules.

First, it understands that a function whose return type is "struct
cleanup *" is a "cleanup constructor".  Such functions are expected to
return the first cleanup that they make.

Then, it has the notion of a "master cleanup".  The checker keeps a
stack of all cleanups made in a basic block.  The first element is
pushed on the stack is the master cleanup -- the one that must later
be passed to either do_cleanups or discard_cleanups.

It is not perfect -- some constructs confuse it.  So, part of this
series rewrites some code in gdb so that it is analyzable.  I'll note
these spots and you can decide whether or not this is a good idea.

This patch also changes gcc-with-excheck to give it options.  Now you
must use either -Xc (for the cleanup checker) or -Xx (for the
exception checker).

* contrib/cleanup_check.py: New file.
* contrib/gcc-with-excheck: Add option parsing.

11 years agowindows_delete_thread: Add missing space in cast expression
Joel Brobecker [Thu, 30 May 2013 13:52:31 +0000 (13:52 +0000)]
windows_delete_thread: Add missing space in cast expression

gdb/ChangeLog:

* windows-nat.c (windows_delete_thread): Add missing space
in cast expression.

11 years ago2013-05-30 Hafiz Abid Qadeer <abidh@codesourcery.com>
Hafiz Abid Qadeer [Thu, 30 May 2013 12:54:17 +0000 (12:54 +0000)]
2013-05-30  Hafiz Abid Qadeer  <abidh@codesourcery.com>

* inferior.c (top level): Include tilde.h.
(add_inferior_command): Call tilde_expand on the value of 'exec'
argument.

11 years agogdb/
Yao Qi [Thu, 30 May 2013 09:29:18 +0000 (09:29 +0000)]
gdb/
* tracepoint.c (encode_actions_1): Remove parameter 't'.
Caller update.
(encode_actions): Likewise.
* remote.c (remote_download_tracepoint): Caller update.
* tracepoint.h (encode_actions): Update declaration.

11 years agoFix build breakage with Python 2.4.
Pedro Alves [Thu, 30 May 2013 08:56:56 +0000 (08:56 +0000)]
Fix build breakage with Python 2.4.

With Python 2.4, we see this build failure:

./python/python-internal.h: In function 'gdb_Py_DECREF':
./python/python-internal.h:179: warning: dereferencing 'void *' pointer
./python/python-internal.h:179: error: request for member 'ob_refcnt' in something not a structure or union

Python 2.4 forgets to cast 'op' to PyObject pointer on the ob_refcnt
accesses:

  #define Py_DECREF(op)                                   \
          if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
              --(op)->ob_refcnt != 0)                     \
                  _Py_CHECK_REFCNT(op)                    \
          else                                            \
                  _Py_Dealloc((PyObject *)(op))

...

  #define _Py_CHECK_REFCNT(OP)                                    \
  {       if ((OP)->ob_refcnt < 0)                                \
                  _Py_NegativeRefcount(__FILE__, __LINE__,        \
                                       (PyObject *)(OP));         \
  }

Python 2.7:

  #define Py_DECREF(op)                                   \
      do {                                                \
          if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
          --((PyObject*)(op))->ob_refcnt != 0)            \
              _Py_CHECK_REFCNT(op)                        \
          else                                            \
          _Py_Dealloc((PyObject *)(op));                  \
      } while (0)

...

  #define _Py_CHECK_REFCNT(OP)                                    \
  {       if (((PyObject*)OP)->ob_refcnt < 0)                             \
                  _Py_NegativeRefcount(__FILE__, __LINE__,        \
                                       (PyObject *)(OP));         \
  }

gdb/
2013-05-30  Pedro Alves  <palves@redhat.com>

* python/python-internal.h (gdb_Py_DECREF): Cast OP to PyObject
pointer.

11 years agogdb/
Yao Qi [Thu, 30 May 2013 00:40:21 +0000 (00:40 +0000)]
gdb/

* remote.c (remote_check_symbols): Remove unused parameter
'objfile'.
Declaration update.
(remote_start_remote, remote_new_objfile): Caller update.

11 years agogdb/
Yao Qi [Thu, 30 May 2013 00:25:16 +0000 (00:25 +0000)]
gdb/
* mi/mi-cmds.c (mi_cmds): Define MI command
'-exec-arguments' by macro DEF_MI_CMD_CLI_1 instead of
DEF_MI_CMD_CLI.

gdb/testsuite/
* gdb.mi/mi-cmd-param-changed.exp (test_command_param_changed):
Add a test that no MI notification is emitted when executing
-exec-arguments.

11 years ago*** empty log message ***
gdbadmin [Thu, 30 May 2013 00:00:32 +0000 (00:00 +0000)]
*** empty log message ***

11 years agodaily update
Alan Modra [Thu, 30 May 2013 00:00:06 +0000 (00:00 +0000)]
daily update

11 years ago gas/
Maciej W. Rozycki [Wed, 29 May 2013 16:22:14 +0000 (16:22 +0000)]
gas/
* write.c (resolve_reloc_expr_symbols): On REL targets don't
convert relocs who have no relocatable field either.  Rephrase
the conditional so that the PC-relative check is only applied
for REL targets.

gas/testsuite/
* gas/mips/jalr3.d: New test.
* gas/mips/jalr3-n32.d: New test.
* gas/mips/jalr3-n64.d: New test.
* gas/mips/jalr3.s: New test source.
* gas/mips/mips.exp: Run the new tests.

ld/testsuite/
* ld-mips-elf/jalr3.dd: New test.
* ld-mips-elf/jalr3.ld: New test linker script.
* ld-mips-elf/mips-elf.exp: Run the new test.

11 years ago * dwarf2.c (struct dwarf2_debug): Add fields for handling
Nick Clifton [Wed, 29 May 2013 14:58:35 +0000 (14:58 +0000)]
* dwarf2.c (struct dwarf2_debug): Add fields for handling
alternate debug info source.
(dwarf_debug_sections): Add entries for alternate .debug_str and
.debug_info sections.
(dwarf_debug_section_enum): Likewise.
(read_alt_indirect_string): New function.  Handles a
DW_FORM_GNU_strp_alt attribute.
(read_alt_indirect_ref): New function.  Handles a
DW_FORM_GNU_ref_alt attribute.
(read_attribute_value): Process DW_FORM_GNU_ref_alt and
DW_FORM_GNU_strp_alt.
(find_abstract_instance_name): Handle DW_FORM_GNU_ref_alt
attributes.
(_bfd_dwarf2_cleanup_debug_info): Free alternate debug info
sources.
* opncls.c (GNU_DEBUGALTLINK): Define.
(bfd_get_alt_debug_link_info): New function.
(separate_alt_debug_file_exists): New function.
(find_separate_debug_file): Add parameters for fetch and check
functions.
(bfd_follow_gnu_debugaltlink): New function.
* bfd-in2.h: Regenerate.

11 years ago[remote] Insert breakpoints in the right process.
Pedro Alves [Wed, 29 May 2013 11:57:48 +0000 (11:57 +0000)]
[remote] Insert breakpoints in the right process.

I noticed that gdb.multi/multi-arch.exp wasn't passing with
extended-remote GDBserver with my pending multi-process+multi-arch
series anymore on current mainline, while it used to pass before:

 (gdb) run
 Starting program: /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.multi/ma-hangout
 Process /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.multi/ma-hangout created; pid = 32067
 Warning:
 Cannot insert breakpoint 2.
 Error accessing memory address 0x4005c2: Unknown error -1.
 Cannot insert breakpoint -1.
 Temporarily disabling shared library breakpoints:
 breakpoint #-1

 (gdb) FAIL: gdb.multi/multi-arch.exp: starting inferior 2

Investigating manually, I found an easy way to reproduce.  You just
need breakpoints on distinct inferiors, and a way to have GDB install
them in one go:

 (gdb) set breakpoint always-inserted on
 (gdb) info breakpoints
 Num     Type           Disp Enb Address            What
 2       breakpoint     del  n   <MULTIPLE>
 2.1                         y     0x00000000004005c2 in main at ../../../src/gdb/testsuite/gdb.multi/hello.c:40 inf 1
 2.2                         y     0x08048475         in main at ../../../src/gdb/testsuite/gdb.multi/hangout.c:22 inf 2
 (gdb) enable 2
 Warning:
 Cannot insert breakpoint 2.
 Error accessing memory address 0x4005c2: Unknown error -1.

And turning on remote debugging, we see:

 (gdb) set debug remote 1
 (gdb) disable 2
 (gdb) enable 2
 Sending packet: $Z0,4005c2,1#71...Packet received: E01
 Sending packet: $Z0,8048475,1#87...Packet received: OK
 Warning:
 Cannot insert breakpoint 2.
 Error accessing memory address 0x4005c2: Unknown error -1.

Notice that each of those Z0 breakpoints should be set in different
processes.  However, no Hg packet to select a process has been sent in
between, so GDBserver tries to plant both on the same process that
happens to be current.  The first Z0 then not so surprisingly fails.
IOW, the blame is on GDB, for telling GDBserver to plant both
breakpoints in the same process.

remote.c has a lazy scheme where it keeps a local cache of the
remote's selected general thread, and delays updating it on the remote
side until necessary (memory/register reads/writes, etc.).  This is
done to reduce RSP traffic.  The bug is that the Zx breakpoint
insert/remove methods weren't committing the selected thread/process
back to the remote side:

 Breakpoint 3, remote_insert_breakpoint (gdbarch=0x1383ae0, bp_tgt=0x140c2b0) at ../../src/gdb/remote.c:8148
 8148      if (remote_protocol_packets[PACKET_Z0].support != PACKET_DISABLE)
 (top-gdb) p inferior_ptid
 $3 = {pid = 3670, lwp = 0, tid = 3670}
 (top-gdb) p general_thread
 $4 = {pid = 3671, lwp = 0, tid = 3671}

IOW, a call to set_general_process is missing.

I did some auditing over remote.c, and added calls to all places I
found missing it.

This only used to work by chance before.  breakpoint.c switches to a
thread of the target process before installing a breakpoint location.
That calls switch_to_thread.  Before:

 2012-07-27  Yao Qi  <yao@codesourcery.com>

         * thread.c (switch_to_thread): Don't call registers_changed.

that caused the register caches to all be flushed and refetched before
installing the breakpoint location.  Given fetching registers commits
the remote general thread (with Hg), masking out the latent bug.

Tested on x86_64 Fedora 17 with GDBserver.

gdb/
2013-05-29  Pedro Alves  <palves@redhat.com>

* remote.c (remote_insert_breakpoint, remote_remove_breakpoint)
(remote_insert_watchpoint, remote_remove_watchpoint)
(remote_insert_hw_breakpoint, remote_remove_hw_breakpoint)
(remote_verify_memory, compare_sections_command)
(remote_search_memory): Set the general process/thread on the
remote side.

11 years ago[AArch64] Remove all traces of aarch64-without-fpu.xml.
Pedro Alves [Wed, 29 May 2013 09:18:48 +0000 (09:18 +0000)]
[AArch64] Remove all traces of aarch64-without-fpu.xml.

The aarch64-without-fpu description is unused.

Linux requires an FPU, so the AArch64 native port always returns the
with-fpu variant:

static const struct target_desc *
aarch64_linux_read_description (struct target_ops *ops)
{
  initialize_tdesc_aarch64 ();
  return tdesc_aarch64;
}

When the target doesn't report a target description at all, we
fallback to a register set with an FPU:

aarch64_gdbarch_init ()
...
  if (!tdesc_has_registers (tdesc))
    tdesc = tdesc_aarch64;

This just removes the dead description.

Tested by building on x86_64 Fedora 17 with --enable=targets=all.

gdb/
2013-05-29  Pedro Alves  <palves@redhat.com>

* aarch64-tdep.c: Don't include "features/aarch64-without-fpu.c".
(_initialize_aarch64_tdep): Don't call
initialize_tdesc_aarch64_without_fpu.
* features/Makefile (WHICH): Remove reference to
aarch64-without-fpu.
* features/aarch64-without-fpu.c: Delete file.
* regformats/aarch64-without-fpu.dat: Delete file.

11 years agobinutils/
Cary Coutant [Wed, 29 May 2013 00:39:34 +0000 (00:39 +0000)]
binutils/
* dwarf.c (display_debug_lines_raw): Print section offsets.

binutils/testsuite/
* binutils-all/dw2-1.W: Adjust expected output.
* binutils-all/objdump.W: Likewise.
* binutils-all/i386/compressed-1a.d: Likewise.
* binutils-all/x86-64/compressed-1a.d: Likewise.

gas/testsuite/
* gas/cris/rd-dw2-1.d: Adjust expected output.
* gas/cris/rd-dw2-10.d: Likewise.
* gas/cris/rd-dw2-11.d: Likewise.
* gas/cris/rd-dw2-12.d: Likewise.
* gas/cris/rd-dw2-13.d: Likewise.
* gas/cris/rd-dw2-14.d: Likewise.
* gas/cris/rd-dw2-15.d: Likewise.
* gas/cris/rd-dw2-2.d: Likewise.
* gas/cris/rd-dw2-3.d: Likewise.
* gas/cris/rd-dw2-4.d: Likewise.
* gas/cris/rd-dw2-5.d: Likewise.
* gas/cris/rd-dw2-6.d: Likewise.
* gas/cris/rd-dw2-7.d: Likewise.
* gas/cris/rd-dw2-8.d: Likewise.
* gas/cris/rd-dw2-9.d: Likewise.
* gas/elf/dwarf2-1.d: Likewise.
* gas/elf/dwarf2-2.d: Likewise.
* gas/elf/dwarf2-3.d: Likewise.
* gas/i386/debug1.d: Likewise.
* gas/i386/dw2-compress-1.d: Likewise.
* gas/i386/ilp32/lns/lns-common-1.d: Likewise.
* gas/i386/ilp32/lns/lns-duplicate.d: Likewise.
* gas/ia64/pr13167.d: Likewise.
* gas/lns/lns-big-delta.d: Likewise.
* gas/lns/lns-common-1-alt.d: Likewise.
* gas/lns/lns-common-1.d: Likewise.
* gas/lns/lns-duplicate.d: Likewise.
* gas/mips/loc-swap-2.d: Likewise.
* gas/mips/loc-swap.d: Likewise.
* gas/mips/micromips@loc-swap-2.d: Likewise.
* gas/mips/micromips@loc-swap.d: Likewise.
* gas/mips/mips16-dwarf2-n32.d: Likewise.
* gas/mips/mips16-dwarf2.d: Likewise.
* gas/mips/mips16@loc-swap-2.d: Likewise.
* gas/mips/mips16@loc-swap.d: Likewise.

11 years agodaily update
Alan Modra [Wed, 29 May 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Wed, 29 May 2013 00:00:02 +0000 (00:00 +0000)]
*** empty log message ***

11 years ago gas/
Maciej W. Rozycki [Tue, 28 May 2013 22:19:34 +0000 (22:19 +0000)]
gas/
* config/tc-mips.c (macro) <ld>: Don't use $zero for address
calculation.

gas/testsuite/
* gas/mips/ld-zero.d: New test.
* gas/mips/ld-zero-2.d: New test.
* gas/mips/ld-zero-3.d: New test.
* gas/mips/ld-zero-q.d: New test.
* gas/mips/ld-zero-u.d: New test.
* gas/mips/ecoff@ld-zero-3.d: New test.
* gas/mips/micromips@ld-zero-2.d: New test.
* gas/mips/micromips@ld-zero-3.d: New test.
* gas/mips/ld-zero.s: New test source.
* gas/mips/ld-zero-2.s: New test source.
* gas/mips/ld-zero-3.s: New test source.
* gas/mips/ld-zero-q.s: New test source.
* gas/mips/ld-zero-u.s: New test source.
* gas/mips/mips.exp: Run the new tests.

11 years agoCorrect the relocation names for R_AARCH64_TLSDESC_LD_PREL19 and R_AARCH64_TLSDESC_AD...
Yufeng Zhang [Tue, 28 May 2013 16:39:51 +0000 (16:39 +0000)]
Correct the relocation names for R_AARCH64_TLSDESC_LD_PREL19 and R_AARCH64_TLSDESC_ADR_PAGE21.

11 years agogas/
Kyrylo Tkachov [Tue, 28 May 2013 14:58:52 +0000 (14:58 +0000)]
gas/
2013-05-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* config/tc-arm.c (it_fsm_post_encode): Improve
warning messages about deprecated IT block formats.

gas/testsuite
2013-05-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* gas/arm/armv8-a-bad.l: Update expected warning message.
* gas/arm/armv8-a-it-bad.l: Likewise.

11 years ago[GDBserver][AArch64] Remove references to aarch64-without-fpu.xml.
Pedro Alves [Tue, 28 May 2013 10:41:17 +0000 (10:41 +0000)]
[GDBserver][AArch64] Remove references to aarch64-without-fpu.xml.

The GDBserver Aarch64 port includes the aarch64-without-fpu
description in the build, but doesn't actually use it anywhere.  As
Linux always requires an FPU, just remove the dead code.

gdb/gdbserver/
2013-05-28  Pedro Alves  <palves@redhat.com>

* Makefile.in (clean): Remove reference to aarch64-without-fpu.c.
(aarch64-without-fpu.c): Delete rule.
* configure.srv (aarch64*-*-linux*): Remove references to
aarch64-without-fpu.o and aarch64-without-fpu.xml.
* linux-aarch64-low.c (init_registers_aarch64_without_fpu): Remove
declaration.

11 years ago[AArch64] Range check only resolved relocations.
Marcus Shawcroft [Tue, 28 May 2013 09:43:42 +0000 (09:43 +0000)]
[AArch64] Range check only resolved relocations.

2013-05-28  Marcus Shawcroft  <marcus.shawcroft@arm.com>

        * config/tc-aarch64.c (md_apply_fix): Move value range checking
        inside fx_done condition.

2013-05-28  Marcus Shawcroft  <marcus.shawcroft@arm.com>

        * gas/aarch64/adr_1.d: New file.
        * gas/aarch64/adr_1.s: New file.
        * gas/aarch64/b_1.d: New file.
        * gas/aarch64/b_1.s: New file.
        * gas/aarch64/beq_1.d: New file.
        * gas/aarch64/beq_1.s: New file.
        * gas/aarch64/ldr_1.d: New file.
        * gas/aarch64/ldr_1.s: New file.
        * gas/aarch64/tbz_1.d: New file.
        * gas/aarch64/tbz_1.s: New file.

11 years agogdb/
Yao Qi [Tue, 28 May 2013 02:55:04 +0000 (02:55 +0000)]
gdb/
* tracepoint.c (stringify_collection_list): Remove parameter
'string'.
(encode_actions): Caller update.  Remove local variables.

11 years agodaily update
Alan Modra [Tue, 28 May 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Tue, 28 May 2013 00:00:02 +0000 (00:00 +0000)]
*** empty log message ***

11 years agobfd: Make bfd_cache_max_open depend on actual open file limit.
Mark Wielaard [Mon, 27 May 2013 07:55:17 +0000 (07:55 +0000)]
bfd: Make bfd_cache_max_open depend on actual open file limit.

The current hard coded limit of open files in bfd/cache.c is 10. This
is pretty low these days. Binaries are often linked against much more
than 10 files (and sometimes against more than 100 shared libraries).
When debugging with GDB some files are opened and closed multiple
times because of this low limit. If possible make the BFD cache file
limit depend on the actual open file limit of the process so more BFD
files can be open at the same time.

    * cache.c (BFD_CACHE_MAX_OPEN): Remove define.
    (max_open_files): New static int initialized to zero.
    (bfd_cache_max_open): New static function to set and return
    max_open_files.
    (bfd_cache_init): Use bfd_cache_max_open.
    (bfd_open_file): Likewise.
    * configure.in (AC_CHECK_HEADERS): Add sys/resource.h.
    (AC_CHECK_FUNCS): Add getrlimit.
    * configure: Regenerated.
    * config.in: Likewise.
    * sysdep.h: Check and include sys/resource.h for getrlimit.

11 years agodaily update
Alan Modra [Mon, 27 May 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Mon, 27 May 2013 00:00:03 +0000 (00:00 +0000)]
*** empty log message ***

11 years agodaily update
Alan Modra [Sun, 26 May 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Sun, 26 May 2013 00:00:02 +0000 (00:00 +0000)]
*** empty log message ***

11 years agodaily update
Alan Modra [Sat, 25 May 2013 00:00:04 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Sat, 25 May 2013 00:00:03 +0000 (00:00 +0000)]
*** empty log message ***

11 years agoopcodes/
Richard Sandiford [Fri, 24 May 2013 17:13:49 +0000 (17:13 +0000)]
opcodes/
* s390-opc.txt (flogr): Require a register pair destination.

gas/testsuite/
* gas/s390/zarch-z9-109-err.s, gas/s390/zarch-z9-109-err.l: New test.
* gas/s390/s390.exp: Run it.

11 years agogdb/testsuite/
Jan Kratochvil [Fri, 24 May 2013 15:37:25 +0000 (15:37 +0000)]
gdb/testsuite/
PR testsuite/12649
* gdb.mi/mi-dprintf.exp (mi_continue_dprintf) (mi 2nd dprintf): Replace
$mi_gdb_prompt expectation by mi_expect_stop.
(mi 1st dprintf, agent, mi 2nd dprintf, agent)
(mi info dprintf second time): Replace them by mi_send_resuming_command
and mi_expect_stop.

11 years ago2013-05-24 Gary Benson <gbenson@redhat.com>
Gary Benson [Fri, 24 May 2013 14:02:35 +0000 (14:02 +0000)]
2013-05-24  Gary Benson  <gbenson@redhat.com>

* gdb.base/solib-disc.exp (exec_opts): Remove unnecesary
backslash.
* gdb.base/unload.exp (exec_opts): Remove two unnecessary
backslashes.
* gdb.base/watchpoint-solib.exp (exec_opts): Remove unnecesary
backslash.

11 years agogdb/
Yao Qi [Fri, 24 May 2013 12:27:39 +0000 (12:27 +0000)]
gdb/

* tracepoint.c (TFILE_PID): Remove.
(tfile_open): Don't add thread and inferior.
(tfile_close): Don't set 'inferior_ptid'.  Don't call
exit_inferior_silent.
(tfile_thread_alive): Remove.
(init_tfile_ops): Don't set field 'to_thread_alive' of
tfile_ops.

gdb/testsuite/

* gdb.trace/tfile.exp: Test inferior and thread.

11 years ago[gdbserver] Don't assume vCont;r ADDR1,ADDR2 comes with a ptid attached.
Pedro Alves [Fri, 24 May 2013 11:28:06 +0000 (11:28 +0000)]
[gdbserver] Don't assume vCont;r ADDR1,ADDR2 comes with a ptid attached.

This bit:

+   p1 = strchr (p, ':');
+   decode_address (&resume_info[i].step_range_end, p, p1 - p);

should not expect the ':' to be there.  An action without a ptid is
valid:

 "If an action is specified with no thread-id, then it is applied to any
 threads that don't have a specific action specified"

This is handled further below:

      if (p[0] == 0)
{
  resume_info[i].thread = minus_one_ptid;
  default_action = resume_info[i];

  /* Note: we don't increment i here, we'll overwrite this entry
     the next time through.  */
}
      else if (p[0] == ':')

A stub that doesn't support and report to gdb thread ids at all (like
metal metal targets) only will always only see a single default action
with no ptid.

Use unpack_varlen_hex instead of decode_address.  The former doesn't
need to be told where the hex number ends, and it actually returns
that info instead, which we can use for validation.

Tested on x86_64 Fedora 17.

gdb/gdbserver/
2013-05-24  Pedro Alves  <palves@redhat.com>

* server.c (handle_v_cont) <vCont;r>: Use unpack_varlen_hex
instead of strchr/decode_address.  Error if the range isn't split
with a ','.  Don't assume there's be a ':' in the action.

11 years agogdb/testsuite/
Yao Qi [Fri, 24 May 2013 09:57:12 +0000 (09:57 +0000)]
gdb/testsuite/

* gdb.base/range-stepping.exp: Skip the rest of tests if the
test fails.
* lib/range-stepping-support.exp (exec_cmd_expect_vCont_count):
Return 0 if the test passes, otherwise return 1.

11 years agoFix gdb.info build failure
Joel Brobecker [Fri, 24 May 2013 04:50:26 +0000 (04:50 +0000)]
Fix gdb.info build failure

    gdb.texinfo:36367: `Installed System-wide Configuration Scripts' has no Up field (perhaps incorrect sectioning?).
    gdb.texinfo:36367: warning: unreferenced node `Installed System-wide Configuration Scripts'.

gdb/doc/ChangeLog:

        * gdb.texinfo (System-wide Configuration Scripts): Renames
        "Installed System-wide Configuration Scripts". Add associated
        @menu block.

11 years agoUpdate to load fission.exp.
Doug Evans [Fri, 24 May 2013 01:33:50 +0000 (01:33 +0000)]
Update to load fission.exp.

11 years ago * boards/fission-dwp.exp: New file.
Doug Evans [Fri, 24 May 2013 01:30:05 +0000 (01:30 +0000)]
* boards/fission-dwp.exp: New file.

11 years ago * contrib/cc-with-tweaks.sh (-p): Handle no dwo files.
Doug Evans [Fri, 24 May 2013 00:30:24 +0000 (00:30 +0000)]
* contrib/cc-with-tweaks.sh (-p): Handle no dwo files.

11 years ago * aarch64.c (aarch64_find_call): Promote to bfd_vma before sign
Alan Modra [Fri, 24 May 2013 00:28:06 +0000 (00:28 +0000)]
* aarch64.c (aarch64_find_call): Promote to bfd_vma before sign
extending.

11 years agodaily update
Alan Modra [Fri, 24 May 2013 00:00:05 +0000 (00:00 +0000)]
daily update

11 years ago*** empty log message ***
gdbadmin [Fri, 24 May 2013 00:00:02 +0000 (00:00 +0000)]
*** empty log message ***

11 years agocommon/filestuff.c: No sockets on DJGPP.
Pedro Alves [Thu, 23 May 2013 18:37:00 +0000 (18:37 +0000)]
common/filestuff.c: No sockets on DJGPP.

Building gdb with --host=i586-pc-msdosdjgpp ends up with:

 i586-pc-msdosdjgpp-gcc -g -O2 -I../../src/gdb/config/djgpp  -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber -I./../intl -I../../src/gdb/gnulib/import -Ibuild-gnulib/import    -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -Werror -c -o filestuff.o -MT filestuff.o -MMD -MP -MF .deps/filestuff.Tpo ../../src/gdb/common/filestuff.c
 ../../src/gdb/common/filestuff.c:38:24: fatal error: sys/socket.h: No such file or directory

There are no sockets on djgpp.  This #ifdef's out the bits in the file
that use sockets, depending on whether winsock or sys/socket.h is
available.

As alternative approach, given ser-tcp.c, ser-pipe.c, etc. are split
into separate files, and which to use is selected by configure.ac:

 dnl Figure out which of the many generic ser-*.c files the _host_ supports.
 SER_HARDWIRE="ser-base.o ser-unix.o ser-pipe.o ser-tcp.o"
 case ${host} in
  *go32* ) SER_HARDWIRE=ser-go32.o ;;
  *djgpp* ) SER_HARDWIRE=ser-go32.o ;;
  *mingw32*) SER_HARDWIRE="ser-base.o ser-tcp.o ser-mingw.o" ;;
 esac
 AC_SUBST(SER_HARDWIRE)

... I considered splitting filestuff.c similarly.  But I quickly gave
up on the idea, as it looked like a lot more complication over this
approach, for no real gain.  Plus, there are uses of these functions
outside the ser*.c framework.

gdbserver's configure.ac is already checking for sys/socket.h.

gdb/
2013-05-23  Pedro Alves  <palves@redhat.com>

* common/filestuff.c [USE_WIN32API]: Define HAVE_SOCKETS.
[HAVE_SYS_SOCKET_H]: Define HAVE_SOCKETS.
(socket_mark_cloexec, gdb_socketpair_cloexec, gdb_socket_cloexec):
Only define if HAVE_SOCKETS is defined.
* configure.ac: Check for sys/socket.h.
* config.in, configure: Regenerate.

11 years agodwarf2read.c: Don't assume uint32_t is unsigned int on all hosts.
Pedro Alves [Thu, 23 May 2013 18:31:29 +0000 (18:31 +0000)]
dwarf2read.c: Don't assume uint32_t is unsigned int on all hosts.

Building gdb on GNU/Linux, for --host=i586-pc-msdosdjgpp, I get:

 ../../src/gdb/dwarf2read.c: In function 'create_dwp_hash_table':
 ../../src/gdb/dwarf2read.c:8626:7: error: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'uint32_t' [-Werror=format]
 ../../src/gdb/dwarf2read.c:8632:7: error: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'uint32_t' [-Werror=format]
 ../../src/gdb/dwarf2read.c: In function 'create_dwo_in_dwp':
 ../../src/gdb/dwarf2read.c:8754:6: error: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'uint32_t' [-Werror=format]
 ../../src/gdb/dwarf2read.c: In function 'open_and_init_dwp_file':
 ../../src/gdb/dwarf2read.c:9248:6: error: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Werror=format]
 ../../src/gdb/dwarf2read.c:9248:6: error: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Werror=format]

And:

 $ grep uint32_t /usr/i586-pc-msdosdjgpp/sys-include/*
 /usr/i586-pc-msdosdjgpp/sys-include/stdint.h:typedef unsigned long uint32_t;

As decided on the discussion at
<http://sourceware.org/ml/gdb-patches/2013-05/msg00788.html>, use
pulongest rather than PRIu32.

Tested on F17.  Also confirmed GDB still builds OK with
--host=i686-w64-mingw32.

gdb/
2013-05-23  Pedro Alves  <palves@redhat.com>

* dwarf2read.c (create_dwp_hash_table, create_dwo_in_dwp)
(open_and_init_dwp_file): Use %s/pulongest instead of %u for
printing uint32_t variables.

11 years agorange stepping: tests
Pedro Alves [Thu, 23 May 2013 17:19:05 +0000 (17:19 +0000)]
range stepping: tests

This adds tests to verify range stepping is used as expected, by
inspecting the RSP traffic, looking for vCont;s and vCont;r packets.

gdb/testsuite/
2013-05-23  Yao Qi  <yao@codesourcery.com>
    Pedro Alves  <palves@redhat.com>

* gdb.base/range-stepping.c: New file.
* gdb.base/range-stepping.exp: New file.
* gdb.trace/range-stepping.c: New file.
* gdb.trace/range-stepping.exp: New file.
* lib/range-stepping-support.exp: New file.

11 years agorange stepping: gdbserver (x86 GNU/Linux)
Pedro Alves [Thu, 23 May 2013 17:17:50 +0000 (17:17 +0000)]
range stepping: gdbserver (x86 GNU/Linux)

This patch adds support for range stepping to GDBserver, teaching it
about vCont;r.

It'd be easy to enable this for all hardware single-step targets
without needing the linux_target_ops hook, however, at least PPC needs
special care, due to the fact that PPC atomic sequences can't be
hardware single-stepped through, a thing which GDBserver doesn't know
about.  So this leaves the support limited to x86/x86_64.

gdb/
2013-05-23  Pedro Alves  <palves@redhat.com>

* NEWS: Mention GDBserver range stepping support.

gdb/gdbserver/
2013-05-23  Yao Qi  <yao@codesourcery.com>
    Pedro Alves  <palves@redhat.com>

* linux-low.c (lwp_in_step_range): New function.
(linux_wait_1): If the thread was range stepping and stopped
outside the stepping range, report the stop to GDB.  Otherwise,
continue stepping.  Add range stepping debug output.
(linux_set_resume_request): Copy the step range from the resume
request to the lwp.
(linux_supports_range_stepping): New.
(linux_target_ops) <supports_range_stepping>: Set to
linux_supports_range_stepping.
* linux-low.h (struct linux_target_ops)
<supports_range_stepping>: New field.
(struct lwp_info) <step_range_start, step_range_end>: New fields.
* linux-x86-low.c (x86_supports_range_stepping): New.
(the_low_target) <supports_range_stepping>: Set to
x86_supports_range_stepping.
* server.c (handle_v_cont): Handle 'r' action.
(handle_v_requests): Append ";r" if the target supports range
stepping.
* target.h (struct thread_resume) <step_range_start,
step_range_end>: New fields.
(struct target_ops) <supports_range_stepping>:
New field.
(target_supports_range_stepping): New macro.

11 years agorange stepping: gdb
Pedro Alves [Thu, 23 May 2013 17:15:35 +0000 (17:15 +0000)]
range stepping: gdb

This patch teaches GDB to take advantage of target-assisted range
stepping.  It adds a new 'r ADDR1,ADDR2' action to vCont (vCont;r),
meaning, "step once, and keep stepping as long as the thread is in the
[ADDR1,ADDR2) range".

Rationale:

When user issues the "step" command on the following line of source,

   a = b + c + d * e - a;

GDB single-steps every single instruction until the program reaches a
new different line.  E.g., on x86_64, that line compiles to:

   0x08048434 <+65>:    mov    0x1c(%esp),%eax
   0x08048438 <+69>:    mov    0x30(%esp),%edx
   0x0804843c <+73>:    add    %eax,%edx
   0x0804843e <+75>:    mov    0x18(%esp),%eax
   0x08048442 <+79>:    imul   0x2c(%esp),%eax
   0x08048447 <+84>:    add    %edx,%eax
   0x08048449 <+86>:    sub    0x34(%esp),%eax
   0x0804844d <+90>:    mov    %eax,0x34(%esp)
   0x08048451 <+94>:    mov    0x1c(%esp),%eax

and the following is the RSP traffic between GDB and GDBserver:

 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:3c840408;thread:p2e13.2e13;core:1;
 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:3e840408;thread:p2e13.2e13;core:2;
 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:42840408;thread:p2e13.2e13;core:2;
 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:47840408;thread:p2e13.2e13;core:0;
 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:49840408;thread:p2e13.2e13;core:0;
 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:4d840408;thread:p2e13.2e13;core:0;
 --> vCont;s:p2e13.2e13;c
 <-- T0505:68efffbf;04:30efffbf;08:51840408;thread:p2e13.2e13;core:0;

IOW, a lot of roundtrips between GDB and GDBserver.

If we add a new command to the RSP, meaning "keep stepping and don't
report a stop until the program goes out of the [0x08048434,
0x08048451) address range", then the RSP traffic can be reduced down
to:

 --> vCont;r8048434,8048451:p2db0.2db0;c
 <-- T0505:68efffbf;04:30efffbf;08:51840408;thread:p2db0.2db0;core:1;

As number of packets is reduced dramatically, the performance of
stepping source lines is much improved.

In case something is wrong with range stepping on the stub side, the
debug info or even gdb, this adds a "set/show range-stepping" command
to be able to turn range stepping off.

gdb/
2013-05-23  Yao Qi  <yao@codesourcery.com>
    Pedro Alves  <palves@redhat.com>

* gdbthread.h (struct thread_control_state) <may_range_step>: New
field.
* infcmd.c (step_once, until_next_command): Enable range stepping.
* infrun.c (displaced_step_prepare): Disable range stepping.
(resume): Disable range stepping if stepping over a breakpoint or
we have software watchpoints.  If range stepping is enabled,
assert the thread is in the stepping range.
(clear_proceed_status_thread): Clear may_range_step.
(handle_inferior_event): Disable range stepping as soon as we know
the thread that hit the event.  Re-enable it whenever we're going
to step with a step range.
* remote.c (struct vCont_action_support) <r>: New field.
(use_range_stepping): New global.
(remote_vcont_probe): Handle 'r' action.
(append_resumption): Append an 'r' action if the thread may range
step.
(show_range_stepping): New function.
(set_range_stepping): New function.
(_initialize_remote): Call add_setshow_boolean_cmd to register the
'set range-stepping' and 'show range-stepping' commands.
* NEWS: Mention range stepping, the new vCont;r action, and the
new "set/show range-stepping" commands.

gdb/doc/
2013-05-23  Yao Qi  <yao@codesourcery.com>
    Pedro Alves  <palves@redhat.com>

* gdb.texinfo (Packets): Document 'vCont;r'.
(Continuing and Stepping): Document target-assisted range
stepping, and the 'set range-stepping' and 'show range-stepping'
commands.