Hello...
The difference between the file sizes (file_bin->flash - file_elf->flash) is 160 bytes. I tested 5 different examples, and there was the same result.
Follow the result of test with a program:
(The blue area is the data to be writed in flash, the green word is the beginning of boot_loader code, and the red word is the beginning of program code).
[u][b]S012000068656C6C6F5F62696E2E666C61736805
S3250000000004FF7FEF7A3031004C0000C6260300C03A313100260100C004010006344000C6CB
S32500000020045300C6170000C63A6800C000000000000000000000000000000000000000005E
S3250000004000000000000000000000000000000000000000000000000000000000000000009A
S3250000006000000000000000000000000000000000000000000000000000000000000000007A
S3250000008000000000000000000000000000000000000000000000000000000000000000005A
S325000000A000000000000000000000000000000000000000000000000000000000000000003A
S325000000C000000000000000000000000000000000000000000000000000000000000000001A
S325000000E00000000000000000000000000000000000000000000000000000000000000000FA
S325000001000000000000000000000000000000000000000000000000000000000000000000D9
S3250000012000000000000000000000000000000000000000003480C0060400C0DE7440800663
S32500000140049383D67440400004AD6308744080000402B01026038008150000080401400884
...
</span>
In file_elf->flash, the first word (3A700100) is the first word of boot_loader too. The boot_loader part finishes before the red word (04FF7FEF), wich is the beginning of the program.
In file_bin->flash is writed 11 words and the rest are zeros (528 zeros). After the zeros, two words is missing (orange words in file_elf->flash), and the remaining is the same for two files.
I don't know why it writed these 528 zeros.
I tryed to use strip, but the result is the same like bin->flash...