fis-gtm/sr_port/objlabel.h

79 lines
3.1 KiB
C

/****************************************************************
* *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
/* objlabel.h -- define OMAGIC and OBJ_LABEL here. */
#ifndef OBJLABEL_DEFINED
#define OBJLABEL_DEFINED
/* There is a system define for OMAGIC on some platforms that conficts with ours. Old
use is deprecated in favor of GTM_OMAGIC flavor.
*/
#define GTM_OMAGIC 0407 /* old impure format */
#ifndef USHBIN_SUPPORTED
#define OMAGIC GTM_OMAGIC /* non-native doesn't have to worry here */
#endif
/* The Object file label is composed of a platform-generic part and platform-specific part.
*
* OBJ_LABEL = (OBJ_UNIX_LABEL << n) + OBJ_PLATFORM_LABEL
* (n = 8 previously now n = 4 to allow more binary versions)
*
* For every object format change that spans across all platforms, we increment the platform-generic part OBJ_UNIX_LABEL.
* For every platform-specific object format change, we increment the platform-specific part OBJ_PLATFORM_LABEL
* (only on the platform of change)
*
* Note that OBJ_UNIX_LABEL and OBJ_PLATFORM_LABEL should not exceed 255.
*/
#define OBJ_UNIX_LABEL 23 /* When changed, be sure to zero the platform specific numbers below (if any non-0) */
#if defined(__osf__)
# define OBJ_PLATFORM_LABEL 0 /* Alpha/Tru64 */
#elif defined(_AIX)
# define OBJ_PLATFORM_LABEL 0 /* AIX/pSeries */
#elif defined(__linux__) && defined(Linux390)
# define OBJ_PLATFORM_LABEL 0 /* s390 Linux */
#elif defined(__linux__) && defined(__ia64)
# define OBJ_PLATFORM_LABEL 0 /* Itanium Linux */
#elif defined(__linux__) && defined(__arm__)
# define OBJ_PLATFORM_LABEL 0 /* ARM Linux */
#elif defined(__linux__) && defined(__i386__)
# define OBJ_PLATFORM_LABEL 0 /* i386 Linux */
#elif defined(__linux__) && defined(__x86_64)
# define OBJ_PLATFORM_LABEL 0 /* x86_64 Linux */
#elif defined(__MVS__)
# define OBJ_PLATFORM_LABEL 0 /* OS390 aka z/OS */
#elif defined(__hpux) && defined(__ia64)
# define OBJ_PLATFORM_LABEL 0 /* Itanium HP-UX */
#elif defined(__hpux) && defined(__hppa)
# define OBJ_PLATFORM_LABEL 0 /* HPPA HP-UX */
#elif defined(SUNOS)
# define OBJ_PLATFORM_LABEL 0 /* Solaris/Sparc */
#elif defined(__CYGWIN__)
# define OBJ_PLATFORM_LABEL 0 /* CYGWIN on Windows i386 */
#elif defined(VMS)
# define OBJ_PLATFORM_LABEL 0 /* Alpha/VMS */
#else
#error UNSUPPORTED PLATFORM
#endif
#ifdef USHBIN_SUPPORTED
# define OBJ_LABEL ((OBJ_UNIX_LABEL << 4) + (OBJ_PLATFORM_LABEL))
# define MAGIC_COOKIE_V5 ((GTM_OMAGIC << 16) + (8 << 4) + 0) /* A version stake for V5. Should never change. */
# define MAGIC_COOKIE_V52 ((GTM_OMAGIC << 16) + (11 << 4) + 0) /* A version stake for V52. Should never change. */
#else
# define OBJ_LABEL ((OBJ_UNIX_LABEL << 8) + (OBJ_PLATFORM_LABEL))
#endif
#define MAGIC_COOKIE ((GTM_OMAGIC << 16) + OBJ_LABEL)
#endif /* OBJLABEL_DEFINED */