1*0e209d39SAndroid Build Coastguard Worker // Copyright (C) 2016 and later: Unicode, Inc. and others. 2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html 3*0e209d39SAndroid Build Coastguard Worker /* Copyright (C) 2012 IBM Corporation and Others. All Rights Reserved */ 4*0e209d39SAndroid Build Coastguard Worker 5*0e209d39SAndroid Build Coastguard Worker #include <stdio.h> 6*0e209d39SAndroid Build Coastguard Worker #include <demangle.h> 7*0e209d39SAndroid Build Coastguard Worker showSym(char * str)8*0e209d39SAndroid Build Coastguard Workervoid showSym(char *str) { 9*0e209d39SAndroid Build Coastguard Worker char *rest; 10*0e209d39SAndroid Build Coastguard Worker struct Name *name = Demangle(str, rest); // "f__1XFi" 11*0e209d39SAndroid Build Coastguard Worker 12*0e209d39SAndroid Build Coastguard Worker printf("# '%s'\n", str); 13*0e209d39SAndroid Build Coastguard Worker if(*rest) printf("\trest: '%s'\n", rest); 14*0e209d39SAndroid Build Coastguard Worker if(name->Kind() == MemberFunction) { 15*0e209d39SAndroid Build Coastguard Worker //((MemberFunctionName *) name)->Scope()->Text() is "X" 16*0e209d39SAndroid Build Coastguard Worker //((MemberFunctionName *) name)->RootName() is "f" 17*0e209d39SAndroid Build Coastguard Worker //((MemberFunctionName *) name)->Text() is "X::f(int)" 18*0e209d39SAndroid Build Coastguard Worker printf("\t=> %s\n", ((MemberFunctionName *) name)->Text()); 19*0e209d39SAndroid Build Coastguard Worker } else { 20*0e209d39SAndroid Build Coastguard Worker printf("\t(not MemberFunction)\n"); 21*0e209d39SAndroid Build Coastguard Worker } 22*0e209d39SAndroid Build Coastguard Worker } 23*0e209d39SAndroid Build Coastguard Worker 24*0e209d39SAndroid Build Coastguard Worker 25*0e209d39SAndroid Build Coastguard Worker 26*0e209d39SAndroid Build Coastguard Worker 27*0e209d39SAndroid Build Coastguard Worker main(int argc,char * argv[])28*0e209d39SAndroid Build Coastguard Workerint main(int argc, /*const*/ char *argv[]) { 29*0e209d39SAndroid Build Coastguard Worker if(argc>1) { 30*0e209d39SAndroid Build Coastguard Worker for(int i=1;i<argc;i++) { 31*0e209d39SAndroid Build Coastguard Worker showSym(argv[i]); 32*0e209d39SAndroid Build Coastguard Worker } 33*0e209d39SAndroid Build Coastguard Worker } else { 34*0e209d39SAndroid Build Coastguard Worker printf("Usage: %s <symbol> ...\n", argv[0]); 35*0e209d39SAndroid Build Coastguard Worker } 36*0e209d39SAndroid Build Coastguard Worker 37*0e209d39SAndroid Build Coastguard Worker 38*0e209d39SAndroid Build Coastguard Worker 39*0e209d39SAndroid Build Coastguard Worker } 40