s390: Add DT_JMPREL pointing to .rela.[i]plt with static-pie
[binutils-gdb.git] / bfd / sysdep.h
index d560e7670b635c2d8b2f3b4f7fc8e4c4c5a6d524..c9cc10ec28cdc242f21d524dec7f656dd3556c8a 100644 (file)
@@ -1,6 +1,5 @@
 /* sysdep.h -- handle host dependencies for the BFD library
 /* sysdep.h -- handle host dependencies for the BFD library
-   Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2005, 2007, 2009
-   Free Software Foundation, Inc.
+   Copyright (C) 1995-2022 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
 #endif
 
 #include "config.h"
 #endif
 
 #include "config.h"
-
-#include "ansidecl.h"
-
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-
 #include <stdio.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
 
 
-#include <errno.h>
-#if !(defined(errno) || defined(_MSC_VER) && defined(_INC_ERRNO))
-extern int errno;
-#endif
-
-#ifdef STRING_WITH_STRINGS
-#include <string.h>
-#include <strings.h>
-#else
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#else
-extern char *strchr ();
-extern char *strrchr ();
-#endif
-#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
 #endif
 
 #endif
 
-#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #include <stdlib.h>
-#endif
-
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
+#include <stddef.h>
+#include <string.h>
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
+#include <errno.h>
+#include <time.h>
+
 #ifdef HAVE_SYS_RESOURCE_H
 #include <sys/resource.h>
 #endif /* HAVE_SYS_RESOURCE_H */
 #ifdef HAVE_SYS_RESOURCE_H
 #include <sys/resource.h>
 #endif /* HAVE_SYS_RESOURCE_H */
@@ -109,6 +74,10 @@ extern char *strrchr ();
 #ifndef O_ACCMODE
 #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
 #endif
 #ifndef O_ACCMODE
 #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
 #endif
+/* Systems that don't already define this, don't need it.  */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
 
 #ifndef SEEK_SET
 #define SEEK_SET 0
 
 #ifndef SEEK_SET
 #define SEEK_SET 0
@@ -123,30 +92,10 @@ extern char *strrchr ();
 extern int ffs (int);
 #endif
 
 extern int ffs (int);
 #endif
 
-#if !HAVE_DECL_FREE
-extern void free ();
-#endif
-
-#if !HAVE_DECL_GETENV
-extern char *getenv ();
-#endif
-
-#if !HAVE_DECL_MALLOC
-extern PTR malloc ();
-#endif
-
-#if !HAVE_DECL_REALLOC
-extern PTR realloc ();
-#endif
-
 #if !HAVE_DECL_STPCPY
 extern char *stpcpy (char *__dest, const char *__src);
 #endif
 
 #if !HAVE_DECL_STPCPY
 extern char *stpcpy (char *__dest, const char *__src);
 #endif
 
-#if !HAVE_DECL_STRSTR
-extern char *strstr ();
-#endif
-
 #ifdef HAVE_FTELLO
 #if !HAVE_DECL_FTELLO
 extern off_t ftello (FILE *stream);
 #ifdef HAVE_FTELLO
 #if !HAVE_DECL_FTELLO
 extern off_t ftello (FILE *stream);
@@ -177,34 +126,67 @@ extern int fseeko64 (FILE *stream, off64_t offset, int whence);
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #endif
 
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #endif
 
-#ifdef ENABLE_NLS
-#include <libintl.h>
-/* Note the use of dgetext() and PACKAGE here, rather than gettext().
-
-   This is because the code in this directory is used to build a library which
-   will be linked with code in other directories to form programs.  We want to
-   maintain a seperate translation file for this directory however, rather
-   than being forced to merge it with that of any program linked to libbfd.
-   This is a library, so it cannot depend on the catalog currently loaded.
-
-   In order to do this, we have to make sure that when we extract messages we
-   use the OPCODES domain rather than the domain of the program that included
-   the bfd library, (eg OBJDUMP).  Hence we use dgettext (PACKAGE, String)
-   and define PACKAGE to be 'bfd'.  (See the code in configure).  */
-#define _(String) dgettext (PACKAGE, String)
-#ifdef gettext_noop
-#define N_(String) gettext_noop (String)
-#else
-#define N_(String) (String)
+#ifndef ENABLE_NLS
+  /* The Solaris version of locale.h always includes libintl.h.  If we have
+     been configured with --disable-nls then ENABLE_NLS will not be defined
+     and the dummy definitions of bindtextdomain (et al) below will conflict
+     with the defintions in libintl.h.  So we define these values to prevent
+     the bogus inclusion of libintl.h.  */
+# define _LIBINTL_H
+# define _LIBGETTEXT_H
 #endif
 #endif
+#include <locale.h>
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+/* Note the redefinition of gettext and ngettext here to use PACKAGE.
+
+   This is because the code in this directory is used to build a
+   library which will be linked with code in other directories to form
+   programs.  We want to maintain a separate translation file for this
+   directory however, rather than being forced to merge it with that
+   of any program linked to libbfd.  This is a library, so it cannot
+   depend on the catalog currently loaded.
+
+   In order to do this, we have to make sure that when we extract
+   messages we use the BFD domain rather than the domain of the
+   program that included the bfd library, (eg OBJDUMP).  Hence we use
+   dgettext (PACKAGE, String) and define PACKAGE to be 'bfd'.
+   (See the code in configure).  */
+# undef gettext
+# define gettext(Msgid) dgettext (PACKAGE, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, n) dngettext (PACKAGE, Msgid1, Msgid2, n)
+# define _(String) gettext (String)
+# ifdef gettext_noop
+#  define N_(String) gettext_noop (String)
+# else
+#  define N_(String) (String)
+# endif
 #else
 # define gettext(Msgid) (Msgid)
 # define dgettext(Domainname, Msgid) (Msgid)
 # define dcgettext(Domainname, Msgid, Category) (Msgid)
 #else
 # define gettext(Msgid) (Msgid)
 # define dgettext(Domainname, Msgid) (Msgid)
 # define dcgettext(Domainname, Msgid, Category) (Msgid)
-# define textdomain(Domainname) while (0) /* nothing */
-# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+# define ngettext(Msgid1, Msgid2, n) \
+  (n == 1 ? Msgid1 : Msgid2)
+# define dngettext(Domainname, Msgid1, Msgid2, n) \
+  (n == 1 ? Msgid1 : Msgid2)
+# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \
+  (n == 1 ? Msgid1 : Msgid2)
+# define textdomain(Domainname) do {} while (0)
+# define bindtextdomain(Domainname, Dirname) do {} while (0)
 # define _(String) (String)
 # define N_(String) (String)
 #endif
 
 # define _(String) (String)
 # define N_(String) (String)
 #endif
 
+#ifndef HAVE_GETUID
+#define getuid() 0
+#endif
+
+#ifndef HAVE_GETGID
+#define getgid() 0
+#endif
+
+#define POISON_BFD_BOOLEAN 1
+
 #endif /* ! defined (BFD_SYSDEP_H) */
 #endif /* ! defined (BFD_SYSDEP_H) */