They only take up unused memory. The gaps will be determined by the
alignment and location of sections defined in your linker script. So you
would need to modify teh script to close the gaps. Filling with 0xFF
will mean that the memory won't need to be programmed (since 0xFF is the
Flash erase state), on the other hand filling with 0x00 means that the
memory cannot be re-programmed without erasing, which may be more
Typically you might want to program the entire flash memory even if only
a part of it is used. objcopy can create a load file that exactly fits
your devices flash memory even though your code is unlikely to do so.
In short I think you are worrying about nothing - if you application
fits, that is.