Replace ../include/wait.h with gdb_wait.h.
[deliverable/binutils-gdb.git] / gdb / gdbcore.h
index b083d56e8dcd1de583a3bef449b3acff714ca1f3..e8e395384f92a6d7da9d96302622ad4fa691b641 100644 (file)
@@ -133,12 +133,28 @@ extern void set_gnutarget PARAMS ((char *));
 struct core_fns
   {
 
-    /* BFD flavour that we handle.  Note that bfd_target_unknown_flavour matches
-       anything, and if there is no better match, this function will be called
-       as the default. */
+    /* BFD flavour that a core file handler is prepared to read.  This
+       can be used by the handler's core tasting function as a first
+       level filter to reject BFD's that don't have the right
+       flavour. */
 
     enum bfd_flavour core_flavour;
 
+    /* Core file handler function to call to recognize corefile
+       formats that BFD rejects.  Some core file format just don't fit
+       into the BFD model, or may require other resources to identify
+       them, that simply aren't available to BFD (such as symbols from
+       another file).  Returns nonzero if the handler recognizes the
+       format, zero otherwise. */
+
+    int (*check_format) PARAMS ((bfd *));
+
+    /* Core file handler function to call to ask if it can handle a
+       given core file format or not.  Returns zero if it can't,
+       nonzero otherwise. */
+
+    int (*core_sniffer) PARAMS ((struct core_fns *, bfd *));
+
     /* Extract the register values out of the core file and store them where
        `read_register' will find them.
 
@@ -147,15 +163,21 @@ struct core_fns
 
        CORE_REG_SIZE is the size of that area.
 
-       WHICH says which set of registers we are handling (0 = int, 2 = float on
-       machines where they are discontiguous).
+       WHICH says which set of registers we are handling:
+         0 --- integer registers
+         2 --- floating-point registers, on machines where they are
+               discontiguous
+         3 --- extended floating-point registers, on machines where
+               these are present in yet a third area.  (GNU/Linux uses
+               this to get at the SSE registers.)
 
        REG_ADDR is the offset from u.u_ar0 to the register values relative to
        core_reg_sect.  This is used with old-fashioned core files to locate the
        registers in a large upage-plus-stack ".reg" section.  Original upage
        address X is at location core_reg_sect+x+reg_addr. */
 
-    void (*core_read_registers) PARAMS ((char *core_reg_sect, unsigned core_reg_size,
+    void (*core_read_registers) PARAMS ((char *core_reg_sect,
+                                        unsigned core_reg_size,
                                         int which, CORE_ADDR reg_addr));
 
     /* Finds the next struct core_fns.  They are allocated and initialized
@@ -167,5 +189,7 @@ struct core_fns
   };
 
 extern void add_core_fns PARAMS ((struct core_fns * cf));
+extern int default_core_sniffer PARAMS ((struct core_fns *cf, bfd *abfd));
+extern int default_check_format PARAMS ((bfd *abfd));
 
 #endif /* !defined (GDBCORE_H) */
This page took 0.024591 seconds and 4 git commands to generate.