home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / bbs / gnu / gcc-2.3.3-src.lha / GNU / src / amiga / gcc-2.3.3 / config / xm-vax-vms.h < prev    next >
C/C++ Source or Header  |  1994-02-06  |  6KB  |  165 lines

  1. /* Configuration for GNU C-compiler for Vax.
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* #defines that need visibility everywhere.  */
  21. #define FALSE 0
  22. #define TRUE 1
  23.  
  24. /* target machine dependencies.
  25.    tm.h is a symbolic link to the actual target specific file.   */
  26. #include "tm.h"
  27.  
  28. /* This describes the machine the compiler is hosted on.  */
  29. #define HOST_BITS_PER_CHAR 8
  30. #define HOST_BITS_PER_SHORT 16
  31. #define HOST_BITS_PER_INT 32
  32. #define HOST_BITS_PER_LONG 32
  33. #define HOST_BITS_PER_LONGLONG 64
  34.  
  35. #define HOST_FLOAT_FORMAT VAX_FLOAT_FORMAT
  36.  
  37. #define SUCCESS_EXIT_CODE 1
  38. #define FATAL_EXIT_CODE (44 | 0x10000000)  /* Failure, and no DCL message.  */
  39.  
  40.  
  41. /* A couple of conditionals for execution machine are controlled here.  */
  42. #ifndef VMS
  43. #define VMS
  44. #endif
  45.  
  46. #ifndef __GNUC__
  47. /* not present, at least in VAX-11 C (VMS) v2.2 */
  48. #define R_OK 4
  49. #define W_OK 2
  50. #define X_OK 1
  51. #define F_OK 0
  52. #endif
  53.  
  54. /* If compiled with GNU C, use the built-in alloca */
  55. #ifdef __GNUC__
  56. #define alloca __builtin_alloca
  57. #endif
  58.  
  59. #define GCC_INCLUDE_DIR "///not used with VMS///"    /* nonsense string for now */
  60.  
  61. /* and define a local equivalent (sort of) for unlink */
  62. #define unlink remove
  63.  
  64. /* Specify the list of include file directories.  */
  65. #define INCLUDE_DEFAULTS \
  66. {                                    \
  67.   { "GNU_GXX_INCLUDE:", 1},                        \
  68.   { "GNU_CC_INCLUDE:", 0},    /* GNU includes */            \
  69.   { "SYS$SYSROOT:[SYSLIB.]", 0}, /* VAX-11 "C" includes */        \
  70.   { ".", 0},            /* Make normal VMS filespecs work.  */    \
  71.   { 0, 0}                                \
  72. }
  73.  
  74. /* Under VMS a directory specification can be enclosed either in square
  75.    brackets or in angle brackets.  Thus we need to check both.  This
  76.    macro is used to help compare filenames in cp-lex.c.
  77.  
  78.    We also need to make sure that the names are all lower case, because
  79.    we must be able to compare filenames to determine if a file implements
  80.    a class.  */
  81.  
  82. #define FILE_NAME_NONDIRECTORY(C)                \
  83. ({                                \
  84.    char * pnt_ = (C), * pnt1_;                    \
  85.    pnt1_ = pnt_ - 1;                        \
  86.    while (*++pnt1_)                        \
  87.      if ((*pnt1_ >= 'A' && *pnt1_ <= 'Z')) *pnt1_ |= 0x20;    \
  88.    pnt1_ = rindex (pnt_, ']');                     \
  89.    pnt1_ = (pnt1_ == 0 ? rindex (pnt_, '>') : pnt1_);        \
  90.    pnt1_ = (pnt1_ == 0 ? rindex (pnt_, ':') : pnt1_);        \
  91.    (pnt1_ == 0 ? pnt_ : pnt1_ + 1);                \
  92.  })
  93.  
  94. /* Macro to generate the name of the cross reference file.  The standard
  95.    one does not work, since it was written assuming that the conventions
  96.    of a unix style filesystem will work on the host system.  */
  97.  
  98. #define XREF_FILE_NAME(BUFF, NAME)    \
  99.   s = FILE_NAME_NONDIRECTORY (NAME);            \
  100.   if (s == NAME) sprintf(BUFF, "%s_gxref", NAME);    \
  101.   else {                        \
  102.     strcpy(BUFF, NAME);                    \
  103.     strcat(BUFF, "_gxref");                \
  104.   }
  105.  
  106. /* Macro that is used in cp-xref.c to determine whether a file name is
  107.    absolute or not.  */
  108.  
  109. #define FILE_NAME_ABSOLUTE_P(NAME)    \
  110.     (FILE_NAME_NONDIRECTORY (NAME) != (&NAME[1]))
  111.  
  112. /* FILE_NAME_JOINER is defined to be the characters that are inserted between 
  113.    a directory name and a filename in order to make an absolute file
  114.    specification.  Under VMS the directory specification contains all of the
  115.    required characters, so we define this to be a null string.  */
  116.  
  117. #define FILE_NAME_JOINER ""
  118.  
  119. #ifdef VAXC
  120. /* Customizations/kludges for building with DEC's VAX C compiler
  121.    rather than GCC.  */
  122. #define NO_SYS_PARAMS_H        /* don't have <sys/params.h> */
  123. #define NO_STAB_H        /* don't have <stab.h> */
  124. #define USE_C_ALLOCA        /* using alloca.c */
  125. #define QSORT_WORKAROUND    /* do not use VAXCRTL's qsort */
  126.  
  127. /* use ANSI/SYSV style byte manipulation routines instead of BSD ones */
  128. #define bcopy(s,d,n)    memcpy((d),(s),(n))
  129. #define bzero(d,n)    memset((d),0,(n))
  130. #define bcmp(l,r,n)    memcmp((l),(r),(n))
  131. #define index    strchr
  132. #define rindex    strrchr
  133.  
  134. /* rename all too-long external symbol names to avoid warnings */
  135. #define check_for_full_enumeration_handling    check_for_full_enum_handling
  136. #define current_function_contains_functions    curfunc_contains_functions
  137. #define current_function_epilogue_delay_list    curfunc_epilogue_delay_list
  138. #define current_function_has_nonlocal_label    curfunc_has_nonlocal_label
  139. #define current_function_internal_arg_pointer    curfunc_internal_arg_pointer
  140. #define current_function_outgoing_args_size    curfunc_outgoing_args_size
  141. #define current_function_pretend_args_size    curfunc_pretend_args_size
  142. #define current_function_returns_pcc_struct    curfunc_returns_pcc_struct
  143. #define current_function_returns_pointer    curfunc_returns_pointer
  144. #define current_function_uses_const_pool    curfunc_uses_const_pool
  145. #define current_function_uses_pic_offset_table    curfunc_uses_pic_offset_table
  146. #define expand_start_loop_continue_elsewhere    expnd_start_loop_cont_elsewhere
  147. #define flag_schedule_insns_after_reload    flag_sched_insns_after_reload
  148. #define maybe_building_objc_message_expr    maybe_building_objc_msg_expr
  149. #define reg_overlap_mentioned_for_reload_p    reg_overlap_mtnd_for_reload_p
  150. #define reposition_prologue_and_epilogue_notes    repos_prolog_and_epilog_notes
  151. #define rtx_equal_function_value_matters    rtx_equal_func_value_matters
  152. #define set_new_first_and_last_label_num    set_new_first_and_last_lbl_num
  153. #define thread_prologue_and_epilogue_insns    thread_prolog_and_epilog_insns
  154. #endif
  155.  
  156. /* We need to avoid the library qsort routine, due to a serious bug
  157.    in VAXCRTL.  (Sorting anything with size that's not a multiple of 4
  158.    after having previously sorted something that was a multiple of 4
  159.    can produce wrong results and result in data corruption.)  We'll
  160.    use our own substitute (in vax.c) instead.  */
  161. /* #define QSORT_WORKAROUND */
  162. #ifdef QSORT_WORKAROUND
  163. #define qsort not_qsort
  164. #endif
  165.