Пример #1
0
int
m68kbsd_fpreg_offset (struct gdbarch *gdbarch, int regnum)
{
  int fp_len = TYPE_LENGTH (gdbarch_register_type (gdbarch, regnum));
  
  if (regnum >= M68K_FPC_REGNUM)
    return 8 * fp_len + (regnum - M68K_FPC_REGNUM) * 4;

  return (regnum - M68K_FP0_REGNUM) * fp_len;
}
Пример #2
0
/* Get the register from the frame and make a printable representation
   of it in the data element.  */
static void
tui_register_format (struct gdbarch *gdbarch, struct frame_info *frame,
                     struct tui_data_element *data_element, int regnum)
{
    struct ui_file *stream;
    struct ui_file *old_stdout;
    const char *name;
    struct cleanup *cleanups;
    char *p, *s;
    int pos;
    struct type *type = gdbarch_register_type (gdbarch, regnum);

    name = gdbarch_register_name (gdbarch, regnum);
    if (name == 0)
    {
        return;
    }

    pagination_enabled = 0;
    old_stdout = gdb_stdout;
    stream = tui_sfileopen (256);
    gdb_stdout = stream;
    cleanups = make_cleanup (tui_restore_gdbout, (void*) old_stdout);
    if (TYPE_VECTOR (type) != 0 && 0)
    {
        gdb_byte buf[MAX_REGISTER_SIZE];
        int len;

        len = register_size (current_gdbarch, regnum);
        fprintf_filtered (stream, "%-14s ", name);
        get_frame_register (frame, regnum, buf);
        print_scalar_formatted (buf, type, 'f', len, stream);
    }
    else
    {
        gdbarch_print_registers_info (current_gdbarch, stream,
                                      frame, regnum, 1);
    }

    /* Save formatted output in the buffer.  */
    p = tui_file_get_strbuf (stream);

    /* Remove the possible \n.  */
    s = strrchr (p, '\n');
    if (s && s[1] == 0)
        *s = 0;

    xfree (data_element->content);
    data_element->content = xstrdup (p);
    do_cleanups (cleanups);
}