merge from gcc

This commit is contained in:
DJ Delorie 2007-01-30 23:16:58 +00:00
parent 71f2e6f41f
commit 208c16740c
5 changed files with 530 additions and 322 deletions

View File

@ -1,3 +1,9 @@
2007-01-29 Simon Baldwin <simonb@google.com>
* demangle.h: New cplus_demangle_print_callback,
cplus_demangle_v3_callback, and java_demangle_v3_callback function
prototypes, and demangle_callbackref type definition.
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831

View File

@ -1,6 +1,6 @@
/* Defs for interface to demanglers.
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002,
2003, 2004 Free Software Foundation, Inc.
2003, 2004, 2005, 2007 Free Software Foundation, Inc.
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
@ -131,13 +131,25 @@ cplus_demangle_set_style (enum demangling_styles style);
extern enum demangling_styles
cplus_demangle_name_to_style (const char *name);
/* V3 ABI demangling entry points, defined in cp-demangle.c. */
extern char*
cplus_demangle_v3 (const char* mangled, int options);
/* Callback typedef for allocation-less demangler interfaces. */
typedef void (*demangle_callbackref) (const char *, size_t, void *);
/* V3 ABI demangling entry points, defined in cp-demangle.c. Callback
variants return non-zero on success, zero on error. char* variants
return a string allocated by malloc on success, NULL on error. */
extern int
cplus_demangle_v3_callback (const char *mangled, int options,
demangle_callbackref callback, void *opaque);
extern char*
java_demangle_v3 (const char* mangled);
cplus_demangle_v3 (const char *mangled, int options);
extern int
java_demangle_v3_callback (const char *mangled,
demangle_callbackref callback, void *opaque);
extern char*
java_demangle_v3 (const char *mangled);
enum gnu_v3_ctor_kinds {
gnu_v3_complete_object_ctor = 1,
@ -529,6 +541,25 @@ cplus_demangle_print (int options,
int estimated_length,
size_t *p_allocated_size);
/* This function takes a struct demangle_component tree and passes back
a demangled string in one or more calls to a callback function.
The first argument is DMGL_* options. The second is the tree to
demangle. The third is a pointer to a callback function; on each call
this receives an element of the demangled string, its length, and an
opaque value. The fourth is the opaque value passed to the callback.
The callback is called once or more to return the full demangled
string. The demangled element string is always nul-terminated, though
its length is also provided for convenience. In contrast to
cplus_demangle_print(), this function does not allocate heap memory
to grow output strings (except perhaps where alloca() is implemented
by malloc()), and so is normally safe for use where the heap has been
corrupted. On success, this function returns 1; on failure, 0. */
extern int
cplus_demangle_print_callback (int options,
const struct demangle_component *tree,
demangle_callbackref callback, void *opaque);
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@ -3,6 +3,44 @@
* strsignal.c (psignal): Change type of signo to int.
* functions.texi: Regenerate.
2007-01-29 Simon Baldwin <simonb@google.com>
* cp-demangle.h (cplus_demangle_operators): External definition
suppressed if not building for libstdc++.
* cp-demangle.c (__gcclibcxx_demangle_callback): Augmented interface
to demangling, provides a malloc-less version of __cxa_demangle.
(cplus_demangle_print_callback): Public callback version of
cplus_demangle_print.
(struct d_growable_string): New growable string structure.
(d_growable_string_init): New function, provides support for
growable strings separate from print info.
(d_growable_string_resize): Likewise.
(d_growable_string_append_buffer): Likewise.
(d_growable_string_callback_adapter):): Likewise.
(d_print_init): New print info initialization function.
(d_print_error): Macro replace by inline function.
(d_print_saw_error): Likewise.
(d_append_char): Likewise.
(d_append_buffer): Likewise.
(d_append_string): New inline function, replaces the
d_append_string_constant macro.
(d_flush_buffer): New function, flushes buffer to callback.
(d_demangle_callback, is_ctor_or_dtor): Malloc-based fallback
for unsupported dynamic arrays replaced by alloca().
(d_demangle): Return string length estimating removed.
(d_dump): Moved error case handling from call site into function.
(d_print_resize): Function removed.
(d_print_append_char): Likewise.
(d_print_append_buffer): Likewise.
(d_print_error): Likewise.
(d_print_comp): Added special case handling for Java arrays.
(java_demangle_v3): Removed string post-processing for Java arrays,
now replaced by special case handling in d_print_comp.
(cplus_demangle_v3_callback): Augmented interface to demangling,
provides a malloc-less version of cplus_demangle_v3.
(java_demangle_v3_callback): Augmented interface to demangling,
provides a malloc-less version of java_demangle_v3.
2007-01-12 Ben Elliston <bje@au.ibm.com>
* pex-unix.c (writeerr): Cast write result to void.

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/* Internal demangler interface for g++ V3 ABI.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@wasabisystems.com>.
This file is part of the libiberty library, which is part of GCC.
@ -143,8 +143,9 @@ struct d_info
#define CP_STATIC_IF_GLIBCPP_V3 extern
#endif
CP_STATIC_IF_GLIBCPP_V3
const struct demangle_operator_info cplus_demangle_operators[];
#ifndef IN_GLIBCPP_V3
extern const struct demangle_operator_info cplus_demangle_operators[];
#endif
#define D_BUILTIN_TYPE_COUNT (26)