Namespace pollution binder errors
As of z/OS® V1R8
XL C/C++ compiler, when you target OS/390® V2R10
or an earlier release while binding or linking your application, you
might encounter the namespace pollution error shown in Figure 1.
Note: z/OS V1R1
C/C++ compiler is the same as OS/390 V2R10 C/C++ compiler. OS/390 V2R10
is also reshipped in z/OS V1R2
through to V1R6.
Figure 1. IEW2456E namespace
pollution error
IEW2456E 9207 SYMBOL terminate__3stdFv UNRESOLVED. MEMBER COULD NOT BE INCLUDED
FROM THE DESIGNATED CALL LIBRARY.
FSUM3065 The LINKEDIT step ended with return code 8.
If you encounter the error shown in Figure 1, use the code shown in Figure 2 inside a header file that
is included by the affected source.
Figure 2. Header file code that handles IEW2456E error
condition
#ifdef __cplusplus
#if ((__COMPILER_VER__ >= 0x41080000) && (__TARGET_LIB__ == 0x220A0000))
namespace std { void terminate(); }
#pragma map(std::terminate, "terminate__Fv")
#endif
#endif
Note: To prevent targeting an inappropriate release, guard the #pragma
map statement with the __TARGET_LIB__ macro.