* 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:
parent
a92e0d0a05
commit
011a70c2ea
@ -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>
|
||||
|
||||
* server.c (main): Allocate mem_buf with PBUFSIZ bytes.
|
||||
|
@ -87,6 +87,7 @@ case "${target}" in
|
||||
x86_64-*-linux*) srv_regobj=reg-x86-64.o
|
||||
srv_tgtobj="linux-low.o linux-x86-64-low.o i387-fp.o"
|
||||
srv_linux_regsets=yes
|
||||
srv_linux_thread_db=yes
|
||||
;;
|
||||
xscale*-*-linux*) srv_regobj=reg-arm.o
|
||||
srv_tgtobj="linux-low.o linux-arm-low.o"
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* GNU/Linux/x86-64 specific low level interface, for the remote server
|
||||
for GDB.
|
||||
Copyright 2002, 2004
|
||||
Copyright 2002, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
@ -129,9 +129,53 @@ struct regset_info target_regsets[] = {
|
||||
{ 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 = {
|
||||
-1,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
x86_64_get_pc,
|
||||
x86_64_set_pc,
|
||||
x86_64_breakpoint,
|
||||
x86_64_breakpoint_len,
|
||||
NULL,
|
||||
1,
|
||||
x86_64_breakpoint_at,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user