Trouble explaining gap between _edata_loc and __bss_start in linux linker file -


i have trouble understanding gap between addresses _edata_loc , __bss_start symbols. according linker file there should not gap, yet symbol __bss_start, seems aligned 0x2000 byte boundary ? missing here?

i running arm linux.

from system.map:

c08bcf60 d _edata c08bcf60 d _edata_loc c08bf000 b __bss_start c08f98c8 b __bss_stop c08f98c8 b _end 

vmlinux.lds.s:

    _edata_loc = __data_loc + sizeof(.data);    #ifdef config_have_tcm         /*i not have tcm neglect part*/    #endif     bss_section(0, 0, 0)     _end = .;      stabs_debug } 

bss_section defined here: http://lxr.free-electrons.com/source/include/asm-generic/vmlinux.lds.h#l843

after compilation generated vmlinux.lds contains :

 _edata_loc = __data_loc + sizeof(.data);  . = align(0); __bss_start = .; . = align(0); .sbss : at(addr(.sbss) - 0) { *(.sbss) *(.scommon) } . = align(0); .bss : at(addr(.bss) - 0) { *(.bss..page_aligned) *(.dynbss) *(.bss) *(common) } . = align(0); __bss_stop = .;  _end = .; 


Comments