From here what are . and * means in a c macro?
583 #define INITCALLS \
584 *(.initcallearly.init) \
585 VMLINUX_SYMBOL(__early_initcall_end) = .; \
586 *(.initcall0.init) \
587 *(.initcall0s.init) \
588 *(.initcall1.init) \
589 *(.initcall1s.init) \
590 *(.initcall2.init) \
591 *(.initcall2s.init) \
592 *(.initcall3.init) \
593 *(.initcall3s.init) \
594 *(.initcall4.init) \
595 *(.initcall4s.init) \
596 *(.initcall5.init) \
597 *(.initcall5s.init) \
598 *(.initcallrootfs.init) \
599 *(.initcall6.init) \
600 *(.initcall6s.init) \
601 *(.initcall7.init) \
602 *(.initcall7s.init)
603
Its a linker script. The section merging and placement is done by the linker. A programmer can control how the sections are merged and at what locations they are placed in memory through a linker script file. The file you referred to was doing just that.
The .(dot) refers to the link section and the wild card character * is used instead of individually specifying multiple file names containing the same named link section.
Refer: http://sources.redhat.com/binutils/docs-2.10/ld_3.html