diff options
author | Richard Earnshaw <richard.earnshaw@arm.com> | 2002-02-23 17:07:57 +0000 |
---|---|---|
committer | Richard Earnshaw <richard.earnshaw@arm.com> | 2002-02-23 17:07:57 +0000 |
commit | 19d3fc80c110dc6dd4d962e8ac90bf1d8487d66b (patch) | |
tree | 0c1efaa12af87003b3cd39a4703ff317b7415f5c | |
parent | 3ab136500f06eb436f585ebb6ed640d17d27ab47 (diff) | |
download | gdb-19d3fc80c110dc6dd4d962e8ac90bf1d8487d66b.zip gdb-19d3fc80c110dc6dd4d962e8ac90bf1d8487d66b.tar.gz gdb-19d3fc80c110dc6dd4d962e8ac90bf1d8487d66b.tar.bz2 |
* 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.
-rw-r--r-- | gdb/ChangeLog | 16 | ||||
-rw-r--r-- | gdb/arm-linux-tdep.c | 19 | ||||
-rw-r--r-- | gdb/config/arm/tm-linux.h | 40 |
3 files changed, 30 insertions, 45 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 557bbfb..ac001a8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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) diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 145adbd..30a698e 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -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 diff --git a/gdb/config/arm/tm-linux.h b/gdb/config/arm/tm-linux.h index 9b73816..f51756e 100644 --- a/gdb/config/arm/tm-linux.h +++ b/gdb/config/arm/tm-linux.h @@ -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) |