| /* Definitions of target machine GNU compiler. VMS common version. |
| Copyright (C) 2003-2021 Free Software Foundation, Inc. |
| Contributed by Douglas B Rupp (rupp@gnat.com). |
| |
| This file is part of GCC. |
| |
| GCC is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3, or (at your option) |
| any later version. |
| |
| GCC is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GCC; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. */ |
| |
| #define TARGET_OBJECT_SUFFIX ".obj" |
| #define TARGET_EXECUTABLE_SUFFIX ".exe" |
| |
| #define TARGET_OS_CPP_BUILTINS() \ |
| do { \ |
| builtin_define_std ("vms"); \ |
| builtin_define_std ("VMS"); \ |
| builtin_assert ("system=vms"); \ |
| SUBTARGET_OS_CPP_BUILTINS(); \ |
| builtin_define ("__int64=long long"); \ |
| if (flag_vms_pointer_size == VMS_POINTER_SIZE_32) \ |
| builtin_define ("__INITIAL_POINTER_SIZE=32"); \ |
| else if (flag_vms_pointer_size == VMS_POINTER_SIZE_64) \ |
| builtin_define ("__INITIAL_POINTER_SIZE=64"); \ |
| if (POINTER_SIZE == 64) \ |
| builtin_define ("__LONG_POINTERS=1"); \ |
| builtin_define_with_int_value ("__CRTL_VER", vms_c_get_crtl_ver ()); \ |
| builtin_define_with_int_value ("__VMS_VER", vms_c_get_vms_ver ()); \ |
| } while (0) |
| |
| extern void vms_c_register_includes (const char *, const char *, int); |
| #define TARGET_EXTRA_INCLUDES vms_c_register_includes |
| |
| /* Tell compiler we want to support VMS pragmas */ |
| #define REGISTER_TARGET_PRAGMAS() vms_c_register_pragma () |
| |
| /* By default, allow $ to be part of an identifier. */ |
| #define DOLLARS_IN_IDENTIFIERS 2 |
| |
| #undef TARGET_ABI_OPEN_VMS |
| #define TARGET_ABI_OPEN_VMS 1 |
| |
| /* "long" is 32 bits, but 64 bits for Ada. */ |
| #undef LONG_TYPE_SIZE |
| #define LONG_TYPE_SIZE 32 |
| #define ADA_LONG_TYPE_SIZE 64 |
| |
| /* Pointer is 32 bits but the hardware has 64-bit addresses, sign extended. */ |
| #undef POINTER_SIZE |
| #define POINTER_SIZE (flag_vms_pointer_size == VMS_POINTER_SIZE_NONE ? 32 : 64) |
| #define POINTERS_EXTEND_UNSIGNED 0 |
| |
| /* Always a 32 bit type. */ |
| #undef SIZE_TYPE |
| #define SIZE_TYPE "unsigned int" |
| |
| /* ???: Defined as a 'int' by dec-c, but obstack.h doesn't like it. */ |
| #undef PTRDIFF_TYPE |
| #define PTRDIFF_TYPE (flag_vms_pointer_size == VMS_POINTER_SIZE_NONE ? \ |
| "int" : "long long int") |
| |
| #define SIZETYPE (flag_vms_pointer_size == VMS_POINTER_SIZE_NONE ? \ |
| "unsigned int" : "long long unsigned int") |
| |
| #define C_COMMON_OVERRIDE_OPTIONS vms_c_common_override_options () |
| |
| /* VMS doesn't support other sections than .text for code. */ |
| #define TARGET_ASM_FUNCTION_SECTION vms_function_section |
| |
| /* Always use 8 bytes addresses in dwarf2 debug info. The default value doesn't |
| work as it may be 4 bytes, which won't match gas default (8 bytes for ia64), |
| and will thus produce incorrect values. */ |
| #define DWARF2_ADDR_SIZE 8 |
| |
| /* No libm on VMS. */ |
| #define MATH_LIBRARY "" |
| |
| /* Special VMS debugger symbol to record the entry point. */ |
| #define VMS_DEBUG_MAIN_POINTER "TRANSFER$BREAK$GO" |
| |
| #undef TARGET_LIBC_HAS_FUNCTION |
| #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function |