Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Native build failure...
On Jul 26, 2010, at 3:03 PM, Michael L. Hitch wrote:
> On Mon, 26 Jul 2010, Johnny Billquist wrote:
>
>> Interesting. And that might be relevant...
>>
>> Anyway, after some more fiddling, I managed to get gdb to give a lot more
>> useful information...
> ...
>> #0 update_file (file=0x7f44b6a0, depth=18, 2135209632, 18)
>> at /usr/src/tools/gmake/../../gnu/dist/gmake/remake.c:464
>> 464 if (! d->ignore_mtime)
>
> That looks rather familiar :)
> It should correspond to the blbs instruction.
>
>> (gdb) print/x $r6
>> $2 = 0x7f5ffff0
>
> And that would look like an address at the end of a page, with the
> likelyhood that 0x7f600000 is not allocated.
>
>> Anything else I can do that will help?
>
> I'm fairly sure that the workaround I had in the message I posted last year
> would still work.
>
> According to that rather vague memory of mine, I think that Matt had sent me
> a fix for this, but I've had trouble finding it. I did find the following
> change that I had on one of my build systems that looks like it's probably
> the fix. You could try it and see.
>
>
>
> Index: gnu/dist/gcc4/gcc/config/vax/vax.md
> ===================================================================
> RCS file: /cvsroot/src/gnu/dist/gcc4/gcc/config/vax/vax.md,v
> retrieving revision 1.12
> diff -u -p -r1.12 vax.md
> --- gnu/dist/gcc4/gcc/config/vax/vax.md 20 Apr 2007 16:30:32 -0000
> 1.12
> +++ gnu/dist/gcc4/gcc/config/vax/vax.md 26 Jul 2010 22:02:24 -0000
> @@ -1129,6 +1129,30 @@
> (define_insn ""
> [(set (pc)
> (if_then_else
> + (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q")
> + (const_int 1)
> + (const_int 0))
> + (const_int 0))
> + (label_ref (match_operand 1 "" ""))
> + (pc)))]
> + "REG_P (XEXP (operands[0], 0)) || MEM_P (XEXP (operands[0], 0))"
> + "jlbs %0,%l1")
> +
> +(define_insn ""
> + [(set (pc)
> + (if_then_else
> + (eq (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q")
> + (const_int 1)
> + (const_int 0))
> + (const_int 0))
> + (label_ref (match_operand 1 "" ""))
> + (pc)))]
> + "REG_P (XEXP (operands[0], 0)) || MEM_P (XEXP (operands[0], 0))"
> + "jlbc %0,%l1")
> +
> +(define_insn ""
> + [(set (pc)
> + (if_then_else
> (ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "Q,g")
> (const_int 1)
> (match_operand:SI 1 "general_operand" "I,nrmT"))
> @@ -1136,9 +1160,26 @@
> (label_ref (match_operand 2 "" ""))
> (pc)))]
> ""
> - "@
> - jlbs %0,%l2
> - jbs %1,%0,%l2")
> + "*
> +{
> + if (which_alternative == 0
> + && MEM_P (operands[0])
> + && GET_CODE (XEXP (operands[0], 0)) == PLUS
> + && REG_P (XEXP (XEXP (operands[0], 0), 0))
> + && CONST_INT_P (XEXP (XEXP (operands[0], 0), 1))
> + && (INTVAL (XEXP (XEXP (operands[0], 0), 1)) >> 2) == 0)
> + {
> + HOST_WIDE_INT o = INTVAL (XEXP (XEXP (operands[0], 0), 1));
> +
> + if (o == 0)
> + return \"jlbs %0,%l2\";
> +
> + operands[0] = gen_rtx_MEM (QImode, XEXP (XEXP (operands[0], 0), 0));
> + operands[1] = GEN_INT (o % 4 * 8);
> + }
> +
> + return \"jbs %1,%0,%l2\";
> +}")
>
> (define_insn ""
> [(set (pc)
> @@ -1150,9 +1191,26 @@
> (label_ref (match_operand 2 "" ""))
> (pc)))]
> ""
> - "@
> - jlbc %0,%l2
> - jbc %1,%0,%l2")
> + "*
> +{
> + if (which_alternative == 0
> + && MEM_P (operands[0])
> + && GET_CODE (XEXP (operands[0], 0)) == PLUS
> + && REG_P (XEXP (XEXP (operands[0], 0), 0))
> + && CONST_INT_P (XEXP (XEXP (operands[0], 0), 1))
> + && (INTVAL (XEXP (XEXP (operands[0], 0), 1)) >> 2) == 0)
> + {
> + HOST_WIDE_INT o = INTVAL (XEXP (XEXP (operands[0], 0), 1));
> +
> + if (o % 4 == 0)
> + return \"jlbc %0,%l2\";
> +
> + operands[0] = gen_rtx_MEM (QImode, XEXP (XEXP (operands[0], 0), 0));
> + operands[1] = GEN_INT (o % 4 * 8);
> + }
> +
> + return \"jbc %1,%0,%l2\";
> +}")
>
> (define_insn ""
> [(set (pc)
That's overkill. I committed a much more reasonable (and smaller) fix.
Home |
Main Index |
Thread Index |
Old Index