Em Wed, May 05, 2010 at 09:44:01AM -0300, Arnaldo Carvalho de Melo escreveu: > Em Wed, May 05, 2010 at 05:15:20PM +0530, Rakesh Pandit escreveu: > > If we are using pfunct right with option --function, it prints the > > first matched function name. This does not satisfy those cases where > > object file has more then one functions with same name. I would like > > it to print all matching cases not just the first one. Would it be > > acceptable ? Or if it is not acceptable as it may break few scripts > > written by users which are consuming the tool. An alternate > > implementation could be if supplied with an extra option print all > > matches and by default just print first one. > > > > Suggestions ? If any of above to is acceptable I can straight right > > down a patch accordingly. > > well, if you say something like: > > pfunct --function do_read --all-units > > Meaning that it will print something like: > > obj_foo: void do_read(char buffer); > obj_bar: int do_read(char bf, int size); > obj_baz: size_t do_read(int fd, char buf, int ln); > > Its useful, send the patch :-) But that is not exactly what you want, as you more precisely described here: https://bugzilla.redhat.com/show_bug.cgi?id=495606 <quote> Actually this does not results in correct match because corresponding symbool name which we provide it with function arg is mangled. In case we want to get a perfect matched we need to provide it de-mangled actual function name. But for C++ say (even in C) we can have more then one function with same name. In that case right now it will just print the first match. </quote> So what you want is that we traverse all the C++ classes finding which ones have methods with that name, which is way more sensible than what pfunct, being mostly oriented, so far, to C, does. I don't have time right now to devote to this, but what you want is to: 1. go on CU by CU looking at all structs 2. look at each namespace in them looking for functions with the desired name, printing it in some C++ sensible way, perhaps: return_type1 class_foo::method_searched(parameter list1); /* mangled name=EQWTVARSAE */ return_type2 class_foo::method_searched(parameter list2); /* mangled name=YTEYRWTQRD */ etc. What I suggested about --all-units still is useful as we can have the functions with the same name in multiple object files in C too, they just have to be static not to cause linking problems. - Arnaldo -- To unsubscribe from this list: send the line "unsubscribe dwarves" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html