This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch siddhesh/posix-wundef created. glibc-2.20-353-g41868ac


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, siddhesh/posix-wundef has been created
        at  41868acc3a55bad110e79a7a40c030b39c5480bb (commit)

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=41868acc3a55bad110e79a7a40c030b39c5480bb

commit 41868acc3a55bad110e79a7a40c030b39c5480bb
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Wed Oct 1 14:36:03 2014 +0530

    Use conf.list to generate spec array
    
    This patch adds support to generate the spec array in getconf from the
    conf.list.  The generated code is mostly unchanged.  the only changes
    are due to the change in layout of the spec and val arrays in the ELF.
    
    The val array can also be auto-generated from conf.list once the
    remaining macros are added to it.
    
    	* posix/conf.list (SPEC:XBS5): Add sysconf prefix.
    	* posix/confstr.c: Define NEED_SPEC_ARRAY to 0.
    	* posix/posix-envs.def: Likewise.
    	* sysdeps/posix/sysconf.c: Likewise.
    	* posix/getconf.c: Define NEED_SPEC_ARRAY to 1.
    	(specs): Remove array.
    	* scripts/gen-conf.awk: Support generation of specs array.

diff --git a/posix/conf.list b/posix/conf.list
index 000b908..0a17666 100644
--- a/posix/conf.list
+++ b/posix/conf.list
@@ -1,7 +1,8 @@
 # Configuration variables identified by getconf.  The heading of each section
-# is of the format TYPE:PREFIX with the opening curly brace on the same line.
-# TYPE can either be SYSCONF, PATHCONF, CONFSTR or SPEC.  Variable names are
-# put one on each line with a curly brace on its own line ending the section.
+# is of the format TYPE:PREFIX:SC_PREFIX with the opening curly brace on the
+# same line.  TYPE can either be SYSCONF, PATHCONF, CONFSTR or SPEC.  In the
+# absence of SC_PREFIX, _SC is used as the SC_PREFIX.  Variable names are put
+# one on each line with a curly brace on its own line ending the section.
 
 SPEC:POSIX {
   V6_ILP32_OFF32
@@ -103,7 +104,7 @@ SYSCONF:POSIX {
   RAW_SOCKETS
 }
 
-SPEC:XBS5 {
+SPEC:XBS5:_SC_XBS5 {
   ILP32_OFF32
   ILP32_OFFBIG
   LP64_OFF64
diff --git a/posix/confstr.c b/posix/confstr.c
index 1accfee..0400d7f 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -21,7 +21,9 @@
 #include <string.h>
 #include <confstr.h>
 #include "../version.h"
-#include "confdefs.h"
+
+#define NEED_SPEC_ARRAY 0
+#include <confdefs.h>
 
 /* If BUF is not NULL and LEN > 0, fill in at most LEN - 1 bytes
    of BUF with the value corresponding to NAME and zero-terminate BUF.
diff --git a/posix/getconf.c b/posix/getconf.c
index 14d51d8..3c08688 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -26,6 +26,9 @@
 #include "../version.h"
 #define PACKAGE _libc_intl_domainname
 
+#define NEED_SPEC_ARRAY 1
+#include <confdefs.h>
+
 struct conf
   {
     const char *name;
@@ -387,23 +390,6 @@ static const struct conf vars[] =
   };
 
 
-static const struct { const char *name; int num; } specs[] =
-  {
-    { "XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32 },
-    { "XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG },
-    { "XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64 },
-    { "XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG },
-    { "POSIX_V6_ILP32_OFF32", _SC_V6_ILP32_OFF32 },
-    { "POSIX_V6_ILP32_OFFBIG", _SC_V6_ILP32_OFFBIG },
-    { "POSIX_V6_LP64_OFF64", _SC_V6_LP64_OFF64 },
-    { "POSIX_V6_LPBIG_OFFBIG", _SC_V6_LPBIG_OFFBIG },
-    { "POSIX_V7_ILP32_OFF32", _SC_V7_ILP32_OFF32 },
-    { "POSIX_V7_ILP32_OFFBIG", _SC_V7_ILP32_OFFBIG },
-    { "POSIX_V7_LP64_OFF64", _SC_V7_LP64_OFF64 },
-    { "POSIX_V7_LPBIG_OFFBIG", _SC_V7_LPBIG_OFFBIG },
-  };
-static const int nspecs = sizeof (specs) / sizeof (specs[0]);
-
 extern const char *__progname;
 
 
diff --git a/posix/posix-envs.def b/posix/posix-envs.def
index 9047d0c..0b33e02 100644
--- a/posix/posix-envs.def
+++ b/posix/posix-envs.def
@@ -42,7 +42,8 @@
    defined.  These are called with arguments V5, V6, V7 before and
    after the relevant groups of environments.  */
 
-#include "confdefs.h"
+#define NEED_SPEC_ARRAY 0
+#include <confdefs.h>
 
 START_ENV_GROUP (V7)
 
diff --git a/scripts/gen-conf.awk b/scripts/gen-conf.awk
index 45a4d44..1370646 100644
--- a/scripts/gen-conf.awk
+++ b/scripts/gen-conf.awk
@@ -17,12 +17,17 @@ $2 == "{" {
   split ($1, arr, ":")
   type = arr[1]
   prefix = arr[2]
+  if (arr[3] != "")
+    sc_prefix = arr[3]
+  else
+    sc_prefix = "_SC"
   next
 }
 
 $1 == "}" {
   prefix = ""
   type = ""
+  sc_prefix = ""
   next
 }
 
@@ -37,6 +42,7 @@ $1 == "}" {
   # CONFSTR: A configuration string
   # SYSCONF: A numeric value
   # SPEC: A specification
+  sc_prefixes[prefix][$1] = sc_prefix
   conf[prefix][$1] = type
 }
 
@@ -58,6 +64,26 @@ ENDFILE {
 	printf "# endif\n"
       }
       printf "#endif\n\n"
+
+      # Build a name -> sysconf number associative array to print a C array at
+      # the end.
+      if (conf[p][c] == "SPEC") {
+	name = sprintf ("%s_%s", p, c)
+	num = sprintf ("%s_%s", sc_prefixes[p][c], c)
+	spec[name] = num
+      }
     }
   }
+
+  # Print the specification array.  Define the macro NEED_SPEC_ARRAY before
+  # including confdefs.h to make it available in the compilation unit.
+  print "#if NEED_SPEC_ARRAY"
+  print "static const struct { const char *name; int num; } specs[] ="
+  print "  {"
+  for (s in spec) {
+    printf "    { \"%s\", %s },\n", s, spec[s]
+  }
+  print "  };"
+  print "static const int nspecs = sizeof (specs) / sizeof (specs[0]);"
+  print "#endif"
 }
diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c
index c7b748b..bff59f4 100644
--- a/sysdeps/posix/sysconf.c
+++ b/sysdeps/posix/sysconf.c
@@ -31,6 +31,7 @@
 #include <sys/types.h>
 #include <regex.h>
 
+#define NEED_SPEC_ARRAY 0
 #include <confdefs.h>
 
 

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=67cf3c6ed0b1119bbddc1c6f46af486fc1ad2432

commit 67cf3c6ed0b1119bbddc1c6f46af486fc1ad2432
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Thu Sep 4 00:39:50 2014 +0530

    Use PTHREAD_DESTRUCTOR_ITERATIONS
    
    The _POSIX_THREAD_DESTRUCTOR_ITERATIONS variable is not implemented by
    getconf, so to get both getconf and sysconf on the same page, make the
    latter use PTHREAD_DESTRUCTOR_ITERATIONS.
    
    The generated code is unchanged on x86_64.
    
    Siddhesh
    
    	* posix/conf.list (SYSCONF:POSIX): Remove
    	THREAD_DESTRUCTOR_ITERATIONS.
    	* sysdeps/posix/sysconf.c (__sysconf): Use
    	PTHREAD_DESTRUCTOR_ITERATIONS.

diff --git a/posix/conf.list b/posix/conf.list
index 8e947f4..000b908 100644
--- a/posix/conf.list
+++ b/posix/conf.list
@@ -99,7 +99,6 @@ SYSCONF:POSIX {
   USER_GROUPS_R
   VERSION
 # Additional variables not in getconf.
-  THREAD_DESTRUCTOR_ITERATIONS
   IPV6
   RAW_SOCKETS
 }
diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c
index f5b65bf..c7b748b 100644
--- a/sysdeps/posix/sysconf.c
+++ b/sysdeps/posix/sysconf.c
@@ -555,8 +555,8 @@ __sysconf (name)
 #endif
 
     case _SC_THREAD_DESTRUCTOR_ITERATIONS:
-#if CONF_IS_DEFINED_SET (_POSIX_THREAD_DESTRUCTOR_ITERATIONS)
-      return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
+#if PTHREAD_DESTRUCTOR_ITERATIONS
+      return PTHREAD_DESTRUCTOR_ITERATIONS;
 #else
       return -1;
 #endif

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6644e37a1da5c8745d69fccaa3073c072827dfd4

commit 6644e37a1da5c8745d69fccaa3073c072827dfd4
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Thu Sep 4 02:17:46 2014 +0530

    Add _POSIX namespace SYSCONF macros to conf.list
    
    This fixes the remaining -Wundef warnings.  Tested on x86_64.
    
    	* posix/conf.list: Add _POSIX sysconf namespace.
    	* sysdeps/posix/sysconf.c: Include confdefs.h.
    	(__sysconf): Use CONF_IS_* macros.

diff --git a/posix/conf.list b/posix/conf.list
index 3470895..8e947f4 100644
--- a/posix/conf.list
+++ b/posix/conf.list
@@ -14,6 +14,96 @@ SPEC:POSIX {
   V7_LPBIG_OFFBIG
 }
 
+SYSCONF:POSIX {
+  ADVISORY_INFO
+  ARG_MAX
+  ASYNCHRONOUS_IO
+  BARRIERS
+  BASE
+  CHILD_MAX
+  C_LANG_SUPPORT
+  C_LANG_SUPPORT_R
+  CLOCK_SELECTION
+  CPUTIME
+  DEVICE_IO
+  DEVICE_SPECIFIC
+  DEVICE_SPECIFIC_R
+  FD_MGMT
+  FIFO
+  FILE_ATTRIBUTES
+  FILE_LOCKING
+  FILE_SYSTEM
+  FSYNC
+  JOB_CONTROL
+  MAPPED_FILES
+  MEMLOCK
+  MEMLOCK_RANGE
+  MEMORY_PROTECTION
+  MESSAGE_PASSING
+  MONOTONIC_CLOCK
+  MULTI_PROCESS
+  NETWORKING
+  NGROUPS_MAX
+  OPEN_MAX
+  PII
+  PII_INTERNET
+  PII_INTERNET_DGRAM
+  PII_INTERNET_STREAM
+  PII_OSI
+  PII_OSI_CLTS
+  PII_OSI_COTS
+  PII_OSI_M
+  PII_SOCKET
+  PII_XTI
+  PIPE
+  POLL
+  PRIORITIZED_IO
+  PRIORITY_SCHEDULING
+  READER_WRITER_LOCKS
+  REALTIME_SIGNALS
+  REGEXP
+  SAVED_IDS
+  SELECT
+  SEMAPHORES
+  SHARED_MEMORY_OBJECTS
+  SHELL
+  SIGNALS
+  SINGLE_PROCESS
+  SPAWN
+  SPIN_LOCKS
+  SPORADIC_SERVER
+  SSIZE_MAX
+  STREAM_MAX
+  SYNCHRONIZED_IO
+  SYSTEM_DATABASE
+  SYSTEM_DATABASE_R
+  THREAD_ATTR_STACKADDR
+  THREAD_ATTR_STACKSIZE
+  THREAD_CPUTIME
+  THREAD_PRIO_INHERIT
+  THREAD_PRIO_PROTECT
+  THREAD_PRIORITY_SCHEDULING
+  THREAD_PROCESS_SHARED
+  THREADS
+  THREAD_SAFE_FUNCTIONS
+  THREAD_SPORADIC_SERVER
+  TIMEOUTS
+  TIMERS
+  TRACE
+  TRACE_EVENT_FILTER
+  TRACE_INHERIT
+  TRACE_LOG
+  TYPED_MEMORY_OBJECTS
+  TZNAME_MAX
+  USER_GROUPS
+  USER_GROUPS_R
+  VERSION
+# Additional variables not in getconf.
+  THREAD_DESTRUCTOR_ITERATIONS
+  IPV6
+  RAW_SOCKETS
+}
+
 SPEC:XBS5 {
   ILP32_OFF32
   ILP32_OFFBIG
diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c
index e815cd5..f5b65bf 100644
--- a/sysdeps/posix/sysconf.c
+++ b/sysdeps/posix/sysconf.c
@@ -31,6 +31,8 @@
 #include <sys/types.h>
 #include <regex.h>
 
+#include <confdefs.h>
+
 
 #define NEED_CHECK_SPEC \
   (!defined _XBS5_ILP32_OFF32 || !defined _XBS5_ILP32_OFFBIG \
@@ -95,112 +97,112 @@ __sysconf (name)
       return MAX (__tzname_max (), _POSIX_TZNAME_MAX);
 
     case _SC_JOB_CONTROL:
-#if _POSIX_JOB_CONTROL > 0
+#if CONF_IS_DEFINED_SET (_POSIX_JOB_CONTROL)
       return _POSIX_JOB_CONTROL;
 #else
       return -1;
 #endif
 
     case _SC_SAVED_IDS:
-#if _POSIX_SAVED_IDS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SAVED_IDS)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_REALTIME_SIGNALS:
-#if _POSIX_REALTIME_SIGNALS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_REALTIME_SIGNALS)
       return _POSIX_REALTIME_SIGNALS;
 #else
       return -1;
 #endif
 
     case _SC_PRIORITY_SCHEDULING:
-#if _POSIX_PRIORITY_SCHEDULING > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PRIORITY_SCHEDULING)
       return _POSIX_PRIORITY_SCHEDULING;
 #else
       return -1;
 #endif
 
     case _SC_TIMERS:
-#if _POSIX_TIMERS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TIMERS)
       return _POSIX_TIMERS;
 #else
       return -1;
 #endif
 
     case _SC_ASYNCHRONOUS_IO:
-#if _POSIX_ASYNCHRONOUS_IO > 0
+#if CONF_IS_DEFINED_SET (_POSIX_ASYNCHRONOUS_IO)
       return _POSIX_ASYNCHRONOUS_IO;
 #else
       return -1;
 #endif
 
     case _SC_PRIORITIZED_IO:
-#if _POSIX_PRIORITIZED_IO > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PRIORITIZED_IO)
       return _POSIX_PRIORITIZED_IO;
 #else
       return -1;
 #endif
 
     case _SC_SYNCHRONIZED_IO:
-#if _POSIX_SYNCHRONIZED_IO > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SYNCHRONIZED_IO)
       return _POSIX_SYNCHRONIZED_IO;
 #else
       return -1;
 #endif
 
     case _SC_FSYNC:
-#if _POSIX_FSYNC > 0
+#if CONF_IS_DEFINED_SET (_POSIX_FSYNC)
       return _POSIX_FSYNC;
 #else
       return -1;
 #endif
 
     case _SC_MAPPED_FILES:
-#if _POSIX_MAPPED_FILES > 0
+#if CONF_IS_DEFINED_SET (_POSIX_MAPPED_FILES)
       return _POSIX_MAPPED_FILES;
 #else
       return -1;
 #endif
 
     case _SC_MEMLOCK:
-#if _POSIX_MEMLOCK > 0
+#if CONF_IS_DEFINED_SET (_POSIX_MEMLOCK)
       return _POSIX_MEMLOCK;
 #else
       return -1;
 #endif
 
     case _SC_MEMLOCK_RANGE:
-#if _POSIX_MEMLOCK_RANGE > 0
+#if CONF_IS_DEFINED_SET (_POSIX_MEMLOCK_RANGE)
       return _POSIX_MEMLOCK_RANGE;
 #else
       return -1;
 #endif
 
     case _SC_MEMORY_PROTECTION:
-#if _POSIX_MEMORY_PROTECTION > 0
+#if CONF_IS_DEFINED_SET (_POSIX_MEMORY_PROTECTION)
       return _POSIX_MEMORY_PROTECTION;
 #else
       return -1;
 #endif
 
     case _SC_MESSAGE_PASSING:
-#if _POSIX_MESSAGE_PASSING > 0
+#if CONF_IS_DEFINED_SET (_POSIX_MESSAGE_PASSING)
       return _POSIX_MESSAGE_PASSING;
 #else
       return -1;
 #endif
 
     case _SC_SEMAPHORES:
-#if _POSIX_SEMAPHORES > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SEMAPHORES)
       return _POSIX_SEMAPHORES;
 #else
       return -1;
 #endif
 
     case _SC_SHARED_MEMORY_OBJECTS:
-#if _POSIX_SHARED_MEMORY_OBJECTS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SHARED_MEMORY_OBJECTS)
       return _POSIX_SHARED_MEMORY_OBJECTS;
 #else
       return -1;
@@ -353,49 +355,49 @@ __sysconf (name)
 #endif
 
     case _SC_PII:
-#if _POSIX_PII > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_XTI:
-#if _POSIX_PII_XTI > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_XTI)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_SOCKET:
-#if _POSIX_PII_SOCKET > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_SOCKET)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_INTERNET:
-#if _POSIX_PII_INTERNET > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_INTERNET)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_OSI:
-#if _POSIX_PII_OSI > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_OSI)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_POLL:
-#if _POSIX_POLL > 0
+#if CONF_IS_DEFINED_SET (_POSIX_POLL)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_SELECT:
-#if _POSIX_SELECT > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SELECT)
       return 1;
 #else
       return -1;
@@ -410,35 +412,35 @@ __sysconf (name)
 #endif
 
     case _SC_PII_INTERNET_STREAM:
-#if _POSIX_PII_INTERNET_STREAM > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_INTERNET_STREAM)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_INTERNET_DGRAM:
-#if _POSIX_PII_INTERNET_DGRAM > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_INTERNET_DGRAM)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_OSI_COTS:
-#if _POSIX_PII_OSI_COTS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_OSI_COTS)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_OSI_CLTS:
-#if _POSIX_PII_OSI_CLTS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_OSI_CLTS)
       return 1;
 #else
       return -1;
 #endif
 
     case _SC_PII_OSI_M:
-#if _POSIX_PII_OSI_M > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PII_OSI_M)
       return 1;
 #else
       return -1;
@@ -519,14 +521,14 @@ __sysconf (name)
 
       /* POSIX 1003.1c (POSIX Threads).  */
     case _SC_THREADS:
-#if _POSIX_THREADS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREADS)
       return _POSIX_THREADS;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_SAFE_FUNCTIONS:
-#if _POSIX_THREAD_SAFE_FUNCTIONS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_SAFE_FUNCTIONS)
       return _POSIX_THREAD_SAFE_FUNCTIONS;
 #else
       return -1;
@@ -553,7 +555,7 @@ __sysconf (name)
 #endif
 
     case _SC_THREAD_DESTRUCTOR_ITERATIONS:
-#if _POSIX_THREAD_DESTRUCTOR_ITERATIONS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_DESTRUCTOR_ITERATIONS)
       return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
 #else
       return -1;
@@ -581,42 +583,42 @@ __sysconf (name)
 #endif
 
     case _SC_THREAD_ATTR_STACKADDR:
-#if _POSIX_THREAD_ATTR_STACKADDR > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_ATTR_STACKADDR)
       return _POSIX_THREAD_ATTR_STACKADDR;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_ATTR_STACKSIZE:
-#if _POSIX_THREAD_ATTR_STACKSIZE > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_ATTR_STACKSIZE)
       return _POSIX_THREAD_ATTR_STACKSIZE;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_PRIORITY_SCHEDULING:
-#if _POSIX_THREAD_PRIORITY_SCHEDULING > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_PRIORITY_SCHEDULING)
       return _POSIX_THREAD_PRIORITY_SCHEDULING;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_PRIO_INHERIT:
-#if _POSIX_THREAD_PRIO_INHERIT > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_PRIO_INHERIT)
       return _POSIX_THREAD_PRIO_INHERIT;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_PRIO_PROTECT:
-#if _POSIX_THREAD_PRIO_PROTECT > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_PRIO_PROTECT)
       return _POSIX_THREAD_PRIO_PROTECT;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_PROCESS_SHARED:
-#if _POSIX_THREAD_PROCESS_SHARED > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_PROCESS_SHARED)
       return _POSIX_THREAD_PROCESS_SHARED;
 #else
       return -1;
@@ -833,152 +835,152 @@ __sysconf (name)
 #endif
 
     case _SC_ADVISORY_INFO:
-#if _POSIX_ADVISORY_INFO > 0
+#if CONF_IS_DEFINED_SET (_POSIX_ADVISORY_INFO)
       return _POSIX_ADVISORY_INFO;
 #else
       return -1;
 #endif
 
     case _SC_BARRIERS:
-#if _POSIX_BARRIERS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_BARRIERS)
       return _POSIX_BARRIERS;
 #else
       return -1;
 #endif
 
     case _SC_BASE:
-#if _POSIX_BASE > 0
+#if CONF_IS_DEFINED_SET (_POSIX_BASE)
       return _POSIX_BASE;
 #else
       return -1;
 #endif
     case _SC_C_LANG_SUPPORT:
-#if _POSIX_C_LANG_SUPPORT > 0
+#if CONF_IS_DEFINED_SET (_POSIX_C_LANG_SUPPORT)
       return _POSIX_C_LANG_SUPPORT;
 #else
       return -1;
 #endif
     case _SC_C_LANG_SUPPORT_R:
-#if _POSIX_C_LANG_SUPPORT_R > 0
+#if CONF_IS_DEFINED_SET (_POSIX_C_LANG_SUPPORT_R)
       return _POSIX_C_LANG_SUPPORT_R;
 #else
       return -1;
 #endif
 
     case _SC_CLOCK_SELECTION:
-#if _POSIX_CLOCK_SELECTION > 0
+#if CONF_IS_DEFINED_SET (_POSIX_CLOCK_SELECTION)
       return _POSIX_CLOCK_SELECTION;
 #else
       return -1;
 #endif
 
     case _SC_CPUTIME:
-#if _POSIX_CPUTIME > 0
+#if CONF_IS_DEFINED_SET (_POSIX_CPUTIME)
       return _POSIX_CPUTIME;
 #else
       return -1;
 #endif
 
     case _SC_DEVICE_IO:
-#if _POSIX_DEVICE_IO > 0
+#if CONF_IS_DEFINED_SET (_POSIX_DEVICE_IO)
       return _POSIX_DEVICE_IO;
 #else
       return -1;
 #endif
     case _SC_DEVICE_SPECIFIC:
-#if _POSIX_DEVICE_SPECIFIC > 0
+#if CONF_IS_DEFINED_SET (_POSIX_DEVICE_SPECIFIC)
       return _POSIX_DEVICE_SPECIFIC;
 #else
       return -1;
 #endif
     case _SC_DEVICE_SPECIFIC_R:
-#if _POSIX_DEVICE_SPECIFIC_R > 0
+#if CONF_IS_DEFINED_SET (_POSIX_DEVICE_SPECIFIC_R)
       return _POSIX_DEVICE_SPECIFIC_R;
 #else
       return -1;
 #endif
 
     case _SC_FD_MGMT:
-#if _POSIX_FD_MGMT > 0
+#if CONF_IS_DEFINED_SET (_POSIX_FD_MGMT)
       return _POSIX_FD_MGMT;
 #else
       return -1;
 #endif
 
     case _SC_FIFO:
-#if _POSIX_FIFO > 0
+#if CONF_IS_DEFINED_SET (_POSIX_FIFO)
       return _POSIX_FIFO;
 #else
       return -1;
 #endif
     case _SC_PIPE:
-#if _POSIX_PIPE > 0
+#if CONF_IS_DEFINED_SET (_POSIX_PIPE)
       return _POSIX_PIPE;
 #else
       return -1;
 #endif
 
     case _SC_FILE_ATTRIBUTES:
-#if _POSIX_FILE_ATTRIBUTES > 0
+#if CONF_IS_DEFINED_SET (_POSIX_FILE_ATTRIBUTES)
       return _POSIX_FILE_ATTRIBUTES;
 #else
       return -1;
 #endif
     case _SC_FILE_LOCKING:
-#if _POSIX_FILE_LOCKING > 0
+#if CONF_IS_DEFINED_SET (_POSIX_FILE_LOCKING)
       return _POSIX_FILE_LOCKING;
 #else
       return -1;
 #endif
     case _SC_FILE_SYSTEM:
-#if _POSIX_FILE_SYSTEM > 0
+#if CONF_IS_DEFINED_SET (_POSIX_FILE_SYSTEM)
       return _POSIX_FILE_SYSTEM;
 #else
       return -1;
 #endif
 
     case _SC_MONOTONIC_CLOCK:
-#if _POSIX_MONOTONIC_CLOCK
+#if CONF_IS_DEFINED_SET (_POSIX_MONOTONIC_CLOCK)
       return _POSIX_MONOTONIC_CLOCK;
 #else
       return -1;
 #endif
 
     case _SC_MULTI_PROCESS:
-#if _POSIX_MULTI_PROCESS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_MULTI_PROCESS)
       return _POSIX_MULTI_PROCESS;
 #else
       return -1;
 #endif
     case _SC_SINGLE_PROCESS:
-#if _POSIX_SINGLE_PROCESS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SINGLE_PROCESS)
       return _POSIX_SINGLE_PROCESS;
 #else
       return -1;
 #endif
 
     case _SC_NETWORKING:
-#if _POSIX_NETWORKING > 0
+#if CONF_IS_DEFINED_SET (_POSIX_NETWORKING)
       return _POSIX_NETWORKING;
 #else
       return -1;
 #endif
 
     case _SC_READER_WRITER_LOCKS:
-#if _POSIX_READER_WRITER_LOCKS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_READER_WRITER_LOCKS)
       return _POSIX_READER_WRITER_LOCKS;
 #else
       return -1;
 #endif
     case _SC_SPIN_LOCKS:
-#if _POSIX_SPIN_LOCKS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SPIN_LOCKS)
       return _POSIX_SPIN_LOCKS;
 #else
       return -1;
 #endif
 
     case _SC_REGEXP:
-#if _POSIX_REGEXP > 0
+#if CONF_IS_DEFINED_SET (_POSIX_REGEXP)
       return _POSIX_REGEXP;
 #else
       return -1;
@@ -989,81 +991,81 @@ __sysconf (name)
       return -1;
 
     case _SC_SHELL:
-#if _POSIX_SHELL > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SHELL)
       return _POSIX_SHELL;
 #else
       return -1;
 #endif
 
     case _SC_SIGNALS:
-#ifdef _POSIX_SIGNALS
+#if CONF_IS_DEFINED (_POSIX_SIGNALS)
       return _POSIX_SIGNALS;
 #else
       return -1;
 #endif
 
     case _SC_SPAWN:
-#if _POSIX_SPAWN > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SPAWN)
       return _POSIX_SPAWN;
 #else
       return -1;
 #endif
 
     case _SC_SPORADIC_SERVER:
-#if _POSIX_SPORADIC_SERVER > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SPORADIC_SERVER)
       return _POSIX_SPORADIC_SERVER;
 #else
       return -1;
 #endif
     case _SC_THREAD_SPORADIC_SERVER:
-#if _POSIX_THREAD_SPORADIC_SERVER > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_SPORADIC_SERVER)
       return _POSIX_THREAD_SPORADIC_SERVER;
 #else
       return -1;
 #endif
 
     case _SC_SYSTEM_DATABASE:
-#if _POSIX_SYSTEM_DATABASE > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SYSTEM_DATABASE)
       return _POSIX_SYSTEM_DATABASE;
 #else
       return -1;
 #endif
     case _SC_SYSTEM_DATABASE_R:
-#if _POSIX_SYSTEM_DATABASE_R > 0
+#if CONF_IS_DEFINED_SET (_POSIX_SYSTEM_DATABASE_R)
       return _POSIX_SYSTEM_DATABASE_R;
 #else
       return -1;
 #endif
 
     case _SC_THREAD_CPUTIME:
-#if _POSIX_THREAD_CPUTIME > 0
+#if CONF_IS_DEFINED_SET (_POSIX_THREAD_CPUTIME)
       return _POSIX_THREAD_CPUTIME;
 #else
       return -1;
 #endif
 
     case _SC_TIMEOUTS:
-#if _POSIX_TIMEOUTS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TIMEOUTS)
       return _POSIX_TIMEOUTS;
 #else
       return -1;
 #endif
 
     case _SC_TYPED_MEMORY_OBJECTS:
-#if _POSIX_TYPED_MEMORY_OBJECTS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TYPED_MEMORY_OBJECTS)
       return _POSIX_TYPED_MEMORY_OBJECTS;
 #else
       return -1;
 #endif
 
     case _SC_USER_GROUPS:
-#if _POSIX_USER_GROUPS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_USER_GROUPS)
       return _POSIX_USER_GROUPS;
 #else
       return -1;
 #endif
     case _SC_USER_GROUPS_R:
-#if _POSIX_USER_GROUPS_R > 0
+#if CONF_IS_DEFINED_SET (_POSIX_USER_GROUPS_R)
       return _POSIX_USER_GROUPS_R;
 #else
       return -1;
@@ -1128,25 +1130,25 @@ __sysconf (name)
 #endif
 
     case _SC_TRACE:
-#if _POSIX_TRACE > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TRACE)
       return _POSIX_TRACE;
 #else
       return -1;
 #endif
     case _SC_TRACE_EVENT_FILTER:
-#if _POSIX_TRACE_EVENT_FILTER > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TRACE_EVENT_FILTER)
       return _POSIX_TRACE_EVENT_FILTER;
 #else
       return -1;
 #endif
     case _SC_TRACE_INHERIT:
-#if _POSIX_TRACE_INHERIT > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TRACE_INHERIT)
       return _POSIX_TRACE_INHERIT;
 #else
       return -1;
 #endif
     case _SC_TRACE_LOG:
-#if _POSIX_TRACE_LOG > 0
+#if CONF_IS_DEFINED_SET (_POSIX_TRACE_LOG)
       return _POSIX_TRACE_LOG;
 #else
       return -1;
@@ -1183,14 +1185,14 @@ __sysconf (name)
       return 0;
 
     case _SC_IPV6:
-#if _POSIX_IPV6 > 0
+#if CONF_IS_DEFINED_SET (_POSIX_IPV6)
       return _POSIX_IPV6;
 #else
       return -1;
 #endif
 
     case _SC_RAW_SOCKETS:
-#if _POSIX_RAW_SOCKETS > 0
+#if CONF_IS_DEFINED_SET (_POSIX_RAW_SOCKETS)
       return _POSIX_RAW_SOCKETS;
 #else
       return -1;

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=f338c36269e4a2b87216db22b5bda71279f66a1d

commit f338c36269e4a2b87216db22b5bda71279f66a1d
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Wed Oct 1 14:34:08 2014 +0530

    Remove Wundef warnings for specification macros
    
    This patch adds a file conf.list that is used to generate macros to
    determine if a macro is defined as set, unset or not defined.
    gen-conf.awk processes this file and generates a header
    (confdefs-defs.h) with these macros.  A new header confdefs.h includes
    this generated header and defines accessor macros for the generated
    macros.
    
    Tested on x86_64.
    
    	* posix/Makefile (before-compile): Add confdefs-defs.h.
    	($(objpfx)confdefs-defs.h): New target.
    	* posix/conf.list: New file.
    	* posix/confdefs.h: New file.
    	* posix/confstr.c: Include confdefs.h.
    	(confstr): Use CONF_IS_* macros.
    	* posix/posix-envs.def: Include confdefs.h.  Use CONF_IS_*
    	macros.
    	* scripts/gen-conf.awk: New file.

diff --git a/posix/Makefile b/posix/Makefile
index faefaf1..8eea5ac 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -99,7 +99,7 @@ others		:= getconf
 install-bin	:= getconf
 install-others-programs	:= $(inst_libexecdir)/getconf
 
-before-compile	+= testcases.h ptestcases.h
+before-compile	+= testcases.h ptestcases.h confdefs-defs.h
 
 # So they get cleaned up.
 generated += $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
@@ -325,3 +325,8 @@ $(objpfx)getconf.speclist: getconf-speclist.c posix-envs.def
 # be built both makes it available for eyeball inspection and avoids the
 # surprise of things that look like compilation being done by 'make install'.
 others: $(objpfx)getconf.speclist
+
+$(objpfx)confdefs-defs.h: conf.list Makefile $(..)scripts/gen-conf.awk
+	$(make-target-directory)
+	$(AWK) -f $(..)scripts/gen-conf.awk $< > $@.tmp
+	mv -f $@.tmp $@
diff --git a/posix/conf.list b/posix/conf.list
new file mode 100644
index 0000000..3470895
--- /dev/null
+++ b/posix/conf.list
@@ -0,0 +1,22 @@
+# Configuration variables identified by getconf.  The heading of each section
+# is of the format TYPE:PREFIX with the opening curly brace on the same line.
+# TYPE can either be SYSCONF, PATHCONF, CONFSTR or SPEC.  Variable names are
+# put one on each line with a curly brace on its own line ending the section.
+
+SPEC:POSIX {
+  V6_ILP32_OFF32
+  V6_ILP32_OFFBIG
+  V6_LP64_OFF64
+  V6_LPBIG_OFFBIG
+  V7_ILP32_OFF32
+  V7_ILP32_OFFBIG
+  V7_LP64_OFF64
+  V7_LPBIG_OFFBIG
+}
+
+SPEC:XBS5 {
+  ILP32_OFF32
+  ILP32_OFFBIG
+  LP64_OFF64
+  LPBIG_OFFBIG
+}
diff --git a/posix/confdefs.h b/posix/confdefs.h
new file mode 100644
index 0000000..64f0e03
--- /dev/null
+++ b/posix/confdefs.h
@@ -0,0 +1,15 @@
+#ifndef __CONFDEFS_H__
+#define __CONFDEFS_H__
+
+#include <posix/confdefs-defs.h>
+
+#define CONF_DEF_UNDEFINED 1
+#define CONF_DEF_DEFINED_SET 2
+#define CONF_DEF_DEFINED_UNSET 3
+
+#define CONF_IS_DEFINED_SET(conf) (conf##_DEF == CONF_DEF_DEFINED_SET)
+#define CONF_IS_DEFINED_UNSET(conf) (conf##_DEF == CONF_DEF_DEFINED_UNSET)
+#define CONF_IS_UNDEFINED(conf) (conf##_DEF == CONF_DEF_UNDEFINED)
+#define CONF_IS_DEFINED(conf) (conf##_DEF != CONF_DEF_UNDEFINED)
+
+#endif
diff --git a/posix/confstr.c b/posix/confstr.c
index a2a1bf2..1accfee 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -21,6 +21,7 @@
 #include <string.h>
 #include <confstr.h>
 #include "../version.h"
+#include "confdefs.h"
 
 /* If BUF is not NULL and LEN > 0, fill in at most LEN - 1 bytes
    of BUF with the value corresponding to NAME and zero-terminate BUF.
@@ -100,9 +101,9 @@ confstr (name, buf, len)
     case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
     case _CS_POSIX_V7_ILP32_OFF32_CFLAGS:
 #ifdef __ILP32_OFF32_CFLAGS
-# if _POSIX_V7_ILP32_OFF32 == -1
+# if CONF_IS_DEFINED_UNSET (_POSIX_V7_ILP32_OFF32)
 #  error "__ILP32_OFF32_CFLAGS should not be defined"
-# elif !defined _POSIX_V7_ILP32_OFF32
+# elif CONF_IS_UNDEFINED (_POSIX_V7_ILP32_OFF32)
       if (__sysconf (_SC_V7_ILP32_OFF32) < 0)
 	break;
 # endif
@@ -115,9 +116,9 @@ confstr (name, buf, len)
     case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS:
     case _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS:
 #ifdef __ILP32_OFFBIG_CFLAGS
-# if _POSIX_V7_ILP32_OFFBIG == -1
+# if CONF_IS_DEFINED_UNSET (_POSIX_V7_ILP32_OFFBIG)
 #  error "__ILP32_OFFBIG_CFLAGS should not be defined"
-# elif !defined _POSIX_V7_ILP32_OFFBIG
+# elif CONF_IS_UNDEFINED (_POSIX_V7_ILP32_OFFBIG)
       if (__sysconf (_SC_V7_ILP32_OFFBIG) < 0)
 	break;
 # endif
@@ -130,9 +131,9 @@ confstr (name, buf, len)
     case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
     case _CS_POSIX_V7_LP64_OFF64_CFLAGS:
 #ifdef __LP64_OFF64_CFLAGS
-# if _POSIX_V7_LP64_OFF64 == -1
+# if CONF_IS_DEFINED_UNSET (_POSIX_V7_LP64_OFF64)
 #  error "__LP64_OFF64_CFLAGS should not be defined"
-# elif !defined _POSIX_V7_LP64_OFF64
+# elif CONF_IS_UNDEFINED (_POSIX_V7_LP64_OFF64)
       if (__sysconf (_SC_V7_LP64_OFF64) < 0)
 	break;
 # endif
@@ -145,9 +146,9 @@ confstr (name, buf, len)
     case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
     case _CS_POSIX_V7_ILP32_OFF32_LDFLAGS:
 #ifdef __ILP32_OFF32_LDFLAGS
-# if _POSIX_V7_ILP32_OFF32 == -1
+# if CONF_IS_DEFINED_UNSET (_POSIX_V7_ILP32_OFF32 )
 #  error "__ILP32_OFF32_LDFLAGS should not be defined"
-# elif !defined _POSIX_V7_ILP32_OFF32
+# elif CONF_IS_UNDEFINED (_POSIX_V7_ILP32_OFF32)
       if (__sysconf (_SC_V7_ILP32_OFF32) < 0)
 	break;
 # endif
@@ -160,9 +161,9 @@ confstr (name, buf, len)
     case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
     case _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS:
 #ifdef __ILP32_OFFBIG_LDFLAGS
-# if _POSIX_V7_ILP32_OFFBIG == -1
+# if CONF_IS_DEFINED_UNSET (_POSIX_V7_ILP32_OFFBIG)
 #  error "__ILP32_OFFBIG_LDFLAGS should not be defined"
-# elif !defined _POSIX_V7_ILP32_OFFBIG
+# elif CONF_IS_UNDEFINED (_POSIX_V7_ILP32_OFFBIG)
       if (__sysconf (_SC_V7_ILP32_OFFBIG) < 0)
 	break;
 # endif
@@ -175,9 +176,9 @@ confstr (name, buf, len)
     case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
     case _CS_POSIX_V7_LP64_OFF64_LDFLAGS:
 #ifdef __LP64_OFF64_LDFLAGS
-# if _POSIX_V7_LP64_OFF64 == -1
+# if CONF_IS_DEFINED_UNSET (_POSIX_V7_LP64_OFF64)
 #  error "__LP64_OFF64_LDFLAGS should not be defined"
-# elif !defined _POSIX_V7_LP64_OFF64
+# elif CONF_IS_UNDEFINED (_POSIX_V7_LP64_OFF64)
       if (__sysconf (_SC_V7_LP64_OFF64) < 0)
 	break;
 # endif
@@ -188,7 +189,8 @@ confstr (name, buf, len)
 
     case _CS_LFS_CFLAGS:
     case _CS_LFS_LINTFLAGS:
-#if _POSIX_V6_ILP32_OFF32 == 1 && _POSIX_V6_ILP32_OFFBIG == 1
+#if (CONF_IS_DEFINED_SET (_POSIX_V6_ILP32_OFF32) \
+     && CONF_IS_DEFINED_SET (_POSIX_V6_ILP32_OFFBIG))
 # define __LFS_CFLAGS "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
       /* Signal that we want the new ABI.  */
       string = __LFS_CFLAGS;
diff --git a/posix/posix-envs.def b/posix/posix-envs.def
index 05043e9..9047d0c 100644
--- a/posix/posix-envs.def
+++ b/posix/posix-envs.def
@@ -42,35 +42,37 @@
    defined.  These are called with arguments V5, V6, V7 before and
    after the relevant groups of environments.  */
 
+#include "confdefs.h"
+
 START_ENV_GROUP (V7)
 
-#if _POSIX_V7_ILP32_OFF32 > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V7_ILP32_OFF32)
 KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFF32)
-#elif defined _POSIX_V7_ILP32_OFF32
+#elif CONF_IS_DEFINED (_POSIX_V7_ILP32_OFF32)
 KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFF32)
 #else
 UNKNOWN_ENVIRONMENT (V7, POSIX_V7, ILP32_OFF32)
 #endif
 
-#if _POSIX_V7_ILP32_OFFBIG > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V7_ILP32_OFFBIG)
 KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFFBIG)
-#elif defined _POSIX_V7_ILP32_OFFBIG
+#elif CONF_IS_DEFINED (_POSIX_V7_ILP32_OFFBIG)
 KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFFBIG)
 #else
 UNKNOWN_ENVIRONMENT (V7, POSIX_V7, ILP32_OFFBIG)
 #endif
 
-#if _POSIX_V7_LP64_OFF64 > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V7_LP64_OFF64)
 KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, LP64_OFF64)
-#elif defined _POSIX_V7_LP64_OFF64
+#elif CONF_IS_DEFINED (_POSIX_V7_LP64_OFF64)
 KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, LP64_OFF64)
 #else
 UNKNOWN_ENVIRONMENT (V7, POSIX_V7, LP64_OFF64)
 #endif
 
-#if _POSIX_V7_LPBIG_OFFBIG > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V7_LPBIG_OFFBIG)
 KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, LPBIG_OFFBIG)
-#elif defined _POSIX_V7_LPBIG_OFFBIG
+#elif CONF_IS_DEFINED (_POSIX_V7_LPBIG_OFFBIG)
 KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, LPBIG_OFFBIG)
 #else
 UNKNOWN_ENVIRONMENT (V7, POSIX_V7, LPBIG_OFFBIG)
@@ -80,33 +82,33 @@ END_ENV_GROUP (V7)
 
 START_ENV_GROUP (V6)
 
-#if _POSIX_V6_ILP32_OFF32 > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V6_ILP32_OFF32)
 KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFF32)
-#elif defined _POSIX_V6_ILP32_OFF32
+#elif CONF_IS_DEFINED (_POSIX_V6_ILP32_OFF32)
 KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFF32)
 #else
 UNKNOWN_ENVIRONMENT (V6, POSIX_V6, ILP32_OFF32)
 #endif
 
-#if _POSIX_V6_ILP32_OFFBIG > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V6_ILP32_OFFBIG)
 KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFFBIG)
-#elif defined _POSIX_V6_ILP32_OFFBIG
+#elif CONF_IS_DEFINED (_POSIX_V6_ILP32_OFFBIG)
 KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFFBIG)
 #else
 UNKNOWN_ENVIRONMENT (V6, POSIX_V6, ILP32_OFFBIG)
 #endif
 
-#if _POSIX_V6_LP64_OFF64 > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V6_LP64_OFF64)
 KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, LP64_OFF64)
-#elif defined _POSIX_V6_LP64_OFF64
+#elif CONF_IS_DEFINED (_POSIX_V6_LP64_OFF64)
 KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, LP64_OFF64)
 #else
 UNKNOWN_ENVIRONMENT (V6, POSIX_V6, LP64_OFF64)
 #endif
 
-#if _POSIX_V6_LPBIG_OFFBIG > 0
+#if CONF_IS_DEFINED_SET (_POSIX_V6_LPBIG_OFFBIG)
 KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, LPBIG_OFFBIG)
-#elif defined _POSIX_V6_LPBIG_OFFBIG
+#elif CONF_IS_DEFINED (_POSIX_V6_LPBIG_OFFBIG)
 KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, LPBIG_OFFBIG)
 #else
 UNKNOWN_ENVIRONMENT (V6, POSIX_V6, LPBIG_OFFBIG)
@@ -116,33 +118,33 @@ END_ENV_GROUP (V6)
 
 START_ENV_GROUP (V5)
 
-#if _XBS5_ILP32_OFF32 > 0
+#if CONF_IS_DEFINED_SET (_XBS5_ILP32_OFF32)
 KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFF32)
-#elif defined _XBS5_ILP32_OFF32
+#elif CONF_IS_DEFINED (_XBS5_ILP32_OFF32)
 KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFF32)
 #else
 UNKNOWN_ENVIRONMENT (XBS5, XBS5, ILP32_OFF32)
 #endif
 
-#if _XBS5_ILP32_OFFBIG > 0
+#if CONF_IS_DEFINED_SET (_XBS5_ILP32_OFFBIG)
 KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFFBIG)
-#elif defined _XBS5_ILP32_OFFBIG
+#elif CONF_IS_DEFINED (_XBS5_ILP32_OFFBIG)
 KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFFBIG)
 #else
 UNKNOWN_ENVIRONMENT (XBS5, XBS5, ILP32_OFFBIG)
 #endif
 
-#if _XBS5_LP64_OFF64 > 0
+#if CONF_IS_DEFINED_SET (_XBS5_LP64_OFF64)
 KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, LP64_OFF64)
-#elif defined _XBS5_LP64_OFF64
+#elif CONF_IS_DEFINED (_XBS5_LP64_OFF64)
 KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, LP64_OFF64)
 #else
 UNKNOWN_ENVIRONMENT (XBS5, XBS5, LP64_OFF64)
 #endif
 
-#if _XBS5_LPBIG_OFFBIG > 0
+#if CONF_IS_DEFINED_SET (_XBS5_LPBIG_OFFBIG)
 KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, LPBIG_OFFBIG)
-#elif defined _XBS5_LPBIG_OFFBIG
+#elif CONF_IS_DEFINED (_XBS5_LPBIG_OFFBIG)
 KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, LPBIG_OFFBIG)
 #else
 UNKNOWN_ENVIRONMENT (XBS5, XBS5, LPBIG_OFFBIG)
diff --git a/scripts/gen-conf.awk b/scripts/gen-conf.awk
new file mode 100644
index 0000000..45a4d44
--- /dev/null
+++ b/scripts/gen-conf.awk
@@ -0,0 +1,63 @@
+# Generate confdefs-defs.h with definitions for {CONF}_DEF for each
+# configuration variable that getconf or sysconf may use.  Currently it is
+# equipped only to generate such macros for specification macros and for
+# SYSCONF macros in the _POSIX namespace.
+
+BEGIN {
+  PROCINFO["sorted_in"] = "@val_type_asc"
+  prefix = ""
+}
+
+$1 ~ /^#/ || $0 ~ /^\s*$/ {
+  next
+}
+
+# Begin a new prefix.
+$2 == "{" {
+  split ($1, arr, ":")
+  type = arr[1]
+  prefix = arr[2]
+  next
+}
+
+$1 == "}" {
+  prefix = ""
+  type = ""
+  next
+}
+
+{
+  if (prefix == "" && type == "" && sc_prefix == "") {
+    print "Syntax error" > "/dev/stderr"
+    exit 1
+  }
+
+  # The prefix and variable names are indices and the value indicates what type
+  # of variable it is.  The possible options are:
+  # CONFSTR: A configuration string
+  # SYSCONF: A numeric value
+  # SPEC: A specification
+  conf[prefix][$1] = type
+}
+
+ENDFILE {
+  print "/* Autogenerated by gen-conf.awk.  */\n"
+
+  # Generate macros that specify if a sysconf macro is defined and/or set.
+  for (p in conf) {
+    for (c in conf[p]) {
+      printf "#ifndef _%s_%s\n", p, c
+      printf "# define _%s_%s_DEF CONF_DEF_UNDEFINED\n", p, c
+      # CONFSTR have string values and they are not set or unset.
+      if (conf[p][c] != "CONFSTR") {
+	printf "#else\n"
+	printf "# if _%s_%s > 0\n", p, c
+	printf "#  define _%s_%s_DEF CONF_DEF_DEFINED_SET\n", p, c
+	printf "# else\n"
+	printf "#  define _%s_%s_DEF CONF_DEF_DEFINED_UNSET\n", p, c
+	printf "# endif\n"
+      }
+      printf "#endif\n\n"
+    }
+  }
+}

-----------------------------------------------------------------------


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]