(tui_is_window_visible): Declare.
* tui.c (tui_show_assembly): New function.
(tui_is_window_visible): New function.
(tui_get_command_dimension): New function.
(tui_delete_other_windows): New function.
(tui_initialize_readline): Bind them to C-X 1 and C-X 2.
(tui_enable): Enable the keypad; call tui_update_variables.
(strcat_to_buf_with_fmt): Remove.
* tui.c (tui_switch_mode): New function.
(tui_initialize_readline): New function.
(tui_enable): New function.
(tui_disable): New function.
(tuiGetLowDisassemblyAddress): Use CORE_ADDR, cleanup.
(tui_vSelectSourceSymtab): Remove.
(tuiInitWindows): Remove.
(_initialize_tui): Remove.
(_tuiReset): Keep but put arround #if 0.
* tuiIO.c: New management for curses and gdb terminal interactions.
(tui_tputs): Remove.
(tuiTermSetup, tuiTermUnsetup): Remove, must use normal curses ops.
(tuiBufferGetc, tui_vStartNewLines, _updateCommandInfo): Remove.
(tui_owns_terminal): Remove.
(tui_redisplay_readline): New function.
(tui_puts): New function.
(tui_prep_terminal): New function.
(tui_deprep_terminal): New function.
(tui_getc): Rename of tuiGetc, simplify and fix.
(tui_setup_io): New function.
(tui_initialize_io): New function.
* tuiWin.h: Declare the new variables.
* tuiWin.c (_initialize_tuiWin): Create TUI configuration variables.
(tui_update_variables): New function.
(translate): New function.
(tui_border_kind_enums, tui_border_mode_enums): New tables.
(tui_border_mode_translate): New table.
(tui_border_kind_translate_*): New tables.
(tui_active_border_mode): New variables.
(tui_border_*): New variables.
and defined to 1K for m68hc11.
(random_data): Reduce table to 1K for embedded platforms (68hc11).
* gdb.base/remote.exp (get_sizeof): New function from sizeof.exp.
(sizeof_random_data): New variable to tell the size of the data table;
don't test past this size; always run to main.
each register window.
(tuiCheckRegisterValues): Use REGISTER_RAW_SIZE to obtain the size
of the register to check.
(_tuiRegValueHasChanged): Likewise.
(_tuiRegisterName): Use REGISTER_NAME.
(tui_restore_gdbout): New function.
(_tuiRegisterFormat): Use do_registers_info with gdb_stdout redirected
to a string.
(START_SPECIAL_REGS): Define.
(_tuiGetRegisterRawValue): Use get_saved_register.
(_tuiDisplayRegister): Fix clearing of register window.
by appropriate warning hook.
(print_source_lines): Remove tui hacks, must be replaced by cli.
(forward_search_command): Remove tui hacks, can be replaced by
appropriate calls to identify_source_line when tui scrolls.
(reverse_search_command): Likewise.
(tuiShowFrameInfo): Don't crash when there is no symbol table
associated with the pc.
* tuiSource.c (_hasBreak): Check for null source file.
* tuiWin.c (tuiRefreshAll): Check for null winList[type].
(_tuiSetFocus): Check for null dataWin.
* tuiGeneralWin.c (refreshAll): Check for null list[type].
(TuiGenWinInfo, TuiGenWinInfoPtr): Move from here.
* tuiData.h: To here; include curses includes here.
(setTermHeightTo): Rename of setTermHeight to follow reality.
(setTermWidthTo): Likewise with setTermWidth.
call to chdir on this symbol rather than on __DJGPP__.
(CANT_FORK) [__MSDOS__]: Move from here...
* defs.h (CANT_FORK) [__MSDOS__]: ...to here.
(GLOBAL_CURDIR) [__MSDOS__]: Define.
* top.c (quit_cover, float_handler): Move definition up before use.
(gdb_init): Move to end of file, to avoid calls to not yet defined
functions.
Delete prototypes.
* top.c (command_loop): Remove tui insert_mode hacks; don't call
tuiCleanUp because this must be made with atexit by tui.
* symfile.c (symbol_file_command): Remove call to TUIDO
* stack.c (show_and_print_stack_frame_stub): Remove tui check;
not necessary when using the selected frame hooks.
(print_stack_frame_stub): Likewise.
(print_frame_info_base): Likewise.
(print_frame_info): Likewise.
(up_silently_command): Likewise.
(down_silently_command): Likewise.
(show_stack_frame): Likewise for TUIDO.
(select_frame): Likewise.
(select_and_print_frame): Likewise.
(stack_publish_stopped_with_no_frame): Remove.
(select_and_maybe_print_frame): Remove.
* main.c (captured_main): Remove tui_fileopen and tuiInit; tui
must use the initialize ui hook.
* infrun.c (normal_stop): Remove call to TUIDO; tui must use the
selected frame hooks.
* event-top.c (command_handler): Remove tui insert_mode hack.
* defs.h: Remove TUIDO; Only include tui.h.
* breakpoint.c (mention): Remove calls to TUIDO.
(delete_breakpoint): Remove tui hacks; tui must install
the breakpoint hooks.
* 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.