Print this page
10132 smatch fixes for MDB
Reviewed by: Andy Fiddaman <andy@omniosce.org>


1503         (void) mdb_tgt_symbol_iter(mdb.m_target, obj, MDB_TGT_SYMTAB,
1504             MDB_TGT_BIND_ANY | MDB_TGT_TYPE_FILE, print_file, &i);
1505 
1506         return (DCMD_OK);
1507 }
1508 
1509 static const char *
1510 map_name(const mdb_map_t *map, const char *name)
1511 {
1512         if (map->map_flags & MDB_TGT_MAP_HEAP)
1513                 return ("[ heap ]");
1514         if (name != NULL && name[0] != 0)
1515                 return (name);
1516 
1517         if (map->map_flags & MDB_TGT_MAP_SHMEM)
1518                 return ("[ shmem ]");
1519         if (map->map_flags & MDB_TGT_MAP_STACK)
1520                 return ("[ stack ]");
1521         if (map->map_flags & MDB_TGT_MAP_ANON)
1522                 return ("[ anon ]");
1523         if (map->map_name != NULL)
1524                 return (map->map_name);
1525         return ("[ unknown ]");

1526 }
1527 
1528 /*ARGSUSED*/
1529 static int
1530 print_map(void *ignored, const mdb_map_t *map, const char *name)
1531 {
1532         name = map_name(map, name);
1533 
1534         mdb_printf("%?p %?p %?lx %s\n", map->map_base,
1535             map->map_base + map->map_size, map->map_size, name);
1536         return (0);
1537 }
1538 
1539 static int
1540 cmd_mappings(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
1541 {
1542         const mdb_map_t *m;
1543 
1544         if (argc > 1 || (argc != 0 && (flags & DCMD_ADDRSPEC)))
1545                 return (DCMD_USAGE);


2326 
2327         for (; argc-- != 0; argv++) {
2328                 if (argv->a_type == MDB_TYPE_STRING)
2329                         mdb_printf("%s ", argv->a_un.a_str);
2330                 else
2331                         mdb_printf("%llr ", argv->a_un.a_val);
2332         }
2333 
2334         mdb_printf("\n");
2335         return (DCMD_OK);
2336 }
2337 
2338 /*ARGSUSED*/
2339 static int
2340 cmd_head(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
2341 {
2342         uint64_t cnt = 10;
2343         const char *c;
2344         mdb_pipe_t p;
2345 
2346         if (!flags & DCMD_PIPE)
2347                 return (DCMD_USAGE);
2348 
2349         if (argc == 1 || argc == 2) {
2350                 const char *num;
2351 
2352                 if (argc == 1) {
2353                         if (argv[0].a_type != MDB_TYPE_STRING ||
2354                             *argv[0].a_un.a_str != '-')
2355                                 return (DCMD_USAGE);
2356 
2357                         num = argv[0].a_un.a_str + 1;
2358 
2359                 } else {
2360                         if (argv[0].a_type != MDB_TYPE_STRING ||
2361                             strcmp(argv[0].a_un.a_str, "-n") != 0)
2362                                 return (DCMD_USAGE);
2363 
2364                         num = argv[1].a_un.a_str;
2365                 }
2366 




1503         (void) mdb_tgt_symbol_iter(mdb.m_target, obj, MDB_TGT_SYMTAB,
1504             MDB_TGT_BIND_ANY | MDB_TGT_TYPE_FILE, print_file, &i);
1505 
1506         return (DCMD_OK);
1507 }
1508 
1509 static const char *
1510 map_name(const mdb_map_t *map, const char *name)
1511 {
1512         if (map->map_flags & MDB_TGT_MAP_HEAP)
1513                 return ("[ heap ]");
1514         if (name != NULL && name[0] != 0)
1515                 return (name);
1516 
1517         if (map->map_flags & MDB_TGT_MAP_SHMEM)
1518                 return ("[ shmem ]");
1519         if (map->map_flags & MDB_TGT_MAP_STACK)
1520                 return ("[ stack ]");
1521         if (map->map_flags & MDB_TGT_MAP_ANON)
1522                 return ("[ anon ]");
1523         if (map->map_name[0] == '\0')

1524                 return ("[ unknown ]");
1525         return (map->map_name);
1526 }
1527 
1528 /*ARGSUSED*/
1529 static int
1530 print_map(void *ignored, const mdb_map_t *map, const char *name)
1531 {
1532         name = map_name(map, name);
1533 
1534         mdb_printf("%?p %?p %?lx %s\n", map->map_base,
1535             map->map_base + map->map_size, map->map_size, name);
1536         return (0);
1537 }
1538 
1539 static int
1540 cmd_mappings(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
1541 {
1542         const mdb_map_t *m;
1543 
1544         if (argc > 1 || (argc != 0 && (flags & DCMD_ADDRSPEC)))
1545                 return (DCMD_USAGE);


2326 
2327         for (; argc-- != 0; argv++) {
2328                 if (argv->a_type == MDB_TYPE_STRING)
2329                         mdb_printf("%s ", argv->a_un.a_str);
2330                 else
2331                         mdb_printf("%llr ", argv->a_un.a_val);
2332         }
2333 
2334         mdb_printf("\n");
2335         return (DCMD_OK);
2336 }
2337 
2338 /*ARGSUSED*/
2339 static int
2340 cmd_head(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
2341 {
2342         uint64_t cnt = 10;
2343         const char *c;
2344         mdb_pipe_t p;
2345 
2346         if (!(flags & DCMD_PIPE))
2347                 return (DCMD_USAGE);
2348 
2349         if (argc == 1 || argc == 2) {
2350                 const char *num;
2351 
2352                 if (argc == 1) {
2353                         if (argv[0].a_type != MDB_TYPE_STRING ||
2354                             *argv[0].a_un.a_str != '-')
2355                                 return (DCMD_USAGE);
2356 
2357                         num = argv[0].a_un.a_str + 1;
2358 
2359                 } else {
2360                         if (argv[0].a_type != MDB_TYPE_STRING ||
2361                             strcmp(argv[0].a_un.a_str, "-n") != 0)
2362                                 return (DCMD_USAGE);
2363 
2364                         num = argv[1].a_un.a_str;
2365                 }
2366