IBM Support

PM60962: Non-deterministic prefix for external types is no longer used by CMicro code generator causing compilation conflicts

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • Non-deterministic prefix for external types is no longer used by
    CMicro code generator during code generation causing conflicts
    for same name data types during compilation
    
    We have defined a variable of array type int[32] in 2 different
    packages. So during the CPP2SDL import, the same types are
    inserted to SDL Packages automatically which leads to
    compilation errors during the build phase
    
    Normally in SDL there is one arr_32 type for all inline int
    arrays with length 32 bit, but since we are using 2 different
    packages in SDL, we get 2 types with the same name causing a
    conflict.
    
    In versions previous to SDL 6.3, it added a different
    non-deterministic prefix for such types, Now the scheme of code
    generation for external types is changed and a non-deterministic
    prefix  for external types is no longer used.
    
    This behavior was determined to be a regression defect followed
    with CR TLOG#68129
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Using several packages with imported C types could cause
    compile errors or warnings for conflicting variable, type or
    macro names, like these:
    
    Pac1.h(422) : warning C4005: 'ySrtN_arr_32_int' : macro
    redefinition
    Pac2.h(422) : see previous definition of 'ySrtN_arr_32_int'
    
    Pac2_smc.obj : error LNK2005: _ySDL_arr_32_int already
    defined in Pac1_smc.obj
    HelloWorld_smc.exe : fatal error LNK1169: one or more
    multiply defined symbols found
    

Problem conclusion

  • These problems could happen if different C header files
    imported to different SDL packages contain similar implicit
    array types, for example, int var1[32]; and int var2[32];
    
    This problem has been fixed.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM60962

  • Reported component name

    TLOGIC SDL SUIT

  • Reported component ID

    5724V77SD

  • Reported release

    630

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-03-22

  • Closed date

    2012-11-29

  • Last modified date

    2012-11-29

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    TLOGIC SDL SUIT

  • Fixed component ID

    5724V77SD

Applicable component levels

  • R630 PSN

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYR86","label":"Rational SDL Suite"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.3","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
29 November 2012