It is used to hold unitialized variables or common storage. The length of each partial program's bss section is important, but because it starts out containing zeroed bytes there is no need to store explicit zero bytes in the object file. The bss section was invented to eliminate those explicit zeros from object files. This is useful if you want to refer to an address that ld must not change when relocating. An idealized example of three relocatable sections follows.
Memory addresses are on the horizontal axis.
These sections are meant only for the internal use of as . They have no meaning at run-time. These sections are used to permit the value of every expression in your assembly language program to be a section-relative address. An internal assembler logic error has been found. This means there is a bug in the assembler.