> No, it is corrected during runtime in relocate_to_current_adr(). It > seems older compilers need a runtime relocation fixup for this. Yes, in relocate_to_current_adr() the address all be fixed up. But if _barebox_image_size, __bss_start and __bss_stop all zero. the barebox_base calculated by arm_mem_barebox_image() would wrong. but because it align the base to 1M. So mostly it works fine. If the barebox size larger than 1M. It should fail. > > AFAIR this only happened for linker variables that point to absolute > addresses. Differences between addresses also worked with the older > compilers, and I think this is what your patch does: No. my patch just for new toolchain. with old toolchain it has no effect, Because all of the size is zero. By using the newer toolchain: arm-poky-eabi-gcc (GCC) 8.2.0 GNU ld (GNU Binutils) 2.31.1.20180818 In barebox config file: CONFIG_TEXT_BASE=0x23e00000 CONFIG_RELOCATABLE=y Without my patch, in barebox.map 0x000000000001ff40 __bss_start = . 0x0000000000021bec __bss_stop = . 0x0000000000021bec _end = . 0xffffffffdc21ff40 _barebox_image_size = (__bss_start - 0x23e00000) In code, printout barebox_base calculated by arm_mem_barebox_image(): barebox_image_size : 0xdc21ff40 __bss_stop : 0x00021bec __bss_start : 0x0001ff40 membase : 0x20000000 endmem : 0x60000000 barebox_base: 0x83d00000 barebox_base outof memory region! After using my patch, the outpus is: barebox_image_size : 0x0001ff40 __bss_stop : 0x00021bec __bss_start : 0x0001ff40 membase : 0x20000000 endmem : 0x60000000 barebox_base: 0x5ff00000 -- Best Regards, zzs _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox