mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 19:42:36 +02:00
212 lines
12 KiB
Text
212 lines
12 KiB
Text
//
|
|
// 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<char> pool_allocator<char>
|
|
|
|
|
|
//
|
|
// Standard c++ library typedefs
|
|
//
|
|
std::string std::basic_string<char, std::char_traits<char>, std::allocator<char> >
|
|
std::wstring std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
|
std::u8string std::basic_string<char8_t, std::char_traits<char8_t>, std::allocator<char8_t> >
|
|
std::u16string std::basic_string<char16_t, std::char_traits<char16_t>, std::allocator<char16_t> >
|
|
std::u32string std::basic_string<char32_t, std::char_traits<char32_t>, std::allocator<char32_t> >
|
|
|
|
std::string_view std::basic_string_view<char, std::char_traits<char>, std::allocator<char> >
|
|
std::wstring_view std::basic_string_view<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
|
std::u8string_view std::basic_string<char8_t_view, std::char_traits<char8_t_view>, std::allocator<char8_t_view> >
|
|
std::u16string_view std::basic_string<char16_t_view, std::char_traits<char16_t_view>, std::allocator<char16_t_view> >
|
|
std::u32string_view std::basic_string<char32_t_view, std::char_traits<char32_t_view>, std::allocator<char32_t_view> >
|
|
|
|
std::stringstream std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >
|
|
std::wstringstream std::basic_stringstream<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
|
std::istringstream std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >
|
|
std::wistringstream std::basic_istringstream<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
|
std::ostringstream std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >
|
|
std::wostringstream std::basic_ostringstream<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
|
|
|
std::spanbuf std::basic_spanbuf<char, std::char_traits<char> >
|
|
std::wspanbuf std::basic_spanbuf<wchar_t, std::char_traits<wchar_t> >
|
|
std::ispanstream std::basic_ispanstream<char, std::char_traits<char> >
|
|
std::wispanstream std::basic_ispanstream<wchar_t, std::char_traits<wchar_t> >
|
|
std::spanstream std::basic_spanstream<char, std::char_traits<char> >
|
|
std::wspanstream std::basic_spanstream<wchar_t, std::char_traits<wchar_t> >
|
|
std::syncbuf std::basic_syncbuf<char, std::char_traits<char> >
|
|
std::wsyncbuf std::basic_syncbuf<wchar_t, std::char_traits<wchar_t> >
|
|
std::osyncstream std::basic_osyncstream<char, std::char_traits<char> >
|
|
std::wosyncstream std::basic_osyncstream<wchar_t, std::char_traits<wchar_t> >
|
|
|
|
std::stringbuf std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >
|
|
std::wstringbuf std::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
|
std::ios std::basic_ios<char, std::char_traits<char> >
|
|
std::wios std::basic_ios<wchar_t, std::char_traits<wchar_t> >
|
|
std::istream std::basic_istream<char, std::char_traits<char> >
|
|
std::wistream std::basic_istream<wchar_t, std::char_traits<wchar_t> >
|
|
std::ostream std::basic_ostream<char, std::char_traits<char> >
|
|
std::wostream std::basic_ostream<wchar_t, std::char_traits<wchar_t> >
|
|
std::iostream std::basic_iostream<char, std::char_traits<char> >
|
|
std::wiostream std::basic_iostream<wchar_t, std::char_traits<wchar_t> >
|
|
std::fstream std::basic_fstream<char, std::char_traits<char> >
|
|
std::wfstream std::basic_fstream<wchar_t, std::char_traits<wchar_t> >
|
|
std::ifstream std::basic_ifstream<char, std::char_traits<char> >
|
|
std::wifstream std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >
|
|
std::ofstream std::basic_ofstream<char, std::char_traits<char> >
|
|
std::wofstream std::basic_ofstream<wchar_t, std::char_traits<wchar_t> >
|
|
std::streambuf std::basic_streambuf<char, std::char_traits<char> >
|
|
std::wstreambuf std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >
|
|
std::filebuf std::basic_filebuf<char, std::char_traits<char> >
|
|
std::wfilebuf std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >
|
|
|
|
std::regex std::basic_regex<char, std::regex_traits<char> >
|
|
std::wregex std::basic_regex<wchar_t, std::regex_traits<wchar_t> >
|
|
|
|
|
|
//
|
|
// 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<std::remove_const<char const>::type, std::char_traits<std::remove_const<char const>::type>, std::allocator<std::remove_const<char const>::type> >
|
|
|
|
|