This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix dealing with large (>2GB) static data initalizers


Hi,
at the present we silently misscompile code

char large[0x1ffffffff] = {1};

on all 64bit targets.  This is because all sizes in ASM_OUTPUT_* machinery are
ints.  This patch makes them HOST_WIDE_INTs that brings large amount of
anoyance in updating the targets.  I updated x86_64, alpha and partly pa/s390
targets to deal with the sizes properly and added simple cast in the rest (to
reduce amount of mistakes in the patch).  Given the amount of changes needed I
would like to update the rest of 64bit targets incrementally.

Would this be OK for mainline?  I tested it only on 386/x86-64 and sh cross.
Didn't have energy to test rest of the targets but because the change is
minimal it should work.

Honza

Sun May 11 12:54:47 CEST 2003  Jan Hubicka  <jh@suse.cz>
	* elfos.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON): Make it 64bit clean
	* alpha.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASK_OUTPUT_LOCAL): Make
	it 64bit clean.
	* elf.h (ASM_OTUPUT_SKIP): Likewise.
	* unicosmk.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMM): Likewise.
	* arm.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* aout.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* unknown-elf.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Expect HOST_WIDE_INT operand.
	* avr.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_SKIP): Expect
	HOST_WIDE_INT operand.
	* c4x.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP,
	ASM_OUTPUT_BSS): Expect HOST_WIDE_INT operand.
	* aout.h (ASM_OTUPUT_SKIP): Likewise.
	* cris.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
	* darwin.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON): Likewise.
	* dsp16xx.h (ASM_OTUPUT_SKIP): Likewise.
	* frv.h (ASM_OTUPUT_SKIP): Likewise.
	* h8300.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_LOCAL): Likewise.
	* 370.h (ASM_OTUPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Make it 64bit
	clean.
	* att.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT operand.
	* bsd.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Make it 64bit clean.
	* darwin.h (ASM_OUTPUT_SKIP): Make it 64bit clean..
	* sco5.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Expect
	HOST_WIDE_INT operand
	* svr3gas.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	Expect HOST_WIDE_INT operand
	* sysv3.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT operand
	* i960.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_ALIGNED_LOCAL): Expect HOST_WIDE_INT operand
	* ip2k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* m32r.h (ASM_OUTPUT_COMMON): Likewise.
	* 3b1.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* amix.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* crds.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* hp320.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* m68k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP):
	Likewise.
	* m68kelf.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* m68kv4.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Likewise.
	* mot3300.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP): Likewise.
	* netbsd-elf.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_SKIP): Likewise.
	* sgs.h (ASM_OUTPUT_SKIP): Likewise.
	* tower-as.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON,
	ASM_OUTPUT_SKIP): Likewise.
	* m88k.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON, ASM_OUTPUT_SKIP):
	Likewise.
	* mcore.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_BSS, ASM_OUTPUT_SKIP): Likewise.
	* iris.h (ASM_OUTPUT_LOCAL): Likewise.
	* mips.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_SKIP): Likewise.
	* ns32k.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL,
	ASM_OUTPUT_SKIP): Make it 64bit clean.
	* pa-pro-end.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL):
	Make it 64bit clean.
	* pa.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL,
	ASM_OUTPUT_SKIP): Make it 64bit clean.
	* hpux.h (ASM_OUTPUT_LOCAL, ASM_OUTPUT_ALIGNED_LOCAL): Make it
	64bit clean.
	* romp.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Expect
	HOST_WIDE_INT argument
	* s390.h (ASM_OUTPUT_SKIP): Expect HOST_WIDE_INT argument.
	* sh.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_LOCAL, ASM_OUTPUT_COMMON): Expect
	HOST_WIDE_INT argument
	* sol2.h (ASM_OUTPUT_SKIP): HOST_WIDE_INT argument
	* sparc.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON): HOST_WIDE_INT argument
	* svr3.h (ASM_OUTPUT_SKIP): HOST_WIDE_INT argument
	* vax.h (ASM_OUTPUT_SKIP, ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL):
	HOST_WIDE_INT argument
	* vaxv.h (ASM_OUTPUT_LOCAL): HOST_WIDE_INT argument
	* xtensa.h (ASM_OUTPUT_LOCAL): HOST_WIDE_INT argument
	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	asm_emit_uninitialized, assemble_zeros, assemble_static_space):
	HOST_WIDE_INT argument

diff -Nrc3p config.old/elfos.h config/elfos.h
*** config.old/elfos.h	Mon May  5 22:51:32 2003
--- config/elfos.h	Tue May  6 00:26:01 2003
*************** Boston, MA 02111-1307, USA.  */
*** 108,114 ****
  
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
  
  /* This is how to store into the string LABEL
     the symbol_ref name of an internal numbered label where
--- 108,116 ----
  
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   (fputs (SKIP_ASM_OP, (FILE)),					\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),		\
!    putc ('\n', (FILE)))	
  
  /* This is how to store into the string LABEL
     the symbol_ref name of an internal numbered label where
*************** Boston, MA 02111-1307, USA.  */
*** 171,176 ****
      {									\
        fprintf ((FILE), "%s", COMMON_ASM_OP);				\
        assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
      }									\
    while (0)
  
--- 173,181 ----
      {									\
        fprintf ((FILE), "%s", COMMON_ASM_OP);				\
        assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE));		\
!       fprintf ((FILE), ",%u\n", (ALIGN) / BITS_PER_UNIT);		\
      }									\
    while (0)
  
diff -Nrc3p config.old/alpha/alpha.h config/alpha/alpha.h
*** config.old/alpha/alpha.h	Mon May  5 22:51:31 2003
--- config/alpha/alpha.h	Tue May  6 11:00:59 2003
*************** do {						\
*** 1622,1628 ****
  /* This is how to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %d\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1622,1630 ----
  /* This is how to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   (fputs ("\t.space ", (FILE)),				\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),	\
!    putc (`\n`, (FILE)))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** do {						\
*** 1630,1636 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 1632,1640 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   putc (',', (FILE)),					\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),	\
!   putc ('\n', (FILE)))					\
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** do {						\
*** 1638,1644 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED)	\
  ( fputs ("\t.lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  
  /* Print operand X (an rtx) in assembler syntax to file FILE.
--- 1640,1648 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED)	\
  ( fputs ("\t.lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   putc (',', (FILE)),					\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),	\
!   putc ('\n', (FILE)))					\
  
  
  /* Print operand X (an rtx) in assembler syntax to file FILE.
diff -Nrc3p config.old/alpha/elf.h config/alpha/elf.h
*** config.old/alpha/elf.h	Mon May  5 22:51:31 2003
--- config/alpha/elf.h	Mon May  5 23:36:22 2003
*************** do {								\
*** 81,87 ****
  
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
  
  /* Output the label which precedes a jumptable.  Note that for all svr4
     systems where we actually generate jumptables (which is to say every
--- 81,89 ----
  
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   (fputs (SKIP_ASM_OP, (FILE)),					\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),		\
!    putc (`\n`, (FILE)))
  
  /* Output the label which precedes a jumptable.  Note that for all svr4
     systems where we actually generate jumptables (which is to say every
diff -Nrc3p config.old/alpha/unicosmk.h config/alpha/unicosmk.h
*** config.old/alpha/unicosmk.h	Mon May  5 22:51:31 2003
--- config/alpha/unicosmk.h	Tue May  6 10:52:27 2003
*************** ssib_section ()			\
*** 453,459 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM,SIZE)			\
!   fprintf ((STREAM), "\t.byte\t0:%d\n", (SIZE));
  
  /* This says how to output an assembler line to define a global common
     symbol. We need the alignment information because it has to be supplied
--- 453,461 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM,SIZE)			\
!   (fputs ("\t.byte\t0:", (FILE)),			\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),	\
!    putc (`\n`, (FILE)))
  
  /* This says how to output an assembler line to define a global common
     symbol. We need the alignment information because it has to be supplied
*************** ssib_section ()			\
*** 470,476 ****
    do { data_section ();					\
         fprintf (FILE, "\t.align\t%d\n", floor_log2 ((ALIGN) / BITS_PER_UNIT));\
         ASM_OUTPUT_LABEL ((FILE), (NAME));		\
!        fprintf (FILE, "\t.byte 0:%d\n", SIZE);		\
    } while (0)
  
  /* CAM does not allow us to declare a symbol as external first and then
--- 472,478 ----
    do { data_section ();					\
         fprintf (FILE, "\t.align\t%d\n", floor_log2 ((ALIGN) / BITS_PER_UNIT));\
         ASM_OUTPUT_LABEL ((FILE), (NAME));		\
!        fprintf (FILE, "\t.byte 0:%d\n", (int)(SIZE));	\
    } while (0)
  
  /* CAM does not allow us to declare a symbol as external first and then
diff -Nrc3p config.old/arm/aof.h config/arm/aof.h
*** config.old/arm/aof.h	Mon May  5 22:51:27 2003
--- config/arm/aof.h	Tue May  6 10:55:31 2003
*************** do					\
*** 207,220 ****
     fprintf ((STREAM), "\tAREA "),				\
     assemble_name ((STREAM), (NAME)),				\
     fprintf ((STREAM), ", DATA, COMMON\n\t%% %d\t%s size=%d\n",	\
! 	    (ROUNDED), ASM_COMMENT_START, SIZE))
  
  #define ASM_OUTPUT_LOCAL(STREAM,NAME,SIZE,ROUNDED)	\
     (zero_init_section (),				\
      assemble_name ((STREAM), (NAME)),			\
      fprintf ((STREAM), "\n"),				\
      fprintf ((STREAM), "\t%% %d\t%s size=%d\n",		\
! 	     (ROUNDED), ASM_COMMENT_START, SIZE))
  
  /* Output and Generation of Labels */
  
--- 207,220 ----
     fprintf ((STREAM), "\tAREA "),				\
     assemble_name ((STREAM), (NAME)),				\
     fprintf ((STREAM), ", DATA, COMMON\n\t%% %d\t%s size=%d\n",	\
! 	    (ROUNDED), ASM_COMMENT_START, (int)SIZE))
  
  #define ASM_OUTPUT_LOCAL(STREAM,NAME,SIZE,ROUNDED)	\
     (zero_init_section (),				\
      assemble_name ((STREAM), (NAME)),			\
      fprintf ((STREAM), "\n"),				\
      fprintf ((STREAM), "\t%% %d\t%s size=%d\n",		\
! 	     (ROUNDED), ASM_COMMENT_START, (int)SIZE))
  
  /* Output and Generation of Labels */
  
*************** do {					\
*** 332,338 ****
  /* Assembler Commands for Alignment */
  
  #define ASM_OUTPUT_SKIP(STREAM,NBYTES)		\
!  fprintf ((STREAM), "\t%%\t%d\n", (NBYTES))
  
  #define ASM_OUTPUT_ALIGN(STREAM,POWER)			\
  do {							\
--- 332,338 ----
  /* Assembler Commands for Alignment */
  
  #define ASM_OUTPUT_SKIP(STREAM,NBYTES)		\
!  fprintf ((STREAM), "\t%%\t%d\n", (int)(NBYTES))
  
  #define ASM_OUTPUT_ALIGN(STREAM,POWER)			\
  do {							\
diff -Nrc3p config.old/arm/aout.h config/arm/aout.h
*** config.old/arm/aout.h	Mon May  5 22:51:27 2003
--- config/arm/aout.h	Tue May  6 10:49:35 2003
***************
*** 240,246 ****
  /* Output a gap.  In fact we fill it with nulls.  */
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM, NBYTES) 	\
!   fprintf (STREAM, "\t.space\t%d\n", NBYTES)
  
  /* Align output to a power of two.  Horrible /bin/as.  */
  #ifndef ASM_OUTPUT_ALIGN  
--- 240,246 ----
  /* Output a gap.  In fact we fill it with nulls.  */
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM, NBYTES) 	\
!   fprintf (STREAM, "\t.space\t%d\n", (int)NBYTES)
  
  /* Align output to a power of two.  Horrible /bin/as.  */
  #ifndef ASM_OUTPUT_ALIGN  
***************
*** 265,271 ****
        fprintf (STREAM, "\t.comm\t");			\
        assemble_name (STREAM, NAME);			\
        asm_fprintf (STREAM, ", %d\t%@ %d\n", 		\
! 	           ROUNDED, SIZE);			\
      }							\
    while (0)
  #endif
--- 265,271 ----
        fprintf (STREAM, "\t.comm\t");			\
        assemble_name (STREAM, NAME);			\
        asm_fprintf (STREAM, ", %d\t%@ %d\n", 		\
! 	           (int)(ROUNDED), (int)(SIZE));	\
      }							\
    while (0)
  #endif
***************
*** 281,287 ****
        bss_section ();							\
        ASM_OUTPUT_ALIGN (STREAM, floor_log2 (ALIGN / BITS_PER_UNIT));	\
        ASM_OUTPUT_LABEL (STREAM, NAME);					\
!       fprintf (STREAM, "\t.space\t%d\n", SIZE);				\
      }									\
    while (0)
  #endif
--- 281,287 ----
        bss_section ();							\
        ASM_OUTPUT_ALIGN (STREAM, floor_log2 (ALIGN / BITS_PER_UNIT));	\
        ASM_OUTPUT_LABEL (STREAM, NAME);					\
!       fprintf (STREAM, "\t.space\t%d\n", (int)(SIZE));			\
      }									\
    while (0)
  #endif
diff -Nrc3p config.old/arm/unknown-elf.h config/arm/unknown-elf.h
*** config.old/arm/unknown-elf.h	Mon May  5 22:51:27 2003
--- config/arm/unknown-elf.h	Tue May  6 10:43:08 2003
***************
*** 66,72 ****
  									\
        last_assemble_variable_decl = DECL;				\
        ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL);			\
!       ASM_OUTPUT_SKIP (FILE, SIZE ? SIZE : 1);				\
      } 									\
    while (0)
  
--- 66,72 ----
  									\
        last_assemble_variable_decl = DECL;				\
        ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL);			\
!       ASM_OUTPUT_SKIP (FILE, SIZE ? (int)(SIZE) : 1);			\
      } 									\
    while (0)
  
***************
*** 81,87 ****
  									\
        ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT));	\
        ASM_OUTPUT_LABEL (FILE, NAME);					\
!       fprintf (FILE, "\t.space\t%d\n", SIZE ? SIZE : 1);		\
      }									\
    while (0)
  
--- 81,87 ----
  									\
        ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT));	\
        ASM_OUTPUT_LABEL (FILE, NAME);					\
!       fprintf (FILE, "\t.space\t%d\n", SIZE ? (int)(SIZE) : 1);		\
      }									\
    while (0)
  
diff -Nrc3p config.old/avr/avr.h config/avr/avr.h
*** config.old/avr/avr.h	Mon May  5 22:51:27 2003
--- config/avr/avr.h	Tue May  6 10:55:40 2003
*************** do {									   \
*** 1803,1809 ****
  do {									\
       fputs ("\t.lcomm ", (STREAM));					\
       assemble_name ((STREAM), (NAME));					\
!      fprintf ((STREAM), ",%d\n", (SIZE));				\
  } while (0)
  /* A C statement (sans semicolon) to output to the stdio stream
     STREAM the assembler definition of a local-common-label named NAME
--- 1803,1809 ----
  do {									\
       fputs ("\t.lcomm ", (STREAM));					\
       assemble_name ((STREAM), (NAME));					\
!      fprintf ((STREAM), ",%d\n", (int)(SIZE));				\
  } while (0)
  /* A C statement (sans semicolon) to output to the stdio stream
     STREAM the assembler definition of a local-common-label named NAME
*************** sprintf (STRING, "*.%s%d", PREFIX, NUM)
*** 2200,2206 ****
     of the jump-table.  */
  
  #define ASM_OUTPUT_SKIP(STREAM, N)		\
! fprintf (STREAM, "\t.skip %d,0\n", N)
  /* A C statement to output to the stdio stream STREAM an assembler
     instruction to advance the location counter by NBYTES bytes.
     Those bytes should be zero when loaded.  NBYTES will be a C
--- 2200,2206 ----
     of the jump-table.  */
  
  #define ASM_OUTPUT_SKIP(STREAM, N)		\
! fprintf (STREAM, "\t.skip %d,0\n", (int)N)
  /* A C statement to output to the stdio stream STREAM an assembler
     instruction to advance the location counter by NBYTES bytes.
     Those bytes should be zero when loaded.  NBYTES will be a C
diff -Nrc3p config.old/c4x/c4x.h config/c4x/c4x.h
*** config.old/c4x/c4x.h	Mon May  5 22:51:27 2003
--- config/c4x/c4x.h	Tue May  6 10:55:17 2003
*************** do {						\
*** 1668,1674 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.bss\t", FILE),			\
    assemble_name (FILE, (NAME)),		\
!   fprintf (FILE, ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line to define a global
     uninitialized variable.  */
--- 1668,1674 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.bss\t", FILE),			\
    assemble_name (FILE, (NAME)),		\
!   fprintf (FILE, ",%u\n", (int)(ROUNDED)))
  
  /* This says how to output an assembler line to define a global
     uninitialized variable.  */
*************** do {						\
*** 1679,1685 ****
     assemble_name (FILE, (NAME)),	\
     fputs ("\n\t.bss\t", FILE),	\
     assemble_name (FILE, (NAME)),	\
!    fprintf (FILE, ",%u\n", (ROUNDED)))
  
  #undef ASM_OUTPUT_BSS
  #define ASM_OUTPUT_BSS(FILE, DECL, NAME, SIZE, ALIGN)   \
--- 1679,1685 ----
     assemble_name (FILE, (NAME)),	\
     fputs ("\n\t.bss\t", FILE),	\
     assemble_name (FILE, (NAME)),	\
!    fprintf (FILE, ",%u\n", (int)(ROUNDED)))
  
  #undef ASM_OUTPUT_BSS
  #define ASM_OUTPUT_BSS(FILE, DECL, NAME, SIZE, ALIGN)   \
*************** do {						\
*** 1687,1693 ****
     assemble_name (FILE, (NAME)),	\
     fputs ("\n\t.bss\t", FILE),	\
     assemble_name (FILE, (NAME)),	\
!    fprintf (FILE, ",%u\n", (SIZE)))
  
  /* Macros Controlling Initialization Routines.  */
  
--- 1687,1693 ----
     assemble_name (FILE, (NAME)),	\
     fputs ("\n\t.bss\t", FILE),	\
     assemble_name (FILE, (NAME)),	\
!    fprintf (FILE, ",%u\n", (int)(SIZE)))
  
  /* Macros Controlling Initialization Routines.  */
  
diff -Nrc3p config.old/cris/aout.h config/cris/aout.h
*** config.old/cris/aout.h	Mon May  5 22:51:29 2003
--- config/cris/aout.h	Mon May  5 23:20:43 2003
*************** Boston, MA 02111-1307, USA.  */
*** 373,379 ****
  
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
  
  /* Node: All Debuggers */
  
--- 373,379 ----
  
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (int)(SIZE))
  
  /* Node: All Debuggers */
  
diff -Nrc3p config.old/cris/cris.h config/cris/cris.h
*** config.old/cris/cris.h	Mon May  5 22:51:29 2003
--- config/cris/cris.h	Tue May  6 10:43:48 2003
*************** call_ ## FUNC (void)						\
*** 1474,1480 ****
  	    }								\
  	  fprintf ((FILE), "%s", COMMON_ASM_OP);			\
  	  assemble_name ((FILE), (NAME));				\
! 	  fprintf ((FILE), ",%u,%u\n", (SIZE), align_);			\
  	}								\
        else								\
  	{								\
--- 1474,1480 ----
  	    }								\
  	  fprintf ((FILE), "%s", COMMON_ASM_OP);			\
  	  assemble_name ((FILE), (NAME));				\
! 	  fprintf ((FILE), ",%u,%u\n", (int)(SIZE), align_);		\
  	}								\
        else								\
  	{								\
*************** call_ ## FUNC (void)						\
*** 1485,1491 ****
  	  fputs ("\t.lcomm ", (FILE));					\
  	  assemble_name ((FILE), (NAME));				\
  	  fprintf ((FILE), ",%u\n",					\
! 		   ((SIZE) + (align_ - 1)) & ~(align_ - 1));		\
  	}								\
      }									\
    while (0)
--- 1485,1491 ----
  	  fputs ("\t.lcomm ", (FILE));					\
  	  assemble_name ((FILE), (NAME));				\
  	  fprintf ((FILE), ",%u\n",					\
! 		   ((int)(SIZE) + (align_ - 1)) & ~(align_ - 1));	\
  	}								\
      }									\
    while (0)
diff -Nrc3p config.old/darwin.h config/darwin.h
*** config.old/darwin.h	Mon May  5 22:51:31 2003
--- config/darwin.h	Tue May  6 10:44:59 2003
*************** do { text_section ();							\
*** 346,352 ****
    } while (0)
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %d\n", SIZE)
  
  /* Give ObjC methods pretty symbol names.  */
  
--- 346,354 ----
    } while (0)
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   (fputs ("\t.space ", (FILE)),					\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),		\
!    putc (`\n`, (FILE)))
  
  /* Give ObjC methods pretty symbol names.  */
  
*************** do { text_section ();							\
*** 454,460 ****
    do {									\
      fputs (".lcomm ", (FILE));						\
      assemble_name ((FILE), (NAME));					\
!     fprintf ((FILE), ",%u,%u\n", (SIZE),				\
  	     floor_log2 ((ALIGN) / BITS_PER_UNIT));			\
      if ((DECL) && ((TREE_STATIC (DECL)					\
  	 && (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL)))		\
--- 456,464 ----
    do {									\
      fputs (".lcomm ", (FILE));						\
      assemble_name ((FILE), (NAME));					\
!     putc (`,`, (FILE)))							\
!     fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),			\
!     fprintf ((FILE), ",%u\n", 						\
  	     floor_log2 ((ALIGN) / BITS_PER_UNIT));			\
      if ((DECL) && ((TREE_STATIC (DECL)					\
  	 && (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL)))		\
diff -Nrc3p config.old/dsp16xx/dsp16xx.h config/dsp16xx/dsp16xx.h
*** config.old/dsp16xx/dsp16xx.h	Mon May  5 22:51:32 2003
--- config/dsp16xx/dsp16xx.h	Mon May  5 23:25:06 2003
*************** extern struct dsp16xx_frame_info current
*** 1703,1709 ****
  #define ASM_NO_SKIP_IN_TEXT 1
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t%d * int 0\n", (SIZE))
  
  /* CONTROLLING DEBUGGING INFORMATION FORMAT */
  
--- 1703,1709 ----
  #define ASM_NO_SKIP_IN_TEXT 1
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t%d * int 0\n", (int)(SIZE))
  
  /* CONTROLLING DEBUGGING INFORMATION FORMAT */
  
diff -Nrc3p config.old/frv/frv.h config/frv/frv.h
*** config.old/frv/frv.h	Mon May  5 22:51:27 2003
--- config/frv/frv.h	Mon May  5 23:17:31 2003
*************** do {                                    
*** 3111,3117 ****
     Defined in svr4.h.  */
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM, NBYTES) \
!   fprintf (STREAM, "\t.zero\t%u\n", (NBYTES))
  
  /* A C statement to output to the stdio stream STREAM an assembler command to
     advance the location counter to a multiple of 2 to the POWER bytes.  POWER
--- 3111,3117 ----
     Defined in svr4.h.  */
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM, NBYTES) \
!   fprintf (STREAM, "\t.zero\t%u\n", (int)(NBYTES))
  
  /* A C statement to output to the stdio stream STREAM an assembler command to
     advance the location counter to a multiple of 2 to the POWER bytes.  POWER
diff -Nrc3p config.old/h8300/h8300.h config/h8300/h8300.h
*** config.old/h8300/h8300.h	Mon May  5 22:51:31 2003
--- config/h8300/h8300.h	Tue May  6 11:01:05 2003
*************** struct cum_arg
*** 1184,1190 ****
    fprintf (FILE, "%s\"%s\"\n", IDENT_ASM_OP, NAME)
  
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf (FILE, "\t.space %d\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1184,1190 ----
    fprintf (FILE, "%s\"%s\"\n", IDENT_ASM_OP, NAME)
  
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf (FILE, "\t.space %d\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** struct cum_arg
*** 1207,1213 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
  ( fputs ("\t.lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  #define ASM_PN_FORMAT "%s___%lu"
  
--- 1207,1213 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
  ( fputs ("\t.lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (int)(SIZE)))
  
  #define ASM_PN_FORMAT "%s___%lu"
  
diff -Nrc3p config.old/i370/i370.h config/i370/i370.h
*** config.old/i370/i370.h	Mon May  5 22:51:28 2003
--- config/i370/i370.h	Tue May  6 10:56:38 2003
*************** enum reg_class
*** 1181,1187 ****
  
  #define ASM_OUTPUT_SKIP(FILE, SIZE)  					\
  {									\
!   int s, k;								\
    for (s = (SIZE); s > 0; s -= MAX_CHUNK)				\
      {									\
        if (s > MAX_CHUNK)						\
--- 1181,1188 ----
  
  #define ASM_OUTPUT_SKIP(FILE, SIZE)  					\
  {									\
!   HOST_WIDE_INT s;							\
!   int  k;								\
    for (s = (SIZE); s > 0; s -= MAX_CHUNK)				\
      {									\
        if (s > MAX_CHUNK)						\
*************** abort(); \
*** 1864,1870 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),                     \
    assemble_name ((FILE), (NAME)),               \
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 1865,1873 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),                     \
    assemble_name ((FILE), (NAME)),               \
!   putc (',', (FILE)),	                          \
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (ROUNDED)),\
!   putc ('\n', (FILE)))                          \
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** abort(); \
*** 1872,1878 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),                    \
    assemble_name ((FILE), (NAME)),               \
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  #endif /* TARGET_ELF_ABI */
  #endif /* ! GCC_I370_H */
--- 1873,1879 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),                    \
    assemble_name ((FILE), (NAME)),               \
!   putc (',', (FILE)),	                          \
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (ROUNDED)),\
!   putc ('\n', (FILE)))                          \
  
  #endif /* TARGET_ELF_ABI */
  #endif /* ! GCC_I370_H */
diff -Nrc3p config.old/i386/att.h config/i386/att.h
*** config.old/i386/att.h	Mon May  5 22:51:28 2003
--- config/i386/att.h	Mon May  5 23:18:37 2003
*************** do								\
*** 69,75 ****
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf ((FILE), "\t.set .,.+%u\n", (SIZE))
  
  /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s.  */
  
--- 69,75 ----
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf ((FILE), "\t.set .,.+%u\n", (int)(SIZE))
  
  /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s.  */
  
diff -Nrc3p config.old/i386/bsd.h config/i386/bsd.h
*** config.old/i386/bsd.h	Mon May  5 22:51:28 2003
--- config/i386/bsd.h	Tue May  6 10:56:55 2003
*************** Boston, MA 02111-1307, USA.  */
*** 53,59 ****
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %u\n", (SIZE))
  
  /* Define the syntax of labels and symbol definitions/declarations.  */
  
--- 53,61 ----
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   (fputs ("\t.space ", (FILE)),						\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),			\
!    putc (`\n`, (FILE)))
  
  /* Define the syntax of labels and symbol definitions/declarations.  */
  
*************** Boston, MA 02111-1307, USA.  */
*** 63,69 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 65,71 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** Boston, MA 02111-1307, USA.  */
*** 71,77 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This is how to output an assembler line
     that says to advance the location counter
--- 73,79 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* This is how to output an assembler line
     that says to advance the location counter
diff -Nrc3p config.old/i386/darwin.h config/i386/darwin.h
*** config.old/i386/darwin.h	Mon May  5 22:51:28 2003
--- config/i386/darwin.h	Tue May  6 10:56:46 2003
*************** Boston, MA 02111-1307, USA.  */
*** 109,115 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* Darwin profiling -- call mcount.  */
  #undef FUNCTION_PROFILER
--- 109,117 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   putc (',', (FILE)),				\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (ROUNDED)),\
!   putc ('\n', (FILE)))			\
  
  /* Darwin profiling -- call mcount.  */
  #undef FUNCTION_PROFILER
diff -Nrc3p config.old/i386/sco5.h config/i386/sco5.h
*** config.old/i386/sco5.h	Mon May  5 22:51:29 2003
--- config/i386/sco5.h	Tue May  6 10:50:24 2003
*************** do {									\
*** 218,226 ****
    fprintf ((FILE), "%s", COMMON_ASM_OP);				\
    assemble_name ((FILE), (NAME));					\
    if (TARGET_ELF)							\
!     fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
    else									\
!     fprintf ((FILE), ",%u\n", (SIZE));					\
  } while (0)
  
  #undef ASM_OUTPUT_ALIGNED_LOCAL
--- 218,226 ----
    fprintf ((FILE), "%s", COMMON_ASM_OP);				\
    assemble_name ((FILE), (NAME));					\
    if (TARGET_ELF)							\
!     fprintf ((FILE), ",%u,%u\n", (int)(SIZE), (ALIGN) / BITS_PER_UNIT);	\
    else									\
!     fprintf ((FILE), ",%u\n", (int)(SIZE));				\
  } while (0)
  
  #undef ASM_OUTPUT_ALIGNED_LOCAL
*************** do {									\
*** 241,247 ****
      ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align);			\
      fprintf ((FILE), "%s\t", "\t.lcomm");				\
      assemble_name ((FILE), (NAME));					\
!     fprintf ((FILE), ",%u\n", (SIZE));					\
     }									\
  } while (0)
  
--- 241,247 ----
      ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align);			\
      fprintf ((FILE), "%s\t", "\t.lcomm");				\
      assemble_name ((FILE), (NAME));					\
!     fprintf ((FILE), ",%u\n", (int)(SIZE));				\
     }									\
  } while (0)
  
*************** do {									\
*** 372,380 ****
  #define ASM_OUTPUT_SKIP(FILE,SIZE) \
  do {									\
    if (TARGET_ELF)							\
!     fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE));			\
    else									\
!     fprintf ((FILE), "%s.,.+%u\n", SET_ASM_OP, (SIZE));		\
  } while (0)
  
  
--- 372,380 ----
  #define ASM_OUTPUT_SKIP(FILE,SIZE) \
  do {									\
    if (TARGET_ELF)							\
!     fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (int)(SIZE));			\
    else									\
!     fprintf ((FILE), "%s.,.+%u\n", SET_ASM_OP, (int)(SIZE));		\
  } while (0)
  
  
diff -Nrc3p config.old/i386/svr3gas.h config/i386/svr3gas.h
*** config.old/i386/svr3gas.h	Mon May  5 22:51:29 2003
--- config/i386/svr3gas.h	Tue May  6 10:57:27 2003
*************** Boston, MA 02111-1307, USA.  */
*** 52,64 ****
  	data_section ();				\
  	ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align); \
  	ASM_OUTPUT_LABEL ((FILE), (NAME));		\
! 	fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED));	\
        }							\
      else						\
        {							\
  	fputs (".lcomm ", (FILE));			\
  	assemble_name ((FILE), (NAME));			\
! 	fprintf ((FILE), ",%u\n", (ROUNDED));		\
        }							\
    } while (0)
  
--- 52,64 ----
  	data_section ();				\
  	ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align); \
  	ASM_OUTPUT_LABEL ((FILE), (NAME));		\
! 	fprintf ((FILE), "\t.set .,.+%u\n", (int)(ROUNDED));	\
        }							\
      else						\
        {							\
  	fputs (".lcomm ", (FILE));			\
  	assemble_name ((FILE), (NAME));			\
! 	fprintf ((FILE), ",%u\n", (int)(ROUNDED));	\
        }							\
    } while (0)
  
diff -Nrc3p config.old/i386/sysv3.h config/i386/sysv3.h
*** config.old/i386/sysv3.h	Mon May  5 22:51:29 2003
--- config/i386/sysv3.h	Tue May  6 10:57:14 2003
*************** Boston, MA 02111-1307, USA.  */
*** 89,95 ****
        bss_section ();					\
      ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align);	\
      ASM_OUTPUT_LABEL ((FILE), (NAME));			\
!     fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED));	\
    } while (0)
  
  /* Define a few machine-specific details of the implementation of
--- 89,95 ----
        bss_section ();					\
      ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align);	\
      ASM_OUTPUT_LABEL ((FILE), (NAME));			\
!     fprintf ((FILE), "\t.set .,.+%u\n", (int)(ROUNDED));\
    } while (0)
  
  /* Define a few machine-specific details of the implementation of
diff -Nrc3p config.old/i960/i960.h config/i960/i960.h
*** config.old/i960/i960.h	Mon May  5 22:51:29 2003
--- config/i960/i960.h	Tue May  6 10:50:58 2003
*************** extern struct rtx_def *i960_compare_op0,
*** 1251,1257 ****
    fprintf (FILE, "\t.align %d\n", (LOG))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %d\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1251,1257 ----
    fprintf (FILE, "\t.align %d\n", (LOG))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %d\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** extern struct rtx_def *i960_compare_op0,
*** 1268,1274 ****
        assemble_name ((FILE), (NAME)),			\
        fputs ("\n.comm ", (FILE)),			\
        assemble_name ((FILE), (NAME)),			\
!       fprintf ((FILE), ",%d\n", (SIZE));		\
      }							\
  }
  
--- 1268,1274 ----
        assemble_name ((FILE), (NAME)),			\
        fputs ("\n.comm ", (FILE)),			\
        assemble_name ((FILE), (NAME)),			\
!       fprintf ((FILE), ",%d\n", (int)(SIZE));		\
      }							\
  }
  
*************** extern struct rtx_def *i960_compare_op0,
*** 1279,1285 ****
  #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)  \
  ( fputs (".bss\t", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d,%d\n", (SIZE),		\
  	   (floor_log2 ((ALIGN) / BITS_PER_UNIT))))
  
  /* A C statement (sans semicolon) to output to the stdio stream
--- 1279,1285 ----
  #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)  \
  ( fputs (".bss\t", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d,%d\n", (int)(SIZE),	\
  	   (floor_log2 ((ALIGN) / BITS_PER_UNIT))))
  
  /* A C statement (sans semicolon) to output to the stdio stream
diff -Nrc3p config.old/ip2k/ip2k.h config/ip2k/ip2k.h
*** config.old/ip2k/ip2k.h	Mon May  5 22:51:30 2003
--- config/ip2k/ip2k.h	Tue May  6 11:00:25 2003
*************** do {									\
*** 1961,1967 ****
  do {							\
       fputs ("\t.comm ", (STREAM));			\
       assemble_name ((STREAM), (NAME));			\
!      fprintf ((STREAM), ",%d\n", (SIZE));		\
  } while (0)
  /* A C statement (sans semicolon) to output to the stdio stream
     STREAM the assembler definition of a common-label named NAME whose
--- 1961,1967 ----
  do {							\
       fputs ("\t.comm ", (STREAM));			\
       assemble_name ((STREAM), (NAME));			\
!      fprintf ((STREAM), ",%d\n", (int)(SIZE));		\
  } while (0)
  /* A C statement (sans semicolon) to output to the stdio stream
     STREAM the assembler definition of a common-label named NAME whose
*************** do {							\
*** 1979,1985 ****
  do {							\
       fputs ("\t.lcomm ", (STREAM));			\
       assemble_name ((STREAM), (NAME));			\
!      fprintf ((STREAM), ",%d\n", (SIZE));		\
  } while (0)
  /* A C statement (sans semicolon) to output to the stdio stream
     STREAM the assembler definition of a local-common-label named NAME
--- 1979,1985 ----
  do {							\
       fputs ("\t.lcomm ", (STREAM));			\
       assemble_name ((STREAM), (NAME));			\
!      fprintf ((STREAM), ",%d\n", (int)(SIZE));		\
  } while (0)
  /* A C statement (sans semicolon) to output to the stdio stream
     STREAM the assembler definition of a local-common-label named NAME
diff -Nrc3p config.old/m32r/m32r.h config/m32r/m32r.h
*** config.old/m32r/m32r.h	Mon May  5 22:51:29 2003
--- config/m32r/m32r.h	Tue May  6 11:04:08 2003
*************** extern char m32r_punct_chars[256];
*** 1785,1791 ****
        else								\
  	fprintf ((FILE), "%s", COMMON_ASM_OP);				\
        assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
      }									\
    while (0)
  
--- 1785,1791 ----
        else								\
  	fprintf ((FILE), "%s", COMMON_ASM_OP);				\
        assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), ",%u,%u\n", (int)(SIZE), (ALIGN) / BITS_PER_UNIT);\
      }									\
    while (0)
  
diff -Nrc3p config.old/m68k/3b1.h config/m68k/3b1.h
*** config.old/m68k/3b1.h	Mon May  5 22:51:30 2003
--- config/m68k/3b1.h	Tue May  6 10:58:05 2003
*************** do {					\
*** 126,132 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\tspace %d\n", (SIZE))
  
  /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s.  */
  
--- 126,132 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\tspace %d\n", (int)(SIZE))
  
  /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s.  */
  
*************** int switch_table_difference_label_flag;
*** 392,398 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  #define USER_LABEL_PREFIX ""
  
--- 392,398 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  #define USER_LABEL_PREFIX ""
  
diff -Nrc3p config.old/m68k/amix.h config/m68k/amix.h
*** config.old/m68k/amix.h	Mon May  5 22:51:30 2003
--- config/m68k/amix.h	Tue May  6 10:51:15 2003
*************** do {									\
*** 89,95 ****
  #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
  do {									\
    fprintf ((FILE), "%s%s,%u,%u\n",					\
! 	   BSS_ASM_OP, (NAME), (SIZE), MAX ((ALIGN) / BITS_PER_UNIT, 4)); \
  } while (0)
  
  /* This definition of ASM_OUTPUT_ASCII is the same as the one in m68k/sgs.h,
--- 89,95 ----
  #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
  do {									\
    fprintf ((FILE), "%s%s,%u,%u\n",					\
! 	   BSS_ASM_OP, (NAME), (int)(SIZE), MAX ((ALIGN) / BITS_PER_UNIT, 4)); \
  } while (0)
  
  /* This definition of ASM_OUTPUT_ASCII is the same as the one in m68k/sgs.h,
diff -Nrc3p config.old/m68k/crds.h config/m68k/crds.h
*** config.old/m68k/crds.h	Mon May  5 22:51:30 2003
--- config/m68k/crds.h	Tue May  6 10:58:53 2003
*************** Boston, MA 02111-1307, USA.  */
*** 154,160 ****
  /*unos has no .skip :-( */
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)	 	\
!     fprintf (FILE, "\t. = . + %u\n", (SIZE));	
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 154,160 ----
  /*unos has no .skip :-( */
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)	 	\
!     fprintf (FILE, "\t. = . + %u\n", (int)(SIZE));	
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** Boston, MA 02111-1307, USA.  */
*** 165,171 ****
  { data_section ();				\
    if ((SIZE) > 1) fprintf (FILE, "\t.even\n");	\
    assemble_name ((FILE), (NAME));		\
!   fprintf ((FILE), ":\t. = . + %u\n", (ROUNDED));}
  
  /* This is how to output an insn to push a register on the stack.
     It need not be very fast code.  */
--- 165,171 ----
  { data_section ();				\
    if ((SIZE) > 1) fprintf (FILE, "\t.even\n");	\
    assemble_name ((FILE), (NAME));		\
!   fprintf ((FILE), ":\t. = . + %u\n", (int)(ROUNDED));}
  
  /* This is how to output an insn to push a register on the stack.
     It need not be very fast code.  */
diff -Nrc3p config.old/m68k/hp320.h config/m68k/hp320.h
*** config.old/m68k/hp320.h	Mon May  5 22:51:30 2003
--- config/m68k/hp320.h	Tue May  6 10:59:15 2003
*************** Boston, MA 02111-1307, USA.  */
*** 237,243 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 237,243 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** Boston, MA 02111-1307, USA.  */
*** 245,251 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u,2\n", (ROUNDED)))
  
  #define ASM_PN_FORMAT "%s___%lu"
  
--- 245,251 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u,2\n", (int)(ROUNDED)))
  
  #define ASM_PN_FORMAT "%s___%lu"
  
*************** do {					\
*** 264,270 ****
  } while (0)
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\tspace %u\n", (SIZE))
  
  #define ASM_OUTPUT_SOURCE_FILENAME(FILE, FILENAME)
  #define ASM_OUTPUT_SOURCE_LINE(FILE, LINENO)
--- 264,270 ----
  } while (0)
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\tspace %u\n", (int)(SIZE))
  
  #define ASM_OUTPUT_SOURCE_FILENAME(FILE, FILENAME)
  #define ASM_OUTPUT_SOURCE_LINE(FILE, LINENO)
diff -Nrc3p config.old/m68k/m68k.h config/m68k/m68k.h
*** config.old/m68k/m68k.h	Mon May  5 22:51:30 2003
--- config/m68k/m68k.h	Tue May  6 10:59:05 2003
*************** __transfer_from_trampoline ()					\
*** 1709,1715 ****
      fprintf (FILE, "\t.even\n");
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.skip %u\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1709,1715 ----
      fprintf (FILE, "\t.even\n");
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.skip %u\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** __transfer_from_trampoline ()					\
*** 1717,1723 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 1717,1723 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** __transfer_from_trampoline ()					\
*** 1725,1731 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* Output a float value (represented as a C double) as an immediate operand.
     This macro is a 68k-specific macro.  */
--- 1725,1731 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* Output a float value (represented as a C double) as an immediate operand.
     This macro is a 68k-specific macro.  */
diff -Nrc3p config.old/m68k/m68kelf.h config/m68k/m68kelf.h
*** config.old/m68k/m68kelf.h	Mon May  5 22:51:30 2003
--- config/m68k/m68kelf.h	Tue May  6 10:59:28 2003
*************** do {								\
*** 167,173 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (SIZE))
  
  #if 0
  /* SVR4 m68k assembler is bitching on the `comm i,1,1' which askes for 
--- 167,173 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (int)(SIZE))
  
  #if 0
  /* SVR4 m68k assembler is bitching on the `comm i,1,1' which askes for 
*************** extern int switch_table_difference_label
*** 229,240 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  
  /* Currently, JUMP_TABLES_IN_TEXT_SECTION must be defined in order to
     keep switch tables in the text section.  */
--- 229,240 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  
  /* Currently, JUMP_TABLES_IN_TEXT_SECTION must be defined in order to
     keep switch tables in the text section.  */
diff -Nrc3p config.old/m68k/m68kv4.h config/m68k/m68kv4.h
*** config.old/m68k/m68kv4.h	Mon May  5 22:51:30 2003
--- config/m68k/m68kv4.h	Tue May  6 10:58:46 2003
*************** Boston, MA 02111-1307, USA.  */
*** 124,130 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (SIZE))
  
  /* 1 if N is a possible register number for a function value.
     For m68k/SVR4 allow d0, a0, or fp0 as return registers, for integral,
--- 124,130 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (int)(SIZE))
  
  /* 1 if N is a possible register number for a function value.
     For m68k/SVR4 allow d0, a0, or fp0 as return registers, for integral,
*************** int switch_table_difference_label_flag;
*** 258,269 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  
  /* Override the definition in svr4.h. In m68k svr4, using swbeg is the 
     standard way to do switch table.  */
--- 258,269 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  
  /* Override the definition in svr4.h. In m68k svr4, using swbeg is the 
     standard way to do switch table.  */
diff -Nrc3p config.old/m68k/mot3300.h config/m68k/mot3300.h
*** config.old/m68k/mot3300.h	Mon May  5 22:51:30 2003
--- config/m68k/mot3300.h	Tue May  6 10:57:37 2003
*************** Boston, MA 02111-1307, USA.  */
*** 308,314 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
  
  /* Can't use ASM_OUTPUT_SKIP in text section.  */
  
--- 308,314 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (int)(SIZE))
  
  /* Can't use ASM_OUTPUT_SKIP in text section.  */
  
*************** Boston, MA 02111-1307, USA.  */
*** 532,543 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  #else /* USE_GAS */
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  #endif /* USE_GAS */
  
  #ifndef USE_GAS
--- 532,543 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  #else /* USE_GAS */
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  #endif /* USE_GAS */
  
  #ifndef USE_GAS
diff -Nrc3p config.old/m68k/netbsd-elf.h config/m68k/netbsd-elf.h
*** config.old/m68k/netbsd-elf.h	Mon May  5 22:51:30 2003
--- config/m68k/netbsd-elf.h	Tue May  6 10:58:35 2003
*************** while (0)
*** 269,281 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)			\
  ( fputs (".comm ", (FILE)),						\
    assemble_name ((FILE), (NAME)),					\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  
  #undef ASM_OUTPUT_LOCAL
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)			\
  ( fputs (".lcomm ", (FILE)),						\
    assemble_name ((FILE), (NAME)),					\
!   fprintf ((FILE), ",%u\n", (SIZE)))
  
  
  /* XXX
--- 269,281 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)			\
  ( fputs (".comm ", (FILE)),						\
    assemble_name ((FILE), (NAME)),					\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  
  #undef ASM_OUTPUT_LOCAL
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)			\
  ( fputs (".lcomm ", (FILE)),						\
    assemble_name ((FILE), (NAME)),					\
!   fprintf ((FILE), ",%u\n", (int)(SIZE)))
  
  
  /* XXX
diff -Nrc3p config.old/m68k/sgs.h config/m68k/sgs.h
*** config.old/m68k/sgs.h	Mon May  5 22:51:30 2003
--- config/m68k/sgs.h	Mon May  5 23:21:07 2003
*************** do {								\
*** 194,200 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (SIZE))
  
  /* Translate Motorola opcodes such as `jbeq' into SGS opcodes such
     as `beq.w'.
--- 194,200 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (int)(SIZE))
  
  /* Translate Motorola opcodes such as `jbeq' into SGS opcodes such
     as `beq.w'.
diff -Nrc3p config.old/m68k/tower-as.h config/m68k/tower-as.h
*** config.old/m68k/tower-as.h	Mon May  5 22:51:30 2003
--- config/m68k/tower-as.h	Tue May  6 10:58:25 2003
*************** Boston, MA 02111-1307, USA.  */
*** 199,205 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", ((SIZE) == 0) ? (ROUNDED) : (SIZE)))
  
  /* This says how to output an assembler line to define a local common symbol.
     We use SIZE rather than ROUNDED, as this is what the native cc does.  */
--- 199,205 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", ((SIZE) == 0) ? (int)(ROUNDED) : (int)(SIZE)))
  
  /* This says how to output an assembler line to define a local common symbol.
     We use SIZE rather than ROUNDED, as this is what the native cc does.  */
*************** Boston, MA 02111-1307, USA.  */
*** 208,214 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", ((SIZE) == 0) ? (ROUNDED) : (SIZE)))
  
  #define ASM_PN_FORMAT "%s%%%%%lu"
   
--- 208,214 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\tlcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", ((SIZE) == 0) ? (int)(ROUNDED) : (int)(SIZE)))
  
  #define ASM_PN_FORMAT "%s%%%%%lu"
   
*************** do {					\
*** 246,252 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\tspace %d\n", (SIZE))
  
  /* Output a float value (represented as a C double) as an immediate operand.
     This macro is a 68k-specific macro.  */
--- 246,252 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\tspace %d\n", (int)(SIZE))
  
  /* Output a float value (represented as a C double) as an immediate operand.
     This macro is a 68k-specific macro.  */
diff -Nrc3p config.old/m88k/m88k.h config/m88k/m88k.h
*** config.old/m88k/m88k.h	Mon May  5 22:51:30 2003
--- config/m88k/m88k.h	Tue May  6 10:59:41 2003
*************** do {									 \
*** 1888,1894 ****
  /* Override svr[34].h.  */
  #undef	ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
  
  /* Override svr4.h.  */
  #undef	ASM_OUTPUT_EXTERNAL_LIBCALL
--- 1888,1894 ----
  /* Override svr[34].h.  */
  #undef	ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (int)(SIZE))
  
  /* Override svr4.h.  */
  #undef	ASM_OUTPUT_EXTERNAL_LIBCALL
*************** do {									 \
*** 1900,1908 ****
  #undef	ASM_OUTPUT_ALIGNED_COMMON
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)	\
  ( fprintf ((FILE), "%s",				\
! 	   ((SIZE) ? (SIZE) : 1) <= m88k_gp_threshold ? SCOMM_ASM_OP : COMMON_ASM_OP), \
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%u\n", (SIZE) ? (SIZE) : 1))
  
  /* This says how to output an assembler line to define a local common
     symbol.  Override svr[34].h.  */
--- 1900,1908 ----
  #undef	ASM_OUTPUT_ALIGNED_COMMON
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)	\
  ( fprintf ((FILE), "%s",				\
! 	   ((SIZE) ? (int)(SIZE) : 1) <= m88k_gp_threshold ? SCOMM_ASM_OP : COMMON_ASM_OP), \
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%u\n", (SIZE) ? (int)(SIZE) : 1))
  
  /* This says how to output an assembler line to define a local common
     symbol.  Override svr[34].h.  */
*************** do {									 \
*** 1910,1918 ****
  #undef	ASM_OUTPUT_ALIGNED_LOCAL
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
  ( fprintf ((FILE), "%s",				\
! 	   ((SIZE) ? (SIZE) : 1) <= m88k_gp_threshold ? SBSS_ASM_OP : BSS_ASM_OP), \
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%u,%d\n", (SIZE) ? (SIZE) : 1, (SIZE) <= 4 ? 4 : 8))
  
  /* This is how to output an insn to push a register on the stack.
     It need not be very fast code.  */
--- 1910,1918 ----
  #undef	ASM_OUTPUT_ALIGNED_LOCAL
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
  ( fprintf ((FILE), "%s",				\
! 	   ((SIZE) ? (int)(SIZE) : 1) <= m88k_gp_threshold ? SBSS_ASM_OP : BSS_ASM_OP), \
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%u,%d\n", (SIZE) ? (int)(SIZE) : 1, (SIZE) <= 4 ? 4 : 8))
  
  /* This is how to output an insn to push a register on the stack.
     It need not be very fast code.  */
diff -Nrc3p config.old/mcore/mcore.h config/mcore/mcore.h
*** config.old/mcore/mcore.h	Mon May  5 22:51:31 2003
--- config/mcore/mcore.h	Tue May  6 11:01:11 2003
*************** extern long mcore_current_compilation_ti
*** 1163,1169 ****
     that says to advance the location counter by SIZE bytes.  */
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.fill %d, 1\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol, with alignment information.  */
--- 1163,1169 ----
     that says to advance the location counter by SIZE bytes.  */
  #undef  ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.fill %d, 1\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol, with alignment information.  */
*************** extern long mcore_current_compilation_ti
*** 1220,1226 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
    (fputs ("\t.lcomm\t", FILE),				\
    assemble_name (FILE, NAME),				\
!   fprintf (FILE, ",%d\n", SIZE))
  
  /* ... and how to define a local common symbol whose alignment
     we wish to specify.  ALIGN comes in as bits, we have to turn
--- 1220,1226 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
    (fputs ("\t.lcomm\t", FILE),				\
    assemble_name (FILE, NAME),				\
!   fprintf (FILE, ",%d\n", (int)SIZE))
  
  /* ... and how to define a local common symbol whose alignment
     we wish to specify.  ALIGN comes in as bits, we have to turn
*************** extern long mcore_current_compilation_ti
*** 1231,1237 ****
      {									\
        fputs ("\t.bss\t", (FILE));					\
        assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), ",%d,%d\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
      }									\
    while (0)
  
--- 1231,1237 ----
      {									\
        fputs ("\t.bss\t", (FILE));					\
        assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), ",%d,%d\n", (int)(SIZE), (ALIGN) / BITS_PER_UNIT);\
      }									\
    while (0)
  
diff -Nrc3p config.old/mips/iris6.h config/mips/iris6.h
*** config.old/mips/iris6.h	Mon May  5 22:51:31 2003
--- config/mips/iris6.h	Tue May  6 10:51:43 2003
*************** do									   \
*** 390,396 ****
  	ASM_OUTPUT_SKIP (STREAM, SIZE);					   \
        }									   \
      else								   \
!       mips_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (SIZE)); \
    }									   \
  while (0)
  
--- 390,396 ----
  	ASM_OUTPUT_SKIP (STREAM, SIZE);					   \
        }									   \
      else								   \
!       mips_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (int)(SIZE)); \
    }									   \
  while (0)
  
diff -Nrc3p config.old/mips/mips.h config/mips/mips.h
*** config.old/mips/mips.h	Mon May  5 22:51:30 2003
--- config/mips/mips.h	Tue May  6 11:00:31 2003
*************** while (0)
*** 4022,4028 ****
     linker).  */
  
  #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)			\
!   mips_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (SIZE))
  
  
  /* This says how to output an external.  It would be possible not to
--- 4022,4028 ----
     linker).  */
  
  #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)			\
!   mips_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (int)(SIZE))
  
  
  /* This says how to output an external.  It would be possible not to
*************** do {									\
*** 4128,4134 ****
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM,SIZE)					\
!   fprintf (STREAM, "\t.space\t%u\n", (SIZE))
  
  /* This is how to output a string.  */
  #undef ASM_OUTPUT_ASCII
--- 4128,4136 ----
  
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(STREAM,SIZE)					\
!   (fputs ("\t.space\t", (STREAM)),					\
!    fprintf ((STREAM), HOST_WIDE_INT_PRINT_DEC, (SIZE)),			\
!    putc (`\n`, (STREAM)))
  
  /* This is how to output a string.  */
  #undef ASM_OUTPUT_ASCII
diff -Nrc3p config.old/ns32k/ns32k.h config/ns32k/ns32k.h
*** config.old/ns32k/ns32k.h	Mon May  5 22:51:31 2003
--- config/ns32k/ns32k.h	Tue May  6 11:01:28 2003
*************** __transfer_from_trampoline ()		\
*** 1332,1338 ****
    fprintf (FILE, "\t.align %d\n", (LOG))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %u\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1332,1338 ----
    fprintf (FILE, "\t.align %d\n", (LOG))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %u\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** __transfer_from_trampoline ()		\
*** 1340,1346 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 1340,1346 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** __transfer_from_trampoline ()		\
*** 1348,1354 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* Print an instruction operand X on file FILE.
     CODE is the code from the %-spec that requested printing this operand;
--- 1348,1354 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* Print an instruction operand X on file FILE.
     CODE is the code from the %-spec that requested printing this operand;
diff -Nrc3p config.old/pa/pa-pro-end.h config/pa/pa-pro-end.h
*** config.old/pa/pa-pro-end.h	Mon May  5 22:51:26 2003
--- config/pa/pa-pro-end.h	Tue May  6 10:49:12 2003
*************** Boston, MA 02111-1307, USA.  */
*** 64,70 ****
  { bss_section ();							\
    assemble_name ((FILE), (NAME));					\
    fputs ("\t.comm ", (FILE));						\
!   fprintf ((FILE), "%d\n", MAX ((SIZE), ((ALIGNED) / BITS_PER_UNIT)));}
  
  /* This says how to output an assembler line to define a local common symbol
     with size SIZE (in bytes) and alignment ALIGN (in bits).  */
--- 64,71 ----
  { bss_section ();							\
    assemble_name ((FILE), (NAME));					\
    fputs ("\t.comm ", (FILE));						\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC,				\
! 	   MAX ((SIZE), ((ALIGNED) / BITS_PER_UNIT)));}
  
  /* This says how to output an assembler line to define a local common symbol
     with size SIZE (in bytes) and alignment ALIGN (in bits).  */
*************** Boston, MA 02111-1307, USA.  */
*** 74,77 ****
  { bss_section ();							\
    fprintf ((FILE), "\t.align %d\n", ((ALIGNED) / BITS_PER_UNIT));	\
    assemble_name ((FILE), (NAME));					\
!   fprintf ((FILE), "\n\t.block %d\n", (SIZE));}
--- 75,80 ----
  { bss_section ();							\
    fprintf ((FILE), "\t.align %d\n", ((ALIGNED) / BITS_PER_UNIT));	\
    assemble_name ((FILE), (NAME));					\
!   fputs ("\n\t.block ", (FILE));					\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE));			\
!   putc ('\n', (FILE));}
diff -Nrc3p config.old/pa/pa.h config/pa/pa.h
*** config.old/pa/pa.h	Mon May  5 22:51:26 2003
--- config/pa/pa.h	Tue May  6 10:49:07 2003
*************** do { 									\
*** 1744,1750 ****
      fprintf (FILE, "\t.align %d\n", (1<<(LOG)))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.blockz %d\n", (SIZE))
  
  /* This says how to output an assembler line to define a global common symbol
     with size SIZE (in bytes) and alignment ALIGN (in bits).  */
--- 1744,1752 ----
      fprintf (FILE, "\t.align %d\n", (1<<(LOG)))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   (fputs ("\t.blockz ", (FILE)),					\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),			\
!    putc (`\n`, (FILE)))
  
  /* This says how to output an assembler line to define a global common symbol
     with size SIZE (in bytes) and alignment ALIGN (in bits).  */
*************** do { 									\
*** 1753,1759 ****
  { bss_section ();							\
    assemble_name ((FILE), (NAME));					\
    fputs ("\t.comm ", (FILE));						\
!   fprintf ((FILE), "%d\n", MAX ((SIZE), ((ALIGNED) / BITS_PER_UNIT)));}
  
  /* This says how to output an assembler line to define a local common symbol
     with size SIZE (in bytes) and alignment ALIGN (in bits).  */
--- 1755,1762 ----
  { bss_section ();							\
    assemble_name ((FILE), (NAME));					\
    fputs ("\t.comm ", (FILE));						\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC,				\
! 	   MAX ((SIZE), ((ALIGNED) / BITS_PER_UNIT)));}
  
  /* This says how to output an assembler line to define a local common symbol
     with size SIZE (in bytes) and alignment ALIGN (in bits).  */
*************** do { 									\
*** 1761,1768 ****
  #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGNED)		\
  { bss_section ();							\
    fprintf ((FILE), "\t.align %d\n", ((ALIGNED) / BITS_PER_UNIT));	\
!   assemble_name ((FILE), (NAME));				\
!   fprintf ((FILE), "\n\t.block %d\n", (SIZE));}
    
  #define ASM_PN_FORMAT "%s___%lu"
  
--- 1764,1773 ----
  #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGNED)		\
  { bss_section ();							\
    fprintf ((FILE), "\t.align %d\n", ((ALIGNED) / BITS_PER_UNIT));	\
!   assemble_name ((FILE), (NAME));					\
!   fputs ("\n\t.block ", (FILE));					\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE));			\
!   putc ('\n', (FILE));}
    
  #define ASM_PN_FORMAT "%s___%lu"
  
diff -Nrc3p config.old/pa/pa64-hpux.h config/pa/pa64-hpux.h
*** config.old/pa/pa64-hpux.h	Mon May  5 22:51:26 2003
--- config/pa/pa64-hpux.h	Tue May  6 10:48:11 2003
*************** do {									\
*** 125,131 ****
    bss_section ();							\
    assemble_name ((FILE), (NAME));					\
    fputs ("\t.comm ", (FILE));						\
!   fprintf ((FILE), "%d\n", MAX ((SIZE), ((ALIGN) / BITS_PER_UNIT)));	\
  } while (0)
  
  #undef ASM_OUTPUT_ALIGNED_LOCAL
--- 125,132 ----
    bss_section ();							\
    assemble_name ((FILE), (NAME));					\
    fputs ("\t.comm ", (FILE));						\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC,				\
! 	   MAX ((SIZE), ((ALIGNED) / BITS_PER_UNIT)));}
  } while (0)
  
  #undef ASM_OUTPUT_ALIGNED_LOCAL
*************** do {									\
*** 134,140 ****
    bss_section ();							\
    fprintf ((FILE), "\t.align %d\n", ((ALIGN) / BITS_PER_UNIT));		\
    assemble_name ((FILE), (NAME));					\
!   fprintf ((FILE), "\n\t.block %d\n", (SIZE));				\
  } while (0)
  
  /* The define in pa.h doesn't work with the alias attribute.  The
--- 135,143 ----
    bss_section ();							\
    fprintf ((FILE), "\t.align %d\n", ((ALIGN) / BITS_PER_UNIT));		\
    assemble_name ((FILE), (NAME));					\
!   fputs ("\n\t.block ", (FILE));					\
!   fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE));			\
!   putc (`\n`, (FILE));}							\
  } while (0)
  
  /* The define in pa.h doesn't work with the alias attribute.  The
diff -Nrc3p config.old/romp/romp.h config/romp/romp.h
*** config.old/romp/romp.h	Mon May  5 22:51:31 2003
--- config/romp/romp.h	Tue May  6 11:00:47 2003
*************** struct rt_cargs {int gregs, fregs; };
*** 1295,1301 ****
      fprintf (FILE, "\t.align %d\n", (LOG))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %d\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1295,1301 ----
      fprintf (FILE, "\t.align %d\n", (LOG))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %d\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** struct rt_cargs {int gregs, fregs; };
*** 1303,1309 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 1303,1309 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", (int)(SIZE)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** struct rt_cargs {int gregs, fregs; };
*** 1311,1317 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED)	\
  ( fputs (".lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  /* Print operand X (an rtx) in assembler syntax to file FILE.
     CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
--- 1311,1317 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED)	\
  ( fputs (".lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (int)(SIZE)))
  
  /* Print operand X (an rtx) in assembler syntax to file FILE.
     CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
diff -Nrc3p config.old/rs6000/xcoff.h config/rs6000/xcoff.h
*** config.old/rs6000/xcoff.h	Mon May  5 22:51:33 2003
--- config/rs6000/xcoff.h	Tue May  6 11:01:58 2003
*************** toc_section ()						\
*** 350,356 ****
  #define SKIP_ASM_OP "\t.space "
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 350,356 ----
  #define SKIP_ASM_OP "\t.space "
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** toc_section ()						\
*** 361,372 ****
    do { fputs (COMMON_ASM_OP, (FILE));			\
         RS6000_OUTPUT_BASENAME ((FILE), (NAME));		\
         if ((ALIGN) > 32)				\
! 	 fprintf ((FILE), ",%u,%u\n", (SIZE),		\
  		  exact_log2 ((ALIGN) / BITS_PER_UNIT)); \
         else if ((SIZE) > 4)				\
!          fprintf ((FILE), ",%u,3\n", (SIZE));		\
         else						\
! 	 fprintf ((FILE), ",%u\n", (SIZE));		\
    } while (0)
  
  /* This says how to output an assembler line
--- 361,372 ----
    do { fputs (COMMON_ASM_OP, (FILE));			\
         RS6000_OUTPUT_BASENAME ((FILE), (NAME));		\
         if ((ALIGN) > 32)				\
! 	 fprintf ((FILE), ",%u,%u\n", (int)(SIZE),		\
  		  exact_log2 ((ALIGN) / BITS_PER_UNIT)); \
         else if ((SIZE) > 4)				\
!          fprintf ((FILE), ",%u,3\n", (int)(SIZE));		\
         else						\
! 	 fprintf ((FILE), ",%u\n", (int)(SIZE));		\
    } while (0)
  
  /* This says how to output an assembler line
*************** toc_section ()						\
*** 380,386 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
    do { fputs (LOCAL_COMMON_ASM_OP, (FILE));		\
         RS6000_OUTPUT_BASENAME ((FILE), (NAME));		\
!        fprintf ((FILE), ",%u,%s\n", (TARGET_32BIT ? (SIZE) : (ROUNDED)), \
  		xcoff_bss_section_name);		\
       } while (0)
  
--- 380,386 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
    do { fputs (LOCAL_COMMON_ASM_OP, (FILE));		\
         RS6000_OUTPUT_BASENAME ((FILE), (NAME));		\
!        fprintf ((FILE), ",%u,%s\n", (TARGET_32BIT ? (int)(SIZE) : (int)(ROUNDED)), \
  		xcoff_bss_section_name);		\
       } while (0)
  
diff -Nrc3p config.old/s390/s390.h config/s390/s390.h
*** config.old/s390/s390.h	Mon May  5 22:51:31 2003
--- config/s390/s390.h	Mon May  5 23:22:26 2003
*************** extern int flag_pic; 
*** 915,921 ****
  
  /* Advance the location counter by SIZE bytes.  */
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   fprintf ((FILE), "\t.set\t.,.+%u\n", (SIZE))
  
  /* Output a reference to a user-level label named NAME.  */
  #define ASM_OUTPUT_LABELREF(FILE, NAME) \
--- 915,923 ----
  
  /* Advance the location counter by SIZE bytes.  */
  #define ASM_OUTPUT_SKIP(FILE, SIZE) \
!   (fputs ("\t.set\t.,.+", (FILE)),					\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),		\
!    putc ('\n', (FILE)))	
  
  /* Output a reference to a user-level label named NAME.  */
  #define ASM_OUTPUT_LABELREF(FILE, NAME) \
diff -Nrc3p config.old/sh/coff.h config/sh/coff.h
*** config.old/sh/coff.h	Mon May  5 22:51:27 2003
--- config/sh/coff.h	Tue May  6 10:54:56 2003
*************** Boston, MA 02111-1307, USA.  */
*** 54,60 ****
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE) \
!   fprintf ((FILE), "\t.space %d\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 54,60 ----
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE) \
!   fprintf ((FILE), "\t.space %d\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** Boston, MA 02111-1307, USA.  */
*** 62,68 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)	\
  ( fputs ("\t.comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 62,68 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)	\
  ( fputs ("\t.comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%d\n", (int)(SIZE)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** Boston, MA 02111-1307, USA.  */
*** 70,76 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
  ( fputs ("\t.lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (SIZE)))
  
  #define TARGET_OBJFMT_CPP_BUILTINS()
  
--- 70,76 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)	\
  ( fputs ("\t.lcomm ", (FILE)),				\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ",%d\n", (int)(SIZE)))
  
  #define TARGET_OBJFMT_CPP_BUILTINS()
  
diff -Nrc3p config.old/sparc/sol2.h config/sparc/sol2.h
*** config.old/sparc/sol2.h	Mon May  5 22:51:32 2003
--- config/sparc/sol2.h	Mon May  5 23:24:58 2003
*************** Boston, MA 02111-1307, USA.  */
*** 63,69 ****
  /* The Solaris 2 assembler uses .skip, not .zero, so put this back.  */
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.skip %u\n", (SIZE))
  
  #undef  LOCAL_LABEL_PREFIX
  #define LOCAL_LABEL_PREFIX  "."
--- 63,69 ----
  /* The Solaris 2 assembler uses .skip, not .zero, so put this back.  */
  #undef ASM_OUTPUT_SKIP
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.skip %u\n", (int)(SIZE))
  
  #undef  LOCAL_LABEL_PREFIX
  #define LOCAL_LABEL_PREFIX  "."
diff -Nrc3p config.old/sparc/sparc.h config/sparc/sparc.h
*** config.old/sparc/sparc.h	Mon May  5 22:51:32 2003
--- config/sparc/sparc.h	Tue May  6 10:53:22 2003
*************** do {									\
*** 2792,2798 ****
      fprintf (FILE, "\t.align %d,0x1000000\n", (1<<(LOG)))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.skip %u\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 2792,2800 ----
      fprintf (FILE, "\t.align %d,0x1000000\n", (1<<(LOG)))
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   (fputs ("\t.skip ", (FILE)),					\
!    fprintf ((FILE), HOST_WIDE_INT_PRINT_DEC, (SIZE)),		\
!    putc (`\n`, (FILE)))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** do {									\
*** 2800,2806 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.common ", (FILE)),		\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u,\"bss\"\n", (SIZE)))
  
  /* This says how to output an assembler line to define a local common
     symbol.  */
--- 2802,2808 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs ("\t.common ", (FILE)),		\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u,\"bss\"\n", (int)(SIZE)))
  
  /* This says how to output an assembler line to define a local common
     symbol.  */
*************** do {									\
*** 2809,2815 ****
  ( fputs ("\t.reserve ", (FILE)),					\
    assemble_name ((FILE), (NAME)),					\
    fprintf ((FILE), ",%u,\"bss\",%u\n",					\
! 	   (SIZE), ((ALIGNED) / BITS_PER_UNIT)))
  
  /* A C statement (sans semicolon) to output to the stdio stream
     FILE the assembler definition of uninitialized global DECL named
--- 2811,2817 ----
  ( fputs ("\t.reserve ", (FILE)),					\
    assemble_name ((FILE), (NAME)),					\
    fprintf ((FILE), ",%u,\"bss\",%u\n",					\
! 	   (int)(SIZE), ((ALIGNED) / BITS_PER_UNIT)))
  
  /* A C statement (sans semicolon) to output to the stdio stream
     FILE the assembler definition of uninitialized global DECL named
diff -Nrc3p config.old/svr3.h config/svr3.h
*** config.old/svr3.h	Mon May  5 22:51:33 2003
--- config/svr3.h	Tue May  6 11:02:06 2003
*************** Boston, MA 02111-1307, USA.
*** 93,99 ****
      data_section ();					\
      ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align);	\
      ASM_OUTPUT_LABEL ((FILE), (NAME));			\
!     fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED));	\
    } while (0)
  
  #if 0 /* For now, let's leave these machine-specific.  */
--- 93,99 ----
      data_section ();					\
      ASM_OUTPUT_ALIGN ((FILE), align == -1 ? 2 : align);	\
      ASM_OUTPUT_LABEL ((FILE), (NAME));			\
!     fprintf ((FILE), "\t.set .,.+%u\n", (int)(ROUNDED));	\
    } while (0)
  
  #if 0 /* For now, let's leave these machine-specific.  */
diff -Nrc3p config.old/vax/vax.h config/vax/vax.h
*** config.old/vax/vax.h	Mon May  5 22:51:27 2003
--- config/vax/vax.h	Tue May  6 10:55:58 2003
*************** enum reg_class { NO_REGS, ALL_REGS, LIM_
*** 1076,1082 ****
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %u\n", (SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
--- 1076,1082 ----
     that says to advance the location counter by SIZE bytes.  */
  
  #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
!   fprintf (FILE, "\t.space %u\n", (int)(SIZE))
  
  /* This says how to output an assembler line
     to define a global common symbol.  */
*************** enum reg_class { NO_REGS, ALL_REGS, LIM_
*** 1084,1090 ****
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
--- 1084,1090 ----
  #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".comm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* This says how to output an assembler line
     to define a local common symbol.  */
*************** enum reg_class { NO_REGS, ALL_REGS, LIM_
*** 1092,1098 ****
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (ROUNDED)))
  
  /* Store in OUTPUT a string (made with alloca) containing
     an assembler-name for a local static variable named NAME.
--- 1092,1098 ----
  #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  ( fputs (".lcomm ", (FILE)),			\
    assemble_name ((FILE), (NAME)),		\
!   fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
  /* Store in OUTPUT a string (made with alloca) containing
     an assembler-name for a local static variable named NAME.
diff -Nrc3p config.old/vax/vaxv.h config/vax/vaxv.h
*** config.old/vax/vaxv.h	Mon May  5 22:51:27 2003
--- config/vax/vaxv.h	Tue May  6 10:56:07 2003
*************** output_file_directive ((FILE), main_inpu
*** 52,58 ****
  #define ASM_OUTPUT_LOCAL(FILE,NAME,SIZE,ROUNDED)	\
  ( data_section (),					\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ":\n\t.space %u\n", (ROUNDED)))
  
  #define ASM_OUTPUT_ASCII(FILE,PTR,LEN)			\
  do {							\
--- 52,58 ----
  #define ASM_OUTPUT_LOCAL(FILE,NAME,SIZE,ROUNDED)	\
  ( data_section (),					\
    assemble_name ((FILE), (NAME)),			\
!   fprintf ((FILE), ":\n\t.space %u\n", (int)(ROUNDED)))
  
  #define ASM_OUTPUT_ASCII(FILE,PTR,LEN)			\
  do {							\
diff -Nrc3p config.old/xtensa/xtensa.h config/xtensa/xtensa.h
*** config.old/xtensa/xtensa.h	Mon May  5 22:51:33 2003
--- config/xtensa/xtensa.h	Tue May  6 11:02:19 2003
*************** typedef struct xtensa_args {
*** 1379,1390 ****
  
  /* This says how to define a global common symbol.  */
  #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)			\
!   xtensa_declare_object (STREAM, NAME, "\n\t.comm\t", ",%u\n", (SIZE))
  
  /* This says how to define a local common symbol (ie, not visible to
     linker).  */
  #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)			\
!   xtensa_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (SIZE))
  
  /* This is how to output an element of a case-vector that is absolute.  */
  #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE)				\
--- 1379,1390 ----
  
  /* This says how to define a global common symbol.  */
  #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)			\
!   xtensa_declare_object (STREAM, NAME, "\n\t.comm\t", ",%u\n", (int)(SIZE))
  
  /* This says how to define a local common symbol (ie, not visible to
     linker).  */
  #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)			\
!   xtensa_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (int)(SIZE))
  
  /* This is how to output an element of a case-vector that is absolute.  */
  #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE)				\
*** varasm.c.old	Mon May  5 23:07:10 2003
--- varasm.c	Tue May  6 00:21:28 2003
*************** static void maybe_assemble_visibility	PA
*** 165,181 ****
  static int in_named_entry_eq		PARAMS ((const PTR, const PTR));
  static hashval_t in_named_entry_hash	PARAMS ((const PTR));
  #ifdef ASM_OUTPUT_BSS
! static void asm_output_bss		PARAMS ((FILE *, tree, const char *, int, int));
  #endif
  #ifdef BSS_SECTION_ASM_OP
  #ifdef ASM_OUTPUT_ALIGNED_BSS
  static void asm_output_aligned_bss
!   PARAMS ((FILE *, tree, const char *, int, int)) ATTRIBUTE_UNUSED;
  #endif
  #endif /* BSS_SECTION_ASM_OP */
  static hashval_t const_str_htab_hash	PARAMS ((const void *x));
  static int const_str_htab_eq		PARAMS ((const void *x, const void *y));
! static bool asm_emit_uninitialised	PARAMS ((tree, const char*, int, int));
  static void resolve_unique_section	PARAMS ((tree, int, int));
  static void mark_weak                   PARAMS ((tree));
  
--- 165,184 ----
  static int in_named_entry_eq		PARAMS ((const PTR, const PTR));
  static hashval_t in_named_entry_hash	PARAMS ((const PTR));
  #ifdef ASM_OUTPUT_BSS
! static void asm_output_bss		PARAMS ((FILE *, tree, const char *,
! 						 HOST_WIDE_INT, HOST_WIDE_INT));
  #endif
  #ifdef BSS_SECTION_ASM_OP
  #ifdef ASM_OUTPUT_ALIGNED_BSS
  static void asm_output_aligned_bss
!   PARAMS ((FILE *, tree, const char *,
! 	  HOST_WIDE_INT, int)) ATTRIBUTE_UNUSED;
  #endif
  #endif /* BSS_SECTION_ASM_OP */
  static hashval_t const_str_htab_hash	PARAMS ((const void *x));
  static int const_str_htab_eq		PARAMS ((const void *x, const void *y));
! static bool asm_emit_uninitialised	PARAMS ((tree, const char*,
! 						 HOST_WIDE_INT, HOST_WIDE_INT));
  static void resolve_unique_section	PARAMS ((tree, int, int));
  static void mark_weak                   PARAMS ((tree));
  
*************** asm_output_bss (file, decl, name, size, 
*** 498,504 ****
       FILE *file;
       tree decl ATTRIBUTE_UNUSED;
       const char *name;
!      int size ATTRIBUTE_UNUSED, rounded;
  {
    (*targetm.asm_out.globalize_label) (file, name);
    bss_section ();
--- 501,507 ----
       FILE *file;
       tree decl ATTRIBUTE_UNUSED;
       const char *name;
!      HOST_WIDE_INT size ATTRIBUTE_UNUSED, rounded;
  {
    (*targetm.asm_out.globalize_label) (file, name);
    bss_section ();
*************** asm_output_aligned_bss (file, decl, name
*** 526,532 ****
       FILE *file;
       tree decl ATTRIBUTE_UNUSED;
       const char *name;
!      int size, align;
  {
    bss_section ();
    ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT));
--- 529,536 ----
       FILE *file;
       tree decl ATTRIBUTE_UNUSED;
       const char *name;
!      HOST_WIDE_INT size;
!      int align;
  {
    bss_section ();
    ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT));
*************** assemble_end_function (decl, fnname)
*** 1205,1211 ****
  
  void
  assemble_zeros (size)
!      int size;
  {
    /* Do no output if -fsyntax-only.  */
    if (flag_syntax_only)
--- 1209,1215 ----
  
  void
  assemble_zeros (size)
!      HOST_WIDE_INT size;
  {
    /* Do no output if -fsyntax-only.  */
    if (flag_syntax_only)
*************** assemble_zeros (size)
*** 1216,1222 ****
       so we must output 0s explicitly in the text section.  */
    if (ASM_NO_SKIP_IN_TEXT && in_text_section ())
      {
!       int i;
        for (i = 0; i < size; i++)
  	assemble_integer (const0_rtx, 1, BITS_PER_UNIT, 1);
      }
--- 1220,1226 ----
       so we must output 0s explicitly in the text section.  */
    if (ASM_NO_SKIP_IN_TEXT && in_text_section ())
      {
!       HOST_WIDE_INT i;
        for (i = 0; i < size; i++)
  	assemble_integer (const0_rtx, 1, BITS_PER_UNIT, 1);
      }
*************** static bool
*** 1306,1313 ****
  asm_emit_uninitialised (decl, name, size, rounded)
       tree decl;
       const char *name;
!      int size ATTRIBUTE_UNUSED;
!      int rounded ATTRIBUTE_UNUSED;
  {
    enum
    {
--- 1310,1317 ----
  asm_emit_uninitialised (decl, name, size, rounded)
       tree decl;
       const char *name;
!      HOST_WIDE_INT size ATTRIBUTE_UNUSED;
!      HOST_WIDE_INT rounded ATTRIBUTE_UNUSED;
  {
    enum
    {
*************** assemble_name (file, name)
*** 1749,1755 ****
  
  rtx
  assemble_static_space (size)
!      int size;
  {
    char name[12];
    const char *namestring;
--- 1753,1759 ----
  
  rtx
  assemble_static_space (size)
!      HOST_WIDE_INT size;
  {
    char name[12];
    const char *namestring;
*************** assemble_static_space (size)
*** 1777,1783 ****
      /* Round size up to multiple of BIGGEST_ALIGNMENT bits
         so that each uninitialized object starts on such a boundary.  */
      /* Variable `rounded' might or might not be used in ASM_OUTPUT_LOCAL.  */
!     int rounded ATTRIBUTE_UNUSED
        = ((size + (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1)
  	 / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
  	 * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
--- 1781,1787 ----
      /* Round size up to multiple of BIGGEST_ALIGNMENT bits
         so that each uninitialized object starts on such a boundary.  */
      /* Variable `rounded' might or might not be used in ASM_OUTPUT_LOCAL.  */
!     HOST_WIDE_INT rounded ATTRIBUTE_UNUSED
        = ((size + (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1)
  	 / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
  	 * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]