public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] tunables: sort tunables list (BZ 30027)
@ 2024-06-12 20:20 DJ Delorie
  0 siblings, 0 replies; only message in thread
From: DJ Delorie @ 2024-06-12 20:20 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8859607eaa068a3aaa7df7f54eff186b25ecdad0

commit 8859607eaa068a3aaa7df7f54eff186b25ecdad0
Author: DJ Delorie <dj@redhat.com>
Date:   Tue Jun 11 19:28:36 2024 -0400

    tunables: sort tunables list (BZ 30027)
    
    Sort tunables list at the time it's generated.  Note: adding new
    tunables will cause other tunable IDs to change, but that was
    the case before anyway.  POSIX does not guarantee the order of "foo
    in bar" AWK operators, so the order was indeterminate before anyway.
    Even depending on the order to be the same across multiple calls,
    such as in this script, is undefined, so sorting the list resolves
    that also.
    
    Note that sorting is not dependent on the user's locale.

Diff:
---
 Makeconfig               |  2 +-
 scripts/gen-tunables.awk | 14 +++++++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/Makeconfig b/Makeconfig
index 29819363da..2d4343b604 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1265,7 +1265,7 @@ $(common-objpfx)dl-tunable-list.stmp: \
 		$(..)elf/dl-tunables.list \
 		$(wildcard $(subdirs:%=$(..)%/dl-tunables.list)) \
 		$(wildcard $(sysdirs:%=%/dl-tunables.list))
-	$(AWK) -f $^ > ${@:stmp=T}
+	LC_ALL=C $(AWK) -f $^ > ${@:stmp=T}
 	$(move-if-change) ${@:stmp=T} ${@:stmp=h}
 	touch $@
 
diff --git a/scripts/gen-tunables.awk b/scripts/gen-tunables.awk
index fc3b41376f..d9f326b63b 100644
--- a/scripts/gen-tunables.awk
+++ b/scripts/gen-tunables.awk
@@ -131,6 +131,11 @@ END {
     exit 1
   }
 
+  # TYPES is an associative array where the index is the data
+  # TYPESA is an indexed array where the value is the data
+  # We sort TYPESA
+  typecount = asorti (types, typesa)
+
   print "/* AUTOGENERATED by gen-tunables.awk.  */"
   print "#ifndef _TUNABLES_H_"
   print "# error \"Do not include this file directly.\""
@@ -141,7 +146,8 @@ END {
   # Now, the enum names
   print "\ntypedef enum"
   print "{"
-  for (tnm in types) {
+  for (i = 1; i <= typecount; i++) {
+    tnm = typesa[i];
     split (tnm, indices, SUBSEP);
     t = indices[1];
     n = indices[2];
@@ -157,7 +163,8 @@ END {
   print "# include \"dl-tunable-types.h\""
   # Finally, the tunable list.
   print "static tunable_t tunable_list[] attribute_relro __attribute_used__ = {"
-  for (tnm in types) {
+  for (i = 1; i <= typecount; i++) {
+    tnm = typesa[i];
     split (tnm, indices, SUBSEP);
     t = indices[1];
     n = indices[2];
@@ -172,7 +179,8 @@ END {
   # Map of tunable with environment variables aliases used during parsing.  */
   print "\nstatic const tunable_id_t tunable_env_alias_list[] ="
   printf "{\n"
-  for (tnm in types) {
+  for (i = 1; i <= typecount; i++) {
+    tnm = typesa[i];
     split (tnm, indices, SUBSEP);
     t = indices[1];
     n = indices[2];

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-06-12 20:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-12 20:20 [glibc] tunables: sort tunables list (BZ 30027) DJ Delorie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).