mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-24 17:51:17 +03:00
Update.
* posix/Makefile (install-others): Add $(inst_libexecdir)/getconf.
(CFLAGS-sysconf.c): Add -D_GETCONF_DIR.
(CFLAGS-getconf.c): New.
($(inst_libexecdir)/getconf): New.
* posix/confstr.c (confstr): Use __sysconf to query specifications
that don't have _POSIX_V6_* macros defined. Use __*_{C,LD}FLAGS
macros defined in bits/environments.h.
* sysdeps/posix/sysconf.c: Include stdlib.h, string.h and
sys/stat.h.
(__sysconf_check_spec): New routine.
(__sysconf): Use it.
* posix/getconf.c (specs): Change into structure array.
(main): If -v is not given, try to get default from
$(libexecdir)/getconf/default. If specification is not
supported by this getconf, try to execute
$(libexecdir)/getconf/$(specification).
* sysdeps/unix/bsd/bsd4.4/freebsd/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/s390/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/x86_64/bits/environments.h: New file.
* sysdeps/generic/bits/environments.h (__ILP32_OFFBIG_CFLAGS):
Define.
2004-11-26 Jakub Jelinek <jakub@redhat.com>
This commit is contained in:
185
posix/confstr.c
185
posix/confstr.c
@@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 1991,96,97,2000-2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1996, 1997, 2000-2002, 2003, 2004
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -54,50 +55,153 @@ confstr (name, buf, len)
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
{
|
||||
static const char restenvs[] =
|
||||
#if _POSIX_V6_ILP32_OFF32 > 0
|
||||
"_POSIX_V6_ILP32_OFF32"
|
||||
char restenvs[4 * sizeof "_POSIX_V6_LPBIG_OFFBIG"];
|
||||
|
||||
string_len = 0;
|
||||
#ifndef _POSIX_V6_ILP32_OFF32
|
||||
if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if _POSIX_V6_ILP32_OFFBIG > 0
|
||||
# if _POSIX_V6_ILP32_OFF32 > 0
|
||||
"\n"
|
||||
# endif
|
||||
"_POSIX_V6_ILP32_OFFBIG"
|
||||
#if !defined _POSIX_V6_ILP32_OFF32 || _POSIX_V6_ILP32_OFF32 > 0
|
||||
{
|
||||
memcpy (restenvs + string_len, "_POSIX_V6_ILP32_OFF32",
|
||||
sizeof "_POSIX_V6_ILP32_OFF32" - 1);
|
||||
string_len += sizeof "_POSIX_V6_ILP32_OFF32" - 1;
|
||||
}
|
||||
#endif
|
||||
#if _POSIX_V6_LP64_OFF64 > 0
|
||||
# if _POSIX_V6_ILP32_OFF32 > 0 || _POSIX_V6_ILP32_OFFBIG > 0
|
||||
"\n"
|
||||
# endif
|
||||
"_POSIX_V6_LP64_OFF64"
|
||||
#ifndef _POSIX_V6_ILP32_OFFBIG
|
||||
if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if _POSIX_V6_LPBIG_OFFBIG > 0
|
||||
# if _POSIX_V6_ILP32_OFF32 > 0 || _POSIX_V6_ILP32_OFFBIG > 0 \
|
||||
|| _POSIX_V6_LP64_OFF64 > 0
|
||||
"\n"
|
||||
# endif
|
||||
"_POSIX_V6_LPBIG_OFFBIG"
|
||||
#if !defined _POSIX_V6_ILP32_OFFBIG || _POSIX_V6_ILP32_OFFBIG > 0
|
||||
{
|
||||
if (string_len)
|
||||
restenvs[string_len++] = '\n';
|
||||
memcpy (restenvs + string_len, "_POSIX_V6_ILP32_OFFBIG",
|
||||
sizeof "_POSIX_V6_ILP32_OFFBIG" - 1);
|
||||
string_len += sizeof "_POSIX_V6_ILP32_OFFBIG" - 1;
|
||||
}
|
||||
#endif
|
||||
;
|
||||
#ifndef _POSIX_V6_LP64_OFF64
|
||||
if (__sysconf (_SC_V6_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_LP64_OFF64 || _POSIX_V6_LP64_OFF64 > 0
|
||||
{
|
||||
if (string_len)
|
||||
restenvs[string_len++] = '\n';
|
||||
memcpy (restenvs + string_len, "_POSIX_V6_LP64_OFF64",
|
||||
sizeof "_POSIX_V6_LP64_OFF64" - 1);
|
||||
string_len += sizeof "_POSIX_V6_LP64_OFF64" - 1;
|
||||
}
|
||||
#endif
|
||||
#ifndef _POSIX_V6_LPBIG_OFFBIG
|
||||
if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_LPBIG_OFFBIG || _POSIX_V6_LPBIG_OFFBIG > 0
|
||||
{
|
||||
if (string_len)
|
||||
restenvs[string_len++] = '\n';
|
||||
memcpy (restenvs + string_len, "_POSIX_V6_LPBIG_OFFBIG",
|
||||
sizeof "_POSIX_V6_LPBIG_OFFBIG" - 1);
|
||||
string_len += sizeof "_POSIX_V6_LPBIG_OFFBIG" - 1;
|
||||
}
|
||||
#endif
|
||||
restenvs[string_len++] = '\0';
|
||||
string = restenvs;
|
||||
string_len = sizeof (restenvs);
|
||||
}
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFF32_CFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
|
||||
#ifdef __ILP32_OFF32_CFLAGS
|
||||
# if _POSIX_V6_ILP32_OFF32 == -1
|
||||
# error __ILP32_OFF32_CFLAGS shouldn't be defined
|
||||
# elif !defined _POSIX_V6_ILP32_OFF32
|
||||
if (__sysconf (_SC_V6_ILP32_OFF32) < 0)
|
||||
break;
|
||||
# endif
|
||||
string = __ILP32_OFF32_CFLAGS;
|
||||
string_len = sizeof (__ILP32_OFF32_CFLAGS);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFFBIG_CFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS:
|
||||
#ifdef __ILP32_OFFBIG_CFLAGS
|
||||
# if _POSIX_V6_ILP32_OFFBIG == -1
|
||||
# error __ILP32_OFFBIG_CFLAGS shouldn't be defined
|
||||
# elif !defined _POSIX_V6_ILP32_OFFBIG
|
||||
if (__sysconf (_SC_V6_ILP32_OFFBIG) < 0)
|
||||
break;
|
||||
# endif
|
||||
string = __ILP32_OFFBIG_CFLAGS;
|
||||
string_len = sizeof (__ILP32_OFFBIG_CFLAGS);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case _CS_XBS5_LP64_OFF64_CFLAGS:
|
||||
case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
|
||||
#ifdef __LP64_OFF64_CFLAGS
|
||||
# if _POSIX_V6_LP64_OFF64 == -1
|
||||
# error __LP64_OFF64_CFLAGS shouldn't be defined
|
||||
# elif !defined _POSIX_V6_LP64_OFF64
|
||||
if (__sysconf (_SC_V6_LP64_OFF64) < 0)
|
||||
break;
|
||||
# endif
|
||||
string = __LP64_OFF64_CFLAGS;
|
||||
string_len = sizeof (__LP64_OFF64_CFLAGS);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFF32_LDFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
|
||||
#ifdef __ILP32_OFF32_LDFLAGS
|
||||
# if _POSIX_V6_ILP32_OFF32 == -1
|
||||
# error __ILP32_OFF32_LDFLAGS shouldn't be defined
|
||||
# elif !defined _POSIX_V6_ILP32_OFF32
|
||||
if (__sysconf (_SC_V6_ILP32_OFF32) < 0)
|
||||
break;
|
||||
# endif
|
||||
string = __ILP32_OFF32_LDFLAGS;
|
||||
string_len = sizeof (__ILP32_OFF32_LDFLAGS);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFFBIG_LDFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
|
||||
#ifdef __ILP32_OFFBIG_LDFLAGS
|
||||
# if _POSIX_V6_ILP32_OFFBIG == -1
|
||||
# error __ILP32_OFFBIG_LDFLAGS shouldn't be defined
|
||||
# elif !defined _POSIX_V6_ILP32_OFFBIG
|
||||
if (__sysconf (_SC_V6_ILP32_OFFBIG) < 0)
|
||||
break;
|
||||
# endif
|
||||
string = __ILP32_OFFBIG_LDFLAGS;
|
||||
string_len = sizeof (__ILP32_OFFBIG_LDFLAGS);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case _CS_XBS5_LP64_OFF64_LDFLAGS:
|
||||
case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
|
||||
#ifdef __LP64_OFF64_LDFLAGS
|
||||
# if _POSIX_V6_LP64_OFF64 == -1
|
||||
# error __LP64_OFF64_LDFLAGS shouldn't be defined
|
||||
# elif !defined _POSIX_V6_LP64_OFF64
|
||||
if (__sysconf (_SC_V6_LP64_OFF64) < 0)
|
||||
break;
|
||||
# endif
|
||||
string = __LP64_OFF64_LDFLAGS;
|
||||
string_len = sizeof (__LP64_OFF64_LDFLAGS);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case _CS_LFS_CFLAGS:
|
||||
case _CS_LFS_LINTFLAGS:
|
||||
#if _XBS5_LP64_OFF64 == -1 && _XBS5_LPBIG_OFFBIG == -1 && _XBS5_ILP32_OFFBIG == 1
|
||||
#if _POSIX_V6_ILP32_OFF32 == 1 && _POSIX_V6_ILP32_OFFBIG == 1
|
||||
# define __LFS_CFLAGS "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||
/* Signal that we want the new ABI. */
|
||||
{
|
||||
static const char file_offset[]
|
||||
= "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64";
|
||||
string = file_offset;
|
||||
string_len = sizeof (file_offset);
|
||||
}
|
||||
break;
|
||||
string = __LFS_CFLAGS;
|
||||
string_len = sizeof (__LFS_CFLAGS);
|
||||
#endif
|
||||
/* FALLTHROUGH */
|
||||
break;
|
||||
|
||||
case _CS_LFS_LDFLAGS:
|
||||
case _CS_LFS_LIBS:
|
||||
@@ -106,12 +210,9 @@ confstr (name, buf, len)
|
||||
|
||||
case _CS_LFS64_CFLAGS:
|
||||
case _CS_LFS64_LINTFLAGS:
|
||||
if (sizeof (off_t) != sizeof (off64_t))
|
||||
{
|
||||
static const char lf64_source[] = "-D_LARGEFILE64_SOURCE";
|
||||
string = lf64_source;
|
||||
string_len = sizeof (lf64_source);
|
||||
}
|
||||
#define __LFS64_CFLAGS "-D_LARGEFILE64_SOURCE"
|
||||
string = __LFS64_CFLAGS;
|
||||
string_len = sizeof (__LFS64_CFLAGS);
|
||||
break;
|
||||
|
||||
case _CS_LFS64_LDFLAGS:
|
||||
@@ -119,15 +220,10 @@ confstr (name, buf, len)
|
||||
/* No special libraries or linker flags needed. */
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFF32_CFLAGS:
|
||||
case _CS_XBS5_ILP32_OFF32_LDFLAGS:
|
||||
case _CS_XBS5_ILP32_OFF32_LIBS:
|
||||
case _CS_XBS5_ILP32_OFF32_LINTFLAGS:
|
||||
case _CS_XBS5_ILP32_OFFBIG_LDFLAGS:
|
||||
case _CS_XBS5_ILP32_OFFBIG_LIBS:
|
||||
case _CS_XBS5_ILP32_OFFBIG_LINTFLAGS:
|
||||
case _CS_XBS5_LP64_OFF64_CFLAGS:
|
||||
case _CS_XBS5_LP64_OFF64_LDFLAGS:
|
||||
case _CS_XBS5_LP64_OFF64_LIBS:
|
||||
case _CS_XBS5_LP64_OFF64_LINTFLAGS:
|
||||
case _CS_XBS5_LPBIG_OFFBIG_CFLAGS:
|
||||
@@ -135,15 +231,10 @@ confstr (name, buf, len)
|
||||
case _CS_XBS5_LPBIG_OFFBIG_LIBS:
|
||||
case _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS:
|
||||
|
||||
case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFF32_LIBS:
|
||||
case _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
|
||||
case _CS_POSIX_V6_ILP32_OFFBIG_LIBS:
|
||||
case _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS:
|
||||
case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
|
||||
case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
|
||||
case _CS_POSIX_V6_LP64_OFF64_LIBS:
|
||||
case _CS_POSIX_V6_LP64_OFF64_LINTFLAGS:
|
||||
case _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS:
|
||||
|
||||
Reference in New Issue
Block a user