https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94134
--- Comment #12 from Stephen Casner <casner at acm dot org> ---
(In reply to pkoning from comment #11)
> (In reply to Stephen Casner from comment #9)
> > 7. Emitting the zero-initialized variable into .data when it happens to
> > follow a nonzero-initialized variable is also not correct, or at least
> > suboptimal. If there is a vary large uninitialized array, that would make
> > the final executable output file much larger. (OK, these days a full 64KB
> > is still a pittance, but on principal it's suboptimal.) Therefore,
> > switching to .bss in ASM_OUTPUT{_ALIGNED{,_DECL}_}_LOCAL is good.
>
> Yes, if the assembler/linker supports that, but my understanding is that
> they do not. It would be lovely if we could have ELF for pdp11...
Although .bss is not defined as a general GNU Assembler directive, it is
defined as a PDP-11 dependent feature. It was also included in the PDP11 Unix
assembly language as produced by cc on 2.11BSD, for example:
user[47] cat > array.c
static int zero[1000];
static int one[1000] = { 1 };
int main() {}
user[48] cc -S -o array.s array.c
user[49] cat array.s
.globl
.bss
_zero:
.=.+3720
.data
_one:
1
.=.+3716
.globl _main
.text
_main:
~~main:
jsr r5,csv
jbr L1
L2:L3:jmp cret
L1:jbr L2
.globl
.data
user[50]
This array.s is not accepted by GNU as because of the .globl without a symbol,
the constant 1 without .word, and the jbr mnemonic.