2003-03-29 Andrew Cagney <cagney@redhat.com>
* infttrace.h: New file. * hpread.c: Include "gdb_assert.h" and "somsolib.h". (hpread_get_textlow): Detect an uninitialized dn_bufp. (hpread_read_doc_function_type): Detect an initialized type1. (hpread_quick_traverse): Initialize mod_name_string. * somsolib.h: Add #ifdef SOMSOLIB_H wrapper. (som_solib_get_solib_by_pc): Declare. (so_lib_thread_start_addr): Declare. (no_shared_libraries): Declare. * somread.c (init_import_symbols): Make static. Add forward declaration. * config/pa/nm-hppah.h: Include "infttrace.h" for parent_attach_all. (hppa_insert_hw_watchpoint): Declare. (hppa_can_use_hw_watchpoint, hppa_remove_hw_watchpoint): Declare. * hppah-nat.c: Include "gdb_string.h". (parent_attach_all): Delete extern declaration, moved to "infttrace.h". (hppa_can_use_hw_watchpoint): Change type of "type" parameter to int. (hppa_remove_hw_watchpoint, hppa_insert_hw_watchpoint): Ditto. * Makefile.in (infttrace_h): Define. (hpread.o): Update dependencies. (hppah-nat.o, hppa-hpux-tdep.o, hppa-tdep.o): Ditto. * hppa-hpux-tdep.c: Include "gdb_string.h". * hppa-tdep.c (hppa_frame_saved_pc): Initialize "old_pc". * infrun.c (handle_inferior_event): Always initialize stepped_after_stopped_by_watchpoint. Add default and remove fallthrough in switch statement. * infttrace.c (hppa_can_use_hw_watchpoint): Change type of "type" parameter to int. (hppa_remove_hw_watchpoint): Ditto.
This commit is contained in:
parent
2c3bbe771a
commit
65e82032f2
12 changed files with 134 additions and 20 deletions
|
@ -1,3 +1,38 @@
|
||||||
|
2003-03-29 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
|
* infttrace.h: New file.
|
||||||
|
* hpread.c: Include "gdb_assert.h" and "somsolib.h".
|
||||||
|
(hpread_get_textlow): Detect an uninitialized dn_bufp.
|
||||||
|
(hpread_read_doc_function_type): Detect an initialized type1.
|
||||||
|
(hpread_quick_traverse): Initialize mod_name_string.
|
||||||
|
* somsolib.h: Add #ifdef SOMSOLIB_H wrapper.
|
||||||
|
(som_solib_get_solib_by_pc): Declare.
|
||||||
|
(so_lib_thread_start_addr): Declare.
|
||||||
|
(no_shared_libraries): Declare.
|
||||||
|
* somread.c (init_import_symbols): Make static. Add forward
|
||||||
|
declaration.
|
||||||
|
* config/pa/nm-hppah.h: Include "infttrace.h" for
|
||||||
|
parent_attach_all.
|
||||||
|
(hppa_insert_hw_watchpoint): Declare.
|
||||||
|
(hppa_can_use_hw_watchpoint, hppa_remove_hw_watchpoint): Declare.
|
||||||
|
* hppah-nat.c: Include "gdb_string.h".
|
||||||
|
(parent_attach_all): Delete extern declaration, moved to
|
||||||
|
"infttrace.h".
|
||||||
|
(hppa_can_use_hw_watchpoint): Change type of "type" parameter to
|
||||||
|
int.
|
||||||
|
(hppa_remove_hw_watchpoint, hppa_insert_hw_watchpoint): Ditto.
|
||||||
|
* Makefile.in (infttrace_h): Define.
|
||||||
|
(hpread.o): Update dependencies.
|
||||||
|
(hppah-nat.o, hppa-hpux-tdep.o, hppa-tdep.o): Ditto.
|
||||||
|
* hppa-hpux-tdep.c: Include "gdb_string.h".
|
||||||
|
* hppa-tdep.c (hppa_frame_saved_pc): Initialize "old_pc".
|
||||||
|
* infrun.c (handle_inferior_event): Always initialize
|
||||||
|
stepped_after_stopped_by_watchpoint. Add default and remove
|
||||||
|
fallthrough in switch statement.
|
||||||
|
* infttrace.c (hppa_can_use_hw_watchpoint): Change type of "type"
|
||||||
|
parameter to int.
|
||||||
|
(hppa_remove_hw_watchpoint): Ditto.
|
||||||
|
|
||||||
2003-03-29 Andrew Cagney <cagney@redhat.com>
|
2003-03-29 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
* ns32k-tdep.c (ns32k_gdbarch_init): Set the call dummy breakpoint
|
* ns32k-tdep.c (ns32k_gdbarch_init): Set the call dummy breakpoint
|
||||||
|
|
|
@ -722,6 +722,7 @@ symtab_h = symtab.h
|
||||||
target_h = target.h $(bfd_h) $(symtab_h) $(dcache_h) $(memattr_h)
|
target_h = target.h $(bfd_h) $(symtab_h) $(dcache_h) $(memattr_h)
|
||||||
terminal_h = terminal.h
|
terminal_h = terminal.h
|
||||||
top_h = top.h
|
top_h = top.h
|
||||||
|
infttrace_h = infttrace.h
|
||||||
tracepoint_h = tracepoint.h
|
tracepoint_h = tracepoint.h
|
||||||
typeprint_h = typeprint.h
|
typeprint_h = typeprint.h
|
||||||
ui_file_h = ui-file.h
|
ui_file_h = ui-file.h
|
||||||
|
@ -1743,11 +1744,12 @@ h8500-tdep.o: h8500-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbtypes_h) \
|
||||||
hpacc-abi.o: hpacc-abi.c $(defs_h) $(value_h) $(gdb_regex_h) $(gdb_string_h) \
|
hpacc-abi.o: hpacc-abi.c $(defs_h) $(value_h) $(gdb_regex_h) $(gdb_string_h) \
|
||||||
$(gdbtypes_h) $(gdbcore_h) $(cp_abi_h)
|
$(gdbtypes_h) $(gdbcore_h) $(cp_abi_h)
|
||||||
hppa-tdep.o: hppa-tdep.c $(defs_h) $(frame_h) $(bfd_h) $(inferior_h) \
|
hppa-tdep.o: hppa-tdep.c $(defs_h) $(frame_h) $(bfd_h) $(inferior_h) \
|
||||||
$(value_h) $(regcache_h) $(completer_h) $(symtab_h) $(a_out_encap_h) \
|
$(value_h) $(regcache_h) $(completer_h) $(language_h) $(osabi_h) \
|
||||||
|
$(gdb_assert_h) $(infttrace_h) $(symtab_h) $(a_out_encap_h) \
|
||||||
$(gdb_stat_h) $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) \
|
$(gdb_stat_h) $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) \
|
||||||
$(symfile_h) $(objfiles_h) $(language_h) $(osabi_h) $(gdb_assert_h)
|
$(symfile_h) $(objfiles_h)
|
||||||
hppa-hpux-tdep.o: hppa-hpux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
|
hppa-hpux-tdep.o: hppa-hpux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
|
||||||
$(osabi_h)
|
$(osabi_h) $(gdb_string_h)
|
||||||
hppab-nat.o: hppab-nat.c $(defs_h) $(inferior_h) $(target_h) $(regcache_h)
|
hppab-nat.o: hppab-nat.c $(defs_h) $(inferior_h) $(target_h) $(regcache_h)
|
||||||
hppah-nat.o: hppah-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
|
hppah-nat.o: hppah-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
|
||||||
$(gdb_wait_h) $(regcache_h)
|
$(gdb_wait_h) $(regcache_h)
|
||||||
|
@ -1756,7 +1758,7 @@ hppam3-nat.o: hppam3-nat.c $(defs_h) $(inferior_h) $(floatformat_h) \
|
||||||
hpread.o: hpread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(hp_symtab_h) \
|
hpread.o: hpread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(hp_symtab_h) \
|
||||||
$(syms_h) $(symtab_h) $(symfile_h) $(objfiles_h) $(buildsym_h) \
|
$(syms_h) $(symtab_h) $(symfile_h) $(objfiles_h) $(buildsym_h) \
|
||||||
$(complaints_h) $(gdb_stabs_h) $(gdbtypes_h) $(demangle_h) \
|
$(complaints_h) $(gdb_stabs_h) $(gdbtypes_h) $(demangle_h) \
|
||||||
$(gdb_string_h)
|
$(somsolib_h) $(gdb_assert_h) $(gdb_string_h)
|
||||||
hpux-thread.o: hpux-thread.c $(defs_h) $(gdbthread_h) $(target_h) \
|
hpux-thread.o: hpux-thread.c $(defs_h) $(gdbthread_h) $(target_h) \
|
||||||
$(inferior_h) $(regcache_h) $(gdb_stat_h) $(gdbcore_h)
|
$(inferior_h) $(regcache_h) $(gdb_stat_h) $(gdbcore_h)
|
||||||
i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
|
i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
|
||||||
|
@ -2112,7 +2114,7 @@ remote.o: remote.c $(defs_h) $(gdb_string_h) $(inferior_h) $(bfd_h) \
|
||||||
$(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) $(gdb_stabs_h) \
|
$(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) $(gdb_stabs_h) \
|
||||||
$(gdbthread_h) $(remote_h) $(regcache_h) $(value_h) $(gdb_assert_h) \
|
$(gdbthread_h) $(remote_h) $(regcache_h) $(value_h) $(gdb_assert_h) \
|
||||||
$(event_loop_h) $(event_top_h) $(inf_loop_h) $(serial_h) \
|
$(event_loop_h) $(event_top_h) $(inf_loop_h) $(serial_h) \
|
||||||
$(gdbcore_h)
|
$(gdbcore_h) $(solib_h)
|
||||||
rom68k-rom.o: rom68k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
|
rom68k-rom.o: rom68k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
|
||||||
$(serial_h) $(regcache_h) $(value_h) $(m68k_tdep_h)
|
$(serial_h) $(regcache_h) $(value_h) $(m68k_tdep_h)
|
||||||
rs6000-nat.o: rs6000-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
|
rs6000-nat.o: rs6000-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
|
||||||
|
|
|
@ -117,6 +117,7 @@ extern int hppa_require_detach (int, int);
|
||||||
|
|
||||||
/* The PA can watch any number of locations (generic routines already check
|
/* The PA can watch any number of locations (generic routines already check
|
||||||
that all intermediates are in watchable memory locations). */
|
that all intermediates are in watchable memory locations). */
|
||||||
|
extern int hppa_can_use_hw_watchpoint (int type, int cnt, int ot);
|
||||||
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) \
|
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) \
|
||||||
hppa_can_use_hw_watchpoint(type, cnt, ot)
|
hppa_can_use_hw_watchpoint(type, cnt, ot)
|
||||||
|
|
||||||
|
@ -198,9 +199,13 @@ extern void hppa_enable_page_protection_events (int);
|
||||||
extern void hppa_disable_page_protection_events (int);
|
extern void hppa_disable_page_protection_events (int);
|
||||||
|
|
||||||
/* Use these macros for watchpoint insertion/deletion. */
|
/* Use these macros for watchpoint insertion/deletion. */
|
||||||
|
extern int hppa_insert_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len,
|
||||||
|
int type);
|
||||||
#define target_insert_watchpoint(addr, len, type) \
|
#define target_insert_watchpoint(addr, len, type) \
|
||||||
hppa_insert_hw_watchpoint (PIDGET (inferior_ptid), addr, (LONGEST)(len), type)
|
hppa_insert_hw_watchpoint (PIDGET (inferior_ptid), addr, (LONGEST)(len), type)
|
||||||
|
|
||||||
|
extern int hppa_remove_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len,
|
||||||
|
int type);
|
||||||
#define target_remove_watchpoint(addr, len, type) \
|
#define target_remove_watchpoint(addr, len, type) \
|
||||||
hppa_remove_hw_watchpoint (PIDGET (inferior_ptid), addr, (LONGEST)(len), type)
|
hppa_remove_hw_watchpoint (PIDGET (inferior_ptid), addr, (LONGEST)(len), type)
|
||||||
|
|
||||||
|
@ -265,3 +270,5 @@ extern int hppa_resume_execd_vforking_child_to_get_parent_vfork (void);
|
||||||
#define MAY_FOLLOW_EXEC (1)
|
#define MAY_FOLLOW_EXEC (1)
|
||||||
|
|
||||||
#define USE_THREAD_STEP_NEEDED (1)
|
#define USE_THREAD_STEP_NEEDED (1)
|
||||||
|
|
||||||
|
#include "infttrace.h" /* For parent_attach_all. */
|
||||||
|
|
|
@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
#include "arch-utils.h"
|
#include "arch-utils.h"
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
#include "osabi.h"
|
#include "osabi.h"
|
||||||
|
#include "gdb_string.h"
|
||||||
|
|
||||||
/* Forward declarations. */
|
/* Forward declarations. */
|
||||||
extern void _initialize_hppa_hpux_tdep (void);
|
extern void _initialize_hppa_hpux_tdep (void);
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "osabi.h"
|
#include "osabi.h"
|
||||||
#include "gdb_assert.h"
|
#include "gdb_assert.h"
|
||||||
|
#include "infttrace.h"
|
||||||
/* For argument passing to the inferior */
|
/* For argument passing to the inferior */
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
|
|
||||||
|
@ -886,7 +886,7 @@ hppa_frame_saved_pc (struct frame_info *frame)
|
||||||
{
|
{
|
||||||
CORE_ADDR pc = get_frame_pc (frame);
|
CORE_ADDR pc = get_frame_pc (frame);
|
||||||
struct unwind_table_entry *u;
|
struct unwind_table_entry *u;
|
||||||
CORE_ADDR old_pc;
|
CORE_ADDR old_pc = 0;
|
||||||
int spun_around_loop = 0;
|
int spun_around_loop = 0;
|
||||||
int rp_offset = 0;
|
int rp_offset = 0;
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
#include "gdb_wait.h"
|
#include "gdb_wait.h"
|
||||||
#include "regcache.h"
|
#include "regcache.h"
|
||||||
|
#include "gdb_string.h"
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
extern CORE_ADDR text_end;
|
extern CORE_ADDR text_end;
|
||||||
|
@ -785,8 +786,6 @@ startup_semaphore_t;
|
||||||
|
|
||||||
static startup_semaphore_t startup_semaphore;
|
static startup_semaphore_t startup_semaphore;
|
||||||
|
|
||||||
extern int parent_attach_all (int, PTRACE_ARG3_TYPE, int);
|
|
||||||
|
|
||||||
#ifdef PT_SETTRC
|
#ifdef PT_SETTRC
|
||||||
/* This function causes the caller's process to be traced by its
|
/* This function causes the caller's process to be traced by its
|
||||||
parent. This is intended to be called after GDB forks itself,
|
parent. This is intended to be called after GDB forks itself,
|
||||||
|
@ -907,14 +906,13 @@ hppa_insert_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len, int type)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
hppa_remove_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len,
|
hppa_remove_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len, int type)
|
||||||
enum bptype type)
|
|
||||||
{
|
{
|
||||||
error ("Hardware watchpoints not implemented on this platform.");
|
error ("Hardware watchpoints not implemented on this platform.");
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
hppa_can_use_hw_watchpoint (enum bptype type, int cnt, enum bptype ot)
|
hppa_can_use_hw_watchpoint (int type, int cnt, int ot)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
19
gdb/hpread.c
19
gdb/hpread.c
|
@ -35,6 +35,8 @@
|
||||||
#include "gdb-stabs.h"
|
#include "gdb-stabs.h"
|
||||||
#include "gdbtypes.h"
|
#include "gdbtypes.h"
|
||||||
#include "demangle.h"
|
#include "demangle.h"
|
||||||
|
#include "somsolib.h"
|
||||||
|
#include "gdb_assert.h"
|
||||||
|
|
||||||
/* Private information attached to an objfile which we use to find
|
/* Private information attached to an objfile which we use to find
|
||||||
and internalize the HP C debug symbols within that objfile. */
|
and internalize the HP C debug symbols within that objfile. */
|
||||||
|
@ -1024,7 +1026,7 @@ hpread_quick_traverse (struct objfile *objfile, char *gntt_bits,
|
||||||
while (VALID_CURR_FILE || VALID_CURR_MODULE)
|
while (VALID_CURR_FILE || VALID_CURR_MODULE)
|
||||||
{
|
{
|
||||||
|
|
||||||
char *mod_name_string;
|
char *mod_name_string = NULL;
|
||||||
char *full_name_string;
|
char *full_name_string;
|
||||||
|
|
||||||
/* First check for modules like "version.c", which have no code
|
/* First check for modules like "version.c", which have no code
|
||||||
|
@ -2321,7 +2323,7 @@ static unsigned long
|
||||||
hpread_get_textlow (int global, int index, struct objfile *objfile,
|
hpread_get_textlow (int global, int index, struct objfile *objfile,
|
||||||
int symcount)
|
int symcount)
|
||||||
{
|
{
|
||||||
union dnttentry *dn_bufp;
|
union dnttentry *dn_bufp = NULL;
|
||||||
struct minimal_symbol *msymbol;
|
struct minimal_symbol *msymbol;
|
||||||
|
|
||||||
/* Look for a DNTT_TYPE_FUNCTION symbol. */
|
/* Look for a DNTT_TYPE_FUNCTION symbol. */
|
||||||
|
@ -2340,6 +2342,11 @@ hpread_get_textlow (int global, int index, struct objfile *objfile,
|
||||||
&& index < symcount);
|
&& index < symcount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* NOTE: cagney/2003-03-29: If !(index < symcount), dn_bufp is left
|
||||||
|
undefined and that means that the test below is using a garbage
|
||||||
|
pointer from the stack. */
|
||||||
|
gdb_assert (dn_bufp != NULL);
|
||||||
|
|
||||||
/* Avoid going past a DNTT_TYPE_END when looking for a DNTT_TYPE_FUNCTION. This
|
/* Avoid going past a DNTT_TYPE_END when looking for a DNTT_TYPE_FUNCTION. This
|
||||||
might happen when a sourcefile has no functions. */
|
might happen when a sourcefile has no functions. */
|
||||||
if (dn_bufp->dblock.kind == DNTT_TYPE_END)
|
if (dn_bufp->dblock.kind == DNTT_TYPE_END)
|
||||||
|
@ -3359,10 +3366,10 @@ static struct type *
|
||||||
hpread_read_doc_function_type (dnttpointer hp_type, union dnttentry *dn_bufp,
|
hpread_read_doc_function_type (dnttpointer hp_type, union dnttentry *dn_bufp,
|
||||||
struct objfile *objfile, int newblock)
|
struct objfile *objfile, int newblock)
|
||||||
{
|
{
|
||||||
struct type *type, *type1;
|
|
||||||
struct pending *syms;
|
struct pending *syms;
|
||||||
struct pending *local_list = NULL;
|
struct pending *local_list = NULL;
|
||||||
int nsyms = 0;
|
int nsyms = 0;
|
||||||
|
struct type *type;
|
||||||
dnttpointer param;
|
dnttpointer param;
|
||||||
union dnttentry *paramp;
|
union dnttentry *paramp;
|
||||||
char *name;
|
char *name;
|
||||||
|
@ -3378,11 +3385,17 @@ hpread_read_doc_function_type (dnttpointer hp_type, union dnttentry *dn_bufp,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
struct type *type1 = NULL;
|
||||||
/* Nope, so read it in and store it away. */
|
/* Nope, so read it in and store it away. */
|
||||||
if (dn_bufp->dblock.kind == DNTT_TYPE_DOC_FUNCTION ||
|
if (dn_bufp->dblock.kind == DNTT_TYPE_DOC_FUNCTION ||
|
||||||
dn_bufp->dblock.kind == DNTT_TYPE_DOC_MEMFUNC)
|
dn_bufp->dblock.kind == DNTT_TYPE_DOC_MEMFUNC)
|
||||||
type1 = lookup_function_type (hpread_type_lookup (dn_bufp->ddocfunc.retval,
|
type1 = lookup_function_type (hpread_type_lookup (dn_bufp->ddocfunc.retval,
|
||||||
objfile));
|
objfile));
|
||||||
|
/* NOTE: cagney/2003-03-29: Oh, no not again. TYPE1 is
|
||||||
|
potentially left undefined here. Assert it isn't and hope
|
||||||
|
the assert never fails ... */
|
||||||
|
gdb_assert (type1 != NULL);
|
||||||
|
|
||||||
replace_type (type, type1);
|
replace_type (type, type1);
|
||||||
|
|
||||||
/* Mark it -- in the middle of processing */
|
/* Mark it -- in the middle of processing */
|
||||||
|
|
19
gdb/infrun.c
19
gdb/infrun.c
|
@ -1153,6 +1153,11 @@ void
|
||||||
handle_inferior_event (struct execution_control_state *ecs)
|
handle_inferior_event (struct execution_control_state *ecs)
|
||||||
{
|
{
|
||||||
CORE_ADDR real_stop_pc;
|
CORE_ADDR real_stop_pc;
|
||||||
|
/* NOTE: cagney/2003-03-28: If you're looking at this code and
|
||||||
|
thinking that the variable stepped_after_stopped_by_watchpoint
|
||||||
|
isn't used, then you're wrong! The macro STOPPED_BY_WATCHPOINT,
|
||||||
|
defined in the file "config/pa/nm-hppah.h", accesses the variable
|
||||||
|
indirectly. Mutter something rude about the HP merge. */
|
||||||
int stepped_after_stopped_by_watchpoint;
|
int stepped_after_stopped_by_watchpoint;
|
||||||
int sw_single_step_trap_p = 0;
|
int sw_single_step_trap_p = 0;
|
||||||
|
|
||||||
|
@ -1165,7 +1170,15 @@ handle_inferior_event (struct execution_control_state *ecs)
|
||||||
case infwait_thread_hop_state:
|
case infwait_thread_hop_state:
|
||||||
/* Cancel the waiton_ptid. */
|
/* Cancel the waiton_ptid. */
|
||||||
ecs->waiton_ptid = pid_to_ptid (-1);
|
ecs->waiton_ptid = pid_to_ptid (-1);
|
||||||
/* Fall thru to the normal_state case. */
|
/* See comments where a TARGET_WAITKIND_SYSCALL_RETURN event
|
||||||
|
is serviced in this loop, below. */
|
||||||
|
if (ecs->enable_hw_watchpoints_after_wait)
|
||||||
|
{
|
||||||
|
TARGET_ENABLE_HW_WATCHPOINTS (PIDGET (inferior_ptid));
|
||||||
|
ecs->enable_hw_watchpoints_after_wait = 0;
|
||||||
|
}
|
||||||
|
stepped_after_stopped_by_watchpoint = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
case infwait_normal_state:
|
case infwait_normal_state:
|
||||||
/* See comments where a TARGET_WAITKIND_SYSCALL_RETURN event
|
/* See comments where a TARGET_WAITKIND_SYSCALL_RETURN event
|
||||||
|
@ -1179,6 +1192,7 @@ handle_inferior_event (struct execution_control_state *ecs)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case infwait_nullified_state:
|
case infwait_nullified_state:
|
||||||
|
stepped_after_stopped_by_watchpoint = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case infwait_nonstep_watch_state:
|
case infwait_nonstep_watch_state:
|
||||||
|
@ -1189,6 +1203,9 @@ handle_inferior_event (struct execution_control_state *ecs)
|
||||||
in combination correctly? */
|
in combination correctly? */
|
||||||
stepped_after_stopped_by_watchpoint = 1;
|
stepped_after_stopped_by_watchpoint = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
internal_error (__FILE__, __LINE__, "bad switch");
|
||||||
}
|
}
|
||||||
ecs->infwait_state = infwait_normal_state;
|
ecs->infwait_state = infwait_normal_state;
|
||||||
|
|
||||||
|
|
|
@ -5378,8 +5378,7 @@ hppa_insert_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len, int type)
|
||||||
watchpoints.
|
watchpoints.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
hppa_remove_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len,
|
hppa_remove_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len, int type)
|
||||||
enum bptype type)
|
|
||||||
{
|
{
|
||||||
CORE_ADDR page_start;
|
CORE_ADDR page_start;
|
||||||
int dictionary_is_empty;
|
int dictionary_is_empty;
|
||||||
|
@ -5439,7 +5438,7 @@ hppa_remove_hw_watchpoint (int pid, CORE_ADDR start, LONGEST len,
|
||||||
hardware support.
|
hardware support.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
hppa_can_use_hw_watchpoint (enum bptype type, int cnt, enum bptype ot)
|
hppa_can_use_hw_watchpoint (int type, int cnt, int ot)
|
||||||
{
|
{
|
||||||
return (type == bp_hardware_watchpoint);
|
return (type == bp_hardware_watchpoint);
|
||||||
}
|
}
|
||||||
|
|
28
gdb/infttrace.h
Normal file
28
gdb/infttrace.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* Low level Unix child interface to ttrace, for GDB when running under HP-UX.
|
||||||
|
|
||||||
|
Copyright 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GDB.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifndef INFTTRACE_H
|
||||||
|
#define INFTTRACE_H
|
||||||
|
|
||||||
|
extern int parent_attach_all (int, PTRACE_ARG3_TYPE, int);
|
||||||
|
extern pid_t hppa_switched_threads (pid_t gdb_pid);
|
||||||
|
|
||||||
|
#endif
|
|
@ -37,6 +37,8 @@
|
||||||
|
|
||||||
/* Various things we might complain about... */
|
/* Various things we might complain about... */
|
||||||
|
|
||||||
|
static int init_import_symbols (struct objfile *objfile);
|
||||||
|
|
||||||
static void som_symfile_init (struct objfile *);
|
static void som_symfile_init (struct objfile *);
|
||||||
|
|
||||||
static void som_new_init (struct objfile *);
|
static void som_new_init (struct objfile *);
|
||||||
|
@ -466,7 +468,7 @@ som_symfile_offsets (struct objfile *objfile, struct section_addr_info *addrs)
|
||||||
not defined there. (Variables that are imported are dealt
|
not defined there. (Variables that are imported are dealt
|
||||||
with as "loc_indirect" vars.)
|
with as "loc_indirect" vars.)
|
||||||
Return value = number of import symbols read in. */
|
Return value = number of import symbols read in. */
|
||||||
int
|
static int
|
||||||
init_import_symbols (struct objfile *objfile)
|
init_import_symbols (struct objfile *objfile)
|
||||||
{
|
{
|
||||||
unsigned int import_list;
|
unsigned int import_list;
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
Written by the Center for Software Science at the Univerity of Utah
|
Written by the Center for Software Science at the Univerity of Utah
|
||||||
and by Cygnus Support. */
|
and by Cygnus Support. */
|
||||||
|
|
||||||
|
#ifndef SOMSOLIB_H
|
||||||
|
#define SOMSOLIB_H
|
||||||
|
|
||||||
/* Forward decl's for prototypes */
|
/* Forward decl's for prototypes */
|
||||||
struct target_ops;
|
struct target_ops;
|
||||||
struct objfile;
|
struct objfile;
|
||||||
|
@ -164,3 +167,12 @@ extern char *som_solib_address (CORE_ADDR); /* somsolib.c */
|
||||||
/* If ADDR lies in a shared library, return its name. */
|
/* If ADDR lies in a shared library, return its name. */
|
||||||
|
|
||||||
#define PC_SOLIB(addr) som_solib_address (addr)
|
#define PC_SOLIB(addr) som_solib_address (addr)
|
||||||
|
|
||||||
|
extern CORE_ADDR som_solib_get_solib_by_pc (CORE_ADDR addr);
|
||||||
|
|
||||||
|
struct so_list;
|
||||||
|
extern CORE_ADDR so_lib_thread_start_addr (struct so_list *so);
|
||||||
|
|
||||||
|
extern void no_shared_libraries (char *ignored, int from_tty);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue