fix g++.dg/init/init-ref2.C on alpha/elf

Richard Henderson rth@redhat.com
Fri Feb 8 04:59:00 GMT 2002


There are some mighty curious games being played in obscure_complex_init.

Alpha/ELF was emitting stuff into bss via SELECT_SECTION instead of letting
varasm.c do it via ASM_OUTPUT_*_BSS.  Which somehow caused a disconnect
between cp/decl.c and varasm.c, which resulted in _ZGRZ1gvE1i not being
allocated any memory whatsoever.  That is, _ZGRZ1gvE1i and _ZGVZ1gvE1i
actaully overlapped.  Hilarity ensues.

Fixed thus.

I'm pleased to see that alphaev6-linux now has currently has no failures
in C, C++ and Fortran; libstdc++ and ObjC only fail one minor test each.


r~


        * config/alpha/elf.h (ASM_OUTPUT_ALIGNED_BSS): New.

Index: config/alpha/elf.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/elf.h,v
retrieving revision 1.50
diff -c -p -d -r1.50 elf.h
*** elf.h	2002/01/29 22:37:36	1.50
--- elf.h	2002/02/08 08:11:14
*************** do {									\
*** 168,173 ****
--- 168,183 ----
    ASM_OUTPUT_SKIP((FILE), (SIZE));					\
  } while (0)
  
+ /* This says how to output assembler code to declare an
+    uninitialized external linkage data object.  */
+ 
+ #undef  ASM_OUTPUT_ALIGNED_BSS
+ #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN)		\
+ do {									\
+   ASM_GLOBALIZE_LABEL (FILE, NAME);					\
+   ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN);			\
+ } while (0)
+ 
  /* Biggest alignment supported by the object file format of this
     machine.  Use this macro to limit the alignment which can be
     specified using the `__attribute__ ((aligned (N)))' construct.  If



More information about the Gcc-patches mailing list