* solib.c (solib_contains_address_p): New function.
(solib_name_from_address): Use it.
* printcmd.c (display_uses_solib_p): Use it.
* solib.h (solib_contains_address_p): Declare it.
* dwarf2read.c (dwarf_decode_macros): New variable `at_commandline'.
Move the variable `macinfo_type' out of the loop. Create a new
processing pass before the current one to pre-create `current_file'.
New complaint on misplaced zero/non-zero definitions/includes.
Skip first DW_MACINFO_start_file with `at_commandline' set.
* printcmd.c (do_one_display): Reparse exp_string.
(display_uses_solib_p): New function.
(clear_dangling_display_expressions): New function.
(_initialize_printcmd): Add observer.
* solib.c (no_shared_libraries): Swap order of calls to
clear_solib and objfile_purge_solibs.
to find the underlying target.
* dec-thread.c (base_target): Delete.
(enable_dec_thread): Remove assignement to base_target.
(dec_thread_detach, dec_thread_wait, dec_thread_wait)
(dec_thread_fetch_registers, dec_thread_store_registers)
(dec_thread_mourn_inferior, dec_thread_pid_to_str):
Update the function profile if necessary.
Use find_target_beneath to call the same method but from
the underlying target, removing the need for "base_target".
* dec-thread.c (dec_thread_get_regsets, dec_thread_set_regsets):
Fix a copy/paste error in a few debug traces...
* solib-osf.c (init_so): Use a simpler method for computing
the size of lm_info structure. This also gets rid of warning
emitted by the compiler.
* infcmd.c (notice_new_inferior): New.
* remote.c (remote_add_inferior, remote_add_thread): New.
(notice_new_inferiors): Rename to...
(remote_notice_new_inferior): ... this. Add RUNNING argument.
Use remote_add_thread instead of add_thread, passing it the
RUNNING argument. Add an inferior with remote_add_inferior. If
we just learned about an inferior, call notice_new_inferior.
(record_currthread): Adjust.
(remote_threads_info): Adjust to use remote_notice_new_inferior.
(remote_start_remote, extended_remote_attach_1): Use remote_add_inferior.
(process_stop_reply): Adjust. Call remote_notice_new_inferior
after handling expedited registers and watchpoint state.
(extended_remote_create_inferior_1): Use remote_add_inferior.
* python/python-utils.c (python_string_to_unicode): Always return
a new reference.
(python_string_to_target_string): Decrement transient python
instance.
(python_string_to_host_string): Likewise.
Silence a few -Wmissing-prototypes warnings.
PR build/9877:
* amd64-nat.c: Include "amd64-nat.h".
* fork-child.c (_initialize_fork_child): Ditto.
* gcore.c (_initialize_gcore): Ditto.
* inf-ptrace.c: Include "inf-ptrace.h".
(inf_ptrace_store_registers): Make it static.
* linux-nat.c (linux_nat_terminal_ours): Make it static.
(_initialize_linux_nat): Declare before definition.
* linux-tdep.c: Include "linux-tdep.h".
* linux-thread-db.c (_initialize_thread_db): Declare before
definition.
* proc-service.c (_initialize_proc_service): Ditto.
* remote.c (remote_send_printf): Make it static.
* solib.c: Include "solib.h".
* symfile-mem.c (_initialize_symfile_mem): Declare before
definition.
* ada-lang.c (ada_la_decode, ada_match_name)
(ada_suppress_symbol_printing, ada_is_array_type)
(ada_value_ptr_subscript, ada_array_length)
(ada_to_static_fixed_value): Make them static.
(_initialize_ada_language): Declare before definition.
* ada-tasks.c (ada_get_task_number, ada_get_environment_task)
(ada_task_list_changed, ada_new_objfile_observer): Make them
static.
(_initialize_tasks): Declare before definition.
* addrmap.c (_initialize_addrmap): Declare before definition.
* auxv.c (default_auxv_parse): Make it static.
* bfd-target.c (target_bfd_xfer_partial, target_bfd_xclose): Make
them static.
* breakpoint.c (remove_sal): Add line break.
(expand_line_sal_maybe): Make it static.
* cp-name-parser.y: Include "cp-support.h".
* cp-valprint.c (cp_find_class_member): Make it static.
* eval.c (value_f90_subarray): Ditto.
* exceptions.c (print_any_exception): Ditto.
* findcmd.c (_initialize_mem_search): Declare before definition.
* frame.c (frame_observer_target_changed): Make it static.
* gnu-v3-abi.c (gnuv3_find_method_in): Make it static.
* inf-child.c: Include "inf-child.h".
* inferior.h (valid_inferior_id): Rename to ...
(valid_gdb_inferior_id): ... this.
* infrun.c (infrun_thread_stop_requested, siginfo_make_value):
Make them static.
* jv-lang.c (java_language_arch_info): Make it static.
* m2-typeprint.c (m2_get_discrete_bounds): Ditto.
* osdata.c (info_osdata_command): Make it static.
* regcache.c (regcache_observer_target_changed): Make it static.
* reverse.c (_initialize_reverse): Declare before definition.
* stabsread.c (cleanup_undefined_types_noname)
(cleanup_undefined_types_1): Make them static.
* symfile.c (place_section): Make it static.
* symtab.c (find_pc_sect_psymtab_closer): Make it static.
* target-descriptions.c (_initialize_target_descriptions): Declare
before definition.
* target.c (default_get_ada_task_ptid, find_default_can_async_p)
(find_default_is_async_p, find_default_supports_non_stop): Make
them static.
(target_supports_non_stop): Add prototype.
(dummy_pid_to_str): Make it static.
* utils.c (_initialize_utils): Declare before definition.
* ada-exp.y (_initialize_ada_exp): Declare before definition.
* solib-svr4.c (HAS_LM_DYNAMIC_FROM_LINK_MAP): Add a prototype.
* target.h (struct target_ops): Add a prototype to the
to_can_execute_reverse callback.
* macroscope.c (_initialize_macroscope): Declare before definition.
* cp-namespace.c (_initialize_cp_namespace): Declare before definition.
* python/python.c (_initialize_python): Declare before definition.
* tui/tui-command.c: Include "tui/tui-command.h".
* tui/tui-data.c (init_content_element, init_win_info): Make them
static.
* tui/tui-disasm.c: Include "tui/tui-disasm.h".
* tui/tui-interp.c (_initialize_tui_interp): Declare before
definition.
* tui/tui-layout.c: Include "tui/tui-layout.h".
(_initialize_tui_layout): Declare before definition.
* tui/tui-regs.c: Include "tui/tui-regs.h".
(tui_display_reg_element_at_line): Make it static.
(_initialize_tui_regs): Declare before definition.
* tui/tui-stack.c (_initialize_tui_stack): Declare before
definition.
* tui/tui-win.c: Include "tui/tui-win.h".
(_initialize_tui_win): Declare before definition.
(tui_sigwinch_handler): Make it static. Wrap in ifdef SIGWINCH.
* tui/tui-win.h (tui_sigwinch_handler): Delete declaration.
(tui_get_cmd_list): Add a prototype.
* tui/tui-windata.c: Include tui-windata.h.
* tui/tui-wingeneral.c (box_win): Make it static.
* cli/cli-logging.c (show_logging_command): Make it static.
(_initialize_cli_logging): Declare before definition.
* mi/mi-common.c (_initialize_gdb_mi_common): Declare before
definition.
(mi_interpreter_init): Register the above.
* solib.c (clear_solib): Notify solib unload.
* breakpoint.c (disable_breakpoints_in_unloaded_shlib): Do not
disable breakpoints on a.out targets.
All callers updated.
(amd64_get_insn_details): Handle more 3-byte opcode insns.
(amd64_breakpoint_p): Delete.
(amd64_displaced_step_fixup): When fixing up after stepping an int3,
don't back up pc to the start of the int3.
* i386-tdep.c: #include opcode/i386.h.
(i386_skip_prefixes): New function.
(i386_absolute_jmp_p): Constify argument.
(i386_absolute_call_p,i386_ret_p,i386_call_p,i386_syscall_p): Ditto.
(i386_breakpoint_p): Delete.
(i386_displaced_step_fixup): Handle unnecessary or redundant prefixes.
When fixing up after stepping an int3, don't back up pc to the start
of the int3.
* gdb.arch/amd64-disp-step.S (test_int3): New test.
* gdb.arch/amd64-disp-step.exp (test_int3): New test.
* gdb.arch/i386-disp-step.S (test_prefixed_abs_jump): New test.
(test_prefixed_syscall,test_int3): New tests.
* gdb.arch/i386-disp-step.exp (test_prefixed_abs_jump): New test.
(test_prefixed_syscall,test_int3): New tests.
(core_open): Find core threads before calling
post_create_inferior.
(add_to_thread_list, get_core_register_section): Take into account
systems where the regset section names encode the pid of the
inferior.
* gdbarch.sh (core_reg_section_encodes_pid): New gdbarch setting.
* gdbarch.h, gdbarch.c: Regenerate.
* amd64-sol2-tdep.c (amd64_sol2_init_abi): Set it.
* i386-sol2-tdep.c (i386_sol2_init_abi): Set it.
* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Set it.
* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Set it.
* ada-tasks.c (ada_normal_stop_observer): Adjust prototype.
* infcmd.c (finish_command_continuation): Pass '1' for
'print_frame' parameter to the observer.
* infrun.c (normal_stop): Don't print mi-specific information
here. Pass 'stop_print_frame' to the 'print_frame' parameter
of the observer.
* mi/mi-interp.c (mi_on_normal_stop): Adjust prototype.
If we need to print frame, and current uiout is not the MI one,
print frame again.
* p-lang.c (is_pascal_string_type): Fix comment.
Determine exact size of char elements for GPC
strings.
(pascal_printstr): Handle char width of 2 or 4.
* p-valprint.c (pascal_val_print): Handle char
of width 2 or 4.
inside the loop. Only call addrmap_set_empty if the compilation unit
had DW_AT_high_pc and DW_AT_low_pc. Update call to
scan_partial_symbols.
(scan_partial_symbols): Take NEED_PC argument and pass it along with
LOWPC and HIGHPC.
(add_partial_namespace): Take NEED_PC argument and pass it through.
(add_partial_subprogram): Take NEED_PC argument. Update the addrmap
if necessary.
2009-02-06 Jim Blandy <jimb@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Vladimir Prus <vladimir@codesourcery.com>
Pedro Alves <pedro@codesourcery.com>
* defs.h (enum lval_type): New value: lval_computed.
* value.h (struct lval_funcs): New type.
(allocate_computed_value, value_computed_funcs)
(value_computed_closure): New declarations.
* value.c (struct value): Add a structure to the location union
for computed lvalues, containing 'funcs' and 'closure' members.
(allocate_computed_value, value_computed_funcs)
(value_computed_closure): New functions.
(value_free): For computed lvalues, call the closure's
'free_closure' function before freeing the value itself.
(value_copy): If we're copying an lval_computed value, call the
closure's 'copy_closure' function.
(set_value_component_location): If the original value is a
computed lvalue, then call the closure's 'copy_closure' function.
(value_of_internalvar): If an internal variable's value is a
computed lvalue, make retrieving its value produce an equivalent
computed lvalue.
* valops.c (value_fetch_lazy): Unlazy computed lvalues by calling
their read function.
(value_assign): Assign to computed lvalues by calling their write
function.
gdb/doc/
2009-02-06 Pedro Alves <pedro@codesourcery.com>
* gdbint.texinfo (Values): New chapter.
(init_remote_ops): Don't register it.
* target.c (target_get_osdata): Don't check for target_can_run.
Instead any target that has already been pushed, otherwise
fallback to the default run target..
* language.h (language_dfn): Add la_get_string member.
(LA_GET_STRING): New macro.
(default_get_string): New prototype.
* language.c (default_get_string): New function.
(unknown_language_defn, auto_language_defn, local_language_defn): Use
default_get_string for la_get_string.
* c-lang.c (c_get_string): New function.
(c_language_defn, cplus_language_defn, asm_language_defn): Use
c_get_string for la_get_string.
(minimal_language_defn): Likewise
* ada-lang.c (ada_language_defn): Likewise.
* f-lang.c (f_language_defn): Use default_get_string for
la_get_string.
* jv-lang.c (java_language_defn): Likewise.
* m2-lang.c (m2_language_defn): Likewise.
* objc-lang.c (objc_language_defn): Likewise.
* p-lang.c (p_language_defn): Likewise.
* scm-lang.c (scm_language_defn): Likewise.
* typeprint.c (type_to_string): New function.
* value.h (type_to_string): New prototype.
* valprint.c (val_print_string): Factor out code for reading string
from the inferior into its own function. Put 2 spaces after period
in comments.
(read_string): New function.
* valprint.h (read_string): New prototype.
Tom Tromey <tromey@redhat.com>
PR breakpoints/8079:
* breakpoint.c (print_one_breakpoint): Use exp_string field
to display expression of watchpoints.
(mention): Likewise.
(watch_command_1): Remove trailing whitespace from expression.
* printcmd.c (struct display) <exp_string>: New field.
(display_command): Set exp_string.
(free_display): Free exp_string.
(clear_displays): Use free_display.
(do_one_display): Print exp_string.
(display_info): Likewise.
2009-02-04 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
Phil Muldoon <pmuldoon@redhat.com>
* python/python-internal.h (gdbpy_get_value_from_history): Rename
prototype to gdbpy_history.
(gdbpy_is_string): Declare.
(python_string_to_host_string): Declare.
* python/python-utils.c (gdbpy_is_string): New function.
(unicode_to_encoded_string): New function.
(unicode_to_target_string): Use it.
(python_string_to_host_string): New function.
* python/python-value.c (valpy_address): New function.
(convert_value_from_python): Use gdbpy_is_string. Change to throw
Python exception instead of a GDB exception on error. Properly check
Python booleans.
(valpy_getitem): Convert field name to host string. Handle array
accesses. Adapt to new behaviour of convert_value_from_python.
(valpy_new): Adapt to new behaviour of convert_value_from_python.
(enum valpy_opcode) <VALPY_LSH, VALPY_RSH, VALPY_BITAND,
VALPY_BITXOR, VALPY_BITOR>: New constants.
(valpy_binop): Update. Adapt to new behaviour of
convert_value_from_python.
(valpy_invert): New function.
(valpy_lsh): Likewise.
(valpy_rsh): Likewise.
(valpy_and): Likewise.
(valpy_or): Likewise.
(valpy_xor): Likewise.
(valpy_richcompare): Call convert_value_from_python instead of doing
conversions itself.
(is_intlike, valpy_int, valpy_long, valpy_float): New functions.
(gdbpy_get_value_from_history): Rename
function to gdbpy_history.
(gdbpy_initialize_values): Don't set tp_new.
(value_object_type): Add valpy_new.
(value_object_methods): Add `address' entry.
(value_object_as_number): Update for new methods.
* python/python.c (GdbMethods): Rename entry from
`get_value_from_history' to `history'.
gdb/doc/
2009-02-04 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Basic Python): Document gdb.history.
gdb/testsuite/
2009-02-04 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* gdb.python/python-value.exp: Use `gdb.history' instead of
`gdb.value_from_history'.
(test_value_numeric_ops): Add test for conversion of enum constant.
* gdb.python/python-value.c (enum e): New type.
(evalue): New global.
(main): Use argv.
* i386-darwin-tdep.c (darwin_sigtramp_p): New function.
(i386_darwin_sigcontext_addr): Ditto.
(amd64_darwin_sigcontext_addr): Ditto.
(darwin_dwarf_signal_frame_p): Ditto.
(i386_darwin_init_abi): Handle signal frames, use the const for
sc_num_regs.
(x86_darwin_init_abi_64): Ditto.
2009-02-04 Tristan Gingold <gingold@adacore.com>
* machoread.c (macho_symfile_read): Read minsymtab also from
shared libraries.
(macho_symfile_read): Try to read dwarf2 frame info from main
object file, but not from OSO files.
(macho_symfile_offsets): Update section names for latest BFD
changes.
* i386-darwin-tdep.c (i386_darwin_init_abi): Call set_solib_ops.
(x86_darwin_init_abi_64): Ditto.
* solib-darwin.c: New file.
* solib-darwin.h: New file.
* configure.tgt: Add solib.o solib-darwin.o for Darwin.
(SC_PATH_TKCONFIG): Don't exit 0 if tkconfig fails.
(SC_LOAD_TCLCONFIG): Quote all uses of TCL_BIN_DIR, it may contain
"# no Tcl configs found".
(SC_LOAD_TKCONFIG): Similarily for TK_BIN_DIR.
* gdb/configure.ac (gdbkt): Check both no_tcl/no_tk first, before
doing any further tcl/tk configury. Don't configure gdbtk if
tcl or tk check fails.
* gdb/aclocal.m4: Regenerate.
* gdb/configure: Regenerate.
* gdb/gdbtk/plugins/aclocal.m4: Regenerate.
* gdb/gdbtk/plugins/configure: Regenerate.
* target.c (target_waitstatus_to_string): New function. Copied from
debug_to_wait. Add missing entries for TARGET_WAITKIND_SYSCALL_ENTRY,
TARGET_WAITKIND_SYSCALL_RETURN, TARGET_WAITKIND_IGNORE,
TARGET_WAITKIND_NO_HISTORY.
(debug_to_wait): Call it.
* infrun.c (wait_for_inferior): If debug_infrun, print result of
target_wait.
(fetch_inferior_event): Ditto.
(break_command_really, set_breakpoint): New parameter enabled.
(create_breakpoint, break_command_really): Make breakpoint
disabled if so requested.
* breakpoint.h (set_breakpoint): New parameter enabled.
* mi/mi-cmd-break.c (mi_cmd_break_insert): Handle the -d option.
(EAX_REG_NUM,ECX_REG_NUM,EDX_REGNUM,EBX_REG_NUM,ESI_REG_NUM)
(EDI_REG_NUM): New macros.
(MODRM_MOD_FIELD,MODRM_REG_FIELD,MODRM_RM_FIELD): New macros.
(SIB_SCALE_FIELD,SIB_INDEX_FIELD,SIB_BASE_FIELD): New macros.
(REG_PREFIX_P): New macro.
* amd64-tdep.h (amd64_displaced_step_copy_insn): Declare.
(amd64_displaced_step_fixup): Declare.
* amd64-tdep.c: #include opcode/i386.h, dis-asm.h.
(amd64_arch_regmap): Move out of amd64_analyze_stack_align
and make static global.
(amd64_arch_regmap_len): New static global.
(amd64_arch_reg_to_regnum): New function.
(struct amd64_insn): New struct.
(struct displaced_step_closure): New struct.
(onebyte_has_modrm,twobyte_has_modrm): New static globals.
(rex_prefix_p,skip_prefixes)
(amd64_insn_length_fprintf,amd64_insn_length_init_dis)
(amd64_insn_length,amd64_get_unused_input_int_reg)
(amd64_get_insn_details,fixup_riprel,fixup_displaced_copy)
(amd64_displaced_step_copy_insn)
(amd64_absolute_jmp_p,amd64_absolute_call_p,amd64_ret_p)
(amd64_call_p,amd64_breakpoint_p,amd64_syscall_p)
(amd64_displaced_step_fixup): New functions.
* amd64-linux-tdep.c: #include arch-utils.h.
(amd64_linux_init_abi): Install displaced stepping support.
* gdb.arch/amd64-disp-step.S: New file.
* gdb.arch/amd64-disp-step.exp: New file.
* gdb.arch/i386-disp-step.S: New file.
* gdb.arch/i386-disp-step.exp: New file.
parent to the child.
* inf-ttrace.c (inf_ttrace_follow_fork): Likewise.
* inf-ptrace.c (inf_ptrace_follow_fork): Likewise. Use
remove_breakpoints to remove breakpoints from the parent.
finding its unwinder. Use frame_id_build to build the new frame's
id.
* stack.c (parse_frame_specification_1): Correct setting ``addrs''
array values from the ``args'' array values.
(create_array_type, create_set_type, init_flags_type)
(copy_type_recursive): Replace pairs of calls to XALLOC and memset
with a call to XZALLOC or XCALLOC, and pairs of calls to
obstack_alloc and memset with a call to OBSTACK_ZALLOC.
* cli/cli-decode.c (add_setshow_zuinteger_cmd): New.
* cli/cli-setshow.c (do_setshow_command): Handle it.
* command.h (enum var_types): Add var_zuinteger.
(add_setshow_zuinteger_cmd): Declare.
* valprint.c (_initialize_valprint): Change the set input-radix
and set output-radix commands to zuinteger type.
2009-01-23 Pedro Alves <pedro@codesourcery.com>
* gdb.base/radix.exp: Add tests to ensure that that set
input-radix 0 and set output-radix 0 are really rejected.
PR gdb/9664:
* infrun.c (normal_stop): Tag threads as stopped, and run the
hook-stop before printing the stack frame.
2009-01-23 Pedro Alves <pedro@codesourcery.com>
PR gdb/9664:
* gdb.base/hook-stop-frame.c, gdb.base/hook-stop-frame.exp: New.
* infcmd.c (signal_command): Do not specify a resume PC.
testsuite/
PR gdb/9346
* gdb.base/interrupt.c (sigint_handler): New.
(main): Install a SIGINT handler if SIGNALS is defined. Exit
on error.
* gdb.base/interrupt.exp: Define SIGNALS unless gdb,nosignals.
Test "signal SIGINT".
caller_state.
(dummy_frame_push): Replace caller_regcache arg with caller_state.
All callers updated.
(remove_dummy_frame,pop_dummy_frame,lookup_dummy_frame): New fns.
(dummy_frame_pop): Rewrite. Verify requested frame is in the
dummy frame stack. Restore program state.
(cleanup_dummy_frames): Rewrite.
(dummy_frame_sniffer): Update. Make static.
* dummy-frame.h (regcache,frame_info): Delete forward decls.
(inferior_thread_state): New forward decl.
(dummy_frame_push): Update prototype.
* frame.c (frame_pop): dummy_frame_pop now does all the work for
DUMMY_FRAMEs.
* infcall.c (breakpoint_auto_delete_contents): Delete.
(get_function_name,run_inferior_call): New fns.
(call_function_by_hand): Simplify by moving some code to
get_function_name, run_inferior_call. Inferior function call wrapped
in TRY_CATCH so there's less need for cleanups and all exits from
proceed are handled similarily. Detect program exit.
Detect program stopping in a different thread.
Make error messages more consistent.
* inferior.h (inferior_thread_state): Declare (opaque type).
(save_inferior_thread_state,restore_inferior_thread_state,
make_cleanup_restore_inferior_thread_state,
discard_inferior_thread_state, get_inferior_thread_state_regcache):
Declare.
(save_inferior_status): Update prototype.
* infrun.c: (normal_stop): When stopped for the completion of an
inferior function call, verify the expected stack frame kind.
(inferior_thread_state): New struct.
(save_inferior_thread_state,restore_inferior_thread_state,
do_restore_inferior_thread_state_cleanup,
make_cleanup_restore_inferior_thread_state,
discard_inferior_thread_state,
get_inferior_thread_state_regcache): New functions.
(inferior_status): Move stop_signal, stop_pc, registers to
inferior_thread_state. Remove restore_stack_info.
(save_inferior_status): Remove arg restore_stack_info.
All callers updated. Remove saving of state now saved by
save_inferior_thread_state.
(restore_inferior_status): Remove restoration of state now done by
restore_inferior_thread_state.
(discard_inferior_status): Remove freeing of registers, now done by
discard_inferior_thread_state.
* gdb.base/break.exp: Update expected gdb output.
* gdb.base/sepdebug.exp: Ditto.
* gdb.mi/mi-syn-frame.exp: Ditto.
* gdb.mi/mi2-syn-frame.exp: Ditto.
* gdb.base/call-signal-resume.exp: New file.
* gdb.base/call-signals.c: New file.
* gdb.base/unwindonsignal.exp: New file.
* gdb.base/unwindonsignal.c: New file.
* gdb.threads/interrupted-hand-call.exp: New file.
* gdb.threads/interrupted-hand-call.c: New file.
* gdb.threads/thread-unwindonsignal.exp: New file.
* gdbthread.h (finish_thread_state, finish_thread_state_cleanup):
Declare.
* thread.c (finish_thread_state, finish_thread_state_cleanup): New.
* infrun.c (wait_for_inferior, fetch_inferior_event): If an error
is thrown while handling an event, finish the thread state.
(normal_stop): Use finish_thread_state cleanup.
* infcmd.c (run_command_1): If an error is thrown while starting
the inferior, finish the thread state.
(solib_find): Add prototype.
(solib_bfd_fopen): Add prototype.
* solib.c (solib_find, solib_bfd_fopen): New functions, extracted
from solib_bfd_open.
(solib_bfd_open): Use ops->bfd_open override if present. Call
solib_find and solib_bfd_open otherwise.
* objfiles.h (OBJF_KEEPBFD): New define.
* objfiles.c (free_objfile): Do not close BFD if OBJF_KEEPBFD
objfile flag is set.
* solib.c (symbol_add_stub): Do not allocate second BFD for
shared library; use OBJF_KEEPBFD flag on solib objfile.
(locate_var_value): Remove prototype.
* findvar.c (read_var_value): Do not attempt to default frame
to selected frame.
(locate_var_value): Remove function.
* valops.c (value_of_variable): Retrieve selected frame for
symbols that require a frame when called with NULL block.
* valops.c (address_of_variable): New function.
* eval.c (evaluate_subexp_for_address): Call address_of_variable
instead of calling locate_var_value.
(evaluate_subexp_with_coercion): Likewise.
using SYMBOL_VALUE_BYTES instead of SYMBOL_VALUE.
(psymtab_to_symtab_1): Likewise.
(parse_procedure): Declare variable "e" only in the scope
where it is used. Extract the symbol private data using
SYMBOL_VALUE_BYTES.
Abstract out common code for copying value locations.
* value.h (set_value_component_location): New declaration.
* value.c (set_value_component_location): New function.
(value_primitive_field): Use it.
* valarith.c (value_subscript, value_subscripted_rvalue): Same.
* valops.c (search_struct_field, value_slice): Same.
* ada-lang.c (coerce_unspec_val_to_type)
(ada_value_primitive_packed_val): Same.
* i386-cygwin-tdep.c: Ditto.
* i386-windows-nat.c: Ditto.
* windows-nat.h: Ditto.
* windows-tdep.c: Ditto.
* windows-tdep.h: Ditto.
* windows-nat.c: Ditto.
(cygwin_load_start): Redefine as CORE_ADDR.
(cygwin_load_end): Ditto.
(windows_make_so): Coerce result of address arithmetic to to uintptr_t before
coercing to CORE_ADDR to avoid a compiler warning.
(handle_exception): Define addr as CORE_ADDR and coerce ExceptionAddress to
uintptr_t before assigining to avoid a compiler warning.
* config/djgpp/fnchange.lst: Add mappings for recently renamed windows files.
print the address of readbuf and writebuf. Cast the address of
elements inside the myaddr buffer into intptr_t.
(deprecated_debug_xfer_memory): Use paddress to print memaddr.
Cast the address of elements inside the myaddr buffer into
intptr_t.
* config/i386/mingw64.mh, config/i386/nm-cygwin64.h: New files.
* configure.host, configure.tgt: Add handling for x86_64/windows.
* config/djgpp/fnchange.lst: Add entries for amd64-windows-nat.c
and amd64-windows-tdep.c.
* i386-cygwin-tdep.h: Delete.
* i386-cygwin-tdep.c: Include win32-tdep.h instead of
i386-cygwin-tdep.h.
(win32_xfer_shared_library): Delete. Moved to win32-tdep.c.
* win32-nat.c: Likewise.
* configure.tgt: Add win32-tdep.o to the list of target object
files for i386-cygwin and i386-mingw targets.
* win32-nat.c (mappings): Initialize to NULL.
(win32_set_context_register_offsets): New function.
* i386-windows-nat.c: New file.
(mappings): Moved here from win32-nat.c.
(_initialize_i386_windows_nat): New function.
* config/i386/mingw.mh (NATDEPFILES): Add i386-windows-nat.o.
* config/i386/cygwin.mh (NATDEPFILES): Likewise.
due to casting a pointer to a long when printing a function
address. Instead, use host_address_to_string to convert our
address to a string.
* gdbarch.c: Regenerate.
"base_address" to LPVOID. Remove unnecessary cast.
(struct lm_info): Change type of load_addr to LPVOID.
(win32_make_so): Change the type of parameter "load_addr"
to LPVOID. Remove some unnecessary casts.
(handle_unload_dll): Change the type of "lpBaseOfDll" to LPVOID.
(win32_xfer_shared_libraries): Add missing cast.
DebugSetProcessKillOnExit. Update all uses in this file.
(kernel32_DebugActiveProcessStop): Renames DebugActiveProcessStop.
Update all uses in this file.
and use it when pushing the target.
(win32_attach, win32_create_inferior): Update call to
do_initial_win32_stuff.
(win32_detach, win32_mourn_inferior): Use our ops parameter
instead of the global win32_ops to unpush the target.
* varobj.c (varobj_invalidate): Unconditionally free
all_rootvarobj.
* symfile.c (syms_from_objfile): Free local_addr when returning
normally.
* exec.c (exec_file_attach): Do cleanups before returning.
(exec_file_command): Likewise.
* corefile.c (reopen_exec_file): Do cleanups before returning.
* breakpoint.c (insert_breakpoint_locations): Do cleanups before
returning.
(do_vec_free): New function.
(update_global_location_list): Make a cleanup for old_locations.
Do cleanups before returning. Remove unused variable 'e'.
(find_condition_and_thread): Free result of parsing the
expression.
(print_it_typical): Do cleanups before returning.
(breakpoint_re_set_one): Always free sals.sals.
2009-01-07 Pedro Alves <pedro@codesourcery.com>
Delete ONE_PROCESS_WRITETEXT leftovers.
* breakpoint.c (insert_bp_location): Delete process_warning
argument. Adjust.
(insert_breakpoint_locations): Adjust.
(reattach_breakpoints): Adjust.
* infrun.c (normal_stop): Drop "It might be running in another
process" notice.
gdb/doc/
2009-01-07 Pedro Alves <pedro@codesourcery.com>
* gdb.texinfo (Error in Breakpoints): Delete mention of "The same
program may be running in another process" errors.
* gdbint.texinfo (Native Conditionals): Delete
ONE_PROCESS_WRITETEXT description.
* f-typeprint.c (f_type_print_base <TYPE_CODE_STRUCT>): Fix output
spacing, a regression from 2008-04-22.
gdb/testsuite/
* gdb.fortran/derived-type.exp: New variables int4 and real4. Match
now the output exactly, using less wildcards. Expect also the output
of gfortran-4.3. Update for the f-valprint.c modification from
2008-04-22.
* gdb.fortran/subarray.exp: Expect also the output of gfortran-4.3.
Remove gdb_test test names where matching the command.
attribute in GLIBC 2.8.
* cli/cli-cmds.c (pwd_command): Check return value from getcwd.
* inflow.c (check_syscall): New function.
(new_tty): Use check_syscall to check return values from open and dup.
* linux-nat.c (linux_nat_info_proc_cmd): Check return value from fgets.
* main.c (captured_main): Call cwd after setting up gdb_stderr;
check for errors from getcwd.
* mi/mi-cmd-env.c (mi_cmd_env_pwd): Check return value from getcwd.
* ui-file.c (stdio_file_write): Ignore return value from fwrite.
(stdio_file_fputs): Same.
* utils.c (internal_vproblem): abort if last-ditch error message
write fails.
gdb/
* ser-tcp.c: Adjust includes.
(tcp_set_cmdlist, tcp_show_cmdlist): Declare.
(tcp_auto_retry, tcp_retry_limit): Declare.
(TIMEOUT): Remove, in favor of tcp_retry_limit.
(POLL_INTERVAL): Increase to 5, in favor of backoff logic.
(wait_for_connect): New function.
(net_open): Use it. Add auto-retry logic.
(set_tcp_cmd, show_tcp_cmd): New functions.
(_initialize_ser_tcp): Initialize new "set/show tcp auto-retry"
and "set/show tcp connect-timeout" commands.
* NEWS: Document new commands.
gdb/doc/
* gdb.texinfo (Remote Configuration): Document new
"set/show tcp auto-retry" and "set/show tcp connect-timeout"
commands.
PR gdb/8812:
* infrun.c (handle_command): Don't print a header or notify the
target about signal changes if we didn't change any signal.
2008-12-31 Pedro Alves <pedro@codesourcery.com>
PR gdb/8812:
* gdb.base/signal.exp: Change kfail to fail, and update PR number.
PR gdb/7536:
* valprint.c (input_radix_1): New static global.
(set_input_radix): Use it instead of "input_radix".
(set_input_radix_1): Always leave input_radix_1 set to
input_radix.
(output_radix_1): New static global.
(set_output_radix): Use it instead of "output_radix".
(set_output_radix_1): Always leave output_radix_1 set to
output_radix.
(_initialize_valprint): Use "input_radix_1" instead of
"input_radix" with the "input-radix" command. Use
"output_radix_1" instead of "output_radix" with the "output-radix"
command.
2008-12-29 Pedro Alves <pedro@codesourcery.com>
PR gdb/7536:
* gdb.base/radix.exp: Add tests to ensure invalid input radices
and unsupported output radices are really rejected.
* linux-fork.h (linux_fork_detach): Declare.
* linux-nat.c (linux_child_follow_fork): When following the fork
child, add the child inferior before possibly detaching from the
parent. Don't reinstall ourselves.
(linux_nat_detach): Call linux_fork_detach if there are other
forks to debug.
* linux-thread-db.c (thread_db_detach): Don't call
target_mourn_inferior. Instead inline the necessary bits.
* inf-ptrace.c (inf_ptrace_detach): Don't unpush the target if
there are other inferiors to debug.
preparation for supporting DW_AT_byte_stride.
* ada-lang.c (packed_array_type, ada_index_type): Use TYPE_INDEX_TYPE.
(ada_array_bound_from_type): Move `index_type' declaration to the
function start. New variable `retval'. Return the bounds for
TYPE_CODE_RANGE using TYPE_LOW_BOUND and TYPE_HIGH_BOUND. Abort on
invalid index type codes.
* ada-typeprint.c (print_range): Set `upper_bound' for TYPE_CODE_RANGE
now using TYPE_HIGH_BOUND.
* ada-valprint.c (val_print_packed_array_elements): Use `index_type'.
* eval.c (evaluate_subexp_standard): Use TYPE_INDEX_TYPE.
* gdbtypes.c (create_range_type): Use TYPE_LOW_BOUND, TYPE_HIGH_BOUND,
refer to the number of fields only through TYPE_NFIELDS.
(create_array_type): Use TYPE_INDEX_TYPE.
(check_typedef): Use TYPE_INDEX_TYPE, TYPE_LOW_BOUND, TYPE_HIGH_BOUND.
* gdbtypes.h (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED)
(TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED): Use TYPE_INDEX_TYPE.
(TYPE_ARRAY_UPPER_BOUND_VALUE, TYPE_ARRAY_LOWER_BOUND_VALUE): Use
TYPE_INDEX_TYPE, TYPE_LOW_BOUND, TYPE_HIGH_BOUND,
* hppa-tdep.c (hppa_alignof <TYPE_CODE_ARRAY>): Use TYPE_INDEX_TYPE.
* mdebugread.c (parse_type): Use TYPE_LOW_BOUND, TYPE_HIGH_BOUND,
* valarith.c (value_bit_index): Use TYPE_INDEX_TYPE.
Update for call to print_variable_and_value.
(print_frame_arg_vars): Update.
* value.h (print_variable_and_value): Rename from
print_variable_value. Add 'name' and 'indent' parameters.
* printcmd.c (print_variable_and_value): Rename from
print_variable_value. Add 'name' and 'indent' parameters. Use
common_val_print.
* f-valprint.c (info_common_command): Update.
Fix memory double-free.
* completer.c (line_completion_function): Clear LIST after called xfree.
gdb/testsuite/
* gdb.base/completion.exp (Completing non-existing component): New test.
Fix hw watchpoints created before the inferior was started.
* breakpoint.c (update_watchpoint): Convert the bp_watchpoint and
bp_hardware_watchpoint types according to the current runtime state.
gdb/testsuite/
* gdb.base/watchpoint-hw.exp, gdb.base/watchpoint-hw.c: New.
and not detaching the parent, also add the child fork to the fork
list.
* linux-fork.c (linux_fork_context): Remove dead error call.
Assert that the incoming newfp argument is not null. Do not add a
new fork for inferior_ptid. Assert that there is one already.
(ada_value_slice_from_ptr): ... this. Return a lazy value instead
of a reference. Update comment.
(ada_value_struct_elt): Ditto if arg is a pointer or a reference.
Update comment as well.
(ada_evaluate_subexp): Update use of ada_value_slice_ptr.
PR cli/2563:
* cli/cli-decode.c (delete_cmd): Add hook-related out parameters.
(add_cmd): Update. Install hooks into new command.
(add_alias_cmd): Update.
gdb/testsuite
* gdb.base/commands.exp (redefine_hook_test): New proc.
Call it.
TARGET_WAITKIND_SIGNALLED, switch inferior_ptid to the event ptid.
* linux_thread_db.c (thread_db_wait): On a TARGET_WAITKIND_EXITED
or TARGET_WAITKIND_SIGNALLED, return the ptid the beneath target
returned.
* inf-ptrace.c (inf_ptrace_wait): Return inferior_ptid instead of
minus_one_ptid if the inferior disappeared.
* rs6000-nat.c (rs6000_wait): Likewise.
* spu-linux-nat.c (spu_child_wait): Likewise.
PR gdb/1815:
* cli/cli-decode.c (delete_cmd): Forward declare.
(delete_cmd): Now static. Change return type. Remove command
from alias chain. Rewrite.
(add_cmd): Initialize new fields. Update cmd_pointer on all
aliases.
(add_alias_cmd): Put command on alias chain.
* command.h (delete_cmd): Don't declare.
* cli/cli-decode.h (delete_cmd): Don't declare.
(struct cmd_list_element) <aliases, alias_chain>: New fields.
gdb/testsuite
* gdb.base/commands.exp (redefine_backtrace_test): New proc.
Call it.
* breakpoint.c (allocate_bp_location): Remove the bp_type parameter.
Replace bp_type by bpt->type. Update prototype. All callers updated.
(add_location_to_breakpoint): Remove the bp_type parameter.
Replace bp_type by b->type. All callers updated.
(set_breakpoint_location_function): Replace bptype by b->type.
* i386-darwin-nat.c (i386_darwin_sstep_at_sigreturn): New function.
(amd64_darwin_sstep_at_sigreturn): New function.
(darwin_set_sstep): The sigreturn is a special case: the trace flag
must be set in the mcontext structure.
2008-11-27 Tristan Gingold <gingold@adacore.com>
* NEWS: Add entry for new native configuration: Darwin.
* configure.host: Add Darwin host.
* configure.tgt: Add Darwin target.
* defs.h (enum gdb_osabi): Add GDB_OSABI_DARWIN.
* osabi.c (gdb_osabi_names): Add name for Darwin abi.
* i386-darwin-nat.c: New file.
* i386-darwin-tdep.c: New file.
* machoread.c: New file.
* darwin-nat-info.c: New file.
* darwin-nat.c: New file.
* darwin-nat.h: New file.
* darwin.defs: New file.
* config/i386/darwin.mh: New file.
gdb/doc:
2008-11-27 Tristan Gingold <gingold@adacore.com>
* gdb.texinfo (Darwin): Document Darwin specific features.
(value_free): Remove macro, make it a function.
* value.c (value): Move actual content outside of the memory space
of the struct; add a pointer to this actual content.
(allocate_value_lazy, allocate_value_contents): New function.
(allocate_value): Reimplement using these two new functions.
(value_contents_raw, value_contents_all_raw): If no memory
has been allocated yet for the actual content, allocate it.
(value_contents_all): Resync with struct value's changes.
(value_free): New function.
(value_copy, value_primitive_field): Use new function
allocate_value_lazy to allocate lazy values.
(value_change_enclosing_type): Resync with struct value's changes.
As the value is not reallocated, remove the special handling for
the value chain (now obsolete).
* valops.c (value_at_lazy): Use new function allocate_value_lazy.
(value_fetch_lazy): Allocate value content. Use allocate_value_lazy
to allocate lazy values.
(value_slice): Use allocate_value_lazy to allocate lazy values.
* ia64-tdep.c: New #if check on BREAKPOINT_MAX vs. BUNDLE_LEN.
(ia64_memory_insert_breakpoint): New comment part for SHADOW_CONTENTS
content. Remove variable instr. New variable cleanup. Force
automatic breakpoints restoration. PLACED_SIZE and SHADOW_LEN are now
set larger, to BUNDLE_LEN - 2. Variable `bundle' type update. Return
error if even just final target_write_memory has failed.
(ia64_memory_remove_breakpoint): Rename variables bundle to bundle_mem
and instr to instr_saved. New variables bundle_saved and
instr_breakpoint. Comment new reasons why we need to disable automatic
restoration of breakpoints. Assert PLACED_SIZE and SHADOW_LEN. New
check of the original memory content. Return error if even just final
target_write_memory has failed.
(ia64_breakpoint_from_pc): Implement the emulation of permanent
breakpoints compatible with current bp_loc_is_permanent.
(template_encoding_table): Make it `const'.
* breakpoint.c (bp_loc_is_permanent): Support unsupported software
breakpoints. New variables `cleanup' and `retval'.
* monitor.c (monitor_insert_breakpoint): Remove unused variable `bp'.
* remote.c (remote_read_description_p): New function.
(remote_start_remote): Try to fetch the target description
before adding shared libraries. Try again later if the
target is running but stopped.
(remote_open_1): Mark extended targets as exited by default.
(remote_read_description): Check target_has_execution.
(frv_gdbarch_init): Register frv_skip_main_prologue.
* solib-frv.c (fetch_loadmap): Return early when no segments are
found.
(frv_relocate_main_executable): Return early when both interpreter
and executable loadmap addresses are zero.
(putpkt_binary, read_frame, getpkt_or_notif_sane_1): Use it. Make
sure debug output printing a packet buffer goes through a single
fprintf_unfiltered call.
* utils.c (vfprintf_unfiltered): If outputting timestamps, end
output with a newline if it wasn't going to already.