Generally linker script places the data initialization values somewhere after the code. You then usually have to copy them into actual location and RAM where they need to be. This is usually done right before or right after zeroing the .bss
the only way for this would not be required, is the code expects to run from RAM, and the linker script specifically placed the .data after the code