diff options
Diffstat (limited to 'gdb/m32r-linux-tdep.c')
-rw-r--r-- | gdb/m32r-linux-tdep.c | 183 |
1 files changed, 89 insertions, 94 deletions
diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c index c2f65df..a76090b 100644 --- a/gdb/m32r-linux-tdep.c +++ b/gdb/m32r-linux-tdep.c @@ -38,8 +38,6 @@ #include "linux-tdep.h" #include "gdbarch.h" - - /* Recognizing signal handler frames. */ /* GNU/Linux has two flavors of signals. Normal signal handlers, and @@ -78,7 +76,10 @@ supported too. */ static const gdb_byte linux_sigtramp_code[] = { - 0x67, 0x77, 0x10, 0xf2, + 0x67, + 0x77, + 0x10, + 0xf2, }; /* If PC is in a sigtramp routine, return the address of the start of @@ -99,7 +100,7 @@ m32r_linux_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame) if (pc % 2 != 0) { - if (!safe_frame_unwind_memory (this_frame, pc, {buf, 2})) + if (!safe_frame_unwind_memory (this_frame, pc, { buf, 2 })) return 0; if (memcmp (buf, linux_sigtramp_code, 2) == 0) @@ -108,7 +109,7 @@ m32r_linux_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame) return 0; } - if (!safe_frame_unwind_memory (this_frame, pc, {buf, 4})) + if (!safe_frame_unwind_memory (this_frame, pc, { buf, 4 })) return 0; if (memcmp (buf, linux_sigtramp_code, 4) != 0) @@ -148,12 +149,12 @@ m32r_linux_rt_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame) if (pc % 2 != 0) return 0; - if (!safe_frame_unwind_memory (this_frame, pc, {buf, 4})) + if (!safe_frame_unwind_memory (this_frame, pc, { buf, 4 })) return 0; if (memcmp (buf, linux_rt_sigtramp_code, 4) == 0) { - if (!safe_frame_unwind_memory (this_frame, pc + 4, {buf, 4})) + if (!safe_frame_unwind_memory (this_frame, pc + 4, { buf, 4 })) return 0; if (memcmp (buf, linux_rt_sigtramp_code + 4, 4) == 0) @@ -161,7 +162,7 @@ m32r_linux_rt_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame) } else if (memcmp (buf, linux_rt_sigtramp_code + 4, 4) == 0) { - if (!safe_frame_unwind_memory (this_frame, pc - 4, {buf, 4})) + if (!safe_frame_unwind_memory (this_frame, pc - 4, { buf, 4 })) return 0; if (memcmp (buf, linux_rt_sigtramp_code, 4) == 0) @@ -190,30 +191,30 @@ m32r_linux_pc_in_sigtramp (CORE_ADDR pc, const char *name, /* From <asm/sigcontext.h>. */ static int m32r_linux_sc_reg_offset[] = { - 4 * 4, /* r0 */ - 5 * 4, /* r1 */ - 6 * 4, /* r2 */ - 7 * 4, /* r3 */ - 0 * 4, /* r4 */ - 1 * 4, /* r5 */ - 2 * 4, /* r6 */ - 8 * 4, /* r7 */ - 9 * 4, /* r8 */ - 10 * 4, /* r9 */ - 11 * 4, /* r10 */ - 12 * 4, /* r11 */ - 13 * 4, /* r12 */ - 21 * 4, /* fp */ - 22 * 4, /* lr */ - -1 * 4, /* sp */ - 16 * 4, /* psw */ - -1 * 4, /* cbr */ - 23 * 4, /* spi */ - 20 * 4, /* spu */ - 19 * 4, /* bpc */ - 17 * 4, /* pc */ - 15 * 4, /* accl */ - 14 * 4 /* acch */ + 4 * 4, /* r0 */ + 5 * 4, /* r1 */ + 6 * 4, /* r2 */ + 7 * 4, /* r3 */ + 0 * 4, /* r4 */ + 1 * 4, /* r5 */ + 2 * 4, /* r6 */ + 8 * 4, /* r7 */ + 9 * 4, /* r8 */ + 10 * 4, /* r9 */ + 11 * 4, /* r10 */ + 12 * 4, /* r11 */ + 13 * 4, /* r12 */ + 21 * 4, /* fp */ + 22 * 4, /* lr */ + -1 * 4, /* sp */ + 16 * 4, /* psw */ + -1 * 4, /* cbr */ + 23 * 4, /* spi */ + 20 * 4, /* spu */ + 19 * 4, /* bpc */ + 17 * 4, /* pc */ + 15 * 4, /* accl */ + 14 * 4 /* acch */ }; struct m32r_frame_cache @@ -223,8 +224,7 @@ struct m32r_frame_cache }; static struct m32r_frame_cache * -m32r_linux_sigtramp_frame_cache (frame_info_ptr this_frame, - void **this_cache) +m32r_linux_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache) { struct m32r_frame_cache *cache; CORE_ADDR sigcontext_addr, addr; @@ -258,8 +258,8 @@ m32r_linux_sigtramp_frame_cache (frame_info_ptr this_frame, for (regnum = 0; regnum < sizeof (m32r_linux_sc_reg_offset) / 4; regnum++) { if (m32r_linux_sc_reg_offset[regnum] >= 0) - cache->saved_regs[regnum].set_addr (sigcontext_addr - + m32r_linux_sc_reg_offset[regnum]); + cache->saved_regs[regnum].set_addr ( + sigcontext_addr + m32r_linux_sc_reg_offset[regnum]); } return cache; @@ -267,11 +267,10 @@ m32r_linux_sigtramp_frame_cache (frame_info_ptr this_frame, static void m32r_linux_sigtramp_frame_this_id (frame_info_ptr this_frame, - void **this_cache, - struct frame_id *this_id) + void **this_cache, struct frame_id *this_id) { - struct m32r_frame_cache *cache = - m32r_linux_sigtramp_frame_cache (this_frame, this_cache); + struct m32r_frame_cache *cache + = m32r_linux_sigtramp_frame_cache (this_frame, this_cache); (*this_id) = frame_id_build (cache->base, cache->pc); } @@ -280,8 +279,8 @@ static struct value * m32r_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) { - struct m32r_frame_cache *cache = - m32r_linux_sigtramp_frame_cache (this_frame, this_cache); + struct m32r_frame_cache *cache + = m32r_linux_sigtramp_frame_cache (this_frame, this_cache); return trad_frame_get_prev_register (this_frame, cache->saved_regs, regnum); } @@ -301,44 +300,43 @@ m32r_linux_sigtramp_frame_sniffer (const struct frame_unwind *self, return 0; } -static const struct frame_unwind m32r_linux_sigtramp_frame_unwind = { - "m32r linux sigtramp", - SIGTRAMP_FRAME, - default_frame_unwind_stop_reason, - m32r_linux_sigtramp_frame_this_id, - m32r_linux_sigtramp_frame_prev_register, - NULL, - m32r_linux_sigtramp_frame_sniffer -}; +static const struct frame_unwind m32r_linux_sigtramp_frame_unwind + = { "m32r linux sigtramp", + SIGTRAMP_FRAME, + default_frame_unwind_stop_reason, + m32r_linux_sigtramp_frame_this_id, + m32r_linux_sigtramp_frame_prev_register, + NULL, + m32r_linux_sigtramp_frame_sniffer }; /* Mapping between the registers in `struct pt_regs' format and GDB's register array layout. */ static int m32r_pt_regs_offset[] = { - 4 * 4, /* r0 */ - 4 * 5, /* r1 */ - 4 * 6, /* r2 */ - 4 * 7, /* r3 */ - 4 * 0, /* r4 */ - 4 * 1, /* r5 */ - 4 * 2, /* r6 */ - 4 * 8, /* r7 */ - 4 * 9, /* r8 */ - 4 * 10, /* r9 */ - 4 * 11, /* r10 */ - 4 * 12, /* r11 */ - 4 * 13, /* r12 */ - 4 * 24, /* fp */ - 4 * 25, /* lr */ - 4 * 23, /* sp */ - 4 * 19, /* psw */ - 4 * 19, /* cbr */ - 4 * 26, /* spi */ - 4 * 23, /* spu */ - 4 * 22, /* bpc */ - 4 * 20, /* pc */ - 4 * 16, /* accl */ - 4 * 15 /* acch */ + 4 * 4, /* r0 */ + 4 * 5, /* r1 */ + 4 * 6, /* r2 */ + 4 * 7, /* r3 */ + 4 * 0, /* r4 */ + 4 * 1, /* r5 */ + 4 * 2, /* r6 */ + 4 * 8, /* r7 */ + 4 * 9, /* r8 */ + 4 * 10, /* r9 */ + 4 * 11, /* r10 */ + 4 * 12, /* r11 */ + 4 * 13, /* r12 */ + 4 * 24, /* fp */ + 4 * 25, /* lr */ + 4 * 23, /* sp */ + 4 * 19, /* psw */ + 4 * 19, /* cbr */ + 4 * 26, /* spi */ + 4 * 23, /* spu */ + 4 * 22, /* bpc */ + 4 * 20, /* pc */ + 4 * 16, /* accl */ + 4 * 15 /* acch */ }; #define PSW_OFFSET (4 * 19) @@ -354,8 +352,7 @@ m32r_linux_supply_gregset (const struct regset *regset, const void *gregs, size_t size) { const gdb_byte *regs = (const gdb_byte *) gregs; - enum bfd_endian byte_order = - gdbarch_byte_order (regcache->arch ()); + enum bfd_endian byte_order = gdbarch_byte_order (regcache->arch ()); ULONGEST psw, bbpsw; gdb_byte buf[4]; const gdb_byte *p; @@ -393,13 +390,12 @@ m32r_linux_supply_gregset (const struct regset *regset, static void m32r_linux_collect_gregset (const struct regset *regset, - const struct regcache *regcache, - int regnum, void *gregs, size_t size) + const struct regcache *regcache, int regnum, + void *gregs, size_t size) { gdb_byte *regs = (gdb_byte *) gregs; int i; - enum bfd_endian byte_order = - gdbarch_byte_order (regcache->arch ()); + enum bfd_endian byte_order = gdbarch_byte_order (regcache->arch ()); ULONGEST psw; gdb_byte buf[4]; @@ -422,8 +418,9 @@ m32r_linux_collect_gregset (const struct regset *regset, case CBR_REGNUM: break; case M32R_SP_REGNUM: - regcache->raw_collect - (i, regs + ((psw & 0x80) ? SPU_OFFSET : SPI_OFFSET)); + regcache->raw_collect (i, + regs + + ((psw & 0x80) ? SPU_OFFSET : SPI_OFFSET)); break; default: regcache->raw_collect (i, regs + m32r_pt_regs_offset[i]); @@ -431,10 +428,8 @@ m32r_linux_collect_gregset (const struct regset *regset, } } -static const struct regset m32r_linux_gregset = { - NULL, - m32r_linux_supply_gregset, m32r_linux_collect_gregset -}; +static const struct regset m32r_linux_gregset + = { NULL, m32r_linux_supply_gregset, m32r_linux_collect_gregset }; static void m32r_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, @@ -442,14 +437,13 @@ m32r_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, void *cb_data, const struct regcache *regcache) { - cb (".reg", M32R_LINUX_GREGS_SIZE, M32R_LINUX_GREGS_SIZE, &m32r_linux_gregset, - NULL, cb_data); + cb (".reg", M32R_LINUX_GREGS_SIZE, M32R_LINUX_GREGS_SIZE, + &m32r_linux_gregset, NULL, cb_data); } static void m32r_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - linux_init_abi (info, gdbarch, 0); /* Since EVB register is not available for native debug, we reduce @@ -460,12 +454,12 @@ m32r_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* GNU/Linux uses SVR4-style shared libraries. */ set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); - set_solib_svr4_fetch_link_map_offsets - (gdbarch, linux_ilp32_fetch_link_map_offsets); + set_solib_svr4_fetch_link_map_offsets (gdbarch, + linux_ilp32_fetch_link_map_offsets); /* Core file support. */ - set_gdbarch_iterate_over_regset_sections - (gdbarch, m32r_linux_iterate_over_regset_sections); + set_gdbarch_iterate_over_regset_sections ( + gdbarch, m32r_linux_iterate_over_regset_sections); /* Enable TLS support. */ set_gdbarch_fetch_tls_load_module_address (gdbarch, @@ -473,6 +467,7 @@ m32r_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) } void _initialize_m32r_linux_tdep (); + void _initialize_m32r_linux_tdep () { |