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