diff options
-rw-r--r-- | libiberty/basename.c | 39 | ||||
-rw-r--r-- | libiberty/calloc.c | 3 | ||||
-rw-r--r-- | libiberty/config.table | 3 | ||||
-rw-r--r-- | libiberty/config/mh-openedition | 3 | ||||
-rw-r--r-- | libiberty/getcwd.c | 10 | ||||
-rw-r--r-- | libiberty/getpwd.c | 115 | ||||
-rw-r--r-- | libiberty/hashtab.c | 330 | ||||
-rw-r--r-- | libiberty/makefile.vms | 2 | ||||
-rw-r--r-- | libiberty/putenv.c | 68 | ||||
-rw-r--r-- | libiberty/random.c | 35 | ||||
-rw-r--r-- | libiberty/setenv.c | 163 | ||||
-rw-r--r-- | libiberty/strtol.c | 5 | ||||
-rw-r--r-- | libiberty/strtoul.c | 7 | ||||
-rw-r--r-- | libiberty/testsuite/Makefile.in | 75 | ||||
-rw-r--r-- | libiberty/testsuite/demangle-expected | 2488 | ||||
-rwxr-xr-x | libiberty/testsuite/regress-demangle | 28 | ||||
-rw-r--r-- | libiberty/tmpnam.c | 2 | ||||
-rw-r--r-- | libiberty/vmsbuild.com | 2 | ||||
-rw-r--r-- | libiberty/xmemdup.c | 22 | ||||
-rw-r--r-- | libiberty/xstrdup.c | 1 |
20 files changed, 3372 insertions, 29 deletions
diff --git a/libiberty/basename.c b/libiberty/basename.c index f544c85..7698f06 100644 --- a/libiberty/basename.c +++ b/libiberty/basename.c @@ -14,24 +14,53 @@ DESCRIPTION last component of the pathname ("ls.c" in this case). BUGS - Presumes a UNIX style path with UNIX style separators. + Presumes a UNIX or DOS/Windows style path with UNIX or DOS/Windows + style separators. */ #include "ansidecl.h" #include "libiberty.h" +#include <ctype.h> + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +/* Define IS_DIR_SEPARATOR. */ +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ char * basename (name) const char *name; { - const char *base = name; + const char *base; - while (*name) +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) { - if (*name++ == '/') + if (IS_DIR_SEPARATOR (*name)) { - base = name; + base = name + 1; } } return (char *) base; } + diff --git a/libiberty/calloc.c b/libiberty/calloc.c index c8c0a78..334b18d 100644 --- a/libiberty/calloc.c +++ b/libiberty/calloc.c @@ -1,3 +1,6 @@ +/* calloc -- allocate memory which has been initialized to zero. + This function is in the public domain. */ + #include "ansidecl.h" #include "libiberty.h" diff --git a/libiberty/config.table b/libiberty/config.table index 5913b23..4e33746 100644 --- a/libiberty/config.table +++ b/libiberty/config.table @@ -4,6 +4,7 @@ case "${host}" in *-*-cxux7*) frag=mh-cxux7 ;; *-*-freebsd2.1.*) frag=mh-fbsd21 ;; *-*-freebsd2.2.[012]) frag=mh-fbsd21 ;; + i370-*-opened*) frag=mh-openedition ;; i[345]86-*-windows*) frag=mh-windows ;; *-*-beos*) frag=mh-beos ;; esac @@ -57,4 +58,4 @@ else fi frag=xhost-mkfrag -${CONFIG_SHELL} ${libiberty_topdir}/move-if-change temp-frag xhost-mkfrag +${CONFIG_SHELL-/bin/sh} ${libiberty_topdir}/move-if-change temp-frag xhost-mkfrag diff --git a/libiberty/config/mh-openedition b/libiberty/config/mh-openedition new file mode 100644 index 0000000..6e8e354 --- /dev/null +++ b/libiberty/config/mh-openedition @@ -0,0 +1,3 @@ +HDEFINES = -D_ALL_SOURCE +CC=c89 + diff --git a/libiberty/getcwd.c b/libiberty/getcwd.c index 06d55c0..47b1c1e 100644 --- a/libiberty/getcwd.c +++ b/libiberty/getcwd.c @@ -14,6 +14,9 @@ DESCRIPTION current directory's path doesn't fit in LEN characters, the result is NULL and errno is set. + If pathname is a null pointer, getcwd() will obtain size bytes of + space using malloc. + BUGS Emulated via the getwd() call, which is reasonable for most systems that do not have getcwd(). @@ -48,6 +51,13 @@ getcwd (buf, len) errno = ERANGE; return 0; } + if (!buf) { + buf = (char*)malloc(len); + if (!buf) { + errno = ENOMEM; + return 0; + } + } strcpy (buf, ourbuf); } return buf; diff --git a/libiberty/getpwd.c b/libiberty/getpwd.c new file mode 100644 index 0000000..de6e039 --- /dev/null +++ b/libiberty/getpwd.c @@ -0,0 +1,115 @@ +/* getpwd.c - get the working directory */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <sys/types.h> + +#include <errno.h> +#ifndef errno +extern int errno; +#endif + +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif +#if HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif + +/* Prototype these in case the system headers don't provide them. */ +extern char *getpwd (); +extern char *getwd (); + +#include "libiberty.h" + +/* Virtually every UN*X system now in common use (except for pre-4.3-tahoe + BSD systems) now provides getcwd as called for by POSIX. Allow for + the few exceptions to the general rule here. */ + +#if !defined(HAVE_GETCWD) && defined(HAVE_GETWD) +#define getcwd(buf,len) getwd(buf) +#endif + +#ifdef MAXPATHLEN +#define GUESSPATHLEN (MAXPATHLEN + 1) +#else +#define GUESSPATHLEN 100 +#endif + +#if !(defined (VMS) || (defined(_WIN32) && !defined(__CYGWIN__))) + +/* Get the working directory. Use the PWD environment variable if it's + set correctly, since this is faster and gives more uniform answers + to the user. Yield the working directory if successful; otherwise, + yield 0 and set errno. */ + +char * +getpwd () +{ + static char *pwd; + static int failure_errno; + + char *p = pwd; + size_t s; + struct stat dotstat, pwdstat; + + if (!p && !(errno = failure_errno)) + { + if (! ((p = getenv ("PWD")) != 0 + && *p == '/' + && stat (p, &pwdstat) == 0 + && stat (".", &dotstat) == 0 + && dotstat.st_ino == pwdstat.st_ino + && dotstat.st_dev == pwdstat.st_dev)) + + /* The shortcut didn't work. Try the slow, ``sure'' way. */ + for (s = GUESSPATHLEN; ! getcwd (p = xmalloc (s), s); s *= 2) + { + int e = errno; + free (p); +#ifdef ERANGE + if (e != ERANGE) +#endif + { + errno = failure_errno = e; + p = 0; + break; + } + } + + /* Cache the result. This assumes that the program does + not invoke chdir between calls to getpwd. */ + pwd = p; + } + return p; +} + +#else /* VMS || _WIN32 && !__CYGWIN__ */ + +#ifndef MAXPATHLEN +#define MAXPATHLEN 255 +#endif + +char * +getpwd () +{ + static char *pwd = 0; + + if (!pwd) + pwd = getcwd (xmalloc (MAXPATHLEN + 1), MAXPATHLEN + 1 +#ifdef VMS + , 0 +#endif + ); + return pwd; +} + +#endif /* VMS || _WIN32 && !__CYGWIN__ */ diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c new file mode 100644 index 0000000..3f5b303 --- /dev/null +++ b/libiberty/hashtab.c @@ -0,0 +1,330 @@ +/* An expandable hash tables datatype. + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Vladimir Makarov (vmakarov@cygnus.com). + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with libiberty; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* This package implements basic hash table functionality. It is possible + to search for an entry, create an entry and destroy an entry. + + Elements in the table are generic pointers. + + The size of the table is not fixed; if the occupancy of the table + grows too high the hash table will be expanded. + + The abstract data implementation is based on generalized Algorithm D + from Knuth's book "The art of computer programming". Hash table is + expanded by creation of new hash table and transferring elements from + the old table to the new table. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <sys/types.h> + +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif + +#include <stdio.h> + +#include "libiberty.h" +#include "hashtab.h" + +/* The following variable is used for debugging. Its value is number + of all calls of `find_hash_table_entry' for all hash tables. */ + +static int all_searches = 0; + +/* The following variable is used for debugging. Its value is number + of collisions fixed for time of work with all hash tables. */ + +static int all_collisions = 0; + +/* The following variable is used for debugging. Its value is number + of all table expansions fixed for time of work with all hash + tables. */ + +static int all_expansions = 0; + +/* This macro defines reserved value for empty table entry. */ + +#define EMPTY_ENTRY NULL + +/* This macro defines reserved value for table entry which contained + a deleted element. */ + +#define DELETED_ENTRY ((void *) 1) + +/* The following function returns the nearest prime number which is + greater than given source number. */ + +static unsigned long +higher_prime_number (number) + unsigned long number; +{ + unsigned long i; + + for (number = (number / 2) * 2 + 3;; number += 2) + { + for (i = 3; i * i <= number; i += 2) + if (number % i == 0) + break; + if (i * i > number) + return number; + } +} + +/* This function creates table with length slightly longer than given + source length. Created hash table is initiated as empty (all the + hash table entries are EMPTY_ENTRY). The function returns the + created hash table. */ + +hash_table_t +create_hash_table (size, hash_function, eq_function) + size_t size; + unsigned (*hash_function) PARAMS ((hash_table_entry_t)); + int (*eq_function) PARAMS ((hash_table_entry_t, hash_table_entry_t)); +{ + hash_table_t result; + + size = higher_prime_number (size); + result = (hash_table_t) xmalloc (sizeof (*result)); + result->entries + = (hash_table_entry_t *) xmalloc (size * sizeof (hash_table_entry_t)); + result->size = size; + result->hash_function = hash_function; + result->eq_function = eq_function; + result->number_of_elements = 0; + result->number_of_deleted_elements = 0; + result->searches = 0; + result->collisions = 0; + memset (result->entries, 0, size * sizeof (hash_table_entry_t)); + return result; +} + +/* This function frees all memory allocated for given hash table. + Naturally the hash table must already exist. */ + +void +delete_hash_table (htab) + hash_table_t htab; +{ + free (htab->entries); + free (htab); +} + +/* This function clears all entries in the given hash table. */ + +void +empty_hash_table (htab) + hash_table_t htab; +{ + memset (htab->entries, 0, htab->size * sizeof (hash_table_entry_t)); +} + +/* The following function changes size of memory allocated for the + entries and repeatedly inserts the table elements. The occupancy + of the table after the call will be about 50%. Naturally the hash + table must already exist. Remember also that the place of the + table entries is changed. */ + +static void +expand_hash_table (htab) + hash_table_t htab; +{ + hash_table_t new_htab; + hash_table_entry_t *entry_ptr; + hash_table_entry_t *new_entry_ptr; + + new_htab = create_hash_table (htab->number_of_elements * 2, + htab->hash_function, htab->eq_function); + for (entry_ptr = htab->entries; entry_ptr < htab->entries + htab->size; + entry_ptr++) + if (*entry_ptr != EMPTY_ENTRY && *entry_ptr != DELETED_ENTRY) + { + new_entry_ptr = find_hash_table_entry (new_htab, *entry_ptr, 1); + *new_entry_ptr = (*entry_ptr); + } + free (htab->entries); + *htab = (*new_htab); + free (new_htab); +} + +/* This function searches for hash table entry which contains element + equal to given value or empty entry in which given value can be + placed (if the element with given value does not exist in the + table). The function works in two regimes. The first regime is + used only for search. The second is used for search and + reservation empty entry for given value. The table is expanded if + occupancy (taking into accout also deleted elements) is more than + 75%. Naturally the hash table must already exist. If reservation + flag is TRUE then the element with given value should be inserted + into the table entry before another call of + `find_hash_table_entry'. */ + +hash_table_entry_t * +find_hash_table_entry (htab, element, reserve) + hash_table_t htab; + hash_table_entry_t element; + int reserve; +{ + hash_table_entry_t *entry_ptr; + hash_table_entry_t *first_deleted_entry_ptr; + unsigned index, hash_value, secondary_hash_value; + + if (htab->size * 3 <= htab->number_of_elements * 4) + { + all_expansions++; + expand_hash_table (htab); + } + hash_value = (*htab->hash_function) (element); + secondary_hash_value = 1 + hash_value % (htab->size - 2); + index = hash_value % htab->size; + htab->searches++; + all_searches++; + first_deleted_entry_ptr = NULL; + for (;;htab->collisions++, all_collisions++) + { + entry_ptr = htab->entries + index; + if (*entry_ptr == EMPTY_ENTRY) + { + if (reserve) + { + htab->number_of_elements++; + if (first_deleted_entry_ptr != NULL) + { + entry_ptr = first_deleted_entry_ptr; + *entry_ptr = EMPTY_ENTRY; + } + } + break; + } + else if (*entry_ptr != DELETED_ENTRY) + { + if ((*htab->eq_function) (*entry_ptr, element)) + break; + } + else if (first_deleted_entry_ptr == NULL) + first_deleted_entry_ptr = entry_ptr; + index += secondary_hash_value; + if (index >= htab->size) + index -= htab->size; + } + return entry_ptr; +} + +/* This function deletes element with given value from hash table. + The hash table entry value will be `DELETED_ENTRY' after the + function call. Naturally the hash table must already exist. Hash + table entry for given value should be not empty (or deleted). */ + +void +remove_element_from_hash_table_entry (htab, element) + hash_table_t htab; + hash_table_entry_t element; +{ + hash_table_entry_t *entry_ptr; + + entry_ptr = find_hash_table_entry (htab, element, 0); + *entry_ptr = DELETED_ENTRY; + htab->number_of_deleted_elements++; +} + +/* This function clears a specified slot in a hash table. + It is useful when you've already done the lookup and don't want to + do it again. */ + +void +clear_hash_table_slot (htab, slot) + hash_table_t htab; + hash_table_entry_t *slot; +{ + if (slot < htab->entries || slot >= htab->entries + htab->size + || *slot == EMPTY_ENTRY || *slot == DELETED_ENTRY) + abort (); + *slot = DELETED_ENTRY; + htab->number_of_deleted_elements++; +} + +/* This function scans over the entire hash table calling + CALLBACK for each live entry. If CALLBACK returns false, + the iteration stops. INFO is passed as CALLBACK's second + argument. */ + +void +traverse_hash_table (htab, callback, info) + hash_table_t htab; + int (*callback) PARAMS ((hash_table_entry_t, void *)); + void *info; +{ + hash_table_entry_t *entry_ptr; + for (entry_ptr = htab->entries; entry_ptr < htab->entries + htab->size; + entry_ptr++) + if (*entry_ptr != EMPTY_ENTRY && *entry_ptr != DELETED_ENTRY) + if (!callback (*entry_ptr, info)) + break; +} + +/* The following function returns current size of given hash table. */ + +size_t +hash_table_size (htab) + hash_table_t htab; +{ + return htab->size; +} + +/* The following function returns current number of elements in given + hash table. */ + +size_t +hash_table_elements_number (htab) + hash_table_t htab; +{ + return htab->number_of_elements - htab->number_of_deleted_elements; +} + +/* The following function returns number of percents of fixed + collisions during all work with given hash table. */ + +int +hash_table_collisions (htab) + hash_table_t htab; +{ + int searches; + + searches = htab->searches; + if (searches == 0) + searches++; + return htab->collisions * 100 / searches; +} + +/* The following function returns number of percents of fixed + collisions during all work with all hash tables. */ + +int +all_hash_table_collisions () +{ + int searches; + + searches = all_searches; + if (searches == 0) + searches++; + return all_collisions * 100 / searches; +} diff --git a/libiberty/makefile.vms b/libiberty/makefile.vms index b61b512..6a7dd45 100644 --- a/libiberty/makefile.vms +++ b/libiberty/makefile.vms @@ -10,7 +10,7 @@ OBJS=bcopy.obj,bcmp.obj,getopt.obj,obstack.obj,xexit.obj,xmalloc.obj,hex.obj,\ getopt1.obj,cplus-dem.obj,strncasecmp.obj,strcasecmp.obj,strdup.obj,\ concat.obj,getruntime.obj,getpagesize.obj,alloca.obj,xstrerror.obj,\ - xstrdup.obj,xatexit.obj,choose-temp.obj,fnmatch.obj,objalloc.obj + xmemdup.obj,xstrdup.obj,xatexit.obj,choose-temp.obj,fnmatch.obj,objalloc.obj ifeq ($(CC),gcc) CFLAGS=/include=([],[-.include]) diff --git a/libiberty/putenv.c b/libiberty/putenv.c new file mode 100644 index 0000000..9d56922 --- /dev/null +++ b/libiberty/putenv.c @@ -0,0 +1,68 @@ +/* Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc. + This file based on putenv.c in the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#if defined (_AIX) && !defined (__GNUC__) + #pragma alloca +#endif + +#if HAVE_CONFIG_H +# include <config.h> +#endif + +#include "ansidecl.h" + +#if HAVE_STDLIB_H +# include <stdlib.h> +#endif +#if HAVE_STRING_H +# include <string.h> +#endif + +#ifdef HAVE_ALLOCA_H +# include <alloca.h> +#else +# ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# else +extern char *alloca (); +# endif /* __GNUC__ */ +# endif /* alloca */ +#endif /* HAVE_ALLOCA_H */ + +/* Below this point, it's verbatim code from the glibc-2.0 implementation */ + + +/* Put STRING, which is of the form "NAME=VALUE", in the environment. */ +int +putenv (string) + const char *string; +{ + const char *const name_end = strchr (string, '='); + + if (name_end) + { + char *name = (char *) alloca (name_end - string + 1); + memcpy (name, string, name_end - string); + name[name_end - string] = '\0'; + return setenv (name, name_end + 1, 1); + } + + unsetenv (string); + return 0; +} diff --git a/libiberty/random.c b/libiberty/random.c index 0a95070..ef00da0 100644 --- a/libiberty/random.c +++ b/libiberty/random.c @@ -2,17 +2,30 @@ * Copyright (c) 1983 Regents of the University of California. * All rights reserved. * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. [rescinded 22 July 1999] + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ /* diff --git a/libiberty/setenv.c b/libiberty/setenv.c new file mode 100644 index 0000000..eec1300 --- /dev/null +++ b/libiberty/setenv.c @@ -0,0 +1,163 @@ +/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. + This file based on setenv.c in the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include <config.h> +#endif + +#include "ansidecl.h" +#include <sys/types.h> /* For `size_t' */ +#include <stdio.h> /* For `NULL' */ + +#include <errno.h> +#if !defined(errno) && !defined(HAVE_ERRNO_DECL) +extern int errno; +#endif +#define __set_errno(ev) ((errno) = (ev)) + +#if HAVE_STDLIB_H +# include <stdlib.h> +#endif +#if HAVE_STRING_H +# include <string.h> +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif + +#define __environ environ +#ifndef HAVE_ENVIRON_DECL +extern char **environ; +#endif + +/* LOCK and UNLOCK are defined as no-ops. This makes the libiberty + * implementation MT-Unsafe. */ +#define LOCK +#define UNLOCK + +/* Below this point, it's verbatim code from the glibc-2.0 implementation */ + +/* If this variable is not a null pointer we allocated the current + environment. */ +static char **last_environ; + + +int +setenv (name, value, replace) + const char *name; + const char *value; + int replace; +{ + register char **ep; + register size_t size; + const size_t namelen = strlen (name); + const size_t vallen = strlen (value) + 1; + + LOCK; + + size = 0; + if (__environ != NULL) + for (ep = __environ; *ep != NULL; ++ep) + if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=') + break; + else + ++size; + + if (__environ == NULL || *ep == NULL) + { + char **new_environ; + if (__environ == last_environ && __environ != NULL) + /* We allocated this space; we can extend it. */ + new_environ = (char **) realloc (last_environ, + (size + 2) * sizeof (char *)); + else + new_environ = (char **) malloc ((size + 2) * sizeof (char *)); + + if (new_environ == NULL) + { + UNLOCK; + return -1; + } + + new_environ[size] = malloc (namelen + 1 + vallen); + if (new_environ[size] == NULL) + { + free ((char *) new_environ); + __set_errno (ENOMEM); + UNLOCK; + return -1; + } + + if (__environ != last_environ) + memcpy ((char *) new_environ, (char *) __environ, + size * sizeof (char *)); + + memcpy (new_environ[size], name, namelen); + new_environ[size][namelen] = '='; + memcpy (&new_environ[size][namelen + 1], value, vallen); + + new_environ[size + 1] = NULL; + + last_environ = __environ = new_environ; + } + else if (replace) + { + size_t len = strlen (*ep); + if (len + 1 < namelen + 1 + vallen) + { + /* The existing string is too short; malloc a new one. */ + char *new = malloc (namelen + 1 + vallen); + if (new == NULL) + { + UNLOCK; + return -1; + } + *ep = new; + } + memcpy (*ep, name, namelen); + (*ep)[namelen] = '='; + memcpy (&(*ep)[namelen + 1], value, vallen); + } + + UNLOCK; + + return 0; +} + +void +unsetenv (name) + const char *name; +{ + const size_t len = strlen (name); + char **ep; + + LOCK; + + for (ep = __environ; *ep; ++ep) + if (!strncmp (*ep, name, len) && (*ep)[len] == '=') + { + /* Found it. Remove this pointer by moving later ones back. */ + char **dp = ep; + do + dp[0] = dp[1]; + while (*dp++); + /* Continue the loop in case NAME appears again. */ + } + + UNLOCK; +} diff --git a/libiberty/strtol.c b/libiberty/strtol.c index 37d1706..5467cc3 100644 --- a/libiberty/strtol.c +++ b/libiberty/strtol.c @@ -10,10 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * 3. [rescinded 22 July 1999] * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. diff --git a/libiberty/strtoul.c b/libiberty/strtoul.c index ff6f2d6..2ec3204 100644 --- a/libiberty/strtoul.c +++ b/libiberty/strtoul.c @@ -10,10 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * 3. [rescinded 22 July 1999] * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -91,7 +88,7 @@ strtoul(nptr, endptr, base) break; if (c >= base) break; - if (any < 0 || acc > cutoff || acc == cutoff && c > cutlim) + if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) any = -1; else { any = 1; diff --git a/libiberty/testsuite/Makefile.in b/libiberty/testsuite/Makefile.in new file mode 100644 index 0000000..9d4ddd0 --- /dev/null +++ b/libiberty/testsuite/Makefile.in @@ -0,0 +1,75 @@ +# +# Makefile +# Copyright (C) 1999 +# Free Software Foundation +# +# This file is part of the libiberty library. +# Libiberty is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# Libiberty 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with libiberty; see the file COPYING.LIB. If not, +# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +# This file was written by Tom Tromey <tromey@cygnus.com>. + +# +# Makefile for libiberty/testsuite directory +# + +srcdir = @srcdir@ +VPATH = @srcdir@ + +SHELL = @SHELL@ + +CC = @CC@ +CFLAGS = @CFLAGS@ +LIBCFLAGS = $(CFLAGS) + +# Multilib support variables. +MULTISRCTOP = + +INCDIR=$(srcdir)/../$(MULTISRCTOP)../include + +all: + +check: @CHECK@ + +# Run some tests of the demangler. +check-cplus-dem: test-filter $(srcdir)/demangle-expected + $(SHELL) $(srcdir)/regress-demangle $(srcdir)/demangle-expected + +# Note that we just hard-code prepends_underscore to 0. This doesn't +# matter since any particular test can override the default if need +# be. +TEST_COMPILE = $(CC) @DEFS@ $(LIBCFLAGS) -I.. -I$(INCDIR) $(HDEFINES) +test-filter: $(srcdir)/../cplus-dem.c + echo 'int prepends_underscore = 0;' > test-us.c + $(TEST_COMPILE) -o test-filter -DMAIN -DVERSION='"none"' @DEFS@ \ + $(srcdir)/../cplus-dem.c test-us.c -L.. -liberty + + +# Standard (either GNU or Cygnus) rules we don't use. +info install-info clean-info dvi install etags tags installcheck: + +# The standard clean rules. +mostlyclean: + rm -f test-us.c test-filter +clean: mostlyclean +distclean: clean + rm -f Makefile +maintainer-clean realclean: distclean + + +Makefile: $(srcdir)/Makefile.in ../config.status + CONFIG_FILES=testsuite/Makefile CONFIG_HEADERS= \ + cd .. && $(SHELL) ./config.status diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected new file mode 100644 index 0000000..d3a1fe4 --- /dev/null +++ b/libiberty/testsuite/demangle-expected @@ -0,0 +1,2488 @@ +# This file holds test cases for the demangler. +# Each test consists of three lines in succession. +# The first line is arguments to pass to the test filter program. +# The second line is the mangled string. +# The third line is the expected output. +# A line starting with `#' is ignore. +# However blank lines in this file are NOT ignored. +# +--format=gnu +AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue +ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *) +# +--format=gnu +ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic +ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *) +# +--format=gnu +AtEnd__13ivRubberGroup +ivRubberGroup::AtEnd(void) +# +--format=gnu +BgFilter__9ivTSolverP12ivInteractor +ivTSolver::BgFilter(ivInteractor *) +# +--format=gnu +Check__6UArrayi +UArray::Check(int) +# +--format=gnu +CoreConstDecls__8TextCodeR7ostream +TextCode::CoreConstDecls(ostream &) +# +--format=gnu +Detach__8StateVarP12StateVarView +StateVar::Detach(StateVarView *) +# +--format=gnu +Done__9ComponentG8Iterator +Component::Done(Iterator) +# +--format=gnu +Effect__11RelateManipR7ivEvent +RelateManip::Effect(ivEvent &) +# +--format=gnu +FindFixed__FRP4CNetP4CNet +FindFixed(CNet *&, CNet *) +# +--format=gnu +Fix48_abort__FR8twolongs +Fix48_abort(twolongs &) +# +--format=gnu +GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2 +iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &) +# +--format=gnu +GetBgColor__C9ivPainter +ivPainter::GetBgColor(void) const +# +--format=gnu +InsertBody__15H_PullrightMenuii +H_PullrightMenu::InsertBody(int, int) +# +--format=gnu +InsertCharacter__9TextManipc +TextManip::InsertCharacter(char) +# +--format=gnu +InsertToplevel__7ivWorldP12ivInteractorT1 +ivWorld::InsertToplevel(ivInteractor *, ivInteractor *) +# +--format=gnu +InsertToplevel__7ivWorldP12ivInteractorT1iiUi +ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int) +# +--format=gnu +IsAGroup__FP11GraphicViewP11GraphicComp +IsAGroup(GraphicView *, GraphicComp *) +# +--format=gnu +IsA__10ButtonCodeUl +ButtonCode::IsA(unsigned long) +# +--format=gnu +ReadName__FR7istreamPc +ReadName(istream &, char *) +# +--format=gnu +Redraw__13StringBrowseriiii +StringBrowser::Redraw(int, int, int, int) +# +--format=gnu +Rotate__13ivTransformerf +ivTransformer::Rotate(float) +# +--format=gnu +Rotated__C13ivTransformerf +ivTransformer::Rotated(float) const +# +--format=gnu +Round__Ff +Round(float) +# +--format=gnu +SetExport__16MemberSharedNameUi +MemberSharedName::SetExport(unsigned int) +# +--format=gnu +Set__14ivControlState13ControlStatusUi +ivControlState::Set(ControlStatus, unsigned int) +# +--format=gnu +Set__5DFacePcii +DFace::Set(char *, int, int) +# +--format=gnu +VConvert__9ivTSolverP12ivInteractorRP8TElementT2 +ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&) +# +--format=gnu +VConvert__9ivTSolverP7ivTGlueRP8TElement +ivTSolver::VConvert(ivTGlue *, TElement *&) +# +--format=gnu +VOrder__9ivTSolverUiRP12ivInteractorT2 +ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&) +# +--format=gnu +_10PageButton\$__both +PageButton::__both +# +--format=gnu +_3RNG\$singleMantissa +RNG::singleMantissa +# +--format=gnu +_5IComp\$_release +IComp::_release +# +--format=gnu +_\$_10BitmapComp +BitmapComp::~BitmapComp(void) +# +--format=gnu +_\$_9__io_defs +__io_defs::~__io_defs(void) +# +--format=gnu +_\$_Q23foo3bar +foo::bar::~bar(void) +# +--format=gnu +_\$_Q33foo3bar4bell +foo::bar::bell::~bell(void) +# +--format=gnu +__10ivTelltaleiP7ivGlyph +ivTelltale::ivTelltale(int, ivGlyph *) +# +--format=gnu +__10ivViewportiP12ivInteractorUi +ivViewport::ivViewport(int, ivInteractor *, unsigned int) +# +--format=gnu +__10ostrstream +ostrstream::ostrstream(void) +# +--format=gnu +__10ostrstreamPcii +ostrstream::ostrstream(char *, int, int) +# +--format=gnu +__11BitmapTablei +BitmapTable::BitmapTable(int) +# +--format=gnu +__12ViewportCodeP12ViewportComp +ViewportCode::ViewportCode(ViewportComp *) +# +--format=gnu +__12iv2_6_Borderii +iv2_6_Border::iv2_6_Border(int, int) +# +--format=gnu +__12ivBreak_Listl +ivBreak_List::ivBreak_List(long) +# +--format=gnu +__14iv2_6_MenuItemiP12ivInteractor +iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *) +# +--format=gnu +__20DisplayList_IteratorR11DisplayList +DisplayList_Iterator::DisplayList_Iterator(DisplayList &) +# +--format=gnu +__3fooRT0 +foo::foo(foo &) +# +--format=gnu +__3fooiN31 +foo::foo(int, int, int, int) +# +--format=gnu +__3fooiRT0iT2iT2 +foo::foo(int, foo &, int, foo &, int, foo &) +# +--format=gnu +__6KeyMapPT0 +KeyMap::KeyMap(KeyMap *) +# +--format=gnu +__8ArrowCmdP6EditorUiUi +ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int) +# +--format=gnu +__9F_EllipseiiiiP7Graphic +F_Ellipse::F_Ellipse(int, int, int, int, Graphic *) +# +--format=gnu +__9FrameDataP9FrameCompi +FrameData::FrameData(FrameComp *, int) +# +--format=gnu +__9HVGraphicP9CanvasVarP7Graphic +HVGraphic::HVGraphic(CanvasVar *, Graphic *) +# +--format=gnu +__Q23foo3bar +foo::bar::bar(void) +# +--format=gnu +__Q33foo3bar4bell +foo::bar::bell::bell(void) +# +--format=gnu +__aa__3fooRT0 +foo::operator&&(foo &) +# +--format=gnu +__aad__3fooRT0 +foo::operator&=(foo &) +# +--format=gnu +__ad__3fooRT0 +foo::operator&(foo &) +# +--format=gnu +__adv__3fooRT0 +foo::operator/=(foo &) +# +--format=gnu +__aer__3fooRT0 +foo::operator^=(foo &) +# +--format=gnu +__als__3fooRT0 +foo::operator<<=(foo &) +# +--format=gnu +__amd__3fooRT0 +foo::operator%=(foo &) +# +--format=gnu +__ami__3fooRT0 +foo::operator-=(foo &) +# +--format=gnu +__aml__3FixRT0 +Fix::operator*=(Fix &) +# +--format=gnu +__aml__5Fix16i +Fix16::operator*=(int) +# +--format=gnu +__aml__5Fix32RT0 +Fix32::operator*=(Fix32 &) +# +--format=gnu +__aor__3fooRT0 +foo::operator|=(foo &) +# +--format=gnu +__apl__3fooRT0 +foo::operator+=(foo &) +# +--format=gnu +__ars__3fooRT0 +foo::operator>>=(foo &) +# +--format=gnu +__as__3fooRT0 +foo::operator=(foo &) +# +--format=gnu +__cl__3fooRT0 +foo::operator()(foo &) +# +--format=gnu +__cl__6Normal +Normal::operator()(void) +# +--format=gnu +__cl__6Stringii +String::operator()(int, int) +# +--format=gnu +__cm__3fooRT0 +foo::operator, (foo &) +# +--format=gnu +__co__3foo +foo::operator~(void) +# +--format=gnu +__dl__3fooPv +foo::operator delete(void *) +# +--format=gnu +__dv__3fooRT0 +foo::operator/(foo &) +# +--format=gnu +__eq__3fooRT0 +foo::operator==(foo &) +# +--format=gnu +__er__3fooRT0 +foo::operator^(foo &) +# +--format=gnu +__ge__3fooRT0 +foo::operator>=(foo &) +# +--format=gnu +__gt__3fooRT0 +foo::operator>(foo &) +# +--format=gnu +__le__3fooRT0 +foo::operator<=(foo &) +# +--format=gnu +__ls__3fooRT0 +foo::operator<<(foo &) +# +--format=gnu +__ls__FR7ostreamPFR3ios_R3ios +operator<<(ostream &, ios &(*)(ios &)) +# +--format=gnu +__ls__FR7ostreamR3Fix +operator<<(ostream &, Fix &) +# +--format=gnu +__lt__3fooRT0 +foo::operator<(foo &) +# +--format=gnu +__md__3fooRT0 +foo::operator%(foo &) +# +--format=gnu +__mi__3fooRT0 +foo::operator-(foo &) +# +--format=gnu +__ml__3fooRT0 +foo::operator*(foo &) +# +--format=gnu +__mm__3fooi +foo::operator--(int) +# +--format=gnu +__ne__3fooRT0 +foo::operator!=(foo &) +# +--format=gnu +__nt__3foo +foo::operator!(void) +# +--format=gnu +__nw__3fooi +foo::operator new(int) +# +--format=gnu +__oo__3fooRT0 +foo::operator||(foo &) +# +--format=gnu +__opPc__3foo +foo::operator char *(void) +# +--format=gnu +__opi__3foo +foo::operator int(void) +# +--format=gnu +__or__3fooRT0 +foo::operator|(foo &) +# +--format=gnu +__pl__3fooRT0 +foo::operator+(foo &) +# +--format=gnu +__pp__3fooi +foo::operator++(int) +# +--format=gnu +__rf__3foo +foo::operator->(void) +# +--format=gnu +__rm__3fooRT0 +foo::operator->*(foo &) +# +--format=gnu +__rs__3fooRT0 +foo::operator>>(foo &) +# +--format=gnu +_new_Fix__FUs +_new_Fix(unsigned short) +# +--format=gnu +_vt.foo +foo virtual table +# +--format=gnu +_vt.foo.bar +foo::bar virtual table +# +--format=gnu +_vt\$foo +foo virtual table +# +--format=gnu +_vt\$foo\$bar +foo::bar virtual table +# +--format=gnu +append__7ivGlyphPT0 +ivGlyph::append(ivGlyph *) +# +--format=gnu +clearok__FP7_win_sti +clearok(_win_st *, int) +# +--format=gnu +complexfunc2__FPFPc_i +complexfunc2(int (*)(char *)) +# +--format=gnu +complexfunc3__FPFPFPl_s_i +complexfunc3(int (*)(short (*)(long *))) +# +--format=gnu +complexfunc4__FPFPFPc_s_i +complexfunc4(int (*)(short (*)(char *))) +# +--format=gnu +complexfunc5__FPFPc_PFl_i +complexfunc5(int (*(*)(char *))(long)) +# +--format=gnu +complexfunc6__FPFPi_PFl_i +complexfunc6(int (*(*)(int *))(long)) +# +--format=gnu +complexfunc7__FPFPFPc_i_PFl_i +complexfunc7(int (*(*)(int (*)(char *)))(long)) +# +--format=gnu +foo__FiN30 +foo(int, int, int, int) +# +--format=gnu +foo__FiR3fooiT1iT1 +foo(int, foo &, int, foo &, int, foo &) +# +--format=gnu +foo___3barl +bar::foo_(long) +# +--format=gnu +insert__15ivClippingStacklRP8_XRegion +ivClippingStack::insert(long, _XRegion *&) +# +--format=gnu +insert__16ChooserInfo_ListlR11ChooserInfo +ChooserInfo_List::insert(long, ChooserInfo &) +# +--format=gnu +insert__17FontFamilyRepListlRP15ivFontFamilyRep +FontFamilyRepList::insert(long, ivFontFamilyRep *&) +# +--format=gnu +leaveok__FP7_win_stc +leaveok(_win_st *, char) +# +--format=gnu +left_mover__C7ivMFKitP12ivAdjustableP7ivStyle +ivMFKit::left_mover(ivAdjustable *, ivStyle *) const +# +--format=gnu +overload1arg__FSc +overload1arg(signed char) +# +--format=gnu +overload1arg__FUc +overload1arg(unsigned char) +# +--format=gnu +overload1arg__FUi +overload1arg(unsigned int) +# +--format=gnu +overload1arg__FUl +overload1arg(unsigned long) +# +--format=gnu +overload1arg__FUs +overload1arg(unsigned short) +# +--format=gnu +overload1arg__Fc +overload1arg(char) +# +--format=gnu +overload1arg__Fd +overload1arg(double) +# +--format=gnu +overload1arg__Ff +overload1arg(float) +# +--format=gnu +overload1arg__Fi +overload1arg(int) +# +--format=gnu +overload1arg__Fl +overload1arg(long) +# +--format=gnu +overload1arg__Fs +overload1arg(short) +# +--format=gnu +overload1arg__Fv +overload1arg(void) +# +--format=gnu +overloadargs__Fi +overloadargs(int) +# +--format=gnu +overloadargs__Fii +overloadargs(int, int) +# +--format=gnu +overloadargs__Fiii +overloadargs(int, int, int) +# +--format=gnu +overloadargs__Fiiii +overloadargs(int, int, int, int) +# +--format=gnu +overloadargs__Fiiiii +overloadargs(int, int, int, int, int) +# +--format=gnu +overloadargs__Fiiiiii +overloadargs(int, int, int, int, int, int) +# +--format=gnu +overloadargs__Fiiiiiii +overloadargs(int, int, int, int, int, int, int) +# +--format=gnu +overloadargs__Fiiiiiiii +overloadargs(int, int, int, int, int, int, int, int) +# +--format=gnu +overloadargs__Fiiiiiiiii +overloadargs(int, int, int, int, int, int, int, int, int) +# +--format=gnu +overloadargs__Fiiiiiiiiii +overloadargs(int, int, int, int, int, int, int, int, int, int) +# +--format=gnu +overloadargs__Fiiiiiiiiiii +overloadargs(int, int, int, int, int, int, int, int, int, int, int) +# +--format=gnu +poke__8ivRasterUlUlffff +ivRaster::poke(unsigned long, unsigned long, float, float, float, float) +# +--format=gnu +polar__Fdd +polar(double, double) +# +--format=gnu +scale__13ivTransformerff +ivTransformer::scale(float, float) +# +--format=gnu +sgetn__7filebufPci +filebuf::sgetn(char *, int) +# +--format=gnu +shift__FP5_FrepiT0 +shift(_Frep *, int, _Frep *) +# +--format=gnu +test__C6BitSeti +BitSet::test(int) const +# +--format=gnu +test__C6BitSetii +BitSet::test(int, int) const +# +--format=gnu +text_source__8Documentl +Document::text_source(long) +# +--format=gnu +variance__6Erlangd +Erlang::variance(double) +# +--format=gnu +view__14DocumentViewerP8ItemViewP11TabularItem +DocumentViewer::view(ItemView *, TabularItem *) +# +--format=gnu +xy_extents__11ivExtensionffff +ivExtension::xy_extents(float, float, float, float) +# +--format=gnu +zero__8osMemoryPvUi +osMemory::zero(void *, unsigned int) +# +--format=gnu +_2T4\$N +T4::N +# +--format=gnu +_Q22T42t1\$N +T4::t1::N +# +--format=gnu +get__2T1 +T1::get(void) +# +--format=gnu +get__Q22T11a +T1::a::get(void) +# +--format=gnu +get__Q32T11a1b +T1::a::b::get(void) +# +--format=gnu +get__Q42T11a1b1c +T1::a::b::c::get(void) +# +--format=gnu +get__Q52T11a1b1c1d +T1::a::b::c::d::get(void) +# +--format=gnu +put__2T1i +T1::put(int) +# +--format=gnu +put__Q22T11ai +T1::a::put(int) +# +--format=gnu +put__Q32T11a1bi +T1::a::b::put(int) +# +--format=gnu +put__Q42T11a1b1ci +T1::a::b::c::put(int) +# +--format=gnu +put__Q52T11a1b1c1di +T1::a::b::c::d::put(int) +# +--format=gnu +bar__3fooPv +foo::bar(void *) +# +--format=gnu +bar__C3fooPv +foo::bar(void *) const +# +--format=gnu +__eq__3fooRT0 +foo::operator==(foo &) +# +--format=gnu +__eq__C3fooR3foo +foo::operator==(foo &) const +# +--format=gnu +elem__t6vector1Zdi +vector<double>::elem(int) +# +--format=gnu +elem__t6vector1Zii +vector<int>::elem(int) +# +--format=gnu +__t6vector1Zdi +vector<double>::vector(int) +# +--format=gnu +__t6vector1Zii +vector<int>::vector(int) +# +--format=gnu +_\$_t6vector1Zdi +vector<double>::~vector(int) +# +--format=gnu +_\$_t6vector1Zii +vector<int>::~vector(int) +# +--format=gnu +__nw__t2T11ZcUi +T1<char>::operator new(unsigned int) +# +--format=gnu +__nw__t2T11Z1tUi +T1<t>::operator new(unsigned int) +# +--format=gnu +__dl__t2T11ZcPv +T1<char>::operator delete(void *) +# +--format=gnu +__dl__t2T11Z1tPv +T1<t>::operator delete(void *) +# +--format=gnu +__t2T11Zci +T1<char>::T1(int) +# +--format=gnu +__t2T11Zc +T1<char>::T1(void) +# +--format=gnu +__t2T11Z1ti +T1<t>::T1(int) +# +--format=gnu +__t2T11Z1t +T1<t>::T1(void) +# +--format=gnu +__Q2t4List1Z10VHDLEntity3Pix +List<VHDLEntity>::Pix::Pix(void) +# +--format=gnu +__Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element +List<VHDLEntity>::Pix::Pix(List<VHDLEntity>::element *) +# +--format=gnu +__Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix +List<VHDLEntity>::Pix::Pix(List<VHDLEntity>::Pix const &) +# +--format=gnu +__Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0 +List<VHDLEntity>::element::element(VHDLEntity const &, List<VHDLEntity>::element *) +# +--format=gnu +__Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element +List<VHDLEntity>::element::element(List<VHDLEntity>::element const &) +# +--format=gnu +__cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity +VHDLLibrary::operator()(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >) const +# +--format=gnu +__cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix +List<VHDLEntity>::operator()(List<VHDLEntity>::Pix const &) const +# +--format=gnu +__ne__FPvRCQ2t4List1Z10VHDLEntity3Pix +operator!=(void *, List<VHDLEntity>::Pix const &) +# +--format=gnu +__ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity +operator!=(void *, PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > const &) +# +--format=gnu +__t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity +List<VHDLEntity>::List(List<VHDLEntity> const &) +# +--format=gnu +__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity +PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(void) +# +--format=gnu +__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix +PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(VHDLLibraryRep *, List<VHDLEntity>::Pix) +# +--format=gnu +__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity +PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > const &) +# +--format=gnu +nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity +VHDLLibrary::nextE(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > &) const +# +--format=gnu +next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix +List<VHDLEntity>::next(List<VHDLEntity>::Pix &) const +# +--format=gnu +_GLOBAL_\$D\$set +global destructors keyed to set +# +--format=gnu +_GLOBAL_\$I\$set +global constructors keyed to set +# +--format=gnu +__as__t5ListS1ZUiRCt5ListS1ZUi +ListS<unsigned int>::operator=(ListS<unsigned int> const &) +# +--format=gnu +__cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix +ListS<unsigned int>::operator()(ListS<unsigned int>::Vix const &) const +# +--format=gnu +__cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix +SetLS<unsigned int>::operator()(SetLS<unsigned int>::Vix const &) const +# +--format=gnu +__t10ListS_link1ZUiRCUiPT0 +ListS_link<unsigned int>::ListS_link(unsigned int const &, ListS_link<unsigned int> *) +# +--format=gnu +__t10ListS_link1ZUiRCt10ListS_link1ZUi +ListS_link<unsigned int>::ListS_link(ListS_link<unsigned int> const &) +# +--format=gnu +__t5ListS1ZUiRCt5ListS1ZUi +ListS<unsigned int>::ListS(ListS<unsigned int> const &) +# +--format=gnu +next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix +ListS<unsigned int>::next(ListS<unsigned int>::Vix &) const +# +--format=gnu +__ne__FPvRCQ2t5SetLS1ZUi3Vix +operator!=(void *, SetLS<unsigned int>::Vix const &) +# +--format=gnu +__t8ListElem1Z5LabelRt4List1Z5Label +ListElem<Label>::ListElem(List<Label> &) +# +--format=gnu +__t8BDDHookV1ZPcRCPc +BDDHookV<char *>::BDDHookV(char *const &) +# +--format=gnu +_vt\$t8BDDHookV1ZPc +BDDHookV<char *> virtual table +# +--format=gnu +__ne__FPvRCQ211BDDFunction4VixB +operator!=(void *, BDDFunction::VixB const &) +# +--format=gnu +__eq__FPvRCQ211BDDFunction4VixB +operator==(void *, BDDFunction::VixB const &) +# +--format=gnu +relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters +T_phi2::T_preserve::FPC_next::relativeId(T_phi2::T_preserve const &, Parameters const &) const +# +--format=lucid +WS__FR7istream +WS(istream &) +# +--format=lucid +__aa__3fooFR3foo +foo::operator&&(foo &) +# +--format=lucid +__aad__3fooFR3foo +foo::operator&=(foo &) +# +--format=lucid +__ad__3fooFR3foo +foo::operator&(foo &) +# +--format=lucid +__adv__3fooFR3foo +foo::operator/=(foo &) +# +--format=lucid +__adv__7complexF7complex +complex::operator/=(complex) +# +--format=lucid +__aer__3fooFR3foo +foo::operator^=(foo &) +# +--format=lucid +__als__3fooFR3foo +foo::operator<<=(foo &) +# +--format=lucid +__amd__3fooFR3foo +foo::operator%=(foo &) +# +--format=lucid +__ami__3fooFR3foo +foo::operator-=(foo &) +# +--format=lucid +__amu__3fooFR3foo +foo::operator*=(foo &) +# +--format=lucid +__amu__7complexF7complex +complex::operator*=(complex) +# +--format=lucid +__aor__3fooFR3foo +foo::operator|=(foo &) +# +--format=lucid +__apl__3fooFR3foo +foo::operator+=(foo &) +# +--format=lucid +__ars__3fooFR3foo +foo::operator>>=(foo &) +# +--format=lucid +__as__18istream_withassignFP9streambuf +istream_withassign::operator=(streambuf *) +# +--format=lucid +__as__18istream_withassignFR7istream +istream_withassign::operator=(istream &) +# +--format=lucid +__as__3fooFR3foo +foo::operator=(foo &) +# +--format=lucid +__as__3iosFR3ios +ios::operator=(ios &) +# +--format=lucid +__cl__3fooFR3foo +foo::operator()(foo &) +# +--format=lucid +__cm__3fooFR3foo +foo::operator, (foo &) +# +--format=lucid +__co__3fooFv +foo::operator~(void) +# +--format=lucid +__ct__10istrstreamFPc +istrstream::istrstream(char *) +# +--format=lucid +__ct__10istrstreamFPci +istrstream::istrstream(char *, int) +# +--format=lucid +__ct__10ostrstreamFPciT2 +ostrstream::ostrstream(char *, int, int) +# +--format=lucid +__ct__10ostrstreamFv +ostrstream::ostrstream(void) +# +--format=lucid +__ct__10smanip_intFPFR3iosi_R3iosi +smanip_int::smanip_int(ios &(*)(ios &, int), int) +# +--format=lucid +__ct__11fstreambaseFi +fstreambase::fstreambase(int) +# +--format=lucid +__ct__11fstreambaseFiPcT1 +fstreambase::fstreambase(int, char *, int) +# +--format=lucid +__ct__11fstreambaseFv +fstreambase::fstreambase(void) +# +--format=lucid +__ct__11smanip_longFPFR3iosl_R3iosl +smanip_long::smanip_long(ios &(*)(ios &, long), long) +# +--format=lucid +__ct__11stdiostreamFP4FILE +stdiostream::stdiostream(FILE *) +# +--format=lucid +__ct__12strstreambufFPFl_PvPFPv_v +strstreambuf::strstreambuf(void *(*)(long), void (*)(void *)) +# +--format=lucid +__ct__12strstreambufFPUciT1 +strstreambuf::strstreambuf(unsigned char *, int, unsigned char *) +# +--format=lucid +__ct__12strstreambufFPciT1 +strstreambuf::strstreambuf(char *, int, char *) +# +--format=lucid +__ct__12strstreambufFi +strstreambuf::strstreambuf(int) +# +--format=lucid +__ct__12strstreambufFv +strstreambuf::strstreambuf(void) +# +--format=lucid +__ct__13strstreambaseFPciT1 +strstreambase::strstreambase(char *, int, char *) +# +--format=lucid +__ct__3fooFR3foo +foo::foo(foo &) +# +--format=lucid +__ct__3fooFi +foo::foo(int) +# +--format=lucid +__ct__3fooFiN31 +foo::foo(int, int, int, int) +# +--format=lucid +__ct__3fooFiR3fooT1T2T1T2 +foo::foo(int, foo &, int, foo &, int, foo &) +# +--format=lucid +__ct__3iosFP9streambuf +ios::ios(streambuf *) +# +--format=lucid +__ct__7filebufFiPcT1 +filebuf::filebuf(int, char *, int) +# +--format=lucid +__ct__7fstreamFiPcT1 +fstream::fstream(int, char *, int) +# +--format=lucid +__ct__7istreamFP9streambuf +istream::istream(streambuf *) +# +--format=lucid +__ct__7istreamFP9streambufiP7ostream +istream::istream(streambuf *, int, ostream *) +# +--format=lucid +__ct__7istreamFiPcT1 +istream::istream(int, char *, int) +# +--format=lucid +__ct__7istreamFiT1P7ostream +istream::istream(int, int, ostream *) +# +--format=lucid +__ct__7ostreamFP9streambuf +ostream::ostream(streambuf *) +# +--format=lucid +__ct__7ostreamFiPc +ostream::ostream(int, char *) +# +--format=lucid +__ct__8ifstreamFiPcT1 +ifstream::ifstream(int, char *, int) +# +--format=lucid +__ct__Q23foo3barFv +foo::bar::bar(void) +# +--format=lucid +__ct__Q33foo3bar4bellFv +foo::bar::bell::bell(void) +# +--format=lucid +__dl__3fooSFPv +foo::operator delete(void *) static +# +--format=lucid +__dl__FPv +operator delete(void *) +# +--format=lucid +__dt__10istrstreamFv +istrstream::~istrstream(void) +# +--format=lucid +__dt__Q23foo3barFv +foo::bar::~bar(void) +# +--format=lucid +__dt__Q33foo3bar4bellFv +foo::bar::bell::~bell(void) +# +--format=lucid +__dv__3fooFR3foo +foo::operator/(foo &) +# +--format=lucid +__dv__F7complexT1 +operator/(complex, complex) +# +--format=lucid +__eq__3fooFR3foo +foo::operator==(foo &) +# +--format=lucid +__er__3fooFR3foo +foo::operator^(foo &) +# +--format=lucid +__ge__3fooFR3foo +foo::operator>=(foo &) +# +--format=lucid +__gt__3fooFR3foo +foo::operator>(foo &) +# +--format=lucid +__le__3fooFR3foo +foo::operator<=(foo &) +# +--format=lucid +__ls__3fooFR3foo +foo::operator<<(foo &) +# +--format=lucid +__ls__7ostreamFP9streambuf +ostream::operator<<(streambuf *) +# +--format=lucid +__ls__7ostreamFPFR3ios_R3ios +ostream::operator<<(ios &(*)(ios &)) +# +--format=lucid +__ls__7ostreamFPv +ostream::operator<<(void *) +# +--format=lucid +__ls__7ostreamFUi +ostream::operator<<(unsigned int) +# +--format=lucid +__ls__7ostreamFUl +ostream::operator<<(unsigned long) +# +--format=lucid +__ls__7ostreamFd +ostream::operator<<(double) +# +--format=lucid +__ls__7ostreamFf +ostream::operator<<(float) +# +--format=lucid +__ls__7ostreamFi +ostream::operator<<(int) +# +--format=lucid +__ls__7ostreamFl +ostream::operator<<(long) +# +--format=lucid +__ls__FR7ostream7complex +operator<<(ostream &, complex) +# +--format=lucid +__lt__3fooFR3foo +foo::operator<(foo &) +# +--format=lucid +__md__3fooFR3foo +foo::operator%(foo &) +# +--format=lucid +__mi__3fooFR3foo +foo::operator-(foo &) +# +--format=lucid +__ml__3fooFR3foo +foo::operator*(foo &) +# +--format=lucid +__ml__F7complexT1 +operator*(complex, complex) +# +--format=lucid +__mm__3fooFi +foo::operator--(int) +# +--format=lucid +__ne__3fooFR3foo +foo::operator!=(foo &) +# +--format=lucid +__nt__3fooFv +foo::operator!(void) +# +--format=lucid +__nw__3fooSFi +foo::operator new(int) static +# +--format=lucid +__nw__FUi +operator new(unsigned int) +# +--format=lucid +__nw__FUiPv +operator new(unsigned int, void *) +# +--format=lucid +__oo__3fooFR3foo +foo::operator||(foo &) +# +--format=lucid +__opPc__3fooFv +foo::operator char *(void) +# +--format=lucid +__opi__3fooFv +foo::operator int(void) +# +--format=lucid +__or__3fooFR3foo +foo::operator|(foo &) +# +--format=lucid +__pl__3fooFR3foo +foo::operator+(foo &) +# +--format=lucid +__pp__3fooFi +foo::operator++(int) +# +--format=lucid +__pt__3fooFv +foo::operator->(void) +# +--format=lucid +__rm__3fooFR3foo +foo::operator->*(foo &) +# +--format=lucid +__rs__3fooFR3foo +foo::operator>>(foo &) +# +--format=lucid +__rs__7istreamFP9streambuf +istream::operator>>(streambuf *) +# +--format=lucid +__rs__7istreamFPFR3ios_R3ios +istream::operator>>(ios &(*)(ios &)) +# +--format=lucid +__rs__7istreamFPFR7istream_R7istream +istream::operator>>(istream &(*)(istream &)) +# +--format=lucid +__rs__7istreamFPUc +istream::operator>>(unsigned char *) +# +--format=lucid +__rs__7istreamFPc +istream::operator>>(char *) +# +--format=lucid +__rs__7istreamFRUi +istream::operator>>(unsigned int &) +# +--format=lucid +__rs__7istreamFRUl +istream::operator>>(unsigned long &) +# +--format=lucid +__rs__7istreamFRUs +istream::operator>>(unsigned short &) +# +--format=lucid +__rs__7istreamFRd +istream::operator>>(double &) +# +--format=lucid +__rs__7istreamFRf +istream::operator>>(float &) +# +--format=lucid +__rs__7istreamFRi +istream::operator>>(int &) +# +--format=lucid +__rs__7istreamFRl +istream::operator>>(long &) +# +--format=lucid +__rs__7istreamFRs +istream::operator>>(short &) +# +--format=lucid +__rs__FR7istreamR7complex +operator>>(istream &, complex &) +# +--format=lucid +__vtbl__10istrstream +istrstream virtual table +# +--format=lucid +__vtbl__17ostream__iostream__19iostream_withassign +iostream_withassign::ostream__iostream virtual table +# +--format=lucid +__vtbl__3ios +ios virtual table +# +--format=lucid +__vtbl__3ios__13strstreambase +strstreambase::ios virtual table +# +--format=lucid +abs__F7complex +abs(complex) +# +--format=lucid +allocate__9streambufFv +streambuf::allocate(void) +# +--format=lucid +attach__11fstreambaseFi +fstreambase::attach(int) +# +--format=lucid +bitalloc__3iosSFv +ios::bitalloc(void) static +# +--format=lucid +chr__FiT1 +chr(int, int) +# +--format=lucid +complex_error__FR11c_exception +complex_error(c_exception &) +# +--format=lucid +complexfunc2__FPFPc_i +complexfunc2(int (*)(char *)) +# +--format=lucid +complexfunc3__FPFPFPl_s_i +complexfunc3(int (*)(short (*)(long *))) +# +--format=lucid +complexfunc4__FPFPFPc_s_i +complexfunc4(int (*)(short (*)(char *))) +# +--format=lucid +complexfunc5__FPFPc_PFl_i +complexfunc5(int (*(*)(char *))(long)) +# +--format=lucid +complexfunc6__FPFPi_PFl_i +complexfunc6(int (*(*)(int *))(long)) +# +--format=lucid +complexfunc7__FPFPFPc_i_PFl_i +complexfunc7(int (*(*)(int (*)(char *)))(long)) +# +--format=lucid +complicated_put__7ostreamFc +ostream::complicated_put(char) +# +--format=lucid +conv10__FlPc +conv10(long, char *) +# +--format=lucid +conv16__FUlPc +conv16(unsigned long, char *) +# +--format=lucid +dec__FR3ios +dec(ios &) +# +--format=lucid +dec__Fli +dec(long, int) +# +--format=lucid +dofield__FP7ostreamPciT2T3 +dofield(ostream *, char *, int, char *, int) +# +--format=lucid +flags__3iosFl +ios::flags(long) +# +--format=lucid +flags__3iosFv +ios::flags(void) +# +--format=lucid +foo__FiN31 +foo(int, int, int, int) +# +--format=lucid +foo__FiR3fooT1T2T1T2 +foo(int, foo &, int, foo &, int, foo &) +# +--format=lucid +foo___3barFl +bar::foo_(long) +# +--format=lucid +get__7istreamFPcic +istream::get(char *, int, char) +# +--format=lucid +get__7istreamFR9streambufc +istream::get(streambuf &, char) +# +--format=lucid +get_complicated__7istreamFRUc +istream::get_complicated(unsigned char &) +# +--format=lucid +get_complicated__7istreamFRc +istream::get_complicated(char &) +# +--format=lucid +getline__7istreamFPUcic +istream::getline(unsigned char *, int, char) +# +--format=lucid +getline__7istreamFPcic +istream::getline(char *, int, char) +# +--format=lucid +ignore__7istreamFiT1 +istream::ignore(int, int) +# +--format=lucid +init__12strstreambufFPciT1 +strstreambuf::init(char *, int, char *) +# +--format=lucid +init__3iosFP9streambuf +ios::init(streambuf *) +# +--format=lucid +initcount__13Iostream_init +Iostream_init::initcount +# +--format=lucid +ipfx__7istreamFi +istream::ipfx(int) +# +--format=lucid +ls_complicated__7ostreamFUc +ostream::ls_complicated(unsigned char) +# +--format=lucid +ls_complicated__7ostreamFc +ostream::ls_complicated(char) +# +--format=lucid +overload1arg__FSc +overload1arg(signed char) +# +--format=lucid +overload1arg__FUc +overload1arg(unsigned char) +# +--format=lucid +overload1arg__FUi +overload1arg(unsigned int) +# +--format=lucid +overload1arg__FUl +overload1arg(unsigned long) +# +--format=lucid +overload1arg__FUs +overload1arg(unsigned short) +# +--format=lucid +overload1arg__Fc +overload1arg(char) +# +--format=lucid +overload1arg__Fd +overload1arg(double) +# +--format=lucid +overload1arg__Ff +overload1arg(float) +# +--format=lucid +overload1arg__Fi +overload1arg(int) +# +--format=lucid +overload1arg__Fl +overload1arg(long) +# +--format=lucid +overload1arg__Fs +overload1arg(short) +# +--format=lucid +overload1arg__Fv +overload1arg(void) +# +--format=lucid +overloadargs__FiN21 +overloadargs(int, int, int) +# +--format=lucid +overloadargs__FiN31 +overloadargs(int, int, int, int) +# +--format=lucid +overloadargs__FiN41 +overloadargs(int, int, int, int, int) +# +--format=lucid +overloadargs__FiN51 +overloadargs(int, int, int, int, int, int) +# +--format=lucid +overloadargs__FiN61 +overloadargs(int, int, int, int, int, int, int) +# +--format=lucid +overloadargs__FiN71 +overloadargs(int, int, int, int, int, int, int, int) +# +--format=lucid +overloadargs__FiN81 +overloadargs(int, int, int, int, int, int, int, int, int) +# +--format=lucid +overloadargs__FiN91 +overloadargs(int, int, int, int, int, int, int, int, int, int) +# +--format=lucid +overloadargs__FiN91N11 +overloadargs(int, int, int, int, int, int, int, int, int, int, int) +# +--format=lucid +overloadargs__FiT1 +overloadargs(int, int) +# +--format=lucid +polar__FdT1 +polar(double, double) +# +--format=lucid +pow__F7complexT1 +pow(complex, complex) +# +--format=lucid +pow__F7complexd +pow(complex, double) +# +--format=lucid +pow__F7complexi +pow(complex, int) +# +--format=lucid +pow__Fd7complex +pow(double, complex) +# +--format=lucid +pstart__FPciT2 +pstart(char *, int, int) +# +--format=lucid +put__7ostreamFc +ostream::put(char) +# +--format=lucid +read__7istreamFPci +istream::read(char *, int) +# +--format=lucid +resetiosflags__FR3iosl +resetiosflags(ios &, long) +# +--format=lucid +restore_errno__FRi +restore_errno(int &) +# +--format=lucid +rs_complicated__7istreamFRUc +istream::rs_complicated(unsigned char &) +# +--format=lucid +rs_complicated__7istreamFRc +istream::rs_complicated(char &) +# +--format=lucid +seekg__7istreamFl8seek_dir +istream::seekg(long, seek_dir) +# +--format=lucid +seekoff__12strstreambufFl8seek_diri +strstreambuf::seekoff(long, seek_dir, int) +# +--format=lucid +seekoff__9streambufFlQ2_3ios12ios_seek_diri +streambuf::seekoff(long, ios::ios_seek_dir, int) +# +--format=lucid +seekpos__9streambufFli +streambuf::seekpos(long, int) +# +--format=lucid +set_new_handler__FPFv_v +set_new_handler(void (*)(void)) +# +--format=lucid +setb__9streambufFPcT1i +streambuf::setb(char *, char *, int) +# +--format=lucid +setb__FR3iosi +setb(ios &, int) +# +--format=lucid +setbuf__11fstreambaseFPci +fstreambase::setbuf(char *, int) +# +--format=lucid +setbuf__9streambufFPUci +streambuf::setbuf(unsigned char *, int) +# +--format=lucid +setbuf__9streambufFPciT2 +streambuf::setbuf(char *, int, int) +# +--format=lucid +setf__3iosFlT1 +ios::setf(long, long) +# +--format=lucid +setfill__FR3iosi +setfill(ios &, int) +# +--format=lucid +setg__9streambufFPcN21 +streambuf::setg(char *, char *, char *) +# +--format=lucid +setp__9streambufFPcT1 +streambuf::setp(char *, char *) +# +--format=lucid +tie__3iosFP7ostream +ios::tie(ostream *) +# +--format=lucid +uconv10__FUlPc +uconv10(unsigned long, char *) +# +--format=lucid +xget__7istreamFPc +istream::xget(char *) +# +--format=lucid +xsgetn__9streambufFPci +streambuf::xsgetn(char *, int) +# +--format=arm +__dt__21T5__pt__11_PFiPPdPv_iFv +T5<int (*)(int, double **, void *)>::~T5(void) +# +--format=arm +__ct__1cFi +c::c(int) +# +--format=arm +__dt__11T5__pt__2_iFv +T5<int>::~T5(void) +# +--format=arm +__dt__11T5__pt__2_cFv +T5<char>::~T5(void) +# +--format=arm +__ct__2T2Fi +T2::T2(int) +# +--format=arm +__dt__2T1Fv +T1::~T1(void) +# +--format=arm +__dt__12T5__pt__3_1xFv +T5<x>::~T5(void) +# +--format=arm +__dt__17T5__pt__8_PFcPv_iFv +T5<int (*)(char, void *)>::~T5(void) +# +--format=arm +__ct__21T5__pt__11_PFiPPdPv_iFi +T5<int (*)(int, double **, void *)>::T5(int) +# +--format=arm +__amd__FR2T2i +operator%=(T2 &, int) +# +--format=arm +__adv__FR2T2i +operator/=(T2 &, int) +# +--format=arm +__amu__FR2T2i +operator*=(T2 &, int) +# +--format=arm +__ami__FR2T2i +operator-=(T2 &, int) +# +--format=arm +__apl__FR2T2i +operator+=(T2 &, int) +# +--format=arm +__nw__2T1SFUi +T1::operator new(unsigned int) static +# +--format=arm +__dl__2T1SFPv +T1::operator delete(void *) static +# +--format=arm +put__2T7SFi +T7::put(int) static +# +--format=arm +__dl__12T5__pt__3_1xSFPv +T5<x>::operator delete(void *) static +# +--format=arm +h__FUc +h(unsigned char) +# +--format=arm +f__Fic +f(int, char) +# +--format=arm +h__FUi +h(unsigned int) +# +--format=arm +h__Fci +h(char, int) +# +--format=arm +h__FUl +h(unsigned long) +# +--format=arm +h__Fcl +h(char, long) +# +--format=arm +h__FUs +h(unsigned short) +# +--format=arm +h__Fcs +h(char, short) +# +--format=arm +X__12T5__pt__3_1x +T5<x>::X +# +--format=arm +__ct__11T5__pt__2_iFi +T5<int>::T5(int) +# +--format=arm +__ct__11T5__pt__2_cFi +T5<char>::T5(int) +# +--format=arm +h__FcT1 +h(char, char) +# +--format=arm +f__Ficd +f(int, char, double) +# +--format=arm +__dl__17T5__pt__8_PFcPv_iSFPv +T5<int (*)(char, void *)>::operator delete(void *) static +# +--format=arm +X__17T5__pt__8_PFcPv_i +T5<int (*)(char, void *)>::X +# +--format=arm +__ct__12T5__pt__3_1xFi +T5<x>::T5(int) +# +--format=arm +__dl__21T5__pt__11_PFiPPdPv_iSFPv +T5<int (*)(int, double **, void *)>::operator delete(void *) static +# +--format=arm +__std__foo +global destructors keyed to foo +# +--format=arm +__sti__bar +global constructors keyed to bar +# +--format=arm +f__FicdPcPFci_v +f(int, char, double, char *, void (*)(char, int)) +# +--format=arm +f__FicdPcPFic_v +f(int, char, double, char *, void (*)(int, char)) +# +--format=arm +get__2T7SFv +T7::get(void) static +# +--format=arm +X__21T5__pt__11_PFiPPdPv_i +T5<int (*)(int, double **, void *)>::X +# +--format=arm +__dl__11T5__pt__2_iSFPv +T5<int>::operator delete(void *) static +# +--format=arm +__dl__11T5__pt__2_cSFPv +T5<char>::operator delete(void *) static +# +--format=arm +h__Fc +h(char) +# +--format=arm +h__Fd +h(double) +# +--format=arm +h__Ff +h(float) +# +--format=arm +h__Fi +h(int) +# +--format=arm +f__Fi +f(int) +# +--format=arm +h__Fl +h(long) +# +--format=arm +h__Fs +h(short) +# +--format=arm +X__11T5__pt__2_c +T5<char>::X +# +--format=arm +X__11T5__pt__2_i +T5<int>::X +# +--format=arm +__ct__17T5__pt__8_PFcPv_iFi +T5<int (*)(char, void *)>::T5(int) +# +--format=arm +f__FicdPc +f(int, char, double, char *) +# +--format=arm +__nw__FUi +operator new(unsigned int) +# +--format=arm +__ct__Q3_2T11a1bSFi +T1::a::b::b(int) static +# +--format=arm +__dt__Q3_2T11a1bSFi +T1::a::b::~b(int) static +# +--format=arm +put__Q3_2T11a1bSFi +T1::a::b::put(int) static +# +--format=arm +get__Q2_2T11aSFv +T1::a::get(void) static +# +--format=arm +put__2T1SFi +T1::put(int) static +# +--format=arm +put__Q5_2T11a1b1c1dSFi +T1::a::b::c::d::put(int) static +# +--format=arm +get__Q4_2T11a1b1cSFv +T1::a::b::c::get(void) static +# +--format=arm +put__Q2_2T11aSFi +T1::a::put(int) static +# +--format=arm +put__Q4_2T11a1b1cSFi +T1::a::b::c::put(int) static +# +--format=arm +get__Q3_2T11a1bSFv +T1::a::b::get(void) static +# +--format=arm +get__2T1SFv +T1::get(void) static +# +--format=arm +get__Q5_2T11a1b1c1dSFv +T1::a::b::c::d::get(void) static +# +--format=arm +__dt__11T1__pt__2_cFv +T1<char>::~T1(void) +# +--format=arm +__dt__12T1__pt__3_1tFv +T1<t>::~T1(void) +# +--format=arm +__dl__12T1__pt__3_1tSFPv +T1<t>::operator delete(void *) static +# +--format=arm +__ct__11T1__pt__2_cFi +T1<char>::T1(int) +# +--format=arm +__ct__11T1__pt__2_cFv +T1<char>::T1(void) +# +--format=arm +__ct__12T1__pt__3_1tFi +T1<t>::T1(int) +# +--format=arm +__ct__12T1__pt__3_1tFv +T1<t>::T1(void) +# +--format=arm +__dl__11T1__pt__2_cSFPv +T1<char>::operator delete(void *) static +# +--format=arm +bar__3fooFPv +foo::bar(void *) +# +--format=arm +bar__3fooCFPv +foo::bar(void *) const +# +--format=arm +__eq__3fooFR3foo +foo::operator==(foo &) +# +--format=arm +__eq__3fooCFR3foo +foo::operator==(foo &) const +# +--format=arm +elem__15vector__pt__2_dFi +vector<double>::elem(int) +# +--format=arm +elem__15vector__pt__2_iFi +vector<int>::elem(int) +# +--format=arm +__ct__15vector__pt__2_dFi +vector<double>::vector(int) +# +--format=arm +__ct__15vector__pt__2_iFi +vector<int>::vector(int) +# +--format=arm +__ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2 +DListNode<RLabel &>::DListNode(RLabel &, DListNode<RLabel &> *, DListNode<RLabel &> *) +# +--format=arm +bar__3fooFiT16FooBar +foo::bar(int, int, FooBar) +# +--format=arm +bar__3fooFPiN51PdN37PcN211T1iN215 +foo::bar(int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, char *, char *, char *, int *, int, int, int) +# +--format=hp +__amd__FR2T2i +operator%=(T2 &, int) +# +--format=hp +__adv__FR2T2i +operator/=(T2 &, int) +# +--format=hp +__amu__FR2T2i +operator*=(T2 &, int) +# +--format=hp +__ami__FR2T2i +operator-=(T2 &, int) +# +--format=hp +__apl__FR2T2i +operator+=(T2 &, int) +# +--format=hp +__nw__2T1SFUi +T1::operator new(unsigned int) static +# +--format=hp +__dl__2T1SFPv +T1::operator delete(void *) static +# +--format=hp +put__2T7SFi +T7::put(int) static +# +--format=hp +h__FUc +h(unsigned char) +# +--format=hp +f__Fic +f(int, char) +# +--format=hp +h__FUi +h(unsigned int) +# +--format=hp +h__Fci +h(char, int) +# +--format=hp +h__FUl +h(unsigned long) +# +--format=hp +h__Fcl +h(char, long) +# +--format=hp +h__FUs +h(unsigned short) +# +--format=hp +h__Fcs +h(char, short) +# +--format=hp +h__FcT1 +h(char, char) +# +--format=hp +f__Ficd +f(int, char, double) +# +--format=hp +f__FicdPcPFci_v +f(int, char, double, char *, void (*)(char, int)) +# +--format=hp +f__FicdPcPFic_v +f(int, char, double, char *, void (*)(int, char)) +# +--format=hp +get__2T7SFv +T7::get(void) static +# +--format=hp +h__Fc +h(char) +# +--format=hp +h__Fd +h(double) +# +--format=hp +h__Ff +h(float) +# +--format=hp +h__Fi +h(int) +# +--format=hp +f__Fi +f(int) +# +--format=hp +h__Fl +h(long) +# +--format=hp +h__Fs +h(short) +# +--format=hp +f__FicdPc +f(int, char, double, char *) +# +--format=hp +__nw__FUi +operator new(unsigned int) +# +--format=hp +__ct__Q3_2T11a1bSFi +T1::a::b::b(int) static +# +--format=hp +__dt__Q3_2T11a1bSFi +T1::a::b::~b(int) static +# +--format=hp +put__Q3_2T11a1bSFi +T1::a::b::put(int) static +# +--format=hp +get__Q2_2T11aSFv +T1::a::get(void) static +# +--format=hp +put__2T1SFi +T1::put(int) static +# +--format=hp +put__Q5_2T11a1b1c1dSFi +T1::a::b::c::d::put(int) static +# +--format=hp +get__Q4_2T11a1b1cSFv +T1::a::b::c::get(void) static +# +--format=hp +put__Q2_2T11aSFi +T1::a::put(int) static +# +--format=hp +put__Q4_2T11a1b1cSFi +T1::a::b::c::put(int) static +# +--format=hp +get__Q3_2T11a1bSFv +T1::a::b::get(void) static +# +--format=hp +get__2T1SFv +T1::get(void) static +# +--format=hp +get__Q5_2T11a1b1c1dSFv +T1::a::b::c::d::get(void) static +# +--format=hp +bar__3fooFPv +foo::bar(void *) +# +--format=hp +bar__3fooCFPv +foo::bar(void *) const +# +--format=hp +__eq__3fooFR3foo +foo::operator==(foo &) +# +--format=hp +__eq__3fooCFR3foo +foo::operator==(foo &) const +# +--format=hp +bar__3fooFiT16FooBar +foo::bar(int, int, FooBar) +# +--format=hp +bar__3fooFPiN51PdN37PcN211T1iN215 +foo::bar(int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, char *, char *, char *, int *, int, int, int) +# +--format=hp +__dt__2T5XTPFiPPdPv_i__Fv +T5<int (*)(int, double **, void *)>::~T5(void) +# +--format=hp +__ct__1cFi +c::c(int) +# +--format=hp +__dt__2T5XTi__Fv +T5<int>::~T5(void) +# +--format=hp +__dt__2T5XTc__Fv +T5<char>::~T5(void) +# +--format=hp +__ct__2T2Fi +T2::T2(int) +# +--format=hp +__dt__2T1Fv +T1::~T1(void) +# +--format=hp +__dt__2T5XT1x__Fv +T5<x>::~T5(void) +# +--format=hp +__dt__2T5XTPFcPv_i__Fv +T5<int (*)(char, void *)>::~T5(void) +# +--format=hp +__ct__2T5XTPFiPPdPv_i__Fi +T5<int (*)(int, double **, void *)>::T5(int) +# +--format=hp +__dl__2T5XT1x__SFPv +T5<x>::operator delete(void *) static +# +--format=hp +X__2T5XT1x +T5<x>::X +# +--format=hp +__ct__2T5XTi__Fi +T5<int>::T5(int) +# +--format=hp +__ct__2T5XTc__Fi +T5<char>::T5(int) +# +--format=hp +__dl__2T5XTPFcPv_i__SFPv +T5<int (*)(char, void *)>::operator delete(void *) static +# +--format=hp +X__2T5XTPFcPv_i +T5<int (*)(char, void *)>::X +# +--format=hp +__ct__2T5XT1x__Fi +T5<x>::T5(int) +# +--format=hp +__dl__2T5XTPFiPPdPv_i__SFPv +T5<int (*)(int, double **, void *)>::operator delete(void *) static +# +--format=hp +X__2T5XTPFiPPdPv_i +T5<int (*)(int, double **, void *)>::X +# +--format=hp +__dl__2T5XTi__SFPv +T5<int>::operator delete(void *) static +# +--format=hp +__dl__2T5XTc__SFPv +T5<char>::operator delete(void *) static +# +--format=hp +X__2T5XTc +T5<char>::X +# +--format=hp +X__2T5XTi +T5<int>::X +# +--format=hp +__ct__2T5XTPFcPv_i__Fi +T5<int (*)(char, void *)>::T5(int) +# +--format=hp +__dt__2T1XTc__Fv +T1<char>::~T1(void) +# +--format=hp +__dt__2T1XT1t__Fv +T1<t>::~T1(void) +# +--format=hp +__dl__2T1XT1t__SFPv +T1<t>::operator delete(void *) static +# +--format=hp +__ct__2T1XTc__Fi +T1<char>::T1(int) +# +--format=hp +__ct__2T1XTc__Fv +T1<char>::T1(void) +# +--format=hp +__ct__2T1XT1t__Fi +T1<t>::T1(int) +# +--format=hp +__ct__2T1XT1t__Fv +T1<t>::T1(void) +# +--format=hp +__dl__2T1XTc__SFPv +T1<char>::operator delete(void *) static +# +--format=hp +elem__6vectorXTd__Fi +vector<double>::elem(int) +# +--format=hp +elem__6vectorXTi__Fi +vector<int>::elem(int) +# +--format=hp +__ct__6vectorXTd__Fi +vector<double>::vector(int) +# +--format=hp +__ct__6vectorXTi__Fi +vector<int>::vector(int) +# +--format=hp +__ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2 +DListNode<RLabel &>::DListNode(RLabel &, DListNode<RLabel &> *, DListNode<RLabel &> *) +# +--format=hp +elem__6vectorXTiUP34__Fi +vector<int,34U>::elem(int) +# +--format=hp +elem__6vectorXUP2701Td__Fi +vector<2701U,double>::elem(int) +# +--format=hp +elem__6vectorXTiSP334__Fi +vector<int,334>::elem(int) +# +--format=hp +elem__6vectorXTiSN67__Fi +vector<int,-67>::elem(int) +# +--format=hp +elem__6vectorXTiSM__SCFPPd +vector<int,-2147483648>::elem(double **) static const +# +--format=hp +elem__6vectorXTiSN67UP4000TRs__Fi +vector<int,-67,4000U,short &>::elem(int) +# +--format=hp +elem__6vectorXTiSN67TRdTFPv_i__Fi +vector<int,-67,double &,int (void *)>::elem(int) +# +--format=hp +X__6vectorXTiSN67TdTPvUP5TRs +vector<int,-67,double,void *,5U,short &>::X +# +--format=hp +elem__6vectorXTiA3foo__Fi +vector<int,&foo>::elem(int) +# +--format=hp +elem__6vectorXTiA3fooTPvA5Label__FiPPvT2 +vector<int,&foo,void *,&Label>::elem(int, void **, void **) +# +--format=hp +elem__6vectorXTiSN42A3foo__Fi +vector<int,-42,&foo>::elem(int) +# +--format=hp +__ct__2T5XTPFcPv_i__Fi_2 +T5<int (*)(char, void *)>::T5(int) +# +--format=hp +__ct__2T5XTPFcPv_i__Fi_19 +T5<int (*)(char, void *)>::T5(int) +# +--format=hp +f__FicdPcPFci_v_34 +f(int, char, double, char *, void (*)(char, int)) +# +--format=hp +spec__13Spec<#1,#1.*>XTiTPi_FPi +Spec<int,int *>::spec(int *) +# +--format=hp +spec__16Spec<#1,#1.&,#1>XTiTRiTi_FPi +Spec<int,int &,int>::spec(int *) +# +--format=hp +add__XTc_FcT1 +add<char>(char, char) +# +--format=hp +add__XTcSP9A5label_FcPPlT1 +add<char,9,&label>(char, long **, char) +# +--format=hp +add__XTPfTFPd_f_FcT1 +add<float *,float (double *)>(char, char) +# +--format=hp +unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv +basic_string<char,string_char_traits<char>,allocator>::unLink(void) +# +# A regression test with no args. This used to cause a segv. + +_Utf390_1__1_9223372036854775807__9223372036854775 +_Utf390_1__1_9223372036854775807__9223372036854775 +# +--format=gnu +call__H1Z4Test_RX01_t1C2ZX01PMX01FPX01i_vQ2X016output +C<Test, Test::output> call<Test>(Test &) +# +--format=gnu +fn__FPQ21n1cPMQ21n1cFPQ21n1c_i +fn(n::c *, int (n::c::*)(n::c *)) +# +--format=gnu +f__FGt3Bar1i21i +f(Bar<2>, i) +# +--format=gnu +f__FGt3Bar1i_21_i +f(Bar<21>, int) +# +--format=gnu +f__FGt3Bar1i24XY_t +f(Bar<2>, XY_t) diff --git a/libiberty/testsuite/regress-demangle b/libiberty/testsuite/regress-demangle new file mode 100755 index 0000000..bd48ce9 --- /dev/null +++ b/libiberty/testsuite/regress-demangle @@ -0,0 +1,28 @@ +#! /bin/sh + +# Run a regression test for the demangler. +# Usage: regress-demangle TEST-FILE + +failures=0 +count=0 +sed -e '/^#/ d' "$1" | ( + while read type; do + read mangled + read demangled + + x="`echo $mangled | ./test-filter $type`" + count=`expr $count + 1` + if test "x$x" != "x$demangled"; then + failures=`expr $failures + 1` + echo "FAIL: $type $mangled" + fi + done + + if test $failures -eq 0; then + echo "All $count tests passed" + else + echo "$failures of $count tests failed" + fi + + test $failures -eq 0 +) diff --git a/libiberty/tmpnam.c b/libiberty/tmpnam.c index c061467..8eb77e2 100644 --- a/libiberty/tmpnam.c +++ b/libiberty/tmpnam.c @@ -1,7 +1,7 @@ #include <stdio.h> #ifndef L_tmpnam -#define L_tmpname 100 +#define L_tmpnam 100 #endif #ifndef P_tmpdir #define P_tmpdir "/usr/tmp" diff --git a/libiberty/vmsbuild.com b/libiberty/vmsbuild.com index 4fede38..497ea89 100644 --- a/libiberty/vmsbuild.com +++ b/libiberty/vmsbuild.com @@ -15,7 +15,7 @@ $! manually copied from Makefile.in $ REQUIRED_OFILES = "argv.o basename.o choose-temp.o concat.o cplus-dem.o "- + "fdmatch.o fnmatch.o getopt.o getopt1.o getruntime.o hex.o "- + "floatformat.o objalloc.o obstack.o spaces.o strerror.o strsignal.o "- - + "xatexit.o xexit.o xmalloc.o xstrdup.o xstrerror.o" + + "xatexit.o xexit.o xmalloc.o xmemdup.o xstrdup.o xstrerror.o" $! anything not caught by link+search of dummy.* should be added here $ EXTRA_OFILES = "" $! diff --git a/libiberty/xmemdup.c b/libiberty/xmemdup.c new file mode 100644 index 0000000..f780041 --- /dev/null +++ b/libiberty/xmemdup.c @@ -0,0 +1,22 @@ +/* xmemdup.c -- Duplicate a memory buffer, using xcalloc. + This trivial function is in the public domain. + Jeff Garzik, September 1999. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "ansidecl.h" +#include "libiberty.h" + +#include <sys/types.h> /* For size_t. */ + +PTR +xmemdup (input, copy_size, alloc_size) + const PTR input; + size_t copy_size; + size_t alloc_size; +{ + PTR output = xcalloc (1, alloc_size); + memcpy (output, input, copy_size); + return output; +} diff --git a/libiberty/xstrdup.c b/libiberty/xstrdup.c index e16aba0..6f846cf 100644 --- a/libiberty/xstrdup.c +++ b/libiberty/xstrdup.c @@ -2,6 +2,7 @@ This trivial function is in the public domain. Ian Lance Taylor, Cygnus Support, December 1995. */ +#include <sys/types.h> #ifdef HAVE_CONFIG_H #include "config.h" #endif |