This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] mips gdbarch-ification


Andrew Cagney wrote:
> 
> Michael,
> 
> The below should not be part of this change, be sure to not commit it.
> 
> (but thanks for cleaning up those methods)
> Andrew

Yoiks!  I must have diffed the wrong file.  Don't worry, 
(somehow) I managed to check in (only) the right changes.
This is what comes of having so many patches outstanding
(hint hint)


> > *************** mips_frame_chain (struct frame_info *fra
> > *** 2294,2302 ****
> >        we loop forever if we see a zero size frame.  */
> >     if (PROC_FRAME_REG (proc_desc) == SP_REGNUM
> >         && PROC_FRAME_OFFSET (proc_desc) == 0
> > !   /* The previous frame from a sigtramp frame might be frameless
> > !      and have frame size zero.  */
> > !       && !frame->signal_handler_caller)
> >       return 0;
> >     else
> >       return get_frame_pointer (frame, proc_desc);
> > --- 2302,2312 ----
> >        we loop forever if we see a zero size frame.  */
> >     if (PROC_FRAME_REG (proc_desc) == SP_REGNUM
> >         && PROC_FRAME_OFFSET (proc_desc) == 0
> > !       /* The previous frame from a sigtramp frame might be frameless
> > !      and have frame size zero.  */
> > !       && !frame->signal_handler_caller
> > !       /* Check if this is a call dummy frame.  */
> > !       && frame->pc != mips_call_dummy_address ())
> >       return 0;
> >     else
> >       return get_frame_pointer (frame, proc_desc);
> > *************** mips_o32o64_push_arguments (int nargs,
> > *** 2959,2965 ****
> >     argreg = A0_REGNUM;
> >     float_argreg = FPA0_REGNUM;
> >
> > !   /* the struct_return pointer occupies the first parameter-passing reg */
> >     if (struct_return)
> >       {
> >         if (mips_debug)
> > --- 2969,2975 ----
> >     argreg = A0_REGNUM;
> >     float_argreg = FPA0_REGNUM;
> >
> > !   /* The struct_return pointer occupies the first parameter-passing reg.  */
> >     if (struct_return)
> >       {
> >         if (mips_debug)
> > *************** mips_pop_frame (void)
> > *** 3346,3358 ****
> >     if (frame->saved_regs == NULL)
> >       FRAME_INIT_SAVED_REGS (frame);
> >     for (regnum = 0; regnum < NUM_REGS; regnum++)
> > !     {
> > !       if (regnum != SP_REGNUM && regnum != PC_REGNUM
> > !       && frame->saved_regs[regnum])
> > !     write_register (regnum,
> > !                     read_memory_integer (frame->saved_regs[regnum],
> > !                                          MIPS_SAVED_REGSIZE));
> > !     }
> >     write_register (SP_REGNUM, new_sp);
> >     flush_cached_frames ();
> >
> > --- 3356,3377 ----
> >     if (frame->saved_regs == NULL)
> >       FRAME_INIT_SAVED_REGS (frame);
> >     for (regnum = 0; regnum < NUM_REGS; regnum++)
> > !     if (regnum != SP_REGNUM && regnum != PC_REGNUM
> > !     && frame->saved_regs[regnum])
> > !       {
> > !     /* Floating point registers must not be sign extended,
> > !        in case MIPS_SAVED_REGSIZE = 4 but sizeof (FP0_REGNUM) == 8.  */
> > !
> > !     if (FP0_REGNUM <= regnum && regnum < FP0_REGNUM + 32)
> > !       write_register (regnum,
> > !                       read_memory_unsigned_integer (frame->saved_regs[regnum],
> > !                                                     MIPS_SAVED_REGSIZE));
> > !     else
> > !       write_register (regnum,
> > !                       read_memory_integer (frame->saved_regs[regnum],
> > !                                            MIPS_SAVED_REGSIZE));
> > !       }
> > !
> >     write_register (SP_REGNUM, new_sp);
> >     flush_cached_frames ();
> >
> > *************** return_value_location (struct type *valt
> > *** 4079,4093 ****
> >         if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
> >         && len < MIPS_SAVED_REGSIZE)
> >       {
> > !       /* "un-left-justify" the value in the low register */
> > !       lo->reg_offset = MIPS_SAVED_REGSIZE - len;
> > !       lo->len = len;
> >         hi->reg_offset = 0;
> >         hi->len = 0;
> >       }
> >         else if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
> >              && len > MIPS_SAVED_REGSIZE      /* odd-size structs */
> >              && len < MIPS_SAVED_REGSIZE * 2
> >              && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT ||
> >                  TYPE_CODE (valtype) == TYPE_CODE_UNION))
> >       {
> > --- 4098,4125 ----
> >         if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
> >         && len < MIPS_SAVED_REGSIZE)
> >       {
> > !       if ((gdbarch_tdep (current_gdbarch) -> mips_abi == MIPS_ABI_N32
> > !            || gdbarch_tdep (current_gdbarch) -> mips_abi == MIPS_ABI_N64)
> > !           && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
> > !               || TYPE_CODE (valtype) == TYPE_CODE_UNION))
> > !         {
> > !           /* Values are already aligned in the low register.  */
> > !           lo->reg_offset = 0;
> > !         }
> > !       else
> > !         {
> > !           /* "un-left-justify" the value in the low register */
> > !           lo->reg_offset = MIPS_SAVED_REGSIZE - len;
> > !         }
> >         hi->reg_offset = 0;
> > +       lo->len = len;
> >         hi->len = 0;
> >       }
> >         else if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
> >              && len > MIPS_SAVED_REGSIZE      /* odd-size structs */
> >              && len < MIPS_SAVED_REGSIZE * 2
> > +            && gdbarch_tdep (current_gdbarch) -> mips_abi != MIPS_ABI_N32
> > +            && gdbarch_tdep (current_gdbarch) -> mips_abi != MIPS_ABI_N64
> >              && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT ||
> >                  TYPE_CODE (valtype) == TYPE_CODE_UNION))
> >       {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]