aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1992-10-03 05:28:42 +0000
committerJohn Gilmore <gnu@cygnus>1992-10-03 05:28:42 +0000
commit34517ebc854c0fc0314823defa19c4d79e317e12 (patch)
tree1e7bb2468eaf7568d3fd82d2a779859986bae0e4 /gdb
parentb89a86ac08f28500baa404f73a4496dfd176b5c8 (diff)
downloadgdb-34517ebc854c0fc0314823defa19c4d79e317e12.zip
gdb-34517ebc854c0fc0314823defa19c4d79e317e12.tar.gz
gdb-34517ebc854c0fc0314823defa19c4d79e317e12.tar.bz2
Changes to make 29k function calls work better at Adobe.
* am29k-tdep.c (_initialize_29k): Make it possible for the user to set and query the address where function calls into the inferior write a small scratch routine. `set call_scratch_address' * inferior.h (PC_IN_CALL_DUMMY): Fix fencepost error. * remote.c (remote_prepare_to_store): Only fetch regs if they are not already cached validly.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/am29k-tdep.c10
-rw-r--r--gdb/inferior.h22
-rw-r--r--gdb/remote.c6
4 files changed, 31 insertions, 16 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1024126..d142e62 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+Fri Oct 2 22:04:42 1992 John Gilmore (gnu@cygnus.com)
+
+ * am29k-tdep.c (_initialize_29k): Make it possible for the
+ user to set and query the address where function calls into the
+ inferior write a small scratch routine. `set call_scratch_address'
+ * inferior.h (PC_IN_CALL_DUMMY): Fix fencepost error.
+ * remote.c (remote_prepare_to_store): Only fetch regs if they are
+ not already cached validly.
+
Thu Oct 1 14:36:42 1992 K. Richard Pixley (rich@sendai.cygnus.com)
Rs6000 native support.
diff --git a/gdb/am29k-tdep.c b/gdb/am29k-tdep.c
index d5399b7..13aca9a 100644
--- a/gdb/am29k-tdep.c
+++ b/gdb/am29k-tdep.c
@@ -810,6 +810,8 @@ reginv_com (args, fromtty)
void
_initialize_29k()
{
+ extern CORE_ADDR text_end;
+
add_com ("reginv ", class_obscure, reginv_com,
"Invalidate gdb's internal register cache.");
@@ -821,4 +823,12 @@ _initialize_29k()
Attempts to access registers saved above this address will be ignored\n\
or will produce the value -1.", &setlist),
&showlist);
+
+ /* FIXME, there should be a way to make a CORE_ADDR variable settable. */
+ add_show_from_set
+ (add_set_cmd ("call_scratch_address", class_support, var_uinteger,
+ (char *)&text_end,
+"Set address in memory where small amounts of RAM can be used when\n\
+making function calls into the inferior.", &setlist),
+ &showlist);
}
diff --git a/gdb/inferior.h b/gdb/inferior.h
index c893f34..5db853e 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -153,7 +153,7 @@ terminal_inferior PARAMS ((void));
extern void
terminal_init_inferior PARAMS ((void));
-/* From infptrace.c or procfs.c */
+/* From infptrace.c */
extern int
attach PARAMS ((int));
@@ -173,24 +173,18 @@ call_ptrace PARAMS ((int, int, PTRACE_ARG3_TYPE, int));
/* From procfs.c */
-#ifdef USE_PROC_FS
-
extern int
proc_iterate_over_mappings PARAMS ((int (*) (int, CORE_ADDR)));
-extern int
-proc_wait PARAMS ((int *));
-
-extern void
-inferior_proc_init PARAMS ((int));
-
extern void
proc_signal_handling_change PARAMS ((void));
-extern void
-proc_set_exec_trap PARAMS ((void));
+/* From fork-child.c */
-#endif
+extern void
+fork_inferior PARAMS ((char *, char *, char **,
+ void (*) (void),
+ void (*) (int)));
/* From inflow.c */
@@ -326,13 +320,13 @@ extern int attach_flag;
extern CORE_ADDR text_end;
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
((pc) >= text_end - CALL_DUMMY_LENGTH \
- && (pc) < text_end + DECR_PC_AFTER_BREAK)
+ && (pc) <= text_end + DECR_PC_AFTER_BREAK)
#else /* Not before text_end. */
#if CALL_DUMMY_LOCATION == AFTER_TEXT_END
extern CORE_ADDR text_end;
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
((pc) >= text_end \
- && (pc) < text_end + CALL_DUMMY_LENGTH + DECR_PC_AFTER_BREAK)
+ && (pc) <= text_end + CALL_DUMMY_LENGTH + DECR_PC_AFTER_BREAK)
#else /* On stack. */
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
((sp) INNER_THAN (pc) && (pc) INNER_THAN (frame_address))
diff --git a/gdb/remote.c b/gdb/remote.c
index 86df56a..e7f2499 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -417,7 +417,7 @@ remote_wait (status)
unsigned char *p;
int i;
long regno;
- unsigned char regs[MAX_REGISTER_RAW_SIZE];
+ char regs[MAX_REGISTER_RAW_SIZE];
WSETEXIT ((*status), 0);
@@ -505,7 +505,8 @@ remote_fetch_registers (regno)
static void
remote_prepare_to_store ()
{
- remote_fetch_registers (-1);
+ /* Make sure the entire registers array is valid. */
+ read_register_bytes (0, (char *)NULL, REGISTER_BYTES);
}
/* Store the remote registers from the contents of the block REGISTERS.
@@ -1068,6 +1069,7 @@ Specify the serial device it is connected to (e.g. /dev/ttya).", /* to_doc */
NULL, /* to_lookup_symbol */
NULL, /* to_create_inferior */
NULL, /* to_mourn_inferior */
+ 0, /* to_can_run */
process_stratum, /* to_stratum */
NULL, /* to_next */
1, /* to_has_all_memory */