section `.sbss' type changed to PROGBITS (Was: ld 2.18 --gc-sections bug? (with testcase))

Rask Ingemann Lambertsen
Mon Dec 10 18:23:00 GMT 2007

On Mon, Dec 10, 2007 at 05:11:23PM +0100, Rask Ingemann Lambertsen wrote:
>    This triggers all the time on m32r-unknown-elf (as least with GCC
> compiled programs):
> ld-new: section `.sbss' type changed to PROGBITS
> 1) Is it something which should be fixed? If so, pointers appreciated. For
> example, I can't even tell which file is causing it in spite of trying
> "--verbose --print-map".

   I found that GCC generates this when compiling newlib:

        .global __malloc_top_pad
        .section        .sbss,"aw",@nobits
        .balign 4
        .type   __malloc_top_pad, @object
        .size   __malloc_top_pad, 4
        .zero   4
        .global __malloc_max_sbrked_mem
        .section        .sbss
        .balign 4
        .type   __malloc_max_sbrked_mem, @object
        .size   __malloc_max_sbrked_mem, 4
        .zero   4
        .global __malloc_max_total_mem
        .balign 4
        .type   __malloc_max_total_mem, @object
        .size   __malloc_max_total_mem, 4
        .zero   4

   The resulting object file has this:

Idx Name          Size      VMA       LMA       File off  Algn
  3 .sbss         0000000c  00000000  00000000  00000a94  2**2
                  CONTENTS, ALLOC, LOAD, DATA

   It is enough to assemble just the __malloc_top_pad part above to
reproduce the problem:

$ as-new ~/nobits.s -o ~/nobits.o
as-new: section `.sbss' type changed to PROGBITS

Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

More information about the Binutils mailing list