__bss_start__ and __bss_end__ are not required for gcc compiler. They are required for c runtime. If you do no use c runtime (-nostdlib) you don't need them. When you use c runtime _start/_mainCRT0 functions clear all bss data. You should only load the data segment to the memory. As as result if you don't use standart library these symbols are not searched by gcc compiler.
kind note in linker file there is no variable only symbols. there is distinct difference between two. nice videeo though
__bss_start__ and __bss_end__ are not required for gcc compiler. They are required for c runtime. If you do no use c runtime (-nostdlib) you don't need them. When you use c runtime _start/_mainCRT0 functions clear all bss data. You should only load the data segment to the memory. As as result if you don't use standart library these symbols are not searched by gcc compiler.
Thank you so much for providing the details.