diff options
author | Steven Kreuzer <skreuzer@FreeBSD.org> | 2010-11-16 20:39:48 +0000 |
---|---|---|
committer | Steven Kreuzer <skreuzer@FreeBSD.org> | 2010-11-16 20:39:48 +0000 |
commit | ade713343b20094ef59cfd831d3102f58ca4f8f6 (patch) | |
tree | a57bc51fcd78d5afef68927cd563c9988bd2601d /devel/gdb/files/patch-gdb-i386fbsd-tdep.c | |
parent | Add fix for vmware-user-suid-wrapper failes to load vmblock.ko (diff) |
GDB is a source-level debugger for Ada, C, C++, Objective-C, Pascal and
many other languages. GDB can target (i.e., debug programs running on)
more than a dozen different processor architectures, and GDB itself can
run on most popular GNU/Linux, Unix and Microsoft Windows variants.
This version of gdb has been modified by jhb@ to recognize freebsd threads
Reviewed by: John Baldwin <jhb@FreeBSD.org>, swell.k@gmail.com
Notes
Notes:
svn path=/head/; revision=264650
Diffstat (limited to 'devel/gdb/files/patch-gdb-i386fbsd-tdep.c')
-rw-r--r-- | devel/gdb/files/patch-gdb-i386fbsd-tdep.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/devel/gdb/files/patch-gdb-i386fbsd-tdep.c b/devel/gdb/files/patch-gdb-i386fbsd-tdep.c new file mode 100644 index 000000000000..2256796de096 --- /dev/null +++ b/devel/gdb/files/patch-gdb-i386fbsd-tdep.c @@ -0,0 +1,68 @@ +--- gdb/i386fbsd-tdep.c.orig 2010-09-30 13:39:50.654492000 -0400 ++++ gdb/i386fbsd-tdep.c 2010-09-30 13:40:43.858675000 -0400 +@@ -28,7 +28,6 @@ + + #include "i386-tdep.h" + #include "i387-tdep.h" +-#include "bsd-uthread.h" + #include "solib-svr4.h" + + /* FreeBSD 3.0-RELEASE or later. */ +@@ -84,46 +83,6 @@ + }; + + static void +-i386fbsd_supply_uthread (struct regcache *regcache, +- int regnum, CORE_ADDR addr) +-{ +- char buf[4]; +- int i; +- +- gdb_assert (regnum >= -1); +- +- for (i = 0; i < ARRAY_SIZE (i386fbsd_jmp_buf_reg_offset); i++) +- { +- if (i386fbsd_jmp_buf_reg_offset[i] != -1 +- && (regnum == -1 || regnum == i)) +- { +- read_memory (addr + i386fbsd_jmp_buf_reg_offset[i], buf, 4); +- regcache_raw_supply (regcache, i, buf); +- } +- } +-} +- +-static void +-i386fbsd_collect_uthread (const struct regcache *regcache, +- int regnum, CORE_ADDR addr) +-{ +- char buf[4]; +- int i; +- +- gdb_assert (regnum >= -1); +- +- for (i = 0; i < ARRAY_SIZE (i386fbsd_jmp_buf_reg_offset); i++) +- { +- if (i386fbsd_jmp_buf_reg_offset[i] != -1 +- && (regnum == -1 || regnum == i)) +- { +- regcache_raw_collect (regcache, i, buf); +- write_memory (addr + i386fbsd_jmp_buf_reg_offset[i], buf, 4); +- } +- } +-} +- +-static void + i386fbsdaout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) + { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); +@@ -148,10 +107,6 @@ + /* FreeBSD has a more complete `struct sigcontext'. */ + tdep->sc_reg_offset = i386fbsd_sc_reg_offset; + tdep->sc_num_regs = ARRAY_SIZE (i386fbsd_sc_reg_offset); +- +- /* FreeBSD provides a user-level threads implementation. */ +- bsd_uthread_set_supply_uthread (gdbarch, i386fbsd_supply_uthread); +- bsd_uthread_set_collect_uthread (gdbarch, i386fbsd_collect_uthread); + } + + static void |