Not part of the sources
[deliverable/binutils-gdb.git] / gdb / gdbcore.h
index 991ce64ebdb44e9bb8ac78dff09738bcab3f035b..6501e3098b969fa37cbb1bb63546c1473f7382da 100644 (file)
 /* Machine independent variables that describe the core file under GDB.
-   Copyright (C) 1986, 1987, 1989, 1990  Free Software Foundation, Inc.
+   Copyright 1986, 1987, 1989, 1990, 1992, 1995 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
-GDB is free software; you can redistribute it and/or modify
+This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
-any later version.
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
 
-GDB is distributed in the hope that it will be useful,
+This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with GDB; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* Interface routines for core, executable, etc.  */
 
-#include "bfd.h"               /* Binary File Description */
+#if !defined (GDBCORE_H)
+#define GDBCORE_H 1
+
+#include "bfd.h"
 
 /* Return the name of the executable file as a string.
    ERR nonzero means get error if there is none specified;
    otherwise return 0 in that case.  */
-char *get_exec_file ();
+
+extern char *get_exec_file PARAMS ((int err));
 
 /* Nonzero if there is a core file.  */
-int have_core_file_p ();
 
-/* Read "memory data" from whatever target or inferior we have. 
-   Returns zero if successful, errno value if not.  EIO is used
-   for address out of bounds.  If breakpoints are inserted, returns
-   shadow contents, not the breakpoints themselves.  From breakpoint.c.  */
-int read_memory_nobpt ();
+extern int have_core_file_p PARAMS ((void));
+
+/* Read "memory data" from whatever target or inferior we have.
+   Returns zero if successful, errno value if not.  EIO is used for
+   address out of bounds.  If breakpoints are inserted, returns shadow
+   contents, not the breakpoints themselves.  From breakpoint.c.  */
+
+extern int read_memory_nobpt PARAMS ((CORE_ADDR memaddr, char *myaddr,
+                                     unsigned len));
 
 /* Report a memory error with error().  */
 
-void memory_error ();
+extern void memory_error PARAMS ((int status, CORE_ADDR memaddr));
 
 /* Like target_read_memory, but report an error if can't read.  */
-void read_memory ();
 
-/* Read an integer from debugged memory, given address and number of bytes.  */
-long read_memory_integer ();
+extern void read_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
+
+extern void read_memory_section PARAMS ((CORE_ADDR memaddr, char *myaddr,
+                                        int len, asection *bfd_section));
+
+/* Read an integer from debugged memory, given address and number of
+   bytes.  */
+
+extern LONGEST read_memory_integer PARAMS ((CORE_ADDR memaddr, int len));
+
+/* Read an unsigned integer from debugged memory, given address and
+   number of bytes.  */
+
+extern ULONGEST read_memory_unsigned_integer PARAMS ((CORE_ADDR memaddr, int len));
+
+/* Read a null-terminated string from the debuggee's memory, given address,
+ * a buffer into which to place the string, and the maximum available space */ 
+extern void read_memory_string PARAMS ((CORE_ADDR, char *, int));
 
+/* This takes a char *, not void *.  This is probably right, because
+   passing in an int * or whatever is wrong with respect to
+   byteswapping, alignment, different sizes for host vs. target types,
+   etc.  */
+
+extern void write_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
+
+extern void generic_search PARAMS ((int len, char *data, char *mask,
+                                   CORE_ADDR startaddr, int increment,
+                                   CORE_ADDR lorange, CORE_ADDR hirange,
+                                   CORE_ADDR *addr_found, char *data_found));
+\f
 /* Hook for `exec_file_command' command to call.  */
 
-extern void (*exec_file_display_hook) ();
-   
+extern void (*exec_file_display_hook) PARAMS ((char *filename));
+
+/* Hook for "file_command", which is more useful than above
+   (because it is invoked AFTER symbols are read, not before) */
+
+extern void (*file_changed_hook) PARAMS ((char *filename));
+
+extern void specify_exec_file_hook PARAMS ((void (*hook) (char *filename)));
+
 /* Binary File Diddlers for the exec and core files */
+
 extern bfd *core_bfd;
 extern bfd *exec_bfd;
 
-void core_file_command ();
-void exec_file_command ();
-void validate_files ();
-unsigned int register_addr ();
-int xfer_core_file ();
-void fetch_core_registers ();
-void registers_fetched ();
+/* Whether to open exec and core files read-only or read-write.  */
+
+extern int write_files;
+
+extern void core_file_command PARAMS ((char *filename, int from_tty));
+
+extern void exec_file_attach PARAMS ((char *filename, int from_tty));
+
+extern void exec_file_command PARAMS ((char *filename, int from_tty));
+
+extern void validate_files PARAMS ((void));
+
+extern CORE_ADDR register_addr PARAMS ((int regno, CORE_ADDR blockend));
+
+extern void registers_fetched PARAMS ((void));
 
 #if !defined (KERNEL_U_ADDR)
 extern CORE_ADDR kernel_u_addr;
 #define KERNEL_U_ADDR kernel_u_addr
 #endif
 
-/* Struct section_table maps address ranges to file sections.  It is
-   mostly used with BFD files, but can be used without (e.g. for handling
-   raw disks, or files not in formats handled by BFD).  */
+/* The target vector for core files. */
+
+extern struct target_ops core_ops;
+
+/* The current default bfd target.  */
+
+extern char *gnutarget;
+
+extern void set_gnutarget PARAMS ((char *));
+
+/* Structure to keep track of core register reading functions for
+   various core file types.  */
+
+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. */
+
+  enum bfd_flavour core_flavour;
+
+  /* Extract the register values out of the core file and store them where
+     `read_register' will find them.
+
+     CORE_REG_SECT points to the register values themselves, read into
+     memory.
+
+     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).
+
+     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,
+                                 int which, CORE_ADDR reg_addr));
+
+  /* Finds the next struct core_fns.  They are allocated and initialized
+     in whatever module implements the functions pointed to; an 
+     initializer calls add_core_fns to add them to the global chain.  */
+
+  struct core_fns *next;
 
-struct section_table {
-  CORE_ADDR addr;              /* Lowest address in section */
-  CORE_ADDR endaddr;           /* 1+highest address in section */
-  sec_ptr   sec_ptr;           /* BFD section pointer */
 };
 
-/* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR.
-   Returns 0 if OK, 1 on error.  */
+extern void add_core_fns PARAMS ((struct core_fns *cf));
 
-int build_section_table ();    
+#endif /* !defined (GDBCORE_H) */
This page took 0.025621 seconds and 4 git commands to generate.