diff options
Diffstat (limited to 'gcc-4.9/gcc/config/vms/vms.h')
-rw-r--r-- | gcc-4.9/gcc/config/vms/vms.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/config/vms/vms.h b/gcc-4.9/gcc/config/vms/vms.h new file mode 100644 index 000000000..dabc35189 --- /dev/null +++ b/gcc-4.9/gcc/config/vms/vms.h @@ -0,0 +1,92 @@ +/* Definitions of target machine GNU compiler. VMS common version. + Copyright (C) 2003-2014 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 |