projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't let bin2hex call strlen
[deliverable/binutils-gdb.git]
/
gdb
/
m68klinux-tdep.c
diff --git
a/gdb/m68klinux-tdep.c
b/gdb/m68klinux-tdep.c
index b5feab687e8aac8eb4c48fc70d087a3ff76e19c1..f6fed38f020cc0c1904b913f092e62fb8ec77785 100644
(file)
--- a/
gdb/m68klinux-tdep.c
+++ b/
gdb/m68klinux-tdep.c
@@
-1,7
+1,6
@@
/* Motorola m68k target-dependent support for GNU/Linux.
/* Motorola m68k target-dependent support for GNU/Linux.
- Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009
- Free Software Foundation, Inc.
+ Copyright (C) 1996-2014 Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-24,7
+23,7
@@
#include "floatformat.h"
#include "frame.h"
#include "target.h"
#include "floatformat.h"
#include "frame.h"
#include "target.h"
-#include
"gdb_string.h"
+#include
<string.h>
#include "gdbtypes.h"
#include "osabi.h"
#include "regcache.h"
#include "gdbtypes.h"
#include "osabi.h"
#include "regcache.h"
@@
-38,6
+37,7
@@
#include "auxv.h"
#include "observer.h"
#include "elf/common.h"
#include "auxv.h"
#include "observer.h"
#include "elf/common.h"
+#include "linux-tdep.h"
\f
/* Offsets (in target ints) into jmp_buf. */
\f
/* Offsets (in target ints) into jmp_buf. */
@@
-65,21
+65,22
@@
static int
m68k_linux_pc_in_sigtramp (struct frame_info *this_frame)
{
static int
m68k_linux_pc_in_sigtramp (struct frame_info *this_frame)
{
- CORE_ADDR sp;
+ struct gdbarch *gdbarch = get_frame_arch (this_frame);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
gdb_byte buf[12];
unsigned long insn0, insn1, insn2;
CORE_ADDR pc = get_frame_pc (this_frame);
if (!safe_frame_unwind_memory (this_frame, pc - 4, buf, sizeof (buf)))
return 0;
gdb_byte buf[12];
unsigned long insn0, insn1, insn2;
CORE_ADDR pc = get_frame_pc (this_frame);
if (!safe_frame_unwind_memory (this_frame, pc - 4, buf, sizeof (buf)))
return 0;
- insn1 = extract_unsigned_integer (buf + 4, 4);
- insn2 = extract_unsigned_integer (buf + 8, 4);
+ insn1 = extract_unsigned_integer (buf + 4, 4
, byte_order
);
+ insn2 = extract_unsigned_integer (buf + 8, 4
, byte_order
);
if (IS_SIGTRAMP (insn1, insn2))
return 1;
if (IS_RT_SIGTRAMP (insn1, insn2))
return 2;
if (IS_SIGTRAMP (insn1, insn2))
return 1;
if (IS_RT_SIGTRAMP (insn1, insn2))
return 2;
- insn0 = extract_unsigned_integer (buf, 4);
+ insn0 = extract_unsigned_integer (buf, 4
, byte_order
);
if (IS_SIGTRAMP (insn0, insn1))
return 1;
if (IS_RT_SIGTRAMP (insn0, insn1))
if (IS_SIGTRAMP (insn0, insn1))
return 1;
if (IS_RT_SIGTRAMP (insn0, insn1))
@@
-222,24
+223,20
@@
m68k_linux_inferior_created (struct target_ops *objfile, int from_tty)
static struct m68k_linux_sigtramp_info
m68k_linux_get_sigtramp_info (struct frame_info *this_frame)
{
static struct m68k_linux_sigtramp_info
m68k_linux_get_sigtramp_info (struct frame_info *this_frame)
{
+ struct gdbarch *gdbarch = get_frame_arch (this_frame);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR sp;
struct m68k_linux_sigtramp_info info;
CORE_ADDR sp;
struct m68k_linux_sigtramp_info info;
+ /* Determine whether we are running on a uClinux or normal GNU/Linux
+ target so we can use the correct sigcontext layouts. */
if (target_is_uclinux == -1)
if (target_is_uclinux == -1)
- {
- /* Determine whether we are running on a uClinux or normal GNU/Linux
- target so we can use the correct sigcontext layouts. */
- CORE_ADDR dummy;
-
- target_is_uclinux
- = (target_auxv_search (¤t_target, AT_NULL, &dummy) > 0
- && target_auxv_search (¤t_target, AT_PAGESZ, &dummy) == 0);
- }
+ target_is_uclinux = linux_is_uclinux ();
sp = get_frame_register_unsigned (this_frame, M68K_SP_REGNUM);
/* Get sigcontext address, it is the third parameter on the stack. */
sp = get_frame_register_unsigned (this_frame, M68K_SP_REGNUM);
/* Get sigcontext address, it is the third parameter on the stack. */
- info.sigcontext_addr = read_memory_unsigned_integer (sp + 8, 4);
+ info.sigcontext_addr = read_memory_unsigned_integer (sp + 8, 4
, byte_order
);
if (m68k_linux_pc_in_sigtramp (this_frame) == 2)
info.sc_reg_offset = m68k_linux_ucontext_reg_offset;
if (m68k_linux_pc_in_sigtramp (this_frame) == 2)
info.sc_reg_offset = m68k_linux_ucontext_reg_offset;
@@
-258,7
+255,9
@@
m68k_linux_sigtramp_frame_cache (struct frame_info *this_frame,
{
struct frame_id this_id;
struct trad_frame_cache *cache;
{
struct frame_id this_id;
struct trad_frame_cache *cache;
- struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
+ struct gdbarch *gdbarch = get_frame_arch (this_frame);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct m68k_linux_sigtramp_info info;
gdb_byte buf[4];
int i;
struct m68k_linux_sigtramp_info info;
gdb_byte buf[4];
int i;
@@
-274,8
+273,8
@@
m68k_linux_sigtramp_frame_cache (struct frame_info *this_frame,
trampoline. */
get_frame_register (this_frame, M68K_SP_REGNUM, buf);
/* See the end of m68k_push_dummy_call. */
trampoline. */
get_frame_register (this_frame, M68K_SP_REGNUM, buf);
/* See the end of m68k_push_dummy_call. */
- this_id = frame_id_build (extract_unsigned_integer (buf, 4
) - 4 + 8,
- get_frame_pc (this_frame));
+ this_id = frame_id_build (extract_unsigned_integer (buf, 4
, byte_order)
+
- 4 + 8,
get_frame_pc (this_frame));
trad_frame_set_id (cache, this_id);
info = m68k_linux_get_sigtramp_info (this_frame);
trad_frame_set_id (cache, this_id);
info = m68k_linux_get_sigtramp_info (this_frame);
@@
-321,6
+320,7
@@
m68k_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
static const struct frame_unwind m68k_linux_sigtramp_frame_unwind =
{
SIGTRAMP_FRAME,
static const struct frame_unwind m68k_linux_sigtramp_frame_unwind =
{
SIGTRAMP_FRAME,
+ default_frame_unwind_stop_reason,
m68k_linux_sigtramp_frame_this_id,
m68k_linux_sigtramp_frame_prev_register,
NULL,
m68k_linux_sigtramp_frame_this_id,
m68k_linux_sigtramp_frame_prev_register,
NULL,
@@
-332,6
+332,8
@@
m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ linux_init_abi (info, gdbarch);
+
tdep->jb_pc = M68K_LINUX_JB_PC;
tdep->jb_elt_size = M68K_LINUX_JB_ELEMENT_SIZE;
tdep->jb_pc = M68K_LINUX_JB_PC;
tdep->jb_elt_size = M68K_LINUX_JB_ELEMENT_SIZE;
@@
-362,8
+364,13
@@
m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* Enable TLS support. */
set_gdbarch_fetch_tls_load_module_address (gdbarch,
svr4_fetch_objfile_link_map);
/* Enable TLS support. */
set_gdbarch_fetch_tls_load_module_address (gdbarch,
svr4_fetch_objfile_link_map);
+
+ set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type);
}
}
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_m68k_linux_tdep;
+
void
_initialize_m68k_linux_tdep (void)
{
void
_initialize_m68k_linux_tdep (void)
{
This page took
0.025951 seconds
and
4
git commands to generate.