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.

Warning (no matching section found) during linking

Other Parts Discussed in Thread: CCSTUDIO

Dear all,

I am trying to build a project on CCS V3.3 with Cgtools V4.3.6.
I am using a external lib .a55(which is an archive with .obj files).
In the linker file there is a section  vtext
 
  vtext:
      {
      libmesi.a55 <common.obj> (.text)    //line 33

      } > PSRAM0|PSRAM1
      
when linking i get a warning saying
"D:\\dinesh_davuluru\\ADT_SOFTWARE\\T38_FAX_RELAY\\Project\\Source\\FileRelay.cmd", line 33: warning:
   no matching section
 
I have extracted the libmesi.a55 to see if the .obj is inside it. I have found the .obj files and there is also a .text section in it.

 When compiled the same project on CCS V3.1 with cgtools V3.3.2 I dont have any of these warnings.
 Can anyone suggest me what has to be done to overcome these warnings.

Regards,

Dinesh Davuluru

  • The linker underwent many changes between those two releases.  In the root directory of the compiler installation (probably something like C:\CCStudio_v3.3\C5500 or C:\CCStudio_v3.3\C5500\cgtools) you will find a file LINKER_README.txt .  Please look at section 1 titled "1. Replacement COFF LInker".  Sub-part 2 of that section talks about how the linker changed how it matches input sections such as .text from common.obj.  It seems likely some other specification picks up .text from common.obj, so it is no longer available to match when the vtext processing takes place, and thus the diagnostic.

    Hope this helps ...

    -George

     

  • SECTIONS
    {
    	ISR_vectors:	   > VECS   	
    	.cinit:	   > PSRAM0 
    	//.text:	   > PSRAM1    // commented this to see if what u explained works
    	isrs:	   	> PSRAM0 
    	.switch:   	> PSRAM0 
      
    	.const:	   > DSRAM0 
    	.stack:	   > DSRAM0|DSRAM1 
    	.sysstack: 	> DSRAM0|DSRAM1 
    	.sysmem:   	> DSRAM0|DSRAM1 
    	.data:	   > DSRAM0|DSRAM1 
    	.bss:	   	> DSRAM0|DSRAM1
      // .const1   {MelpE_adt.l55l <tables.obj> (.const)} >  SARAM1        PAGE 0 
      
       BufLog:   { .\Debug\buflog.obj (.bss)} >DSRAM1
        
     //  btext:      > PSRAM0        // commented this to see if what u explained works
    
       vtext: 
          {
          libmesi.a55 <common.obj> (.text)
    /*      apsk.obj (.text)
          aeq.obj (.text) 
          interp.obj (.text)*/
          libmesi.a55 <filter.obj> (.text)
          libmesi.a55 <gendet.obj> (.text)
          libmesi.a55 <modemif.obj> (.text)
          libmesi.a55 <tcm.obj> (.text)
          libmesi.a55 <v29.obj>(.text)
          libmesi.a55 <t38.obj> (.text)
          libmesi.a55 <v27.obj> (.text)
         libmesi.a55 < v17.obj> (.text)
         libmesi.a55 < relay.obj> (.text)
         libmesi.a55 < sequence.obj> (.text)
         libmesi.a55 < fsk.obj> (.text)
         libmesi.a55 < bufmgr.obj> (.text)
         libmesi.a55 < rxtx.obj> (.text)
         libmesi.a55 < hdlc.obj> (.text)
          buflog.obj (.text)
          libmesi.a55 <v21.obj> (.text)
         libmesi.a55 < packdata.obj> (.text)
         libmesi.a55 < netif.obj> (.text)
          libmesi.a55 <t30.obj> (.text)
          libmesi.a55 <div.obj> (.text)
          libmesi.a55 <bitrev.obj> (.text)
          } > PSRAM0|PSRAM1
       vcoefs: 
          {
       // libmesi.a55< vcoefs.obj> (.const)              
         //libmesi.a55 <tcm.obj> (.const)                 
          //libmesi.a55<v29.obj> (.const)                 
          //libmesi.a55<v27.obj> (.const)                 
         // libmesi.a55<v17.obj> (.const)
          libmesi.a55 <t30.obj> (.const)                 
         libmesi.a55 < modemif.obj> (.const)             
         libmesi.a55 < t38.obj> (.const)                 
          } > DSRAM0|PSRAM0
          
       vdata: 
          {
           .\Debug\faxmem.obj (.bss)   // added a realtive path to find the file
          }        > DSRAM0
    
    	dumper:	   > DSRAM1   
    }           

     

    Dear George,

    I have gone through that section you have specified. To check if some other specification is picking up .text from common.obj i have commented all .text section in the linker file.

    But it still gives me that warning. I am attaching my linker file for your reference.I am also attaching my build log with the warnings.

    Thank you for your time.

     

    Regards,

    Dinesh Davuluru

     

     

  • It seems likely that you don't need anything from common.obj.  Here is how to verify that guess.  Change your linker command file back to normal.  Then comment out the common.obj lines.  Build normally.  Inspect the map file and see if common.obj is mentioned anywhere.  I expect it will not be mentioned.  If that is the case, then your code is not calling any functions or using any data from common.obj.

    Thanks and regards,

    -George

     

  • Dear George,

    I did  what you have suggested. I have commented the line with common.obj.

    I have built the project  to inspect the map file. The map file did have the common.obj allocated and it actually went in to the section vtext.

    so i have commented the whole vtext section to see what happens. After compiling i got a warning saying

    warning: creating output section "vtext" without a SECTIONS specification                              which is understandable as i have commented that section.

    When i inspected the .map file i could see the section vtext with common.obj along with other .obj's which gave the warnings of no matching section found. 

    I am attaching my new .map file for your further understanding.

     

    Thanks and Regards,

    Dinesh Davuluru

  • Thank you very much for doing all these experiments and posting these files.  I'm sorry I have been unable to diagnose the problem.

    Well, I guessed wrong.  common.obj is needed in the link.  Let's start over again from the beginning.

    Please undo all the changes to your link command file.  Then build again with the old tools and the new tools.  Please post that link command file, plus the map file from both the old build and the new build.  I think I'll be able to figure this out by comparing the map files.

    Thanks and regards,

    -George

     

  • Dear George,

    Thank you for your time and help.

    I have attached a .rar folder which has 8 files (changed all the extensions to .txt )

    filerelay.txt and dsk5510.txt are the linker command files i have used in the project.(these are common for both the tools)

    filerelayold.txt was a old linker file which has given me lot of errors. after that i have changed it to filerelay.txt to remove the errors.

    i am attaching the cc_build_Debug_old.txt which is with the linker file filerelayold.txt

     

    cc_build_Debug with old CGtools.txt and  Filerelaywitholdtools.txt (map file and build log with v 3.3.2 tools)

    cc_build_Debug new tools.txt and  Filerelay new tools.txt (map file and build log with v 4.3.6 tools)

     

    Hoping that i didnt confuse you with my file names.

     

    Regards

    Dinesh Davuluru

     

     

    E2E.rar
  • I have another guess as to the problem.  I'm more confident of this guess than the others.  Really!

    I think common.obj contains a section named "vtext", but no section named ".text".  Carefully compare the names of those sections to see the difference.  You can check if I'm right by carrying out these operations at the command line.  Presume the compiler tools directory is in your path.

    C:\dir>ar6x -x libmesi.a55 common.obj
    
    C:\dir>ofd6x --obj_display=none,sections common.obj
    
    OBJECT FILE:  common.obj
    
     Section Information
    
        id name                      load addr  run addr    size align alloc
        -- ----                      ---------  --------    ---- ----- -----
         1 $build.attributes         0x00000000 0x00000000  0x27     1   N
         2 vtext                     0x00000000 0x00000000   0x0     1   Y
         3 .data                     0x00000000 0x00000000   0x0     1   Y
         4 .bss                      0x00000000 0x00000000   0x0     1   Y
         5 .debug_info               0x00000000 0x00000000 0x749     1   N
         6 .text:_strcpy             0x00000000 0x00000000  0x60    32   Y
         7 .debug_line               0x00000000 0x00000000  0x46     1   N
         8 .debug_abbrev             0x00000000 0x00000000  0xc5     1   N
         9 .icode                    0x00000000 0x00000000 0x44e     1   N
    

    Obviously, I don't have the actual libmesi.a55 or common.obj.  But your output should look similar.  The key thing to note is that there is no section named ".text", but there is a section named "vtext".  If I am correct then you need to change "libmesi.a55 <common.obj> (.text)" to "libmesi.a55 <common.obj> (vtext)"

    Thanks and regards,

    -George

     

     

  • Dear George,

    Thank you so much. It worked... And the guess which you were pretty confident about is right...

    I have changed the section from .text to vtext and it has removed all warnings...

    Once again thank you for your time and patience.

     

    Regards,

    Dinesh Davuluru

    Signalogic