gmp-utils: New API to simply use of GMP's integer/rational/float objects
[binutils-gdb.git] / bfd / sysdep.h
blob3891f971e8e580818549c734c98d5a9b1f5a2082
1 /* sysdep.h -- handle host dependencies for the BFD library
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 Written by Cygnus Support.
5 This file is part of BFD, the Binary File Descriptor library.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
22 #ifndef BFD_SYSDEP_H
23 #define BFD_SYSDEP_H
25 #ifdef PACKAGE
26 #error sysdep.h must be included in lieu of config.h
27 #endif
29 #include "config.h"
31 #ifdef HAVE_STDDEF_H
32 #include <stddef.h>
33 #endif
35 #include <stdio.h>
36 #include <sys/types.h>
38 #include <errno.h>
39 #if !(defined(errno) || defined(_MSC_VER) && defined(_INC_ERRNO))
40 extern int errno;
41 #endif
43 #ifdef STRING_WITH_STRINGS
44 #include <string.h>
45 #include <strings.h>
46 #else
47 #ifdef HAVE_STRING_H
48 #include <string.h>
49 #else
50 #ifdef HAVE_STRINGS_H
51 #include <strings.h>
52 #else
53 extern char *strchr ();
54 extern char *strrchr ();
55 #endif
56 #endif
57 #endif
59 #ifdef HAVE_STDLIB_H
60 #include <stdlib.h>
61 #endif
63 #ifdef TIME_WITH_SYS_TIME
64 #include <sys/time.h>
65 #include <time.h>
66 #else
67 #ifdef HAVE_SYS_TIME_H
68 #include <sys/time.h>
69 #else
70 #include <time.h>
71 #endif
72 #endif
74 #ifdef HAVE_UNISTD_H
75 #include <unistd.h>
76 #endif
78 #ifdef HAVE_SYS_RESOURCE_H
79 #include <sys/resource.h>
80 #endif /* HAVE_SYS_RESOURCE_H */
82 #ifdef USE_BINARY_FOPEN
83 #include "fopen-bin.h"
84 #else
85 #include "fopen-same.h"
86 #endif
88 #ifdef HAVE_FCNTL_H
89 #include <fcntl.h>
90 #else
91 #ifdef HAVE_SYS_FILE_H
92 #include <sys/file.h>
93 #endif
94 #endif
96 #ifndef O_RDONLY
97 #define O_RDONLY 0
98 #endif
99 #ifndef O_WRONLY
100 #define O_WRONLY 1
101 #endif
102 #ifndef O_RDWR
103 #define O_RDWR 2
104 #endif
105 #ifndef O_ACCMODE
106 #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
107 #endif
108 /* Systems that don't already define this, don't need it. */
109 #ifndef O_BINARY
110 #define O_BINARY 0
111 #endif
113 #ifndef SEEK_SET
114 #define SEEK_SET 0
115 #endif
116 #ifndef SEEK_CUR
117 #define SEEK_CUR 1
118 #endif
120 #include "filenames.h"
122 #if !HAVE_DECL_FFS
123 extern int ffs (int);
124 #endif
126 #if !HAVE_DECL_FREE
127 extern void free ();
128 #endif
130 #if !HAVE_DECL_GETENV
131 extern char *getenv ();
132 #endif
134 #if !HAVE_DECL_MALLOC
135 extern PTR malloc ();
136 #endif
138 #if !HAVE_DECL_REALLOC
139 extern PTR realloc ();
140 #endif
142 #if !HAVE_DECL_STPCPY
143 extern char *stpcpy (char *__dest, const char *__src);
144 #endif
146 #if !HAVE_DECL_STRSTR
147 extern char *strstr ();
148 #endif
150 #ifdef HAVE_FTELLO
151 #if !HAVE_DECL_FTELLO
152 extern off_t ftello (FILE *stream);
153 #endif
154 #endif
156 #ifdef HAVE_FTELLO64
157 #if !HAVE_DECL_FTELLO64
158 extern off64_t ftello64 (FILE *stream);
159 #endif
160 #endif
162 #ifdef HAVE_FSEEKO
163 #if !HAVE_DECL_FSEEKO
164 extern int fseeko (FILE *stream, off_t offset, int whence);
165 #endif
166 #endif
168 #ifdef HAVE_FSEEKO64
169 #if !HAVE_DECL_FSEEKO64
170 extern int fseeko64 (FILE *stream, off64_t offset, int whence);
171 #endif
172 #endif
174 #if !HAVE_DECL_STRNLEN
175 size_t strnlen (const char *, size_t);
176 #endif
178 /* Define offsetof for those systems which lack it */
180 #ifndef offsetof
181 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
182 #endif
184 #ifdef ENABLE_NLS
185 # include <libintl.h>
186 /* Note the redefinition of gettext and ngettext here to use PACKAGE.
188 This is because the code in this directory is used to build a
189 library which will be linked with code in other directories to form
190 programs. We want to maintain a separate translation file for this
191 directory however, rather than being forced to merge it with that
192 of any program linked to libbfd. This is a library, so it cannot
193 depend on the catalog currently loaded.
195 In order to do this, we have to make sure that when we extract
196 messages we use the BFD domain rather than the domain of the
197 program that included the bfd library, (eg OBJDUMP). Hence we use
198 dgettext (PACKAGE, String) and define PACKAGE to be 'bfd'.
199 (See the code in configure). */
200 # undef gettext
201 # define gettext(Msgid) dgettext (PACKAGE, Msgid)
202 # undef ngettext
203 # define ngettext(Msgid1, Msgid2, n) dngettext (PACKAGE, Msgid1, Msgid2, n)
204 # define _(String) gettext (String)
205 # ifdef gettext_noop
206 # define N_(String) gettext_noop (String)
207 # else
208 # define N_(String) (String)
209 # endif
210 #else
211 # define gettext(Msgid) (Msgid)
212 # define dgettext(Domainname, Msgid) (Msgid)
213 # define dcgettext(Domainname, Msgid, Category) (Msgid)
214 # define ngettext(Msgid1, Msgid2, n) \
215 (n == 1 ? Msgid1 : Msgid2)
216 # define dngettext(Domainname, Msgid1, Msgid2, n) \
217 (n == 1 ? Msgid1 : Msgid2)
218 # define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \
219 (n == 1 ? Msgid1 : Msgid2)
220 # define textdomain(Domainname) do {} while (0)
221 # define bindtextdomain(Domainname, Dirname) do {} while (0)
222 # define _(String) (String)
223 # define N_(String) (String)
224 #endif
226 #ifndef HAVE_GETUID
227 #define getuid() 0
228 #endif
230 #ifndef HAVE_GETGID
231 #define getgid() 0
232 #endif
234 #endif /* ! defined (BFD_SYSDEP_H) */