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
Post a Comment