* reloc.c (reloc_howto_struct): Fix partial_inplace comment.
[deliverable/binutils-gdb.git] / include / ansidecl.h
index 8434f28f685e78184b00f08370fd8e0f58be3d25..10308676f1a47d3e4fb80af8061ec39d636947cf 100644 (file)
@@ -1,5 +1,5 @@
 /* ANSI and traditional C compatability macros
-   Copyright 1991, 1992 Free Software Foundation, Inc.
+   Copyright 1991, 1992, 1996, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
 This program is free software; you can redistribute it and/or modify
@@ -14,7 +14,7 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* ANSI and traditional C compatibility macros
 
@@ -24,12 +24,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
    -----       ---- - ----------       ----------- - ----------
    PTR         `void *'                `char *'
    LONG_DOUBLE `long double'           `double'
-   CONST       `const'                 `'
    VOLATILE    `volatile'              `'
    SIGNED      `signed'                `'
    PTRCONST    `void *const'           `char *'
+   ANSI_PROTOTYPES  1                  not defined
 
-   DEFUN (name, arglist, args)
+   CONST is also defined, but is obsolete.  Just use const.
+
+   obsolete --     DEFUN (name, arglist, args)
 
        Defines function NAME.
 
@@ -41,7 +43,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
        be separated with `AND'.  For functions with a variable number of
        arguments, the last thing listed should be `DOTS'.
 
-   DEFUN_VOID (name)
+   obsolete --     DEFUN_VOID (name)
 
        Defines a function NAME, which takes no arguments.
 
@@ -53,7 +55,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
        parentheses).  In traditional C it is `NAME()'.
        For a function that takes no arguments, PROTOTYPE should be `(void)'.
 
-    PARAMS ((args))
+   obsolete --     PROTO (type, name, (prototype)    -- obsolete.
+
+       This one has also been replaced by PARAMS.  Do not use.
+
+   PARAMS ((args))
 
        We could use the EXFUN macro to handle prototype declarations, but
        the name is misleading and the result is ugly.  So we just define a
@@ -71,11 +77,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
        the function name out of the mess.   EXFUN should be considered
        obsolete; new code should be written to use PARAMS.
 
-    For example:
-       extern int printf PARAMS ((CONST char *format DOTS));
-       int DEFUN(fprintf, (stream, format),
-                 FILE *stream AND CONST char *format DOTS) { ... }
-       void DEFUN_VOID(abort) { ... }
+   DOTS is also obsolete.
+
+   Examples:
+
+       extern int printf PARAMS ((const char *format, ...));
 */
 
 #ifndef        _ANSIDECL_H
@@ -88,27 +94,37 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* LINTLIBRARY */
 
 
-#if defined (__STDC__) || defined (_AIX)
-/* the AIX xlc compiler implements all these things even when it is in
-   a mode which doesn't define __STDC__.  */
+#if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32)
+/* All known AIX compilers implement these things (but don't always
+   define __STDC__).  The RISC/OS MIPS compiler defines these things
+   in SVR4 mode, but does not define __STDC__.  */
 
 #define        PTR             void *
 #define        PTRCONST        void *CONST
 #define        LONG_DOUBLE     long double
 
+#ifndef IN_GCC
 #define        AND             ,
 #define        NOARGS          void
-#define        CONST           const
 #define        VOLATILE        volatile
 #define        SIGNED          signed
-#define        DOTS            , ...
+#endif /* ! IN_GCC */
+
+#define PARAMS(paramlist)              paramlist
+#define ANSI_PROTOTYPES                        1
 
-#define        EXFUN(name, proto)              name proto
-#define        DEFUN(name, arglist, args)      name(args)
-#define        DEFUN_VOID(name)                name(void)
+#define VPARAMS(ARGS)                  ARGS
+#define VA_START(va_list,var)          va_start(va_list,var)
 
+/* These are obsolete.  Do not use.  */
+#ifndef IN_GCC
+#define CONST                          const
+#define DOTS                           , ...
 #define PROTO(type, name, arglist)     type name arglist
-#define PARAMS(paramlist)              paramlist
+#define EXFUN(name, proto)             name proto
+#define DEFUN(name, arglist, args)     name(args)
+#define DEFUN_VOID(name)               name(void)
+#endif /* ! IN_GCC */
 
 #else  /* Not ANSI C.  */
 
@@ -116,19 +132,93 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define        PTRCONST        PTR
 #define        LONG_DOUBLE     double
 
+#ifndef IN_GCC
 #define        AND             ;
 #define        NOARGS
-#define        CONST
 #define        VOLATILE
 #define        SIGNED
-#define        DOTS
+#endif /* !IN_GCC */
+
+#ifndef const /* some systems define it in header files for non-ansi mode */
+#define        const
+#endif
 
-#define        EXFUN(name, proto)              name()
-#define        DEFUN(name, arglist, args)      name arglist args;
-#define        DEFUN_VOID(name)                name()
-#define PROTO(type, name, arglist) type name ()
 #define PARAMS(paramlist)              ()
 
+#define VPARAMS(ARGS)                  (va_alist) va_dcl
+#define VA_START(va_list,var)          va_start(va_list)
+
+/* These are obsolete.  Do not use.  */
+#ifndef IN_GCC
+#define CONST
+#define DOTS
+#define PROTO(type, name, arglist)     type name ()
+#define EXFUN(name, proto)             name()
+#define DEFUN(name, arglist, args)     name arglist args;
+#define DEFUN_VOID(name)               name()
+#endif /* ! IN_GCC */
+
 #endif /* ANSI C.  */
 
+/* Using MACRO(x,y) in cpp #if conditionals does not work with some
+   older preprocessors.  Thus we can't define something like this:
+
+#define HAVE_GCC_VERSION(MAJOR, MINOR) \
+  (__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR)))
+
+and then test "#if HAVE_GCC_VERSION(2,7)".
+
+So instead we use the macro below and test it against specific values.  */
+
+/* This macro simplifies testing whether we are using gcc, and if it
+   is of a particular minimum version. (Both major & minor numbers are
+   significant.)  This macro will evaluate to 0 if we are not using
+   gcc at all.  */
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
+#endif /* GCC_VERSION */
+
+/* Define macros for some gcc attributes.  This permits us to use the
+   macros freely, and know that they will come into play for the
+   version of gcc in which they are supported.  */
+
+#if (GCC_VERSION < 2007)
+# define __attribute__(x)
+#endif
+
+/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
+#ifndef ATTRIBUTE_MALLOC
+# if (GCC_VERSION >= 2096)
+#  define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+#  define ATTRIBUTE_MALLOC
+# endif /* GNUC >= 2.96 */
+#endif /* ATTRIBUTE_MALLOC */
+
+/* Attributes on labels were valid as of gcc 2.93. */
+#ifndef ATTRIBUTE_UNUSED_LABEL
+# if (GCC_VERSION >= 2093)
+#  define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
+# else
+#  define ATTRIBUTE_UNUSED_LABEL
+# endif /* GNUC >= 2.93 */
+#endif /* ATTRIBUTE_UNUSED_LABEL */
+
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif /* ATTRIBUTE_UNUSED */
+
+#ifndef ATTRIBUTE_NORETURN
+#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#endif /* ATTRIBUTE_NORETURN */
+
+#ifndef ATTRIBUTE_PRINTF
+#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
+#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
+#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
+#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
+#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
+#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
+#endif /* ATTRIBUTE_PRINTF */
+
 #endif /* ansidecl.h   */
This page took 0.025718 seconds and 4 git commands to generate.