2000-06-15 H.J. Lu <hjl@gnu.org>
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 15 Jun 2000 20:47:02 +0000 (20:47 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 15 Jun 2000 20:47:02 +0000 (20:47 +0000)
* sort.h: New file. Impored from gcc.

* hashtab.h: Updated from from gcc.

2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

* demangle.h (demangling_styles): Remove trailing comma in enum.

* dyn-string.h (dyn_string_append_char): Change parameter from
char to int.

2000-06-04  Alex Samuel  <samuel@codesourcery.com>

* dyn-string.h: Move here from gcc/dyn-string.h.  Add new functions.

* demangle.h (DMGL_GNU_NEW_ABI): New macro.
(DMGL_STYLE_MASK): Or in DMGL_GNU_NEW_ABI.
(current_demangling_style): Add gnu_new_abi_demangling.
(GNU_NEW_ABI_DEMANGLING_STYLE_STRING): New macro.
(GNU_NEW_ABI_DEMANGLING): Likewise.
(cplus_demangle_new_abi): New declaration.

include/ChangeLog
include/demangle.h
include/dyn-string.h [new file with mode: 0644]
include/hashtab.h
include/sort.h [new file with mode: 0644]

index c304f8b..dead62c 100644 (file)
@@ -1,3 +1,27 @@
+2000-06-15  H.J. Lu  <hjl@gnu.org>
+
+       * sort.h: New file. Impored from gcc.
+
+       * hashtab.h: Updated from from gcc.
+
+2000-06-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * demangle.h (demangling_styles): Remove trailing comma in enum.
+
+       * dyn-string.h (dyn_string_append_char): Change parameter from
+       char to int.
+
+2000-06-04  Alex Samuel  <samuel@codesourcery.com>
+
+       * dyn-string.h: Move here from gcc/dyn-string.h.  Add new functions.
+
+       * demangle.h (DMGL_GNU_NEW_ABI): New macro.
+       (DMGL_STYLE_MASK): Or in DMGL_GNU_NEW_ABI. 
+       (current_demangling_style): Add gnu_new_abi_demangling.
+       (GNU_NEW_ABI_DEMANGLING_STYLE_STRING): New macro.
+       (GNU_NEW_ABI_DEMANGLING): Likewise.
+       (cplus_demangle_new_abi): New declaration.
+
 Tue May 30 16:53:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * floatformat.h (struct floatformat): Add field name.
index 63fe5e2..61dd230 100644 (file)
 
 /* Options passed to cplus_demangle (in 2nd parameter). */
 
-#define DMGL_NO_OPTS   0               /* For readability... */
-#define DMGL_PARAMS    (1 << 0)        /* Include function args */
-#define DMGL_ANSI      (1 << 1)        /* Include const, volatile, etc */
-#define DMGL_JAVA      (1 << 2)        /* Demangle as Java rather than C++. */
-
-#define DMGL_AUTO      (1 << 8)
-#define DMGL_GNU       (1 << 9)
-#define DMGL_LUCID     (1 << 10)
-#define DMGL_ARM       (1 << 11)
-#define DMGL_HP        (1 << 12)       /* For the HP aCC compiler; same as ARM
-                                           except for template arguments, etc. */
-#define DMGL_EDG       (1 << 13)
+#define DMGL_NO_OPTS    0              /* For readability... */
+#define DMGL_PARAMS     (1 << 0)       /* Include function args */
+#define DMGL_ANSI       (1 << 1)       /* Include const, volatile, etc */
+#define DMGL_JAVA       (1 << 2)       /* Demangle as Java rather than C++. */
+
+#define DMGL_AUTO       (1 << 8)
+#define DMGL_GNU        (1 << 9)
+#define DMGL_LUCID      (1 << 10)
+#define DMGL_ARM        (1 << 11)
+#define DMGL_HP         (1 << 12)       /* For the HP aCC compiler;
+                                            same as ARM except for
+                                            template arguments, etc. */
+#define DMGL_EDG        (1 << 13)
+#define DMGL_GNU_NEW_ABI (1 << 14)
 
 /* If none of these are set, use 'current_demangling_style' as the default. */
-#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG)
+#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_NEW_ABI)
 
 /* Enumeration of possible demangling styles.
 
@@ -56,17 +58,19 @@ extern enum demangling_styles
   lucid_demangling = DMGL_LUCID,
   arm_demangling = DMGL_ARM,
   hp_demangling = DMGL_HP,
-  edg_demangling = DMGL_EDG
+  edg_demangling = DMGL_EDG,
+  gnu_new_abi_demangling = DMGL_GNU_NEW_ABI
 } current_demangling_style;
 
 /* Define string names for the various demangling styles. */
 
-#define AUTO_DEMANGLING_STYLE_STRING   "auto"
-#define GNU_DEMANGLING_STYLE_STRING    "gnu"
-#define LUCID_DEMANGLING_STYLE_STRING  "lucid"
-#define ARM_DEMANGLING_STYLE_STRING    "arm"
-#define HP_DEMANGLING_STYLE_STRING     "hp"
-#define EDG_DEMANGLING_STYLE_STRING    "edg"
+#define AUTO_DEMANGLING_STYLE_STRING         "auto"
+#define GNU_DEMANGLING_STYLE_STRING                  "gnu"
+#define LUCID_DEMANGLING_STYLE_STRING        "lucid"
+#define ARM_DEMANGLING_STYLE_STRING          "arm"
+#define HP_DEMANGLING_STYLE_STRING           "hp"
+#define EDG_DEMANGLING_STYLE_STRING          "edg"
+#define GNU_NEW_ABI_DEMANGLING_STYLE_STRING   "gnu-new-abi"
 
 /* Some macros to test what demangling style is active. */
 
@@ -77,6 +81,17 @@ extern enum demangling_styles
 #define ARM_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_ARM)
 #define HP_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_HP)
 #define EDG_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_EDG)
+#define GNU_NEW_ABI_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU_NEW_ABI)
+
+/* Provide information about the available demangle styles. This code is
+   pulled from gdb into libiberty because it is useful to binutils also.  */
+
+extern struct demangler_engine
+{
+  const char *demangling_style_name;
+  enum demangling_styles demangling_style;
+  const char *demangling_style_doc;
+} libiberty_demanglers[];
 
 extern char *
 cplus_demangle PARAMS ((const char *mangled, int options));
@@ -92,4 +107,14 @@ cplus_mangle_opname PARAMS ((const char *opname, int options));
 extern void
 set_cplus_marker_for_demangling PARAMS ((int ch));
 
+extern enum demangling_styles 
+cplus_demangle_set_style PARAMS ((enum demangling_styles style));
+
+extern enum demangling_styles 
+cplus_demangle_name_to_style PARAMS ((const char *name));
+
+/* New-ABI demangling entry point, defined in cp-demangle.c.  */
+extern char*
+cplus_demangle_new_abi PARAMS ((const char* mangled));
+
 #endif /* DEMANGLE_H */
diff --git a/include/dyn-string.h b/include/dyn-string.h
new file mode 100644 (file)
index 0000000..3e2213e
--- /dev/null
@@ -0,0 +1,64 @@
+/* An abstract string datatype.
+   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+   Contributed by Mark Mitchell (mark@markmitchell.com).
+
+This file is part of GNU CC.
+   
+GNU CC 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 2, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+
+typedef struct dyn_string
+{
+  int allocated;       /* The amount of space allocated for the string.  */
+  int length;          /* The actual length of the string.  */
+  char *s;             /* The string itself, NUL-terminated.  */
+}* dyn_string_t;
+
+/* The length STR, in bytes, not including the terminating NUL.  */
+#define dyn_string_length(STR)                                          \
+  ((STR)->length)
+
+/* The NTBS in which the contents of STR are stored.  */
+#define dyn_string_buf(STR)                                             \
+  ((STR)->s)
+
+/* Compare DS1 to DS2 with strcmp.  */
+#define dyn_string_compare(DS1, DS2)                                    \
+  (strcmp ((DS1)->s, (DS2)->s))
+
+
+extern void dyn_string_init             PARAMS ((struct dyn_string *, int));
+extern dyn_string_t dyn_string_new      PARAMS ((int));
+extern void dyn_string_delete           PARAMS ((dyn_string_t));
+extern char *dyn_string_release         PARAMS ((dyn_string_t));
+extern dyn_string_t dyn_string_resize   PARAMS ((dyn_string_t, int));
+extern void dyn_string_clear            PARAMS ((dyn_string_t));
+extern void dyn_string_copy             PARAMS ((dyn_string_t, dyn_string_t));
+extern void dyn_string_copy_cstr        PARAMS ((dyn_string_t, const char *));
+extern void dyn_string_prepend          PARAMS ((dyn_string_t, dyn_string_t));
+extern void dyn_string_prepend_cstr     PARAMS ((dyn_string_t, const char *));
+extern void dyn_string_insert           PARAMS ((dyn_string_t, int,
+                                                dyn_string_t));
+extern void dyn_string_insert_cstr      PARAMS ((dyn_string_t, int,
+                                                const char *));
+extern dyn_string_t dyn_string_append   PARAMS ((dyn_string_t, dyn_string_t));
+extern dyn_string_t dyn_string_append_cstr   
+                                        PARAMS ((dyn_string_t, const char *));
+extern dyn_string_t dyn_string_append_char
+                                        PARAMS ((dyn_string_t, int));
+extern void dyn_string_substring        PARAMS ((dyn_string_t, 
+                                                dyn_string_t, int, int));
+extern int dyn_string_eq                PARAMS ((dyn_string_t, dyn_string_t));
index 5fe2393..12f830c 100644 (file)
@@ -1,5 +1,5 @@
 /* An expandable hash tables datatype.  
-   Copyright (C) 1999 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
    Contributed by Vladimir Makarov (vmakarov@cygnus.com).
 
 This program is free software; you can redistribute it and/or modify
@@ -38,10 +38,13 @@ extern "C" {
 
 #include <ansidecl.h>
 
+/* The type for a hash code.  */
+typedef unsigned int hashval_t;
+
 /* Callback function pointer types.  */
 
 /* Calculate hash of a table entry.  */
-typedef unsigned int (*htab_hash) PARAMS ((const void *));
+typedef hashval_t (*htab_hash) PARAMS ((const void *));
 
 /* Compare a table entry with a possible entry.  The entry already in
    the table always comes first, so the second element can be of a
@@ -99,6 +102,9 @@ struct htab
 
 typedef struct htab *htab_t;
 
+/* An enum saying whether we insert into the hash table or not.  */
+enum insert_option {NO_INSERT, INSERT};
+
 /* The prototypes of the package functions. */
 
 extern htab_t  htab_create     PARAMS ((size_t, htab_hash,
@@ -107,11 +113,13 @@ extern void       htab_delete     PARAMS ((htab_t));
 extern void    htab_empty      PARAMS ((htab_t));
 
 extern void    *htab_find      PARAMS ((htab_t, const void *));
-extern void   **htab_find_slot PARAMS ((htab_t, const void *, int));
-extern void    *htab_find_with_hash            PARAMS ((htab_t, const void *,
-                                                        unsigned int));
-extern void   **htab_find_slot_with_hash       PARAMS ((htab_t, const void *,
-                                                        unsigned int, int));
+extern void   **htab_find_slot PARAMS ((htab_t, const void *,
+                                        enum insert_option));
+extern void    *htab_find_with_hash      PARAMS ((htab_t, const void *,
+                                                  hashval_t));
+extern void   **htab_find_slot_with_hash  PARAMS ((htab_t, const void *,
+                                                  hashval_t,
+                                                  enum insert_option));
 extern void    htab_clear_slot PARAMS ((htab_t, void **));
 extern void    htab_remove_elt PARAMS ((htab_t, void *));
 
@@ -121,6 +129,12 @@ extern size_t      htab_size       PARAMS ((htab_t));
 extern size_t  htab_elements   PARAMS ((htab_t));
 extern double  htab_collisions PARAMS ((htab_t));
 
+/* A hash function for pointers.  */
+extern htab_hash htab_hash_pointer;
+
+/* An equality function for pointers.  */
+extern htab_eq htab_eq_pointer;
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/include/sort.h b/include/sort.h
new file mode 100644 (file)
index 0000000..c8e1d55
--- /dev/null
@@ -0,0 +1,48 @@
+/* Sorting algorithms.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   Contributed by Mark Mitchell <mark@codesourcery.com>.
+
+This file is part of GNU CC.
+   
+GNU CC 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 2, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef SORT_H
+#define SORT_H
+
+#include <sys/types.h> /* For size_t */
+#ifdef __STDC__
+#include <stddef.h>
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <ansidecl.h>
+
+/* Sort an array of pointers.  */
+
+extern void sort_pointers PARAMS ((size_t, void **, void **));
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* SORT_H */
+
+
+   
+