This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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] | |
Hi Nagaraju,(Nagaraju) opcodep[1] contains the register which is to compared.
case 6: value = (long) (target_address - (address_of_var_part + 4)) + 4; value >>= 1; switch (opcodep[0]) { case BEZ: //printf("BEZ 16 value = %d\n",value); opcodep[2] = 0x54; //emit beq, insertng its opcode break; case BNEZ: //printf("BNEZ 16 value = %d\n",value); opcodep[2] = 0x94; //emit bne, insertng its opcode break; } opcodep[0] = 0x7; //insert cmp instruction instead of bez opcodep[3] = ( value & 0xff );//insert offset fixp = fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 1, BFD_RELOC_RPINE_S8_PCREL); fixp->fx_pcrel_adjust = 2; fragp->fr_fix += 2;
OK, so at this point you are presumably expecting that:
opcodep[0] contains the CMP instruction. opcodep[1] contains zero.
(Nagaraju) absolutely right.opcodep[2] contains the BEQ or BNE instruction. opcodep[3] contains offset to LABEL.
Right ? But in some cases it would appear that opcodep[2] and opcodep[3] are being replaced with zeroes.
(Nagaraju) I have kept the watchpoint at that location but no where it is getting hit.
Obviously some other part of the assembler is corrupting the contents of the opcodep[] array. If you have access to a debugger (eg gdb) I would suggest that you run it and place a watchpoint on opcodep[2] and opcodep[3] to see how they get corrupted.
(Nagaraju) opcodep[] is pointing to fragp->fr_opcode.
Without knowing more, my guess would be that it is connected with how/where this opcodep[] array is declared. Is it part of a bigger structure that gets reused maybe ?
Cheers Nick
Thanks, Nagaraju
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |