rewrite comment -- bfd-in2.h is generated too
authorKen Raeburn <raeburn@cygnus>
Thu, 5 Aug 1993 18:27:16 +0000 (18:27 +0000)
committerKen Raeburn <raeburn@cygnus>
Thu, 5 Aug 1993 18:27:16 +0000 (18:27 +0000)
bfd/bfd-in.h

index b44edff0f392c10bdbf5df0b3084432f3afbb345..5c2b63678c9682d5f27e3e45a4671cc49f5176e1 100644 (file)
@@ -1,9 +1,11 @@
 /* Main header file for the bfd library -- portable access to object files.
-   ==> The bfd.h file is generated from bfd-in.h and various .c files; if you
-   ==> change it, your changes will probably be lost.
    Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
 
+** NOTE: bfd.h and bfd-in2.h are GENERATED files.  Don't change them;
+** instead, change bfd-in.h or the other BFD source files processed to
+** generate these files.
+
 This file is part of BFD, the Binary File Descriptor library.
 
 This program is free software; you can redistribute it and/or modify
@@ -53,6 +55,14 @@ here.  */
 #define BFD64
 #endif
 
+#ifndef INLINE
+#if __GNUC__ >= 2
+#define INLINE __inline__
+#else
+#define INLINE
+#endif
+#endif
+
 /* 64-bit type definition (if any) from bfd's sysdep.h goes here */
 
 
@@ -101,12 +111,21 @@ typedef HOST_64_BIT int64_type;
 typedef unsigned HOST_64_BIT uint64_type;
 #endif
 
+#if !defined (uint64_type) && defined (__GNUC__)
+#define uint64_type unsigned long long
+#define int64_type long long
+#define uint64_typeLOW(x) (unsigned long)(((x) & 0xffffffff))
+#define uint64_typeHIGH(x) (unsigned long)(((x) >> 32) & 0xffffffff)
+#endif
+
 typedef unsigned HOST_64_BIT bfd_vma;
 typedef HOST_64_BIT bfd_signed_vma;
 typedef unsigned HOST_64_BIT bfd_size_type;
 typedef unsigned HOST_64_BIT symvalue;
 #define fprintf_vma(s,x) \
                fprintf(s,"%08x%08x", uint64_typeHIGH(x), uint64_typeLOW(x))
+#define sprintf_vma(s,x) \
+               sprintf(s,"%08x%08x", uint64_typeHIGH(x), uint64_typeLOW(x))
 #else /* not BFD64  */
 
 /* Represent a target address.  Also used as a generic unsigned type
@@ -125,6 +144,7 @@ typedef unsigned long bfd_size_type;
 
 /* Print a bfd_vma x on stream s.  */
 #define fprintf_vma(s,x) fprintf(s, "%08lx", x)
+#define sprintf_vma(s,x) sprintf(s, "%08lx", x)
 #endif /* not BFD64  */
 #define printf_vma(x) fprintf_vma(stdout,x)
 
@@ -301,14 +321,28 @@ typedef struct _symbol_info
    the standard routine suffix), or it must #define the routines that
    are not so named, before calling JUMP_TABLE in the initializer.  */
 
-/* Semi-portable string concatenation in cpp */
+/* Semi-portable string concatenation in cpp.
+   The CAT4 hack is to avoid a problem with some strict ANSI C preprocessors.
+   The problem is, "32_" is not a valid preprocessing token, and we don't
+   want extra underscores (e.g., "nlm_32_").  The XCAT2 macro will cause the
+   inner CAT macros to be evaluated first, producing still-valid pp-tokens.
+   Then the final concatenation can be done.  (Sigh.)  */
 #ifndef CAT
+#ifdef SABER
+#define CAT(a,b)       a##b
+#define CAT3(a,b,c)    a##b##c
+#define CAT4(a,b,c,d)  a##b##c##d
+#else
 #ifdef __STDC__
 #define CAT(a,b) a##b
 #define CAT3(a,b,c) a##b##c
+#define XCAT2(a,b)     CAT(a,b)
+#define CAT4(a,b,c,d)  XCAT2(CAT(a,b),CAT(c,d))
 #else
 #define CAT(a,b) a/**/b
 #define CAT3(a,b,c) a/**/b/**/c
+#define CAT4(a,b,c,d)  a/**/b/**/c/**/d
+#endif
 #endif
 #endif
 
@@ -320,7 +354,7 @@ CAT(NAME,_slurp_armap),\
 CAT(NAME,_slurp_extended_name_table),\
 CAT(NAME,_truncate_arname),\
 CAT(NAME,_write_armap),\
-CAT(NAME,_close_and_cleanup),  \
+CAT(NAME,_close_and_cleanup),\
 CAT(NAME,_set_section_contents),\
 CAT(NAME,_get_section_contents),\
 CAT(NAME,_new_section_hook),\