Lines Matching defs:fixP

147   fixS *fixP;
151 fixP = obstack_alloc (&notes, sizeof (fixS));
153 fixP->fx_frag = frag;
154 fixP->fx_where = where;
155 fixP->fx_size = size;
157 if (fixP->fx_size != size)
162 fixP->fx_addsy = add_symbol;
163 fixP->fx_subsy = sub_symbol;
164 fixP->fx_offset = offset;
165 fixP->fx_dot_value = dot_value;
166 fixP->fx_pcrel = pcrel;
167 fixP->fx_r_type = r_type;
168 fixP->fx_im_disp = 0;
169 fixP->fx_pcrel_adjust = 0;
170 fixP->fx_bit_fixP = 0;
171 fixP->fx_addnumber = 0;
172 fixP->fx_tcbit = 0;
173 fixP->fx_tcbit2 = 0;
174 fixP->fx_done = 0;
175 fixP->fx_no_overflow = 0;
176 fixP->fx_signed = 0;
179 fixP->fx_cgen.insn = NULL;
180 fixP->fx_cgen.opinfo = 0;
184 TC_INIT_FIX_DATA (fixP);
187 as_where (&fixP->fx_file, &fixP->fx_line);
204 fixP->fx_next = *seg_fix_rootP;
205 *seg_fix_rootP = fixP;
209 fixP->fx_next = NULL;
212 (*seg_fix_tailP)->fx_next = fixP;
214 *seg_fix_rootP = fixP;
215 *seg_fix_tailP = fixP;
220 return fixP;
852 fixup_segment (fixS *fixP, segT this_segment)
859 if (fixP != NULL && abs_section_sym == NULL)
870 for (; fixP; fixP = fixP->fx_next)
871 if (!fixP->fx_done)
873 if (fixP->fx_addsy == NULL)
879 fixP->fx_addsy = abs_section_sym;
881 symbol_mark_used_in_reloc (fixP->fx_addsy);
882 if (fixP->fx_subsy != NULL)
883 symbol_mark_used_in_reloc (fixP->fx_subsy);
886 TC_ADJUST_RELOC_COUNT (fixP, seg_reloc_count);
890 for (; fixP; fixP = fixP->fx_next)
894 print_fixup (fixP);
897 fragP = fixP->fx_frag;
900 TC_VALIDATE_FIX (fixP, this_segment, skip);
902 add_number = fixP->fx_offset;
904 if (fixP->fx_addsy != NULL)
905 add_symbol_segment = S_GET_SEGMENT (fixP->fx_addsy);
907 if (fixP->fx_subsy != NULL)
910 resolve_symbol_value (fixP->fx_subsy);
911 sub_symbol_segment = S_GET_SEGMENT (fixP->fx_subsy);
912 if (fixP->fx_addsy != NULL
914 && !TC_FORCE_RELOCATION_SUB_SAME (fixP, add_symbol_segment))
916 add_number += S_GET_VALUE (fixP->fx_addsy);
917 add_number -= S_GET_VALUE (fixP->fx_subsy);
918 fixP->fx_offset = add_number;
919 fixP->fx_addsy = NULL;
920 fixP->fx_subsy = NULL;
923 fixP->fx_pcrel = 0;
927 && !TC_FORCE_RELOCATION_SUB_ABS (fixP))
929 add_number -= S_GET_VALUE (fixP->fx_subsy);
930 fixP->fx_offset = add_number;
931 fixP->fx_subsy = NULL;
934 && !TC_FORCE_RELOCATION_SUB_LOCAL (fixP))
936 add_number -= S_GET_VALUE (fixP->fx_subsy);
937 fixP->fx_offset = (add_number + fixP->fx_dot_value
938 + fixP->fx_frag->fr_address);
951 || !fixP->fx_pcrel)
952 add_number += MD_PCREL_FROM_SECTION (fixP, this_segment);
953 fixP->fx_subsy = NULL;
954 fixP->fx_pcrel = 1;
956 else if (!TC_VALIDATE_FIX_SUB (fixP))
958 as_bad_where (fixP->fx_file, fixP->fx_line,
960 fixP->fx_addsy ? S_GET_NAME (fixP->fx_addsy) : "0",
962 S_GET_NAME (fixP->fx_subsy),
967 if (fixP->fx_addsy)
970 && !TC_FORCE_RELOCATION_LOCAL (fixP))
975 add_number += S_GET_VALUE (fixP->fx_addsy);
976 fixP->fx_offset = add_number;
977 if (fixP->fx_pcrel)
978 add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment);
979 fixP->fx_addsy = NULL;
980 fixP->fx_pcrel = 0;
983 && !TC_FORCE_RELOCATION_ABS (fixP))
985 add_number += S_GET_VALUE (fixP->fx_addsy);
986 fixP->fx_offset = add_number;
987 fixP->fx_addsy = NULL;
991 && MD_APPLY_SYM_VALUE (fixP))
992 add_number += S_GET_VALUE (fixP->fx_addsy);
995 if (fixP->fx_pcrel)
997 add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment);
998 if (!fixP->fx_done && fixP->fx_addsy == NULL)
1004 fixP->fx_addsy = abs_section_sym;
1008 if (!fixP->fx_done)
1009 md_apply_fix (fixP, &add_number, this_segment);
1011 if (!fixP->fx_done)
1014 if (fixP->fx_addsy == NULL)
1015 fixP->fx_addsy = abs_section_sym;
1016 symbol_mark_used_in_reloc (fixP->fx_addsy);
1017 if (fixP->fx_subsy != NULL)
1018 symbol_mark_used_in_reloc (fixP->fx_subsy);
1021 if (!fixP->fx_bit_fixP && !fixP->fx_no_overflow && fixP->fx_size != 0)
1023 if (fixP->fx_size < sizeof (valueT))
1029 mask <<= fixP->fx_size * 8 - (fixP->fx_signed ? 1 : 0);
1033 sprint_value (buf, fragP->fr_address + fixP->fx_where);
1038 as_bad_where (fixP->fx_file, fixP->fx_line,
1040 buf2, fixP->fx_size, buf);
1048 && fixP->fx_size == 2
1050 as_bad_where (fixP->fx_file, fixP->fx_line,
1053 (long) (fragP->fr_address + fixP->fx_where));
1063 print_fixup (fixP);
1067 TC_ADJUST_RELOC_COUNT (fixP, seg_reloc_count);