* remote-e7000.c (fetch_regs_from_dump): If register set is null,
generate an internal error.
(e7000_fetch_registers): Initialize variable 'wanted'.
(e7000_wait): Initialize variable 'wanted_nopc'.
(e7000_store_register): Fix sprintf compiler warnings.
(sub2_from_pc): Ditto.
(e7000_open): Close the descriptor, not the name.
(e7000_load): Fix compiler warnings.
(sub2_from_pc): Ditto.
* Makefile.in (remote-e7000.o): Can now compile with -Werror.
<sys/sysctl.h>.
(store_inferior_registers): Wrap long line.
(i386bsd_dr_get_status): Fix typo in comment.
(_initialize_i386bsd_nat): New function. * i386bsd-tdep.c: New
file. * config/i386/tm-fbsd.h (IN_SIGTRAMP): New define.
(i386bsd_in_sigtramp): New prototype.
(SIGTRAMP_START, SIGTRAMP_END): Redefine in terms...
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): ...these new
(external) variables.
(SIGCONTEXT_PC_OFFSET): Removed.
(FRAME_SAVED_PC): New define.
(i386bsd_frame_saved_pc): New function. * config/i386/fbsd.mt
(TDEPFILES): Add i386bsd-tdep.o.
signals. Use that in favour of the old code to get rid of
superfluous SIGINTs.
(lin_lwp_wait): Use the new support in stop_wait_callback to
flush all but one SIGINT.
config/m68k/xm-linux.h, config/powerpc/xm-linux.h,
config/sparc/xm-linux.h, config/ia64/xm-linux.h (HAVE_TERMIOS):
Removed. Taken care of by autoconf and terminal.h.
* config/sh/tm-sh.h (struct gdbarch_tdep): Add
FLOAT_ARGLAST_REGNUM, RETURN_REGNUM, ARG0_REGNUM, ARGLAST_REGNUM,
PR_REGNUM fields.
* sh-tdep.c (sh_skip_prologue_hard_way): Rename from
skip_prologue_hard_way().
(skip_prologue_hard_way): Make it a function pointer.
(sh_print_register): Use function pointer do_pseudo_register,
instead of sh_do_pseudo_register.
(sh_do_registers_info): Ditto.
(sh_gdbarch_init): Initialize do_pseudo_register.
(IS_MOV_TO_R14): Rename from IS_MOV_R14.
(skip_prologue_hard_way): Update.
(sh_gdbarch_init): Move setting of frame_chain,
get_saved_register, init_extra_frame_info, push_arguments,
extract_return_value, pop_frame, store_struct_return,
extract_struct_value_address, use_struct_convention,
init_extra_frame_info to before target specific settings.
(sh_gdbarch_init): Initialize new tdep fields
FLOAT_ARGLAST_REGNUM, RETURN_REGNUM, ARG0_REGNUM, ARGLAST_REGNUM,
PR_REGNUM.
(sh_push_arguments): Use new gdbarch_tdep fields
{ARG0,ARGLAST}_REGNUM.
(sh_saved_pc_after_call, sh_nofp_frame_init_saved_regs,
sh_init_extra_frame_info, sh_push_return_address,
sh_generic_show_regs, sh3_show_regs, sh3e_show_regs,
sh3_dsp_show_regs, sh4_show_regs, sh_dsp_show_regs): Update to use
gdbarch_tdep->PR_REGNUM.
(dr_reg_base_num, fv_reg_base_num): Move to earlier in the file.
of SIGIO.
(input_interrupt): Don't block on read, in case we got redundant
SIGIO. Don't gripe about redundant SIGIO.
* gdbserver/low-hppabsd.c (mywait): Use waitpid(). Enable SIGIO
handler while waiting.
* gdbserver/low-linux.c (mywait): Likewise.
* gdbserver/low-nbsd.c (mywait): Likewise.
* gdbserver/low-sparc.c (mywait): Likewise.
(go32_info_dos_command): New function.
(_initialize_go32_nat): Convert all DOS-specific commands into
subcommands of "info dos". Suggested by Andrew Cagney
<ac131313@redhat.com>.
reasonable defaults for REALTIME_LO and REALTIME_HI if they're not
already defined.
* config/nm-linux.h: Include <signal.h>.
[__SIGRTMIN] (REALTIME_LO, REALTIME_HI): Define to __SIGRTMIN and
(__SIGRTMAX + 1) respectively.
longer disagree on how big pointers are.
* findvar.c (value_from_register): Remove special case code for D10V.
* printcmd.c (print_frame_args): Same.
* valops.c (value_at, value_fetch_lazy): Same.
* values.c (unpack_long): Same.
* gdbarch.sh: Changes to effect the following:
* gdbarch.h (GDB_TARGET_IS_D10V, D10V_MAKE_DADDR,
gdbarch_d10v_make_daddr_ftype, gdbarch_d10v_make_daddr,
set_gdbarch_d10v_make_daddr, D10V_MAKE_IADDR,
gdbarch_d10v_make_iaddr_ftype, gdbarch_d10v_make_iaddr,
set_gdbarch_d10v_make_iaddr, D10V_DADDR_P,
gdbarch_d10v_daddr_p_ftype, gdbarch_d10v_daddr_p,
set_gdbarch_d10v_daddr_p, D10V_IADDR_P,
gdbarch_d10v_iaddr_p_ftype, gdbarch_d10v_iaddr_p,
set_gdbarch_d10v_iaddr_p, D10V_CONVERT_DADDR_TO_RAW,
gdbarch_d10v_convert_daddr_to_raw_ftype,
gdbarch_d10v_convert_daddr_to_raw,
set_gdbarch_d10v_convert_daddr_to_raw, D10V_CONVERT_IADDR_TO_RAW,
gdbarch_d10v_convert_iaddr_to_raw_ftype,
gdbarch_d10v_convert_iaddr_to_raw,
set_gdbarch_d10v_convert_iaddr_to_raw): Delete declarations.
* gdbarch.c: Delete the corresponding definitions.
(struct gdbarch): Delete members d10v_make_daddr,
d10v_make_iaddr, d10v_daddr_p, d10v_iaddr_p,
d10v_convert_daddr_to_raw, and d10v_convert_iaddr_to_raw.
(startup_gdbarch): Remove initializers for the above.
(verify_gdbarch, gdbarch_dump): Don't verify or dump them any
more.
* d10v-tdep.c (d10v_register_virtual_type): Rather that
claiming the stack pointer and PC are 32 bits long (which they
aren't), say that the stack pointer is an int16_t, and the
program counter is a function pointer. This allows the rest
of GDB to make the appropriate conversions between the code
pointer format and real addresses.
(d10v_register_convertible, d10v_register_convert_to_virtual,
d10v_register_convert_to_raw): Delete function; no registers
are convertible now, so we use
generic_register_convertible_not instead.
(d10v_address_to_pointer, d10v_pointer_to_address): New gdbarch
methods.
(d10v_push_arguments, d10v_extract_return_value): Remove special
cases for code and data pointers.
(d10v_gdbarch_init): Set gdbarch_ptr_bit to 16, so that GDB and
the target agree on how large pointers are. Say that addresses
are 32 bits long. Register the address_to_pointer and
pointer_to_address conversion functions. Since no registers are
convertible now, register generic_register_convertible_not as the
gdbarch_register_convertible method instead of
d10v_register_convertible. Remove registrations for
d10v_register_convert_to_virtual,
d10v_register_convert_to_raw, gdbarch_d10v_make_daddr,
gdbarch_d10v_make_iaddr, gdbarch_d10v_daddr_p,
gdbarch_d10v_iaddr_p, gdbarch_d10v_convert_daddr_to_raw, and
gdbarch_d10v_convert_iaddr_to_raw.
include of "serial.h".
* Makefile.in (remote_utils_h): Update.
* monitor.h (struct serial): Declare as opaque. Remove include of
"serial.h".
(struct monitor_ops): Replace serial_t with `struct serial *'.
* monitor.c (monitor_desc): Ditto.
(read_memory_region, get_descriptor, display_descriptor)
(go32_sldt, go32_sgdt, go32_sidt): New functions.
(top-level): Include ctype.h, utsname.h, dos.h, and go32.h. Ifdef
away `disable' from dos.h, since breakpoint.h defines an enum
member of the same name, and GCC 2.7.2 barfs.
(_initialize_go32_nat): Provide new commands dos-sysinfo, dos-ldt,
dos-gdt, and dos-idt, all of them in the "info" class
Testing: I tested on native Red Hat Linux 7 using gcc 3.0.
The "info float" command exercises print_i387_value.
2001-07-06 Michael Chastain <chastain@redhat.com>
* i387-tdep.c (print_i387_value): Fix pointer glitch.
===
Index: i387-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i387-tdep.c,v
retrieving revision 1.11
diff -c -1 -0 -p -r1.11 i387-tdep.c
*** gdb/i387-tdep.c 2001/07/04 21:14:05 1.11
--- gdb/i387-tdep.c 2001/07/06 12:47:00
*************** print_i387_value (char *raw)
*** 163,184 ****
DOUBLEST value;
int len = TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT;
char *tmp = alloca (len);
/* This code only works on targets where ... */
gdb_assert (TARGET_LONG_DOUBLE_FORMAT == &floatformat_i387_ext);
/* Take care of the padding. FP reg is 80 bits. The same value in
memory is 96 bits. */
gdb_assert (FPU_REG_RAW_SIZE < len);
! memcpy (&tmp, raw, FPU_REG_RAW_SIZE);
! memset (&tmp + FPU_REG_RAW_SIZE, 0, len - FPU_REG_RAW_SIZE);
/* Extract the value as a DOUBLEST. */
/* Use extract_floating() rather than floatformat_to_doublest().
The latter is lossy in nature. Once GDB gets a host/target
independent and non-lossy FP it will become possible to bypass
extract_floating() and call floatformat*() directly. Note also
the assumptions about TARGET_LONG_DOUBLE above. */
value = extract_floating (tmp, len);
/* We try to print 19 digits. The last digit may or may not contain
--- 163,184 ----
DOUBLEST value;
int len = TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT;
char *tmp = alloca (len);
/* This code only works on targets where ... */
gdb_assert (TARGET_LONG_DOUBLE_FORMAT == &floatformat_i387_ext);
/* Take care of the padding. FP reg is 80 bits. The same value in
memory is 96 bits. */
gdb_assert (FPU_REG_RAW_SIZE < len);
! memcpy (tmp, raw, FPU_REG_RAW_SIZE);
! memset (tmp + FPU_REG_RAW_SIZE, 0, len - FPU_REG_RAW_SIZE);
/* Extract the value as a DOUBLEST. */
/* Use extract_floating() rather than floatformat_to_doublest().
The latter is lossy in nature. Once GDB gets a host/target
independent and non-lossy FP it will become possible to bypass
extract_floating() and call floatformat*() directly. Note also
the assumptions about TARGET_LONG_DOUBLE above. */
value = extract_floating (tmp, len);
/* We try to print 19 digits. The last digit may or may not contain
commented with "paranoia" into gdb_assert.
(select_event_lwp_callback): Likewise.
(cancel_breakpoints_callback): Bail out early if LP is the event
LWP. Add comment about backup up breakpoints. Fix formatting and
debug message.
(select_event_lwp): Make solely repsonsible for switching event
LWP. Fix formatting and remove bogus "ERROR" debug message.
Don't backup breakpoints from here.
(lin_lwp_wait): Don't touch LP->status, let select_event_lwp
handle that. Only call select_event_lwp if we're not waiting for
a specific LWP, i.e. when PID == -1. Backup breakpoints from here.
* lin-lwp.c: Prevent thread starvation by using a monte carlo
method to choose which of several event threads to handle next.
(stop_wait_callback): Defer pushback of breakpoint events until
later; add SIGTRAP events to the queue of unhandled events.
Keep calling waitpid until SIGSTOP retrieved. If more than one
non-SIGSTOP event is retrieved, push them back onto the process
queue using kill.
(count_events_callback, select_singlestep_lwp_callback,
select_event_lwp_callback, cancel_breakpoints_callback,
select_event_lwp): New functions. Implement monte carlo method
for selecting which of several SIGTRAP threads to handle next.
Push back the breakpoint event for all threads other than the
selected one.
(lin_lwp_wait): Call select_event_lwp to decide which of several
sigtrapped lwps to handle next.
(resume_callback): Disable code that attempts to handle
step_resume breakpoints. Let core gdb handle this.
show_regs, d10v_read_pc, d10v_write_pc, d10v_read_sp,
d10v_write_sp, d10v_write_fp, d10v_read_fp,
d10v_push_return_address): Call the functions d10v_make_daddr,
d10v_make_iaddr, d10v_convert_iaddr_to_raw, and
d10v_convert_daddr_to_raw, not the global macros D10V_MAKE_DADDR,
D10V_MAKE_IADDR, D10V_CONVERT_IADDR_TO_RAW, and
D10V_CONVERT_DADDR_TO_RAW.
structure and not macros.
(Host Definition): Document that much of this chapter is obsolete.
(Target Architecture Definition): Update list of files that make
up a target architecture.
(Coding): Update.
(read_partial_die): Delete fourth argument; we return this info in
the struct partial_die_info object itself now.
(dwarf2_build_psymtabs_hard, scan_partial_symbols): Use the
has_pc_info field of the partial die struct, rather than passing a
variable by reference to read_partial_die.
code in loop condition. This seemed to be trying to round
info_ptr up to the next four-byte boundary, but that's not what it
actually did. If we discover the problem the old code was really
trying to address, we can fix it properly.
* thread-db.c (attach_thread): Check for TD_THR_ZOMBIE in addition
to TD_THR_UNKNOWN when looking for defunct zombie threads.
(thread_db_thread_alive): Ditto.
(find_new_threads_callback): Ditto.
(get_hex_word): Don't use HOST_BYTE_ORDER.
(array_fetch_registers): Add variable ``reg''. Use
store_unsigned_integer to byte-swap the register. Delete unused
local ``regs''.
* infrun.c (handle_inferior_event): Replace prev_pc test in all
calls to bpstat_stop_status (removed in 1999-09-24). This test
helps distinguish stepping over a breakpoint trap from stepping
thru a jump to the instruction after a breakpoint trap.
(handle_inferior_event): Don't bother writing the PC if
DECR_PC_AFTER_BREAK is zero (optimization).
* breakpoint.c (bpstat_stop_status): Add comment explaining the
purpose and usage of the "not_a_breakpoint" argument in computing
the breakpoint address.
* monitor.c (setmem_resp_delim_pattern): New regexp pattern.
(setreg_resp_delim_pattern): Likewise.
(setmem_resp_delim_fastmap): New buffer.
(setreg_resp_delim_fastmap): Likewise.
(monitor_open): Initialize above regexp if they are defined.
(monitor_write_memory): Use regexp to check the result of write.
(monitor_store_register): Likewise to check result of register set.
* infrun.c: Eliminate the "thread_step_needed" state variable,
and replace it with a relatively simple test in resume.
(resume): Replace thread_step_needed logic with a test for
stepping, breakpoint_here_p and breakpoints_inserted.
Move CANNOT_STEP_BREAKPOINT logic to after thread_step logic.
(proceed): Discard thread_step_needed logic.
(wait_for_inferior, fetch_inferior_event, handle_inferior_event):
Discard thread_step_needed logic.
* remote-rdi.c (arm_rdi_wait): Fix return type in prototype.
* rdi-share/host.h: Add missing parenthesis in conditional.
2001-06-22 J.T. Conklin <jtc@redback.com>
* configure.in: include nlist.h when checking for member som_addr
in struct so_map.
* configure: regenerate.
suppress_output.
(mi_begin, mi_end): Check suppress_header.
(mi_field_int, mi_field_skip): Ditto.
(mi_field_string, mi_field_fmt): Ditto.
(mi_table_begin): When nr_rows is zero, set suppress_header else,
output the start of the header.
(mi_table_body): Clear suppress header.
definitions. Generate an error when both pure multi-arch and
"tm.h".
* gdbarch.h, gdbarch.c: Regenerate.
* defs.h (GDB_MULTI_ARCH_TM): Rewrite definition.
* infrun.c (context_switch): New function. Abstract the operation
of saving and restoring infrun's state when switching threads.
(handle_inferior_event): Normalize the handling of the 'thread hop'
event (when the wrong thread hits a thread-specific breakpoint,
and we need to solo-step that thread past the breakpoint).
Call keep_going, instead of target_resume. Handle the subsequent
singlestep-trap as a normal event instead of just resuming.
(EXTRACT_STRUCT_VALUE_ADDRESS): Change to a function with
predicate.
* gdbarch.h, gdbarch.c: Regenerate.
* values.c (value_being_returned): Change the reference to
EXTRACT_STRUCT_VALUE_ADDRESS_P to a function call.
* remote.c (show_remote_protocol_qSymbol_packet_cmd,
set_remote_protocol_qSymbol_packet_cmd): New functions.
(init_all_packet_configs, show_remote_cmd): Add qSymbol packet.
(remote_check_symbols): New function. Implement qSymbol packet,
allowing target to request symbol lookup service from gdb.
(remote_open_1, remote_async_open_1): Call remote_check_symbols,
allowing symbol lookup from exec_bfd on connection to target.
(remote_new_objfile): New function. Catch new objfile notifications
from shared library module, and call remote_check_symbols.
(_initialize_remote): Hook remote_new_objfile into the shared
library notification chain. Add "set remote symbol-lookup" command.
* gdbthread.h (struct thread_info): Add new fields:
current_line, current_symtab, step_sp, for saved infrun state.
* thread.c (save_infrun_state, load_infrun_state): Save and
restore current_line, current_symtab, and step_sp.
(add_thread): Rather than adding assignments to initialize
the new fields, just use memset (tp, 0, sizeof (*tp).
This way future new fields will not be overlooked.
* infrun.c (handle_inferior_event): Save and restore save_sp,
current_line, and current_symtab when switching threads.
(line_completion_function): If we are completing on locations,
back up the start of word pointer past all characters which can
appear in a location spec.
(location_completer): New function.
* completer.h: Add prototype for location_completer.
* symtab.c (make_source_files_completion_list)
(add_filename_to_list, not_interesting_fname): New functions.
(filename_seen): New function, body extracted from
output_source_filename.
(output_source_filename): Call filename_seen to check if the file
was already printed.
(make_symbol_completion_list): If TEXT includes a
double-quoted string, return an empty list, not NULL.
(make_file_symbol_completion_list): New function, similar to
make_symbol_completion_list but with an additional argument
SRCFILE.
* symtab.h (make_file_symbol_completion_list)
(make_source_files_completion_list): Add prototypes.
* breakpoint.c (_initialize_breakpoint): Make location_completer
be the completion function for all commands which set breakpoints
and watchpoints.
(top-level): #include "completer.h".
* tracepoint.c (_initialize_tracepoint): Make location_completer
be the completion function for the "trace" command.
(top-level): #include "completer.h".
* printcmd.c (_initialize_printcmd): Make location_completer be
the completion function for the "print", "inspect", "call", and
"disassemble" commands.
(top-level): #include "completer.h".
* infcmd.c (_initialize_infcmd): Make location_completer be the
completion function for the "go", "jump", and "until" commands.
(top-level): #include "completer.h".
* breakpoint.c (delete_breakpoint): Pass mark_inserted to
remove_breakpoint, so that the subsequent test for
bpt->inserted will succeed, and duplicates will be fixed up.
a little more portable.
Don't use shell's echo command to put strings containing
escaped characeters into a file -- different flavors of /bin/sh
require differnt levels of escaping. Use cat <<EOF instead.
Our internal field separator is a colon. Change all
commands which assume it is a space.
(iterate_over_lwps): Make sure we can handle CALLBACK deleting the
LWP it's called for.
(lin_lwp_attach): Mark LWP as resumed to make sure the fake
SIGSTOP is reported.
(resume_clear_callback): New function.
(resume_set_callback): New function.
(lin_lwp_resume): Mark all LWP's that we're going to resume as
resumed, and unmark all others.
(status_callback): Only report a pending wait status if we pretend
that LP has been resumed.
(resumed_callback): New function.
(lin_lwp_wait): Add assertions to check that LWP's are properly
marked as resumed. Partially revert 2001-05-25 patch by Michael
Snyder: do not resume all threads. Add comment explaining the
problems associated with this bit of code.
* config/mips/irix6.mh: New file.
* config/mips/irix6.mt: New file.
* config/mips/xm-irix6.h: New file.
* config/mips/nm-irix6.h: New file.
* mips-tdep.c (mips_gdbarch_init) <MIPS_ABI_N32>: Set up the
disassembler info in tm_print_insn_info as appropriate for the N32
ABI. Force N32 ABI to be the default if the CPU is R8000 or
R10000.
* configure.tgt (mips*-sgi-irix6*): Map to irix6.
* configure.host (mips*-sgi-irix6*): Ditto.
* gdb.threads/pthreads.exp (check_control_c): Return 0 for success,
non-zero if control_c fails. Terminate the test on failure,
rather than wait for 12 more tests to time out.
stopped due to a Ctrl-C as well as breakpoints.
* hppa-tdep.c (hppa_prepare_to_proceed): Add FIXME as this may not
support thread switches after Ctrl-C.
* lin-lwp.c (lin_lwp_prepare_to_proceed): Ditto.
* linux-thread.c (linuxthreads_prepare_to_proceed): Ditto.
* m3-nat.c (mach3_prepare_to_proceed): Ditto.
instead of system-specific define's like _WIN32 and __MSDOS__.
Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH instead of SLASH_P and
ROOTED_P.
(top-level): #include "filenames.h".
* solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH
instead of SLASH_CHAR, ROOTED_P and SLASH_P.
(top-level): #include "filenames.h".
* defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions.
(SLASH_STRING): Define only for _WIN32.
* completer.c: Use HAVE_DOS_BASED_FILE_SYSTEM instead of
__MSDOS_.
* cli/cli-cmds.c (cd_command): Use IS_DIR_SEPARATOR and
IS_ABSOLUTE_PATH instead of SLASH_P and ROOTED_P. Replace
system-specific ifdefs with HAVE_DOS_BASED_FILE_SYSTEM.
(top-level): #include "filenames.h".