// // This file contains a list of search and replace text pairs. // Each line is one specialaization name to full library definition. // // This list is based on content found in: // https://en.cppreference.com/w/cpp/string // https://en.cppreference.com/w/cpp/io // https://en.cppreference.com/w/cpp/regex/basic_regex // // The list has been tested against a small selection of known samples, but since not all of these entries have been tested, they have been built based on observed patterns and are quite speculative. // // Users can edit this file or add content to new files in an installation. // New files must end with '.gnu.demangler.replacements.txt' and must be placed inside of a module's 'data' directory. // When each replacement file is loaded, the will be sorted by name. // All replacements will be processed in the order the files are loaded, in the order listed in each file. // // The replacements will be executed in the order they are listed in this file. // // Each line must be of the format: replacement text | whitespace | search text // The replacement text may be two literal double quote characters (""), which signals to replace the match with the empty string. // Any line can be disabled by deleting or prepending a double forward slash. // // // General removal statements // // // Note: some of these have been disabled. Some binaries have a class namespace with the same name // in more than one namespace that may include these values. In that case, if we drop these values, // then instead of 2 distinct namespaces, we will have only 1, which is incorrect. If we decide that // these values are not desired, then we will have to figure out a way to create 2 distinct // namespaces after we apply the simplification. // // current tests show this is a non-leading mangled namespace placeholder "" ::__1 // current tests show this is a non-leading mangled namespace placeholder //"" ::__cxx11 // current tests show this is only in the leading mangled namespace position //"" __gnu_cxx:: // speculative: pool_allocator has been spotted in some binaries; replace first so the cases below will match std::allocator pool_allocator // // Standard c++ library typedefs // std::string std::basic_string, std::allocator > std::wstring std::basic_string, std::allocator > std::u8string std::basic_string, std::allocator > std::u16string std::basic_string, std::allocator > std::u32string std::basic_string, std::allocator > std::string_view std::basic_string_view, std::allocator > std::wstring_view std::basic_string_view, std::allocator > std::u8string_view std::basic_string, std::allocator > std::u16string_view std::basic_string, std::allocator > std::u32string_view std::basic_string, std::allocator > std::stringstream std::basic_stringstream, std::allocator > std::wstringstream std::basic_stringstream, std::allocator > std::istringstream std::basic_istringstream, std::allocator > std::wistringstream std::basic_istringstream, std::allocator > std::ostringstream std::basic_ostringstream, std::allocator > std::wostringstream std::basic_ostringstream, std::allocator > std::spanbuf std::basic_spanbuf > std::wspanbuf std::basic_spanbuf > std::ispanstream std::basic_ispanstream > std::wispanstream std::basic_ispanstream > std::spanstream std::basic_spanstream > std::wspanstream std::basic_spanstream > std::syncbuf std::basic_syncbuf > std::wsyncbuf std::basic_syncbuf > std::osyncstream std::basic_osyncstream > std::wosyncstream std::basic_osyncstream > std::stringbuf std::basic_stringbuf, std::allocator > std::wstringbuf std::basic_stringbuf, std::allocator > std::ios std::basic_ios > std::wios std::basic_ios > std::istream std::basic_istream > std::wistream std::basic_istream > std::ostream std::basic_ostream > std::wostream std::basic_ostream > std::iostream std::basic_iostream > std::wiostream std::basic_iostream > std::fstream std::basic_fstream > std::wfstream std::basic_fstream > std::ifstream std::basic_ifstream > std::wifstream std::basic_ifstream > std::ofstream std::basic_ofstream > std::wofstream std::basic_ofstream > std::streambuf std::basic_streambuf > std::wstreambuf std::basic_streambuf > std::filebuf std::basic_filebuf > std::wfilebuf std::basic_filebuf > std::regex std::basic_regex > std::wregex std::basic_regex > // // Secondary pass conversions // // These run after previous conversions so that we can perform further replacements // std::string::string std::string::basic_string std::string::~string std::string::~basic_string std::wstring::wstring std::wstring::basic_string std::wstring::~wstring std::wstring::~basic_string std::u8string::u8string std::u8string::basic_string std::u8string::~u8string std::u8string::~basic_string std::u16string::u16string std::u16string::basic_string std::u16string::~u16string std::u16string::~basic_string std::u32string::u32string std::u32string::basic_string std::u32string::~u32string std::u32string::~basic_string std::string_view::string_view std::string_view::basic_string_view std::string_view::~string_view std::string_view::~basic_string_view std::wstring_view::wstring_view std::wstring_view::basic_string_view std::wstring_view::~wstring_view std::wstring_view::~basic_string_view std::u8string_view::u8string_view std::u8string_view::basic_string std::u8string_view::~u8string_view std::u8string_view::~basic_string std::u16string_view::u16string_view std::u16string_view::basic_string std::u16string_view::~u16string_view std::u16string_view::~basic_string std::u32string_view::u32string_view std::u32string_view::basic_string std::u32string_view::~u32string_view std::u32string_view::~basic_string std::stringstream::stringstream std::stringstream::basic_stringstream std::stringstream::~stringstream std::stringstream::~basic_stringstream std::wstringstream::wstringstream std::wstringstream::basic_stringstream std::wstringstream::~wstringstream std::wstringstream::~basic_stringstream std::istringstream::istringstream std::istringstream::basic_istringstream std::istringstream::~istringstream std::istringstream::~basic_istringstream td::wistringstream::wistringstream std::wistringstream::basic_istringstream std::wistringstream::~wistringstream std::wistringstream::~basic_istringstream std::ostringstream::ostringstream std::ostringstream::basic_ostringstream std::ostringstream::~ostringstream std::ostringstream::~basic_ostringstream std::wostringstream::wostringstream std::wostringstream::basic_ostringstream std::wostringstream::~wostringstream std::wostringstream::~basic_ostringstream std::stringbuf::stringbuf std::stringbuf::basic_stringbuf std::stringbuf::~stringbuf std::stringbuf::~basic_stringbuf std::wstringbuf::wstringbuf std::wstringbuf::basic_stringbuf std::wstringbuf::~wstringbuf std::wstringbuf::~basic_stringbuf std::ios::ios std::ios::basic_ios std::ios::~ios std::ios::~basic_ios std::wios::wios std::wios::basic_ios std::wios::~wios std::wios::~basic_ios std::istream::istream std::istream::basic_istream std::istream::~istream std::istream::~basic_istream std::wistream::wistream std::wistream::basic_istream std::wistream::~wistream std::wistream::~basic_istream std::ostream::ostream std::ostream::basic_ostream std::ostream::~ostream std::ostream::~basic_ostream std::wostream::wostream std::wostream::basic_ostream std::wostream::~wostream std::wostream::~basic_ostream std::iostream::iostream std::iostream::basic_iostream std::iostream::~iostream std::iostream::~basic_iostream std::wiostream::wiostream std::wiostream::basic_iostream std::wiostream::~wiostream std::wiostream::~basic_iostream std::fstream::fstream std::fstream::basic_fstream std::fstream::~fstream std::fstream::~basic_fstream std::wfstream::wfstream std::wfstream::basic_fstream std::wfstream::~wfstream std::wfstream::~basic_fstream std::ifstream::ifstream std::ifstream::basic_ifstream std::ifstream::~ifstream std::ifstream::~basic_ifstream std::wifstream::wifstream std::wifstream::basic_ifstream std::wifstream::~wifstream std::wifstream::~basic_ifstream std::ofstream::ofstream std::ofstream::basic_ofstream std::ofstream::~ofstream std::ofstream::~basic_ofstream std::wofstream::wofstream std::wofstream::basic_ofstream std::wofstream::~wofstream std::wofstream::~basic_ofstream std::streambuf::streambuf std::streambuf::basic_streambuf std::streambuf::~streambuf std::streambuf::~basic_streambuf std::wstreambuf::wstreambuf std::wstreambuf::basic_streambuf std::wstreambuf::~wstreambuf std::wstreambuf::~basic_streambuf std::filebuf::filebuf std::filebuf::basic_filebuf std::filebuf::~filebuf std::filebuf::~basic_filebuf std::wfilebuf::wfilebuf std::wfilebuf::basic_filebuf std::wfilebuf::~wfilebuf std::wfilebuf::~basic_filebuf std::spanbuf::spanbuf std::spanbuf::basic_spanbuf std::spanbuf::~spanbuf std::spanbuf::~basic_spanbuf std::wspanbuf::wspanbuf std::wspanbuf::basic_spanbuf std::wspanbuf::~wspanbuf std::wspanbuf::~basic_spanbuf std::ispanstream::ispanstream std::ispanstream::basic_ispanstream std::ispanstream::~ispanstream std::ispanstream::~basic_ispanstream std::wispanstream::wispanstream std::wispanstream::basic_ispanstream std::wispanstream::~wispanstream std::wispanstream::~basic_ispanstream std::spanstream::spanstream std::spanstream::basic_spanstream std::spanstream::~spanstream std::spanstream::~basic_spanstream std::wspanstream::wspanstream std::wspanstream::basic_spanstream std::wspanstream::~wspanstream std::wspanstream::~basic_spanstream std::syncbuf::syncbuf std::syncbuf::basic_syncbuf std::syncbuf::~syncbuf std::syncbuf::~basic_syncbuf std::wsyncbuf::wsyncbuf std::wsyncbuf::basic_syncbuf std::wsyncbuf::~wsyncbuf std::wsyncbuf::~basic_syncbuf std::osyncstream::osyncstream std::osyncstream::basic_osyncstream std::osyncstream::~osyncstream std::osyncstream::~basic_osyncstream std::wosyncstream::wosyncstream std::wosyncstream::basic_osyncstream std::wosyncstream::~wosyncstream std::wosyncstream::~basic_osyncstream // speculative: std::string std::basic_string::type, std::char_traits::type>, std::allocator::type> >