Lines Matching full:fixp
3254 fixS *fixP;
3286 fixP = fix_new_exp (frag_now, address, size,
3291 fixP->tc_fix_data = (void *) operand;
3300 fixP->fx_no_overflow = 1;
3325 tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
3331 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
3332 reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
3334 if ( fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
3335 || fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
3336 || fixp->fx_r_type == BFD_RELOC_V850_LONGCALL
3337 || fixp->fx_r_type == BFD_RELOC_V850_LONGJUMP
3338 || fixp->fx_r_type == BFD_RELOC_V850_ALIGN)
3339 reloc->addend = fixp->fx_offset;
3343 if (fixp->fx_r_type == BFD_RELOC_32
3344 && fixp->fx_pcrel)
3345 fixp->fx_r_type = BFD_RELOC_32_PCREL;
3348 reloc->addend = fixp->fx_addnumber;
3351 reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
3355 as_bad_where (fixp->fx_file, fixp->fx_line,
3358 (int) fixp->fx_r_type);
3395 v850_pcrel_from_section (fixS *fixp, segT section)
3400 if (fixp->fx_addsy != (symbolS *) NULL
3401 && (! S_IS_DEFINED (fixp->fx_addsy)
3402 || S_IS_WEAK (fixp->fx_addsy)
3403 || (S_GET_SEGMENT (fixp->fx_addsy) != section)))
3406 return fixp->fx_frag->fr_address + fixp->fx_where;
3410 md_apply_fix (fixS *fixP, valueT *valueP, segT seg ATTRIBUTE_UNUSED)
3415 if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
3416 || fixP->fx_r_type == BFD_RELOC_V850_LONGCALL
3417 || fixP->fx_r_type == BFD_RELOC_V850_LONGJUMP
3418 || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
3420 fixP->fx_done = 0;
3424 if (fixP->fx_addsy == (symbolS *) NULL)
3425 fixP->fx_addnumber = value,
3426 fixP->fx_done = 1;
3428 else if (fixP->fx_pcrel)
3429 fixP->fx_addnumber = fixP->fx_offset;
3433 value = fixP->fx_offset;
3434 if (fixP->fx_subsy != (symbolS *) NULL)
3436 if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
3437 value -= S_GET_VALUE (fixP->fx_subsy);
3440 as_bad_where (fixP->fx_file, fixP->fx_line,
3443 fixP->fx_addnumber = value;
3446 if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
3453 opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
3461 where = fixP->fx_frag->fr_literal + fixP->fx_where;
3463 if (fixP->fx_size > 2)
3476 as_warn_where (fixP->fx_file, fixP->fx_line, "%s", errmsg);
3478 if (fixP->fx_size > 2)
3483 if (fixP->fx_done)
3492 as_bad_where (fixP->fx_file, fixP->fx_line,
3494 fixP->fx_done = 1;
3499 fixP->fx_r_type = operand->default_reloc;
3502 fixP->fx_where += 2;
3503 fixP->fx_size = 2;
3504 fixP->fx_addnumber += 2;
3508 else if (fixP->fx_done)
3511 where = fixP->fx_frag->fr_literal + fixP->fx_where;
3513 if (fixP->tc_fix_data != NULL
3514 fixP->tc_fix_data)->insert != NULL)
3517 struct v850_operand * operand = (struct v850_operand *) fixP->tc_fix_data;
3525 if (fixP->fx_size == 2)
3527 else if (fixP->fx_size == 1)
3541 switch (fixP->fx_r_type)
3685 v850_fix_adjustable (fixS *fixP)
3687 if (fixP->fx_addsy == NULL)
3691 if (S_IS_FUNCTION (fixP->fx_addsy))
3695 if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
3696 || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
3703 v850_force_relocation (struct fix *fixP)
3705 if (fixP->fx_r_type == BFD_RELOC_V850_LONGCALL
3706 || fixP->fx_r_type == BFD_RELOC_V850_LONGJUMP)
3710 && (fixP->fx_pcrel
3711 || fixP->fx_r_type == BFD_RELOC_V850_ALIGN
3712 || fixP->fx_r_type == BFD_RELOC_V850_9_PCREL
3713 || fixP->fx_r_type == BFD_RELOC_V850_16_PCREL
3714 || fixP->fx_r_type == BFD_RELOC_V850_17_PCREL
3715 || fixP->fx_r_type == BFD_RELOC_V850_22_PCREL
3716 || fixP->fx_r_type == BFD_RELOC_V850_32_PCREL
3717 || fixP->fx_r_type >= BFD_RELOC_UNUSED))
3720 return generic_force_reloc (fixP);