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.

TMS320F280049C: When compiling *.out files differ

Part Number: TMS320F280049C

Hello TI-Team, 

when compiling, my *.out files differ. The hex files are the same. 

When comparing the files, I e.g. found out that in:

...

.data.2 {DFA30BC9-B2C9-4578-92EB-BBBFE2E95F80} SysCtl_getResetCause $C$L1 $C$L2 SysCtl_clearResetCause CPUTimer_stopTimer CPUTimer_startTimer $C$L3 $C$L4 $C$L5 $C$L6 $C$L7 $C$L8 $C$L9 $C$L10 $C$L11 $C$L12 $C$L13 $C$L14 $C$L15 $C$L16 $C$L17 $C$FSL1 $C$FSL2 $C$FSL3 $C$FSL4 $C$FSL5 $C$FSL6 $C$FSL7 .const:.string {A58CB782-A898-4600-ADAC-DEA38D321297} {639B9A42-AFF6-4819-B557-FC5C80EF991C} {59A6D344-53A1-4646-9F43-C92C509B9853}

...

{A58CB782-A898-4600-ADAC-DEA38D321297} these numbers differ. They are generated in .obj files/ .out file. I build release. Using the strip tool kept these numbers. What do they stand for, how can I get ride of them? Or more precise: How can I assure, that building on two different computers at two different point of times the generated *.out files are the same? 


I am using the c2000 20.2.1 LTS compiler with eabi output format.

Thanks in advance.

  • This ...

    {A58CB782-A898-4600-ADAC-DEA38D321297}

    ... is the name of a temporary assembly code file generated by the compiler.  For further details, please see this forum post.  At the time that post was written, the form of the name for the temporary file was different; it was a string of only numbers.  Otherwise, that explanation is correct.

    One solution given in that post is to build with the compiler option --keep_asm.  That remains a solution to consider.

    But please consider another solution that may work better.  Change how you do the comparison. Use the utility objdiff from the Code Generation Tools XML Processing Utilities.  By default, it ignores meta-data about the executable such as the debug information and the symbols.  

    Thanks and regards,

    -George

  • Where can I find the difftool?

  • The Code Generation Tools XML Processing Utilities is a collection of about 20 different utilities.  You are interested in the one named objdiff.

    Thanks and regards,

    -George

  • Are there any other meta data I need to consider when I build from different directories, machines with different users? The object diff tool says now the files are the same, but even with --keep_asm the files have minor differences (first, last and some single row inbetween).  Building from different dirs still results in differences, e.g .:

    ... startup.c00__TI_internal00MYPATH\FLASH_RELEASE ...

    We usually do a crc on the produced files (exe, out,...) in order to check if the build files are identically for future builds and  the environment was set up identically. Therefore, I need to remove all the meta data from the *.out file. 

  • Consider using the strip utility strip2000, with the -p option.  The command looks similar to ...

    strip2000 -p executable_file.out -o stripped_executable_file.out

    Then compare the stripped executable files.  Please understand that this is nearly the same as using objdiff.  Because, by default, objdiff ignores the meta-data removed by strip2000.  

    Documentation on strip2000 is in the C28x assembly tools manual.

    Thanks and regards,

    -George

  • This solved it. For everyone else who wants to do something similar: I added post build steps in order to invoke strip2000 and rename/remove old files. Furthermore, I added a custom clean in order to get ride of some *.asm files which do not get removend on clean now. 

    Thanks for your help, George!