/* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
for now. */
/* Basic, host-specific, and target-specific definitions for GDB.
- Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
- 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1986, 1988-2005, 2007-2012 Free Software Foundation,
+ Inc.
This file is part of GDB.
#ifndef DEFS_H
#define DEFS_H
+#ifdef GDBSERVER
+# error gdbserver should not include gdb/defs.h
+#endif
+
#include "config.h" /* Generated by configure. */
#include <sys/types.h>
#include "gdb_wchar.h"
-/* For ``enum target_signal''. */
+/* For ``enum gdb_signal''. */
#include "gdb/signals.h"
/* Just in case they're not defined in stdio.h. */
#include <stdarg.h> /* For va_list. */
#include "libiberty.h"
+#include "hashtab.h"
/* Rather than duplicate all the logic in BFD for figuring out what
types to use (which can be pretty complicated), symply define them
#define max(a, b) ((a) > (b) ? (a) : (b))
#endif
-/* Check if a character is one of the commonly used C++ marker characters. */
-extern int is_cplus_marker (int);
+#include "ptid.h"
/* Enable xdb commands if set. */
extern int xdb_commands;
language_c, /* C */
language_cplus, /* C++ */
language_d, /* D */
+ language_go, /* Go */
language_objc, /* Objective-C */
language_java, /* Java */
language_fortran, /* Fortran */
RETURN_VALUE_ABI_PRESERVES_ADDRESS,
};
-/* the cleanup list records things that have to be undone
- if an error happens (descriptors to be closed, memory to be freed, etc.)
- Each link in the chain records a function to call and an
- argument to give it.
-
- Use make_cleanup to add an element to the cleanup chain.
- Use do_cleanups to do all cleanup actions back to a given
- point in the chain. Use discard_cleanups to remove cleanups
- from the chain back to a given point, not doing them.
-
- If the argument is pointer to allocated memory, then you need
- to additionally set the 'free_arg' member to a function that will
- free that memory. This function will be called both when the cleanup
- is executed and when it's discarded. */
-
-struct cleanup
- {
- struct cleanup *next;
- void (*function) (void *);
- void (*free_arg) (void *);
- void *arg;
- };
-
-/* Be conservative and use enum bitfields only with GCC.
- This is copied from gcc 3.3.1, system.h. */
-
-#if defined(__GNUC__) && (__GNUC__ >= 2)
-#define ENUM_BITFIELD(TYPE) enum TYPE
-#else
-#define ENUM_BITFIELD(TYPE) unsigned int
-#endif
-
-/* vec.h-style vectors of strings want a typedef for char * . */
+/* vec.h-style vectors of strings want a typedef for char * or const char *. */
typedef char * char_ptr;
+typedef const char * const_char_ptr;
/* Needed for various prototypes */
struct breakpoint;
struct frame_info;
struct gdbarch;
+struct value;
+
+/* From main.c. */
+
+/* This really belong in utils.c (path-utils.c?), but it references some
+ globals that are currently only available to main.c. */
+extern char *relocate_gdb_directory (const char *initial, int flag);
/* From utils.c */
extern void set_display_space (int);
-#define ALL_CLEANUPS ((struct cleanup *)0)
-
-extern void do_cleanups (struct cleanup *);
-extern void do_final_cleanups (struct cleanup *);
-
-extern void discard_cleanups (struct cleanup *);
-extern void discard_final_cleanups (struct cleanup *);
-extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
-
-/* NOTE: cagney/2000-03-04: This typedef is strictly for the
- make_cleanup function declarations below. Do not use this typedef
- as a cast when passing functions into the make_cleanup() code.
- Instead either use a bounce function or add a wrapper function.
- Calling a f(char*) function with f(void*) is non-portable. */
-typedef void (make_cleanup_ftype) (void *);
-
-extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
+/* Cleanup utilities. */
-extern struct cleanup *make_cleanup_dtor (make_cleanup_ftype *, void *,
- void (*dtor) (void *));
+#include "cleanups.h"
extern struct cleanup *make_cleanup_freeargv (char **);
+struct dyn_string;
+extern struct cleanup *make_cleanup_dyn_string_delete (struct dyn_string *);
+
struct ui_file;
extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
extern struct cleanup *
make_cleanup_restore_ui_file (struct ui_file **variable);
-extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
-
-extern struct cleanup *make_my_cleanup (struct cleanup **,
- make_cleanup_ftype *, void *);
-
-extern struct cleanup *make_my_cleanup2 (struct cleanup **,
- make_cleanup_ftype *, void *,
- void (*free_arg) (void *));
+extern struct cleanup *make_cleanup_value_free_to_mark (struct value *);
+extern struct cleanup *make_cleanup_value_free (struct value *);
-extern struct cleanup *save_cleanups (void);
-extern struct cleanup *save_final_cleanups (void);
-extern struct cleanup *save_my_cleanups (struct cleanup **);
+struct so_list;
+extern struct cleanup *make_cleanup_free_so (struct so_list *so);
-extern void restore_cleanups (struct cleanup *);
-extern void restore_final_cleanups (struct cleanup *);
-extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
+extern struct cleanup *make_cleanup_htab_delete (htab_t htab);
extern void free_current_contents (void *);
-extern void null_cleanup (void *);
-
extern struct cleanup *make_command_stats_cleanup (int);
extern int myread (int, char *, int);
char **gdb_buildargv (const char *);
int compare_positive_ints (const void *ap, const void *bp);
+int compare_strings (const void *ap, const void *bp);
/* A wrapper for bfd_errmsg to produce a more helpful error message
in the case of bfd_error_file_ambiguously recognized.
extern int parse_pid_to_attach (char *args);
-/* From demangle.c */
+extern struct cleanup *make_bpstat_clear_actions_cleanup (void);
+
+extern int producer_is_gcc_ge_4 (const char *producer);
-extern void set_demangling_style (char *);
+extern void substitute_path_component (char **stringp, const char *from,
+ const char *to);
+
+#ifdef HAVE_WAITPID
+extern pid_t wait_to_die_with_timeout (pid_t pid, int *status, int timeout);
+#endif
+
+extern int gdb_filename_fnmatch (const char *pattern, const char *string,
+ int flags);
\f
/* Annotation stuff. */
extern const char *print_core_address (struct gdbarch *gdbarch,
CORE_ADDR address);
+/* Callback hash_f and eq_f for htab_create_alloc or htab_create_alloc_ex. */
+
+extern hashval_t core_addr_hash (const void *ap);
+extern int core_addr_eq (const void *ap, const void *bp);
+
/* %d for LONGEST */
extern char *plongest (LONGEST l);
/* %u for ULONGEST */
extern char *hex_string (LONGEST);
extern char *hex_string_custom (LONGEST, int);
-extern void fprintf_symbol_filtered (struct ui_file *, char *,
+extern void fprintf_symbol_filtered (struct ui_file *, const char *,
enum language, int);
extern void perror_with_name (const char *) ATTRIBUTE_NORETURN;
extern void set_next_address (struct gdbarch *, CORE_ADDR);
-extern void print_address_symbolic (struct gdbarch *, CORE_ADDR,
- struct ui_file *, int, char *);
+extern int print_address_symbolic (struct gdbarch *, CORE_ADDR,
+ struct ui_file *, int, char *);
extern int build_address_symbolic (struct gdbarch *,
CORE_ADDR addr,
extern void free_command_lines (struct command_line **);
-/* To continue the execution commands when running gdb asynchronously.
- A continuation structure contains a pointer to a function to be called
- to finish the command, once the target has stopped. Such mechanism is
- used by the finish and until commands, and in the remote protocol
- when opening an extended-remote connection. */
+/* Parameters of the "info proc" command. */
+
+enum info_proc_what
+ {
+ /* Display the default cmdline, cwd and exe outputs. */
+ IP_MINIMAL,
-struct continuation;
-struct thread_info;
-struct inferior;
+ /* Display `info proc mappings'. */
+ IP_MAPPINGS,
-/* From utils.c */
+ /* Display `info proc status'. */
+ IP_STATUS,
-/* Thread specific continuations. */
+ /* Display `info proc stat'. */
+ IP_STAT,
-extern void add_continuation (struct thread_info *,
- void (*)(void *), void *,
- void (*)(void *));
-extern void do_all_continuations (void);
-extern void do_all_continuations_thread (struct thread_info *);
-extern void discard_all_continuations (void);
-extern void discard_all_continuations_thread (struct thread_info *);
+ /* Display `info proc cmdline'. */
+ IP_CMDLINE,
-extern void add_intermediate_continuation (struct thread_info *,
- void (*)(void *), void *,
- void (*)(void *));
-extern void do_all_intermediate_continuations (void);
-extern void do_all_intermediate_continuations_thread (struct thread_info *);
-extern void discard_all_intermediate_continuations (void);
-extern void discard_all_intermediate_continuations_thread (struct thread_info *);
+ /* Display `info proc exe'. */
+ IP_EXE,
-/* Inferior specific (any thread) continuations. */
+ /* Display `info proc cwd'. */
+ IP_CWD,
-extern void add_inferior_continuation (void (*) (void *),
- void *,
- void (*) (void *));
-extern void do_all_inferior_continuations (void);
-extern void discard_all_inferior_continuations (struct inferior *inf);
+ /* Display all of the above. */
+ IP_ALL
+ };
/* String containing the current directory (what getwd would return). */
Val_pretty_default
};
-/* The ptid struct is a collection of the various "ids" necessary
- for identifying the inferior. This consists of the process id
- (pid), thread id (tid), and other fields necessary for uniquely
- identifying the inferior process/thread being debugged. When
- manipulating ptids, the constructors, accessors, and predicate
- declared in inferior.h should be used. These are as follows:
-
- ptid_build - Make a new ptid from a pid, lwp, and tid.
- pid_to_ptid - Make a new ptid from just a pid.
- ptid_get_pid - Fetch the pid component of a ptid.
- ptid_get_lwp - Fetch the lwp component of a ptid.
- ptid_get_tid - Fetch the tid component of a ptid.
- ptid_equal - Test to see if two ptids are equal.
- ptid_is_pid - Test to see if this ptid represents a process id.
-
- Please do NOT access the struct ptid members directly (except, of
- course, in the implementation of the above ptid manipulation
- functions). */
-
-struct ptid
- {
- /* Process id */
- int pid;
-
- /* Lightweight process id */
- long lwp;
-
- /* Thread id */
- long tid;
- };
-
-typedef struct ptid ptid_t;
-
-\f
-
/* Optional native machine support. Non-native (and possibly pure
multi-arch) targets do not need a "nm.h" file. This will be a
symlink to one of the nm-*.h files, built by the `configure'
extern char *savestring (const char *, size_t);
-/* xmalloc(), xrealloc() and xcalloc() have already been declared in
- "libiberty.h". */
-extern void xfree (void *);
-
-/* Like xmalloc, but zero the memory. */
-extern void *xzalloc (size_t);
-
/* Utility macros to allocate typed memory. Avoids errors like:
struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
sizeof (struct foo), 0). */
#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
#define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
-/* Like asprintf/vasprintf but get an internal_error if the call
- fails. */
-extern void xasprintf (char **ret, const char *format, ...)
- ATTRIBUTE_PRINTF (2, 3);
-extern void xvasprintf (char **ret, const char *format, va_list ap)
- ATTRIBUTE_PRINTF (2, 0);
-
-/* Like asprintf and vasprintf, but return the string, throw an error
- if no memory. */
-extern char *xstrprintf (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
-extern char *xstrvprintf (const char *format, va_list ap)
- ATTRIBUTE_PRINTF (1, 0);
-
-/* Like snprintf, but throw an error if the output buffer is too small. */
-extern int xsnprintf (char *str, size_t size, const char *format, ...)
- ATTRIBUTE_PRINTF (3, 4);
+#include "common-utils.h"
extern int parse_escape (struct gdbarch *, char **);
va_list ap)
ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
-extern void internal_error (const char *file, int line, const char *, ...)
- ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 4);
-
extern void internal_vwarning (const char *file, int line,
const char *, va_list ap)
ATTRIBUTE_PRINTF (3, 0);
extern void internal_warning (const char *file, int line,
const char *, ...) ATTRIBUTE_PRINTF (3, 4);
-extern void nomem (long) ATTRIBUTE_NORETURN;
-
extern void warning (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
extern void vwarning (const char *, va_list args) ATTRIBUTE_PRINTF (1, 0);
GDB_OSABI_DICOS,
GDB_OSABI_DARWIN,
GDB_OSABI_SYMBIAN,
+ GDB_OSABI_OPENVMS,
GDB_OSABI_INVALID /* keep this last */
};