* arm-linux-tdep.c (arm_linux_extract_return_value): Make static.

(arm_linux_push_arguments): Likewise.
(arm_linux_init_abi): Register them.  Also register linux-specific
call_dummy_words.
(find_minsym_and_objfile): Use strcmp, not STREQ.
* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Delete.
(arm_linux_call_dummy_words): Delete declaration.
(EXTRACT_RETURN_VALUE, PUSH_ARGUMENTS): Delete.
(arm_linux_extract_return_value, arm_linux_push_arguments): Delete
declarations.
(LOWEST_PC): Delete.
This commit is contained in:
Richard Earnshaw 2002-02-23 17:07:57 +00:00
parent 3ab136500f
commit 19d3fc80c1
3 changed files with 30 additions and 45 deletions

View file

@ -1,9 +1,23 @@
2002-02-23 Richard Earnshaw <rearnsha@arm.com>
* arm-linux-tdep.c (arm_linux_extract_return_value): Make static.
(arm_linux_push_arguments): Likewise.
(arm_linux_init_abi): Register them. Also register linux-specific
call_dummy_words.
(find_minsym_and_objfile): Use strcmp, not STREQ.
* config/arm/tm-linux.h (CALL_DUMMY_WORDS): Delete.
(arm_linux_call_dummy_words): Delete declaration.
(EXTRACT_RETURN_VALUE, PUSH_ARGUMENTS): Delete.
(arm_linux_extract_return_value, arm_linux_push_arguments): Delete
declarations.
(LOWEST_PC): Delete.
2002-02-23 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
* maint.c (print_section_info): Do not prepend `0x' to filepos
output, it will be handled by local_hex_string_custom.
2002-02-23 Richard Earnshaw <rearnsha"arm.com>
2002-02-23 Richard Earnshaw <rearnsha@arm.com>
* arm-linux-nat.c (store_newfpe_single): Use regcache_collect.
(store_newfpe_double, store_newfpe_extended, store_fpregister)

View file

@ -66,8 +66,11 @@ LONGEST arm_linux_call_dummy_words[] =
/* Extract from an array REGBUF containing the (raw) register state
a function return value of type TYPE, and copy that, in virtual format,
into VALBUF. */
void
/* FIXME rearnsha/2002-02-23: This function shouldn't be necessary.
The ARM generic one should be able to handle the model used by
linux and the low-level formatting of the registers should be
hidden behind the regcache abstraction. */
static void
arm_linux_extract_return_value (struct type *type,
char regbuf[REGISTER_BYTES],
char *valbuf)
@ -101,7 +104,7 @@ arm_linux_extract_return_value (struct type *type,
#define MAKE_THUMB_ADDR(addr) ((addr) | 1)
#define UNMAKE_THUMB_ADDR(addr) ((addr) & ~1)
CORE_ADDR
static CORE_ADDR
arm_linux_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
int struct_return, CORE_ADDR struct_addr)
{
@ -360,7 +363,7 @@ find_minsym_and_objfile (char *name, struct objfile **objfile_p)
ALL_OBJFILE_MSYMBOLS (objfile, msym)
{
if (SYMBOL_NAME (msym)
&& STREQ (SYMBOL_NAME (msym), name))
&& strcmp (SYMBOL_NAME (msym), name) == 0)
{
*objfile_p = objfile;
return msym;
@ -523,6 +526,14 @@ arm_linux_init_abi (struct gdbarch_info info,
tdep->jb_pc = JB_PC;
tdep->jb_elt_size = JB_ELEMENT_SIZE;
set_gdbarch_call_dummy_words (gdbarch, arm_linux_call_dummy_words);
set_gdbarch_sizeof_call_dummy_words (gdbarch,
sizeof (arm_linux_call_dummy_words));
/* The following two overrides shouldn't be needed. */
set_gdbarch_extract_return_value (gdbarch, arm_linux_extract_return_value);
set_gdbarch_push_arguments (gdbarch, arm_linux_push_arguments);
}
void

View file

@ -34,46 +34,6 @@
extern struct link_map_offsets *arm_linux_svr4_fetch_link_map_offsets (void);
#define SVR4_FETCH_LINK_MAP_OFFSETS() arm_linux_svr4_fetch_link_map_offsets ()
#undef CALL_DUMMY_WORDS
#define CALL_DUMMY_WORDS arm_linux_call_dummy_words
extern LONGEST arm_linux_call_dummy_words[];
/* Extract from an array REGBUF containing the (raw) register state
a function return value of type TYPE, and copy that, in virtual format,
into VALBUF. */
struct type;
struct value;
extern void arm_linux_extract_return_value (struct type *, char[], char *);
#undef EXTRACT_RETURN_VALUE
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
arm_linux_extract_return_value ((TYPE), (REGBUF), (VALBUF))
/* Things needed for making the inferior call functions.
FIXME: This and arm_push_arguments should be merged. However this
function breaks on a little endian host, big endian target
using the COFF file format. ELF is ok.
ScottB. */
#undef PUSH_ARGUMENTS
#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
sp = arm_linux_push_arguments ((nargs), (args), (sp), (struct_return), \
(struct_addr))
extern CORE_ADDR arm_linux_push_arguments (int, struct value **, CORE_ADDR,
int, CORE_ADDR);
/* The first page is not writeable in ARM GNU/Linux. */
#undef LOWEST_PC
#define LOWEST_PC 0x8000
/* Define NO_SINGLE_STEP if ptrace(PT_STEP,...) fails to function
correctly on ARM Linux kernel. This is the case on 2.0.x kernels,
2.1.x kernels and some 2.2.x kernels. This will include the
implementation of single_step() in armlinux-tdep.c. See
armlinux-ss.c for more details. */
/* #define NO_SINGLE_STEP 1 */
/* Offset to saved PC in sigcontext structure, from <asm/sigcontext.h> */
#define SIGCONTEXT_PC_OFFSET (sizeof(unsigned long) * 18)