STATE_PTRACED,
STATE_ZOMBIE,
STATE_DEAD,
+ STATE_DISK_SLEEP,
STATE_LAST
};
{
switch (state)
{
- case STATE_INSTABLE: return "STATE_INSTABLE";
- case STATE_ENOENT: return "STATE_ENOENT";
- case STATE_SLEEPING: return "STATE_SLEEPING";
- case STATE_RUNNING: return "STATE_RUNNING";
- case STATE_STOPPED: return "STATE_STOPPED";
- case STATE_PTRACED: return "STATE_PTRACED";
- case STATE_ZOMBIE: return "STATE_ZOMBIE";
- case STATE_DEAD: return "STATE_DEAD";
+ case STATE_INSTABLE: return "STATE_INSTABLE";
+ case STATE_ENOENT: return "STATE_ENOENT";
+ case STATE_SLEEPING: return "STATE_SLEEPING";
+ case STATE_RUNNING: return "STATE_RUNNING";
+ case STATE_STOPPED: return "STATE_STOPPED";
+ case STATE_PTRACED: return "STATE_PTRACED";
+ case STATE_ZOMBIE: return "STATE_ZOMBIE";
+ case STATE_DEAD: return "STATE_DEAD";
+ case STATE_DISK_SLEEP: return "STATE_DISK_SLEEP";
default: crash ();
}
/* NOTREACHED */
/* FIXME: What does it mean? */
else if (strcmp (line + length, "X (dead)\n") == 0)
found = STATE_DEAD;
+ else if (strcmp (line + length, "D (disk sleep)\n") == 0)
+ found = STATE_DISK_SLEEP;
else
{
fprintf (stderr, "Found an unknown state: %s", line + length);
GElf_Sym sym;
sym_count = dwfl_module_getsymtab (module);
-/* "/usr/lib/debug/lib64/ld-2.4.so.debug"? */
-#if 0
+ if (sym_count == -1)
+ return DWARF_CB_OK;
assert (sym_count >= 0);
-#endif
+
for (ndx = 0; ndx < sym_count; ndx++)
{
const char *name_got;
fprintf (stderr, "err = %d\n", err);
abort ();
}
- assert (attach_state->threads_count > 0);
+ /* Do not: assert (attach_state->threads_count > 0);
+ as during early initialization we really may get 0. */
}
struct attach_state_struct *attach (pid_t pid)