global variables.
(child_add_thread): Minor cleanup.
(child_continue): Resume artificially suspended threads before
calling ContinueDebugEvent.
(suspend_one_thread): New.
(fake_breakpoint_event): New.
(get_child_debug_event): Change return type to int. Check here if
gdb sent an interrupt request. If a soft interrupt was requested,
fake a breakpoint event. Return 0 if there is no event to handle,
and 1 otherwise.
(win32_wait): Don't check here if gdb sent an interrupt request.
Ensure there is a valid event to handle.
(win32_request_interrupt): Add soft interruption method as last
resort.
structure members. Replace `suspend_count' counter by a
`suspended' flag.
* win32-low.c (thread_rec): Update condition of when to get the
context from the inferior. Rely on ContextFlags being set if it
has already been retrieved. Only suspend the inferior thread if
we haven't already. Warn if that fails.
(continue_one_thread): s/suspend_count/suspended/. Only call
ResumeThread once. Warn if that fails.
(add_pid_to_list, pull_pid_from_list): New.
* linux-low.c (PTRACE_SETOPTIONS, PTRACE_GETEVENTMSG)
(PTRACE_O_TRACESYSGOOD, PTRACE_O_TRACEFORK, PTRACE_O_TRACEVFORK)
(PTRACE_O_TRACECLONE, PTRACE_O_TRACEEXEC, PTRACE_O_TRACEVFORKDONE)
(PTRACE_O_TRACEEXIT, PTRACE_EVENT_FORK, PTRACE_EVENT_VFORK)
(PTRACE_EVENT_CLONE, PTRACE_EVENT_EXEC, PTRACE_EVENT_VFORK_DONE)
(PTRACE_EVENT_EXIT, __WALL): Provide default definitions.
(stopped_pids, thread_db_active, must_set_ptrace_flags): New variables.
(using_threads): Always set to 1.
(handle_extended_wait): New.
(add_process): Do not set TID.
(linux_create_inferior): Set must_set_ptrace_flags.
(linux_attach_lwp): Remove TID argument. Do not check using_threads.
Use PTRACE_SETOPTIONS. Call new_thread_notify. Update all callers.
(linux_thread_alive): Rename TID argument to LWPID.
(linux_wait_for_process): Handle unknown processes. Do not use TID.
(linux_wait_for_event): Do not use TID or check using_threads. Update
call to dead_thread_notify. Call handle_extended_wait.
(linux_create_inferior): Use PTRACE_SETOPTIONS.
(send_sigstop): Delete sigstop_sent.
(wait_for_sigstop): Avoid TID.
(linux_supports_tracefork_flag, linux_tracefork_child, my_waitpid)
(linux_test_for_tracefork): New.
(linux_lookup_signals): Use thread_db_active and
linux_supports_tracefork_flag.
(initialize_low): Use thread_db_active and linux_test_for_tracefork.
* linux-low.h (get_process_thread): Avoid TID.
(struct process_ifo): Move thread_known and tid to the end. Remove
sigstop_sent.
(linux_attach_lwp, thread_db_init): Update prototypes.
* server.h (change_inferior_id): Delete prototype.
(add_pid_to_list, pull_pid_from_list): New prototypes.
* thread-db.c (thread_db_use_events): New.
(find_first_thread): Rename to...
(find_one_thread): ...this. Update callers and messages. Do not
call fatal. Check thread_db_use_events. Do not call
change_inferior_id or new_thread_notify.
(maybe_attach_thread): Update. Do not call new_thread_notify.
(thread_db_init): Set thread_db_use_events. Check use_events.
* utils.c (fatal, warning): Correct message prefix.
(win32_create_inferior): Use create_process instead of
CreateProcess. If create_process failed retry appending an ".exe"
suffix. Store the GetLastError result immediatelly after
create_process calls and use it on the call to error.
typedef.
(win32_CloseToolhelp32Snapshot) [_WIN32_WCE]: New global var.
(load_toolhelp) [_WIN32_WCE]: Load TOOLHELP.DLL. Get
CloseToolhelp32Snapshot.
(toolhelp_get_dll_name) [_WIN32_WCE]: Close the snapshot with
CloseToolhelp32Snapshot.
Thiago Bauermann <bauerman@br.ibm.com>
Joseph S. Myers <joseph@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
gdb/
* remote.c (remote_check_symbols): Use
gdbarch_convert_from_func_ptr_addr.
* infcall.c (find_function_addr): Handle function descriptors
without debugging information.
* ppc-linux-tdep.c (ppc_linux_convert_from_func_ptr_addr): Renamed
from ppc64_linux_convert_from_func_ptr_addr. Handle -msecure-plt.
(ppc_linux_init_abi): Always set convert_from_func_ptr_addr.
* solib-svr4.c (solib_break_names): Remove "._dl_debug_state".
(bfd_lookup_symbol): Do not take a SECT_FLAGS argument. Always
allow SEC_CODE and SEC_DATA.
(enable_break): Update calls. Pass current_target to solib_add.
Use gdbarch_convert_from_func_ptr_addr.
gdb/gdbserver/
* remote-utils.c (look_up_one_symbol): Handle 'm' packets.
(thread_db_detach): Typo fix. Call target_mourn_inferior
instead of fixing up proc_handle.
(have_threads_callback, have_threads): New functions.
(thread_db_wait): Remove dead proc_handle.pid check. Only
translate PTIDs if we have registered threads. Check for new
threads if we have none.
(thread_db_create_inferior, thread_db_post_startup_inferior): Delete.
(find_new_threads_callback): Only enable event reporting if TID == 0.
(same_ptid_callback): New.
(thread_db_get_thread_local_address): Check for new threads.
(init_thread_db_ops): Don't set to_attach, to_create_inferior,
or to_post_startup_inferior.
* thread-db.c (thread_db_find_new_threads): Add prototype.
(thread_db_create_event): Check for the main thread before adding
a new thread.
(maybe_attach_thread): Only enable event reporting if TID == 0.
(thread_db_get_tls_address): Check for new threads.
mips64-linux.
* features/sort-regs.xsl: Correct typo.
* regformats/reg-mips.dat, regformats/reg-mips64.dat: Delete.
* regformats/mips-linux.dat, regformats/mips64-linux.dat: New generated
files.
* Makefile.in (clean): Clean new files instead of deleted ones.
(reg-mips.o, reg-mips.c, reg-mips64.o, reg-mips64.c): Delete.
(mips-linux.o, mips-linux.c, mips64-linux.o, mips64-linux.c): New
rules.
* configure.srv: Specify XML files and new regformats for MIPS and
MIPS64 GNU/Linux.
* linux-mips-low.c (mips_num_regs): Set to only used registers.
(mips_regmap): Do not fetch $0. Remove unused registers. Add
an entry for the restart register.
(mips_cannot_fetch_register, mips_cannot_store_register)
(mips_reinsert_addr, mips_fill_fpregset, mips_store_fpregset): Update
register names to match the XML descriptions.
(mips_fill_gregset, mips_store_gregset): Likewise. Handle the
restart register instead of $0.
* spu-linux-nat.c (spu_proc_xfer_spu): Do not return failure when
accessing non-seekable spufs files.
gdbserver/ChangeLog:
* spu-low.c (spu_proc_xfer_spu): Do not return failure when
accessing non-seekable spufs files.
* remote_utils.c (INVALID_DESCRIPTOR): New define.
(remote_desc): Initialize with INVALID_DESCRIPTOR.
(input_interrupt): Expose on USE_WIN32API too. Fix whitespace.
(check_remote_input_interrupt_request): New function.
* server.h (check_remote_input_interrupt_request): Declare.
* win32-low.(winapi_DebugBreakProcess,
winapi_GenerateConsoleCtrlEvent): New typedefs.
(get_child_debug_event): Lower Win32 debug event polling from 1 sec
to 250 ms.
(win32_wait): Check for remote interrupt request
with check_remote_input_interrupt_request.
(win32_request_interrupt): New function.
(win32_target_op): Set request_interrupt to win32_request_interrupt.
debug_registers_used, CONTEXT_EXTENDED_REGISTERS,
CONTEXT_FLOATING_POINT, CONTEXT_DEBUG_REGISTERS,
CONTEXT_DEBUGGER, CONTEXT_DEBUGGER_DR): Delete.
(thread_rec): Get context using the low target.
(child_add_thread): Call thread_added on the low target,
which does the same thing.
(regptr): Delete.
(do_initial_child_stuff): Remove debug registers references.
Set context using the low target. Resume threads after
setting the contexts.
(child_continue): Remove dead variable. Remove debug
registers references.
(child_fetch_inferior_registers): Go through the low target.
(do_child_store_inferior_registers): Remove.
(child_store_inferior_registers): Go through the low target.
(win32_resume): Remove debug registers references.
Set context using the low target.
(handle_exception): Change return type to void. Don't record
context here. Set status to TARGET_WAITKIND_SPURIOUS on a
first chance exception.
(get_child_debug_event): Change return type to void. Remove
goto loop. Always return after waiting for debug event.
(win32_wait): Convert to switch statement. Handle spurious
events.
* win32-i386-low.c (debug_registers_changed,
debug_registers_used): New.
(initial_stuff): Rename to ...
(i386_initial_stuff): ... this. Clear debug registers
state variables.
(store_debug_registers): Delete.
(i386_get_thread_context): New.
(load_debug_registers): Delete.
(i386_set_thread_context): New.
(i386_thread_added): New.
(single_step): Rename to ...
(i386_single_step): ... this.
(do_fetch_inferior_registers): Rename to ...
(i386_fetch_inferior_register): ... this.
(i386_store_inferior_register): New.
(the_low_target): Adapt to new interface.
* win32-arm-low.c (CONTEXT_FLOATING_POINT): Define.
(arm_get_thread_context): New.
(arm_set_thread_context): New.
(regptr): New.
(do_fetch_inferior_registers): Rename to ...
(arm_fetch_inferior_register): ... this.
(arm_store_inferior_register): New.
(arm_wince_breakpoint): Reimplement as unsigned long.
(arm_wince_breakpoint_len): Define.
(the_low_target): Adapt to new interface.
* win32-low.h (target_ops): Remove regmap, store_debug_registers and
load_debug_registers. Add get_thread_context, set_thread_context,
thread_added and store_inferior_register. Rename
fetch_inferior_registers to fetch_inferior_register.
(regptr): Remove declaration.
(winapi_DebugActiveProcessStop): Add WINAPI. typedef as pointer.
(winapi_DebugSetProcessKillOnExit): Likewise.
(win32_create_inferior): Force usage of ansi CreateProcessA.
(win32_attach): Use GETPROCADDRESS.
(win32_detach): Likewise.
* configure.srv [s390-*-linux*, s390x-*-linux*]: Set srv_linux_regsets
and srv_linux_thread_db to yes.
* linux-s390-low.c (s390_fill_gregset): New function.
(target_regsets): Define data structure.
(linux_resume_one_process): Take a siginfo_t *. Update all
callers. Queue it if necessary. Use PTRACE_SETSIGINFO.
(struct pending_signals): Add a siginfo_t.
(linux_wait_for_process): Always set last_status.
(linux_wait_for_event): Use PTRACE_GETSIGINFO.
(linux_queue_one_thread): Use PTRACE_GETSIGINFO.
* linux-low.h (struct process_info): Add last_status.
* server.c (terminal_fd): New variable.
(old_foreground_pgrp): Likewise.
(restore_old_foreground_pgrp): New function.
(start_inferior): Record the terminal file descriptor in terminal_fd
and its original foreground group in old_foreground_pgrp. Register
restore_old_foreground_pgrp with atexit().
* configure.tgt: Build gdbserver for Cygwin and mingw32.
gdb/gdbserver/
* configure.ac: Check for more headers which are missing on
Windows. Automatically supply -lwsock32 and USE_WIN32API.
* configure.srv: Add Cygwin and mingw32.
* remote-utils.c: Don't include headers unconditionally which
are missing on mingw32. Include <winsock.h> for mingw32.
(remote_open): Adjust for mingw32 support. Flush
standard error after writing to it.
(remote_close, putpkt_binary, input_interrupt, block_async_io)
(unblock_async_io, enable_async_io, disable_async_io)
(readchar, getpkt): Update for Winsock support.
(prepare_resume_reply): Expect a protocol signal number.
* server.c: Disable <sys/wait.h> on mingw32.
(start_inferior): Adjust for mingw32 support. Flush
standard error after writing to it.
(attach_inferior): Likewise. Use protocol signal
numbers.
(main): Skip 'D' packet on mingw32. Use protocol signal numbers
and names.
* win32-i386-low.c: New file.
* Makefile.in (XM_CLIBS): Set.
(gdbserver, gdbreplay): Use $(INTERNAL_CFLAGS).
(win32-i386-low.o): New dependency rule.
* linux-low.c (linux_wait): Use target signal numbers.
* target.h (struct target_ops): Doc fix.
* server.h (target_signal_to_name): New prototype.
* gdbreplay.c: Don't include headers unconditionally which
are missing on mingw32. Include <winsock.h> for mingw32.
(remote_close, remote_open): Adjust for Winsock support.
* configure, config.in: Regenerated.
* remote.c (PACKET_qXfer_auxv): New, renamed from PACKET_qPart_auxv.
(remote_supported_packet): Remove #if 0.
(remote_protocol_features): Add qPart:auxv:read.
(remote_unescape_input): New function.
(readchar): Don't mask off the high bit.
(read_frame): Use fputstrn_filtered for packet data.
(getpkt_sane): Return the number of bytes read or -1. Use
fputstrn_unfiltered.
(remote_read_qxfer): New.
(remote_xfer_partial): Use it for TARGET_OBJECT_AUXV.
(_initialize_remote): Update packet registration.
* defs.h (fputstrn_filtered): New prototype.
* utils.c (fputstrn_filtered): New.
* NEWS: Mention qXfer.
gdb/doc/
* gdb.texinfo (OS Information): Update qPart reference to
qXfer.
(Remote configuration): Likewise.
(Overview): Move @cindex to the start of a paragraph. Talk
about binary data encoding.
(Packets): Refer to the overview for the details of the X
packet encoding.
(General Query Packets): Remove qPart description. Add qXfer
description. Add an anchor to qSupported. Correct feature
table title. Add a new feature for qXfer:auxv:read.
(Interrupts): Add a missing parenthesis.
gdb/gdbserver/
* server.c (decode_xfer_read, write_qxfer_response): New.
(handle_query): Take a packet length argument. Handle
qXfer:auxv:read instead of qPart:auxv:read. Mention it in
the qSupported response.
(main): Update call to handle_query.
(putpkt_binary): Renamed from putpkt and adjusted for binary
data.
(putpkt): New wrapper for putpkt_binary.
(readchar): Don't mask off the high bit.
(decode_X_packet): New function.
* server.c (main): Call putpkt_binary if a handler sets the packet
length. Save the length of the incoming packet. Handle 'X'.
* server.h (gdb_byte, remote_escape_output, decode_X_packet): New.
* gdb_proc_service.h: New file.
* linux-i386-low.c, linux-x86-64-low.c, thread-db.c: Use the
new "gdb_proc_service.h".
* proc-service.c: Likewise.
(ps_pglobal_lookup, ps_pdread, ps_pdwrite): Use psaddr_t.
(ps_lgetfpregs, ps_lsetfpregs): Use a void* argument.
* Makefile.in (gdb_proc_service_h): Updated.
* configure, config.in: Regenerated.