Lines Matching full:fixp
1370 tc_gen_reloc (asection *section, fixS *fixp)
1381 hppa_fixp = (struct hppa_fix_struct *) fixp->tc_fix_data;
1382 if (fixp->fx_addsy == 0)
1391 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
1398 if (fixp->fx_r_type == (bfd_reloc_code_real_type) R_HPPA_COMPLEX
1399 && fixp->fx_pcrel)
1401 fixp->fx_r_type = R_HPPA_PCREL_CALL;
1402 fixp->fx_offset += 8;
1406 fixp->fx_r_type,
1409 fixp->fx_subsy != NULL,
1410 symbol_get_bfdsym (fixp->fx_addsy));
1414 as_bad_where (fixp->fx_file, fixp->fx_line, _("Cannot handle fixup"));
1429 switch (fixp->fx_r_type)
1465 fixp->fx_offset);
1476 reloc->addend = fixp->fx_offset;
1481 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
1484 reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
1497 *relocs[i]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
1501 relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where;
1515 relocs[0]->address = fixp->fx_frag->fr_address + fixp->fx_where;
1518 *relocs[1]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
1522 relocs[1]->address = fixp->fx_frag->fr_address + fixp->fx_where;
1525 *relocs[2]->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_subsy);
1529 relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
1536 relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where;
1543 relocs[4]->address = fixp->fx_frag->fr_address + fixp->fx_where;
1590 relocs[i]->addend = fixp->fx_offset;
1594 relocs[i]->addend = fixp->fx_offset;
1743 md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
1754 if (fixP->fx_r_type == R_HPPA_ENTRY
1755 || fixP->fx_r_type == R_HPPA_EXIT
1756 || fixP->fx_r_type == R_HPPA_BEGIN_BRTAB
1757 || fixP->fx_r_type == R_HPPA_END_BRTAB
1758 || fixP->fx_r_type == R_HPPA_BEGIN_TRY)
1764 if (fixP->fx_r_type == R_HPPA_END_TRY)
1766 fixP->fx_offset = * valP;
1771 if (fixP->fx_r_type == (int) R_PARISC_GNU_VTENTRY
1772 || fixP->fx_r_type == (int) R_PARISC_GNU_VTINHERIT)
1776 if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
1777 fixP->fx_done = 1;
1780 fixP->tc_fix_data;
1783 as_bad_where (fixP->fx_file, fixP->fx_line,
1785 fixP->fx_r_type);
1789 fixpos = fixP->fx_frag->fr_literal + fixP->fx_where;
1791 if (fixP->fx_size != 4 || hppa_fixP->fx_r_format == 32)
1794 number_to_chars_bigendian (fixpos, *valP, fixP->fx_size);
1805 if ((fixP->fx_addsy != NULL
1806 || fixP->fx_r_type == (int) R_HPPA_NONE)
1827 && fixP->fx_addsy
1828 && fixP->fx_pcrel
1829 && !arg_reloc_stub_needed (symbol_arg_reloc_info (fixP->fx_addsy),
1840 && !S_IS_EXTERNAL (fixP->fx_addsy)
1841 && !S_IS_WEAK (fixP->fx_addsy)
1842 && S_GET_SEGMENT (fixP->fx_addsy) == hppa_fixP->segment
1843 && !(fixP->fx_subsy
1844 && S_GET_SEGMENT (fixP->fx_subsy) != hppa_fixP->segment))
1853 fixP->fx_file, fixP->fx_line);
1861 fixP->fx_file, fixP->fx_line);
1870 fixP->fx_file, fixP->fx_line);
1879 fixP->fx_file, fixP->fx_line);
1888 fixP->fx_file, fixP->fx_line);
1897 fixP->fx_file, fixP->fx_line);
1910 if (fixP->fx_r_type == (int) R_HPPA_PCREL_CALL
1913 fixP->fx_file, fixP->fx_line);
1916 fixP->fx_file, fixP->fx_line);
1929 if (fixP->fx_r_type == (int) R_HPPA_PCREL_CALL
1932 fixP->fx_file, fixP->fx_line);
1935 fixP->fx_file, fixP->fx_line);
1962 as_bad_where (fixP->fx_file, fixP->fx_line,
1968 switch (fixP->fx_r_type)
1978 if (fixP->fx_addsy)
1979 S_SET_THREAD_LOCAL (fixP->fx_addsy);
1994 md_pcrel_from (fixS *fixP)
1996 return fixP->fx_where + fixP->fx_frag->fr_address;
8399 hppa_fix_adjustable (fixS *fixp)
8406 hppa_fix = (struct hppa_fix_struct *) fixp->tc_fix_data;
8412 code = elf_hppa_reloc_final_type (stdoutput, fixp->fx_r_type,
8454 if (fixp->fx_addsy
8455 && fixp->fx_subsy
8509 if (fixp->fx_addsy != 0 && S_IS_FUNCTION (fixp->fx_addsy))
8515 /* Return nonzero if the fixup in FIXP will require a relocation,
8520 hppa_force_relocation (struct fix *fixp)
8524 hppa_fixp = (struct hppa_fix_struct *) fixp->tc_fix_data;
8526 if (fixp->fx_r_type == (int) R_HPPA_ENTRY
8527 || fixp->fx_r_type == (int) R_HPPA_EXIT
8528 || fixp->fx_r_type == (int) R_HPPA_BEGIN_BRTAB
8529 || fixp->fx_r_type == (int) R_HPPA_END_BRTAB
8530 || fixp->fx_r_type == (int) R_HPPA_BEGIN_TRY
8531 || fixp->fx_r_type == (int) R_HPPA_END_TRY
8532 || (fixp->fx_addsy != NULL && fixp->fx_subsy != NULL
8537 if (fixp->fx_r_type == (int) R_PARISC_GNU_VTINHERIT
8538 || fixp->fx_r_type == (int) R_PARISC_GNU_VTENTRY)
8542 gas_assert (fixp->fx_addsy != NULL);
8546 if (S_FORCE_RELOC (fixp->fx_addsy, 1))
8552 if (fixp->fx_pcrel
8553 && arg_reloc_stub_needed (symbol_arg_reloc_info (fixp->fx_addsy),
8558 if (fixp->fx_r_type == (int) R_HPPA_PCREL_CALL)
8560 long pc = md_pcrel_from (fixp);
8563 distance = fixp->fx_offset + S_GET_VALUE (fixp->fx_addsy) - pc - 8;
8585 if (fixp->fx_r_type == (int) R_HPPA_ABS_CALL)