* common/gdb_vecs.h: Moved here from ./gdb_vecs.h.
authorDoug Evans <dje@google.com>
Wed, 18 Jul 2012 23:37:58 +0000 (23:37 +0000)
committerDoug Evans <dje@google.com>
Wed, 18 Jul 2012 23:37:58 +0000 (23:37 +0000)
* common/gdb_vecs.c: New file, contents from utils.c.
* common/host-defs.h: New file, contents from defs.h.
* utils.h: New file, contents from defs.h.
* defs.h: Move all declarations of objects defined in utils.c
to utils.h (except QUIT() and related).
#include "utils.h", "host-defs.h".
* probe.h (probe_p): Move here from gdb_vecs.h.
* symfile.c: #include "probe.h" instead of "gdb_vecs.h".
* utils.c (free_char_ptr_vec): Moved to common/gdb_vecs.c.
(dirnames_to_char_ptr_vec_append, dirnames_to_char_ptr_vec): Ditto.
* Makefile.in (SFILES): Add common/gdb_vecs.c.
(HFILES_NO_SRCDIR): Add common/gdb_vecs.h, common/host-defs.h, utils.h.
(COMMON_OBS): Add gdb_vecs.o.
(gdb_vecs.o): New rule.

gdb/ChangeLog
gdb/Makefile.in
gdb/common/gdb_vecs.c [new file with mode: 0644]
gdb/common/gdb_vecs.h [new file with mode: 0644]
gdb/common/host-defs.h [new file with mode: 0644]
gdb/defs.h
gdb/gdb_vecs.h [deleted file]
gdb/probe.h
gdb/symfile.h
gdb/utils.c
gdb/utils.h [new file with mode: 0644]

index 3ab6884cb2d593ab8bc61106ba9b8ed12f2b7219..171a02edb84c8bf19bd289d5f55b1eb176e7f8ac 100644 (file)
@@ -1,3 +1,21 @@
+2012-07-18  Doug Evans  <dje@google.com>
+
+       * common/gdb_vecs.h: Moved here from ./gdb_vecs.h.
+       * common/gdb_vecs.c: New file, contents from utils.c.
+       * common/host-defs.h: New file, contents from defs.h.
+       * utils.h: New file, contents from defs.h.
+       * defs.h: Move all declarations of objects defined in utils.c
+       to utils.h (except QUIT() and related).
+       #include "utils.h", "host-defs.h".
+       * probe.h (probe_p): Move here from gdb_vecs.h.
+       * symfile.c: #include "probe.h" instead of "gdb_vecs.h".
+       * utils.c (free_char_ptr_vec): Moved to common/gdb_vecs.c.
+       (dirnames_to_char_ptr_vec_append, dirnames_to_char_ptr_vec): Ditto.
+       * Makefile.in (SFILES): Add common/gdb_vecs.c.
+       (HFILES_NO_SRCDIR): Add common/gdb_vecs.h, common/host-defs.h, utils.h.
+       (COMMON_OBS): Add gdb_vecs.o.
+       (gdb_vecs.o): New rule.
+
 2012-07-18  Keith Seitz  <keiths@redhat.com>
 
        * linespec.c (add_sal_to_sals): Add LITERAL_CANONICAL
index a257d9a415f3ffb6c0a623c23aab0ddbfc745862..1c476adb171f3880d9bb1cb506a01514efa9c3a1 100644 (file)
@@ -744,7 +744,7 @@ SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \
        xml-syscall.c \
        annotate.c common/signals.c copying.c dfp.c gdb.c inf-child.c \
        regset.c sol-thread.c windows-termcap.c \
-       common/common-utils.c common/xml-utils.c \
+       common/gdb_vecs.c common/common-utils.c common/xml-utils.c \
        common/ptid.c common/buffer.c gdb-dlfcn.c common/agent.c \
        common/format.c
 
@@ -765,8 +765,8 @@ osf-share/cma_errors.h osf-share/cma_tcb_defs.h osf-share/cma_attr.h \
 osf-share/cma_stack_int.h osf-share/cma_init.h \
 osf-share/cma_deb_core.h osf-share/AT386/cma_thread_io.h \
 osf-share/cma_sched.h \
-common/gdb_signals.h common/gdb_thread_db.h common/i386-xstate.h \
-common/linux-ptrace.h \
+common/gdb_signals.h common/gdb_thread_db.h common/gdb_vecs.h \
+common/i386-xstate.h common/linux-ptrace.h \
 proc-utils.h arm-tdep.h ax-gdb.h ppcnbsd-tdep.h        \
 cli-out.h gdb_expat.h breakpoint.h infcall.h obsd-tdep.h \
 exec.h m32r-tdep.h osabi.h gdbcore.h solib-som.h amd64bsd-nat.h \
@@ -828,7 +828,7 @@ gnulib/import/extra/snippet/arg-nonnull.h gnulib/import/extra/snippet/c++defs.h
 gnulib/import/extra/snippet/warn-on-use.h \
 gnulib/import/stddef.in.h gnulib/import/inttypes.in.h inline-frame.h skip.h \
 common/common-utils.h common/xml-utils.h common/buffer.h common/ptid.h \
-common/format.h \
+common/format.h common/host-defs.h utils.h \
 common/linux-osdata.h gdb-dlfcn.h auto-load.h probe.h stap-probe.h gdb_bfd.h
 
 # Header files that already have srcdir in them, or which are in objdir.
@@ -917,7 +917,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
        xml-support.o xml-syscall.o xml-utils.o \
        target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o \
        inferior.o osdata.o gdb_usleep.o record.o gcore.o \
-       jit.o progspace.o skip.o probe.o \
+       gdb_vecs.o jit.o progspace.o skip.o probe.o \
        common-utils.o buffer.o ptid.o gdb-dlfcn.o common-agent.o \
        format.o
 
@@ -1907,6 +1907,10 @@ common-utils.o: ${srcdir}/common/common-utils.c
        $(COMPILE) $(srcdir)/common/common-utils.c
        $(POSTCOMPILE)
 
+gdb_vecs.o: ${srcdir}/common/gdb_vecs.c
+       $(COMPILE) $(srcdir)/common/gdb_vecs.c
+       $(POSTCOMPILE)
+
 xml-utils.o: ${srcdir}/common/xml-utils.c
        $(COMPILE) $(srcdir)/common/xml-utils.c
        $(POSTCOMPILE)
diff --git a/gdb/common/gdb_vecs.c b/gdb/common/gdb_vecs.c
new file mode 100644 (file)
index 0000000..7927784
--- /dev/null
@@ -0,0 +1,93 @@
+/* Some commonly-used VEC types.
+
+   Copyright (C) 2012 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 3 of the License, or
+   (at your option) any later version.
+
+   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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifdef GDBSERVER
+#include "server.h"
+#else
+#include "defs.h"
+#endif
+
+#include "gdb_vecs.h"
+#include "host-defs.h"
+
+/* Call xfree for each element of CHAR_PTR_VEC and final VEC_free for
+   CHAR_PTR_VEC itself.
+
+   You must not modify CHAR_PTR_VEC after it got registered with this function
+   by make_cleanup as the CHAR_PTR_VEC base address may change on its updates.
+   Contrary to VEC_free this function does not (cannot) clear the pointer.  */
+
+void
+free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec)
+{
+  int ix;
+  char *name;
+
+  for (ix = 0; VEC_iterate (char_ptr, char_ptr_vec, ix, name); ++ix)
+    xfree (name);
+  VEC_free (char_ptr, char_ptr_vec);
+}
+
+/* Extended version of dirnames_to_char_ptr_vec - additionally if *VECP is
+   non-NULL the new list elements from DIRNAMES are appended to the existing
+   *VECP list of entries.  *VECP address will be updated by this call.  */
+
+void
+dirnames_to_char_ptr_vec_append (VEC (char_ptr) **vecp, const char *dirnames)
+{
+  do
+    {
+      size_t this_len;
+      char *next_dir, *this_dir;
+
+      next_dir = strchr (dirnames, DIRNAME_SEPARATOR);
+      if (next_dir == NULL)
+       this_len = strlen (dirnames);
+      else
+       {
+         this_len = next_dir - dirnames;
+         next_dir++;
+       }
+
+      this_dir = xmalloc (this_len + 1);
+      memcpy (this_dir, dirnames, this_len);
+      this_dir[this_len] = '\0';
+      VEC_safe_push (char_ptr, *vecp, this_dir);
+
+      dirnames = next_dir;
+    }
+  while (dirnames != NULL);
+}
+
+/* Split DIRNAMES by DIRNAME_SEPARATOR delimiter and return a list of all the
+   elements in their original order.  For empty string ("") DIRNAMES return
+   list of one empty string ("") element.
+   
+   You may modify the returned strings.
+   Read free_char_ptr_vec for its cleanup.  */
+
+VEC (char_ptr) *
+dirnames_to_char_ptr_vec (const char *dirnames)
+{
+  VEC (char_ptr) *retval = NULL;
+  
+  dirnames_to_char_ptr_vec_append (&retval, dirnames);
+
+  return retval;
+}
diff --git a/gdb/common/gdb_vecs.h b/gdb/common/gdb_vecs.h
new file mode 100644 (file)
index 0000000..c353ec6
--- /dev/null
@@ -0,0 +1,42 @@
+/* Some commonly-used VEC types.
+
+   Copyright (C) 2012 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 3 of the License, or
+   (at your option) any later version.
+
+   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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef GDB_VECS_H
+#define GDB_VECS_H
+
+#include "vec.h"
+
+typedef char *char_ptr;
+typedef const char *const_char_ptr;
+
+DEF_VEC_P (char_ptr);
+
+DEF_VEC_P (const_char_ptr);
+
+extern void free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec);
+
+extern struct cleanup *
+  make_cleanup_free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec);
+
+extern void dirnames_to_char_ptr_vec_append (VEC (char_ptr) **vecp,
+                                            const char *dirnames);
+
+extern VEC (char_ptr) *dirnames_to_char_ptr_vec (const char *dirnames);
+
+#endif /* GDB_VECS_H */
diff --git a/gdb/common/host-defs.h b/gdb/common/host-defs.h
new file mode 100644 (file)
index 0000000..b968b09
--- /dev/null
@@ -0,0 +1,40 @@
+/* Basic host-specific definitions for GDB.
+   Copyright (C) 1986, 1988-2005, 2007-2012 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 3 of the License, or
+   (at your option) any later version.
+
+   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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef HOST_DEFS_H
+#define HOST_DEFS_H
+
+#ifdef __MSDOS__
+# define CANT_FORK
+# define GLOBAL_CURDIR
+# define DIRNAME_SEPARATOR ';'
+#endif
+
+#if !defined (__CYGWIN__) && defined (_WIN32)
+# define DIRNAME_SEPARATOR ';'
+#endif
+
+#ifndef DIRNAME_SEPARATOR
+#define DIRNAME_SEPARATOR ':'
+#endif
+
+#ifndef SLASH_STRING
+#define SLASH_STRING "/"
+#endif
+
+#endif /* HOST_DEFS_H */
index 18aec8d2dac556f5076ddedd81c4e752d47b0be5..7be99a2d60f8aabecfa7b8fd2b5036d221b0b8c2 100644 (file)
 /* For ``enum gdb_signal''.  */
 #include "gdb/signals.h"
 
+#include "ui-file.h"
+
+#include "host-defs.h"
+
 /* Just in case they're not defined in stdio.h.  */
 
 #ifndef SEEK_SET
@@ -169,7 +173,6 @@ extern char *debug_file_directory;
 
 extern int quit_flag;
 extern int immediate_quit;
-extern int sevenbit_strings;
 
 extern void quit (void);
 
@@ -252,11 +255,6 @@ enum return_value_convention
   RETURN_VALUE_ABI_PRESERVES_ADDRESS,
 };
 
-/* 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 symtab;
@@ -271,271 +269,11 @@ struct value;
    globals that are currently only available to main.c.  */
 extern char *relocate_gdb_directory (const char *initial, int flag);
 
-/* From utils.c */
-
-extern void initialize_utils (void);
-
-extern void notice_quit (void);
-
-extern int strcmp_iw (const char *, const char *);
-
-extern int strcmp_iw_ordered (const char *, const char *);
-
-extern int streq (const char *, const char *);
-
-extern int subset_compare (char *, char *);
-
-extern char *safe_strerror (int);
-
-extern void set_display_time (int);
-
-extern void set_display_space (int);
-
-/* Cleanup utilities.  */
-
-#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 *);
-
-struct ui_out;
-extern struct cleanup *
-  make_cleanup_ui_out_redirect_pop (struct ui_out *uiout);
-
-struct section_addr_info;
-extern struct cleanup *(make_cleanup_free_section_addr_info 
-                        (struct section_addr_info *));
-
-extern struct cleanup *make_cleanup_close (int fd);
-
-extern struct cleanup *make_cleanup_fclose (FILE *file);
-
-extern struct cleanup *make_cleanup_bfd_unref (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_cleanup_restore_uinteger (unsigned int *variable);
-
-struct target_ops;
-extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
-
-extern struct cleanup *
-  make_cleanup_restore_ui_file (struct ui_file **variable);
-
-extern struct cleanup *make_cleanup_value_free_to_mark (struct value *);
-extern struct cleanup *make_cleanup_value_free (struct value *);
-
-struct so_list;
-extern struct cleanup *make_cleanup_free_so (struct so_list *so);
-
-extern struct cleanup *make_cleanup_htab_delete (htab_t htab);
-
-extern void free_current_contents (void *);
-
-extern struct cleanup *make_command_stats_cleanup (int);
-
-extern int myread (int, char *, int);
-
-extern int query (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-extern int nquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-extern int yquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-
-extern void init_page_info (void);
-
-extern struct cleanup *make_cleanup_restore_page_info (void);
-extern struct cleanup *
-  set_batch_flag_and_make_cleanup_restore_page_info (void);
-
-extern char *gdb_realpath (const char *);
-extern char *xfullpath (const char *);
-
-extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
-                                          unsigned char *buf, size_t len);
-
-ULONGEST strtoulst (const char *num, const char **trailer, int base);
-
-char *ldirname (const char *filename);
-
-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.
-   MATCHING, if non-NULL, is the corresponding argument to
-   bfd_check_format_matches, and will be freed.  */
-
-extern const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
-
-extern int parse_pid_to_attach (char *args);
-
-extern struct cleanup *make_bpstat_clear_actions_cleanup (void);
-
-extern int producer_is_gcc_ge_4 (const char *producer);
-
-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 int annotation_level;   /* in stack.c */
 \f
-extern void begin_line (void);
-
-extern void wrap_here (char *);
-
-extern void reinitialize_more_filter (void);
-
-/* Normal results */
-extern struct ui_file *gdb_stdout;
-/* Input stream */
-extern struct ui_file *gdb_stdin;
-/* Serious error notifications */
-extern struct ui_file *gdb_stderr;
-/* Log/debug/trace messages that should bypass normal stdout/stderr
-   filtering.  For moment, always call this stream using
-   *_unfiltered.  In the very near future that restriction shall be
-   removed - either call shall be unfiltered.  (cagney 1999-06-13).  */
-extern struct ui_file *gdb_stdlog;
-/* Target output that should bypass normal stdout/stderr filtering.
-   For moment, always call this stream using *_unfiltered.  In the
-   very near future that restriction shall be removed - either call
-   shall be unfiltered.  (cagney 1999-07-02).  */
-extern struct ui_file *gdb_stdtarg;
-extern struct ui_file *gdb_stdtargerr;
-extern struct ui_file *gdb_stdtargin;
-
-#include "ui-file.h"
-
-/* More generic printf like operations.  Filtered versions may return
-   non-locally on error.  */
-
-extern void fputs_filtered (const char *, struct ui_file *);
-
-extern void fputs_unfiltered (const char *, struct ui_file *);
-
-extern int fputc_filtered (int c, struct ui_file *);
-
-extern int fputc_unfiltered (int c, struct ui_file *);
-
-extern int putchar_filtered (int c);
-
-extern int putchar_unfiltered (int c);
-
-extern void puts_filtered (const char *);
-
-extern void puts_unfiltered (const char *);
-
-extern void puts_filtered_tabular (char *string, int width, int right);
-
-extern void puts_debug (char *prefix, char *string, char *suffix);
-
-extern void vprintf_filtered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
-
-extern void vfprintf_filtered (struct ui_file *, const char *, va_list)
-  ATTRIBUTE_PRINTF (2, 0);
-
-extern void fprintf_filtered (struct ui_file *, const char *, ...)
-  ATTRIBUTE_PRINTF (2, 3);
-
-extern void fprintfi_filtered (int, struct ui_file *, const char *, ...)
-  ATTRIBUTE_PRINTF (3, 4);
-
-extern void printf_filtered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-
-extern void printfi_filtered (int, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
-
-extern void vprintf_unfiltered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
-
-extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list)
-  ATTRIBUTE_PRINTF (2, 0);
-
-extern void fprintf_unfiltered (struct ui_file *, const char *, ...)
-  ATTRIBUTE_PRINTF (2, 3);
-
-extern void printf_unfiltered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-
-extern void print_spaces (int, struct ui_file *);
-
-extern void print_spaces_filtered (int, struct ui_file *);
-
-extern char *n_spaces (int);
-
-extern void fputstr_filtered (const char *str, int quotr,
-                             struct ui_file * stream);
-
-extern void fputstr_unfiltered (const char *str, int quotr,
-                               struct ui_file * stream);
-
-extern void fputstrn_filtered (const char *str, int n, int quotr,
-                              struct ui_file * stream);
-
-extern void fputstrn_unfiltered (const char *str, int n, int quotr,
-                                struct ui_file * stream);
-
-/* Display the host ADDR on STREAM formatted as ``0x%x''.  */
-extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
-
-extern const char *host_address_to_string (const void *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);
-
-/* Return a string representation in hexadecimal notation of ADDRESS,
-   which is suitable for printing.  */
-
-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 *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);
-
-/* 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);
-extern CORE_ADDR string_to_core_addr (const char *my_string);
-
-/* Return a string that contains a number formatted as a hex
-   string.  */
-extern char *hex_string (LONGEST);
-extern char *hex_string_custom (LONGEST, int);
-
-extern void fprintf_symbol_filtered (struct ui_file *, const char *,
-                                    enum language, int);
-
-extern void perror_with_name (const char *) ATTRIBUTE_NORETURN;
-
-extern void print_sys_errmsg (const char *, int);
 
 /* From regex.c or libc.  BSD 4.4 declares this with the argument type as
    "const char *" in unistd.h, so we can't declare the argument
@@ -809,11 +547,6 @@ enum val_prettyprint
 
 extern int longest_to_int (LONGEST);
 
-/* Assorted functions we can declare, now that const and volatile are 
-   defined.  */
-
-extern char *savestring (const char *, 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).  */
@@ -823,49 +556,6 @@ extern char *savestring (const char *, size_t);
 
 #include "common-utils.h"
 
-extern int parse_escape (struct gdbarch *, char **);
-
-/* Message to be printed before the error message, when an error occurs.  */
-
-extern char *error_pre_print;
-
-/* Message to be printed before the error message, when an error occurs.  */
-
-extern char *quit_pre_print;
-
-/* Message to be printed before the warning message, when a warning occurs.  */
-
-extern char *warning_pre_print;
-
-extern void verror (const char *fmt, va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
-
-extern void error (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
-
-extern void error_stream (struct ui_file *) ATTRIBUTE_NORETURN;
-
-extern void vfatal (const char *fmt, va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
-
-extern void fatal (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
-
-extern void internal_verror (const char *file, int line, const char *,
-                            va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
-
-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 warning (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-
-extern void vwarning (const char *, va_list args) ATTRIBUTE_PRINTF (1, 0);
-
 /* List of known OS ABIs.  If you change this, make sure to update the
    table in osabi.c.  */
 enum gdb_osabi
@@ -1054,38 +744,13 @@ extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
 
 extern void (*deprecated_set_hook) (struct cmd_list_element * c);
 
-extern void (*deprecated_error_begin_hook) (void);
-
 extern int (*deprecated_ui_load_progress_hook) (const char *section,
                                                unsigned long num);
 
-
 /* Inhibit window interface if non-zero.  */
 
 extern int use_windows;
 
-/* Definitions of filename-related things.  */
-
-/* Host specific things.  */
-
-#ifdef __MSDOS__
-# define CANT_FORK
-# define GLOBAL_CURDIR
-# define DIRNAME_SEPARATOR ';'
-#endif
-
-#if !defined (__CYGWIN__) && defined (_WIN32)
-# define DIRNAME_SEPARATOR ';'
-#endif
-
-#ifndef DIRNAME_SEPARATOR
-#define DIRNAME_SEPARATOR ':'
-#endif
-
-#ifndef SLASH_STRING
-#define SLASH_STRING "/"
-#endif
-
 /* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
    The name ``TIDGET'' is a historical accident.  Many uses of TIDGET
    in the code actually refer to a lightweight process id, i.e,
@@ -1118,43 +783,6 @@ extern int use_windows;
 /* A width that can achieve a better legibility for GDB MI mode.  */
 #define GDB_MI_MSG_WIDTH  80
 
-/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
-   power of 2).  Round up/down when necessary.  Examples of correct
-   use include:
-
-   addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
-   write_memory (addr, value, len);
-   addr += len;
-
-   and:
-
-   sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
-   write_memory (sp, value, len);
-
-   Note that uses such as:
-
-   write_memory (addr, value, len);
-   addr += align_up (len, 8);
-
-   and:
-
-   sp -= align_up (len, 8);
-   write_memory (sp, value, len);
-
-   are typically not correct as they don't ensure that the address (SP
-   or ADDR) is correctly aligned (relying on previous alignment to
-   keep things right).  This is also why the methods are called
-   "align_..." instead of "round_..." as the latter reads better with
-   this incorrect coding style.  */
-
-extern ULONGEST align_up (ULONGEST v, int n);
-extern ULONGEST align_down (ULONGEST v, int n);
-
-/* Allocation and deallocation functions for the libiberty hash table
-   which use obstacks.  */
-void *hashtab_obstack_allocate (void *data, size_t size, size_t count);
-void dummy_obstack_deallocate (void *object, void *data);
-
 /* From progspace.c */
 
 extern void initialize_progspace (void);
@@ -1169,4 +797,6 @@ enum block_enum
   FIRST_LOCAL_BLOCK = 2
 };
 
+#include "utils.h"
+
 #endif /* #ifndef DEFS_H */
diff --git a/gdb/gdb_vecs.h b/gdb/gdb_vecs.h
deleted file mode 100644 (file)
index d6de54a..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Some commonly-used VEC types.
-
-   Copyright (C) 2012 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   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 3 of the License, or
-   (at your option) any later version.
-
-   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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-
-#ifndef GDB_VECS_H
-#define GDB_VECS_H
-
-#include "vec.h"
-
-struct probe;
-
-DEF_VEC_P (char_ptr);
-
-DEF_VEC_P (const_char_ptr);
-
-/* From utils.c: */
-
-extern void free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec);
-
-extern struct cleanup *
-  make_cleanup_free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec);
-
-extern void dirnames_to_char_ptr_vec_append (VEC (char_ptr) **vecp,
-                                            const char *dirnames);
-
-extern VEC (char_ptr) *dirnames_to_char_ptr_vec (const char *dirnames);
-
-typedef struct probe *probe_p;
-DEF_VEC_P (probe_p);
-
-#endif /* GDB_VECS_H */
index 7c892ebad36013868cb025a12797263532feca23..f26d8dd6a0f2daf06afd9ef2bd05ba4ad490bee4 100644 (file)
 
 #include "gdb_vecs.h"
 
+/* Definition of a vector of probes.  */
+
+typedef struct probe *probe_p;
+DEF_VEC_P (probe_p);
+
 struct linespec_result;
 
 /* Structure useful for passing the header names in the method
index e651df61b86c7a990bb3234fced0bf5530d39233..5968dc210083b9f904a0196f107196ab8c761406 100644 (file)
@@ -22,7 +22,7 @@
 
 /* This file requires that you first include "bfd.h".  */
 #include "symtab.h"
-#include "gdb_vecs.h"
+#include "probe.h"
 
 /* Opaque declarations.  */
 struct target_section;
index a2bc00da3440807be92ad5a7c6113e1df797a75e..c69c3e091d89f17580ae56307b14fc1673c21349 100644 (file)
@@ -3637,24 +3637,6 @@ producer_is_gcc_ge_4 (const char *producer)
   return minor;
 }
 
-/* Call xfree for each element of CHAR_PTR_VEC and final VEC_free for
-   CHAR_PTR_VEC itself.
-
-   You must not modify CHAR_PTR_VEC after it got registered with this function
-   by make_cleanup as the CHAR_PTR_VEC base address may change on its updates.
-   Contrary to VEC_free this function does not (cannot) clear the pointer.  */
-
-void
-free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec)
-{
-  int ix;
-  char *name;
-
-  for (ix = 0; VEC_iterate (char_ptr, char_ptr_vec, ix, name); ++ix)
-    xfree (name);
-  VEC_free (char_ptr, char_ptr_vec);
-}
-
 /* Helper for make_cleanup_free_char_ptr_vec.  */
 
 static void
@@ -3678,54 +3660,6 @@ make_cleanup_free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec)
   return make_cleanup (do_free_char_ptr_vec, char_ptr_vec);
 }
 
-/* Extended version of dirnames_to_char_ptr_vec - additionally if *VECP is
-   non-NULL the new list elements from DIRNAMES are appended to the existing
-   *VECP list of entries.  *VECP address will be updated by this call.  */
-
-void
-dirnames_to_char_ptr_vec_append (VEC (char_ptr) **vecp, const char *dirnames)
-{
-  do
-    {
-      size_t this_len;
-      char *next_dir, *this_dir;
-
-      next_dir = strchr (dirnames, DIRNAME_SEPARATOR);
-      if (next_dir == NULL)
-       this_len = strlen (dirnames);
-      else
-       {
-         this_len = next_dir - dirnames;
-         next_dir++;
-       }
-
-      this_dir = xmalloc (this_len + 1);
-      memcpy (this_dir, dirnames, this_len);
-      this_dir[this_len] = '\0';
-      VEC_safe_push (char_ptr, *vecp, this_dir);
-
-      dirnames = next_dir;
-    }
-  while (dirnames != NULL);
-}
-
-/* Split DIRNAMES by DIRNAME_SEPARATOR delimiter and return a list of all the
-   elements in their original order.  For empty string ("") DIRNAMES return
-   list of one empty string ("") element.
-   
-   You may modify the returned strings.
-   Read free_char_ptr_vec for its cleanup.  */
-
-VEC (char_ptr) *
-dirnames_to_char_ptr_vec (const char *dirnames)
-{
-  VEC (char_ptr) *retval = NULL;
-  
-  dirnames_to_char_ptr_vec_append (&retval, dirnames);
-
-  return retval;
-}
-
 /* Substitute all occurences of string FROM by string TO in *STRINGP.  *STRINGP
    must come from xrealloc-compatible allocator and it may be updated.  FROM
    needs to be delimited by IS_DIR_SEPARATOR or DIRNAME_SEPARATOR (or be
diff --git a/gdb/utils.h b/gdb/utils.h
new file mode 100644 (file)
index 0000000..4bb6ac8
--- /dev/null
@@ -0,0 +1,381 @@
+/* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
+                     for now.  */
+/* I/O, string, cleanup, and other random utilities for GDB.
+   Copyright (C) 1986, 1988-2005, 2007-2012 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 3 of the License, or
+   (at your option) any later version.
+
+   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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include "cleanups.h"
+
+extern void initialize_utils (void);
+
+/* String utilities.  */
+
+extern int sevenbit_strings;
+
+extern char *savestring (const char *, size_t);
+
+extern int strcmp_iw (const char *, const char *);
+
+extern int strcmp_iw_ordered (const char *, const char *);
+
+extern int streq (const char *, const char *);
+
+extern int subset_compare (char *, char *);
+
+ULONGEST strtoulst (const char *num, const char **trailer, int base);
+
+int compare_positive_ints (const void *ap, const void *bp);
+int compare_strings (const void *ap, const void *bp);
+
+/* This is defined in *-hdep.c, e.g., posix-hdep.c.  */
+extern char *safe_strerror (int);
+
+/* A wrapper for bfd_errmsg to produce a more helpful error message
+   in the case of bfd_error_file_ambiguously recognized.
+   MATCHING, if non-NULL, is the corresponding argument to
+   bfd_check_format_matches, and will be freed.  */
+
+extern const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
+\f
+/* Parsing utilites.  */
+
+extern int parse_pid_to_attach (char *args);
+
+extern int parse_escape (struct gdbarch *, char **);
+
+char **gdb_buildargv (const char *);
+\f
+/* Cleanup utilities.  */
+
+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 *);
+
+struct ui_out;
+extern struct cleanup *
+  make_cleanup_ui_out_redirect_pop (struct ui_out *uiout);
+
+struct section_addr_info;
+extern struct cleanup *(make_cleanup_free_section_addr_info 
+                        (struct section_addr_info *));
+
+extern struct cleanup *make_cleanup_close (int fd);
+
+extern struct cleanup *make_cleanup_fclose (FILE *file);
+
+extern struct cleanup *make_cleanup_bfd_unref (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_cleanup_restore_uinteger (unsigned int *variable);
+
+struct target_ops;
+extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
+
+extern struct cleanup *
+  make_cleanup_restore_ui_file (struct ui_file **variable);
+
+extern struct cleanup *make_cleanup_value_free_to_mark (struct value *);
+extern struct cleanup *make_cleanup_value_free (struct value *);
+
+struct so_list;
+extern struct cleanup *make_cleanup_free_so (struct so_list *so);
+
+extern struct cleanup *make_cleanup_htab_delete (htab_t htab);
+
+extern void free_current_contents (void *);
+
+extern struct cleanup *make_command_stats_cleanup (int);
+
+extern void init_page_info (void);
+
+extern struct cleanup *make_cleanup_restore_page_info (void);
+extern struct cleanup *
+  set_batch_flag_and_make_cleanup_restore_page_info (void);
+
+extern struct cleanup *make_bpstat_clear_actions_cleanup (void);
+\f
+/* Path utilities.  */
+
+extern char *gdb_realpath (const char *);
+
+extern char *xfullpath (const char *);
+
+extern int gdb_filename_fnmatch (const char *pattern, const char *string,
+                                int flags);
+
+extern void substitute_path_component (char **stringp, const char *from,
+                                      const char *to);
+
+char *ldirname (const char *filename);
+\f
+/* GDB output, ui_file utilities.  */
+
+struct ui_file;
+
+extern void set_display_time (int);
+
+extern void set_display_space (int);
+
+extern int query (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+extern int nquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+extern int yquery (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+extern void begin_line (void);
+
+extern void wrap_here (char *);
+
+extern void reinitialize_more_filter (void);
+
+/* Global ui_file streams.  These are all defined in main.c.  */
+/* Normal results */
+extern struct ui_file *gdb_stdout;
+/* Input stream */
+extern struct ui_file *gdb_stdin;
+/* Serious error notifications */
+extern struct ui_file *gdb_stderr;
+/* Log/debug/trace messages that should bypass normal stdout/stderr
+   filtering.  For moment, always call this stream using
+   *_unfiltered.  In the very near future that restriction shall be
+   removed - either call shall be unfiltered.  (cagney 1999-06-13).  */
+extern struct ui_file *gdb_stdlog;
+/* Target output that should bypass normal stdout/stderr filtering.
+   For moment, always call this stream using *_unfiltered.  In the
+   very near future that restriction shall be removed - either call
+   shall be unfiltered.  (cagney 1999-07-02).  */
+extern struct ui_file *gdb_stdtarg;
+extern struct ui_file *gdb_stdtargerr;
+extern struct ui_file *gdb_stdtargin;
+
+/* More generic printf like operations.  Filtered versions may return
+   non-locally on error.  */
+
+extern void fputs_filtered (const char *, struct ui_file *);
+
+extern void fputs_unfiltered (const char *, struct ui_file *);
+
+extern int fputc_filtered (int c, struct ui_file *);
+
+extern int fputc_unfiltered (int c, struct ui_file *);
+
+extern int putchar_filtered (int c);
+
+extern int putchar_unfiltered (int c);
+
+extern void puts_filtered (const char *);
+
+extern void puts_unfiltered (const char *);
+
+extern void puts_filtered_tabular (char *string, int width, int right);
+
+extern void puts_debug (char *prefix, char *string, char *suffix);
+
+extern void vprintf_filtered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
+
+extern void vfprintf_filtered (struct ui_file *, const char *, va_list)
+  ATTRIBUTE_PRINTF (2, 0);
+
+extern void fprintf_filtered (struct ui_file *, const char *, ...)
+  ATTRIBUTE_PRINTF (2, 3);
+
+extern void fprintfi_filtered (int, struct ui_file *, const char *, ...)
+  ATTRIBUTE_PRINTF (3, 4);
+
+extern void printf_filtered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+extern void printfi_filtered (int, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
+
+extern void vprintf_unfiltered (const char *, va_list) ATTRIBUTE_PRINTF (1, 0);
+
+extern void vfprintf_unfiltered (struct ui_file *, const char *, va_list)
+  ATTRIBUTE_PRINTF (2, 0);
+
+extern void fprintf_unfiltered (struct ui_file *, const char *, ...)
+  ATTRIBUTE_PRINTF (2, 3);
+
+extern void printf_unfiltered (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+extern void print_spaces (int, struct ui_file *);
+
+extern void print_spaces_filtered (int, struct ui_file *);
+
+extern char *n_spaces (int);
+
+extern void fputstr_filtered (const char *str, int quotr,
+                             struct ui_file * stream);
+
+extern void fputstr_unfiltered (const char *str, int quotr,
+                               struct ui_file * stream);
+
+extern void fputstrn_filtered (const char *str, int n, int quotr,
+                              struct ui_file * stream);
+
+extern void fputstrn_unfiltered (const char *str, int n, int quotr,
+                                struct ui_file * stream);
+
+/* Display the host ADDR on STREAM formatted as ``0x%x''.  */
+extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
+
+extern const char *host_address_to_string (const void *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);
+
+/* Return a string representation in hexadecimal notation of ADDRESS,
+   which is suitable for printing.  */
+
+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 *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);
+
+/* 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);
+extern CORE_ADDR string_to_core_addr (const char *my_string);
+
+/* Return a string that contains a number formatted as a hex
+   string.  */
+extern char *hex_string (LONGEST);
+extern char *hex_string_custom (LONGEST, int);
+
+extern void fprintf_symbol_filtered (struct ui_file *, const char *,
+                                    enum language, int);
+
+extern void perror_with_name (const char *) ATTRIBUTE_NORETURN;
+
+extern void print_sys_errmsg (const char *, int);
+\f
+/* Warnings and error messages.  */
+
+extern void (*deprecated_error_begin_hook) (void);
+
+/* Message to be printed before the error message, when an error occurs.  */
+
+extern char *error_pre_print;
+
+/* Message to be printed before the error message, when an error occurs.  */
+
+extern char *quit_pre_print;
+
+/* Message to be printed before the warning message, when a warning occurs.  */
+
+extern char *warning_pre_print;
+
+extern void verror (const char *fmt, va_list ap)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
+
+extern void error (const char *fmt, ...)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+
+extern void error_stream (struct ui_file *) ATTRIBUTE_NORETURN;
+
+extern void vfatal (const char *fmt, va_list ap)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
+
+extern void fatal (const char *fmt, ...)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+
+extern void internal_verror (const char *file, int line, const char *,
+                            va_list ap)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
+
+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 warning (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+extern void vwarning (const char *, va_list args) ATTRIBUTE_PRINTF (1, 0);
+\f
+/* Misc. utilities.  */
+
+/* Allocation and deallocation functions for the libiberty hash table
+   which use obstacks.  */
+void *hashtab_obstack_allocate (void *data, size_t size, size_t count);
+void dummy_obstack_deallocate (void *object, void *data);
+
+#ifdef HAVE_WAITPID
+extern pid_t wait_to_die_with_timeout (pid_t pid, int *status, int timeout);
+#endif
+
+extern int producer_is_gcc_ge_4 (const char *producer);
+
+extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
+                                          unsigned char *buf, size_t len);
+
+extern int myread (int, char *, int);
+
+/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
+   power of 2).  Round up/down when necessary.  Examples of correct
+   use include:
+
+   addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
+   write_memory (addr, value, len);
+   addr += len;
+
+   and:
+
+   sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
+   write_memory (sp, value, len);
+
+   Note that uses such as:
+
+   write_memory (addr, value, len);
+   addr += align_up (len, 8);
+
+   and:
+
+   sp -= align_up (len, 8);
+   write_memory (sp, value, len);
+
+   are typically not correct as they don't ensure that the address (SP
+   or ADDR) is correctly aligned (relying on previous alignment to
+   keep things right).  This is also why the methods are called
+   "align_..." instead of "round_..." as the latter reads better with
+   this incorrect coding style.  */
+
+extern ULONGEST align_up (ULONGEST v, int n);
+extern ULONGEST align_down (ULONGEST v, int n);
+
+#endif /* UTILS_H */