URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/tags/gnu-src/gdb-6.8/pre-binutils-2.20.1-sync/libiberty/testsuite
- from Rev 157 to Rev 223
- ↔ Reverse comparison
Rev 157 → Rev 223
/Makefile.in
0,0 → 1,92
# |
# Makefile |
# Copyright (C) 1999, 2002, 2006 |
# 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., 51 Franklin Street, Fifth Floor, |
# Boston, MA 02110-1301, 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 is set to "really_check" or the empty string by configure. |
check: @CHECK@ |
|
really-check: check-cplus-dem check-pexecute check-expandargv |
|
# Run some tests of the demangler. |
check-cplus-dem: test-demangle $(srcdir)/demangle-expected |
./test-demangle < $(srcdir)/demangle-expected |
|
# Check the pexecute code. |
check-pexecute: test-pexecute |
./test-pexecute |
|
# Check the expandargv functionality |
check-expandargv: test-expandargv |
./test-expandargv |
|
TEST_COMPILE = $(CC) @DEFS@ $(LIBCFLAGS) -I.. -I$(INCDIR) $(HDEFINES) |
test-demangle: $(srcdir)/test-demangle.c ../libiberty.a |
$(TEST_COMPILE) -o test-demangle \ |
$(srcdir)/test-demangle.c ../libiberty.a |
|
test-pexecute: $(srcdir)/test-pexecute.c ../libiberty.a |
$(TEST_COMPILE) -DHAVE_CONFIG_H -I.. -o test-pexecute \ |
$(srcdir)/test-pexecute.c ../libiberty.a |
|
test-expandargv: $(srcdir)/test-expandargv.c ../libiberty.a |
$(TEST_COMPILE) -DHAVE_CONFIG_H -I.. -o test-expandargv \ |
$(srcdir)/test-expandargv.c ../libiberty.a |
|
# Standard (either GNU or Cygnus) rules we don't use. |
html install-html info install-info clean-info dvi pdf install-pdf \ |
install etags tags installcheck: |
|
# The standard clean rules. |
mostlyclean: |
rm -f test-demangle |
rm -f test-pexecute |
rm -f test-expandargv |
rm -f core |
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 |
/test-pexecute.c
0,0 → 1,522
/* Pexecute test program, |
Copyright (C) 2005 Free Software Foundation, Inc. |
Written by Ian Lance Taylor <ian@airs.com>. |
|
This file is part of GNU libiberty. |
|
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 2 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, write to the Free Software |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
*/ |
|
#ifdef HAVE_CONFIG_H |
#include "config.h" |
#endif |
#include "ansidecl.h" |
#include "libiberty.h" |
#include <stdio.h> |
#include <signal.h> |
#include <errno.h> |
#ifdef HAVE_STRING_H |
#include <string.h> |
#endif |
#include <sys/types.h> |
#ifdef HAVE_STDLIB_H |
#include <stdlib.h> |
#endif |
#ifdef HAVE_UNISTD_H |
#include <unistd.h> |
#endif |
#ifdef HAVE_SYS_WAIT_H |
#include <sys/wait.h> |
#endif |
#ifdef HAVE_SYS_TIME_H |
#include <sys/time.h> |
#endif |
#ifdef HAVE_SYS_RESOURCE_H |
#include <sys/resource.h> |
#endif |
|
#ifndef WIFSIGNALED |
#define WIFSIGNALED(S) (((S) & 0xff) != 0 && ((S) & 0xff) != 0x7f) |
#endif |
#ifndef WTERMSIG |
#define WTERMSIG(S) ((S) & 0x7f) |
#endif |
#ifndef WIFEXITED |
#define WIFEXITED(S) (((S) & 0xff) == 0) |
#endif |
#ifndef WEXITSTATUS |
#define WEXITSTATUS(S) (((S) & 0xff00) >> 8) |
#endif |
#ifndef WSTOPSIG |
#define WSTOPSIG WEXITSTATUS |
#endif |
#ifndef WCOREDUMP |
#define WCOREDUMP(S) ((S) & WCOREFLG) |
#endif |
#ifndef WCOREFLG |
#define WCOREFLG 0200 |
#endif |
|
#ifndef EXIT_SUCCESS |
#define EXIT_SUCCESS 0 |
#endif |
|
#ifndef EXIT_FAILURE |
#define EXIT_FAILURE 1 |
#endif |
|
/* When this program is run with no arguments, it runs some tests of |
the libiberty pexecute functions. As a test program, it simply |
invokes itself with various arguments. |
|
argv[1]: |
*empty string* Run tests, exit with success status |
exit Exit success |
error Exit error |
abort Abort |
echo Echo remaining arguments, exit success |
echoerr Echo next arg to stdout, next to stderr, repeat |
copy Copy stdin to stdout |
write Write stdin to file named in next argument |
*/ |
|
static void fatal_error (int, const char *, int) ATTRIBUTE_NORETURN; |
static void error (int, const char *); |
static void check_line (int, FILE *, const char *); |
static void do_cmd (int, char **) ATTRIBUTE_NORETURN; |
|
/* The number of errors we have seen. */ |
|
static int error_count; |
|
/* Print a fatal error and exit. LINE is the line number where we |
detected the error, ERRMSG is the error message to print, and ERR |
is 0 or an errno value to print. */ |
|
static void |
fatal_error (int line, const char *errmsg, int err) |
{ |
fprintf (stderr, "test-pexecute:%d: %s", line, errmsg); |
if (errno != 0) |
fprintf (stderr, ": %s", xstrerror (err)); |
fprintf (stderr, "\n"); |
exit (EXIT_FAILURE); |
} |
|
#define FATAL_ERROR(ERRMSG, ERR) fatal_error (__LINE__, ERRMSG, ERR) |
|
/* Print an error message and bump the error count. LINE is the line |
number where we detected the error, ERRMSG is the error to |
print. */ |
|
static void |
error (int line, const char *errmsg) |
{ |
fprintf (stderr, "test-pexecute:%d: %s\n", line, errmsg); |
++error_count; |
} |
|
#define ERROR(ERRMSG) error (__LINE__, ERRMSG) |
|
/* Check a line in a file. */ |
|
static void |
check_line (int line, FILE *e, const char *str) |
{ |
const char *p; |
int c; |
char buf[1000]; |
|
p = str; |
while (1) |
{ |
c = getc (e); |
|
if (*p == '\0') |
{ |
if (c != '\n') |
{ |
snprintf (buf, sizeof buf, "got '%c' when expecting newline", c); |
fatal_error (line, buf, 0); |
} |
c = getc (e); |
if (c != EOF) |
{ |
snprintf (buf, sizeof buf, "got '%c' when expecting EOF", c); |
fatal_error (line, buf, 0); |
} |
return; |
} |
|
if (c != *p) |
{ |
snprintf (buf, sizeof buf, "expected '%c', got '%c'", *p, c); |
fatal_error (line, buf, 0); |
} |
|
++p; |
} |
} |
|
#define CHECK_LINE(E, STR) check_line (__LINE__, E, STR) |
|
/* Main function for the pexecute tester. Run the tests. */ |
|
int |
main (int argc, char **argv) |
{ |
int trace; |
struct pex_obj *test_pex_tmp; |
int test_pex_status; |
FILE *test_pex_file; |
struct pex_obj *pex1; |
char *subargv[10]; |
int status; |
FILE *e; |
int statuses[10]; |
|
trace = 0; |
if (argc > 1 && strcmp (argv[1], "-t") == 0) |
{ |
trace = 1; |
--argc; |
++argv; |
} |
|
if (argc > 1) |
do_cmd (argc, argv); |
|
#define TEST_PEX_INIT(FLAGS, TEMPBASE) \ |
(((test_pex_tmp = pex_init (FLAGS, "test-pexecute", TEMPBASE)) \ |
!= NULL) \ |
? test_pex_tmp \ |
: (FATAL_ERROR ("pex_init failed", 0), NULL)) |
|
#define TEST_PEX_RUN(PEXOBJ, FLAGS, EXECUTABLE, ARGV, OUTNAME, ERRNAME) \ |
do \ |
{ \ |
int err; \ |
const char *pex_run_err; \ |
if (trace) \ |
fprintf (stderr, "Line %d: running %s %s\n", \ |
__LINE__, EXECUTABLE, ARGV[0]); \ |
pex_run_err = pex_run (PEXOBJ, FLAGS, EXECUTABLE, ARGV, OUTNAME, \ |
ERRNAME, &err); \ |
if (pex_run_err != NULL) \ |
FATAL_ERROR (pex_run_err, err); \ |
} \ |
while (0) |
|
#define TEST_PEX_GET_STATUS_1(PEXOBJ) \ |
(pex_get_status (PEXOBJ, 1, &test_pex_status) \ |
? test_pex_status \ |
: (FATAL_ERROR ("pex_get_status failed", errno), 1)) |
|
#define TEST_PEX_GET_STATUS(PEXOBJ, COUNT, VECTOR) \ |
do \ |
{ \ |
if (!pex_get_status (PEXOBJ, COUNT, VECTOR)) \ |
FATAL_ERROR ("pex_get_status failed", errno); \ |
} \ |
while (0) |
|
#define TEST_PEX_READ_OUTPUT(PEXOBJ) \ |
((test_pex_file = pex_read_output (PEXOBJ, 0)) != NULL \ |
? test_pex_file \ |
: (FATAL_ERROR ("pex_read_output failed", errno), NULL)) |
|
remove ("temp.x"); |
remove ("temp.y"); |
|
memset (subargv, 0, sizeof subargv); |
|
subargv[0] = "./test-pexecute"; |
|
pex1 = TEST_PEX_INIT (PEX_USE_PIPES, NULL); |
subargv[1] = "exit"; |
subargv[2] = NULL; |
TEST_PEX_RUN (pex1, PEX_LAST, "./test-pexecute", subargv, NULL, NULL); |
status = TEST_PEX_GET_STATUS_1 (pex1); |
if (!WIFEXITED (status) || WEXITSTATUS (status) != EXIT_SUCCESS) |
ERROR ("exit failed"); |
pex_free (pex1); |
|
pex1 = TEST_PEX_INIT (PEX_USE_PIPES, NULL); |
subargv[1] = "error"; |
subargv[2] = NULL; |
TEST_PEX_RUN (pex1, PEX_LAST, "./test-pexecute", subargv, NULL, NULL); |
status = TEST_PEX_GET_STATUS_1 (pex1); |
if (!WIFEXITED (status) || WEXITSTATUS (status) != EXIT_FAILURE) |
ERROR ("error test failed"); |
pex_free (pex1); |
|
/* We redirect stderr to a file to avoid an error message which is |
printed on mingw32 when the child calls abort. */ |
pex1 = TEST_PEX_INIT (PEX_USE_PIPES, NULL); |
subargv[1] = "abort"; |
subargv[2] = NULL; |
TEST_PEX_RUN (pex1, PEX_LAST, "./test-pexecute", subargv, NULL, "temp.z"); |
status = TEST_PEX_GET_STATUS_1 (pex1); |
if (!WIFSIGNALED (status) || WTERMSIG (status) != SIGABRT) |
ERROR ("abort failed"); |
pex_free (pex1); |
remove ("temp.z"); |
|
pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp"); |
subargv[1] = "echo"; |
subargv[2] = "foo"; |
subargv[3] = NULL; |
TEST_PEX_RUN (pex1, 0, "./test-pexecute", subargv, NULL, NULL); |
e = TEST_PEX_READ_OUTPUT (pex1); |
CHECK_LINE (e, "foo"); |
if (TEST_PEX_GET_STATUS_1 (pex1) != 0) |
ERROR ("echo exit status failed"); |
pex_free (pex1); |
|
pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp"); |
subargv[1] = "echo"; |
subargv[2] = "bar"; |
subargv[3] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".x", NULL); |
subargv[1] = "copy"; |
subargv[2] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".y", NULL); |
e = TEST_PEX_READ_OUTPUT (pex1); |
CHECK_LINE (e, "bar"); |
TEST_PEX_GET_STATUS (pex1, 2, statuses); |
if (!WIFEXITED (statuses[0]) || WEXITSTATUS (statuses[0]) != EXIT_SUCCESS |
|| !WIFEXITED (statuses[1]) || WEXITSTATUS (statuses[1]) != EXIT_SUCCESS) |
ERROR ("copy exit status failed"); |
pex_free (pex1); |
if (fopen ("temp.x", "r") != NULL || fopen ("temp.y", "r") != NULL) |
ERROR ("temporary files exist"); |
|
pex1 = TEST_PEX_INIT (0, "temp"); |
subargv[1] = "echo"; |
subargv[2] = "bar"; |
subargv[3] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".x", NULL); |
subargv[1] = "copy"; |
subargv[2] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".y", NULL); |
e = TEST_PEX_READ_OUTPUT (pex1); |
CHECK_LINE (e, "bar"); |
TEST_PEX_GET_STATUS (pex1, 2, statuses); |
if (!WIFEXITED (statuses[0]) || WEXITSTATUS (statuses[0]) != EXIT_SUCCESS |
|| !WIFEXITED (statuses[1]) || WEXITSTATUS (statuses[1]) != EXIT_SUCCESS) |
ERROR ("copy exit status failed"); |
pex_free (pex1); |
if (fopen ("temp.x", "r") != NULL || fopen ("temp.y", "r") != NULL) |
ERROR ("temporary files exist"); |
|
pex1 = TEST_PEX_INIT (PEX_SAVE_TEMPS, "temp"); |
subargv[1] = "echo"; |
subargv[2] = "quux"; |
subargv[3] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".x", NULL); |
subargv[1] = "copy"; |
subargv[2] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".y", NULL); |
e = TEST_PEX_READ_OUTPUT (pex1); |
CHECK_LINE (e, "quux"); |
TEST_PEX_GET_STATUS (pex1, 2, statuses); |
if (!WIFEXITED (statuses[0]) || WEXITSTATUS (statuses[0]) != EXIT_SUCCESS |
|| !WIFEXITED (statuses[1]) || WEXITSTATUS (statuses[1]) != EXIT_SUCCESS) |
ERROR ("copy temp exit status failed"); |
e = fopen ("temp.x", "r"); |
if (e == NULL) |
FATAL_ERROR ("fopen temp.x failed in copy temp", errno); |
CHECK_LINE (e, "quux"); |
fclose (e); |
e = fopen ("temp.y", "r"); |
if (e == NULL) |
FATAL_ERROR ("fopen temp.y failed in copy temp", errno); |
CHECK_LINE (e, "quux"); |
fclose (e); |
pex_free (pex1); |
remove ("temp.x"); |
remove ("temp.y"); |
|
pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp"); |
subargv[1] = "echoerr"; |
subargv[2] = "one"; |
subargv[3] = "two"; |
subargv[4] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".x", "temp2.x"); |
subargv[1] = "write"; |
subargv[2] = "temp2.y"; |
subargv[3] = NULL; |
TEST_PEX_RUN (pex1, PEX_SUFFIX, "./test-pexecute", subargv, ".y", NULL); |
TEST_PEX_GET_STATUS (pex1, 2, statuses); |
if (!WIFEXITED (statuses[0]) || WEXITSTATUS (statuses[0]) != EXIT_SUCCESS |
|| !WIFEXITED (statuses[1]) || WEXITSTATUS (statuses[1]) != EXIT_SUCCESS) |
ERROR ("echoerr exit status failed"); |
pex_free (pex1); |
if (fopen ("temp.x", "r") != NULL || fopen ("temp.y", "r") != NULL) |
ERROR ("temporary files exist"); |
e = fopen ("temp2.x", "r"); |
if (e == NULL) |
FATAL_ERROR ("fopen temp2.x failed in echoerr", errno); |
CHECK_LINE (e, "two"); |
fclose (e); |
e = fopen ("temp2.y", "r"); |
if (e == NULL) |
FATAL_ERROR ("fopen temp2.y failed in echoerr", errno); |
CHECK_LINE (e, "one"); |
fclose (e); |
remove ("temp2.x"); |
remove ("temp2.y"); |
|
/* Test the old pexecute interface. */ |
{ |
int pid1, pid2; |
char *errmsg_fmt; |
char *errmsg_arg; |
char errbuf1[1000]; |
char errbuf2[1000]; |
|
subargv[1] = "echo"; |
subargv[2] = "oldpexecute"; |
subargv[3] = NULL; |
pid1 = pexecute ("./test-pexecute", subargv, "test-pexecute", "temp", |
&errmsg_fmt, &errmsg_arg, PEXECUTE_FIRST); |
if (pid1 < 0) |
{ |
snprintf (errbuf1, sizeof errbuf1, errmsg_fmt, errmsg_arg); |
snprintf (errbuf2, sizeof errbuf2, "pexecute 1 failed: %s", errbuf1); |
FATAL_ERROR (errbuf2, 0); |
} |
|
subargv[1] = "write"; |
subargv[2] = "temp.y"; |
subargv[3] = NULL; |
pid2 = pexecute ("./test-pexecute", subargv, "test-pexecute", "temp", |
&errmsg_fmt, &errmsg_arg, PEXECUTE_LAST); |
if (pid2 < 0) |
{ |
snprintf (errbuf1, sizeof errbuf1, errmsg_fmt, errmsg_arg); |
snprintf (errbuf2, sizeof errbuf2, "pexecute 2 failed: %s", errbuf1); |
FATAL_ERROR (errbuf2, 0); |
} |
|
if (pwait (pid1, &status, 0) < 0) |
FATAL_ERROR ("write pwait 1 failed", errno); |
if (!WIFEXITED (status) || WEXITSTATUS (status) != EXIT_SUCCESS) |
ERROR ("write exit status 1 failed"); |
|
if (pwait (pid2, &status, 0) < 0) |
FATAL_ERROR ("write pwait 1 failed", errno); |
if (!WIFEXITED (status) || WEXITSTATUS (status) != EXIT_SUCCESS) |
ERROR ("write exit status 2 failed"); |
|
e = fopen ("temp.y", "r"); |
if (e == NULL) |
FATAL_ERROR ("fopen temp.y failed in copy temp", errno); |
CHECK_LINE (e, "oldpexecute"); |
fclose (e); |
|
remove ("temp.y"); |
} |
|
if (trace) |
fprintf (stderr, "Exiting with status %d\n", error_count); |
|
return error_count; |
} |
|
/* Execute one of the special testing commands. */ |
|
static void |
do_cmd (int argc, char **argv) |
{ |
const char *s; |
|
/* Try to prevent generating a core dump. */ |
#ifdef RLIMIT_CORE |
{ |
struct rlimit r; |
|
r.rlim_cur = 0; |
r.rlim_max = 0; |
setrlimit (RLIMIT_CORE, &r); |
} |
#endif |
|
s = argv[1]; |
if (strcmp (s, "exit") == 0) |
exit (EXIT_SUCCESS); |
else if (strcmp (s, "echo") == 0) |
{ |
int i; |
|
for (i = 2; i < argc; ++i) |
{ |
if (i > 2) |
putchar (' '); |
fputs (argv[i], stdout); |
} |
putchar ('\n'); |
exit (EXIT_SUCCESS); |
} |
else if (strcmp (s, "echoerr") == 0) |
{ |
int i; |
|
for (i = 2; i < argc; ++i) |
{ |
if (i > 3) |
putc (' ', (i & 1) == 0 ? stdout : stderr); |
fputs (argv[i], (i & 1) == 0 ? stdout : stderr); |
} |
putc ('\n', stdout); |
putc ('\n', stderr); |
exit (EXIT_SUCCESS); |
} |
else if (strcmp (s, "error") == 0) |
exit (EXIT_FAILURE); |
else if (strcmp (s, "abort") == 0) |
abort (); |
else if (strcmp (s, "copy") == 0) |
{ |
int c; |
|
while ((c = getchar ()) != EOF) |
putchar (c); |
exit (EXIT_SUCCESS); |
} |
else if (strcmp (s, "write") == 0) |
{ |
FILE *e; |
int c; |
|
e = fopen (argv[2], "w"); |
if (e == NULL) |
FATAL_ERROR ("fopen for write failed", errno); |
while ((c = getchar ()) != EOF) |
putc (c, e); |
if (fclose (e) != 0) |
FATAL_ERROR ("fclose for write failed", errno); |
exit (EXIT_SUCCESS); |
} |
else |
{ |
char buf[1000]; |
|
snprintf (buf, sizeof buf, "unrecognized command %s", argv[1]); |
FATAL_ERROR (buf, 0); |
} |
|
exit (EXIT_FAILURE); |
} |
test-pexecute.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: test-demangle.c
===================================================================
--- test-demangle.c (nonexistent)
+++ test-demangle.c (revision 223)
@@ -0,0 +1,345 @@
+/* Demangler test program,
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+ Written by Zack Weinberg
+#include "libiberty.h"
+#include "demangle.h"
+#ifdef HAVE_STRING_H
+#include
+#endif
+#if HAVE_STDLIB_H
+# include
+#endif
+
+struct line
+{
+ size_t alloced;
+ char *data;
+};
+
+static unsigned int lineno;
+
+/* Safely read a single line of arbitrary length from standard input. */
+
+#define LINELEN 80
+
+static void
+getline(buf)
+ struct line *buf;
+{
+ char *data = buf->data;
+ size_t alloc = buf->alloced;
+ size_t count = 0;
+ int c;
+
+ if (data == 0)
+ {
+ data = xmalloc (LINELEN);
+ alloc = LINELEN;
+ }
+
+ /* Skip comment lines. */
+ while ((c = getchar()) == '#')
+ {
+ while ((c = getchar()) != EOF && c != '\n');
+ lineno++;
+ }
+
+ /* c is the first character on the line, and it's not a comment
+ line: copy this line into the buffer and return. */
+ while (c != EOF && c != '\n')
+ {
+ if (count + 1 >= alloc)
+ {
+ alloc *= 2;
+ data = xrealloc (data, alloc);
+ }
+ data[count++] = c;
+ c = getchar();
+ }
+ lineno++;
+ data[count] = '\0';
+
+ buf->data = data;
+ buf->alloced = alloc;
+}
+
+/* If we have mmap() and mprotect(), copy the string S just before a
+ protected page, so that if the demangler runs over the end of the
+ string we'll get a fault, and return the address of the new string.
+ If no mmap, or it fails, or it looks too hard, just return S. */
+
+#ifdef HAVE_SYS_MMAN_H
+#include
+#endif
+#if defined(MAP_ANON) && ! defined (MAP_ANONYMOUS)
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+static const char *
+protect_end (const char * s)
+{
+#if defined(HAVE_MMAP) && defined (MAP_ANONYMOUS)
+ size_t pagesize = getpagesize();
+ static char * buf;
+ size_t s_len = strlen (s);
+ char * result;
+
+ /* Don't try if S is too long. */
+ if (s_len >= pagesize)
+ return s;
+
+ /* Allocate one page of allocated space followed by an unmapped
+ page. */
+ if (buf == NULL)
+ {
+ buf = mmap (NULL, pagesize * 2, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ if (! buf)
+ return s;
+ munmap (buf + pagesize, pagesize);
+ }
+
+ result = buf + (pagesize - s_len - 1);
+ memcpy (result, s, s_len + 1);
+ return result;
+#else
+ return s;
+#endif
+}
+
+static void
+fail (lineno, opts, in, out, exp)
+ int lineno;
+ const char *opts;
+ const char *in;
+ const char *out;
+ const char *exp;
+{
+ printf ("\
+FAIL at line %d, options %s:\n\
+in: %s\n\
+out: %s\n\
+exp: %s\n",
+ lineno, opts, in, out != NULL ? out : "(null)", exp);
+}
+
+/* The tester operates on a data file consisting of groups of lines:
+ options
+ input to be demangled
+ expected output
+
+ Supported options:
+ --format= Sets the demangling style.
+ --no-params There are two lines of expected output; the first
+ is with DMGL_PARAMS, the second is without it.
+ --is-v3-ctor Calls is_gnu_v3_mangled_ctor on input; expected
+ output is an integer representing ctor_kind.
+ --is-v3-dtor Likewise, but for dtors.
+ --ret-postfix Passes the DMGL_RET_POSTFIX option
+
+ For compatibility, just in case it matters, the options line may be
+ empty, to mean --format=auto. If it doesn't start with --, then it
+ may contain only a format name.
+*/
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ enum demangling_styles style = auto_demangling;
+ int no_params;
+ int is_v3_ctor;
+ int is_v3_dtor;
+ int ret_postfix;
+ struct line format;
+ struct line input;
+ struct line expect;
+ char *result;
+ int failures = 0;
+ int tests = 0;
+
+ if (argc > 1)
+ {
+ fprintf (stderr, "usage: %s < test-set\n", argv[0]);
+ return 2;
+ }
+
+ format.data = 0;
+ input.data = 0;
+ expect.data = 0;
+
+ for (;;)
+ {
+ const char *inp;
+
+ getline (&format);
+ if (feof (stdin))
+ break;
+
+ getline (&input);
+ getline (&expect);
+
+ inp = protect_end (input.data);
+
+ tests++;
+
+ no_params = 0;
+ ret_postfix = 0;
+ is_v3_ctor = 0;
+ is_v3_dtor = 0;
+ if (format.data[0] == '\0')
+ style = auto_demangling;
+ else if (format.data[0] != '-')
+ {
+ style = cplus_demangle_name_to_style (format.data);
+ if (style == unknown_demangling)
+ {
+ printf ("FAIL at line %d: unknown demangling style %s\n",
+ lineno, format.data);
+ failures++;
+ continue;
+ }
+ }
+ else
+ {
+ char *p;
+ char *opt;
+
+ p = format.data;
+ while (*p != '\0')
+ {
+ char c;
+
+ opt = p;
+ p += strcspn (p, " \t=");
+ c = *p;
+ *p = '\0';
+ if (strcmp (opt, "--format") == 0 && c == '=')
+ {
+ char *fstyle;
+
+ *p = c;
+ ++p;
+ fstyle = p;
+ p += strcspn (p, " \t");
+ c = *p;
+ *p = '\0';
+ style = cplus_demangle_name_to_style (fstyle);
+ if (style == unknown_demangling)
+ {
+ printf ("FAIL at line %d: unknown demangling style %s\n",
+ lineno, fstyle);
+ failures++;
+ continue;
+ }
+ }
+ else if (strcmp (opt, "--no-params") == 0)
+ no_params = 1;
+ else if (strcmp (opt, "--is-v3-ctor") == 0)
+ is_v3_ctor = 1;
+ else if (strcmp (opt, "--is-v3-dtor") == 0)
+ is_v3_dtor = 1;
+ else if (strcmp (opt, "--ret-postfix") == 0)
+ ret_postfix = 1;
+ else
+ {
+ printf ("FAIL at line %d: unrecognized option %s\n",
+ lineno, opt);
+ failures++;
+ continue;
+ }
+ *p = c;
+ p += strspn (p, " \t");
+ }
+ }
+
+ if (is_v3_ctor || is_v3_dtor)
+ {
+ char buf[20];
+
+ if (is_v3_ctor)
+ {
+ enum gnu_v3_ctor_kinds kc;
+
+ kc = is_gnu_v3_mangled_ctor (inp);
+ sprintf (buf, "%d", (int) kc);
+ }
+ else
+ {
+ enum gnu_v3_dtor_kinds kd;
+
+ kd = is_gnu_v3_mangled_dtor (inp);
+ sprintf (buf, "%d", (int) kd);
+ }
+
+ if (strcmp (buf, expect.data) != 0)
+ {
+ fail (lineno, format.data, input.data, buf, expect.data);
+ failures++;
+ }
+
+ continue;
+ }
+
+ cplus_demangle_set_style (style);
+
+ result = cplus_demangle (inp,
+ DMGL_PARAMS|DMGL_ANSI|DMGL_TYPES
+ |(ret_postfix ? DMGL_RET_POSTFIX : 0));
+
+ if (result
+ ? strcmp (result, expect.data)
+ : strcmp (input.data, expect.data))
+ {
+ fail (lineno, format.data, input.data, result, expect.data);
+ failures++;
+ }
+ free (result);
+
+ if (no_params)
+ {
+ getline (&expect);
+ result = cplus_demangle (inp, DMGL_ANSI|DMGL_TYPES);
+
+ if (result
+ ? strcmp (result, expect.data)
+ : strcmp (input.data, expect.data))
+ {
+ fail (lineno, format.data, input.data, result, expect.data);
+ failures++;
+ }
+ free (result);
+ }
+ }
+
+ free (format.data);
+ free (input.data);
+ free (expect.data);
+
+ printf ("%s: %d tests, %d failures\n", argv[0], tests, failures);
+ return failures ? 1 : 0;
+}
test-demangle.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: demangle-expected
===================================================================
--- demangle-expected (nonexistent)
+++ demangle-expected (revision 223)
@@ -0,0 +1,3864 @@
+# This file holds test cases for the demangler.
+# Each test case looks like this:
+# options
+# input to be demangled
+# expected output
+#
+# Supported options:
+# --format= Sets the demangling style.
+# --no-params There are two lines of expected output; the first
+# is with DMGL_PARAMS, the second is without it.
+# --is-v3-ctor Calls is_gnu_v3_mangled_ctor on input; expected
+# output is an integer representing ctor_kind.
+# --is-v3-dtor Likewise, but for dtors.
+# --ret-postfix Passes the DMGL_RET_POSTFIX option
+#
+# For compatibility, just in case it matters, the options line may be
+# empty, to mean --format=auto. If it doesn't start with --, then it
+# may contain only a format name.
+#
+# A line starting with `#' is ignored.
+# However, blank lines in this file are NOT ignored.
+#
+--format=gnu --no-params
+AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue
+ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *)
+ivTSolver::AddAlignment
+#
+--format=gnu --no-params
+ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic
+ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *)
+ArrowLine::ArrowheadIntersects
+#
+--format=gnu --no-params
+AtEnd__13ivRubberGroup
+ivRubberGroup::AtEnd(void)
+ivRubberGroup::AtEnd
+#
+--format=gnu --no-params
+BgFilter__9ivTSolverP12ivInteractor
+ivTSolver::BgFilter(ivInteractor *)
+ivTSolver::BgFilter
+#
+--format=gnu --no-params
+Check__6UArrayi
+UArray::Check(int)
+UArray::Check
+#
+--format=gnu --no-params
+CoreConstDecls__8TextCodeR7ostream
+TextCode::CoreConstDecls(ostream &)
+TextCode::CoreConstDecls
+#
+--format=gnu --no-params
+Detach__8StateVarP12StateVarView
+StateVar::Detach(StateVarView *)
+StateVar::Detach
+#
+--format=gnu --no-params
+Done__9ComponentG8Iterator
+Component::Done(Iterator)
+Component::Done
+#
+--format=gnu --no-params
+Effect__11RelateManipR7ivEvent
+RelateManip::Effect(ivEvent &)
+RelateManip::Effect
+#
+--format=gnu --no-params
+FindFixed__FRP4CNetP4CNet
+FindFixed(CNet *&, CNet *)
+FindFixed
+#
+--format=gnu --no-params
+Fix48_abort__FR8twolongs
+Fix48_abort(twolongs &)
+Fix48_abort
+#
+--format=gnu --no-params
+GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2
+iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &)
+iv2_6_VScroller::GetBarInfo
+#
+--format=gnu --no-params
+GetBgColor__C9ivPainter
+ivPainter::GetBgColor(void) const
+ivPainter::GetBgColor
+#
+--format=gnu --no-params
+InsertBody__15H_PullrightMenuii
+H_PullrightMenu::InsertBody(int, int)
+H_PullrightMenu::InsertBody
+#
+--format=gnu --no-params
+InsertCharacter__9TextManipc
+TextManip::InsertCharacter(char)
+TextManip::InsertCharacter
+#
+--format=gnu --no-params
+InsertToplevel__7ivWorldP12ivInteractorT1
+ivWorld::InsertToplevel(ivInteractor *, ivInteractor *)
+ivWorld::InsertToplevel
+#
+--format=gnu --no-params
+InsertToplevel__7ivWorldP12ivInteractorT1iiUi
+ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int)
+ivWorld::InsertToplevel
+#
+--format=gnu --no-params
+IsAGroup__FP11GraphicViewP11GraphicComp
+IsAGroup(GraphicView *, GraphicComp *)
+IsAGroup
+#
+--format=gnu --no-params
+IsA__10ButtonCodeUl
+ButtonCode::IsA(unsigned long)
+ButtonCode::IsA
+#
+--format=gnu --no-params
+ReadName__FR7istreamPc
+ReadName(istream &, char *)
+ReadName
+#
+--format=gnu --no-params
+Redraw__13StringBrowseriiii
+StringBrowser::Redraw(int, int, int, int)
+StringBrowser::Redraw
+#
+--format=gnu --no-params
+Rotate__13ivTransformerf
+ivTransformer::Rotate(float)
+ivTransformer::Rotate
+#
+--format=gnu --no-params
+Rotated__C13ivTransformerf
+ivTransformer::Rotated(float) const
+ivTransformer::Rotated
+#
+--format=gnu --no-params
+Round__Ff
+Round(float)
+Round
+#
+--format=gnu --no-params
+SetExport__16MemberSharedNameUi
+MemberSharedName::SetExport(unsigned int)
+MemberSharedName::SetExport
+#
+--format=gnu --no-params
+Set__14ivControlState13ControlStatusUi
+ivControlState::Set(ControlStatus, unsigned int)
+ivControlState::Set
+#
+--format=gnu --no-params
+Set__5DFacePcii
+DFace::Set(char *, int, int)
+DFace::Set
+#
+--format=gnu --no-params
+VConvert__9ivTSolverP12ivInteractorRP8TElementT2
+ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&)
+ivTSolver::VConvert
+#
+--format=gnu --no-params
+VConvert__9ivTSolverP7ivTGlueRP8TElement
+ivTSolver::VConvert(ivTGlue *, TElement *&)
+ivTSolver::VConvert
+#
+--format=gnu --no-params
+VOrder__9ivTSolverUiRP12ivInteractorT2
+ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&)
+ivTSolver::VOrder
+#
+--format=gnu --no-params
+_10PageButton$__both
+PageButton::__both
+PageButton::__both
+#
+--format=gnu --no-params
+_3RNG$singleMantissa
+RNG::singleMantissa
+RNG::singleMantissa
+#
+--format=gnu --no-params
+_5IComp$_release
+IComp::_release
+IComp::_release
+#
+--format=gnu --no-params
+_$_10BitmapComp
+BitmapComp::~BitmapComp(void)
+BitmapComp::~BitmapComp
+#
+--format=gnu --no-params
+_$_9__io_defs
+__io_defs::~__io_defs(void)
+__io_defs::~__io_defs
+#
+--format=gnu --no-params
+_$_Q23foo3bar
+foo::bar::~bar(void)
+foo::bar::~bar
+#
+--format=gnu --no-params
+_$_Q33foo3bar4bell
+foo::bar::bell::~bell(void)
+foo::bar::bell::~bell
+#
+--format=gnu --no-params
+__10ivTelltaleiP7ivGlyph
+ivTelltale::ivTelltale(int, ivGlyph *)
+ivTelltale::ivTelltale
+#
+--format=gnu --no-params
+__10ivViewportiP12ivInteractorUi
+ivViewport::ivViewport(int, ivInteractor *, unsigned int)
+ivViewport::ivViewport
+#
+--format=gnu --no-params
+__10ostrstream
+ostrstream::ostrstream(void)
+ostrstream::ostrstream
+#
+--format=gnu --no-params
+__10ostrstreamPcii
+ostrstream::ostrstream(char *, int, int)
+ostrstream::ostrstream
+#
+--format=gnu --no-params
+__11BitmapTablei
+BitmapTable::BitmapTable(int)
+BitmapTable::BitmapTable
+#
+--format=gnu --no-params
+__12ViewportCodeP12ViewportComp
+ViewportCode::ViewportCode(ViewportComp *)
+ViewportCode::ViewportCode
+#
+--format=gnu --no-params
+__12iv2_6_Borderii
+iv2_6_Border::iv2_6_Border(int, int)
+iv2_6_Border::iv2_6_Border
+#
+--format=gnu --no-params
+__12ivBreak_Listl
+ivBreak_List::ivBreak_List(long)
+ivBreak_List::ivBreak_List
+#
+--format=gnu --no-params
+__14iv2_6_MenuItemiP12ivInteractor
+iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *)
+iv2_6_MenuItem::iv2_6_MenuItem
+#
+--format=gnu --no-params
+__20DisplayList_IteratorR11DisplayList
+DisplayList_Iterator::DisplayList_Iterator(DisplayList &)
+DisplayList_Iterator::DisplayList_Iterator
+#
+--format=gnu --no-params
+__3fooRT0
+foo::foo(foo &)
+foo::foo
+#
+--format=gnu --no-params
+__3fooiN31
+foo::foo(int, int, int, int)
+foo::foo
+#
+--format=gnu --no-params
+__3fooiRT0iT2iT2
+foo::foo(int, foo &, int, foo &, int, foo &)
+foo::foo
+#
+--format=gnu --no-params
+__6KeyMapPT0
+KeyMap::KeyMap(KeyMap *)
+KeyMap::KeyMap
+#
+--format=gnu --no-params
+__8ArrowCmdP6EditorUiUi
+ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int)
+ArrowCmd::ArrowCmd
+#
+--format=gnu --no-params
+__9F_EllipseiiiiP7Graphic
+F_Ellipse::F_Ellipse(int, int, int, int, Graphic *)
+F_Ellipse::F_Ellipse
+#
+--format=gnu --no-params
+__9FrameDataP9FrameCompi
+FrameData::FrameData(FrameComp *, int)
+FrameData::FrameData
+#
+--format=gnu --no-params
+__9HVGraphicP9CanvasVarP7Graphic
+HVGraphic::HVGraphic(CanvasVar *, Graphic *)
+HVGraphic::HVGraphic
+#
+--format=gnu --no-params
+__Q23foo3bar
+foo::bar::bar(void)
+foo::bar::bar
+#
+--format=gnu --no-params
+__Q33foo3bar4bell
+foo::bar::bell::bell(void)
+foo::bar::bell::bell
+#
+--format=gnu --no-params
+__aa__3fooRT0
+foo::operator&&(foo &)
+foo::operator&&
+#
+--format=gnu --no-params
+__aad__3fooRT0
+foo::operator&=(foo &)
+foo::operator&=
+#
+--format=gnu --no-params
+__ad__3fooRT0
+foo::operator&(foo &)
+foo::operator&
+#
+--format=gnu --no-params
+__adv__3fooRT0
+foo::operator/=(foo &)
+foo::operator/=
+#
+--format=gnu --no-params
+__aer__3fooRT0
+foo::operator^=(foo &)
+foo::operator^=
+#
+--format=gnu --no-params
+__als__3fooRT0
+foo::operator<<=(foo &)
+foo::operator<<=
+#
+--format=gnu --no-params
+__amd__3fooRT0
+foo::operator%=(foo &)
+foo::operator%=
+#
+--format=gnu --no-params
+__ami__3fooRT0
+foo::operator-=(foo &)
+foo::operator-=
+#
+--format=gnu --no-params
+__aml__3FixRT0
+Fix::operator*=(Fix &)
+Fix::operator*=
+#
+--format=gnu --no-params
+__aml__5Fix16i
+Fix16::operator*=(int)
+Fix16::operator*=
+#
+--format=gnu --no-params
+__aml__5Fix32RT0
+Fix32::operator*=(Fix32 &)
+Fix32::operator*=
+#
+--format=gnu --no-params
+__aor__3fooRT0
+foo::operator|=(foo &)
+foo::operator|=
+#
+--format=gnu --no-params
+__apl__3fooRT0
+foo::operator+=(foo &)
+foo::operator+=
+#
+--format=gnu --no-params
+__ars__3fooRT0
+foo::operator>>=(foo &)
+foo::operator>>=
+#
+--format=gnu --no-params
+__as__3fooRT0
+foo::operator=(foo &)
+foo::operator=
+#
+--format=gnu --no-params
+__cl__3fooRT0
+foo::operator()(foo &)
+foo::operator()
+#
+--format=gnu --no-params
+__cl__6Normal
+Normal::operator()(void)
+Normal::operator()
+#
+--format=gnu --no-params
+__cl__6Stringii
+String::operator()(int, int)
+String::operator()
+#
+--format=gnu --no-params
+__cm__3fooRT0
+foo::operator, (foo &)
+foo::operator,
+#
+--format=gnu --no-params
+__co__3foo
+foo::operator~(void)
+foo::operator~
+#
+--format=gnu --no-params
+__dl__3fooPv
+foo::operator delete(void *)
+foo::operator delete
+#
+--format=gnu --no-params
+__dv__3fooRT0
+foo::operator/(foo &)
+foo::operator/
+#
+--format=gnu --no-params
+__eq__3fooRT0
+foo::operator==(foo &)
+foo::operator==
+#
+--format=gnu --no-params
+__er__3fooRT0
+foo::operator^(foo &)
+foo::operator^
+#
+--format=gnu --no-params
+__ge__3fooRT0
+foo::operator>=(foo &)
+foo::operator>=
+#
+--format=gnu --no-params
+__gt__3fooRT0
+foo::operator>(foo &)
+foo::operator>
+#
+--format=gnu --no-params
+__le__3fooRT0
+foo::operator<=(foo &)
+foo::operator<=
+#
+--format=gnu --no-params
+__ls__3fooRT0
+foo::operator<<(foo &)
+foo::operator<<
+#
+--format=gnu --no-params
+__ls__FR7ostreamPFR3ios_R3ios
+operator<<(ostream &, ios &(*)(ios &))
+operator<<
+#
+--format=gnu --no-params
+__ls__FR7ostreamR3Fix
+operator<<(ostream &, Fix &)
+operator<<
+#
+--format=gnu --no-params
+__lt__3fooRT0
+foo::operator<(foo &)
+foo::operator<
+#
+--format=gnu --no-params
+__md__3fooRT0
+foo::operator%(foo &)
+foo::operator%
+#
+--format=gnu --no-params
+__mi__3fooRT0
+foo::operator-(foo &)
+foo::operator-
+#
+--format=gnu --no-params
+__ml__3fooRT0
+foo::operator*(foo &)
+foo::operator*
+#
+--format=gnu --no-params
+__mm__3fooi
+foo::operator--(int)
+foo::operator--
+#
+--format=gnu --no-params
+__ne__3fooRT0
+foo::operator!=(foo &)
+foo::operator!=
+#
+--format=gnu --no-params
+__nt__3foo
+foo::operator!(void)
+foo::operator!
+#
+--format=gnu --no-params
+__nw__3fooi
+foo::operator new(int)
+foo::operator new
+#
+--format=gnu --no-params
+__oo__3fooRT0
+foo::operator||(foo &)
+foo::operator||
+#
+--format=gnu --no-params
+__opPc__3foo
+foo::operator char *(void)
+foo::operator char *
+#
+--format=gnu --no-params
+__opi__3foo
+foo::operator int(void)
+foo::operator int
+#
+--format=gnu --no-params
+__or__3fooRT0
+foo::operator|(foo &)
+foo::operator|
+#
+--format=gnu --no-params
+__pl__3fooRT0
+foo::operator+(foo &)
+foo::operator+
+#
+--format=gnu --no-params
+__pp__3fooi
+foo::operator++(int)
+foo::operator++
+#
+--format=gnu --no-params
+__rf__3foo
+foo::operator->(void)
+foo::operator->
+#
+--format=gnu --no-params
+__rm__3fooRT0
+foo::operator->*(foo &)
+foo::operator->*
+#
+--format=gnu --no-params
+__rs__3fooRT0
+foo::operator>>(foo &)
+foo::operator>>
+#
+--format=gnu --no-params
+_new_Fix__FUs
+_new_Fix(unsigned short)
+_new_Fix
+#
+--format=gnu --no-params
+_vt.foo
+foo virtual table
+foo virtual table
+#
+--format=gnu --no-params
+_vt.foo.bar
+foo::bar virtual table
+foo::bar virtual table
+#
+--format=gnu --no-params
+_vt$foo
+foo virtual table
+foo virtual table
+#
+--format=gnu --no-params
+_vt$foo$bar
+foo::bar virtual table
+foo::bar virtual table
+#
+--format=gnu --no-params
+append__7ivGlyphPT0
+ivGlyph::append(ivGlyph *)
+ivGlyph::append
+#
+--format=gnu --no-params
+clearok__FP7_win_sti
+clearok(_win_st *, int)
+clearok
+#
+--format=gnu --no-params
+complexfunc2__FPFPc_i
+complexfunc2(int (*)(char *))
+complexfunc2
+#
+--format=gnu --no-params
+complexfunc3__FPFPFPl_s_i
+complexfunc3(int (*)(short (*)(long *)))
+complexfunc3
+#
+--format=gnu --no-params
+complexfunc4__FPFPFPc_s_i
+complexfunc4(int (*)(short (*)(char *)))
+complexfunc4
+#
+--format=gnu --no-params
+complexfunc5__FPFPc_PFl_i
+complexfunc5(int (*(*)(char *))(long))
+complexfunc5
+#
+--format=gnu --no-params
+complexfunc6__FPFPi_PFl_i
+complexfunc6(int (*(*)(int *))(long))
+complexfunc6
+#
+--format=gnu --no-params
+complexfunc7__FPFPFPc_i_PFl_i
+complexfunc7(int (*(*)(int (*)(char *)))(long))
+complexfunc7
+#
+--format=gnu --no-params
+foo__FiN30
+foo(int, int, int, int)
+foo
+#
+--format=gnu --no-params
+foo__FiR3fooiT1iT1
+foo(int, foo &, int, foo &, int, foo &)
+foo
+#
+--format=gnu --no-params
+foo___3barl
+bar::foo_(long)
+bar::foo_
+#
+--format=gnu --no-params
+insert__15ivClippingStacklRP8_XRegion
+ivClippingStack::insert(long, _XRegion *&)
+ivClippingStack::insert
+#
+--format=gnu --no-params
+insert__16ChooserInfo_ListlR11ChooserInfo
+ChooserInfo_List::insert(long, ChooserInfo &)
+ChooserInfo_List::insert
+#
+--format=gnu --no-params
+insert__17FontFamilyRepListlRP15ivFontFamilyRep
+FontFamilyRepList::insert(long, ivFontFamilyRep *&)
+FontFamilyRepList::insert
+#
+--format=gnu --no-params
+leaveok__FP7_win_stc
+leaveok(_win_st *, char)
+leaveok
+#
+--format=gnu --no-params
+left_mover__C7ivMFKitP12ivAdjustableP7ivStyle
+ivMFKit::left_mover(ivAdjustable *, ivStyle *) const
+ivMFKit::left_mover
+#
+--format=gnu --no-params
+overload1arg__FSc
+overload1arg(signed char)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__FUc
+overload1arg(unsigned char)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__FUi
+overload1arg(unsigned int)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__FUl
+overload1arg(unsigned long)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__FUs
+overload1arg(unsigned short)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Fc
+overload1arg(char)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Fd
+overload1arg(double)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Ff
+overload1arg(float)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Fi
+overload1arg(int)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Fl
+overload1arg(long)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Fs
+overload1arg(short)
+overload1arg
+#
+--format=gnu --no-params
+overload1arg__Fv
+overload1arg(void)
+overload1arg
+#
+--format=gnu --no-params
+overloadargs__Fi
+overloadargs(int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fii
+overloadargs(int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiii
+overloadargs(int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiii
+overloadargs(int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiii
+overloadargs(int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiiii
+overloadargs(int, int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiiiii
+overloadargs(int, int, int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiiiiii
+overloadargs(int, int, int, int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiiiiiii
+overloadargs(int, int, int, int, int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiiiiiiii
+overloadargs(int, int, int, int, int, int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+overloadargs__Fiiiiiiiiiii
+overloadargs(int, int, int, int, int, int, int, int, int, int, int)
+overloadargs
+#
+--format=gnu --no-params
+poke__8ivRasterUlUlffff
+ivRaster::poke(unsigned long, unsigned long, float, float, float, float)
+ivRaster::poke
+#
+--format=gnu --no-params
+polar__Fdd
+polar(double, double)
+polar
+#
+--format=gnu --no-params
+scale__13ivTransformerff
+ivTransformer::scale(float, float)
+ivTransformer::scale
+#
+--format=gnu --no-params
+sgetn__7filebufPci
+filebuf::sgetn(char *, int)
+filebuf::sgetn
+#
+--format=gnu --no-params
+shift__FP5_FrepiT0
+shift(_Frep *, int, _Frep *)
+shift
+#
+--format=gnu --no-params
+test__C6BitSeti
+BitSet::test(int) const
+BitSet::test
+#
+--format=gnu --no-params
+test__C6BitSetii
+BitSet::test(int, int) const
+BitSet::test
+#
+--format=gnu --no-params
+text_source__8Documentl
+Document::text_source(long)
+Document::text_source
+#
+--format=gnu --no-params
+variance__6Erlangd
+Erlang::variance(double)
+Erlang::variance
+#
+--format=gnu --no-params
+view__14DocumentViewerP8ItemViewP11TabularItem
+DocumentViewer::view(ItemView *, TabularItem *)
+DocumentViewer::view
+#
+--format=gnu --no-params
+xy_extents__11ivExtensionffff
+ivExtension::xy_extents(float, float, float, float)
+ivExtension::xy_extents
+#
+--format=gnu --no-params
+zero__8osMemoryPvUi
+osMemory::zero(void *, unsigned int)
+osMemory::zero
+#
+--format=gnu --no-params
+_2T4$N
+T4::N
+T4::N
+#
+--format=gnu --no-params
+_Q22T42t1$N
+T4::t1::N
+T4::t1::N
+#
+--format=gnu --no-params
+get__2T1
+T1::get(void)
+T1::get
+#
+--format=gnu --no-params
+get__Q22T11a
+T1::a::get(void)
+T1::a::get
+#
+--format=gnu --no-params
+get__Q32T11a1b
+T1::a::b::get(void)
+T1::a::b::get
+#
+--format=gnu --no-params
+get__Q42T11a1b1c
+T1::a::b::c::get(void)
+T1::a::b::c::get
+#
+--format=gnu --no-params
+get__Q52T11a1b1c1d
+T1::a::b::c::d::get(void)
+T1::a::b::c::d::get
+#
+--format=gnu --no-params
+put__2T1i
+T1::put(int)
+T1::put
+#
+--format=gnu --no-params
+put__Q22T11ai
+T1::a::put(int)
+T1::a::put
+#
+--format=gnu --no-params
+put__Q32T11a1bi
+T1::a::b::put(int)
+T1::a::b::put
+#
+--format=gnu --no-params
+put__Q42T11a1b1ci
+T1::a::b::c::put(int)
+T1::a::b::c::put
+#
+--format=gnu --no-params
+put__Q52T11a1b1c1di
+T1::a::b::c::d::put(int)
+T1::a::b::c::d::put
+#
+--format=gnu --no-params
+bar__3fooPv
+foo::bar(void *)
+foo::bar
+#
+--format=gnu --no-params
+bar__C3fooPv
+foo::bar(void *) const
+foo::bar
+#
+--format=gnu --no-params
+__eq__3fooRT0
+foo::operator==(foo &)
+foo::operator==
+#
+--format=gnu --no-params
+__eq__C3fooR3foo
+foo::operator==(foo &) const
+foo::operator==
+#
+--format=gnu --no-params
+elem__t6vector1Zdi
+vector::elem(int)
+vector::elem
+#
+--format=gnu --no-params
+elem__t6vector1Zii
+vector::elem(int)
+vector::elem
+#
+--format=gnu --no-params
+__t6vector1Zdi
+vector::vector(int)
+vector::vector
+#
+--format=gnu --no-params
+__t6vector1Zii
+vector::vector(int)
+vector::vector
+#
+--format=gnu --no-params
+_$_t6vector1Zdi
+vector::~vector(int)
+vector::~vector
+#
+--format=gnu --no-params
+_$_t6vector1Zii
+vector::~vector(int)
+vector::~vector
+#
+--format=gnu --no-params
+__nw__t2T11ZcUi
+T1::operator new(unsigned int)
+T1::operator new
+#
+--format=gnu --no-params
+__nw__t2T11Z1tUi
+T1::operator new(unsigned int)
+T1::operator new
+#
+--format=gnu --no-params
+__dl__t2T11ZcPv
+T1::operator delete(void *)
+T1::operator delete
+#
+--format=gnu --no-params
+__dl__t2T11Z1tPv
+T1::operator delete(void *)
+T1::operator delete
+#
+--format=gnu --no-params
+__t2T11Zci
+T1::T1(int)
+T1::T1
+#
+--format=gnu --no-params
+__t2T11Zc
+T1::T1(void)
+T1::T1
+#
+--format=gnu --no-params
+__t2T11Z1ti
+T1::T1(int)
+T1::T1
+#
+--format=gnu --no-params
+__t2T11Z1t
+T1::T1(void)
+T1::T1
+#
+--format=gnu --no-params
+__Q2t4List1Z10VHDLEntity3Pix
+List::Pix::Pix(void)
+List::Pix::Pix
+#
+--format=gnu --no-params
+__Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element
+List::Pix::Pix(List::element *)
+List::Pix::Pix
+#
+--format=gnu --no-params
+__Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix
+List::Pix::Pix(List::Pix const &)
+List::Pix::Pix
+#
+--format=gnu --no-params
+__Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0
+List::element::element(VHDLEntity const &, List::element *)
+List::element::element
+#
+--format=gnu --no-params
+__Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element
+List::element::element(List::element const &)
+List::element::element
+#
+--format=gnu --no-params
+__cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+VHDLLibrary::operator()(PixX >) const
+VHDLLibrary::operator()
+#
+--format=gnu --no-params
+__cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix
+List::operator()(List::Pix const &) const
+List::operator()
+#
+--format=gnu --no-params
+__ne__FPvRCQ2t4List1Z10VHDLEntity3Pix
+operator!=(void *, List::Pix const &)
+operator!=
+#
+--format=gnu --no-params
+__ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+operator!=(void *, PixX > const &)
+operator!=
+#
+--format=gnu --no-params
+__t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity
+List::List(List const &)
+List::List
+#
+--format=gnu --no-params
+__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PixX >::PixX(void)
+PixX >::PixX
+#
+--format=gnu --no-params
+__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix
+PixX >::PixX(VHDLLibraryRep *, List::Pix)
+PixX >::PixX
+#
+--format=gnu --no-params
+__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+PixX >::PixX(PixX > const &)
+PixX >::PixX
+#
+--format=gnu --no-params
+nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
+VHDLLibrary::nextE(PixX > &) const
+VHDLLibrary::nextE
+#
+--format=gnu --no-params
+next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix
+List::next(List::Pix &) const
+List::next
+#
+--format=gnu --no-params
+_GLOBAL_$D$set
+global destructors keyed to set
+global destructors keyed to set
+#
+--format=gnu --no-params
+_GLOBAL_$I$set
+global constructors keyed to set
+global constructors keyed to set
+#
+--format=gnu --no-params
+__as__t5ListS1ZUiRCt5ListS1ZUi
+ListS::operator=(ListS const &)
+ListS::operator=
+#
+--format=gnu --no-params
+__cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix
+ListS::operator()(ListS::Vix const &) const
+ListS::operator()
+#
+--format=gnu --no-params
+__cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix
+SetLS::operator()(SetLS::Vix const &) const
+SetLS::operator()
+#
+--format=gnu --no-params
+__t10ListS_link1ZUiRCUiPT0
+ListS_link::ListS_link(unsigned int const &, ListS_link *)
+ListS_link::ListS_link
+#
+--format=gnu --no-params
+__t10ListS_link1ZUiRCt10ListS_link1ZUi
+ListS_link::ListS_link(ListS_link const &)
+ListS_link::ListS_link
+#
+--format=gnu --no-params
+__t5ListS1ZUiRCt5ListS1ZUi
+ListS::ListS(ListS const &)
+ListS::ListS
+#
+--format=gnu --no-params
+next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix
+ListS::next(ListS::Vix &) const
+ListS::next
+#
+--format=gnu --no-params
+__ne__FPvRCQ2t5SetLS1ZUi3Vix
+operator!=(void *, SetLS::Vix const &)
+operator!=
+#
+--format=gnu --no-params
+__t8ListElem1Z5LabelRt4List1Z5Label
+ListElem