This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/TMS320C6678: Using latest compiler produces binaries that are not Identical

Part Number: TMS320C6678

Tool/software: TI C/C++ Compiler

I have read over the post in https://e2e.ti.com/support/development_tools/compiler/f/343/t/505064 and tried all of the solutions there:

1. turn off all optimizations

2. upgrade my compiler (used 7.4.11, 7.4.20, and 8.1.3)

3. I even tried excluding debugging symbols

Yet when i clean and compile my code any number of times and compare the resulting binary they are different.

I am running

CCS 5.3.0.00090

XDC 3.23.04.60

And have tried all 3 of the compilers above.

What else can I do? What have I missed?

  • Casey Gregoire said:
    when i clean and compile my code any number of times and compare the resulting binary they are different.

    Exactly how is this comparison performed?  What do you see that makes you think there is a difference?

    Thanks and regards,

    -George

  • Both my source control system (Subversion) and file compare tools (win merge) claim the files are different. If there is some other tool you can suggest I will try it, as win merge can't really handle these binary differences, it can only tell me that they are there.
  • That kind of comparison is not correct.

    Roughly speaking, an executable has two things in it.  The raw bits loaded to the target system, and additional meta-information about the executable.  Examples of meta-information include symbols tables and debug information.  For successive builds, the raw bits are the same.  But the meta-information can legitimately change.  The meta-information includes, among other things, the time the build occurred.

    A better comparison tool is objdiff from the cg_xml package.  By default, it ignores the meta-information.

    Thanks and regards,

    -George

  • Most build tools allow me to create binaries that are exactly the same, even if i have to turn options like 'exclude meta data' is that not an option? This is the only part of our code base where this is not possible. every other executable, library, and script we generate can be regenerated from source bit for bit. Is there some way to remove this date and time meta data?
  • Casey Gregoire said:
    Is there some way to remove this date and time meta data?

    Unfortunately, no.  But you can perform the comparison with the objdiff utility (mentioned in my previous post).

    Thanks and regards,

    -George