Fixes are available
XL C/C++ for Linux Fix Pack 9 (August 2013 Update) for 11.1
July 2011 Update for XL C/C++ for Linux, V11.1
October 2011 Update for XL C/C++ for Linux, V11.1
June 2012 Update for XL C/C++ for Linux, V11.1
October 2012 Update for XL C/C++ for Linux, V11.1
XL C/C++ for Linux Fix Pack 8 (June 2013 Update) for 11.1
APAR status
Closed as program error.
Error description
When compiling a source file that contains both inline assembly (ASM) and thread local storage, the compiler is outputting the following error message: 1500-076: (S) The system/specified assembler version does not support the required feature thread local storage. Compilation with inline assembler statements cannot continue. This is caused by the AIX assembler previously not supporting thread local storage, and the compiler's dependence on the assembler when compiling source containing inline assembly. Support for TLS was added to the AIX assembler via the following AIX APARs: APAR_aix_53Q = IZ81338 5.3 TL9 APAR_aix_53S = IZ81339 5.3 TL10 APAR_aix_53V = IZ81340 5.3 TL11 APAR_aix_53X = IZ81341 5.3 TL12 APAR_aix_61D = IZ81343 6.1 TL2 APAR_aix_61F = IZ81344 6.1 TL3 APAR_aix_61H = IZ81346 6.1 TL4 APAR_aix_61J = IZ81347 6.1 TL5 APAR_aix_61L = IZ69955 6.1 TL6 (AIX 7.1 base-level OS already contains the feature) One of these AIX APARs is required in conjunction with this compiler APAR to add support for mixed TLS/inline ASM code. If an updated assembler is not used, users may encounter assembler errors similar to: Assembler: test.s: line 89: 1252-005 The storage class is not valid. Specify a supported storage class for the csect name. test.s: line 97: 1252-142 Syntax error. 1500-067: (S) asm statement generates errors in assembler output.
Local fix
Split thread local storage and inline assembly into separate compilation units (i.e. separate source files)
Problem summary
PROBLEM DESCRIPTION: This issue is caused by having a complex inline ASM statement that can not be interpreted by the compiler. The compiler then uses the system assembler, and ends the compilation as soon as a TLS variable is encountered with: 1500-076: (S) The system/specified assembler version does not support the required feature thread local storage. Compilation with inline assembler statements cannot continue. An incomplete assembly file is generated, *.s, after this error is thrown. The last ASM statement in the *.s file may be a lwz for the TLS variable. USERS AFFECTED: Users mixing complex inline ASM statements with thread local storage variables in the same source file.
Problem conclusion
The system assembler was updated to support thread local storage, and the compiler was modified to support the new assembler syntax. The error message was removed, and mixing inline ASM with TLS variables is now supported.
Temporary fix
Comments
APAR Information
APAR number
LI76264
Reported component name
XL C/C++ FOR LI
Reported component ID
5724X1400
Reported release
B10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2011-07-12
Closed date
2011-07-12
Last modified date
2011-07-12
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
XL C/C++ FOR LI
Fixed component ID
5724X1400
Applicable component levels
RB10 PSY
UP
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSXVZZ","label":"XL C\/C++ for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B10","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
16 October 2021