Lines Matching full:fixp
3226 md_pcrel_from_section (fixS * fixp, segT sec)
3228 if (fixp->fx_addsy != (symbolS *) NULL
3229 && (!S_IS_DEFINED (fixp->fx_addsy)
3230 || (S_GET_SEGMENT (fixp->fx_addsy) != sec)))
3233 return fixp->fx_frag->fr_address + fixp->fx_where;
3240 msp430_force_relocation_local (fixS *fixp)
3242 if (fixp->fx_r_type == BFD_RELOC_MSP430_10_PCREL)
3244 if (fixp->fx_pcrel)
3250 return (!fixp->fx_pcrel
3251 || generic_force_reloc (fixp));
3258 md_apply_fix (fixS * fixp, valueT * valuep, segT seg)
3264 if (fixp->fx_addsy == (symbolS *) NULL)
3267 fixp->fx_done = 1;
3269 else if (fixp->fx_pcrel)
3271 segT s = S_GET_SEGMENT (fixp->fx_addsy);
3273 if (fixp->fx_addsy && (s == seg || s == absolute_section))
3281 1. S_GET_VALUE (fixp->fx_addsy) will contain a symbol offset
3285 So, the result of S_GET_VALUE (fixp->fx_addsy) + (* valuep);
3287 value = /* S_GET_VALUE (fixp->fx_addsy) + */ * valuep;
3288 fixp
3295 value = fixp->fx_offset;
3297 if (fixp->fx_subsy != (symbolS *) NULL)
3299 if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
3301 value -= S_GET_VALUE (fixp->fx_subsy);
3302 fixp->fx_done = 1;
3307 fixp->fx_no_overflow = 1;
3314 if (!fixp->fx_addsy || (fixp->fx_addsy
3315 && S_GET_SEGMENT (fixp->fx_addsy) == absolute_section))
3316 fixp->fx_done = 1; /* It is ok to kill 'abs' reloc. */
3318 fixp->fx_done = 0;
3321 if (fixp->fx_done)
3325 where = (unsigned char *) fixp->fx_frag->fr_literal + fixp->fx_where;
3329 switch (fixp->fx_r_type)
3333 as_bad_where (fixp->fx_file, fixp->fx_line,
3341 as_bad_where (fixp->fx_file, fixp->fx_line,
3352 as_bad_where (fixp->fx_file, fixp->fx_line,
3359 as_bad_where (fixp->fx_file, fixp->fx_line,
3432 fixp->fx_line, fixp->fx_r_type);
3438 fixp->fx_addnumber = value;
3466 tc_gen_reloc (asection * seg ATTRIBUTE_UNUSED, fixS * fixp)
3473 reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
3474 reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
3478 as_bad_where (fixp->fx_file, fixp->fx_line,
3480 (int) fixp->fx_r_type);
3488 if (fixp->fx_subsy
3489 && S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
3491 fixp->fx_offset -= S_GET_VALUE (fixp->fx_subsy);
3492 fixp->fx_subsy = NULL;
3495 if (fixp->fx_addsy && fixp->fx_subsy)
3499 asec = S_GET_SEGMENT (fixp->fx_addsy);
3500 ssec = S_GET_SEGMENT (fixp->fx_subsy);
3518 && (fixp->fx_addsy != fixp->fx_subsy)
3520 && ! S_IS_GAS_LOCAL (fixp->fx_addsy)
3521 && ! S_IS_GAS_LOCAL (fixp->fx_subsy))
3531 reloc2->addend = - S_GET_VALUE (fixp->fx_subsy);
3538 *reloc2->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_subsy);
3541 reloc->addend = fixp->fx_offset;
3544 reloc->addend += S_GET_VALUE (fixp->fx_addsy);
3550 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
3553 fixp->fx_pcrel = 0;
3554 fixp->fx_done = 1;
3559 char *fixpos = fixp->fx_where + fixp->fx_frag->fr_literal;
3561 reloc->addend = (S_GET_VALUE (fixp->fx_addsy)
3562 - S_GET_VALUE (fixp->fx_subsy) + fixp->fx_offset);
3564 switch (fixp->fx_r_type)
3595 if (fixp->fx_r_type == BFD_RELOC_MSP430X_ABS16
3596 && S_GET_SEGMENT (fixp->fx_addsy) == absolute_section)
3598 bfd_vma amount = S_GET_VALUE (fixp->fx_addsy);
3599 char *fixpos = fixp->fx_where + fixp->fx_frag->fr_literal;
3607 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
3608 reloc->addend = fixp->fx_offset;
3610 if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
3611 || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
3612 reloc->address = fixp->fx_offset;
3880 /* Return FALSE if the fixup in fixp should be left alone and not
3885 msp430_fix_adjustable (struct fix *fixp ATTRIBUTE_UNUSED)
3888 if (fixp->fx_addsy
3889 && ((S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_CODE) == 0))