case rs_align_code:
fill_section (abfd, h, file_cursor)     bfd * abfd;     object_headers *h;     unsigned long *file_cursor;{  unsigned int i;  unsigned int paddr = 0;  for (i = SEG_E0; i < SEG_UNKNOWN; i++)    {      unsigned int offset = 0;      struct internal_scnhdr *s = &(segment_info[i].scnhdr);      PROGRESS (1);      if (s->s_name[0])	{	  fragS *frag = segment_info[i].frchainP->frch_root;	  char *buffer;	  if (s->s_size == 0)	    s->s_scnptr = 0;	  else	    {	      buffer = xmalloc (s->s_size);	      s->s_scnptr = *file_cursor;	    }	  know (s->s_paddr == paddr);	  if (strcmp (s->s_name, ".text") == 0)	    s->s_flags |= STYP_TEXT;	  else if (strcmp (s->s_name, ".data") == 0)	    s->s_flags |= STYP_DATA;	  else if (strcmp (s->s_name, ".bss") == 0)	    {	      s->s_scnptr = 0;	      s->s_flags |= STYP_BSS;	      /* @@ Should make the i386 and a29k coff targets define		 COFF_NOLOAD_PROBLEM, and have only one test here.  */#ifndef TC_I386#ifndef TC_A29K#ifndef COFF_NOLOAD_PROBLEM	      /* Apparently the SVR3 linker (and exec syscall) and UDI		 mondfe progrem are confused by noload sections.  */	      s->s_flags |= STYP_NOLOAD;#endif#endif#endif	    }	  else if (strcmp (s->s_name, ".lit") == 0)	    s->s_flags = STYP_LIT | STYP_TEXT;	  else if (strcmp (s->s_name, ".init") == 0)	    s->s_flags |= STYP_TEXT;	  else if (strcmp (s->s_name, ".fini") == 0)	    s->s_flags |= STYP_TEXT;	  else if (strncmp (s->s_name, ".comment", 8) == 0)	    s->s_flags |= STYP_INFO;	  while (frag)	    {	      unsigned int fill_size;	      switch (frag->fr_type)		{		case rs_machine_dependent:		  if (frag->fr_fix)		    {		      memcpy (buffer + frag->fr_address,			      frag->fr_literal,			      (unsigned int) frag->fr_fix);		      offset += frag->fr_fix;		    }		  break;		case rs_space:		  assert (frag->fr_symbol == 0);		case rs_fill:		case rs_align:		case rs_org:		  if (frag->fr_fix)		    {		      memcpy (buffer + frag->fr_address,			      frag->fr_literal,			      (unsigned int) frag->fr_fix);		      offset += frag->fr_fix;		    }		  fill_size = frag->fr_var;		  if (fill_size && frag->fr_offset > 0)		    {		      unsigned int count;		      unsigned int off = frag->fr_fix;		      for (count = frag->fr_offset; count; count--)			{			  if (fill_size + frag->fr_address + off <= s->s_size)			    {			      memcpy (buffer + frag->fr_address + off,				      frag->fr_literal + frag->fr_fix,				      fill_size);			      off += fill_size;			      offset += fill_size;			    }			}		    }		  break;		case rs_broken_word:		  break;		default:		  abort ();		}	      frag = frag->fr_next;	    }	  if (s->s_size != 0)	    {	      if (s->s_scnptr != 0)		{		  bfd_write (buffer, s->s_size, 1, abfd);		  *file_cursor += s->s_size;		}	      free (buffer);	    }	  paddr += s->s_size;	}    }}