Lines Matching full:fixp
1233 md_pcrel_from_section (fixS *fixp, segT sec)
1235 if (fixp->fx_addsy != (symbolS *) NULL
1236 && (!S_IS_DEFINED (fixp->fx_addsy)
1237 || (S_GET_SEGMENT (fixp->fx_addsy) != sec)))
1240 return fixp->fx_frag->fr_address + fixp->fx_where;
1296 md_apply_fix (fixS *fixP, valueT * valP, segT seg)
1302 if (fixP->fx_addsy == (symbolS *) NULL)
1303 fixP->fx_done = 1;
1305 else if (fixP->fx_pcrel)
1307 segT s = S_GET_SEGMENT (fixP->fx_addsy);
1311 value += S_GET_VALUE (fixP->fx_addsy);
1312 fixP->fx_done = 1;
1315 else if (linkrelax && fixP->fx_subsy)
1321 expression. fixP->fx_addsy holds the section start symbol,
1322 fixP->fx_offset holds sym2's offset, and fixP->fx_subsy
1327 switch (fixP->fx_r_type)
1330 fixP->fx_r_type = BFD_RELOC_AVR_DIFF8;
1333 fixP->fx_r_type = BFD_RELOC_AVR_DIFF16;
1336 fixP->fx_r_type = BFD_RELOC_AVR_DIFF32;
1339 as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex"));
1343 value = S_GET_VALUE (fixP->fx_addsy) +
1344 fixP->fx_offset - S_GET_VALUE (fixP->fx_subsy);
1347 fixP->fx_subsy = NULL;
1350 if (fixP->fx_subsy != (symbolS *) NULL)
1351 as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex"));
1355 and the sym offset (part of fixP) are needed at link relax time. */
1356 where = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where;
1357 switch (fixP->fx_r_type)
1360 fixP->fx_no_overflow = 1;
1380 if (fixP->fx_done)
1384 where = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where;
1387 switch (fixP->fx_r_type)
1391 as_bad_where (fixP->fx_file, fixP->fx_line,
1399 as_bad_where (fixP->fx_file, fixP->fx_line,
1407 as_bad_where (fixP->fx_file, fixP->fx_line,
1418 as_bad_where (fixP->fx_file, fixP->fx_line,
1436 as_warn_where (fixP->fx_file, fixP->fx_line,
1447 as_bad_where (fixP->fx_file, fixP->fx_line,
1454 as_warn_where (fixP->fx_file, fixP->fx_line,
1463 as_bad_where (fixP->fx_file, fixP->fx_line,
1471 as_bad_where (fixP->fx_file, fixP->fx_line,
1538 as_bad_where (fixP->fx_file, fixP->fx_line,
1561 fixP->fx_line, fixP->fx_r_type);
1566 as_bad_where (fixP->fx_file, fixP->fx_line,
1573 as_bad_where (fixP->fx_file, fixP->fx_line,
1581 switch ((int) fixP->fx_r_type)
1587 as_bad_where (fixP->fx_file, fixP->fx_line,
1589 fixP->fx_done = 1;
1608 fixS *fixp)
1611 bfd_reloc_code_real_type code = fixp->fx_r_type;
1613 if (fixp->fx_subsy != NULL)
1615 as_bad_where (fixp->fx_file, fixp->fx_line, _("expression too complex"));
1622 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
1624 reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
1626 if ((fixp->fx_r_type == BFD_RELOC_32) && (fixp->fx_pcrel))
1629 fixp->fx_offset -= md_pcrel_from_section (fixp, seg);
1631 fixp->fx_offset = reloc->address;
1636 reloc->addend = fixp->fx_offset;
1642 as_bad_where (fixp->fx_file, fixp->fx_line,
1644 (int) fixp->fx_r_type);
1648 if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
1649 || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
1650 reloc->address = fixp->fx_offset;