From 0221ddf71a94b3e82912adf9bc4a2f2e27761768 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 1 Jun 1994 14:56:21 +0000 Subject: [PATCH] * config/tc-mips.c (mips_ip): Force floating point values to be aligned correctly. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 970dc95..3cb7390 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Wed Jun 1 10:48:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * config/tc-mips.c (mips_ip): Force floating point values to be + aligned correctly. + Fri May 27 10:05:53 1994 Ken Raeburn (raeburn@cygnus.com) Merged in changes from gas-2.3 net release: 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 (); } -- 2.7.4