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.
This commit is contained in:
John Gilmore 1992-10-03 05:28:42 +00:00
parent b89a86ac08
commit 34517ebc85
4 changed files with 31 additions and 16 deletions

View File

@ -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.

View File

@ -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);
}

View File

@ -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))

View File

@ -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 */