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
|