From 0a9ef439079f50221dad9eb5248387236d370c87 Mon Sep 17 00:00:00 2001
From: Richard Henderson <rth@redhat.com>
Date: Thu, 28 Dec 2000 10:07:56 +0000
Subject: 	* as.h (rs_align_test): New. 	* frags.c (NOP_OPCODE): Move
 default from read.c. 	(MAX_MEM_FOR_RS_ALIGN_CODE): New default. 
 (frag_align_code): New. 	* frags.h (frag_align_code): Declare. 	*
 read.c (NOP_OPCODE): Remove. 	(do_align): Use frag_align_code. 	*
 write.c (NOP_OPCODE): Remove. 	(get_recorded_alignment): New. 
 (cvt_frag_to_fill): Handle rs_align_test. 	(relax_segment): Likewise. 
 (subsegs_finish): Align last subseg in section to the 	section alignment. 
 Use frag_align_code. 	* write.h (get_recorded_alignment): Declare. 	*
 config/obj-coff.c (size_section): Handle rs_align_test. 	(fill_section,
 fixup_mdeps): Likewise. 	(write_object_file): Use frag_align_code.

	* config/tc-alpha.c (alpha_align): Use frag_align_code.
	(alpha_handle_align): New.
	* config/tc-alpha.h (HANDLE_ALIGN): New.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-i386.h (md_do_align): Use frag_align_code.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-ia64.c (ia64_md_do_align): Don't do code alignment.
	(ia64_handle_align): New.
	* config/tc-ia64.h (HANDLE_ALIGN): New.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-m32r.c (m32r_do_align): Remove.
	(m32r_handle_align): New.
	(fill_insn): Use frag_align_code.
	* config/tc-m32r.h (md_do_align): Remove.
	(HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New.
	* config/tc-m88k.c, config/tc-m88k.h: Similarly.
	* config/tc-mips.c, config/tc-mips.h: Similarly.

	* config/tc-sh.c (sh_cons_align): Use rs_align_test.
	(sh_handle_align): Likewise.  Handle rs_align_code.
	(sh_do_align): Remove.
	* config/tc-sh.h (md_do_align): Remove.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-sparc.c (sparc_cons_align): Use rs_align_test.
	(sparc_handle_align): Likewise.  Handle rs_align_code.
	* config/tc-sparc.h (md_do_align): Remove.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.
---
 gas/config/obj-coff.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

(limited to 'gas/config/obj-coff.c')

diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c
index 67e6075..e16e5df 100644
--- a/gas/config/obj-coff.c
+++ b/gas/config/obj-coff.c
@@ -1826,6 +1826,7 @@ size_section (abfd, idx)
 	  break;
 	case rs_align:
 	case rs_align_code:
+	case rs_align_test:
 	  {
 	    addressT off;
 
@@ -2135,6 +2136,7 @@ fill_section (abfd, h, file_cursor)
 		case rs_fill:
 		case rs_align:
 		case rs_align_code:
+		case rs_align_test:
 		case rs_org:
 		  if (frag->fr_fix)
 		    {
@@ -3443,12 +3445,15 @@ write_object_file ()
       md_do_align (SUB_SEGMENT_ALIGN (now_seg), (char *) NULL, 0, 0,
 		   alignment_done);
 #endif
-      frag_align (SUB_SEGMENT_ALIGN (now_seg),
-		  subseg_text_p (now_seg) ? NOP_OPCODE : 0,
-		  0);
+      if (subseg_text_p (now_seg))
+	frag_align_code (SUB_SEGMENT_ALIGN (now_seg), 0);
+      else
+	frag_align (SUB_SEGMENT_ALIGN (now_seg), 0, 0);
+
 #ifdef md_do_align
     alignment_done:
 #endif
+
       frag_wane (frag_now);
       frag_now->fr_fix = 0;
       know (frag_now->fr_next == NULL);
@@ -4092,6 +4097,7 @@ fixup_mdeps (frags, h, this_segment)
 	{
 	case rs_align:
 	case rs_align_code:
+	case rs_align_test:
 	case rs_org:
 #ifdef HANDLE_ALIGN
 	  HANDLE_ALIGN (frags);
-- 
cgit v1.1