Consolidate code for displaying per-command time and space statistics to avoid
duplication. Piggyback on cleanups so that statistics get printed even when
commands terminate as a result of an error.
Changelog
* gdb/defs.h (make_command_stats_cleanup): Declare.
(set_display_time): Declare.
(set_display_space): Declare.
* gdb/event-top.c (command_handler): Use make_command_stats_cleanup.
* gdb/main.c (display_time, display_space): Move definitions to utils.c.
(captured_main): Use make_command_stats_cleanup to get start-up
statistics.
Use set_display_time and set_display_space for processing OPT_STATISTICS
case.
* gdb/maint.c (maintenance_time_display): Use set_display_time.
(maintenance_space_display): Use set_display_space.
* gdb/top.c (execute_command): Remove obsolete 'maint time' code.
(command_loop): Use make_command_stats_cleanup.
* gdb/utils.c (struct cmd_stats): Structure for storing initial time
and space usage.
(display_time, display_space): Move definitions here from utils.c.
(set_display_time): New function.
(set_display_space): New function.
(make_command_stats_cleanup): New function.
(report_command_stats): New auxiliary function for
make_command_stats_cleanup.
* gdb/testsuite/gdb.gdb/selftest.exp: Adjust expected message for
capturing start-up runtime.
Test PR python/11407.
* gdb.dwarf2/dw2-ref-missing-frame-func.c: New file.
* gdb.dwarf2/dw2-ref-missing-frame.S: Use cu_text_start and cu_text_end.
Split main into func_nofb and func_loopfb dropping NO_FRAME_BASE.
* gdb.dwarf2/dw2-ref-missing-frame.exp: Remove variables sources,
executable_nofb and executable_fb. New variables srcsfile, objsfile,
srcfuncfile, objfuncfile, srcmainfile, objmainfile, executable and
binfile. Call gdb_compile with clean_restart twice.
(func_nofb print, func_nofb backtrace, func_loopfb print)
(func_loopfb backtrace): New.
* gdb.dwarf2/dw2-ref-missing-frame-main.c: New.
* gdb.dwarf2/dw2-ref-missing-frame.S: Replace compiler generated output
by a hand made one.
* gdb.dwarf2/dw2-ref-missing-frame.exp: Remove invalid comment. Remove
i?86 requirement. Remove variables srcfile and binfile. New variable
sources, executable_nofb and executable_fb. Call prepare_for_testing.
* dwarf2expr.h (struct dwarf_value_location): Use ULONGEST as type
of stack values.
(struct dwarf_expr_piece): Rename "expr" member to "mem". Add new
"value" member.
(dwarf_expr_push): Change input type to ULONGEST.
(dwarf_expr_fetch): Change return type to ULONGEST.
(dwarf_expr_fetch_address): Add prototype.
(dwarf2_read_address): Remove prototype.
* dwarf2expr.c (dwarf_expr_push): Use ULONGEST as type of stack values.
Truncate stack values to ctx->addr_size bytes.
(dwarf_expr_fetch): Change return value to ULONGEST.
(dwarf_expr_fetch_address): New function.
(add_piece): Use dwarf_expr_fetch_address instead of dwarf_expr_fetch
when appropriate. Update for struct dwarf_expr_piece changes.
(dwarf2_read_address): Remove.
(unsigned_address_type): Remove.
(signed_address_type): Remove.
(execute_stack_op): Use dwarf_expr_fetch_address instead of
dwarf_expr_fetch when appropriate. Use ULONGEST as type of stack
values. Perform operations on ULONGEST instead of on GDB values,
sign-extending from ctx->addr_size bytes as needed. Read DW_OP_addr
values and DW_OP_deref results as unsigned integers.
* dwarf2loc.c (read_pieced_value): Update for struct dwarf_expr_piece
changes.
(write_pieced_value): Likewise.
(dwarf2_evaluate_loc_desc): Use dwarf_expr_fetch_address instead of
dwarf_expr_fetch when appropriate.
(compile_dwarf_to_ax): Read DW_OP_addr values as unsigned integers.
* dwarf2-frame.c (execute_stack_op): Use dwarf_expr_fetch_address
instead of dwarf_expr_fetch when appropriate.
testsuite/ChangeLog:
* gdb.cell/dwarfaddr.exp: New file.
* gdb.cell/dwarfaddr.S: New file.
Python scripts to be used by GDB can be stored in that directory,
and will be automatically found by the interpreter when importing them.
This patch also sets up <gdb_pythondir>/gdb as the directory where gdb
submodules can be stored. For now, there is nothing there, but it can
now be added easily without further code changes.
gdb/ChangeLog:
2010-06-24 Joel Brobecker <brobecker@adacore.com>
* python/python.c (_initialize_python): Add new "constant"
PYTHONDIR in gdb module. Insert this path at the head of
sys.path. Set gdb.__path__ to gdb.PYTHONDIR + '/gdb' and
exec its __init__.py script if it exists in that directory.
* infrun.c (handle_inferior_event): Handle presence of single-step
breakpoints for TARGET_WAITKIND_FORKED and TARGET_WAITKIND_VFORKED.
Cancel single-step breakpoints for TARGET_WAITKIND_EXITED,
TARGET_WAITKIND_SIGNALED, and TARGET_WAITKIND_EXECD.
* breakpoint.c (detach_single_step_breakpoints): New function.
(detach_breakpoints): Call it.
(cancel_single_step_breakpoints): New function.
* breakpoint.h (cancel_single_step_breakpoints): Add prototype.
* spu-tdep.c (spu_memory_remove_breakpoint): New function.
(spu_gdbarch_init): Install it.
testsuite/ChangeLog:
* gdb.cell/fork.exp: New file.
* gdb.cell/fork.c: Likewise.
* gdb.cell/fork-spu.c: Likewise.
* i386-tdep.c (i386_record_lea_modrm): Change warning to query.
(i386_process_record): Ditto.
* record.c (record_memory_query): New variable.
(_initialize_record): New command "set record memory-query".
* record.h (record_memory_query): New extern.
2010-06-22 Hui Zhu <teawater@gmail.com>
* gdb.texinfo: (Process Record and Replay): Add documentation
for command "set record memory-query".
* i386-tdep.c (i386_displaced_step_copy_insn): New function.
(i386_syscall_p): Change type of lengthp to int.
(i386_displaced_step_fixup): Handle kernels that run one past a
syscall insn.
* i386-linux-tdep.c (i386_linux_init_abi): Use
i386_displaced_step_copy_insn instead of
simple_displaced_step_copy_insn.
* p-typeprint.c (pascal_type_print_base): Use TYPE_ERROR_NAME.
* m2-valprint.c (m2_val_print): Use TYPE_ERROR_NAME.
* gdbtypes.h (TYPE_ERROR_NAME): New macro.
* f-valprint.c (f_val_print): Use TYPE_ERROR_NAME.
* f-typeprint.c (f_type_print_base): Use TYPE_ERROR_NAME.
* dwarf2read.c (tag_type_to_type): Create a new error type on
failure.
* c-valprint.c (c_val_print): Use TYPE_ERROR_NAME.
* c-typeprint.c (c_type_print_base): Use TYPE_ERROR_NAME.
to base-address-selection entry base addresses. Read addresses
(and offsets) as signed/unsigned integers, depending on the
BFD's sign_extend_vma flag. Do not call dwarf2_read_address.
(loclist_describe_location): Likewise.
(disassemble_dwarf_expression): Read DW_OP_addr operand as
unsigned integer. Do not call dwarf2_read_address.
(locexpr_describe_location): Likewise for DW_OP_GNU_push_tls_address.
* gdb.texinfo: Relicense under GFDL version 1.3.
* annotate.texinfo: Relicense under GFDL version 1.3.
* gdbint.texinfo: Relicense under GFDL version 1.3.
* stabs.texinfo: Relicense under GFDL version 1.3.
* fdl.texi: Update to version 1.3.
Pedro Alves <pedro@codesourcery.com>
* linux-x86-low.c (always_true): Delete.
(EMIT_ASM, EMIT_ASM32): Use an uncondition asm jmp instead of
trying to fool the compiler with always_true.