Dave, On Wed, Mar 6, 2013 at 10:04 PM, Dave Anderson <anderson@xxxxxxxxxx> wrote: > > > ----- Original Message ----- >> Hi Dave, >> >> Current when pass integer type to gdb_get_datatype in crash, it would return >> req->typecode=0 and req->length=0. >> >> As it only allow TYPE_CODE_ENUM to be passed. here is a patch for fixing it. >> Do you think it could be merged? > > That's the OP_VAR_VALUE section -- what is the command that you're using that > ends up passing an integer type to the function? And what problem does it > cause? I enhance whatis command in my local code base to show the function's original variant name. If not with my change, the original result is: int schedule_delayed_work_on(int , struct delayed_work * , long unsigned int ); With my change, the result becomes: int schedule_delayed_work_on(int cpu, struct delayed_work * dwork, long unsigned int delay); So it look nicer, right? :) But I meet an issue that whatis is not intent for showing function prototype only, but for structure/union/integer type. So I need to add arg_to_datatype in whatis_variable to tell the passed data's type to whether call gdb's function for exacting out the function parameter's name. Then I face the bug as I reported... > > Dave > Thanks, Lei > >> >> +--- gdb-7.3.1/gdb/symtab.c >> ++++ gdb-7.3.1/gdb/symtab.c >> +@@ -5064,14 +5064,13 @@ gdb_get_datatype(struct gnu_request *req) >> + if (gdb_CRASHDEBUG(2)) >> + console("expr->elts[0].opcode: >> OP_VAR_VALUE\n"); >> + type = expr->elts[2].symbol->type; >> +- if (TYPE_CODE(type) == TYPE_CODE_ENUM) { >> +- req->typecode = TYPE_CODE(type); >> +- req->value = >> SYMBOL_VALUE(expr->elts[2].symbol); >> +- req->tagname = TYPE_TAG_NAME(type); >> +- if (!req->tagname) { >> +- val = evaluate_type(expr); >> +- eval_enum(value_type(val), req); >> +- } >> ++ req->typecode = TYPE_CODE(type); >> ++ req->length = TYPE_LENGTH(type); >> ++ req->value = SYMBOL_VALUE(expr->elts[2].symbol); >> ++ req->tagname = TYPE_TAG_NAME(type); >> ++ if (!req->tagname) { >> ++ val = evaluate_type(expr); >> ++ eval_enum(value_type(val), req); >> + } >> + break; >> + >> >> Thanks, >> Lei >> -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility