Debugging dvp-as... (crashes on DMARet *)
Posted: Wed Feb 21, 2007 11:27 pm
dvp-as crashes while trying to compile this .vsm :
.align 4
DMAret *
vifnop
vifnop
vifnop
MPG 0,*
NOP
.align 4
.EndMPG
.EndDmaData
The problem seems to be "DMAret *", but it's something automatically generated by vcl... So, better fix that problem...
Using addr2line tool I could find out that crash occurs in this function :
(gas/configure/tc-dvp.c line 1757)
long
dvp_relax_frag (fragP, stretch)
fragS * fragP;
long stretch;
{
/* Address of variable part. */
long address = fragP->fr_address + fragP->fr_fix;
/* Symbol marking start of data. */
symbolS * symbolP = fragP->fr_symbol;
/* Address of the symbol. */
long target;
long growth;
/* subtype >= 10 means "done" */
if (RELAX_DONE_P (fragP->fr_subtype))
return 0;
/* vu insn? */
if (fragP->fr_subtype == RELAX_VU)
{
fragP->fr_subtype = RELAX_ENCODE (RELAX_VU, 0);
return 0;
}
target = S_GET_VALUE (symbolP) + symbolP->sy_frag->fr_address;
...
It's symbolP->sy_frag that points to an illegal address...
Is there anyone here knowing well this code, added by ps2toolchain's binutil2.14 patch?
.align 4
DMAret *
vifnop
vifnop
vifnop
MPG 0,*
NOP
.align 4
.EndMPG
.EndDmaData
The problem seems to be "DMAret *", but it's something automatically generated by vcl... So, better fix that problem...
Using addr2line tool I could find out that crash occurs in this function :
(gas/configure/tc-dvp.c line 1757)
long
dvp_relax_frag (fragP, stretch)
fragS * fragP;
long stretch;
{
/* Address of variable part. */
long address = fragP->fr_address + fragP->fr_fix;
/* Symbol marking start of data. */
symbolS * symbolP = fragP->fr_symbol;
/* Address of the symbol. */
long target;
long growth;
/* subtype >= 10 means "done" */
if (RELAX_DONE_P (fragP->fr_subtype))
return 0;
/* vu insn? */
if (fragP->fr_subtype == RELAX_VU)
{
fragP->fr_subtype = RELAX_ENCODE (RELAX_VU, 0);
return 0;
}
target = S_GET_VALUE (symbolP) + symbolP->sy_frag->fr_address;
...
It's symbolP->sy_frag that points to an illegal address...
Is there anyone here knowing well this code, added by ps2toolchain's binutil2.14 patch?