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.

can I get a BIOS lib that was built without the -g (debug info) option?

Other Parts Discussed in Thread: SYSBIOS

Hi,

Long story short, we need the bios libraries built without the -g option so that the .out files (and resulting xml files from the ofd6x.exe tool) are not so large.  We need to extract information about the global symbols and types from the xml file and only care about global symbols and types that  "our part of the code" declares/defines.

Is there such a build available?  If not, is there a CCS project for the BIOS library that will let us build it with the options we desire?

Will it link ok with our code, which is built with the -g option?

CCS V4.

Bios: V6_21_00_13

Thanks for your help,

Shawn

  • In the CCS Build settings, you should change the "RTSC Build-Profile" to "whole_program".  This should hopefully remove some of the symbols.

     

    Since the configuration generates a partial link that is separate from your application, you can link this with your app even if your app is built with '-g'.  Note that we recommend "whole_program" profile for performance as well.

    Does this help?  If not, can you filter out symbols with "ti_sysbios" and "xdc_runtime" prefixes?   Most of our symbols have these prefixes.

    Why do you need a smaller .xml file? 

    Which device are you using?

    Thanks,
    -Karl-

  • Karl,

    Thanks for the info, This looks like a big step in the right direction. (i was wondering what "whole_program" meant).

    To answer your questions, we are using the 6747/6745.

    We have a custom serial interface tool (Live Data Exchange) that is used during product development/debugging/testing/and finally for the customer's servicing/maintenance  windows application. This tool gives us access to the DSP target controller via matlab and others windows apps in a symbolic approach.  In the past we extracted all the symbol info from the symbol table portion of the COFF/STABS .out file. The .out file was maintained in version control and also provided to the end customer in an install package.

    The STABS debug info is gone in the .out file with the latest compile tools. From previous discussions with TI, it was deemed that the getting symbolic info from an xml file (the output from the ofd6x.exe tool) would be the simplest way and would ensure future compatibilities (for example if the tools go ELF/DWARF in the future).

    The issue is the size of these xml files.  A simple starting point program we have, that uses BIOS and PSP, has an outfile of about 1.2M, but the xml file produced (even when asking to provide minimal information) is about 24.5Meg.  This large file is cumbersome for both checking into/out-of version control and takes a long time to parse.  "our code" defines maybe about 20 to 30 global variables, symbols, enums etc., but when we parse the existing file, we find over 600 symbols.  I can ignore the ti symbols as you suggested while I am parsing the file, but the initial file size (the xml file) is the issue.

    Thats the motivation behind what we are doing.  We'll try these build options and see how it does at reducing files size.

    thanks again,

    Shawn

  • Hi Karl,  from our latest outfile, built using the "whole_program" RTSC build profile,  we get an xml file of 13.2MB (vs 24.5MB of the old build).   I find 289 variables/symbols, vs over 550 with the old file.  So we are making progress, but there are still a lot of symbols coming from these libraries.  Here's a short example of the list of symbols found, see attached file for complete list. 

    >> [VarNodeArray, VarStructArray]=getVarInfo(xDocLo,1);

    xdc_runtime_IModule_Interface__BASE__C

    ti_sdo_io_IDriver_Interface__BASE__C

    ti_sdo_io_IConverter_Interface__BASE__C

    xdc_runtime_IGateProvider_Interface__BASE__C

    xdc_runtime_IHeap_Interface__BASE__C

    xdc_runtime_knl_ISemaphore_Interface__BASE__C

    xdc_runtime_knl_ISync_Interface__BASE__C

    ti_psp_spi_Spi_Module__FXNS__C

    ti_psp_uart_Uart_Module__FXNS__C

     

    The names are pretty indicative of the module they are coming from, so it seems we are still linking to libraries that were built with the -g option. 

    How do we tell exactly which library(ies) on the CCS/BIOS install path we are linking with?  Is there a "whole_program" build that exists for all these libraries?  Is there a way we can create a -g build for these modules?

    thanks,

    Shawn