Blame


1 e8a7b969 2004-12-27 devnull #include <u.h>
2 e8a7b969 2004-12-27 devnull #include <thread_db.h>
3 e8a7b969 2004-12-27 devnull #include <sys/ptrace.h>
4 e8a7b969 2004-12-27 devnull #include <errno.h>
5 e8a7b969 2004-12-27 devnull #include <sys/procfs.h> /* psaddr_t */
6 e8a7b969 2004-12-27 devnull #include <libc.h>
7 e8a7b969 2004-12-27 devnull #include <mach.h>
8 e8a7b969 2004-12-27 devnull
9 e8a7b969 2004-12-27 devnull static char *tderrstr[] =
10 e8a7b969 2004-12-27 devnull {
11 e8a7b969 2004-12-27 devnull [TD_OK] "no error",
12 e8a7b969 2004-12-27 devnull [TD_ERR] "some error",
13 e8a7b969 2004-12-27 devnull [TD_NOTHR] "no matching thread found",
14 e8a7b969 2004-12-27 devnull [TD_NOSV] "no matching synchronization handle found",
15 e8a7b969 2004-12-27 devnull [TD_NOLWP] "no matching light-weight process found",
16 e8a7b969 2004-12-27 devnull [TD_BADPH] "invalid process handle",
17 e8a7b969 2004-12-27 devnull [TD_BADTH] "invalid thread handle",
18 e8a7b969 2004-12-27 devnull [TD_BADSH] "invalid synchronization handle",
19 e8a7b969 2004-12-27 devnull [TD_BADTA] "invalid thread agent",
20 e8a7b969 2004-12-27 devnull [TD_BADKEY] "invalid key",
21 e8a7b969 2004-12-27 devnull [TD_NOMSG] "no event available",
22 e8a7b969 2004-12-27 devnull [TD_NOFPREGS] "no floating-point register content available",
23 e8a7b969 2004-12-27 devnull [TD_NOLIBTHREAD] "application not linked with thread library",
24 e8a7b969 2004-12-27 devnull [TD_NOEVENT] "requested event is not supported",
25 e8a7b969 2004-12-27 devnull [TD_NOEVENT] "requested event is not supported",
26 e8a7b969 2004-12-27 devnull [TD_NOCAPAB] "capability not available",
27 e8a7b969 2004-12-27 devnull [TD_DBERR] "internal debug library error",
28 e8a7b969 2004-12-27 devnull [TD_NOAPLIC] "operation is not applicable",
29 e8a7b969 2004-12-27 devnull [TD_NOTSD] "no thread-specific data available",
30 e8a7b969 2004-12-27 devnull [TD_MALLOC] "out of memory",
31 e8a7b969 2004-12-27 devnull [TD_PARTIALREG] "not entire register set was read or written",
32 e8a7b969 2004-12-27 devnull [TD_NOXREGS] "X register set not available for given threads",
33 e8a7b969 2004-12-27 devnull [TD_TLSDEFER] "thread has not yet allocated TLS for given module",
34 e8a7b969 2004-12-27 devnull [TD_VERSION] "version mismatch twixt libpthread and libthread_db",
35 e8a7b969 2004-12-27 devnull [TD_NOTLS] "there is no TLS segment in the given module",
36 e8a7b969 2004-12-27 devnull };
37 e8a7b969 2004-12-27 devnull
38 e8a7b969 2004-12-27 devnull static char*
39 e8a7b969 2004-12-27 devnull terr(int e)
40 e8a7b969 2004-12-27 devnull {
41 e8a7b969 2004-12-27 devnull static char buf[50];
42 e8a7b969 2004-12-27 devnull
43 e8a7b969 2004-12-27 devnull if(e < 0 || e >= nelem(tderrstr) || tderrstr[e] == nil){
44 e8a7b969 2004-12-27 devnull snprint(buf, sizeof buf, "thread err %d", e);
45 e8a7b969 2004-12-27 devnull return buf;
46 e8a7b969 2004-12-27 devnull }
47 e8a7b969 2004-12-27 devnull return tderrstr[e];
48 e8a7b969 2004-12-27 devnull }
49 e8a7b969 2004-12-27 devnull