diff options
author | Ian Lance Taylor <ian@airs.com> | 1994-06-01 14:56:21 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1994-06-01 14:56:21 +0000 |
commit | 0221ddf71a94b3e82912adf9bc4a2f2e27761768 (patch) | |
tree | de438b1ecd0bd36d9faa776f29c91e8d7e60aa59 /gas/config | |
parent | aa46093228e578e988f1c545fa4faa830cfdd5d5 (diff) | |
download | gdb-0221ddf71a94b3e82912adf9bc4a2f2e27761768.zip gdb-0221ddf71a94b3e82912adf9bc4a2f2e27761768.tar.gz gdb-0221ddf71a94b3e82912adf9bc4a2f2e27761768.tar.bz2 |
* config/tc-mips.c (mips_ip): Force floating point values to be
aligned correctly.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-mips.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index ed67fe8..32a1cb4 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -1222,8 +1222,9 @@ mips_emit_delays () S_SET_VALUE (insn_label, (valueT) frag_now_fix ()); } } - mips_no_prev_insn (); } + + mips_no_prev_insn (); } /* Build an instruction created by a macro expansion. This is passed @@ -4488,8 +4489,11 @@ mips_ip (str, ip) break; } new_seg = subseg_new (newname, (subsegT) 0); + frag_align (*args == 'l' ? 2 : 3, 0); #ifdef OBJ_ELF - bfd_set_section_alignment (stdoutput, new_seg, 4); + record_alignment (new_seg, 4); +#else + record_alignment (new_seg, *args == 'l' ? 2 : 3); #endif if (seg == now_seg) as_bad ("Can't use floating point insn in this section"); @@ -5179,7 +5183,7 @@ md_apply_fix (fixP, valueP) if (value & 0x8000) value += 0x10000; value >>= 16; - buf = fixP->fx_frag->fr_literal + fixP->fx_where; + buf = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where; if (byte_order == BIG_ENDIAN) buf += 2; md_number_to_chars (buf, value, 2); @@ -5190,7 +5194,7 @@ md_apply_fix (fixP, valueP) do everything here rather than in bfd_perform_relocation. */ if ((fixP->fx_addsy->bsym->flags & BSF_SECTION_SYM) == 0) value += fixP->fx_frag->fr_address + fixP->fx_where; - buf = fixP->fx_frag->fr_literal + fixP->fx_where; + buf = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where; if (byte_order == BIG_ENDIAN) buf += 2; md_number_to_chars (buf, value, 2); @@ -5216,7 +5220,7 @@ md_apply_fix (fixP, valueP) if (value < -0x8000 || value > 0x7fff) as_bad_where (fixP->fx_file, fixP->fx_line, "relocation overflow"); - buf = fixP->fx_frag->fr_literal + fixP->fx_where; + buf = (unsigned char *) fixP->fx_frag->fr_literal + fixP->fx_where; if (byte_order == BIG_ENDIAN) buf += 2; md_number_to_chars (buf, value, 2); @@ -5605,6 +5609,7 @@ s_option (x) else as_bad (".option pic%d not supported", i); +#ifdef GPOPT if (mips_pic == SVR4_PIC) { if (g_switch_seen && g_switch_value != 0) @@ -5612,6 +5617,7 @@ s_option (x) g_switch_value = 0; bfd_set_gp_size (stdoutput, 0); } +#endif } else as_warn ("Unrecognized option \"%s\"", opt); @@ -5722,9 +5728,11 @@ s_abicalls (ignore) int ignore; { mips_pic = SVR4_PIC; +#ifdef GPOPT if (g_switch_seen && g_switch_value != 0) as_warn ("-G may not be used with SVR4 PIC code"); g_switch_value = 0; +#endif bfd_set_gp_size (stdoutput, 0); demand_empty_rest_of_line (); } |