* configure.srv (x86_64-*-linux*): Turn on thread_db support.

* linux-x86-64-low.c (x86_64_breakpoint, x86_64_breakpoint_len)
	(x86_64_get_pc, x86_64_set_pc, x86_64_breakpoint_at): New.
	(the_low_target): Update.
This commit is contained in:
Daniel Jacobowitz 2005-11-02 19:54:44 +00:00
parent a92e0d0a05
commit 011a70c2ea
3 changed files with 53 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2005-11-02 Daniel Jacobowitz <dan@codesourcery.com>
* configure.srv (x86_64-*-linux*): Turn on thread_db support.
* linux-x86-64-low.c (x86_64_breakpoint, x86_64_breakpoint_len)
(x86_64_get_pc, x86_64_set_pc, x86_64_breakpoint_at): New.
(the_low_target): Update.
2005-10-25 Andreas Schwab <schwab@suse.de> 2005-10-25 Andreas Schwab <schwab@suse.de>
* server.c (main): Allocate mem_buf with PBUFSIZ bytes. * server.c (main): Allocate mem_buf with PBUFSIZ bytes.

View File

@ -87,6 +87,7 @@ case "${target}" in
x86_64-*-linux*) srv_regobj=reg-x86-64.o x86_64-*-linux*) srv_regobj=reg-x86-64.o
srv_tgtobj="linux-low.o linux-x86-64-low.o i387-fp.o" srv_tgtobj="linux-low.o linux-x86-64-low.o i387-fp.o"
srv_linux_regsets=yes srv_linux_regsets=yes
srv_linux_thread_db=yes
;; ;;
xscale*-*-linux*) srv_regobj=reg-arm.o xscale*-*-linux*) srv_regobj=reg-arm.o
srv_tgtobj="linux-low.o linux-arm-low.o" srv_tgtobj="linux-low.o linux-arm-low.o"

View File

@ -1,6 +1,6 @@
/* GNU/Linux/x86-64 specific low level interface, for the remote server /* GNU/Linux/x86-64 specific low level interface, for the remote server
for GDB. for GDB.
Copyright 2002, 2004 Copyright 2002, 2004, 2005
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GDB. This file is part of GDB.
@ -129,9 +129,53 @@ struct regset_info target_regsets[] = {
{ 0, 0, -1, -1, NULL, NULL } { 0, 0, -1, -1, NULL, NULL }
}; };
static const unsigned char x86_64_breakpoint[] = { 0xCC };
#define x86_64_breakpoint_len 1
extern int debug_threads;
static CORE_ADDR
x86_64_get_pc ()
{
unsigned long pc;
collect_register_by_name ("rip", &pc);
if (debug_threads)
fprintf (stderr, "stop pc (before any decrement) is %08lx\n", pc);
return pc;
}
static void
x86_64_set_pc (CORE_ADDR newpc)
{
if (debug_threads)
fprintf (stderr, "set pc to %08lx\n", (long) newpc);
supply_register_by_name ("rip", &newpc);
}
static int
x86_64_breakpoint_at (CORE_ADDR pc)
{
unsigned char c;
read_inferior_memory (pc, &c, 1);
if (c == 0xCC)
return 1;
return 0;
}
struct linux_target_ops the_low_target = { struct linux_target_ops the_low_target = {
-1, -1,
NULL, NULL,
NULL, NULL,
NULL, NULL,
x86_64_get_pc,
x86_64_set_pc,
x86_64_breakpoint,
x86_64_breakpoint_len,
NULL,
1,
x86_64_breakpoint_at,
}; };