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.

VFP Coprocessor Support issue when linking against RealView DS-5 object files

Hello,

I am trying to link a library compiled by RealView DS-5 in Code Composer Studio 5.1 for the LM4F232H5QD with M4 floating point support (--float_support=FPv4SPD16), and I am getting the error:

"fatal error #16016: file "../../xxx.lib<yyy.o>" was built without VFP
   coprocessor support while a previously seen file was; combining incompatible
   files"

The library that I am linking against has no floating point operations, and I have tried compiling the lib with every FPU type supported by the DS-5 compiler, including "FPv4-SP" (the Cortex-M4F cpu default). I have also tried every fpmode available. The DS-5 compiler is version 5.01 Build 64, and the TI toolchain version is 4.9.1. I've tried TI toolchain version 4.9.3 as well on CCS4 with the same results.

I have seen other threads with the same issue on different platforms with different toolchains. Is this an issue with the TI linker?

  • George,

    Thanks for the response. Unfortunately, It didn't resolve the issue for me.

    Also, I have tried enabling eabi support with the DS-5 compiler, and it does not fix the issue.

  • I presume xxx.lib is the library compiled by DS-5.  Please use the command-line utility ofd470 to dump xxx.lib and post the result here.  If you would rather excise the names of symbols and whatnot, you can cut it down to just the file compatibility information for yyy.o.  Search through the dump for the section corresponding to yyy.o and copy the "Object File Information" and "Build Attributes" sections.

  • Yes, xxx.lib is the library compiled by DS-5. I've attached the ofd dump here:

    ARCHIVE: Test.lib
    
    OBJECT FILE:  Test.o
    
     Object File Information
    
        File Name:               Test.o                    
        Format:                  ELF Version 1             
        File Type:               relocatable file          
        Machine:                 Advanced RISC Machines ARM
        Machine Endian:          little endian             
        Entry Point:             0x00000000                
        Vendor:                  ARM Ltd.                  
        Number of Sections:      10                        
        File Length:             1308                      
        File Offset in Archive:  146                       
        ELF Class:               32-bit objects            
        ELF e_flags:             0x05000000                
    
     Section Information
    
        id name                      load addr  run addr   size align alloc
        -- ----                      ---------  --------   ---- ----- -----
         0 (no name)                 0x00000000 0x00000000  0x0     0   N  
         1 .text                     0x00000000 0x00000000  0x4     2   Y  
         2 .arm_vfe_header           0x00000000 0x00000000  0x4     4   N  
         3 .comment                  0x00000000 0x00000000 0x9f     1   N  
         4 .debug_frame              0x00000000 0x00000000 0x74     1   N  
         5 .symtab                   0x00000000 0x00000000 0x80     4   N  
         6 .rel.debug_frame          0x00000000 0x00000000 0x10     4   N  
         7 .shstrtab                 0x00000000 0x00000000 0x5b     1   N  
         8 .strtab                   0x00000000 0x00000000 0xf1     1   N  
         9 .ARM.attributes           0x00000000 0x00000000 0x5e     1   N  
    
     Relocation Table 1/1 for Section 4 (".debug_frame")
    
        id type        offset     sym name                     
        -- ----        ------     --- ----                     
         0 R_ARM_ABS32 0x00000068   5 __ARM_grp_.debug_frame$5 
         1 R_ARM_ABS32 0x0000006c   3 .text                    
    
     Build Attributes in ".ARM.attributes"
    
        Format Version:  'A'
    
        <0>  Vendor Name:  "aeabi" (ABI for the ARM Architecture)
    
             Tag_File:
                Attributes:
                 Tag_0x43                    2.06          
                 Tag_CPU_raw_name            Cortex-M4.fp  
                 Tag_CPU_name                Cortex-M4     
                 Tag_CPU_arch                13            (ARM v7E-M)
                 Tag_CPU_arch_profile        77            (Microcontroller profile)
                 Tag_THUMB_ISA_use           2             (Some Thumb2 instructions used)
                 Tag_VFP_arch                6             (Some FPv4-SP-D16 instructions used)
                 Tag_ABI_PCS_GOT_use         1             (Data are imported directly)
                 Tag_ABI_PCS_wchar_t         2             (Size of wchar_t is 2)
                 Tag_ABI_FP_denormal         2             
                 Tag_ABI_FP_number_model     1             (Only IEEE 754 format FP numbers used)
                 Tag_ABI_align8_needed       1             (8-byte alignment of 8-byte data required)
                 Tag_ABI_align8_preserved    1             (All required 8-byte alignments are preserved, except for SP in leaf function)
                 Tag_ABI_enum_size           1             (Enum values occupy the smallest container big enough to hold all values)
                 Tag_ABI_HardFP_use          1             (SP operations use VFP instructions)
                 Tag_ABI_VFP_args            1             (FP arguments are passed using the VFP register argument variant of the AAPCS)
                 Tag_ABI_optimization_goals  3             (Optimized for small size, but speed and debugging illusion preserved)
                 Tag_0x22                    1             
                 Tag_0x24                    1             
    
        <1>  Vendor Name:  "ARM" (ARM Ltd.)
    
             Tag_File:
                Attributes:
                 Tag_0x12    
    
     Symbol Table ".symtab"
    
        id name            value      kind      section         binding type    
        -- ----            -----      ----      -------         ------- ----    
         0 (no name)       0x00000000 undefined N/A             local   none    
         1 .\Test.c        0x00000000 absolute  N/A             local   file    
         2 $t              0x00000000 defined   .text           local   none    
         3 .text           0x00000000 defined   .text           local   section 
         4 BuildAttribu... 0x00000000 absolute  N/A             local   none    
         5 __ARM_grp_.d... 0x00000000 defined   .debug_frame    local   object  
         6 TestFunc        0x00000001 defined   .text           global  function
         7 Lib$$Request... 0x00000000 undefined N/A             weak    function
    
     String Table ".shstrtab"
    
        offset  string            
        ------  ------            
             0  ""                
             1  ".ARM.attributes" 
            17  ".strtab"         
            25  ".shstrtab"       
            35  ".rel.debug_frame"
            52  ".symtab"         
            60  ".comment"        
            69  ".arm_vfe_header" 
            85  ".text"           
    
     String Table ".strtab"
    
        offset  string                                                       
        ------  ------                                                       
             0  ""                                                           
             1  "Lib$$Request$$armlib"                                       
            22  "TestFunc"                                                   
            31  "__ARM_grp_.debug_frame$5"                                   
            56  "BuildAttributes$$THM_ISAv4$E$P$D$K$B$S$7EM$VFPi3$EXTD16$VFPS
                 $VFMA$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~ST
                 KCKD$USESV7$~SHL$OSPACE$EBA8$REQ8$PRES8$EABIv2"             
           223  ".text"                                                      
           229  "$t"                                                         
           232  ".\Test.c"                                                   
    

    The command line options I used with the DS-5 are as follows:

    --cpu=Cortex-M4.fp --fpu=FPv4-SP --library_interface=aeabi_clib --thumb -Ospace

    Thank you for looking into this issue.

  • Ryan,

    This is a known bug, SDSCM00033221. The issue is that the TI linker will always treat files from other vendors as not being built with VFP support, regardless of the options used. The bug has been fixed and will be available in the 5.0 release which will be available this summer.

  • codya,

    Thanks for clearing this up for me. I will be looking forward to the next release.