mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-24 23:09:02 +00:00
Document __demangle() and fix a const func ptr bug
This commit is contained in:
parent
c67faf61df
commit
9aa353d88b
7 changed files with 618 additions and 670 deletions
File diff suppressed because it is too large
Load diff
|
@ -810,7 +810,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt,
|
|||
/* *p++ = '&'; */
|
||||
s = (*_weaken(__symtab))->name_base +
|
||||
(*_weaken(__symtab))->names[idx];
|
||||
if (__is_mangled(s) && __demangle(cxxbuf, s, sizeof(cxxbuf)) != -1)
|
||||
if (_weaken(__is_mangled) && _weaken(__is_mangled)(s) &&
|
||||
_weaken(__demangle)(cxxbuf, s, sizeof(cxxbuf)) != -1)
|
||||
s = cxxbuf;
|
||||
goto FormatString;
|
||||
}
|
||||
|
|
|
@ -90,8 +90,9 @@ dontinstrument dontasan int PrintBacktraceUsingSymbols(
|
|||
symbol = 0;
|
||||
addend = 0;
|
||||
}
|
||||
if ((name = __get_symbol_name(st, symbol)) && __is_mangled(name)) {
|
||||
__demangle(cxxbuf, name, sizeof(cxxbuf));
|
||||
if ((name = __get_symbol_name(st, symbol)) &&
|
||||
(_weaken(__is_mangled) && _weaken(__is_mangled)(name))) {
|
||||
_weaken(__demangle)(cxxbuf, name, sizeof(cxxbuf));
|
||||
kprintf("%012lx %lx %s%+d\n", frame, addr, cxxbuf, addend);
|
||||
name = cxxbuf;
|
||||
} else {
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
|
||||
PKGS += TEST_LIBC_INTRIN
|
||||
|
||||
TEST_LIBC_INTRIN_SRCS := $(wildcard test/libc/intrin/*.c)
|
||||
TEST_LIBC_INTRIN_FILES := $(wildcard test/libc/intrin/*)
|
||||
TEST_LIBC_INTRIN_SRCS = $(filter %.c,$(TEST_LIBC_INTRIN_FILES))
|
||||
TEST_LIBC_INTRIN_INCS = $(filter %.inc,$(TEST_LIBC_INTRIN_FILES))
|
||||
TEST_LIBC_INTRIN_SRCS_TEST = $(filter %_test.c,$(TEST_LIBC_INTRIN_SRCS))
|
||||
|
||||
TEST_LIBC_INTRIN_OBJS = \
|
||||
|
|
|
@ -2,6 +2,26 @@ const char* demangle_cases[][2] = {
|
|||
{"_Z1A", "A"},
|
||||
{"_Z1Av", "A()"},
|
||||
{"_Z1A1B1C", "A(B, C)"},
|
||||
|
||||
// {"_Z1fDB3_",
|
||||
// "f(_BitInt(3))"},
|
||||
// got error
|
||||
|
||||
|
||||
// {"_Z1fDU10_",
|
||||
// "f(unsigned _BitInt(10))"},
|
||||
// got error
|
||||
|
||||
|
||||
// {"_Z1fIfEvDUstPT__",
|
||||
// "void f<float>(unsigned _BitInt(sizeof (float*)))"},
|
||||
// got error
|
||||
|
||||
|
||||
// {"_Z1fIiEvDBstPT__",
|
||||
// "void f<int>(_BitInt(sizeof (int*)))"},
|
||||
// got error
|
||||
|
||||
{"_Z4testI1A1BE1Cv", "C test<A, B>()"},
|
||||
|
||||
// {"_Z4testI1A1BET0_T_S3_",
|
||||
|
@ -22,18 +42,10 @@ const char* demangle_cases[][2] = {
|
|||
{"_ZN4dyld26findImageContainingAddressEPKv", "dyld::findImageContainingAddress(void const*)"},
|
||||
{"_ZN4dyld17clearErrorMessageEv", "dyld::clearErrorMessage()"},
|
||||
{"_ZN4dyld15getErrorMessageEv", "dyld::getErrorMessage()"},
|
||||
|
||||
// {"_ZN4dyld24registerUndefinedHandlerEPFvPKcE",
|
||||
// "dyld::registerUndefinedHandler(void (*)(char const*))"},
|
||||
// "dyld::registerUndefinedHandler(void (*)(char*))" was returned
|
||||
|
||||
{"_ZN4dyld24registerUndefinedHandlerEPFvPKcE", "dyld::registerUndefinedHandler(void (*)(char const*))"},
|
||||
{"_ZN4dyld19openSharedCacheFileEv", "dyld::openSharedCacheFile()"},
|
||||
{"_ZN4dyld15setErrorMessageEPKc", "dyld::setErrorMessage(char const*)"},
|
||||
|
||||
// {"_ZN4dyld22registerRemoveCallbackEPFvPK11mach_headerlE",
|
||||
// "dyld::registerRemoveCallback(void (*)(mach_header const*, long))"},
|
||||
// "dyld::registerRemoveCallback(void (*)(mach_header*, long))" was returned
|
||||
|
||||
{"_ZN4dyld22registerRemoveCallbackEPFvPK11mach_headerlE", "dyld::registerRemoveCallback(void (*)(mach_header const*, long))"},
|
||||
{"_ZN4dyld13inSharedCacheEPKc", "dyld::inSharedCache(char const*)"},
|
||||
{"_ZN4dyld15runInitializersEP11ImageLoader", "dyld::runInitializers(ImageLoader*)"},
|
||||
{"_ZN4dyld27findCoalescedExportedSymbolEPKcPPKN11ImageLoader6SymbolEPPKS2_", "dyld::findCoalescedExportedSymbol(char const*, ImageLoader::Symbol const**, ImageLoader const**)"},
|
||||
|
@ -50,27 +62,15 @@ const char* demangle_cases[][2] = {
|
|||
{"_Z30coresymbolication_unload_imageP25CSCppDyldSharedMemoryPagePK11ImageLoader", "coresymbolication_unload_image(CSCppDyldSharedMemoryPage*, ImageLoader const*)"},
|
||||
{"_ZN4dyld18getCoalescedImagesEPP11ImageLoader", "dyld::getCoalescedImages(ImageLoader**)"},
|
||||
{"_ZN4dyld25findImageContainingSymbolEPKv", "dyld::findImageContainingSymbol(void const*)"},
|
||||
|
||||
// {"_ZN4dyld19registerAddCallbackEPFvPK11mach_headerlE",
|
||||
// "dyld::registerAddCallback(void (*)(mach_header const*, long))"},
|
||||
// "dyld::registerAddCallback(void (*)(mach_header*, long))" was returned
|
||||
|
||||
{"_ZN4dyld19registerAddCallbackEPFvPK11mach_headerlE", "dyld::registerAddCallback(void (*)(mach_header const*, long))"},
|
||||
{"_ZN4dyld14forEachImageDoEPFvP11ImageLoaderPvES2_", "dyld::forEachImageDo(void (*)(ImageLoader*, void*), void*)"},
|
||||
{"_ZN4dyld15getIndexedImageEj", "dyld::getIndexedImage(unsigned int)"},
|
||||
{"_ZN4dyld13getImageCountEv", "dyld::getImageCount()"},
|
||||
{"_ZN4dyld10validImageEPK11ImageLoader", "dyld::validImage(ImageLoader const*)"},
|
||||
{"_ZN4dyld30flatFindExportedSymbolWithHintEPKcS1_PPKN11ImageLoader6SymbolEPPKS2_", "dyld::flatFindExportedSymbolWithHint(char const*, char const*, ImageLoader::Symbol const**, ImageLoader const**)"},
|
||||
{"_ZN4dyld14loadFromMemoryEPKhyPKc", "dyld::loadFromMemory(unsigned char const*, unsigned long long, char const*)"},
|
||||
|
||||
// {"_ZN4dyld36registerImageStateBatchChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE",
|
||||
// "dyld::registerImageStateBatchChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"},
|
||||
// "dyld::registerImageStateBatchChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info*))" was returned
|
||||
|
||||
|
||||
// {"_ZN4dyld37registerImageStateSingleChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE",
|
||||
// "dyld::registerImageStateSingleChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"},
|
||||
// "dyld::registerImageStateSingleChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info*))" was returned
|
||||
|
||||
{"_ZN4dyld36registerImageStateBatchChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE", "dyld::registerImageStateBatchChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"},
|
||||
{"_ZN4dyld37registerImageStateSingleChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE", "dyld::registerImageStateSingleChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"},
|
||||
{"_ZN4dyld4haltEPKc", "dyld::halt(char const*)"},
|
||||
{"_ZN4dyld18fastBindLazySymbolEPP11ImageLoaderm", "dyld::fastBindLazySymbol(ImageLoader**, unsigned long)"},
|
||||
{"_ZN4dyld14bindLazySymbolEPK11mach_headerPm", "dyld::bindLazySymbol(mach_header const*, unsigned long*)"},
|
||||
|
@ -109,16 +109,8 @@ const char* demangle_cases[][2] = {
|
|||
{"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EED2Ev", "std::vector<dyld::RegisteredDOF, std::allocator<dyld::RegisteredDOF>>::~vector()"},
|
||||
{"_ZNSt12_Vector_baseIP11ImageLoaderSaIS1_EED2Ev", "std::_Vector_base<ImageLoader*, std::allocator<ImageLoader*>>::~_Vector_base()"},
|
||||
{"_ZNSt6vectorIP11ImageLoaderSaIS1_EED2Ev", "std::vector<ImageLoader*, std::allocator<ImageLoader*>>::~vector()"},
|
||||
|
||||
// {"_ZN9__gnu_cxx13new_allocatorIPFPKc17dyld_image_statesjPK15dyld_image_infoEE8allocateEmPKv",
|
||||
// "__gnu_cxx::new_allocator<char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*)>::allocate(unsigned long, void const*)"},
|
||||
// "__gnu_cxx::new_allocator<char const* (*)(dyld_image_states, unsigned int, dyld_image_info*)>::allocate(unsigned long, void const*)" was returned
|
||||
|
||||
|
||||
// {"_ZN9__gnu_cxx13new_allocatorIPFvPK11mach_headerlEE8allocateEmPKv",
|
||||
// "__gnu_cxx::new_allocator<void (*)(mach_header const*, long)>::allocate(unsigned long, void const*)"},
|
||||
// "__gnu_cxx::new_allocator<void (*)(mach_header*, long)>::allocate(unsigned long, void const*)" was returned
|
||||
|
||||
{"_ZN9__gnu_cxx13new_allocatorIPFPKc17dyld_image_statesjPK15dyld_image_infoEE8allocateEmPKv", "__gnu_cxx::new_allocator<char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*)>::allocate(unsigned long, void const*)"},
|
||||
{"_ZN9__gnu_cxx13new_allocatorIPFvPK11mach_headerlEE8allocateEmPKv", "__gnu_cxx::new_allocator<void (*)(mach_header const*, long)>::allocate(unsigned long, void const*)"},
|
||||
{"_ZN9__gnu_cxx13new_allocatorIPKcE8allocateEmPKv", "__gnu_cxx::new_allocator<char const*>::allocate(unsigned long, void const*)"},
|
||||
{"_ZN9__gnu_cxx13new_allocatorIP11ImageLoaderE8allocateEmPKv", "__gnu_cxx::new_allocator<ImageLoader*>::allocate(unsigned long, void const*)"},
|
||||
{"_ZN9__gnu_cxx13new_allocatorIN4dyld13RegisteredDOFEE8allocateEmPKv", "__gnu_cxx::new_allocator<dyld::RegisteredDOF>::allocate(unsigned long, void const*)"},
|
||||
|
@ -8100,7 +8092,7 @@ const char* demangle_cases[][2] = {
|
|||
|
||||
// {"_ZSt25__unguarded_linear_insertIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES6_PFbRKS6_S9_EEvT_T0_T1_",
|
||||
// "void std::__unguarded_linear_insert<std::pair<llvm::APSInt, clang::EnumConstantDecl*>*, std::pair<llvm::APSInt, clang::EnumConstantDecl*>, bool (*)(std::pair<llvm::APSInt, clang::EnumConstantDecl*> const&, std::pair<llvm::APSInt, clang::EnumConstantDecl*> const&)>(std::pair<llvm::APSInt, clang::EnumConstantDecl*>*, std::pair<llvm::APSInt, clang::EnumConstantDecl*>, bool (*)(std::pair<llvm::APSInt, clang::EnumConstantDecl*> const&, std::pair<llvm::APSInt, clang::EnumConstantDecl*> const&))"},
|
||||
// got error
|
||||
// "void std::__unguarded_linear_insert<std::pair<llvm::APSInt, clang::EnumConstantDecl*>*, std::pair<llvm::APSInt, clang::EnumConstantDecl*>, bool (*)(std::pair<llvm::APSInt, clang::EnumConstantDecl*> const&, std::pair<llvm::APSInt, clang::EnumConstantDecl*> const&)>(llvm::APSInt, clang::EnumConstantDecl*, std::pair<llvm::APSInt, clang::EnumConstantDecl*>*)" was returned
|
||||
|
||||
|
||||
// {"_ZSt22__merge_without_bufferIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEElPFbRKS6_S9_EEvT_SC_SC_T0_SD_T1_",
|
||||
|
@ -8254,7 +8246,7 @@ const char* demangle_cases[][2] = {
|
|||
|
||||
// {"_ZSt25__unguarded_linear_insertIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES6_PFbRKS6_S9_EEvT_T0_T1_",
|
||||
// "void std::__unguarded_linear_insert<std::pair<llvm::APSInt, clang::CaseStmt*>*, std::pair<llvm::APSInt, clang::CaseStmt*>, bool (*)(std::pair<llvm::APSInt, clang::CaseStmt*> const&, std::pair<llvm::APSInt, clang::CaseStmt*> const&)>(std::pair<llvm::APSInt, clang::CaseStmt*>*, std::pair<llvm::APSInt, clang::CaseStmt*>, bool (*)(std::pair<llvm::APSInt, clang::CaseStmt*> const&, std::pair<llvm::APSInt, clang::CaseStmt*> const&))"},
|
||||
// got error
|
||||
// "void std::__unguarded_linear_insert<std::pair<llvm::APSInt, clang::CaseStmt*>*, std::pair<llvm::APSInt, clang::CaseStmt*>, bool (*)(std::pair<llvm::APSInt, clang::CaseStmt*> const&, std::pair<llvm::APSInt, clang::CaseStmt*> const&)>(llvm::APSInt, clang::CaseStmt*, std::pair<llvm::APSInt, clang::CaseStmt*>*)" was returned
|
||||
|
||||
|
||||
// {"_ZSt22__merge_without_bufferIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEElPFbRKS6_S9_EEvT_SC_SC_T0_SD_T1_",
|
||||
|
@ -12365,25 +12357,17 @@ const char* demangle_cases[][2] = {
|
|||
{"_ZN5clang12CXXBasePaths4swapERS0_", "clang::CXXBasePaths::swap(clang::CXXBasePaths&)"},
|
||||
{"_ZNK5clang13CXXRecordDecl13isDerivedFromEPKS0_", "clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*) const"},
|
||||
{"_ZNK5clang13CXXRecordDecl13isDerivedFromEPKS0_RNS_12CXXBasePathsE", "clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*, clang::CXXBasePaths&) const"},
|
||||
|
||||
// {"_ZNK5clang13CXXRecordDecl13lookupInBasesEPFbPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPvES6_RNS_12CXXBasePathsE",
|
||||
// "clang::CXXRecordDecl::lookupInBases(bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), void*, clang::CXXBasePaths&) const"},
|
||||
// "clang::CXXRecordDecl::lookupInBases(bool (*)(clang::CXXBaseSpecifier*, clang::CXXBasePath&, void*), bool (*)(clang::CXXBaseSpecifier*, clang::CXXBasePath&, void*), clang::CXXBasePaths&) const" was returned
|
||||
|
||||
{"_ZNK5clang13CXXRecordDecl13lookupInBasesEPFbPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPvES6_RNS_12CXXBasePathsE", "clang::CXXRecordDecl::lookupInBases(bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), void*, clang::CXXBasePaths&) const"},
|
||||
{"_ZN5clang13CXXRecordDecl13FindBaseClassEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindBaseClass(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"},
|
||||
{"_ZNK5clang13CXXRecordDecl22isVirtuallyDerivedFromEPS0_", "clang::CXXRecordDecl::isVirtuallyDerivedFrom(clang::CXXRecordDecl*) const"},
|
||||
{"_ZN5clang13CXXRecordDecl20FindVirtualBaseClassEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindVirtualBaseClass(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"},
|
||||
{"_ZNK5clang13CXXRecordDecl24isProvablyNotDerivedFromEPKS0_", "clang::CXXRecordDecl::isProvablyNotDerivedFrom(clang::CXXRecordDecl const*) const"},
|
||||
|
||||
// {"_ZNK5clang13CXXRecordDecl11forallBasesEPFbPKS0_PvES3_b",
|
||||
// "clang::CXXRecordDecl::forallBases(bool (*)(clang::CXXRecordDecl const*, void*), void*, bool) const"},
|
||||
// "clang::CXXRecordDecl::forallBases(bool (*)(clang::CXXRecordDecl*, void*), bool (*)(clang::CXXRecordDecl*, void*), bool) const" was returned
|
||||
|
||||
{"_ZNK5clang13CXXRecordDecl11forallBasesEPFbPKS0_PvES3_b", "clang::CXXRecordDecl::forallBases(bool (*)(clang::CXXRecordDecl const*, void*), void*, bool) const"},
|
||||
{"_Z9BaseIsNotPKN5clang13CXXRecordDeclEPv", "BaseIsNot(clang::CXXRecordDecl const*, void*)"},
|
||||
|
||||
// {"_ZN5clang12CXXBasePaths13lookupInBasesERNS_10ASTContextEPKNS_13CXXRecordDeclEPFbPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPvESB_",
|
||||
// "clang::CXXBasePaths::lookupInBases(clang::ASTContext&, clang::CXXRecordDecl const*, bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), void*)"},
|
||||
// got error
|
||||
// "clang::CXXBasePaths::lookupInBases(clang::ASTContext&, clang::CXXRecordDecl const*, bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*))" was returned
|
||||
|
||||
{"_ZN5clang13CXXRecordDecl13FindTagMemberEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindTagMember(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"},
|
||||
{"_ZN5clang13CXXRecordDecl18FindOrdinaryMemberEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindOrdinaryMember(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"},
|
||||
|
@ -29126,11 +29110,7 @@ const char* demangle_cases[][2] = {
|
|||
{"_ZN4llvm11LLVMContextD2Ev", "llvm::LLVMContext::~LLVMContext()"},
|
||||
{"_ZN4llvm11LLVMContext9addModuleEPNS_6ModuleE", "llvm::LLVMContext::addModule(llvm::Module*)"},
|
||||
{"_ZN4llvm11LLVMContext12removeModuleEPNS_6ModuleE", "llvm::LLVMContext::removeModule(llvm::Module*)"},
|
||||
|
||||
// {"_ZN4llvm11LLVMContext29setInlineAsmDiagnosticHandlerEPFvRKNS_12SMDiagnosticEPvjES4_",
|
||||
// "llvm::LLVMContext::setInlineAsmDiagnosticHandler(void (*)(llvm::SMDiagnostic const&, void*, unsigned int), void*)"},
|
||||
// "llvm::LLVMContext::setInlineAsmDiagnosticHandler(void (*)(llvm::SMDiagnostic&, void*, unsigned int), void (*)(llvm::SMDiagnostic&, void*, unsigned int))" was returned
|
||||
|
||||
{"_ZN4llvm11LLVMContext29setInlineAsmDiagnosticHandlerEPFvRKNS_12SMDiagnosticEPvjES4_", "llvm::LLVMContext::setInlineAsmDiagnosticHandler(void (*)(llvm::SMDiagnostic const&, void*, unsigned int), void*)"},
|
||||
{"_ZNK4llvm11LLVMContext29getInlineAsmDiagnosticHandlerEv", "llvm::LLVMContext::getInlineAsmDiagnosticHandler() const"},
|
||||
{"_ZNK4llvm11LLVMContext29getInlineAsmDiagnosticContextEv", "llvm::LLVMContext::getInlineAsmDiagnosticContext() const"},
|
||||
{"_ZN4llvm11LLVMContext9emitErrorENS_9StringRefE", "llvm::LLVMContext::emitError(llvm::StringRef)"},
|
||||
|
@ -31711,11 +31691,7 @@ const char* demangle_cases[][2] = {
|
|||
{"_Z17TargetArraySortFnPKvS0_", "TargetArraySortFn(void const*, void const*)"},
|
||||
{"_Z14OptNameComparePKvS0_", "OptNameCompare(void const*, void const*)"},
|
||||
{"_Z28CommaSeparateAndAddOccurencePN4llvm2cl6OptionEjNS_9StringRefES3_b", "CommaSeparateAndAddOccurence(llvm::cl::Option*, unsigned int, llvm::StringRef, llvm::StringRef, bool)"},
|
||||
|
||||
// {"_Z13getOptionPredN4llvm9StringRefERmPFbPKNS_2cl6OptionEERKNS_9StringMapIPS3_NS_15MallocAllocatorEEE",
|
||||
// "getOptionPred(llvm::StringRef, unsigned long&, bool (*)(llvm::cl::Option const*), llvm::StringMap<llvm::cl::Option*, llvm::MallocAllocator> const&)"},
|
||||
// "getOptionPred(llvm::StringRef, unsigned long&, bool (*)(llvm::cl::Option*), llvm::StringMap<llvm::cl::Option*, llvm::MallocAllocator> const&)" was returned
|
||||
|
||||
{"_Z13getOptionPredN4llvm9StringRefERmPFbPKNS_2cl6OptionEERKNS_9StringMapIPS3_NS_15MallocAllocatorEEE", "getOptionPred(llvm::StringRef, unsigned long&, bool (*)(llvm::cl::Option const*), llvm::StringMap<llvm::cl::Option*, llvm::MallocAllocator> const&)"},
|
||||
{"_Z20isPrefixedOrGroupingPKN4llvm2cl6OptionE", "isPrefixedOrGrouping(llvm::cl::Option const*)"},
|
||||
{"_Z10isGroupingPKN4llvm2cl6OptionE", "isGrouping(llvm::cl::Option const*)"},
|
||||
{"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt<unsigned int, false, llvm::cl::parser<unsigned int>>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"},
|
||||
|
@ -31943,11 +31919,7 @@ const char* demangle_cases[][2] = {
|
|||
|
||||
{"_ZN4llvm3sys8StrErrorEv", "llvm::sys::StrError()"},
|
||||
{"_ZN4llvm3sys8StrErrorEi", "llvm::sys::StrError(int)"},
|
||||
|
||||
// {"_ZN4llvm27install_fatal_error_handlerEPFvPvRKSsES0_",
|
||||
// "llvm::install_fatal_error_handler(void (*)(void*, std::string const&), void*)"},
|
||||
// "llvm::install_fatal_error_handler(void (*)(void*, std::string&), void*)" was returned
|
||||
|
||||
{"_ZN4llvm27install_fatal_error_handlerEPFvPvRKSsES0_", "llvm::install_fatal_error_handler(void (*)(void*, std::string const&), void*)"},
|
||||
{"_ZN4llvm26remove_fatal_error_handlerEv", "llvm::remove_fatal_error_handler()"},
|
||||
{"_ZN4llvm18report_fatal_errorEPKc", "llvm::report_fatal_error(char const*)"},
|
||||
{"_ZN4llvm18report_fatal_errorERKNS_5TwineE", "llvm::report_fatal_error(llvm::Twine const&)"},
|
|
@ -22,7 +22,7 @@
|
|||
#include "libc/stdio/internal.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
char got[65536];
|
||||
char got[19500];
|
||||
|
||||
static void regenerate_cases(void) {
|
||||
FILE *f = fopen("demangle_cases.inc", "w");
|
||||
|
@ -50,9 +50,18 @@ int main() {
|
|||
for (int i = 0; i < ARRAYLEN(demangle_cases); ++i) {
|
||||
const char *input = demangle_cases[i][0];
|
||||
const char *want = demangle_cases[i][1];
|
||||
if (__demangle(got, input, sizeof(got)) == -1)
|
||||
if (__demangle(got, input, sizeof(got)) == -1) {
|
||||
fprintf(stderr, "%s:%d: error: demangle failed\n", __FILE__, __LINE__);
|
||||
fprintf(stderr, "\tinput %`'s\n", input);
|
||||
fprintf(stderr, "\t want %`'s\n", want);
|
||||
return 1;
|
||||
if (strcmp(want, got))
|
||||
}
|
||||
if (strcmp(want, got)) {
|
||||
fprintf(stderr, "%s:%d: error: demangle incorrect\n", __FILE__, __LINE__);
|
||||
fprintf(stderr, "\tinput %`'s\n", input);
|
||||
fprintf(stderr, "\t want %`'s\n", want);
|
||||
fprintf(stderr, "\t got %`'s\n", got);
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
7
third_party/libcxx/__config_site
vendored
7
third_party/libcxx/__config_site
vendored
|
@ -9,6 +9,13 @@
|
|||
#ifndef _LIBCPP___CONFIG_SITE
|
||||
#define _LIBCPP___CONFIG_SITE
|
||||
|
||||
// every c++ program is bound to include *something* from the stl
|
||||
// therefore we schlep in 28k of code needed to print c++ symbols
|
||||
// however c programs should never include *any* stl headers ever
|
||||
#ifndef TINY
|
||||
__static_yoink("__demangle");
|
||||
#endif
|
||||
|
||||
// We get a million `error: ‘always_inline’ function might not be
|
||||
// inlinable` because we're using LLVM LIBCXX with GCC, which has
|
||||
// no exclude_from_explicit_instantiation attribute, which libcxx
|
||||
|
|
Loading…
Add table
Reference in a new issue