(root)/
binutils-2.41/
bfd/
sysdep.h
       1  /* sysdep.h -- handle host dependencies for the BFD library
       2     Copyright (C) 1995-2023 Free Software Foundation, Inc.
       3     Written by Cygnus Support.
       4  
       5     This file is part of BFD, the Binary File Descriptor library.
       6  
       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.
      11  
      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.
      16  
      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.  */
      21  
      22  #ifndef BFD_SYSDEP_H
      23  #define BFD_SYSDEP_H
      24  
      25  #ifdef PACKAGE
      26  #error sysdep.h must be included in lieu of config.h
      27  #endif
      28  
      29  #include "config.h"
      30  #include <stdio.h>
      31  
      32  #ifdef HAVE_SYS_TYPES_H
      33  #include <sys/types.h>
      34  #endif
      35  
      36  #include <stdlib.h>
      37  #include <stddef.h>
      38  #include <string.h>
      39  
      40  #ifdef HAVE_UNISTD_H
      41  #include <unistd.h>
      42  #endif
      43  
      44  #include <errno.h>
      45  #include <time.h>
      46  
      47  #ifdef HAVE_SYS_RESOURCE_H
      48  #include <sys/resource.h>
      49  #endif /* HAVE_SYS_RESOURCE_H */
      50  
      51  #ifdef USE_BINARY_FOPEN
      52  #include "fopen-bin.h"
      53  #else
      54  #include "fopen-same.h"
      55  #endif
      56  
      57  #ifdef HAVE_FCNTL_H
      58  #include <fcntl.h>
      59  #else
      60  #ifdef HAVE_SYS_FILE_H
      61  #include <sys/file.h>
      62  #endif
      63  #endif
      64  
      65  #ifndef O_RDONLY
      66  #define O_RDONLY 0
      67  #endif
      68  #ifndef O_WRONLY
      69  #define O_WRONLY 1
      70  #endif
      71  #ifndef O_RDWR
      72  #define O_RDWR 2
      73  #endif
      74  #ifndef O_ACCMODE
      75  #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
      76  #endif
      77  /* Systems that don't already define this, don't need it.  */
      78  #ifndef O_BINARY
      79  #define O_BINARY 0
      80  #endif
      81  
      82  #ifndef SEEK_SET
      83  #define SEEK_SET 0
      84  #endif
      85  #ifndef SEEK_CUR
      86  #define SEEK_CUR 1
      87  #endif
      88  
      89  #include "filenames.h"
      90  
      91  #if !HAVE_DECL_FFS
      92  extern int ffs (int);
      93  #endif
      94  
      95  #if !HAVE_DECL_STPCPY
      96  extern char *stpcpy (char *__dest, const char *__src);
      97  #endif
      98  
      99  #ifdef HAVE_FTELLO
     100  #if !HAVE_DECL_FTELLO
     101  extern off_t ftello (FILE *stream);
     102  #endif
     103  #endif
     104  
     105  #ifdef HAVE_FTELLO64
     106  #if !HAVE_DECL_FTELLO64
     107  extern off64_t ftello64 (FILE *stream);
     108  #endif
     109  #endif
     110  
     111  #ifdef HAVE_FSEEKO
     112  #if !HAVE_DECL_FSEEKO
     113  extern int fseeko (FILE *stream, off_t offset, int whence);
     114  #endif
     115  #endif
     116  
     117  #ifdef HAVE_FSEEKO64
     118  #if !HAVE_DECL_FSEEKO64
     119  extern int fseeko64 (FILE *stream, off64_t offset, int whence);
     120  #endif
     121  #endif
     122  
     123  /* Define offsetof for those systems which lack it */
     124  
     125  #ifndef offsetof
     126  #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
     127  #endif
     128  
     129  #ifndef ENABLE_NLS
     130    /* The Solaris version of locale.h always includes libintl.h.  If we have
     131       been configured with --disable-nls then ENABLE_NLS will not be defined
     132       and the dummy definitions of bindtextdomain (et al) below will conflict
     133       with the defintions in libintl.h.  So we define these values to prevent
     134       the bogus inclusion of libintl.h.  */
     135  # define _LIBINTL_H
     136  # define _LIBGETTEXT_H
     137  #endif
     138  #include <locale.h>
     139  
     140  #ifdef ENABLE_NLS
     141  # include <libintl.h>
     142  /* Note the redefinition of gettext and ngettext here to use PACKAGE.
     143  
     144     This is because the code in this directory is used to build a
     145     library which will be linked with code in other directories to form
     146     programs.  We want to maintain a separate translation file for this
     147     directory however, rather than being forced to merge it with that
     148     of any program linked to libbfd.  This is a library, so it cannot
     149     depend on the catalog currently loaded.
     150  
     151     In order to do this, we have to make sure that when we extract
     152     messages we use the BFD domain rather than the domain of the
     153     program that included the bfd library, (eg OBJDUMP).  Hence we use
     154     dgettext (PACKAGE, String) and define PACKAGE to be 'bfd'.
     155     (See the code in configure).  */
     156  # undef gettext
     157  # define gettext(Msgid) dgettext (PACKAGE, Msgid)
     158  # undef ngettext
     159  # define ngettext(Msgid1, Msgid2, n) dngettext (PACKAGE, Msgid1, Msgid2, n)
     160  # define _(String) gettext (String)
     161  # ifdef gettext_noop
     162  #  define N_(String) gettext_noop (String)
     163  # else
     164  #  define N_(String) (String)
     165  # endif
     166  #else
     167  # define gettext(Msgid) (Msgid)
     168  # define dgettext(Domainname, Msgid) (Msgid)
     169  # define dcgettext(Domainname, Msgid, Category) (Msgid)
     170  # define ngettext(Msgid1, Msgid2, n) \
     171    (n == 1 ? Msgid1 : Msgid2)
     172  # define dngettext(Domainname, Msgid1, Msgid2, n) \
     173    (n == 1 ? Msgid1 : Msgid2)
     174  # define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \
     175    (n == 1 ? Msgid1 : Msgid2)
     176  # define textdomain(Domainname) do {} while (0)
     177  # define bindtextdomain(Domainname, Dirname) do {} while (0)
     178  # define _(String) (String)
     179  # define N_(String) (String)
     180  #endif
     181  
     182  #ifndef HAVE_GETUID
     183  #define getuid() 0
     184  #endif
     185  
     186  #ifndef HAVE_GETGID
     187  #define getgid() 0
     188  #endif
     189  
     190  #define POISON_BFD_BOOLEAN 1
     191  
     192  #endif /* ! defined (BFD_SYSDEP_H) */