summaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-12-29 17:40:47 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-12-29 19:56:27 +0530
commit50cbbaa935e92dc570fc899a17669cd6782b09cd (patch)
treeb3df9300b25996e350aaf3774f11c5d8e0ee4a7d /posix
parent3b566046c3e8cb252f4c0ab7b6041fef5098f1a5 (diff)
downloadglibc-50cbbaa935e92dc570fc899a17669cd6782b09cd.tar.gz
Use posix-conf-vars.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 posix-conf-vars.list once the remaining macros are added to it. * posix/posix-conf-vars.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-posix-conf-vars.awk: Support generation of specs array.
Diffstat (limited to 'posix')
-rw-r--r--posix/confstr.c2
-rw-r--r--posix/getconf.c20
-rw-r--r--posix/posix-conf-vars.list9
-rw-r--r--posix/posix-envs.def1
4 files changed, 11 insertions, 21 deletions
diff --git a/posix/confstr.c b/posix/confstr.c
index e4e0f4bdec..244a25c93f 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -21,6 +21,8 @@
#include <string.h>
#include <confstr.h>
#include "../version.h"
+
+#define NEED_SPEC_ARRAY 0
#include <posix-conf-vars.h>
/* If BUF is not NULL and LEN > 0, fill in at most LEN - 1 bytes
diff --git a/posix/getconf.c b/posix/getconf.c
index 14d51d87ac..bcde4c58a1 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 <posix-conf-vars.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-conf-vars.list b/posix/posix-conf-vars.list
index 3e7e7cdaa9..601bc2fd33 100644
--- a/posix/posix-conf-vars.list
+++ b/posix/posix-conf-vars.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
@@ -104,7 +105,7 @@ SYSCONF POSIX {
RAW_SOCKETS
}
-SPEC XBS5 {
+SPEC XBS5 _SC_XBS5 {
ILP32_OFF32
ILP32_OFFBIG
LP64_OFF64
diff --git a/posix/posix-envs.def b/posix/posix-envs.def
index 870d85a7db..fa271bbfc4 100644
--- a/posix/posix-envs.def
+++ b/posix/posix-envs.def
@@ -42,6 +42,7 @@
defined. These are called with arguments V5, V6, V7 before and
after the relevant groups of environments. */
+#define NEED_SPEC_ARRAY 0
#include <posix-conf-vars.h>
START_ENV_GROUP (V7)