>But, when I am compares new .s19 with old .s19, more than 8 bytes (more bytes) are failing the compare.
> I guess it is based on what those 8 values and compiler is optimizing things differently.
__DATE__ is longer than 8 bytes, and also its length may differ when compiled on different dates.
So unless __DATE__ gets assigned into a fixed size buffer, all the subsequently allocated objects will be starting at different addresses too, so this can explain why you end up with many more differences than just the __DATE__ content.
I would suggest to either place __DATE__ into a fixed size (const) buffer, or allocate it specially to an address so it does not affect the rest of the code. Also I would compare the map files and the decoded elf files first before looking at the srecords. Once the map file contain the same addresses for all the functions, the srecords should match up to the __DATE__ content. But when the addresses in the map file differ, then looking into the srecords just shows a lot of differences.
BTW. The decoder can disassemble srecords as well. But as I said, start with comparing the map files, only once they match, looking at the srecord level makes sense (and should not show many differences anymore).
Daniel