projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
daily update
[deliverable/binutils-gdb.git]
/
gdb
/
i386obsd-tdep.c
diff --git
a/gdb/i386obsd-tdep.c
b/gdb/i386obsd-tdep.c
index 782f54ddbd0be851aa96c97345b21f32e54fa806..9005304c334ea20345b10439f19731e2f58ed62b 100644
(file)
--- a/
gdb/i386obsd-tdep.c
+++ b/
gdb/i386obsd-tdep.c
@@
-1,7
+1,7
@@
/* Target-dependent code for OpenBSD/i386.
/* Target-dependent code for OpenBSD/i386.
- Copyright (C) 1988
, 1989, 1991, 1992, 1994, 1996, 2000, 2001, 2002, 2003,
-
2004, 2005, 2006, 2007 Free
Software Foundation, Inc.
+ Copyright (C) 1988
-1989, 1991-1992, 1994, 1996, 2000-2012 Free
+ Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-63,13
+63,13
@@
static const int i386obsd_sigreturn_offset[] = {
-1
};
-1
};
-/* Return whether
the frame preceding NEXT_FRAME corresponds to an
-
OpenBSD sigtramp
routine. */
+/* Return whether
THIS_FRAME corresponds to an OpenBSD sigtramp
+ routine. */
static int
static int
-i386obsd_sigtramp_p (struct frame_info *
next
_frame)
+i386obsd_sigtramp_p (struct frame_info *
this
_frame)
{
{
- CORE_ADDR pc =
frame_pc_unwind (next
_frame);
+ CORE_ADDR pc =
get_frame_pc (this
_frame);
CORE_ADDR start_pc = (pc & ~(i386obsd_page_size - 1));
/* The call sequence invoking sigreturn(2). */
const gdb_byte sigreturn[] =
CORE_ADDR start_pc = (pc & ~(i386obsd_page_size - 1));
/* The call sequence invoking sigreturn(2). */
const gdb_byte sigreturn[] =
@@
-81,7
+81,7
@@
i386obsd_sigtramp_p (struct frame_info *next_frame)
size_t buflen = sizeof sigreturn;
const int *offset;
gdb_byte *buf;
size_t buflen = sizeof sigreturn;
const int *offset;
gdb_byte *buf;
- char *name;
+ c
onst c
har *name;
/* If the function has a valid symbol name, it isn't a
trampoline. */
/* If the function has a valid symbol name, it isn't a
trampoline. */
@@
-101,7
+101,7
@@
i386obsd_sigtramp_p (struct frame_info *next_frame)
for (offset = i386obsd_sigreturn_offset; *offset != -1; offset++)
{
/* If we can't read the instructions, return zero. */
for (offset = i386obsd_sigreturn_offset; *offset != -1; offset++)
{
/* If we can't read the instructions, return zero. */
- if (!safe_frame_unwind_memory (
next
_frame, start_pc + *offset,
+ if (!safe_frame_unwind_memory (
this
_frame, start_pc + *offset,
buf, buflen))
return 0;
buf, buflen))
return 0;
@@
-228,6
+228,8
@@
static void
i386obsd_supply_uthread (struct regcache *regcache,
int regnum, CORE_ADDR addr)
{
i386obsd_supply_uthread (struct regcache *regcache,
int regnum, CORE_ADDR addr)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR sp_addr = addr + I386OBSD_UTHREAD_ESP_OFFSET;
CORE_ADDR sp = 0;
gdb_byte buf[4];
CORE_ADDR sp_addr = addr + I386OBSD_UTHREAD_ESP_OFFSET;
CORE_ADDR sp = 0;
gdb_byte buf[4];
@@
-240,12
+242,12
@@
i386obsd_supply_uthread (struct regcache *regcache,
int offset;
/* Fetch stack pointer from thread structure. */
int offset;
/* Fetch stack pointer from thread structure. */
- sp = read_memory_unsigned_integer (sp_addr, 4);
+ sp = read_memory_unsigned_integer (sp_addr, 4
, byte_order
);
/* Adjust the stack pointer such that it looks as if we just
returned from _thread_machdep_switch. */
offset = i386obsd_uthread_reg_offset[I386_EIP_REGNUM] + 4;
/* Adjust the stack pointer such that it looks as if we just
returned from _thread_machdep_switch. */
offset = i386obsd_uthread_reg_offset[I386_EIP_REGNUM] + 4;
- store_unsigned_integer (buf, 4, sp + offset);
+ store_unsigned_integer (buf, 4,
byte_order,
sp + offset);
regcache_raw_supply (regcache, I386_ESP_REGNUM, buf);
}
regcache_raw_supply (regcache, I386_ESP_REGNUM, buf);
}
@@
-257,7
+259,7
@@
i386obsd_supply_uthread (struct regcache *regcache,
/* Fetch stack pointer from thread structure (if we didn't
do so already). */
if (sp == 0)
/* Fetch stack pointer from thread structure (if we didn't
do so already). */
if (sp == 0)
- sp = read_memory_unsigned_integer (sp_addr, 4);
+ sp = read_memory_unsigned_integer (sp_addr, 4
, byte_order
);
/* Read the saved register from the stack frame. */
read_memory (sp + i386obsd_uthread_reg_offset[i], buf, 4);
/* Read the saved register from the stack frame. */
read_memory (sp + i386obsd_uthread_reg_offset[i], buf, 4);
@@
-270,6
+272,8
@@
static void
i386obsd_collect_uthread (const struct regcache *regcache,
int regnum, CORE_ADDR addr)
{
i386obsd_collect_uthread (const struct regcache *regcache,
int regnum, CORE_ADDR addr)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR sp_addr = addr + I386OBSD_UTHREAD_ESP_OFFSET;
CORE_ADDR sp = 0;
gdb_byte buf[4];
CORE_ADDR sp_addr = addr + I386OBSD_UTHREAD_ESP_OFFSET;
CORE_ADDR sp = 0;
gdb_byte buf[4];
@@
-285,10
+289,10
@@
i386obsd_collect_uthread (const struct regcache *regcache,
stored into the thread structure. */
offset = i386obsd_uthread_reg_offset[I386_EIP_REGNUM] + 4;
regcache_raw_collect (regcache, I386_ESP_REGNUM, buf);
stored into the thread structure. */
offset = i386obsd_uthread_reg_offset[I386_EIP_REGNUM] + 4;
regcache_raw_collect (regcache, I386_ESP_REGNUM, buf);
- sp = extract_unsigned_integer (buf, 4) - offset;
+ sp = extract_unsigned_integer (buf, 4
, byte_order
) - offset;
/* Store the stack pointer. */
/* Store the stack pointer. */
- write_memory_unsigned_integer (sp_addr, 4, sp);
+ write_memory_unsigned_integer (sp_addr, 4,
byte_order,
sp);
/* The stack pointer was (potentially) modified. Make sure we
build a proper stack frame. */
/* The stack pointer was (potentially) modified. Make sure we
build a proper stack frame. */
@@
-303,7
+307,7
@@
i386obsd_collect_uthread (const struct regcache *regcache,
/* Fetch stack pointer from thread structure (if we didn't
calculate it already). */
if (sp == 0)
/* Fetch stack pointer from thread structure (if we didn't
calculate it already). */
if (sp == 0)
- sp = read_memory_unsigned_integer (sp_addr, 4);
+ sp = read_memory_unsigned_integer (sp_addr, 4
, byte_order
);
/* Write the register into the stack frame. */
regcache_raw_collect (regcache, i, buf);
/* Write the register into the stack frame. */
regcache_raw_collect (regcache, i, buf);
@@
-337,24
+341,24
@@
static int i386obsd_tf_reg_offset[] =
};
static struct trad_frame_cache *
};
static struct trad_frame_cache *
-i386obsd_trapframe_cache
(struct frame_info *next
_frame, void **this_cache)
+i386obsd_trapframe_cache
(struct frame_info *this
_frame, void **this_cache)
{
{
+ struct gdbarch *gdbarch = get_frame_arch (this_frame);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct trad_frame_cache *cache;
CORE_ADDR func, sp, addr;
ULONGEST cs;
struct trad_frame_cache *cache;
CORE_ADDR func, sp, addr;
ULONGEST cs;
- char *name;
+ c
onst c
har *name;
int i;
if (*this_cache)
return *this_cache;
int i;
if (*this_cache)
return *this_cache;
- cache = trad_frame_cache_zalloc (
next
_frame);
+ cache = trad_frame_cache_zalloc (
this
_frame);
*this_cache = cache;
*this_cache = cache;
- /* NORMAL_FRAME matches the type in i386obsd_trapframe_unwind, but
- SIGTRAMP_FRAME might be more appropriate. */
- func = frame_func_unwind (next_frame, NORMAL_FRAME);
- sp = frame_unwind_register_unsigned (next_frame, I386_ESP_REGNUM);
+ func = get_frame_func (this_frame);
+ sp = get_frame_register_unsigned (this_frame, I386_ESP_REGNUM);
find_pc_partial_function (func, &name, NULL, NULL);
if (name && strncmp (name, "Xintr", 5) == 0)
find_pc_partial_function (func, &name, NULL, NULL);
if (name && strncmp (name, "Xintr", 5) == 0)
@@
-368,11
+372,11
@@
i386obsd_trapframe_cache(struct frame_info *next_frame, void **this_cache)
/* Read %cs from trap frame. */
addr += i386obsd_tf_reg_offset[I386_CS_REGNUM];
/* Read %cs from trap frame. */
addr += i386obsd_tf_reg_offset[I386_CS_REGNUM];
- cs = read_memory_unsigned_integer (addr, 4
);
+ cs = read_memory_unsigned_integer (addr, 4
, byte_order);
if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
{
/* Trap from user space; terminate backtrace. */
if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
{
/* Trap from user space; terminate backtrace. */
- trad_frame_set_id (cache,
null
_frame_id);
+ trad_frame_set_id (cache,
outer
_frame_id);
}
else
{
}
else
{
@@
-384,44
+388,40
@@
i386obsd_trapframe_cache(struct frame_info *next_frame, void **this_cache)
}
static void
}
static void
-i386obsd_trapframe_this_id (struct frame_info *
next
_frame,
+i386obsd_trapframe_this_id (struct frame_info *
this
_frame,
void **this_cache, struct frame_id *this_id)
{
struct trad_frame_cache *cache =
void **this_cache, struct frame_id *this_id)
{
struct trad_frame_cache *cache =
- i386obsd_trapframe_cache (
next
_frame, this_cache);
+ i386obsd_trapframe_cache (
this
_frame, this_cache);
trad_frame_get_id (cache, this_id);
}
trad_frame_get_id (cache, this_id);
}
-static void
-i386obsd_trapframe_prev_register (struct frame_info *next_frame,
- void **this_cache, int regnum,
- int *optimizedp, enum lval_type *lvalp,
- CORE_ADDR *addrp, int *realnump,
- gdb_byte *valuep)
+static struct value *
+i386obsd_trapframe_prev_register (struct frame_info *this_frame,
+ void **this_cache, int regnum)
{
struct trad_frame_cache *cache =
{
struct trad_frame_cache *cache =
- i386obsd_trapframe_cache (
next
_frame, this_cache);
+ i386obsd_trapframe_cache (
this
_frame, this_cache);
- trad_frame_get_register (cache, next_frame, regnum,
- optimizedp, lvalp, addrp, realnump, valuep);
+ return trad_frame_get_register (cache, this_frame, regnum);
}
static int
i386obsd_trapframe_sniffer (const struct frame_unwind *self,
}
static int
i386obsd_trapframe_sniffer (const struct frame_unwind *self,
- struct frame_info *
next
_frame,
+ struct frame_info *
this
_frame,
void **this_prologue_cache)
{
ULONGEST cs;
void **this_prologue_cache)
{
ULONGEST cs;
- char *name;
+ c
onst c
har *name;
/* Check Current Privilege Level and bail out if we're not executing
in kernel space. */
/* Check Current Privilege Level and bail out if we're not executing
in kernel space. */
- cs =
frame_unwind_register_unsigned (next
_frame, I386_CS_REGNUM);
+ cs =
get_frame_register_unsigned (this
_frame, I386_CS_REGNUM);
if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
return 0;
if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
return 0;
- find_pc_partial_function (
frame_pc_unwind (next
_frame), &name, NULL, NULL);
+ find_pc_partial_function (
get_frame_pc (this
_frame), &name, NULL, NULL);
return (name && (strcmp (name, "calltrap") == 0
|| strcmp (name, "syscall1") == 0
|| strncmp (name, "Xintr", 5) == 0
return (name && (strcmp (name, "calltrap") == 0
|| strcmp (name, "syscall1") == 0
|| strncmp (name, "Xintr", 5) == 0
@@
-433,6
+433,7
@@
static const struct frame_unwind i386obsd_trapframe_unwind = {
frame, but SIGTRAMP_FRAME would print <signal handler called>,
which really is not what we want here. */
NORMAL_FRAME,
frame, but SIGTRAMP_FRAME would print <signal handler called>,
which really is not what we want here. */
NORMAL_FRAME,
+ default_frame_unwind_stop_reason,
i386obsd_trapframe_this_id,
i386obsd_trapframe_prev_register,
NULL,
i386obsd_trapframe_this_id,
i386obsd_trapframe_prev_register,
NULL,
This page took
0.031437 seconds
and
4
git commands to generate.