Lines Matching refs:fixP

155   fixS *fixP;
159 fixP = (fixS *) obstack_alloc (&notes, sizeof (fixS));
161 fixP->fx_frag = frag;
162 fixP->fx_where = where;
163 fixP->fx_size = size;
165 if (fixP->fx_size != size)
170 fixP->fx_addsy = add_symbol;
171 fixP->fx_subsy = sub_symbol;
172 fixP->fx_offset = offset;
173 fixP->fx_dot_value = dot_value;
174 fixP->fx_dot_frag = dot_frag;
175 fixP->fx_pcrel = pcrel;
176 fixP->fx_r_type = r_type;
177 fixP->fx_pcrel_adjust = 0;
178 fixP->fx_addnumber = 0;
179 fixP->fx_tcbit = 0;
180 fixP->fx_tcbit2 = 0;
181 fixP->fx_done = 0;
182 fixP->fx_no_overflow = 0;
183 fixP->fx_signed = 0;
186 fixP->fx_cgen.insn = NULL;
187 fixP->fx_cgen.opinfo = 0;
191 TC_INIT_FIX_DATA (fixP);
194 fixP->fx_file = as_where (&fixP->fx_line);
207 fixP->fx_next = *seg_fix_rootP;
208 *seg_fix_rootP = fixP;
209 if (fixP->fx_next == NULL)
210 *seg_fix_tailP = fixP;
214 fixP->fx_next = NULL;
216 (*seg_fix_tailP)->fx_next = fixP;
218 *seg_fix_rootP = fixP;
219 *seg_fix_tailP = fixP;
223 return fixP;
915 fixup_segment (fixS *fixP, segT this_segment)
921 if (fixP != NULL && abs_section_sym == NULL)
930 for (; fixP; fixP = fixP->fx_next)
931 if (!fixP->fx_done)
933 if (fixP->fx_addsy == NULL)
939 fixP->fx_addsy = abs_section_sym;
941 symbol_mark_used_in_reloc (fixP->fx_addsy);
942 if (fixP->fx_subsy != NULL)
943 symbol_mark_used_in_reloc (fixP->fx_subsy);
948 for (; fixP; fixP = fixP->fx_next)
952 print_fixup (fixP);
955 fragP = fixP->fx_frag;
958 TC_VALIDATE_FIX (fixP, this_segment, skip);
960 add_number = fixP->fx_offset;
962 if (fixP->fx_addsy != NULL)
963 add_symbol_segment = S_GET_SEGMENT (fixP->fx_addsy);
965 if (fixP->fx_subsy != NULL)
968 resolve_symbol_value (fixP->fx_subsy);
969 sub_symbol_segment = S_GET_SEGMENT (fixP->fx_subsy);
970 if (fixP->fx_addsy != NULL
972 && !S_FORCE_RELOC (fixP->fx_addsy, 0)
973 && !S_FORCE_RELOC (fixP->fx_subsy, 0)
974 && !TC_FORCE_RELOCATION_SUB_SAME (fixP, add_symbol_segment))
976 add_number += S_GET_VALUE (fixP->fx_addsy);
977 add_number -= S_GET_VALUE (fixP->fx_subsy);
978 fixP->fx_offset = add_number;
979 fixP->fx_addsy = NULL;
980 fixP->fx_subsy = NULL;
983 fixP->fx_pcrel = 0;
987 && !S_FORCE_RELOC (fixP->fx_subsy, 0)
988 && !TC_FORCE_RELOCATION_SUB_ABS (fixP, add_symbol_segment))
990 add_number -= S_GET_VALUE (fixP->fx_subsy);
991 fixP->fx_offset = add_number;
992 fixP->fx_subsy = NULL;
995 && !S_FORCE_RELOC (fixP->fx_subsy, 0)
996 && !TC_FORCE_RELOCATION_SUB_LOCAL (fixP, add_symbol_segment))
998 add_number -= S_GET_VALUE (fixP->fx_subsy);
999 fixP->fx_offset = (add_number + fixP->fx_dot_value
1000 + fixP->fx_dot_frag->fr_address);
1013 || !fixP->fx_pcrel)
1014 add_number += MD_PCREL_FROM_SECTION (fixP, this_segment);
1015 fixP->fx_subsy = NULL;
1016 fixP->fx_pcrel = 1;
1018 else if (!TC_VALIDATE_FIX_SUB (fixP, add_symbol_segment))
1023 as_bad_where (fixP->fx_file, fixP->fx_line,
1026 as_bad_where (fixP->fx_file, fixP->fx_line,
1028 fixP->fx_addsy ? S_GET_NAME (fixP->fx_addsy) : "0",
1030 S_GET_NAME (fixP->fx_subsy),
1035 && MD_APPLY_SYM_VALUE (fixP))
1036 add_number -= S_GET_VALUE (fixP->fx_subsy);
1039 if (fixP->fx_addsy)
1042 && !S_FORCE_RELOC (fixP->fx_addsy, 0)
1043 && !TC_FORCE_RELOCATION_LOCAL (fixP))
1048 add_number += S_GET_VALUE (fixP->fx_addsy);
1049 fixP->fx_offset = add_number;
1050 if (fixP->fx_pcrel)
1051 add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment);
1052 fixP->fx_addsy = NULL;
1053 fixP->fx_pcrel = 0;
1056 && !S_FORCE_RELOC (fixP->fx_addsy, 0)
1057 && !TC_FORCE_RELOCATION_ABS (fixP))
1059 add_number += S_GET_VALUE (fixP->fx_addsy);
1060 fixP->fx_offset = add_number;
1061 fixP->fx_addsy = NULL;
1065 && MD_APPLY_SYM_VALUE (fixP))
1066 add_number += S_GET_VALUE (fixP->fx_addsy);
1069 if (fixP->fx_pcrel)
1071 add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment);
1072 if (!fixP->fx_done && fixP->fx_addsy == NULL)
1078 fixP->fx_addsy = abs_section_sym;
1082 if (!fixP->fx_done)
1083 md_apply_fix (fixP, &add_number, this_segment);
1085 if (!fixP->fx_done)
1087 if (fixP->fx_addsy == NULL)
1088 fixP->fx_addsy = abs_section_sym;
1089 symbol_mark_used_in_reloc (fixP->fx_addsy);
1090 if (fixP->fx_subsy != NULL)
1091 symbol_mark_used_in_reloc (fixP->fx_subsy);
1094 if (!fixP->fx_no_overflow && fixP->fx_size != 0)
1096 if (fixP->fx_size < sizeof (valueT))
1102 mask <<= fixP->fx_size * 8 - (fixP->fx_signed ? 1 : 0);
1106 sprint_value (buf, fragP->fr_address + fixP->fx_where);
1111 as_bad_where (fixP->fx_file, fixP->fx_line,
1116 fixP->fx_size),
1117 buf2, fixP->fx_size, buf);
1125 && fixP->fx_size == 2
1127 as_bad_where (fixP->fx_file, fixP->fx_line,
1130 (long) (fragP->fr_address + fixP->fx_where));
1140 print_fixup (fixP);