/* This file is automatically generated.
   It defines macros to allow user program to find the shared
   library files which come as part of GNU libc.  */
#ifndef __GNU_LIB_NAMES_H
#define __GNU_LIB_NAMES_H	1

#include <sgidefs.h>

#if defined(__mips_soft_float) && (_MIPS_SIM == _MIPS_SIM_ABI32)
# define LD_SO                          "ld.so.1"
# define LIBANL_SO                      "libanl.so.1"
# define LIBBROKENLOCALE_SO             "libBrokenLocale.so.1"
# define LIBCIDN_SO                     "libcidn.so.1"
# define LIBCRYPT_SO                    "libcrypt.so.1"
# define LIBC_SO                        "libc.so.6"
# define LIBDL_SO                       "libdl.so.2"
# define LIBGCC_S_SO                    "libgcc_s.so.1"
# define LIBM_SO                        "libm.so.6"
# define LIBNSL_SO                      "libnsl.so.1"
# define LIBNSS_COMPAT_SO               "libnss_compat.so.2"
# define LIBNSS_DB_SO                   "libnss_db.so.2"
# define LIBNSS_DNS_SO                  "libnss_dns.so.2"
# define LIBNSS_FILES_SO                "libnss_files.so.2"
# define LIBNSS_HESIOD_SO               "libnss_hesiod.so.2"
# define LIBNSS_LDAP_SO                 "libnss_ldap.so.2"
# define LIBNSS_NISPLUS_SO              "libnss_nisplus.so.2"
# define LIBNSS_NIS_SO                  "libnss_nis.so.2"
# define LIBNSS_TEST1_SO                "libnss_test1.so.2"
# define LIBPTHREAD_SO                  "libpthread.so.0"
# define LIBRESOLV_SO                   "libresolv.so.2"
# define LIBRT_SO                       "librt.so.1"
# define LIBTHREAD_DB_SO                "libthread_db.so.1"
# define LIBUTIL_SO                     "libutil.so.1"
#endif
#if defined(__mips_hard_float) && (_MIPS_SIM == _MIPS_SIM_ABI32)
# define LD_SO                          "ld.so.1"
# define LIBANL_SO                      "libanl.so.1"
# define LIBBROKENLOCALE_SO             "libBrokenLocale.so.1"
# define LIBCIDN_SO                     "libcidn.so.1"
# define LIBCRYPT_SO                    "libcrypt.so.1"
# define LIBC_SO                        "libc.so.6"
# define LIBDL_SO                       "libdl.so.2"
# define LIBGCC_S_SO                    "libgcc_s.so.1"
# define LIBM_SO                        "libm.so.6"
# define LIBNSL_SO                      "libnsl.so.1"
# define LIBNSS_COMPAT_SO               "libnss_compat.so.2"
# define LIBNSS_DB_SO                   "libnss_db.so.2"
# define LIBNSS_DNS_SO                  "libnss_dns.so.2"
# define LIBNSS_FILES_SO                "libnss_files.so.2"
# define LIBNSS_HESIOD_SO               "libnss_hesiod.so.2"
# define LIBNSS_LDAP_SO                 "libnss_ldap.so.2"
# define LIBNSS_NISPLUS_SO              "libnss_nisplus.so.2"
# define LIBNSS_NIS_SO                  "libnss_nis.so.2"
# define LIBNSS_TEST1_SO                "libnss_test1.so.2"
# define LIBPTHREAD_SO                  "libpthread.so.0"
# define LIBRESOLV_SO                   "libresolv.so.2"
# define LIBRT_SO                       "librt.so.1"
# define LIBTHREAD_DB_SO                "libthread_db.so.1"
# define LIBUTIL_SO                     "libutil.so.1"
#endif
#if defined(__mips_soft_float) && (_MIPS_SIM == _MIPS_SIM_NABI32)
# define LD_SO                          "ld.so.1"
# define LIBANL_SO                      "libanl.so.1"
# define LIBBROKENLOCALE_SO             "libBrokenLocale.so.1"
# define LIBCIDN_SO                     "libcidn.so.1"
# define LIBCRYPT_SO                    "libcrypt.so.1"
# define LIBC_SO                        "libc.so.6"
# define LIBDL_SO                       "libdl.so.2"
# define LIBGCC_S_SO                    "libgcc_s.so.1"
# define LIBM_SO                        "libm.so.6"
# define LIBNSL_SO                      "libnsl.so.1"
# define LIBNSS_COMPAT_SO               "libnss_compat.so.2"
# define LIBNSS_DB_SO                   "libnss_db.so.2"
# define LIBNSS_DNS_SO                  "libnss_dns.so.2"
# define LIBNSS_FILES_SO                "libnss_files.so.2"
# define LIBNSS_HESIOD_SO               "libnss_hesiod.so.2"
# define LIBNSS_LDAP_SO                 "libnss_ldap.so.2"
# define LIBNSS_NISPLUS_SO              "libnss_nisplus.so.2"
# define LIBNSS_NIS_SO                  "libnss_nis.so.2"
# define LIBNSS_TEST1_SO                "libnss_test1.so.2"
# define LIBPTHREAD_SO                  "libpthread.so.0"
# define LIBRESOLV_SO                   "libresolv.so.2"
# define LIBRT_SO                       "librt.so.1"
# define LIBTHREAD_DB_SO                "libthread_db.so.1"
# define LIBUTIL_SO                     "libutil.so.1"
#endif
#if defined(__mips_hard_float) && (_MIPS_SIM == _MIPS_SIM_NABI32)
# define LD_SO                          "ld.so.1"
# define LIBANL_SO                      "libanl.so.1"
# define LIBBROKENLOCALE_SO             "libBrokenLocale.so.1"
# define LIBCIDN_SO                     "libcidn.so.1"
# define LIBCRYPT_SO                    "libcrypt.so.1"
# define LIBC_SO                        "libc.so.6"
# define LIBDL_SO                       "libdl.so.2"
# define LIBGCC_S_SO                    "libgcc_s.so.1"
# define LIBM_SO                        "libm.so.6"
# define LIBNSL_SO                      "libnsl.so.1"
# define LIBNSS_COMPAT_SO               "libnss_compat.so.2"
# define LIBNSS_DB_SO                   "libnss_db.so.2"
# define LIBNSS_DNS_SO                  "libnss_dns.so.2"
# define LIBNSS_FILES_SO                "libnss_files.so.2"
# define LIBNSS_HESIOD_SO               "libnss_hesiod.so.2"
# define LIBNSS_LDAP_SO                 "libnss_ldap.so.2"
# define LIBNSS_NISPLUS_SO              "libnss_nisplus.so.2"
# define LIBNSS_NIS_SO                  "libnss_nis.so.2"
# define LIBNSS_TEST1_SO                "libnss_test1.so.2"
# define LIBPTHREAD_SO                  "libpthread.so.0"
# define LIBRESOLV_SO                   "libresolv.so.2"
# define LIBRT_SO                       "librt.so.1"
# define LIBTHREAD_DB_SO                "libthread_db.so.1"
# define LIBUTIL_SO                     "libutil.so.1"
#endif
#if defined(__mips_soft_float) && (_MIPS_SIM == _MIPS_SIM_ABI64)
# define LD_SO                          "ld.so.1"
# define LIBANL_SO                      "libanl.so.1"
# define LIBBROKENLOCALE_SO             "libBrokenLocale.so.1"
# define LIBCIDN_SO                     "libcidn.so.1"
# define LIBCRYPT_SO                    "libcrypt.so.1"
# define LIBC_SO                        "libc.so.6"
# define LIBDL_SO                       "libdl.so.2"
# define LIBGCC_S_SO                    "libgcc_s.so.1"
# define LIBM_SO                        "libm.so.6"
# define LIBNSL_SO                      "libnsl.so.1"
# define LIBNSS_COMPAT_SO               "libnss_compat.so.2"
# define LIBNSS_DB_SO                   "libnss_db.so.2"
# define LIBNSS_DNS_SO                  "libnss_dns.so.2"
# define LIBNSS_FILES_SO                "libnss_files.so.2"
# define LIBNSS_HESIOD_SO               "libnss_hesiod.so.2"
# define LIBNSS_LDAP_SO                 "libnss_ldap.so.2"
# define LIBNSS_NISPLUS_SO              "libnss_nisplus.so.2"
# define LIBNSS_NIS_SO                  "libnss_nis.so.2"
# define LIBNSS_TEST1_SO                "libnss_test1.so.2"
# define LIBPTHREAD_SO                  "libpthread.so.0"
# define LIBRESOLV_SO                   "libresolv.so.2"
# define LIBRT_SO                       "librt.so.1"
# define LIBTHREAD_DB_SO                "libthread_db.so.1"
# define LIBUTIL_SO                     "libutil.so.1"
#endif
#if defined(__mips_hard_float) && (_MIPS_SIM == _MIPS_SIM_ABI64)
# define LD_SO                          "ld.so.1"
# define LIBANL_SO                      "libanl.so.1"
# define LIBBROKENLOCALE_SO             "libBrokenLocale.so.1"
# define LIBCIDN_SO                     "libcidn.so.1"
# define LIBCRYPT_SO                    "libcrypt.so.1"
# define LIBC_SO                        "libc.so.6"
# define LIBDL_SO                       "libdl.so.2"
# define LIBGCC_S_SO                    "libgcc_s.so.1"
# define LIBM_SO                        "libm.so.6"
# define LIBNSL_SO                      "libnsl.so.1"
# define LIBNSS_COMPAT_SO               "libnss_compat.so.2"
# define LIBNSS_DB_SO                   "libnss_db.so.2"
# define LIBNSS_DNS_SO                  "libnss_dns.so.2"
# define LIBNSS_FILES_SO                "libnss_files.so.2"
# define LIBNSS_HESIOD_SO               "libnss_hesiod.so.2"
# define LIBNSS_LDAP_SO                 "libnss_ldap.so.2"
# define LIBNSS_NISPLUS_SO              "libnss_nisplus.so.2"
# define LIBNSS_NIS_SO                  "libnss_nis.so.2"
# define LIBNSS_TEST1_SO                "libnss_test1.so.2"
# define LIBPTHREAD_SO                  "libpthread.so.0"
# define LIBRESOLV_SO                   "libresolv.so.2"
# define LIBRT_SO                       "librt.so.1"
# define LIBTHREAD_DB_SO                "libthread_db.so.1"
# define LIBUTIL_SO                     "libutil.so.1"
#endif

#endif	/* gnu/lib-names.h */
