Programming Utilities Guide

C++ Mangled Symbols

If the function name is a C++ mangled symbol, lex prints its demangled format. All mangled C++ symbols are bracketed by [] following the demangled symbol. For regular mangled C++ function names (including member and non-member functions), the function prototype is used as its demangled format.

For example,

	_ct_13Iostream_initFv

is printed as:

	Iostream_init::Iostream_init()

C++ static constructors and destructors are demangled and printed in the following format:

	static constructor function for 

or

	static destructor function for 

For example,

	_std_stream_in_c_Fv 

is demangled as

	static destructor function for _stream_in_c

For C++ virtual table symbols, its mangled name takes the following format:

	_vtbl_class
	_vtbl_root_class_derived_class

In the lex output, the demangled names for the virtual table symbols are printed as

	virtual table for class
	virtual table for class derived_class derived from root_class

For example, the demangled format of

	_vtbl_7fstream

is

	virtual table for fstreamH

And the demangled format of

	_vtbl_3ios_18ostream_withassign

is

virtual table for class ostream_withassign derived from ios

Some C++ symbols are pointers to the virtual tables; their mangled names take the following format:

	_ptbl_class_filename
	_ptbl_root_class_derived_class_filename

In the lex output, the demangled names for these symbols are printed as:

pointer to virtual table for class in filename
pointer to virtual table for class derived class derived from
 	root_class in filename

For example, the demangled format of

	_ptbl_3ios_stream_fstream_c

is

	pointer to the virtual table for ios in _stream_fstream_c

and the demangled format of

	_ptbl_3ios_11fstreambase_stream_fstream_c

is

	_stream_fstream_c
	pointer to the virtual table for class fstreambase derived
 	from ios in _stream_fstream_c