----- 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?
Dave
 
 +--- 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