aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads_db
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-10-08 07:03:03 +0000
committerUlrich Drepper <drepper@redhat.com>1999-10-08 07:03:03 +0000
commit9640bbe1c1fab7e1373e59160889b1fbc0bd000c (patch)
tree287038440c837cce542aba340414a0ce3b677f35 /linuxthreads_db
parent10507e559514de6b31d1b81cbcc3c81b662aef89 (diff)
downloadglibc-9640bbe1c1fab7e1373e59160889b1fbc0bd000c.tar.xz
glibc-9640bbe1c1fab7e1373e59160889b1fbc0bd000c.zip
Update.
1999-10-07 Ulrich Drepper <drepper@cygnus.com> * Implies: New file. * internals.h (struct _pthread_descr_struct): Add p_startfct. * manager.c (pthread_handle_create): Initialize p_startfct. * pthread.c: Define __linuxthread_pthread_sizeof_descr variable.
Diffstat (limited to 'linuxthreads_db')
-rw-r--r--linuxthreads_db/ChangeLog41
-rw-r--r--linuxthreads_db/Makefile49
-rw-r--r--linuxthreads_db/proc_service.h44
-rw-r--r--linuxthreads_db/td_init.c30
-rw-r--r--linuxthreads_db/td_log.c32
-rw-r--r--linuxthreads_db/td_ta_delete.c35
-rw-r--r--linuxthreads_db/td_ta_enable_stats.c30
-rw-r--r--linuxthreads_db/td_ta_event_addr.c30
-rw-r--r--linuxthreads_db/td_ta_get_nthreads.c40
-rw-r--r--linuxthreads_db/td_ta_get_ph.c32
-rw-r--r--linuxthreads_db/td_ta_get_stats.c30
-rw-r--r--linuxthreads_db/td_ta_map_id2thr.c47
-rw-r--r--linuxthreads_db/td_ta_map_lwp2thr.c62
-rw-r--r--linuxthreads_db/td_ta_new.c115
-rw-r--r--linuxthreads_db/td_ta_reset_stats.c30
-rw-r--r--linuxthreads_db/td_ta_setconcurrency.c30
-rw-r--r--linuxthreads_db/td_ta_thr_iter.c73
-rw-r--r--linuxthreads_db/td_ta_tsd_iter.c51
-rw-r--r--linuxthreads_db/td_thr_clear_event.c30
-rw-r--r--linuxthreads_db/td_thr_dbresume.c30
-rw-r--r--linuxthreads_db/td_thr_dbsuspend.c30
-rw-r--r--linuxthreads_db/td_thr_event_enable.c30
-rw-r--r--linuxthreads_db/td_thr_event_getmsg.c30
-rw-r--r--linuxthreads_db/td_thr_get_info.c55
-rw-r--r--linuxthreads_db/td_thr_getfpregs.c40
-rw-r--r--linuxthreads_db/td_thr_getgregs.c40
-rw-r--r--linuxthreads_db/td_thr_getxregs.c30
-rw-r--r--linuxthreads_db/td_thr_getxregsize.c30
-rw-r--r--linuxthreads_db/td_thr_set_event.c30
-rw-r--r--linuxthreads_db/td_thr_setfpregs.c40
-rw-r--r--linuxthreads_db/td_thr_setgregs.c40
-rw-r--r--linuxthreads_db/td_thr_setprio.c30
-rw-r--r--linuxthreads_db/td_thr_setsigpending.c31
-rw-r--r--linuxthreads_db/td_thr_setxregs.c30
-rw-r--r--linuxthreads_db/td_thr_sigsetmask.c30
-rw-r--r--linuxthreads_db/td_thr_tsd.c76
-rw-r--r--linuxthreads_db/td_thr_validate.c55
-rw-r--r--linuxthreads_db/thread_db.h426
-rw-r--r--linuxthreads_db/thread_dbP.h46
39 files changed, 1980 insertions, 0 deletions
diff --git a/linuxthreads_db/ChangeLog b/linuxthreads_db/ChangeLog
new file mode 100644
index 0000000000..1ee1a7e66a
--- /dev/null
+++ b/linuxthreads_db/ChangeLog
@@ -0,0 +1,41 @@
+1999-10-07 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile: New file.
+ * proc_service.h: New file.
+ * shlib-versions: New file.
+ * td_init.c: New file.
+ * td_log.c: New file.
+ * td_ta_delete.c: New file.
+ * td_ta_enable_stats.c: New file.
+ * td_ta_event_addr.c: New file.
+ * td_ta_get_nthreads.c: New file.
+ * td_ta_get_ph.c: New file.
+ * td_ta_get_stats.c: New file.
+ * td_ta_map_id2thr.c: New file.
+ * td_ta_map_lwp2thr.c: New file.
+ * td_ta_new.c: New file.
+ * td_ta_reset_stats.c: New file.
+ * td_ta_setconcurrency.c: New file.
+ * td_ta_thr_iter.c: New file.
+ * td_ta_tsd_iter.c: New file.
+ * td_thr_clear_event.c: New file.
+ * td_thr_dbresume.c: New file.
+ * td_thr_dbsuspend.c: New file.
+ * td_thr_event_enable.c: New file.
+ * td_thr_event_getmsg.c: New file.
+ * td_thr_get_info.c: New file.
+ * td_thr_getfpregs.c: New file.
+ * td_thr_getgregs.c: New file.
+ * td_thr_getxregs.c: New file.
+ * td_thr_getxregsize.c: New file.
+ * td_thr_set_event.c: New file.
+ * td_thr_setfpregs.c: New file.
+ * td_thr_setgregs.c: New file.
+ * td_thr_setprio.c: New file.
+ * td_thr_setsigpending.c: New file.
+ * td_thr_setxregs.c: New file.
+ * td_thr_sigsetmask.c: New file.
+ * td_thr_tsd.c: New file.
+ * td_thr_validate.c: New file.
+ * thread_db.h: New file.
+ * thread_dbP.h: New file.
diff --git a/linuxthreads_db/Makefile b/linuxthreads_db/Makefile
new file mode 100644
index 0000000000..fb2825cffb
--- /dev/null
+++ b/linuxthreads_db/Makefile
@@ -0,0 +1,49 @@
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU Library General Public
+# License along with the GNU C Library; see the file COPYING.LIB. If not,
+# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Makefile for linuxthreads debug library subdirectory of GNU C Library.
+
+subdir := linuxthreads_db
+
+libthread_db-version = 1
+
+extra-libs = libthread_db
+extra-libs-others := $(extra-libs)
+
+headers = thread_db.h
+libthread_db-routines = td_init td_log td_ta_delete td_ta_get_nthreads \
+ td_ta_get_ph td_ta_map_id2thr td_ta_map_lwp2thr \
+ td_ta_new td_ta_thr_iter td_ta_tsd_iter \
+ td_thr_get_info td_thr_getfpregs td_thr_getgregs \
+ td_thr_getxregs td_thr_getxregsize td_thr_setfpregs \
+ td_thr_setgregs td_thr_setprio td_thr_setsigpending \
+ td_thr_setxregs td_thr_sigsetmask td_thr_tsd \
+ td_thr_validate td_thr_dbsuspend td_thr_dbresume \
+ td_ta_setconcurrency td_ta_enable_stats \
+ td_ta_reset_stats td_ta_get_stats td_ta_event_addr \
+ td_thr_event_enable td_thr_set_event \
+ td_thr_clear_event td_thr_event_getmsg
+
+libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes))
+
+include ../Rules
+
+# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+# This ensures they will load libc.so for needed symbols if loaded by
+# a statically-linked program that hasn't already loaded it.
+$(objpfx)libpthread.so: $(common-objpfx)libc.so
diff --git a/linuxthreads_db/proc_service.h b/linuxthreads_db/proc_service.h
new file mode 100644
index 0000000000..6e7fea8a89
--- /dev/null
+++ b/linuxthreads_db/proc_service.h
@@ -0,0 +1,44 @@
+typedef enum {
+ PS_OK, /* generic "call succeeded" */
+ PS_ERR, /* generic. */
+ PS_BADPID, /* bad process handle */
+ PS_BADLID, /* bad lwp identifier */
+ PS_BADADDR, /* bad address */
+ PS_NOSYM, /* p_lookup() could not find given symbol */
+ PS_NOFREGS
+ /*
+ * FPU register set not available for given
+ * lwp
+ */
+} ps_err_e;
+
+typedef unsigned long paddr_t;
+
+
+
+
+struct ps_prochandle; /* user defined. */
+
+
+extern ps_err_e ps_pdread(struct ps_prochandle *,
+ psaddr_t, void *, size_t);
+extern ps_err_e ps_pdwrite(struct ps_prochandle *,
+ psaddr_t, const void *, size_t);
+extern ps_err_e ps_ptread(struct ps_prochandle *,
+ psaddr_t, void *, size_t);
+extern ps_err_e ps_ptwrite(struct ps_prochandle *,
+ psaddr_t, const void *, size_t);
+
+extern ps_err_e ps_pglobal_lookup(struct ps_prochandle *,
+ const char *object_name, const char *sym_name, psaddr_t *sym_addr);
+
+
+extern ps_err_e ps_lgetregs(struct ps_prochandle *,
+ lwpid_t, prgregset_t);
+extern ps_err_e ps_lsetregs(struct ps_prochandle *,
+ lwpid_t, const prgregset_t);
+extern ps_err_e ps_lgetfpregs(struct ps_prochandle *,
+ lwpid_t, prfpregset_t *);
+extern ps_err_e ps_lsetfpregs(struct ps_prochandle *,
+ lwpid_t, const prfpregset_t *);
+
diff --git a/linuxthreads_db/td_init.c b/linuxthreads_db/td_init.c
new file mode 100644
index 0000000000..e65edc4e93
--- /dev/null
+++ b/linuxthreads_db/td_init.c
@@ -0,0 +1,30 @@
+/* Initialization function of thread debugger support library.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "thread_dbP.h"
+
+
+td_err_e
+td_init (void)
+{
+ /* XXX We have to figure out what has to be done. */
+ LOG (__FUNCTION__);
+ return TD_OK;
+}
diff --git a/linuxthreads_db/td_log.c b/linuxthreads_db/td_log.c
new file mode 100644
index 0000000000..0c4a3670f5
--- /dev/null
+++ b/linuxthreads_db/td_log.c
@@ -0,0 +1,32 @@
+/* Noop, left for historical reasons.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "thread_dbP.h"
+
+
+td_err_e
+td_log (void)
+{
+ /* This interface is deprecated in the Sun interface. We provide it
+ for compatibility but don't do anyhting ourself. We might in
+ future do some logging if this seems reasonable. */
+ LOG (__FUNCTION__);
+ return TD_OK;
+}
diff --git a/linuxthreads_db/td_ta_delete.c b/linuxthreads_db/td_ta_delete.c
new file mode 100644
index 0000000000..a8031f2d27
--- /dev/null
+++ b/linuxthreads_db/td_ta_delete.c
@@ -0,0 +1,35 @@
+/* Detach to target process.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <stdlib.h>
+
+#include "thread_dbP.h"
+
+
+td_err_e
+td_ta_delete (td_thragent_t *ta)
+{
+ LOG (__FUNCTION__);
+
+ /* The handle was allocated in `td_ta_new'. */
+ free (ta);
+
+ return TD_OK;
+}
diff --git a/linuxthreads_db/td_ta_enable_stats.c b/linuxthreads_db/td_ta_enable_stats.c
new file mode 100644
index 0000000000..eb3a338b29
--- /dev/null
+++ b/linuxthreads_db/td_ta_enable_stats.c
@@ -0,0 +1,30 @@
+/* Enable collection of statistics for process.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "thread_dbP.h"
+
+
+td_err_e
+td_ta_enable_stats (const td_thragent_t *ta, int enable)
+{
+ /* XXX We have to figure out what has to be done. */
+ LOG (__FUNCTION__);
+ return TD_OK;
+}
diff --git a/linuxthreads_db/td_ta_event_addr.c b/linuxthreads_db/td_ta_event_addr.c
new file mode 100644
index 0000000000..6d6d4a850b
--- /dev/null
+++ b/linuxthreads_db/td_ta_event_addr.c
@@ -0,0 +1,30 @@
+/* Get event address.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "thread_dbP.h"
+
+
+td_err_e
+td_ta_event_addr (const td_thragent_t *ta, td_event_e event, td_notify_t *addr)
+{
+ /* XXX We have to figure out what has to be done. */
+ LOG (__FUNCTION__);
+ return TD_NOCAPAB;
+}
diff --git a/linuxthreads_db/td_ta_get_nthreads.c b/linuxthreads_db/td_ta_get_nthreads.c
new file mode 100644
index 0000000000..955555b2e5
--- /dev/null
+++ b/linuxthreads_db/td_ta_get_nthreads.c
@@ -0,0 +1,40 @@
+/* Get the number of threads in the process.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "thread_dbP.h"
+
+
+td_err_e
+td_ta_get_nthreads (const td_thragent_t *ta, int *np)
+{
+ psaddr_t addr;
+
+ LOG (__FUNCTION__);
+
+ /* Access the