On Tue, Jun 5, 2012 at 7:57 AM, Eric Botcazou <ebotca...@adacore.com> wrote: >> ... which has been deprecated for GCC 4.7 (see >> http://gcc.gnu.org/gcc-4.7/changes.html). Support for Tru64 has >> already been removed on trunk. Tru64 was ECOFF, right? That means that >> Tru64 also has BSS >> (http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V50A_ACRO_SUP/OBJSPE >>C.PDF). Did GCC support that for Tru64 too? > > Sure, it has BSS since the point of the change was to put variables there. > The > problem was how to tell the assembler to put it there.
Part of the problem why it isn't put there by gcc 4.7 because the initializer is not a bss_initializer_p initializer. And this is because GNAT explicitly disables this in misc.c: /* Initialize options structure OPTS. */ static void gnat_init_options_struct (struct gcc_options *opts) { /* Uninitialized really means uninitialized in Ada. */ opts->x_flag_zero_initialized_in_bss = 0; } However, if the above code is removed (i.e. flag_zero_initialized_in_bss == 1, the default), categorize_decl_for_section returns SECCAT_BSS for BigArray, but the variable is still not put in .bss. This is because there is no special TARGET_ASM_SELECT_SECTION for Tru64, so default_select_section is called and it returns data_section. But at that point, bss_section==NULL anyway, because BSS_SECTION_ASM_OP is not defined for Tru64, even though ECOFF does support BSS sections. So I think that to fix this "properly" (and assumibng , support for .bss should be added to Tru64 by defining BSS_SECTION_ASM_OP, and implementing TARGET_ASM_SELECT_SECTION. The same happens for rs6000-ibm-aix6.1, which also doesn't have BSS_SECTION_ASM_OP, even though there should be BSS support for XCOFF (http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.files%2Fdoc%2Faixfiles%2FXCOFF.htm). AFAIU the equivalent C test case is a file with just "char BigArray[1024*1024*256 -1] = {0};", where BigArray ends up in .data instead of .bss. If the "= {0}" is removed, BigArray is put in .common. Ciao! Steven