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.