* arm-linux-tdep.c (arm_linux_extract_return_value): Make static.
authorRichard Earnshaw <richard.earnshaw@arm.com>
Sat, 23 Feb 2002 17:07:57 +0000 (17:07 +0000)
committerRichard Earnshaw <richard.earnshaw@arm.com>
Sat, 23 Feb 2002 17:07:57 +0000 (17:07 +0000)
(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.

gdb/ChangeLog
gdb/arm-linux-tdep.c
gdb/config/arm/tm-linux.h

index 557bbfb..ac001a8 100644 (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)
index 145adbd..30a698e 100644 (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
index 9b73816..f51756e 100644 (file)
 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)