/* *INDENT-OFF* */ /* ATTR_FORMAT 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
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GDB.
#include <limits.h>
#include <stdint.h>
+/* The libdecnumber library, on which GDB depends, includes a header file
+ called gstdint.h instead of relying directly on stdint.h. GDB, on the
+ other hand, includes stdint.h directly, relying on the fact that gnulib
+ generates a copy if the system doesn't provide one or if it is missing
+ some features. Unfortunately, gstdint.h and stdint.h cannot be included
+ at the same time, which may happen when we include a file from
+ libdecnumber.
+
+ The following macro definition effectively prevents the inclusion of
+ gstdint.h, as all the definitions it provides are guarded against
+ the GCC_GENERATED_STDINT_H macro. We already have gnulib/stdint.h
+ included, so it's ok to blank out gstdint.h. */
+#define GCC_GENERATED_STDINT_H 1
+
#ifdef HAVE_STDDEF_H
#include <stddef.h>
#endif
#include "gdb_locale.h"
+#include "gdb_wchar.h"
+
/* For ``enum target_signal''. */
#include "gdb/signals.h"
/* System root path, used to find libraries etc. */
extern char *gdb_sysroot;
+/* GDB datadir, used to store data files. */
+extern char *gdb_datadir;
+
/* Search path for separate debug files. */
extern char *debug_file_directory;
struct symtab;
struct breakpoint;
struct frame_info;
+struct gdbarch;
/* From utils.c */
extern struct cleanup *make_cleanup_close (int fd);
+extern struct cleanup *make_cleanup_fclose (FILE *file);
+
extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
+struct obstack;
+extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack);
+
extern struct cleanup *make_cleanup_restore_integer (int *variable);
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
char *ldirname (const char *filename);
+char **gdb_buildargv (const char *);
+
/* From demangle.c */
extern void set_demangling_style (char *);
extern const char *host_address_to_string (const void *addr);
-/* Convert a CORE_ADDR into a HEX string. paddr() is like %08lx.
- paddr_nz() is like %lx. paddr_u() is like %lu. paddr_width() is
- for ``%*''. */
-extern int strlen_paddr (void);
-extern char *paddr (CORE_ADDR addr);
-extern char *paddr_nz (CORE_ADDR addr);
-extern char *paddr_u (CORE_ADDR addr);
-extern char *paddr_d (LONGEST addr);
+/* Convert CORE_ADDR to string in platform-specific manner.
+ This is usually formatted similar to 0x%lx. */
+extern const char *paddress (struct gdbarch *gdbarch, CORE_ADDR addr);
-/* Like 0x%lx. */
-extern const char *paddress (CORE_ADDR addr);
+/* %d for LONGEST */
+extern char *plongest (LONGEST l);
+/* %u for ULONGEST */
+extern char *pulongest (ULONGEST l);
extern char *phex (ULONGEST l, int sizeof_l);
extern char *phex_nz (ULONGEST l, int sizeof_l);
extern char *int_string (LONGEST, int, int, int, int);
-/* Like paddr() only print/scan raw CORE_ADDR. The output from
- core_addr_to_string() can be passed direct to
+/* Convert a CORE_ADDR into a HEX string with leading zeros.
+ The output from core_addr_to_string() can be passed direct to
string_to_core_addr(). */
extern const char *core_addr_to_string (const CORE_ADDR addr);
extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
/* From printcmd.c */
-extern void set_next_address (CORE_ADDR);
+extern void set_next_address (struct gdbarch *, CORE_ADDR);
extern void print_address_symbolic (CORE_ADDR, struct ui_file *, int,
char *);
int *line,
int *unmapped);
-extern void print_address (CORE_ADDR, struct ui_file *);
+extern void print_address (struct gdbarch *, CORE_ADDR, struct ui_file *);
/* From source.c */
#define OPF_TRY_CWD_FIRST 0x01
#define OPF_SEARCH_IN_PATH 0x02
-extern int openp (const char *, int, const char *, int, int, char **);
+extern int openp (const char *, int, const char *, int, char **);
-extern int source_full_path_of (char *, char **);
+extern int source_full_path_of (const char *, char **);
extern void mod_path (char *, char **);
extern void init_source_path (void);
-extern void init_last_source_visited (void);
-
/* From exec.c */
/* Take over the 'find_mapped_memory' vector from exec.c. */
/* In a gdb internal variable. */
lval_internalvar,
/* Part of a gdb internal variable (structure field). */
- lval_internalvar_component
+ lval_internalvar_component,
+ /* Value's bits are fetched and stored using functions provided by
+ its creator. */
+ lval_computed
};
/* Control types for commands */
while_control,
if_control,
commands_control,
+ python_control,
invalid_control
};
struct command_line **body_list;
};
-extern struct command_line *read_command_lines (char *, int);
+extern struct command_line *read_command_lines (char *, int, int);
+extern struct command_line *read_command_lines_1 (char * (*) (), int);
extern void free_command_lines (struct command_line **);
when opening an extended-remote connection. */
struct continuation;
-
-/* In infrun.c. */
-extern struct continuation *cmd_continuation;
-/* Used only by the step_1 function. */
-extern struct continuation *intermediate_continuation;
+struct thread_info;
+struct inferior;
/* From utils.c */
-extern void add_continuation (void (*)(void *), void *,
+
+/* Thread specific continuations. */
+
+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 *);
-extern void add_intermediate_continuation (void (*)(void *), void *,
+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 *);
+
+/* Inferior specific (any thread) continuations. */
+
+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);
/* String containing the current directory (what getwd would return). */
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
GDB_OSABI_CYGWIN,
GDB_OSABI_AIX,
GDB_OSABI_DICOS,
+ GDB_OSABI_DARWIN,
GDB_OSABI_INVALID /* keep this last */
};
/* In findvar.c. */
-extern LONGEST extract_signed_integer (const gdb_byte *, int);
+extern LONGEST extract_signed_integer (const gdb_byte *, int,
+ enum bfd_endian);
-extern ULONGEST extract_unsigned_integer (const gdb_byte *, int);
+extern ULONGEST extract_unsigned_integer (const gdb_byte *, int,
+ enum bfd_endian);
-extern int extract_long_unsigned_integer (const gdb_byte *, int, LONGEST *);
+extern int extract_long_unsigned_integer (const gdb_byte *, int,
+ enum bfd_endian, LONGEST *);
extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
struct type *type);
-extern void store_signed_integer (gdb_byte *, int, LONGEST);
+extern void store_signed_integer (gdb_byte *, int,
+ enum bfd_endian, LONGEST);
-extern void store_unsigned_integer (gdb_byte *, int, ULONGEST);
+extern void store_unsigned_integer (gdb_byte *, int,
+ enum bfd_endian, ULONGEST);
extern void store_typed_address (gdb_byte *buf, struct type *type,
CORE_ADDR addr);
extern void (*deprecated_warning_hook) (const char *, va_list)
ATTRIBUTE_FPTR_PRINTF(1,0);
extern void (*deprecated_flush_hook) (struct ui_file * stream);
-extern void (*deprecated_create_breakpoint_hook) (struct breakpoint * b);
-extern void (*deprecated_delete_breakpoint_hook) (struct breakpoint * bpt);
-extern void (*deprecated_modify_breakpoint_hook) (struct breakpoint * bpt);
extern void (*deprecated_interactive_hook) (void);
extern void (*deprecated_readline_begin_hook) (char *, ...)
ATTRIBUTE_FPTR_PRINTF_1;
extern void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len);
extern void (*deprecated_context_hook) (int);
extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
- struct target_waitstatus * status);
+ struct target_waitstatus *status,
+ int options);
extern void (*deprecated_attach_hook) (void);
extern void (*deprecated_detach_hook) (void);
extern void (*deprecated_set_hook) (struct cmd_list_element * c);
-extern void (*deprecated_error_hook) (void);
-
extern void (*deprecated_error_begin_hook) (void);
extern int (*deprecated_ui_load_progress_hook) (const char *section,