Rizin
unix-like reverse engineering framework and cli tools
demangle.h File Reference
#include "libiberty.h"

Go to the source code of this file.

Classes

struct  demangler_engine
 
struct  demangle_component
 

Macros

#define DMGL_NO_OPTS   0 /* For readability... */
 
#define DMGL_PARAMS   (1 << 0) /* Include function args */
 
#define DMGL_ANSI   (1 << 1) /* Include const, volatile, etc */
 
#define DMGL_JAVA   (1 << 2) /* Demangle as Java rather than C++. */
 
#define DMGL_VERBOSE   (1 << 3) /* Include implementation details. */
 
#define DMGL_TYPES   (1 << 4) /* Also try to demangle type encodings. */
 
#define DMGL_RET_POSTFIX
 
#define DMGL_RET_DROP
 
#define DMGL_AUTO   (1 << 8)
 
#define DMGL_GNU   (1 << 9)
 
#define DMGL_LUCID   (1 << 10)
 
#define DMGL_ARM   (1 << 11)
 
#define DMGL_HP
 
#define DMGL_EDG   (1 << 13)
 
#define DMGL_GNU_V3   (1 << 14)
 
#define DMGL_GNAT   (1 << 15)
 
#define DMGL_DLANG   (1 << 16)
 
#define DMGL_RUST   (1 << 17) /* Rust wraps GNU_V3 style mangling. */
 
#define DMGL_STYLE_MASK   (DMGL_AUTO | DMGL_GNU | DMGL_LUCID | DMGL_ARM | DMGL_HP | DMGL_EDG | DMGL_GNU_V3 | DMGL_JAVA | DMGL_GNAT | DMGL_DLANG | DMGL_RUST)
 
#define NO_DEMANGLING_STYLE_STRING   "none"
 
#define AUTO_DEMANGLING_STYLE_STRING   "auto"
 
#define GNU_DEMANGLING_STYLE_STRING   "gnu"
 
#define LUCID_DEMANGLING_STYLE_STRING   "lucid"
 
#define ARM_DEMANGLING_STYLE_STRING   "arm"
 
#define HP_DEMANGLING_STYLE_STRING   "hp"
 
#define EDG_DEMANGLING_STYLE_STRING   "edg"
 
#define GNU_V3_DEMANGLING_STYLE_STRING   "gnu-v3"
 
#define JAVA_DEMANGLING_STYLE_STRING   "java"
 
#define GNAT_DEMANGLING_STYLE_STRING   "gnat"
 
#define DLANG_DEMANGLING_STYLE_STRING   "dlang"
 
#define RUST_DEMANGLING_STYLE_STRING   "rust"
 
#define CURRENT_DEMANGLING_STYLE   current_demangling_style
 
#define AUTO_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_AUTO)
 
#define GNU_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_GNU)
 
#define LUCID_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_LUCID)
 
#define ARM_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_ARM)
 
#define HP_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_HP)
 
#define EDG_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_EDG)
 
#define GNU_V3_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_GNU_V3)
 
#define JAVA_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_JAVA)
 
#define GNAT_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_GNAT)
 
#define DLANG_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_DLANG)
 
#define RUST_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_RUST)
 

Typedefs

typedef void(* demangle_callbackref) (const char *, size_t, void *)
 

Enumerations

enum  demangling_styles {
  no_demangling = -1 , unknown_demangling = 0 , auto_demangling = DMGL_AUTO , gnu_demangling = DMGL_GNU ,
  lucid_demangling = DMGL_LUCID , arm_demangling = DMGL_ARM , hp_demangling = DMGL_HP , edg_demangling = DMGL_EDG ,
  gnu_v3_demangling = DMGL_GNU_V3 , java_demangling = DMGL_JAVA , gnat_demangling = DMGL_GNAT , dlang_demangling = DMGL_DLANG ,
  rust_demangling = DMGL_RUST
}
 
enum  gnu_v3_ctor_kinds {
  gnu_v3_complete_object_ctor = 1 , gnu_v3_base_object_ctor , gnu_v3_complete_object_allocating_ctor , gnu_v3_unified_ctor ,
  gnu_v3_object_ctor_group
}
 
enum  gnu_v3_dtor_kinds {
  gnu_v3_deleting_dtor = 1 , gnu_v3_complete_object_dtor , gnu_v3_base_object_dtor , gnu_v3_unified_dtor ,
  gnu_v3_object_dtor_group
}
 
enum  demangle_component_type {
  DEMANGLE_COMPONENT_NAME , DEMANGLE_COMPONENT_QUAL_NAME , DEMANGLE_COMPONENT_LOCAL_NAME , DEMANGLE_COMPONENT_TYPED_NAME ,
  DEMANGLE_COMPONENT_TEMPLATE , DEMANGLE_COMPONENT_TEMPLATE_PARAM , DEMANGLE_COMPONENT_FUNCTION_PARAM , DEMANGLE_COMPONENT_CTOR ,
  DEMANGLE_COMPONENT_DTOR , DEMANGLE_COMPONENT_VTABLE , DEMANGLE_COMPONENT_VTT , DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE ,
  DEMANGLE_COMPONENT_TYPEINFO , DEMANGLE_COMPONENT_TYPEINFO_NAME , DEMANGLE_COMPONENT_TYPEINFO_FN , DEMANGLE_COMPONENT_THUNK ,
  DEMANGLE_COMPONENT_VIRTUAL_THUNK , DEMANGLE_COMPONENT_COVARIANT_THUNK , DEMANGLE_COMPONENT_JAVA_CLASS , DEMANGLE_COMPONENT_GUARD ,
  DEMANGLE_COMPONENT_TLS_INIT , DEMANGLE_COMPONENT_TLS_WRAPPER , DEMANGLE_COMPONENT_REFTEMP , DEMANGLE_COMPONENT_HIDDEN_ALIAS ,
  DEMANGLE_COMPONENT_SUB_STD , DEMANGLE_COMPONENT_RESTRICT , DEMANGLE_COMPONENT_VOLATILE , DEMANGLE_COMPONENT_CONST ,
  DEMANGLE_COMPONENT_RESTRICT_THIS , DEMANGLE_COMPONENT_VOLATILE_THIS , DEMANGLE_COMPONENT_CONST_THIS , DEMANGLE_COMPONENT_REFERENCE_THIS ,
  DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS , DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL , DEMANGLE_COMPONENT_POINTER , DEMANGLE_COMPONENT_REFERENCE ,
  DEMANGLE_COMPONENT_RVALUE_REFERENCE , DEMANGLE_COMPONENT_COMPLEX , DEMANGLE_COMPONENT_IMAGINARY , DEMANGLE_COMPONENT_BUILTIN_TYPE ,
  DEMANGLE_COMPONENT_VENDOR_TYPE , DEMANGLE_COMPONENT_FUNCTION_TYPE , DEMANGLE_COMPONENT_ARRAY_TYPE , DEMANGLE_COMPONENT_PTRMEM_TYPE ,
  DEMANGLE_COMPONENT_FIXED_TYPE , DEMANGLE_COMPONENT_VECTOR_TYPE , DEMANGLE_COMPONENT_ARGLIST , DEMANGLE_COMPONENT_TEMPLATE_ARGLIST ,
  DEMANGLE_COMPONENT_TPARM_OBJ , DEMANGLE_COMPONENT_INITIALIZER_LIST , DEMANGLE_COMPONENT_OPERATOR , DEMANGLE_COMPONENT_EXTENDED_OPERATOR ,
  DEMANGLE_COMPONENT_CAST , DEMANGLE_COMPONENT_CONVERSION , DEMANGLE_COMPONENT_NULLARY , DEMANGLE_COMPONENT_UNARY ,
  DEMANGLE_COMPONENT_BINARY , DEMANGLE_COMPONENT_BINARY_ARGS , DEMANGLE_COMPONENT_TRINARY , DEMANGLE_COMPONENT_TRINARY_ARG1 ,
  DEMANGLE_COMPONENT_TRINARY_ARG2 , DEMANGLE_COMPONENT_LITERAL , DEMANGLE_COMPONENT_LITERAL_NEG , DEMANGLE_COMPONENT_JAVA_RESOURCE ,
  DEMANGLE_COMPONENT_COMPOUND_NAME , DEMANGLE_COMPONENT_CHARACTER , DEMANGLE_COMPONENT_NUMBER , DEMANGLE_COMPONENT_DECLTYPE ,
  DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS , DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS , DEMANGLE_COMPONENT_LAMBDA , DEMANGLE_COMPONENT_DEFAULT_ARG ,
  DEMANGLE_COMPONENT_UNNAMED_TYPE , DEMANGLE_COMPONENT_TRANSACTION_CLONE , DEMANGLE_COMPONENT_NONTRANSACTION_CLONE , DEMANGLE_COMPONENT_PACK_EXPANSION ,
  DEMANGLE_COMPONENT_TAGGED_NAME , DEMANGLE_COMPONENT_TRANSACTION_SAFE , DEMANGLE_COMPONENT_CLONE , DEMANGLE_COMPONENT_NOEXCEPT ,
  DEMANGLE_COMPONENT_THROW_SPEC
}
 

Functions

char * cplus_demangle (const char *mangled, int options)
 
int cplus_demangle_opname (const char *opname, char *result, int options)
 
const char * cplus_mangle_opname (const char *opname, int options)
 
void set_cplus_marker_for_demangling (int ch)
 
enum demangling_styles cplus_demangle_set_style (enum demangling_styles style)
 
enum demangling_styles cplus_demangle_name_to_style (const char *name)
 
int cplus_demangle_v3_callback (const char *mangled, int options, demangle_callbackref callback, void *opaque)
 
char * cplus_demangle_v3 (const char *mangled, int options)
 
int java_demangle_v3_callback (const char *mangled, demangle_callbackref callback, void *opaque)
 
char * java_demangle_v3 (const char *mangled)
 
char * ada_demangle (const char *mangled, int options)
 
char * dlang_demangle (const char *mangled, int options)
 
int rust_is_mangled (const char *mangled)
 
void rust_demangle_sym (char *sym)
 
char * rust_demangle (const char *mangled, int options)
 
enum gnu_v3_ctor_kinds is_gnu_v3_mangled_ctor (const char *name)
 
enum gnu_v3_dtor_kinds is_gnu_v3_mangled_dtor (const char *name)
 
int cplus_demangle_fill_component (struct demangle_component *fill, enum demangle_component_type, struct demangle_component *left, struct demangle_component *right)
 
int cplus_demangle_fill_name (struct demangle_component *fill, const char *, int)
 
int cplus_demangle_fill_builtin_type (struct demangle_component *fill, const char *type_name)
 
int cplus_demangle_fill_operator (struct demangle_component *fill, const char *opname, int args)
 
int cplus_demangle_fill_extended_operator (struct demangle_component *fill, int numargs, struct demangle_component *nm)
 
int cplus_demangle_fill_ctor (struct demangle_component *fill, enum gnu_v3_ctor_kinds kind, struct demangle_component *name)
 
int cplus_demangle_fill_dtor (struct demangle_component *fill, enum gnu_v3_dtor_kinds kind, struct demangle_component *name)
 
struct demangle_componentcplus_demangle_v3_components (const char *mangled, int options, void **mem)
 
char * cplus_demangle_print (int options, struct demangle_component *tree, int estimated_length, size_t *p_allocated_size)
 
int cplus_demangle_print_callback (int options, struct demangle_component *tree, demangle_callbackref callback, void *opaque)
 

Variables

enum demangling_styles current_demangling_style
 
const struct demangler_engine libiberty_demanglers []
 

Macro Definition Documentation

◆ ARM_DEMANGLING

#define ARM_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_ARM)

Definition at line 110 of file demangle.h.

◆ ARM_DEMANGLING_STYLE_STRING

#define ARM_DEMANGLING_STYLE_STRING   "arm"

Definition at line 95 of file demangle.h.

◆ AUTO_DEMANGLING

#define AUTO_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_AUTO)

Definition at line 107 of file demangle.h.

◆ AUTO_DEMANGLING_STYLE_STRING

#define AUTO_DEMANGLING_STYLE_STRING   "auto"

Definition at line 92 of file demangle.h.

◆ CURRENT_DEMANGLING_STYLE

#define CURRENT_DEMANGLING_STYLE   current_demangling_style

Definition at line 106 of file demangle.h.

◆ DLANG_DEMANGLING

#define DLANG_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_DLANG)

Definition at line 116 of file demangle.h.

◆ DLANG_DEMANGLING_STYLE_STRING

#define DLANG_DEMANGLING_STYLE_STRING   "dlang"

Definition at line 101 of file demangle.h.

◆ DMGL_ANSI

#define DMGL_ANSI   (1 << 1) /* Include const, volatile, etc */

Definition at line 44 of file demangle.h.

◆ DMGL_ARM

#define DMGL_ARM   (1 << 11)

Definition at line 54 of file demangle.h.

◆ DMGL_AUTO

#define DMGL_AUTO   (1 << 8)

Definition at line 51 of file demangle.h.

◆ DMGL_DLANG

#define DMGL_DLANG   (1 << 16)

Definition at line 59 of file demangle.h.

◆ DMGL_EDG

#define DMGL_EDG   (1 << 13)

Definition at line 56 of file demangle.h.

◆ DMGL_GNAT

#define DMGL_GNAT   (1 << 15)

Definition at line 58 of file demangle.h.

◆ DMGL_GNU

#define DMGL_GNU   (1 << 9)

Definition at line 52 of file demangle.h.

◆ DMGL_GNU_V3

#define DMGL_GNU_V3   (1 << 14)

Definition at line 57 of file demangle.h.

◆ DMGL_HP

#define DMGL_HP
Value:
(1 << 12) /* For the HP aCC compiler; \
same as ARM except for \
template arguments, etc. */

Definition at line 55 of file demangle.h.

◆ DMGL_JAVA

#define DMGL_JAVA   (1 << 2) /* Demangle as Java rather than C++. */

Definition at line 45 of file demangle.h.

◆ DMGL_LUCID

#define DMGL_LUCID   (1 << 10)

Definition at line 53 of file demangle.h.

◆ DMGL_NO_OPTS

#define DMGL_NO_OPTS   0 /* For readability... */

Definition at line 42 of file demangle.h.

◆ DMGL_PARAMS

#define DMGL_PARAMS   (1 << 0) /* Include function args */

Definition at line 43 of file demangle.h.

◆ DMGL_RET_DROP

#define DMGL_RET_DROP
Value:
(1 << 6) /* Suppress printing function return \
types, even if present. It applies \
only to the toplevel function type. \
*/

Definition at line 49 of file demangle.h.

◆ DMGL_RET_POSTFIX

#define DMGL_RET_POSTFIX
Value:
(1 << 5) /* Print function return types (when \
present) after function signature. \
It applies only to the toplevel \
function type. */

Definition at line 48 of file demangle.h.

◆ DMGL_RUST

#define DMGL_RUST   (1 << 17) /* Rust wraps GNU_V3 style mangling. */

Definition at line 60 of file demangle.h.

◆ DMGL_STYLE_MASK

Definition at line 63 of file demangle.h.

◆ DMGL_TYPES

#define DMGL_TYPES   (1 << 4) /* Also try to demangle type encodings. */

Definition at line 47 of file demangle.h.

◆ DMGL_VERBOSE

#define DMGL_VERBOSE   (1 << 3) /* Include implementation details. */

Definition at line 46 of file demangle.h.

◆ EDG_DEMANGLING

#define EDG_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_EDG)

Definition at line 112 of file demangle.h.

◆ EDG_DEMANGLING_STYLE_STRING

#define EDG_DEMANGLING_STYLE_STRING   "edg"

Definition at line 97 of file demangle.h.

◆ GNAT_DEMANGLING

#define GNAT_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_GNAT)

Definition at line 115 of file demangle.h.

◆ GNAT_DEMANGLING_STYLE_STRING

#define GNAT_DEMANGLING_STYLE_STRING   "gnat"

Definition at line 100 of file demangle.h.

◆ GNU_DEMANGLING

#define GNU_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_GNU)

Definition at line 108 of file demangle.h.

◆ GNU_DEMANGLING_STYLE_STRING

#define GNU_DEMANGLING_STYLE_STRING   "gnu"

Definition at line 93 of file demangle.h.

◆ GNU_V3_DEMANGLING

#define GNU_V3_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_GNU_V3)

Definition at line 113 of file demangle.h.

◆ GNU_V3_DEMANGLING_STYLE_STRING

#define GNU_V3_DEMANGLING_STYLE_STRING   "gnu-v3"

Definition at line 98 of file demangle.h.

◆ HP_DEMANGLING

#define HP_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_HP)

Definition at line 111 of file demangle.h.

◆ HP_DEMANGLING_STYLE_STRING

#define HP_DEMANGLING_STYLE_STRING   "hp"

Definition at line 96 of file demangle.h.

◆ JAVA_DEMANGLING

#define JAVA_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_JAVA)

Definition at line 114 of file demangle.h.

◆ JAVA_DEMANGLING_STYLE_STRING

#define JAVA_DEMANGLING_STYLE_STRING   "java"

Definition at line 99 of file demangle.h.

◆ LUCID_DEMANGLING

#define LUCID_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_LUCID)

Definition at line 109 of file demangle.h.

◆ LUCID_DEMANGLING_STYLE_STRING

#define LUCID_DEMANGLING_STYLE_STRING   "lucid"

Definition at line 94 of file demangle.h.

◆ NO_DEMANGLING_STYLE_STRING

#define NO_DEMANGLING_STYLE_STRING   "none"

Definition at line 91 of file demangle.h.

◆ RUST_DEMANGLING

#define RUST_DEMANGLING   (((int)CURRENT_DEMANGLING_STYLE) & DMGL_RUST)

Definition at line 117 of file demangle.h.

◆ RUST_DEMANGLING_STYLE_STRING

#define RUST_DEMANGLING_STYLE_STRING   "rust"

Definition at line 102 of file demangle.h.

Typedef Documentation

◆ demangle_callbackref

typedef void(* demangle_callbackref) (const char *, size_t, void *)

Definition at line 149 of file demangle.h.

Enumeration Type Documentation

◆ demangle_component_type

Enumerator
DEMANGLE_COMPONENT_NAME 
DEMANGLE_COMPONENT_QUAL_NAME 
DEMANGLE_COMPONENT_LOCAL_NAME 
DEMANGLE_COMPONENT_TYPED_NAME 
DEMANGLE_COMPONENT_TEMPLATE 
DEMANGLE_COMPONENT_TEMPLATE_PARAM 
DEMANGLE_COMPONENT_FUNCTION_PARAM 
DEMANGLE_COMPONENT_CTOR 
DEMANGLE_COMPONENT_DTOR 
DEMANGLE_COMPONENT_VTABLE 
DEMANGLE_COMPONENT_VTT 
DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE 
DEMANGLE_COMPONENT_TYPEINFO 
DEMANGLE_COMPONENT_TYPEINFO_NAME 
DEMANGLE_COMPONENT_TYPEINFO_FN 
DEMANGLE_COMPONENT_THUNK 
DEMANGLE_COMPONENT_VIRTUAL_THUNK 
DEMANGLE_COMPONENT_COVARIANT_THUNK 
DEMANGLE_COMPONENT_JAVA_CLASS 
DEMANGLE_COMPONENT_GUARD 
DEMANGLE_COMPONENT_TLS_INIT 
DEMANGLE_COMPONENT_TLS_WRAPPER 
DEMANGLE_COMPONENT_REFTEMP 
DEMANGLE_COMPONENT_HIDDEN_ALIAS 
DEMANGLE_COMPONENT_SUB_STD 
DEMANGLE_COMPONENT_RESTRICT 
DEMANGLE_COMPONENT_VOLATILE 
DEMANGLE_COMPONENT_CONST 
DEMANGLE_COMPONENT_RESTRICT_THIS 
DEMANGLE_COMPONENT_VOLATILE_THIS 
DEMANGLE_COMPONENT_CONST_THIS 
DEMANGLE_COMPONENT_REFERENCE_THIS 
DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS 
DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL 
DEMANGLE_COMPONENT_POINTER 
DEMANGLE_COMPONENT_REFERENCE 
DEMANGLE_COMPONENT_RVALUE_REFERENCE 
DEMANGLE_COMPONENT_COMPLEX 
DEMANGLE_COMPONENT_IMAGINARY 
DEMANGLE_COMPONENT_BUILTIN_TYPE 
DEMANGLE_COMPONENT_VENDOR_TYPE 
DEMANGLE_COMPONENT_FUNCTION_TYPE 
DEMANGLE_COMPONENT_ARRAY_TYPE 
DEMANGLE_COMPONENT_PTRMEM_TYPE 
DEMANGLE_COMPONENT_FIXED_TYPE 
DEMANGLE_COMPONENT_VECTOR_TYPE 
DEMANGLE_COMPONENT_ARGLIST 
DEMANGLE_COMPONENT_TEMPLATE_ARGLIST 
DEMANGLE_COMPONENT_TPARM_OBJ 
DEMANGLE_COMPONENT_INITIALIZER_LIST 
DEMANGLE_COMPONENT_OPERATOR 
DEMANGLE_COMPONENT_EXTENDED_OPERATOR 
DEMANGLE_COMPONENT_CAST 
DEMANGLE_COMPONENT_CONVERSION 
DEMANGLE_COMPONENT_NULLARY 
DEMANGLE_COMPONENT_UNARY 
DEMANGLE_COMPONENT_BINARY 
DEMANGLE_COMPONENT_BINARY_ARGS 
DEMANGLE_COMPONENT_TRINARY 
DEMANGLE_COMPONENT_TRINARY_ARG1 
DEMANGLE_COMPONENT_TRINARY_ARG2 
DEMANGLE_COMPONENT_LITERAL 
DEMANGLE_COMPONENT_LITERAL_NEG 
DEMANGLE_COMPONENT_JAVA_RESOURCE 
DEMANGLE_COMPONENT_COMPOUND_NAME 
DEMANGLE_COMPONENT_CHARACTER 
DEMANGLE_COMPONENT_NUMBER 
DEMANGLE_COMPONENT_DECLTYPE 
DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS 
DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS 
DEMANGLE_COMPONENT_LAMBDA 
DEMANGLE_COMPONENT_DEFAULT_ARG 
DEMANGLE_COMPONENT_UNNAMED_TYPE 
DEMANGLE_COMPONENT_TRANSACTION_CLONE 
DEMANGLE_COMPONENT_NONTRANSACTION_CLONE 
DEMANGLE_COMPONENT_PACK_EXPANSION 
DEMANGLE_COMPONENT_TAGGED_NAME 
DEMANGLE_COMPONENT_TRANSACTION_SAFE 
DEMANGLE_COMPONENT_CLONE 
DEMANGLE_COMPONENT_NOEXCEPT 
DEMANGLE_COMPONENT_THROW_SPEC 

Definition at line 245 of file demangle.h.

253  {
254  /* A name, with a length and a pointer to a string. */
256  /* A qualified name. The left subtree is a class or namespace or
257  some such thing, and the right subtree is a name qualified by
258  that class. */
260  /* A local name. The left subtree describes a function, and the
261  right subtree is a name which is local to that function. */
263  /* A typed name. The left subtree is a name, and the right subtree
264  describes that name as a function. */
266  /* A template. The left subtree is a template name, and the right
267  subtree is a template argument list. */
269  /* A template parameter. This holds a number, which is the template
270  parameter index. */
272  /* A function parameter. This holds a number, which is the index. */
274  /* A constructor. This holds a name and the kind of
275  constructor. */
277  /* A destructor. This holds a name and the kind of destructor. */
279  /* A vtable. This has one subtree, the type for which this is a
280  vtable. */
282  /* A VTT structure. This has one subtree, the type for which this
283  is a VTT. */
285  /* A construction vtable. The left subtree is the type for which
286  this is a vtable, and the right subtree is the derived type for
287  which this vtable is built. */
289  /* A typeinfo structure. This has one subtree, the type for which
290  this is the tpeinfo structure. */
292  /* A typeinfo name. This has one subtree, the type for which this
293  is the typeinfo name. */
295  /* A typeinfo function. This has one subtree, the type for which
296  this is the tpyeinfo function. */
298  /* A thunk. This has one subtree, the name for which this is a
299  thunk. */
301  /* A virtual thunk. This has one subtree, the name for which this
302  is a virtual thunk. */
304  /* A covariant thunk. This has one subtree, the name for which this
305  is a covariant thunk. */
307  /* A Java class. This has one subtree, the type. */
309  /* A guard variable. This has one subtree, the name for which this
310  is a guard variable. */
312  /* The init and wrapper functions for C++11 thread_local variables. */
315  /* A reference temporary. This has one subtree, the name for which
316  this is a temporary. */
318  /* A hidden alias. This has one subtree, the encoding for which it
319  is providing alternative linkage. */
321  /* A standard substitution. This holds the name of the
322  substitution. */
324  /* The restrict qualifier. The one subtree is the type which is
325  being qualified. */
327  /* The volatile qualifier. The one subtree is the type which is
328  being qualified. */
330  /* The const qualifier. The one subtree is the type which is being
331  qualified. */
333  /* The restrict qualifier modifying a member function. The one
334  subtree is the type which is being qualified. */
336  /* The volatile qualifier modifying a member function. The one
337  subtree is the type which is being qualified. */
339  /* The const qualifier modifying a member function. The one subtree
340  is the type which is being qualified. */
342  /* C++11 A reference modifying a member function. The one subtree is the
343  type which is being referenced. */
345  /* C++11: An rvalue reference modifying a member function. The one
346  subtree is the type which is being referenced. */
348  /* A vendor qualifier. The left subtree is the type which is being
349  qualified, and the right subtree is the name of the
350  qualifier. */
352  /* A pointer. The one subtree is the type which is being pointed
353  to. */
355  /* A reference. The one subtree is the type which is being
356  referenced. */
358  /* C++0x: An rvalue reference. The one subtree is the type which is
359  being referenced. */
361  /* A complex type. The one subtree is the base type. */
363  /* An imaginary type. The one subtree is the base type. */
365  /* A builtin type. This holds the builtin type information. */
367  /* A vendor's builtin type. This holds the name of the type. */
369  /* A function type. The left subtree is the return type. The right
370  subtree is a list of ARGLIST nodes. Either or both may be
371  NULL. */
373  /* An array type. The left subtree is the dimension, which may be
374  NULL, or a string (represented as DEMANGLE_COMPONENT_NAME), or an
375  expression. The right subtree is the element type. */
377  /* A pointer to member type. The left subtree is the class type,
378  and the right subtree is the member type. CV-qualifiers appear
379  on the latter. */
381  /* A fixed-point type. */
383  /* A vector type. The left subtree is the number of elements,
384  the right subtree is the element type. */
386  /* An argument list. The left subtree is the current argument, and
387  the right subtree is either NULL or another ARGLIST node. */
389  /* A template argument list. The left subtree is the current
390  template argument, and the right subtree is either NULL or
391  another TEMPLATE_ARGLIST node. */
393  /* A template parameter object (C++20). The left subtree is the
394  corresponding template argument. */
396  /* An initializer list. The left subtree is either an explicit type or
397  NULL, and the right subtree is a DEMANGLE_COMPONENT_ARGLIST. */
399  /* An operator. This holds information about a standard
400  operator. */
402  /* An extended operator. This holds the number of arguments, and
403  the name of the extended operator. */
405  /* A typecast, represented as a unary operator. The one subtree is
406  the type to which the argument should be cast. */
408  /* A conversion operator, represented as a unary operator. The one
409  subtree is the type to which the argument should be converted
410  to. */
412  /* A nullary expression. The left subtree is the operator. */
414  /* A unary expression. The left subtree is the operator, and the
415  right subtree is the single argument. */
417  /* A binary expression. The left subtree is the operator, and the
418  right subtree is a BINARY_ARGS. */
420  /* Arguments to a binary expression. The left subtree is the first
421  argument, and the right subtree is the second argument. */
423  /* A trinary expression. The left subtree is the operator, and the
424  right subtree is a TRINARY_ARG1. */
426  /* Arguments to a trinary expression. The left subtree is the first
427  argument, and the right subtree is a TRINARY_ARG2. */
429  /* More arguments to a trinary expression. The left subtree is the
430  second argument, and the right subtree is the third argument. */
432  /* A literal. The left subtree is the type, and the right subtree
433  is the value, represented as a DEMANGLE_COMPONENT_NAME. */
435  /* A negative literal. Like LITERAL, but the value is negated.
436  This is a minor hack: the NAME used for LITERAL points directly
437  to the mangled string, but since negative numbers are mangled
438  using 'n' instead of '-', we want a way to indicate a negative
439  number which involves neither modifying the mangled string nor
440  allocating a new copy of the literal in memory. */
442  /* A libgcj compiled resource. The left subtree is the name of the
443  resource. */
445  /* A name formed by the concatenation of two parts. The left
446  subtree is the first part and the right subtree the second. */
448  /* A name formed by a single character. */
450  /* A number. */
452  /* A decltype type. */
454  /* Global constructors keyed to name. */
456  /* Global destructors keyed to name. */
458  /* A lambda closure type. */
460  /* A default argument scope. */
462  /* An unnamed type. */
464  /* A transactional clone. This has one subtree, the encoding for
465  which it is providing alternative linkage. */
467  /* A non-transactional clone entry point. In the i386/x86_64 abi,
468  the unmangled symbol of a tm_callable becomes a thunk and the
469  non-transactional function version is mangled thus. */
471  /* A pack expansion. */
473  /* A name with an ABI tag. */
@ DEMANGLE_COMPONENT_UNNAMED_TYPE
Definition: demangle.h:455
@ DEMANGLE_COMPONENT_CTOR
Definition: demangle.h:268
@ DEMANGLE_COMPONENT_TLS_WRAPPER
Definition: demangle.h:306
@ DEMANGLE_COMPONENT_CONST
Definition: demangle.h:324
@ DEMANGLE_COMPONENT_VIRTUAL_THUNK
Definition: demangle.h:295
@ DEMANGLE_COMPONENT_TRINARY_ARG1
Definition: demangle.h:420
@ DEMANGLE_COMPONENT_REFERENCE_THIS
Definition: demangle.h:336
@ DEMANGLE_COMPONENT_TRANSACTION_CLONE
Definition: demangle.h:458
@ DEMANGLE_COMPONENT_LITERAL
Definition: demangle.h:426
@ DEMANGLE_COMPONENT_DTOR
Definition: demangle.h:270
@ DEMANGLE_COMPONENT_ARGLIST
Definition: demangle.h:380
@ DEMANGLE_COMPONENT_RESTRICT_THIS
Definition: demangle.h:327
@ DEMANGLE_COMPONENT_CONVERSION
Definition: demangle.h:403
@ DEMANGLE_COMPONENT_TRINARY
Definition: demangle.h:417
@ DEMANGLE_COMPONENT_EXTENDED_OPERATOR
Definition: demangle.h:396
@ DEMANGLE_COMPONENT_PACK_EXPANSION
Definition: demangle.h:464
@ DEMANGLE_COMPONENT_REFERENCE
Definition: demangle.h:349
@ DEMANGLE_COMPONENT_TPARM_OBJ
Definition: demangle.h:387
@ DEMANGLE_COMPONENT_TEMPLATE_PARAM
Definition: demangle.h:263
@ DEMANGLE_COMPONENT_SUB_STD
Definition: demangle.h:315
@ DEMANGLE_COMPONENT_COMPLEX
Definition: demangle.h:354
@ DEMANGLE_COMPONENT_TYPEINFO_FN
Definition: demangle.h:289
@ DEMANGLE_COMPONENT_NONTRANSACTION_CLONE
Definition: demangle.h:462
@ DEMANGLE_COMPONENT_NAME
Definition: demangle.h:247
@ DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE
Definition: demangle.h:280
@ DEMANGLE_COMPONENT_QUAL_NAME
Definition: demangle.h:251
@ DEMANGLE_COMPONENT_REFTEMP
Definition: demangle.h:309
@ DEMANGLE_COMPONENT_BUILTIN_TYPE
Definition: demangle.h:358
@ DEMANGLE_COMPONENT_NULLARY
Definition: demangle.h:405
@ DEMANGLE_COMPONENT_POINTER
Definition: demangle.h:346
@ DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS
Definition: demangle.h:449
@ DEMANGLE_COMPONENT_DEFAULT_ARG
Definition: demangle.h:453
@ DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS
Definition: demangle.h:339
@ DEMANGLE_COMPONENT_INITIALIZER_LIST
Definition: demangle.h:390
@ DEMANGLE_COMPONENT_PTRMEM_TYPE
Definition: demangle.h:372
@ DEMANGLE_COMPONENT_HIDDEN_ALIAS
Definition: demangle.h:312
@ DEMANGLE_COMPONENT_LOCAL_NAME
Definition: demangle.h:254
@ DEMANGLE_COMPONENT_NUMBER
Definition: demangle.h:443
@ DEMANGLE_COMPONENT_FUNCTION_TYPE
Definition: demangle.h:364
@ DEMANGLE_COMPONENT_VENDOR_TYPE
Definition: demangle.h:360
@ DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL
Definition: demangle.h:343
@ DEMANGLE_COMPONENT_TEMPLATE_ARGLIST
Definition: demangle.h:384
@ DEMANGLE_COMPONENT_RESTRICT
Definition: demangle.h:318
@ DEMANGLE_COMPONENT_LITERAL_NEG
Definition: demangle.h:433
@ DEMANGLE_COMPONENT_VOLATILE_THIS
Definition: demangle.h:330
@ DEMANGLE_COMPONENT_TRINARY_ARG2
Definition: demangle.h:423
@ DEMANGLE_COMPONENT_CAST
Definition: demangle.h:399
@ DEMANGLE_COMPONENT_JAVA_CLASS
Definition: demangle.h:300
@ DEMANGLE_COMPONENT_RVALUE_REFERENCE
Definition: demangle.h:352
@ DEMANGLE_COMPONENT_GUARD
Definition: demangle.h:303
@ DEMANGLE_COMPONENT_ARRAY_TYPE
Definition: demangle.h:368
@ DEMANGLE_COMPONENT_BINARY_ARGS
Definition: demangle.h:414
@ DEMANGLE_COMPONENT_LAMBDA
Definition: demangle.h:451
@ DEMANGLE_COMPONENT_TLS_INIT
Definition: demangle.h:305
@ DEMANGLE_COMPONENT_COVARIANT_THUNK
Definition: demangle.h:298
@ DEMANGLE_COMPONENT_THUNK
Definition: demangle.h:292
@ DEMANGLE_COMPONENT_CONST_THIS
Definition: demangle.h:333
@ DEMANGLE_COMPONENT_DECLTYPE
Definition: demangle.h:445
@ DEMANGLE_COMPONENT_UNARY
Definition: demangle.h:408
@ DEMANGLE_COMPONENT_VECTOR_TYPE
Definition: demangle.h:377
@ DEMANGLE_COMPONENT_COMPOUND_NAME
Definition: demangle.h:439
@ DEMANGLE_COMPONENT_VOLATILE
Definition: demangle.h:321
@ DEMANGLE_COMPONENT_TYPED_NAME
Definition: demangle.h:257
@ DEMANGLE_COMPONENT_CHARACTER
Definition: demangle.h:441
@ DEMANGLE_COMPONENT_OPERATOR
Definition: demangle.h:393
@ DEMANGLE_COMPONENT_TYPEINFO_NAME
Definition: demangle.h:286
@ DEMANGLE_COMPONENT_VTT
Definition: demangle.h:276
@ DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS
Definition: demangle.h:447
@ DEMANGLE_COMPONENT_IMAGINARY
Definition: demangle.h:356
@ DEMANGLE_COMPONENT_JAVA_RESOURCE
Definition: demangle.h:436
@ DEMANGLE_COMPONENT_TEMPLATE
Definition: demangle.h:260
@ DEMANGLE_COMPONENT_VTABLE
Definition: demangle.h:273
@ DEMANGLE_COMPONENT_TYPEINFO
Definition: demangle.h:283
@ DEMANGLE_COMPONENT_FUNCTION_PARAM
Definition: demangle.h:265
@ DEMANGLE_COMPONENT_FIXED_TYPE
Definition: demangle.h:374
@ DEMANGLE_COMPONENT_BINARY
Definition: demangle.h:411

◆ demangling_styles

Enumerator
no_demangling 
unknown_demangling 
auto_demangling 
gnu_demangling 
lucid_demangling 
arm_demangling 
hp_demangling 
edg_demangling 
gnu_v3_demangling 
java_demangling 
gnat_demangling 
dlang_demangling 
rust_demangling 

Definition at line 73 of file demangle.h.

81  {
82  no_demangling = -1,
#define DMGL_ARM
Definition: demangle.h:54
#define DMGL_LUCID
Definition: demangle.h:53
@ arm_demangling
Definition: demangle.h:79
@ auto_demangling
Definition: demangle.h:76
@ lucid_demangling
Definition: demangle.h:78
@ unknown_demangling
Definition: demangle.h:75
@ no_demangling
Definition: demangle.h:74
@ gnu_demangling
Definition: demangle.h:77
#define DMGL_AUTO
Definition: demangle.h:51
#define DMGL_GNU
Definition: demangle.h:52

◆ gnu_v3_ctor_kinds

Enumerator
gnu_v3_complete_object_ctor 
gnu_v3_base_object_ctor 
gnu_v3_complete_object_allocating_ctor 
gnu_v3_unified_ctor 
gnu_v3_object_ctor_group 

Definition at line 195 of file demangle.h.

203  {
@ gnu_v3_complete_object_ctor
Definition: demangle.h:196

◆ gnu_v3_dtor_kinds

Enumerator
gnu_v3_deleting_dtor 
gnu_v3_complete_object_dtor 
gnu_v3_base_object_dtor 
gnu_v3_unified_dtor 
gnu_v3_object_dtor_group 

Definition at line 213 of file demangle.h.

221  {
@ gnu_v3_deleting_dtor
Definition: demangle.h:214

Function Documentation

◆ ada_demangle()

char* ada_demangle ( const char *  mangled,
int  options 
)

◆ cplus_demangle()

char* cplus_demangle ( const char *  mangled,
int  options 
)

◆ cplus_demangle_fill_builtin_type()

int cplus_demangle_fill_builtin_type ( struct demangle_component fill,
const char *  type_name 
)

◆ cplus_demangle_fill_component()

int cplus_demangle_fill_component ( struct demangle_component fill,
enum  demangle_component_type,
struct demangle_component left,
struct demangle_component right 
)

◆ cplus_demangle_fill_ctor()

int cplus_demangle_fill_ctor ( struct demangle_component fill,
enum gnu_v3_ctor_kinds  kind,
struct demangle_component name 
)

Definition at line 871 of file cp-demangle.c.

873  {
874  if (p == NULL || name == NULL || (int)kind < gnu_v3_complete_object_ctor || (int)kind > gnu_v3_object_ctor_group)
875  return 0;
876  p->d_printing = 0;
877  p->type = DEMANGLE_COMPONENT_CTOR;
878  p->u.s_ctor.kind = kind;
879  p->u.s_ctor.name = name;
880  return 1;
881 }
#define NULL
Definition: cris-opc.c:27
@ gnu_v3_object_ctor_group
Definition: demangle.h:203
void * p
Definition: libc.cpp:67
const char * name
Definition: op.c:541
Definition: z80asm.h:102

References DEMANGLE_COMPONENT_CTOR, gnu_v3_complete_object_ctor, gnu_v3_object_ctor_group, demangle_component::kind, name, NULL, and p.

Referenced by d_make_ctor().

◆ cplus_demangle_fill_dtor()

int cplus_demangle_fill_dtor ( struct demangle_component fill,
enum gnu_v3_dtor_kinds  kind,
struct demangle_component name 
)

Definition at line 886 of file cp-demangle.c.

888  {
889  if (p == NULL || name == NULL || (int)kind < gnu_v3_deleting_dtor || (int)kind > gnu_v3_object_dtor_group)
890  return 0;
891  p->d_printing = 0;
892  p->type = DEMANGLE_COMPONENT_DTOR;
893  p->u.s_dtor.kind = kind;
894  p->u.s_dtor.name = name;
895  return 1;
896 }
@ gnu_v3_object_dtor_group
Definition: demangle.h:221

References DEMANGLE_COMPONENT_DTOR, gnu_v3_deleting_dtor, gnu_v3_object_dtor_group, demangle_component::kind, name, NULL, and p.

Referenced by d_make_dtor().

◆ cplus_demangle_fill_extended_operator()

int cplus_demangle_fill_extended_operator ( struct demangle_component fill,
int  numargs,
struct demangle_component nm 
)

Definition at line 857 of file cp-demangle.c.

858  {
859  if (p == NULL || args < 0 || name == NULL)
860  return 0;
861  p->d_printing = 0;
863  p->u.s_extended_operator.args = args;
864  p->u.s_extended_operator.name = name;
865  return 1;
866 }
int args
Definition: mipsasm.c:18

References args, DEMANGLE_COMPONENT_EXTENDED_OPERATOR, name, NULL, and p.

Referenced by d_make_extended_operator().

◆ cplus_demangle_fill_name()

int cplus_demangle_fill_name ( struct demangle_component fill,
const char *  s,
int  len 
)

Definition at line 844 of file cp-demangle.c.

844  {
845  if (p == NULL || s == NULL || len == 0)
846  return 0;
847  p->d_printing = 0;
848  p->type = DEMANGLE_COMPONENT_NAME;
849  p->u.s_name.s = s;
850  p->u.s_name.len = len;
851  return 1;
852 }
size_t len
Definition: 6502dis.c:15
static RzSocket * s
Definition: rtr.c:28

References DEMANGLE_COMPONENT_NAME, len, NULL, p, and s.

Referenced by d_make_name().

◆ cplus_demangle_fill_operator()

int cplus_demangle_fill_operator ( struct demangle_component fill,
const char *  opname,
int  args 
)

◆ cplus_demangle_name_to_style()

enum demangling_styles cplus_demangle_name_to_style ( const char *  name)

◆ cplus_demangle_opname()

int cplus_demangle_opname ( const char *  opname,
char *  result,
int  options 
)

◆ cplus_demangle_print()

char* cplus_demangle_print ( int  options,
struct demangle_component tree,
int  estimated_length,
size_t p_allocated_size 
)

Definition at line 4010 of file cp-demangle.c.

4011  {
4012  struct d_growable_string dgs;
4013 
4014  d_growable_string_init(&dgs, estimate);
4015 
4018  &dgs)) {
4019  free(dgs.buf);
4020  *palc = 0;
4021  return NULL;
4022  }
4023 
4024  *palc = dgs.allocation_failure ? 1 : dgs.alc;
4025  return dgs.buf;
4026 }
CP_STATIC_IF_GLIBCPP_V3 int cplus_demangle_print_callback(int options, struct demangle_component *dc, demangle_callbackref callback, void *opaque)
Definition: cp-demangle.c:3967
static void d_growable_string_callback_adapter(const char *, size_t, void *)
Definition: cp-demangle.c:3720
static void d_growable_string_init(struct d_growable_string *, size_t)
Definition: cp-demangle.c:3658
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
static const char struct stat static buf struct stat static buf static vhangup int options
Definition: sflib.h:145

References d_growable_string::alc, d_growable_string::allocation_failure, d_growable_string::buf, cplus_demangle_print_callback(), d_growable_string_callback_adapter(), d_growable_string_init(), free(), NULL, and options.

◆ cplus_demangle_print_callback()

int cplus_demangle_print_callback ( int  options,
struct demangle_component tree,
demangle_callbackref  callback,
void *  opaque 
)

Definition at line 3967 of file cp-demangle.c.

3969  {
3970  struct d_print_info dpi;
3971 
3972  d_print_init(&dpi, callback, opaque, dc);
3973 
3974  {
3975 #ifdef CP_DYNAMIC_ARRAYS
3976  /* Avoid zero-length VLAs, which are prohibited by the C99 standard
3977  and flagged as errors by Address Sanitizer. */
3978  __extension__ struct d_saved_scope scopes[(dpi.num_saved_scopes > 0)
3979  ? dpi.num_saved_scopes
3980  : 1];
3981  __extension__ struct d_print_template temps[(dpi.num_copy_templates > 0)
3982  ? dpi.num_copy_templates
3983  : 1];
3984 
3985  dpi.saved_scopes = scopes;
3986  dpi.copy_templates = temps;
3987 #else
3988  dpi.saved_scopes = alloca(dpi.num_saved_scopes * sizeof(*dpi.saved_scopes));
3989  dpi.copy_templates = alloca(dpi.num_copy_templates * sizeof(*dpi.copy_templates));
3990 #endif
3991 
3992  d_print_comp(&dpi, options, dc);
3993  }
3994 
3995  d_print_flush(&dpi);
3996 
3997  return !d_print_saw_error(&dpi);
3998 }
static void d_print_flush(struct d_print_info *)
Definition: cp-demangle.c:3914
static void d_print_comp(struct d_print_info *, int, struct demangle_component *)
Definition: cp-demangle.c:5271
static void d_print_init(struct d_print_info *, demangle_callbackref, void *, const struct demangle_component *)
Definition: cp-demangle.c:3866
static int d_print_saw_error(struct d_print_info *)
Definition: cp-demangle.c:3907
char * alloca()
#define __extension__
Definition: ansidecl.h:408
void * opaque
Definition: cp-demangle.c:328
demangle_callbackref callback
Definition: cp-demangle.c:326

References __extension__, alloca(), d_print_info::callback, CP_STATIC_IF_GLIBCPP_V3, d_print_comp(), d_print_flush(), d_print_init(), d_print_saw_error(), and d_print_info::opaque.

Referenced by cplus_demangle_print(), and d_demangle_callback().

◆ cplus_demangle_set_style()

enum demangling_styles cplus_demangle_set_style ( enum demangling_styles  style)

◆ cplus_demangle_v3()

char* cplus_demangle_v3 ( const char *  mangled,
int  options 
)

Definition at line 5942 of file cp-demangle.c.

5942  {
5943  size_t alc;
5944 
5945  return d_demangle(mangled, options, &alc);
5946 }
static char * d_demangle(const char *, int, size_t *)
Definition: cp-demangle.c:5798

References d_growable_string::alc, d_demangle(), and options.

◆ cplus_demangle_v3_callback()

int cplus_demangle_v3_callback ( const char *  mangled,
int  options,
demangle_callbackref  callback,
void *  opaque 
)

Definition at line 5948 of file cp-demangle.c.

5949  {
5950  return d_demangle_callback(mangled, options, callback, opaque);
5951 }
static int d_demangle_callback(const char *, int, demangle_callbackref, void *)
Definition: cp-demangle.c:5713

References d_demangle_callback(), and options.

◆ cplus_demangle_v3_components()

struct demangle_component* cplus_demangle_v3_components ( const char *  mangled,
int  options,
void **  mem 
)

◆ cplus_mangle_opname()

const char* cplus_mangle_opname ( const char *  opname,
int  options 
)

◆ dlang_demangle()

char* dlang_demangle ( const char *  mangled,
int  options 
)

◆ is_gnu_v3_mangled_ctor()

enum gnu_v3_ctor_kinds is_gnu_v3_mangled_ctor ( const char *  name)

Definition at line 5982 of file cp-demangle.c.

6052  {
6053  enum gnu_v3_ctor_kinds ctor_kind;
6054  enum gnu_v3_dtor_kinds dtor_kind;
6055 
6056  if (!is_ctor_or_dtor(name, &ctor_kind, &dtor_kind))
6057  return (enum gnu_v3_ctor_kinds)0;
6058  return ctor_kind;
6059 }
static int is_ctor_or_dtor(const char *mangled, enum gnu_v3_ctor_kinds *ctor_kind, enum gnu_v3_dtor_kinds *dtor_kind)
Definition: cp-demangle.c:5982
gnu_v3_ctor_kinds
Definition: demangle.h:195
gnu_v3_dtor_kinds
Definition: demangle.h:213

◆ is_gnu_v3_mangled_dtor()

enum gnu_v3_dtor_kinds is_gnu_v3_mangled_dtor ( const char *  name)

Definition at line 5982 of file cp-demangle.c.

6065  {
6066  enum gnu_v3_ctor_kinds ctor_kind;
6067  enum gnu_v3_dtor_kinds dtor_kind;
6068 
6069  if (!is_ctor_or_dtor(name, &ctor_kind, &dtor_kind))
6070  return (enum gnu_v3_dtor_kinds)0;
6071  return dtor_kind;
6072 }

◆ java_demangle_v3()

char* java_demangle_v3 ( const char *  mangled)

Definition at line 5960 of file cp-demangle.c.

5960  {
5961  size_t alc;
5962 
5963  return d_demangle(mangled, DMGL_JAVA | DMGL_PARAMS | DMGL_RET_POSTFIX, &alc);
5964 }
#define DMGL_PARAMS
Definition: demangle.h:43
#define DMGL_RET_POSTFIX
Definition: demangle.h:48
#define DMGL_JAVA
Definition: demangle.h:45

References d_growable_string::alc, d_demangle(), DMGL_JAVA, DMGL_PARAMS, and DMGL_RET_POSTFIX.

◆ java_demangle_v3_callback()

int java_demangle_v3_callback ( const char *  mangled,
demangle_callbackref  callback,
void *  opaque 
)

Definition at line 5966 of file cp-demangle.c.

5967  {
5968  return d_demangle_callback(mangled,
5970  callback, opaque);
5971 }

References d_demangle_callback(), DMGL_JAVA, DMGL_PARAMS, and DMGL_RET_POSTFIX.

◆ rust_demangle()

char* rust_demangle ( const char *  mangled,
int  options 
)

◆ rust_demangle_sym()

void rust_demangle_sym ( char *  sym)

◆ rust_is_mangled()

int rust_is_mangled ( const char *  mangled)

◆ set_cplus_marker_for_demangling()

void set_cplus_marker_for_demangling ( int  ch)

Variable Documentation

◆ current_demangling_style

enum demangling_styles current_demangling_style

◆ libiberty_demanglers

const struct demangler_engine libiberty_demanglers[]