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.

TMS320F28069: Unknown Module after Linking with incomprehensible name

Part Number: TMS320F28069

Hello,

this is more of a question rather than a problem. After linking i can view the memory usage and distribution in code composer. While looking around i found something i couldnt come up with where its from and why its so huge. The segment in doubt is listed with the name: {FB7365F9-233A-4AD9-88D0-8D0F491C134B} within .const:.string with just over 12kb. My suspicion is that it arises from using the c++ stl but im quite unsure. Any hints regarding where its from and how to get this section smaller? The .map file giving no further information about this.
Kind regard Tobi

  • Hi,

     Will forward this query to the compiler team.

    Best Regards

    Siddharth

  • Please attach the map file to your next post.  I don't think the forum accepts files with the file extension .map as attachments.  If that is correct, then add the file extension .txt to it.

    Thanks and regards,

    -George

  • Foc.txt

    Sorry for the late answer i somehow missed it. The section in doubt is mentioned in Line 5323:

     C:\Users\Tobias\AppData\Local\Temp\
           {6C0E9D68-DE88-4A4E-BA2D-1F0553721313}   0        16577     0      

    Kind Regards Tobi

  • I think I reproduced similar behavior.  I suspect this file ...

    C:\Users\Tobias\AppData\Local\Temp\
           {6C0E9D68-DE88-4A4E-BA2D-1F0553721313}

    ... is still there in that location.  It's an object file, even though it doesn't have the file extension .obj.  Make a copy of it into a typical file name.  Say you call it auto.obj.  You can disassemble it with a command similar to ...

    $ dis2000 --all auto.obj | dem2000 --abi=eabi -q > disassembly.txt

    The command dis2000 is the disassembler.  The command dem2000 utility demangles C++ names.  Both of those are located in the same \bin directory as the compiler cl2000.  The output is in the text file disassembly.txt.

    I suspect a large amount of the contents of this file come from this line in the map file ...

                      003f4000    00003255     <whole-program> (.const:.string)

    That's a lot of strings.  Hopefully, you can work out where they come from, and whether you can do anything about it.

    Thanks and regards,

    -George

  • Hello George,
    your solution seems to work so far. In the disassembly i can see lots of actual function and methods. I suspect, that they are not put into the .const:.string section. What i also found are a huge number of short datasections which all look more or less like this:

    DATA Section [6].const:$P$T537$509$6 (Little Endian), 0x8 words at 0x00000000 
    00000000        $P$T537$509$6:
    00000000   6166    .word 0x6166
    00000001   5f6e    .word 0x5f6e
    00000002   6c73    .word 0x6c73
    00000003   706f    .word 0x706f
    00000004   2065    .word 0x2065
    00000005   7369    .word 0x7369
    00000006   2520    .word 0x2520
    00000007   0066    .word 0x0066

    Any idea what this could be or where it originates from?
    Here i found a section where i know where it belongs to but dont know what it does either.

    DATA Section [7].const (Little Endian), 0x4c0 words at 0x00000000 
    00000000        _ZN10Controller14retain_sectionE$7:
    00000000   0003    .word 0x0003
    00000001   0000    .word 0x0000
    00000002   0000    .word 0x0000
    00000003   0000    .word 0x0000
    00000004   0000    .word 0x0000
    00000005   0000    .word 0x0000
    00000006   0000    .word 0x0000
    00000007   0000    .word 0x0000


    Edit:
    as the section states to have a large .string subsection i found that it actually is not that much. Also uint8_t LUTs are placed here. For Example:

    DATA Section [31].const:.string:Bit::bitReverse(unsigned char)::lookup (Little Endian), 0x10 words at 0x00000000 
    00000000        Bit::bitReverse(unsigned char)::lookup:
    00000000   0000    .word 0x0000
    00000001   0008    .word 0x0008
    00000002   0004    .word 0x0004
    00000003   000c    .word 0x000c
    00000004   0002    .word 0x0002
    00000005   000a    .word 0x000a
    00000006   0006    .word 0x0006
    00000007   000e    .word 0x000e
    00000008   0001    .word 0x0001
    00000009   0009    .word 0x0009
    0000000a   0005    .word 0x0005
    0000000b   000d    .word 0x000d
    0000000c   0003    .word 0x0003
    0000000d   000b    .word 0x000b
    0000000e   0007    .word 0x0007
    0000000f   000f    .word 0x000f

    comes from this:

        const static uint8_t lookup[16] = {
        0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe,
        0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf, };

    which is clearly not a string. But i guess it doesnt matter in assembly.


    Kind Regards Tobi

  • Regarding DATA Section [6].const:$P$T537$509$6.  I found this line in the linker map file ...

                      0001436d    00000008     ControllerCliDeflatedAuto.obj (.const:$P$T537$509$6)

    Build the source file ControllerCliDeflatedAuto.cpp as before.  But add the option --keep_asm.  The compiler generated assembly file is deleted by default.  But this option says to keep it.  It is named ControllerCliDeflatedAuto.asm.  Search that file for $P$T537$509$6.  I don't know what you will find.  But I expect it will be helpful.

    For the code that begins with the label _ZN10Controller14retain_sectionE$7.  Search your source for any line that has both Controller and retain_section.  

    Thanks and regards,

    -George