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: How to See the Size of a Symbol

Part Number: TMS570LS3137


Tool/software: TI C/C++ Compiler

For detailed analysis of the software memory usage I would like to see the granular segmentation of each memory sections and their usage.
(using TI Compiler 5.1.6)

Currently in the mapfile I can see:

  • which sections and regions are used, how much space they require/got allocated for them
  • what objects I have and in which section they place the symbols and where the symbol starts in the memory space (but not the size!)

I would like to see more detailed information: i would like to know how much space the symbol requires, this information should be available and known for the compiler/linker.

e.g. I have a section ".normal_task_ram" place in internal RAM (lets say starting at 0x8000) of the TMS570 and into this section the obj "normal_task1" places 2 variables with the size of 20 and 40bytes, the I would expect something like this:

================================================================================

normal_task.obj

Run/Load            
Value     Size      Binding   Name (Section)
--------  --------  --------  ---------------
00008000  00000014     local     normal_task_var1 (.normal_task_ram:normal_task_var1)
00008050  00000028     global    normal_task_var2 (.normal_task_ram:normal_task_var1)

Is this somehow possible for the linker to output the detailed information?

My best idea currently is to parse the mapfile and try to figure out which variable consumes the RAM by subtracting the addresses of the symbols in a given section, this is far by not accurate as there might be holes or the last symbol might be just placed at the end region where nothing follows but hollow ram region.

I found and checked the TI cg_xml tool, also checked the "xml_output" but none of them seems to be capable of what I'm trying to access here: simply the information from the linker output seems to be missing.

Is there a way to achieve my goal?