Home | History | Annotate | Download | only in config

Lines Matching full:fixp

2364 ppc_elf_validate_fix (fixS *fixp, segT seg)
2366 if (fixp->fx_done || fixp->fx_pcrel)
2376 if (fixp->fx_r_type != BFD_RELOC_16_GOTOFF
2377 && fixp->fx_r_type != BFD_RELOC_HI16_GOTOFF
2378 && fixp->fx_r_type != BFD_RELOC_LO16_GOTOFF
2379 && fixp->fx_r_type != BFD_RELOC_HI16_S_GOTOFF
2380 && fixp->fx_r_type != BFD_RELOC_16_BASEREL
2381 && fixp->fx_r_type != BFD_RELOC_LO16_BASEREL
2382 && fixp->fx_r_type != BFD_RELOC_HI16_BASEREL
2383 && fixp->fx_r_type != BFD_RELOC_HI16_S_BASEREL
2394 || fixp->fx_r_type != BFD_RELOC_CTOR)
2396 as_bad_where (fixp->fx_file, fixp->fx_line,
3457 fixS *fixP;
3471 fixP = fix_new_exp (frag_now,
3483 fixP = fix_new_exp (frag_now,
3490 fixP->fx_pcrel_adjust = fixups[i].opindex;
6167 md_pcrel_from_section (fixS *fixp, segT sec ATTRIBUTE_UNUSED)
6169 return fixp->fx_frag->fr_address + fixp->fx_where;
6497 md_apply_fix (fixS *fixP, valueT *valP, segT seg)
6504 if (fixP->fx_addsy != NULL)
6507 if (fixP->fx_pcrel)
6508 value += fixP->fx_frag->fr_address + fixP->fx_where;
6510 if (fixP->fx_addsy == abs_section_sym)
6511 fixP->fx_done = 1;
6514 fixP->fx_done = 1;
6526 if (fixP->fx_addsy == (symbolS *) NULL)
6527 fixP->fx_done = 1;
6531 value = fixP->fx_offset;
6532 if (fixP->fx_pcrel)
6533 value -= md_pcrel_from_section (fixP, seg);
6537 if (fixP->fx_subsy != (symbolS *) NULL)
6540 as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex"));
6544 if (fixP->fx_pcrel_adjust != 0)
6547 int opindex = fixP->fx_pcrel_adjust & 0xff;
6559 && fixP->fx_addsy != NULL
6560 && symbol_get_tc (fixP->fx_addsy)->subseg != 0
6561 && symbol_get_tc (fixP->fx_addsy)->symbol_class != XMC_TC
6562 && symbol_get_tc (fixP->fx_addsy)->symbol_class != XMC_TC0
6563 && S_GET_SEGMENT (fixP->fx_addsy) != bss_section)
6565 value = fixP->fx_offset;
6566 fixP->fx_done = 1;
6573 if (fixP->fx_r_type == BFD_RELOC_16
6574 && fixP->fx_addsy != NULL
6575 && ppc_is_toc_sym (fixP->fx_addsy))
6576 fixP->fx_r_type = BFD_RELOC_PPC_TOC16;
6582 switch (fixP->fx_r_type)
6595 fixP->fx_no_overflow = 1;
6668 switch (fixP->fx_r_type)
6713 gas_assert (fixP->fx_addsy != NULL);
6714 S_SET_THREAD_LOCAL (fixP->fx_addsy);
6775 gas_assert (fixP->fx_addsy != NULL);
6809 as_bad_where (fixP->fx_file, fixP->fx_line,
6811 bfd_get_reloc_code_name (fixP->fx_r_type));
6812 fixP->fx_done = 1;
6822 #define APPLY_RELOC fixP->fx_done
6833 where = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where;
6836 if (fixP->fx_size == 4)
6843 if (fixP->fx_size == 4)
6849 fixP->tc_fix_data.ppc_cpu,
6850 fixP->fx_file, fixP->fx_line);
6853 if (fixP->fx_size == 4)
6860 if (fixP->fx_size == 4)
6867 if (fixP->fx_done)
6871 gas_assert (fixP->fx_addsy != NULL);
6872 if (fixP->fx_r_type == BFD_RELOC_NONE)
6879 if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline))
6880 as_bad_where (fixP->fx_file, fixP->fx_line,
6883 as_bad_where (fixP->fx_file, fixP->fx_line,
6885 S_GET_NAME (fixP->fx_addsy));
6886 fixP->fx_done = 1;
6893 switch (fixP->fx_r_type)
6896 if (fixP->fx_addsy
6897 && !S_IS_DEFINED (fixP->fx_addsy)
6898 && !S_IS_WEAK (fixP->fx_addsy))
6899 S_SET_WEAK (fixP->fx_addsy);
6903 fixP->fx_done = 0;
6926 S_SET_THREAD_LOCAL (fixP->fx_addsy);
7009 fixP->fx_done = 0;
7029 _("Gas failure, reloc value %d\n"), fixP->fx_r_type);
7034 if (fixP->fx_size && APPLY_RELOC)
7035 md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
7036 fieldval, fixP->fx_size);
7039 && fixP->fx_size == 4
7040 && fixP->fx_done
7041 && !fixP->fx_tcbit
7042 && (fixP->fx_r_type == BFD_RELOC_32
7043 || fixP->fx_r_type == BFD_RELOC_CTOR
7044 || fixP->fx_r_type == BFD_RELOC_32_PCREL))
7045 as_warn_where (fixP->fx_file, fixP->fx_line,
7050 if (!fixP->fx_done && fixP->fx_pcrel)
7052 switch (fixP->fx_r_type)
7055 fixP->fx_r_type = BFD_RELOC_LO16_PCREL;
7059 fixP->fx_r_type = BFD_RELOC_HI16_PCREL;
7063 fixP->fx_r_type = BFD_RELOC_HI16_S_PCREL;
7067 fixP->fx_r_type = BFD_RELOC_64_PCREL;
7071 fixP->fx_r_type = BFD_RELOC_32_PCREL;
7075 fixP->fx_r_type = BFD_RELOC_16_PCREL;
7100 if (fixP->fx_addsy)
7107 if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline))
7108 as_bad_where (fixP->fx_file, fixP->fx_line,
7112 as_bad_where (fixP->fx_file, fixP->fx_line,
7115 bfd_get_reloc_code_name (fixP->fx_r_type),
7116 S_GET_NAME (fixP->fx_addsy));
7119 as_bad_where (fixP->fx_file, fixP->fx_line,
7121 fixP->fx_done = 1;
7127 ppc_elf_validate_fix (fixP, seg);
7128 fixP->fx_addnumber = value;
7134 if (!fixP->fx_done)
7136 fixP->fx_no_overflow = 1;
7141 && fixP->fx_r_type != BFD_RELOC_PPC64_TOC
7142 && fixP->fx_addsy != NULL
7143 && strcmp (S_GET_NAME (fixP->fx_addsy), ".TOC.") == 0)
7144 symbol_get_bfdsym (fixP->fx_addsy)->flags |= BSF_KEEP;
7147 if (fixP->fx_r_type != BFD_RELOC_PPC_TOC16)
7148 fixP->fx_addnumber = 0;
7152 fixP->fx_addnumber = 0;
7156 fixP->fx_addnumber =
7157 - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixP->fx_addsy))
7169 tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
7176 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
7177 reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
7178 reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
7181 as_bad_where (fixp->fx_file, fixp->fx_line,
7183 (int) fixp->fx_r_type);
7186 reloc->addend = fixp->fx_addnumber;