1 /* sysdep.h -- handle host dependencies for the BFD library 2 Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2005, 2007, 2009 3 Free Software Foundation, Inc. 4 Written by Cygnus Support. 5 6 This file is part of BFD, the Binary File Descriptor library. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21 MA 02110-1301, USA. */ 22 23 #ifndef BFD_SYSDEP_H 24 #define BFD_SYSDEP_H 25 26 #ifdef PACKAGE 27 #error sysdep.h must be included in lieu of config.h 28 #endif 29 30 #include "config.h" 31 32 #include "ansidecl.h" 33 34 #ifdef HAVE_STDDEF_H 35 #include <stddef.h> 36 #endif 37 38 #include <stdio.h> 39 #include <sys/types.h> 40 #include <sys/stat.h> 41 42 #include <errno.h> 43 #if !(defined(errno) || defined(_MSC_VER) && defined(_INC_ERRNO)) 44 extern int errno; 45 #endif 46 47 #ifdef STRING_WITH_STRINGS 48 #include <string.h> 49 #include <strings.h> 50 #else 51 #ifdef HAVE_STRING_H 52 #include <string.h> 53 #else 54 #ifdef HAVE_STRINGS_H 55 #include <strings.h> 56 #else 57 extern char *strchr (); 58 extern char *strrchr (); 59 #endif 60 #endif 61 #endif 62 63 #ifdef HAVE_STDLIB_H 64 #include <stdlib.h> 65 #endif 66 67 #ifdef TIME_WITH_SYS_TIME 68 #include <sys/time.h> 69 #include <time.h> 70 #else 71 #ifdef HAVE_SYS_TIME_H 72 #include <sys/time.h> 73 #else 74 #include <time.h> 75 #endif 76 #endif 77 78 #ifdef HAVE_UNISTD_H 79 #include <unistd.h> 80 #endif 81 82 #ifdef USE_BINARY_FOPEN 83 #include "fopen-bin.h" 84 #else 85 #include "fopen-same.h" 86 #endif 87 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 95 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 109 #ifndef SEEK_SET 110 #define SEEK_SET 0 111 #endif 112 #ifndef SEEK_CUR 113 #define SEEK_CUR 1 114 #endif 115 116 #include "filenames.h" 117 118 #if !HAVE_DECL_FFS 119 extern int ffs (int); 120 #endif 121 122 #if !HAVE_DECL_FREE 123 extern void free (); 124 #endif 125 126 #if !HAVE_DECL_GETENV 127 extern char *getenv (); 128 #endif 129 130 #if !HAVE_DECL_MALLOC 131 extern PTR malloc (); 132 #endif 133 134 #if !HAVE_DECL_REALLOC 135 extern PTR realloc (); 136 #endif 137 138 #if !HAVE_DECL_STPCPY 139 extern char *stpcpy (char *__dest, const char *__src); 140 #endif 141 142 #if !HAVE_DECL_STRSTR 143 extern char *strstr (); 144 #endif 145 146 #ifdef HAVE_FTELLO 147 #if !HAVE_DECL_FTELLO 148 extern off_t ftello (FILE *stream); 149 #endif 150 #endif 151 152 #ifdef HAVE_FTELLO64 153 #if !HAVE_DECL_FTELLO64 154 extern off64_t ftello64 (FILE *stream); 155 #endif 156 #endif 157 158 #ifdef HAVE_FSEEKO 159 #if !HAVE_DECL_FSEEKO 160 extern int fseeko (FILE *stream, off_t offset, int whence); 161 #endif 162 #endif 163 164 #ifdef HAVE_FSEEKO64 165 #if !HAVE_DECL_FSEEKO64 166 extern int fseeko64 (FILE *stream, off64_t offset, int whence); 167 #endif 168 #endif 169 170 /* Define offsetof for those systems which lack it */ 171 172 #ifndef offsetof 173 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 174 #endif 175 176 #ifdef ENABLE_NLS 177 #include <libintl.h> 178 /* Note the use of dgetext() and PACKAGE here, rather than gettext(). 179 180 This is because the code in this directory is used to build a library which 181 will be linked with code in other directories to form programs. We want to 182 maintain a seperate translation file for this directory however, rather 183 than being forced to merge it with that of any program linked to libbfd. 184 This is a library, so it cannot depend on the catalog currently loaded. 185 186 In order to do this, we have to make sure that when we extract messages we 187 use the OPCODES domain rather than the domain of the program that included 188 the bfd library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String) 189 and define PACKAGE to be 'bfd'. (See the code in configure). */ 190 #define _(String) dgettext (PACKAGE, String) 191 #ifdef gettext_noop 192 #define N_(String) gettext_noop (String) 193 #else 194 #define N_(String) (String) 195 #endif 196 #else 197 # define gettext(Msgid) (Msgid) 198 # define dgettext(Domainname, Msgid) (Msgid) 199 # define dcgettext(Domainname, Msgid, Category) (Msgid) 200 # define textdomain(Domainname) while (0) /* nothing */ 201 # define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ 202 # define _(String) (String) 203 # define N_(String) (String) 204 #endif 205 206 #endif /* ! defined (BFD_SYSDEP_H) */ 207