DWARF2 exception doesn't work with gcc and gas on MIPS.

H . J . Lu hjl@lucon.org
Thu Jun 14 12:25:00 GMT 2001


On Thu, Jun 14, 2001 at 12:05:43PM -0700, Richard Henderson wrote:
> + 
> + (define_insn "exception_receiver"
> +   [(unspec_volatile [(const_int 0)] 4)]
> +   "TARGET_ABICALLS && (mips_abi == ABI_32 || mips_abi == ABI_O64)"
> +   "*
> + {
> +   rtx loc;
> + 
> +   operands[0] = gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM);
> + 
> +   if (frame_pointer_needed)
> +     loc = hard_frame_pointer_rtx;
> +   else
> +     loc = stack_pointer_rtx;
> +   loc = plus_constant (loc, current_frame_info.args_size);
> +   operands[1] = gen_rtx_MEM (Pmode, loc);
> + 
> +   return mips_move_1word (operands, insn, 0);
> + }"
> +   [(set_attr "type"   "load")
> +    (set_attr "length" "8")])
>   

I have 3 questions:

1. I see PIC_FUNCTION_ADDR_REGNUM be $25. gp is $28.  How does your
patch restore $28?

2. I assum you set length to 8 for o64. Has anyone checked if the
instruction is 8 byte on o64?

2. Did you remove (set_attr "mode" "SI") for o64?

Thanks.


H.J.



More information about the Binutils mailing list