Index: radix-1.9/X11/X.org/lib/libXau/1.0.11/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libXau/1.0.11/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libXau/1.0.11/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libXau
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
REQUIRES += X11/X.org/proto/xorgproto/2022.2
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libXau/1.0.11-ppc32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libXau/1.0.11-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libXau/1.0.11-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libXau
REQUIRES = X11/X.org/lib/libXau/1.0.11
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libXau/1.0.11-x86_32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libXau/1.0.11-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libXau/1.0.11-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libXau
REQUIRES = X11/X.org/lib/libXau/1.0.11
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libXdmcp/1.1.4/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libXdmcp/1.1.4/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libXdmcp/1.1.4/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libXdmcp
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
REQUIRES += X11/X.org/proto/xorgproto/2022.2
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libXdmcp/1.1.4-ppc32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libXdmcp/1.1.4-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libXdmcp/1.1.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libXdmcp
REQUIRES = X11/X.org/lib/libXdmcp/1.1.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libXdmcp/1.1.4-x86_32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libXdmcp/1.1.4-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libXdmcp/1.1.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libXdmcp
REQUIRES = X11/X.org/lib/libXdmcp/1.1.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libxshmfence/1.3.2-ppc32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libxshmfence/1.3.2-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libxshmfence/1.3.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libxshmfence
REQUIRES = X11/X.org/lib/libxshmfence/1.3.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/libxshmfence/1.3.2-x86_32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/libxshmfence/1.3.2-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/libxshmfence/1.3.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/X.org/lib/libxshmfence
REQUIRES = X11/X.org/lib/libxshmfence/1.3.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/pixman/0.42.2/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/pixman/0.42.2/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/pixman/0.42.2/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/X.org/lib/pixman
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
REQUIRES += X11/X.org/proto/xorgproto/2022.2
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/pixman/0.42.2-ppc32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/pixman/0.42.2-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/pixman/0.42.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/X.org/lib/pixman
REQUIRES = X11/X.org/lib/pixman/0.42.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/pixman/0.42.2-x86_32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/pixman/0.42.2-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/pixman/0.42.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/X.org/lib/pixman
REQUIRES = X11/X.org/lib/pixman/0.42.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/xtrans/1.4.0/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/xtrans/1.4.0/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/xtrans/1.4.0/Makefile (revision 35)
@@ -56,7 +56,7 @@
SOURCE_REQUIRES = sources/X.org/lib/xtrans
REQUIRES = X11/X.org/proto/xorgproto/2022.2
-REQUIRES += libs/glibc/2.36
+REQUIRES += libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/xtrans/1.4.0-ppc32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/xtrans/1.4.0-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/xtrans/1.4.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/X.org/lib/xtrans
REQUIRES = X11/X.org/lib/xtrans/1.4.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/lib/xtrans/1.4.0-x86_32/Makefile
===================================================================
--- radix-1.9/X11/X.org/lib/xtrans/1.4.0-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/lib/xtrans/1.4.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/X.org/lib/xtrans
REQUIRES = X11/X.org/lib/xtrans/1.4.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/util/makedepend/1.0.8/Makefile
===================================================================
--- radix-1.9/X11/X.org/util/makedepend/1.0.8/Makefile (revision 34)
+++ radix-1.9/X11/X.org/util/makedepend/1.0.8/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/X.org/util/makedepend
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
REQUIRES += X11/X.org/proto/xorgproto/2022.2
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/util/util-macros/1.19.3/Makefile
===================================================================
--- radix-1.9/X11/X.org/util/util-macros/1.19.3/Makefile (revision 34)
+++ radix-1.9/X11/X.org/util/util-macros/1.19.3/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4/Makefile
===================================================================
--- radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4/Makefile (revision 34)
+++ radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4-ppc32/Makefile
===================================================================
--- radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/X.org/xcb/libpthread-stubs
REQUIRES = X11/X.org/xcb/libpthread-stubs/0.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4-x86_32/Makefile
===================================================================
--- radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/X.org/xcb/libpthread-stubs/0.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/X.org/xcb/libpthread-stubs
REQUIRES = X11/X.org/xcb/libpthread-stubs/0.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/libdrm/2.4.114/Makefile
===================================================================
--- radix-1.9/X11/libs/libdrm/2.4.114/Makefile (revision 34)
+++ radix-1.9/X11/libs/libdrm/2.4.114/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC) \
Index: radix-1.9/X11/libs/mtdev/1.1.6/Makefile
===================================================================
--- radix-1.9/X11/libs/mtdev/1.1.6/Makefile (revision 34)
+++ radix-1.9/X11/libs/mtdev/1.1.6/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/mtdev/1.1.6-ppc32/Makefile
===================================================================
--- radix-1.9/X11/libs/mtdev/1.1.6-ppc32/Makefile (revision 34)
+++ radix-1.9/X11/libs/mtdev/1.1.6-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/x/mtdev
REQUIRES = X11/libs/mtdev/1.1.6
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/mtdev/1.1.6-x86_32/Makefile
===================================================================
--- radix-1.9/X11/libs/mtdev/1.1.6-x86_32/Makefile (revision 34)
+++ radix-1.9/X11/libs/mtdev/1.1.6-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/x/mtdev
REQUIRES = X11/libs/mtdev/1.1.6
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/vulkan/vulkan-headers/1.3.239.0/Makefile
===================================================================
--- radix-1.9/X11/libs/vulkan/vulkan-headers/1.3.239.0/Makefile (revision 34)
+++ radix-1.9/X11/libs/vulkan/vulkan-headers/1.3.239.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/attr/2.5.1/Makefile
===================================================================
--- radix-1.9/app/attr/2.5.1/Makefile (revision 34)
+++ radix-1.9/app/attr/2.5.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/attr/2.5.1-ppc32/Makefile
===================================================================
--- radix-1.9/app/attr/2.5.1-ppc32/Makefile (revision 34)
+++ radix-1.9/app/attr/2.5.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/attr
REQUIRES = app/attr/2.5.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/attr/2.5.1-x86_32/Makefile
===================================================================
--- radix-1.9/app/attr/2.5.1-x86_32/Makefile (revision 34)
+++ radix-1.9/app/attr/2.5.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/attr
REQUIRES = app/attr/2.5.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/bin/4.11.2/Makefile
===================================================================
--- radix-1.9/app/bin/4.11.2/Makefile (revision 34)
+++ radix-1.9/app/bin/4.11.2/Makefile (revision 35)
@@ -63,7 +63,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/bzip2/1.0.8/Makefile
===================================================================
--- radix-1.9/app/bzip2/1.0.8/Makefile (revision 34)
+++ radix-1.9/app/bzip2/1.0.8/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/a/bzip2
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/bzip2/1.0.8-ppc32/Makefile
===================================================================
--- radix-1.9/app/bzip2/1.0.8-ppc32/Makefile (revision 34)
+++ radix-1.9/app/bzip2/1.0.8-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/bzip2
REQUIRES = app/bzip2/1.0.8
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/bzip2/1.0.8-x86_32/Makefile
===================================================================
--- radix-1.9/app/bzip2/1.0.8-x86_32/Makefile (revision 34)
+++ radix-1.9/app/bzip2/1.0.8-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/bzip2
REQUIRES = app/bzip2/1.0.8
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/c2man/2.0.42/Makefile
===================================================================
--- radix-1.9/app/c2man/2.0.42/Makefile (revision 34)
+++ radix-1.9/app/c2man/2.0.42/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/a/c2man
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/ctags/5.8/Makefile
===================================================================
--- radix-1.9/app/ctags/5.8/Makefile (revision 34)
+++ radix-1.9/app/ctags/5.8/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/ctags/5.8-ppc32/Makefile
===================================================================
--- radix-1.9/app/ctags/5.8-ppc32/Makefile (revision 34)
+++ radix-1.9/app/ctags/5.8-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/ctags
REQUIRES = app/ctags/5.8
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/ctags/5.8-x86_32/Makefile
===================================================================
--- radix-1.9/app/ctags/5.8-x86_32/Makefile (revision 34)
+++ radix-1.9/app/ctags/5.8-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/ctags
REQUIRES = app/ctags/5.8
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/db/18.1.40/Makefile
===================================================================
--- radix-1.9/app/db/18.1.40/Makefile (revision 34)
+++ radix-1.9/app/db/18.1.40/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/db/18.1.40-ppc32/Makefile
===================================================================
--- radix-1.9/app/db/18.1.40-ppc32/Makefile (revision 34)
+++ radix-1.9/app/db/18.1.40-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/db
REQUIRES = app/db/18.1.40
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/db/18.1.40-x86_32/Makefile
===================================================================
--- radix-1.9/app/db/18.1.40-x86_32/Makefile (revision 34)
+++ radix-1.9/app/db/18.1.40-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/db
REQUIRES = app/db/18.1.40
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/dcron/4.5/Makefile
===================================================================
--- radix-1.9/app/dcron/4.5/Makefile (revision 34)
+++ radix-1.9/app/dcron/4.5/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/diffutils/3.8/Makefile
===================================================================
--- radix-1.9/app/diffutils/3.8/Makefile (revision 34)
+++ radix-1.9/app/diffutils/3.8/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/ed/1.17/Makefile
===================================================================
--- radix-1.9/app/ed/1.17/Makefile (revision 34)
+++ radix-1.9/app/ed/1.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/efivar/38/Makefile
===================================================================
--- radix-1.9/app/efivar/38/Makefile (revision 34)
+++ radix-1.9/app/efivar/38/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/findutils/4.8.0/Makefile
===================================================================
--- radix-1.9/app/findutils/4.8.0/Makefile (revision 34)
+++ radix-1.9/app/findutils/4.8.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/gzip/1.10/Makefile
===================================================================
--- radix-1.9/app/gzip/1.10/Makefile (revision 34)
+++ radix-1.9/app/gzip/1.10/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/hdparm/9.60/Makefile
===================================================================
--- radix-1.9/app/hdparm/9.60/Makefile (revision 34)
+++ radix-1.9/app/hdparm/9.60/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/inih/53/Makefile
===================================================================
--- radix-1.9/app/inih/53/Makefile (revision 34)
+++ radix-1.9/app/inih/53/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/inih/53-ppc32/Makefile
===================================================================
--- radix-1.9/app/inih/53-ppc32/Makefile (revision 34)
+++ radix-1.9/app/inih/53-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/inih
REQUIRES = app/inih/53
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/inih/53-x86_32/Makefile
===================================================================
--- radix-1.9/app/inih/53-x86_32/Makefile (revision 34)
+++ radix-1.9/app/inih/53-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/inih
REQUIRES = app/inih/53
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/inputattach/1.8.1/Makefile
===================================================================
--- radix-1.9/app/inputattach/1.8.1/Makefile (revision 34)
+++ radix-1.9/app/inputattach/1.8.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/inputattach/1.8.1-ppc32/Makefile
===================================================================
--- radix-1.9/app/inputattach/1.8.1-ppc32/Makefile (revision 34)
+++ radix-1.9/app/inputattach/1.8.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/linuxconsole
REQUIRES = app/inputattach/1.8.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/inputattach/1.8.1-x86_32/Makefile
===================================================================
--- radix-1.9/app/inputattach/1.8.1-x86_32/Makefile (revision 34)
+++ radix-1.9/app/inputattach/1.8.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/linuxconsole
REQUIRES = app/inputattach/1.8.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/jbigkit/2.1/Makefile
===================================================================
--- radix-1.9/app/jbigkit/2.1/Makefile (revision 34)
+++ radix-1.9/app/jbigkit/2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/jbigkit/2.1-ppc32/Makefile
===================================================================
--- radix-1.9/app/jbigkit/2.1-ppc32/Makefile (revision 34)
+++ radix-1.9/app/jbigkit/2.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/jbigkit
REQUIRES = app/jbigkit/2.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/jbigkit/2.1-x86_32/Makefile
===================================================================
--- radix-1.9/app/jbigkit/2.1-x86_32/Makefile (revision 34)
+++ radix-1.9/app/jbigkit/2.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/jbigkit
REQUIRES = app/jbigkit/2.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/lzip/1.22/Makefile
===================================================================
--- radix-1.9/app/lzip/1.22/Makefile (revision 34)
+++ radix-1.9/app/lzip/1.22/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/mdadm/4.1/Makefile
===================================================================
--- radix-1.9/app/mdadm/4.1/Makefile (revision 34)
+++ radix-1.9/app/mdadm/4.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/mtools/4.0.26/Makefile
===================================================================
--- radix-1.9/app/mtools/4.0.26/Makefile (revision 34)
+++ radix-1.9/app/mtools/4.0.26/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/ncompress/4.2.4.6/Makefile
===================================================================
--- radix-1.9/app/ncompress/4.2.4.6/Makefile (revision 34)
+++ radix-1.9/app/ncompress/4.2.4.6/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/patchelf/0.18.0/Makefile
===================================================================
--- radix-1.9/app/patchelf/0.18.0/Makefile (revision 34)
+++ radix-1.9/app/patchelf/0.18.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/sharutils/4.15.2/Makefile
===================================================================
--- radix-1.9/app/sharutils/4.15.2/Makefile (revision 34)
+++ radix-1.9/app/sharutils/4.15.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/sysklogd/2.2.1/Makefile
===================================================================
--- radix-1.9/app/sysklogd/2.2.1/Makefile (revision 34)
+++ radix-1.9/app/sysklogd/2.2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/sysvinit/2.99/Makefile
===================================================================
--- radix-1.9/app/sysvinit/2.99/Makefile (revision 34)
+++ radix-1.9/app/sysvinit/2.99/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/tree/1.8.0/Makefile
===================================================================
--- radix-1.9/app/tree/1.8.0/Makefile (revision 34)
+++ radix-1.9/app/tree/1.8.0/Makefile (revision 35)
@@ -59,7 +59,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/utempter/1.2.1/Makefile
===================================================================
--- radix-1.9/app/utempter/1.2.1/Makefile (revision 34)
+++ radix-1.9/app/utempter/1.2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/utempter/1.2.1-ppc32/Makefile
===================================================================
--- radix-1.9/app/utempter/1.2.1-ppc32/Makefile (revision 34)
+++ radix-1.9/app/utempter/1.2.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/utempter
REQUIRES = app/utempter/1.2.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/utempter/1.2.1-x86_32/Makefile
===================================================================
--- radix-1.9/app/utempter/1.2.1-x86_32/Makefile (revision 34)
+++ radix-1.9/app/utempter/1.2.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/utempter
REQUIRES = app/utempter/1.2.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/which/2.21/Makefile
===================================================================
--- radix-1.9/app/which/2.21/Makefile (revision 34)
+++ radix-1.9/app/which/2.21/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/xz/5.2.7/Makefile
===================================================================
--- radix-1.9/app/xz/5.2.7/Makefile (revision 34)
+++ radix-1.9/app/xz/5.2.7/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/a/xz
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/xz/5.2.7-ppc32/Makefile
===================================================================
--- radix-1.9/app/xz/5.2.7-ppc32/Makefile (revision 34)
+++ radix-1.9/app/xz/5.2.7-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/xz
REQUIRES = app/xz/5.2.7
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/xz/5.2.7-x86_32/Makefile
===================================================================
--- radix-1.9/app/xz/5.2.7-x86_32/Makefile (revision 34)
+++ radix-1.9/app/xz/5.2.7-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/xz
REQUIRES = app/xz/5.2.7
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/bison/3.7.4/Makefile
===================================================================
--- radix-1.9/dev/bison/3.7.4/Makefile (revision 34)
+++ radix-1.9/dev/bison/3.7.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/bison/3.7.4-ppc32/Makefile
===================================================================
--- radix-1.9/dev/bison/3.7.4-ppc32/Makefile (revision 34)
+++ radix-1.9/dev/bison/3.7.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/bison
REQUIRES = dev/bison/3.7.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/bison/3.7.4-x86_32/Makefile
===================================================================
--- radix-1.9/dev/bison/3.7.4-x86_32/Makefile (revision 34)
+++ radix-1.9/dev/bison/3.7.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/bison
REQUIRES = dev/bison/3.7.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/check/0.15.2/Makefile
===================================================================
--- radix-1.9/dev/check/0.15.2/Makefile (revision 34)
+++ radix-1.9/dev/check/0.15.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/check/0.15.2-ppc32/Makefile
===================================================================
--- radix-1.9/dev/check/0.15.2-ppc32/Makefile (revision 34)
+++ radix-1.9/dev/check/0.15.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/d/check
REQUIRES = dev/check/0.15.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/check/0.15.2-x86_32/Makefile
===================================================================
--- radix-1.9/dev/check/0.15.2-x86_32/Makefile (revision 34)
+++ radix-1.9/dev/check/0.15.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/d/check
REQUIRES = dev/check/0.15.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/flex/2.6.4/Makefile
===================================================================
--- radix-1.9/dev/flex/2.6.4/Makefile (revision 34)
+++ radix-1.9/dev/flex/2.6.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/flex/2.6.4-ppc32/Makefile
===================================================================
--- radix-1.9/dev/flex/2.6.4-ppc32/Makefile (revision 34)
+++ radix-1.9/dev/flex/2.6.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/d/flex
REQUIRES = dev/flex/2.6.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/flex/2.6.4-x86_32/Makefile
===================================================================
--- radix-1.9/dev/flex/2.6.4-x86_32/Makefile (revision 34)
+++ radix-1.9/dev/flex/2.6.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/d/flex
REQUIRES = dev/flex/2.6.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/git/2.34.1/Makefile
===================================================================
--- radix-1.9/dev/git/2.34.1/Makefile (revision 34)
+++ radix-1.9/dev/git/2.34.1/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/d/git
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
REQUIRES += app/grep/3.6
REQUIRES += libs/pcre2/10.36
Index: radix-1.9/dev/gperf/3.1/Makefile
===================================================================
--- radix-1.9/dev/gperf/3.1/Makefile (revision 34)
+++ radix-1.9/dev/gperf/3.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/libtool/2.4.6/Makefile
===================================================================
--- radix-1.9/dev/libtool/2.4.6/Makefile (revision 34)
+++ radix-1.9/dev/libtool/2.4.6/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/libtool/2.4.6-ppc32/Makefile
===================================================================
--- radix-1.9/dev/libtool/2.4.6-ppc32/Makefile (revision 34)
+++ radix-1.9/dev/libtool/2.4.6-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/libtool
REQUIRES = dev/libtool/2.4.6
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/libtool/2.4.6-x86_32/Makefile
===================================================================
--- radix-1.9/dev/libtool/2.4.6-x86_32/Makefile (revision 34)
+++ radix-1.9/dev/libtool/2.4.6-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/libtool
REQUIRES = dev/libtool/2.4.6
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/m4/1.4.19/Makefile
===================================================================
--- radix-1.9/dev/m4/1.4.19/Makefile (revision 34)
+++ radix-1.9/dev/m4/1.4.19/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/GNU/m4
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/ninja/1.10.2/Makefile
===================================================================
--- radix-1.9/dev/ninja/1.10.2/Makefile (revision 34)
+++ radix-1.9/dev/ninja/1.10.2/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/d/ninja
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/orc/0.4.33.1/Makefile
===================================================================
--- radix-1.9/dev/orc/0.4.33.1/Makefile (revision 34)
+++ radix-1.9/dev/orc/0.4.33.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/orc/0.4.33.1-ppc32/Makefile
===================================================================
--- radix-1.9/dev/orc/0.4.33.1-ppc32/Makefile (revision 34)
+++ radix-1.9/dev/orc/0.4.33.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/d/orc
REQUIRES = dev/orc/0.4.33.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/orc/0.4.33.1-x86_32/Makefile
===================================================================
--- radix-1.9/dev/orc/0.4.33.1-x86_32/Makefile (revision 34)
+++ radix-1.9/dev/orc/0.4.33.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/d/orc
REQUIRES = dev/orc/0.4.33.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/dev/re2c/2.2/Makefile
===================================================================
--- radix-1.9/dev/re2c/2.2/Makefile (revision 34)
+++ radix-1.9/dev/re2c/2.2/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/d/re2c
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/env/libuuid/2.38.1/Makefile
===================================================================
--- radix-1.9/env/libuuid/2.38.1/Makefile (revision 34)
+++ radix-1.9/env/libuuid/2.38.1/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/a/util-linux
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/env/libuuid/2.38.1-ppc32/Makefile
===================================================================
--- radix-1.9/env/libuuid/2.38.1-ppc32/Makefile (revision 34)
+++ radix-1.9/env/libuuid/2.38.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/a/util-linux
REQUIRES = env/libuuid/2.38.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/env/libuuid/2.38.1-x86_32/Makefile
===================================================================
--- radix-1.9/env/libuuid/2.38.1-x86_32/Makefile (revision 34)
+++ radix-1.9/env/libuuid/2.38.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/a/util-linux
REQUIRES = env/libuuid/2.38.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/argon2/20190702/Makefile
===================================================================
--- radix-1.9/libs/argon2/20190702/Makefile (revision 34)
+++ radix-1.9/libs/argon2/20190702/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/argon2/20190702-ppc32/Makefile
===================================================================
--- radix-1.9/libs/argon2/20190702-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/argon2/20190702-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/argon2
REQUIRES = libs/argon2/20190702
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/argon2/20190702-x86_32/Makefile
===================================================================
--- radix-1.9/libs/argon2/20190702-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/argon2/20190702-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/argon2
REQUIRES = libs/argon2/20190702
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/brotli/1.0.9/Makefile
===================================================================
--- radix-1.9/libs/brotli/1.0.9/Makefile (revision 34)
+++ radix-1.9/libs/brotli/1.0.9/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/brotli/1.0.9-ppc32/Makefile
===================================================================
--- radix-1.9/libs/brotli/1.0.9-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/brotli/1.0.9-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/brotli
REQUIRES = libs/brotli/1.0.9
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/brotli/1.0.9-x86_32/Makefile
===================================================================
--- radix-1.9/libs/brotli/1.0.9-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/brotli/1.0.9-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/brotli
REQUIRES = libs/brotli/1.0.9
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/editline/1.17.1/Makefile
===================================================================
--- radix-1.9/libs/editline/1.17.1/Makefile (revision 34)
+++ radix-1.9/libs/editline/1.17.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/editline/1.17.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/editline/1.17.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/editline/1.17.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/editline
REQUIRES = libs/editline/1.17.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/editline/1.17.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/editline/1.17.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/editline/1.17.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/editline
REQUIRES = libs/editline/1.17.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/expat/2.5.0/Makefile
===================================================================
--- radix-1.9/libs/expat/2.5.0/Makefile (revision 34)
+++ radix-1.9/libs/expat/2.5.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/expat/2.5.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/expat/2.5.0-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/expat/2.5.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/expat
REQUIRES = libs/expat/2.5.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/expat/2.5.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/expat/2.5.0-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/expat/2.5.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/expat
REQUIRES = libs/expat/2.5.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/fftw/3.3.10/Makefile
===================================================================
--- radix-1.9/libs/fftw/3.3.10/Makefile (revision 34)
+++ radix-1.9/libs/fftw/3.3.10/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/fftw/3.3.10-ppc32/Makefile
===================================================================
--- radix-1.9/libs/fftw/3.3.10-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/fftw/3.3.10-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/fftw
REQUIRES = libs/fftw/3.3.10
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/fftw/3.3.10-x86_32/Makefile
===================================================================
--- radix-1.9/libs/fftw/3.3.10-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/fftw/3.3.10-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/fftw
REQUIRES = libs/fftw/3.3.10
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/fribidi/1.0.12/Makefile
===================================================================
--- radix-1.9/libs/fribidi/1.0.12/Makefile (revision 34)
+++ radix-1.9/libs/fribidi/1.0.12/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/fribidi/1.0.12-ppc32/Makefile
===================================================================
--- radix-1.9/libs/fribidi/1.0.12-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/fribidi/1.0.12-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/fribidi
REQUIRES = libs/fribidi/1.0.12
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/fribidi/1.0.12-x86_32/Makefile
===================================================================
--- radix-1.9/libs/fribidi/1.0.12-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/fribidi/1.0.12-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/fribidi
REQUIRES = libs/fribidi/1.0.12
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gc/8.0.4/Makefile
===================================================================
--- radix-1.9/libs/gc/8.0.4/Makefile (revision 34)
+++ radix-1.9/libs/gc/8.0.4/Makefile (revision 35)
@@ -59,7 +59,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gc/8.0.4-ppc32/Makefile
===================================================================
--- radix-1.9/libs/gc/8.0.4-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/gc/8.0.4-ppc32/Makefile (revision 35)
@@ -17,7 +17,7 @@
SOURCE_REQUIRES += sources/packages/l/libatomic_ops
REQUIRES = libs/gc/8.0.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gc/8.0.4-x86_32/Makefile
===================================================================
--- radix-1.9/libs/gc/8.0.4-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/gc/8.0.4-x86_32/Makefile (revision 35)
@@ -14,7 +14,7 @@
SOURCE_REQUIRES += sources/packages/l/libatomic_ops
REQUIRES = libs/gc/8.0.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gdbm/1.23/Makefile
===================================================================
--- radix-1.9/libs/gdbm/1.23/Makefile (revision 34)
+++ radix-1.9/libs/gdbm/1.23/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gdbm/1.23-ppc32/Makefile
===================================================================
--- radix-1.9/libs/gdbm/1.23-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/gdbm/1.23-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/gdbm
REQUIRES = libs/gdbm/1.23
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gdbm/1.23-x86_32/Makefile
===================================================================
--- radix-1.9/libs/gdbm/1.23-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/gdbm/1.23-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/gdbm
REQUIRES = libs/gdbm/1.23
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/giflib/5.2.1/Makefile
===================================================================
--- radix-1.9/libs/giflib/5.2.1/Makefile (revision 34)
+++ radix-1.9/libs/giflib/5.2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/giflib/5.2.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/giflib/5.2.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/giflib/5.2.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/giflib
REQUIRES = libs/giflib/5.2.1
-REQUIRES = libs/glibc/2.36-ppc32
+REQUIRES = libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/giflib/5.2.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/giflib/5.2.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/giflib/5.2.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/giflib
REQUIRES = libs/giflib/5.2.1
-REQUIRES = libs/glibc/2.36-x86_32
+REQUIRES = libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/glibc/2.36-ppc32/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.36-ppc32/tz-exclude.list (revision 34)
+++ radix-1.9/libs/glibc/2.36-ppc32/tz-exclude.list (nonexistent)
@@ -1 +0,0 @@
-Makefile
Index: radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-install.sh (revision 34)
+++ radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-install.sh (nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1: the new package version
-pre_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-post_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-pre_update() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-post_update() {
- post_install
-}
-
-# arg 1: the old package version
-pre_remove() {
- /bin/true
-}
-
-# arg 1: the old package version
-post_remove() {
- /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*
Property changes on: radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.36-ppc32/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.36-ppc32/PATCHES (revision 34)
+++ radix-1.9/libs/glibc/2.36-ppc32/PATCHES (nonexistent)
@@ -1,13 +0,0 @@
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-b3736d1a3c-2.36.1.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-i18n.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-malloc-hooks.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-en_US-no-am-pm.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-reenable-DT-HASH.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-locale-no-archive.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zonefile.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zoneinfo.patch
-../../../sources/iana/tz/patches/glibc-2.36-tzcode-2022f.patch -p0
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-ppc64-interpreter.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.36-ppc32/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.36-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/glibc/2.36-ppc32/Makefile (nonexistent)
@@ -1,192 +0,0 @@
-
-COMPONENT_TARGETS = $(HARDWARE_S824L)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
-
-NEED_ABS_PATH = true
-COMPONENT_IS_3PP = true
-
-CREATE_PPC32_PACKAGE = true
-
-
-include ../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES = sources/GNU/glibc/2.36
-SOURCE_REQUIRES += sources/iana/tz
-
-REQUIRES = libs/glibc/2.36
-REQUIRES += dev/kernel-headers
-REQUIRES += dev/gcc-runtime/12.2.0
-
-# ======= __END_OF_REQUIRES__ =======
-
-
-version = 2.36
-tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
-
-tz_version = 2022f
-tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
-tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
-exclude_list = $(CURDIR)/tz-exclude.list
-
-SRC_ARCHIVE = $(tar_xz_archive)
-SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
-src_dir_name = glibc-$(version)
-src_done = $(TARGET_BUILD_DIR)/.source-done
-
-PATCHES = PATCHES
-
-build_dir = $(TARGET_BUILD_DIR)/build
-build_target = $(TARGET_BUILD_DIR)/.built
-install_target = $(TARGET_BUILD_DIR)/.installed
-
-
-build_glibc32_pkg = $(TARGET_BUILD_DIR)/.glibc32_pkg_done
-
-
-OPTIMIZATION_FLAGS = -O3
-
-
-####### Targets
-
-PKG_GROUP = libs
-
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-GLIBC_32_PKG_NAME = glibc-x32
-GLIBC_32_PKG_VERSION = 2.36
-GLIBC_32_PKG_ARCH = $(PKGARCH)
-GLIBC_32_PKG_DISTRO_NAME = $(DISTRO_NAME)
-GLIBC_32_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
-GLIBC_32_PKG_GROUP = $(PKG_GROUP)
-### |---handy-ruler-------------------------------|
-GLIBC_32_PKG_SHORT_DESCRIPTION = GNU C libraries
-GLIBC_32_PKG_URL = $(BUG_URL)
-GLIBC_32_PKG_LICENSE = GPLv2
-GLIBC_32_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-pkg-description
-GLIBC_32_PKG_DESCRIPTION_FILE_IN = $(GLIBC_32_PKG_NAME)-pkg-description.in
-GLIBC_32_PKG_INSTALL_SCRIPT = $(GLIBC_32_PKG_NAME)-pkg-install.sh
-
-GLIBC_32_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-package
-
-pkg_basename = $(GLIBC_32_PKG_NAME)-$(GLIBC_32_PKG_VERSION)-$(GLIBC_32_PKG_ARCH)-$(GLIBC_32_PKG_DISTRO_NAME)-$(GLIBC_32_PKG_DISTRO_VERSION)
-
-pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate = $(call cert-name,$(pkg_archive))
-pkg_signature = $(call sign-name,$(pkg_archive))
-pkg_description = $(call desc-name,$(pkg_archive))
-products = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS = $(build_target)
-BUILD_TARGETS += $(install_target)
-BUILD_TARGETS += $(build_glibc32_pkg)
-
-PRODUCT_TARGETS = $(products)
-
-ROOTFS_TARGETS = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot = install_root=$(GLIBC_32_PKG)
-
-
-extra_configure_switches += --libdir=/usr/lib$(MULTILIB_PPC32_SUFFIX)
-extra_configure_switches += --with-headers=$(TARGET_DEST_DIR)/usr/include
-extra_configure_switches += --with-binutils=$(TOOLCHAIN_PATH)/bin
-extra_configure_switches += --enable-kernel=2.6.36
-extra_configure_switches += --enable-add-ons
-extra_configure_switches += --enable-profile
-extra_configure_switches += --enable-bind-now
-extra_configure_switches += --without-gd
-extra_configure_switches += --without-cvs
-
-
-extra_configure_switches += libc_cv_slibdir=/lib$(MULTILIB_PPC32_SUFFIX)
-extra_configure_switches += libc_cv_rtlddir=/lib$(MULTILIB_PPC32_SUFFIX)
-
-
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
- $(UNPACK_SRC_ARCHIVE)
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
- $(APPLY_PATCHES)
- @touch $@
-
-$(build_target): $(src_done)
- @mkdir -p $(build_dir)
- @echo "slibdir=/lib$(MULTILIB_PPC32_SUFFIX)" >> $(build_dir)/configparms
- @echo "rtlddir=/lib$(MULTILIB_PPC32_SUFFIX)" >> $(build_dir)/configparms
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(env_sysroot) ../$(src_dir_name)/configure \
- --prefix=/usr \
- --build=$(BUILD) \
- --host=$(TARGET32) \
- $(extra_configure_switches)
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE)
- @touch $@
-
-$(install_target): $(build_target)
- @mkdir -p $(GLIBC_32_PKG)
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
- # ======= fake LOCALES installation to allow implementation of iconv and intl into GLIBC =======
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 SUPPORTED-LOCALES="" \
- localedata/install-locales $(env_sysroot)
- @touch $@
-
-$(build_glibc32_pkg): $(install_target)
- # ======= Remove not needed stuff =======
- @rm -rf $(GLIBC_32_PKG)/etc
- @rm -rf $(GLIBC_32_PKG)/sbin
- @rm -rf $(GLIBC_32_PKG)/usr/bin
- @rm -rf $(GLIBC_32_PKG)/usr/sbin
- @rm -rf $(GLIBC_32_PKG)/usr/share
- @rm -rf $(GLIBC_32_PKG)/var
- @( cd $(GLIBC_32_PKG)/usr/include/gnu ; cp lib-names-32.h stubs-32.h ../.. )
- @rm -rf $(GLIBC_32_PKG)/usr/include
- @( mkdir -p $(GLIBC_32_PKG)/usr/include/gnu ; \
- mv $(GLIBC_32_PKG)/usr/lib-names-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
- mv $(GLIBC_32_PKG)/usr/stubs-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
- )
- # ======= Create symbolic link to libnsl.so.1 =======
- @( cd $(GLIBC_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
- ln -sf ../../lib$(MULTILIB_PPC32_SUFFIX)/libnsl.so.1 libnsl.so ; \
- )
- # ======= Install the same to $(TARGET_DEST_DIR) =======
- $(call install-into-devenv, $(GLIBC_32_PKG))
- # ======= Strip binaries =======
- @( cd $(GLIBC_32_PKG) ; \
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-debug 2> /dev/null ; \
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- find . | xargs file | grep "relocatable" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- )
- @touch $@
-
-$(GLIBC_32_PKG_DESCRIPTION_FILE): $(GLIBC_32_PKG_DESCRIPTION_FILE_IN)
- @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature) : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(build_glibc32_pkg) $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG_INSTALL_SCRIPT)
- @cp $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG)/.DESCRIPTION
- @cp $(GLIBC_32_PKG_INSTALL_SCRIPT) $(GLIBC_32_PKG)/.INSTALL
- @$(BUILD_BIN_PKG_REQUIRES) $(GLIBC_32_PKG)/.REQUIRES
- @echo "pkgname=$(GLIBC_32_PKG_NAME)" > $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "pkgver=$(GLIBC_32_PKG_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "arch=$(GLIBC_32_PKG_ARCH)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "distroname=$(GLIBC_32_PKG_DISTRO_NAME)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "distrover=$(GLIBC_32_PKG_DISTRO_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "group=$(GLIBC_32_PKG_GROUP)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "short_description=\"$(GLIBC_32_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "url=$(GLIBC_32_PKG_URL)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "license=$(GLIBC_32_PKG_LICENSE)" >> $(GLIBC_32_PKG)/.PKGINFO
- @$(PSEUDO) sh -c "cd $(GLIBC_32_PKG) && \
- chown -R root:root . && \
- $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-description.in (revision 34)
+++ radix-1.9/libs/glibc/2.36-ppc32/glibc-x32-pkg-description.in (nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-glibc-x32: glibc-x32 @VERSION@ (ppc32 GNU C libraries)
-glibc-x32:
-glibc-x32: This package contains the GNU C libraries and header files.
-glibc-x32: The GNU C library was written originally by Roland McGrath,
-glibc-x32: and is currently maintained by Ulrich Drepper. Some parts of
-glibc-x32: the library were contributed or worked on by other people.
-glibc-x32:
-glibc-x32:
-glibc-x32:
-glibc-x32:
-glibc-x32:
Index: radix-1.9/libs/glibc/2.36-ppc32
===================================================================
--- radix-1.9/libs/glibc/2.36-ppc32 (revision 34)
+++ radix-1.9/libs/glibc/2.36-ppc32 (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36-ppc32
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36-x86_32/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.36-x86_32/tz-exclude.list (revision 34)
+++ radix-1.9/libs/glibc/2.36-x86_32/tz-exclude.list (nonexistent)
@@ -1 +0,0 @@
-Makefile
Index: radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-install.sh (revision 34)
+++ radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-install.sh (nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1: the new package version
-pre_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-post_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-pre_update() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-post_update() {
- post_install
-}
-
-# arg 1: the old package version
-pre_remove() {
- /bin/true
-}
-
-# arg 1: the old package version
-post_remove() {
- /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*
Property changes on: radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.36-x86_32/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.36-x86_32/PATCHES (revision 34)
+++ radix-1.9/libs/glibc/2.36-x86_32/PATCHES (nonexistent)
@@ -1,13 +0,0 @@
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-b3736d1a3c-2.36.1.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-i18n.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-malloc-hooks.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-en_US-no-am-pm.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-reenable-DT-HASH.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-locale-no-archive.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zonefile.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zoneinfo.patch
-../../../sources/iana/tz/patches/glibc-2.36-tzcode-2022f.patch -p0
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-ppc64-interpreter.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.36-x86_32/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.36-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/glibc/2.36-x86_32/Makefile (nonexistent)
@@ -1,189 +0,0 @@
-
-COMPONENT_TARGETS = $(HARDWARE_INTEL_PC64)
-
-NEED_ABS_PATH = true
-COMPONENT_IS_3PP = true
-
-CREATE_X86_32_PACKAGE = true
-
-
-include ../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES = sources/GNU/glibc/2.36
-SOURCE_REQUIRES += sources/iana/tz
-
-REQUIRES = libs/glibc/2.36
-REQUIRES += dev/kernel-headers
-REQUIRES += dev/gcc-runtime/12.2.0
-
-# ======= __END_OF_REQUIRES__ =======
-
-
-version = 2.36
-tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
-
-tz_version = 2022f
-tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
-tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
-exclude_list = $(CURDIR)/tz-exclude.list
-
-SRC_ARCHIVE = $(tar_xz_archive)
-SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
-src_dir_name = glibc-$(version)
-src_done = $(TARGET_BUILD_DIR)/.source-done
-
-PATCHES = PATCHES
-
-build_dir = $(TARGET_BUILD_DIR)/build
-build_target = $(TARGET_BUILD_DIR)/.built
-install_target = $(TARGET_BUILD_DIR)/.installed
-
-
-build_glibc32_pkg = $(TARGET_BUILD_DIR)/.glibc32_pkg_done
-
-
-OPTIMIZATION_FLAGS = -O3
-
-
-####### Targets
-
-PKG_GROUP = libs
-
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-GLIBC_32_PKG_NAME = glibc-x32
-GLIBC_32_PKG_VERSION = 2.36
-GLIBC_32_PKG_ARCH = $(PKGARCH)
-GLIBC_32_PKG_DISTRO_NAME = $(DISTRO_NAME)
-GLIBC_32_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
-GLIBC_32_PKG_GROUP = $(PKG_GROUP)
-### |---handy-ruler-------------------------------|
-GLIBC_32_PKG_SHORT_DESCRIPTION = GNU C libraries
-GLIBC_32_PKG_URL = $(BUG_URL)
-GLIBC_32_PKG_LICENSE = GPLv2
-GLIBC_32_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-pkg-description
-GLIBC_32_PKG_DESCRIPTION_FILE_IN = $(GLIBC_32_PKG_NAME)-pkg-description.in
-GLIBC_32_PKG_INSTALL_SCRIPT = $(GLIBC_32_PKG_NAME)-pkg-install.sh
-
-GLIBC_32_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-package
-
-pkg_basename = $(GLIBC_32_PKG_NAME)-$(GLIBC_32_PKG_VERSION)-$(GLIBC_32_PKG_ARCH)-$(GLIBC_32_PKG_DISTRO_NAME)-$(GLIBC_32_PKG_DISTRO_VERSION)
-
-pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate = $(call cert-name,$(pkg_archive))
-pkg_signature = $(call sign-name,$(pkg_archive))
-pkg_description = $(call desc-name,$(pkg_archive))
-products = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS = $(build_target)
-BUILD_TARGETS += $(install_target)
-BUILD_TARGETS += $(build_glibc32_pkg)
-
-PRODUCT_TARGETS = $(products)
-
-ROOTFS_TARGETS = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot = install_root=$(GLIBC_32_PKG)
-
-
-extra_configure_switches += --libdir=/usr/lib$(MULTILIB_X86_32_SUFFIX)
-extra_configure_switches += --with-headers=$(TARGET_DEST_DIR)/usr/include
-extra_configure_switches += --with-binutils=$(TOOLCHAIN_PATH)/bin
-extra_configure_switches += --enable-kernel=2.6.36
-extra_configure_switches += --enable-add-ons
-extra_configure_switches += --enable-profile
-extra_configure_switches += --enable-bind-now
-extra_configure_switches += --without-gd
-extra_configure_switches += --without-cvs
-
-
-extra_configure_switches += libc_cv_slibdir=/lib$(MULTILIB_X86_32_SUFFIX)
-extra_configure_switches += libc_cv_rtlddir=/lib$(MULTILIB_X86_32_SUFFIX)
-
-
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
- $(UNPACK_SRC_ARCHIVE)
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
- $(APPLY_PATCHES)
- @touch $@
-
-$(build_target): $(src_done)
- @mkdir -p $(build_dir)
- @echo "slibdir=/lib$(MULTILIB_X86_32_SUFFIX)" >> $(build_dir)/configparms
- @echo "rtlddir=/lib$(MULTILIB_X86_32_SUFFIX)" >> $(build_dir)/configparms
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(env_sysroot) ../$(src_dir_name)/configure \
- --prefix=/usr \
- --build=$(BUILD) \
- --host=$(TARGET32) \
- $(extra_configure_switches)
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE)
- @touch $@
-
-$(install_target): $(build_target)
- @mkdir -p $(GLIBC_32_PKG)
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
- # ======= fake LOCALES installation to allow implementation of iconv and intl into GLIBC =======
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 SUPPORTED-LOCALES="" \
- localedata/install-locales $(env_sysroot)
- @touch $@
-
-$(build_glibc32_pkg): $(install_target)
- # ======= Remove not needed stuff =======
- @rm -rf $(GLIBC_32_PKG)/etc
- @rm -rf $(GLIBC_32_PKG)/sbin
- @rm -rf $(GLIBC_32_PKG)/usr/bin
- @rm -rf $(GLIBC_32_PKG)/usr/sbin
- @rm -rf $(GLIBC_32_PKG)/usr/share
- @rm -rf $(GLIBC_32_PKG)/var
- @( cd $(GLIBC_32_PKG)/usr/include/gnu ; cp lib-names-32.h stubs-32.h ../.. )
- @rm -rf $(GLIBC_32_PKG)/usr/include
- @( mkdir -p $(GLIBC_32_PKG)/usr/include/gnu ; \
- mv $(GLIBC_32_PKG)/usr/lib-names-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
- mv $(GLIBC_32_PKG)/usr/stubs-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
- )
- # ======= Create symbolic link to libnsl.so.1 =======
- @( cd $(GLIBC_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
- ln -sf ../../lib$(MULTILIB_X86_32_SUFFIX)/libnsl.so.1 libnsl.so ; \
- )
- # ======= Install the same to $(TARGET_DEST_DIR) =======
- $(call install-into-devenv, $(GLIBC_32_PKG))
- # ======= Strip binaries =======
- @( cd $(GLIBC_32_PKG) ; \
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-debug 2> /dev/null ; \
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- find . | xargs file | grep "relocatable" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- )
- @touch $@
-
-$(GLIBC_32_PKG_DESCRIPTION_FILE): $(GLIBC_32_PKG_DESCRIPTION_FILE_IN)
- @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature) : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(build_glibc32_pkg) $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG_INSTALL_SCRIPT)
- @cp $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG)/.DESCRIPTION
- @cp $(GLIBC_32_PKG_INSTALL_SCRIPT) $(GLIBC_32_PKG)/.INSTALL
- @$(BUILD_BIN_PKG_REQUIRES) $(GLIBC_32_PKG)/.REQUIRES
- @echo "pkgname=$(GLIBC_32_PKG_NAME)" > $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "pkgver=$(GLIBC_32_PKG_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "arch=$(GLIBC_32_PKG_ARCH)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "distroname=$(GLIBC_32_PKG_DISTRO_NAME)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "distrover=$(GLIBC_32_PKG_DISTRO_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "group=$(GLIBC_32_PKG_GROUP)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "short_description=\"$(GLIBC_32_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "url=$(GLIBC_32_PKG_URL)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
- echo "license=$(GLIBC_32_PKG_LICENSE)" >> $(GLIBC_32_PKG)/.PKGINFO
- @$(PSEUDO) sh -c "cd $(GLIBC_32_PKG) && \
- chown -R root:root . && \
- $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-description.in (revision 34)
+++ radix-1.9/libs/glibc/2.36-x86_32/glibc-x32-pkg-description.in (nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-glibc-x32: glibc-x32 @VERSION@ (GNU C libraries)
-glibc-x32:
-glibc-x32: This package contains the GNU C libraries and header files.
-glibc-x32: The GNU C library was written originally by Roland McGrath,
-glibc-x32: and is currently maintained by Ulrich Drepper. Some parts of
-glibc-x32: the library were contributed or worked on by other people.
-glibc-x32:
-glibc-x32:
-glibc-x32:
-glibc-x32:
-glibc-x32:
Index: radix-1.9/libs/glibc/2.36-x86_32
===================================================================
--- radix-1.9/libs/glibc/2.36-x86_32 (revision 34)
+++ radix-1.9/libs/glibc/2.36-x86_32 (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36-x86_32
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/list-zones
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/list-zones (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/list-zones (nonexistent)
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-path=$1
-p01=$2
-
-if [ -z "$path" -a -z "$p01" ] ; then
- echo ""
- echo "Usage: `basename $0` PATH output-file"
- echo ""
- exit 1
-fi
-
-ls 1> /dev/null 2> $p01
-
-( cd $path
- find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | sort | while read zone ; do
- if [ "`dirname $zone`" != "." ] ; then
- line="\"`echo "$zone" | sed "s,\./,,"`\" \" \" \\\\"
- echo "$line" >> $p01
- fi
- done
-
- find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | sort | while read zone ; do
- if [ "`dirname $zone`" == "." ] ; then
- line="\"`echo "$zone" | sed "s,\./,,"`\" \" \" \\\\"
- echo "$line" >> $p01
- fi
- done
-)
Property changes on: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/list-zones
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/part-00
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/part-00 (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/part-00 (nonexistent)
@@ -1,164 +0,0 @@
-#!/bin/sh
-
-# program name:
-program=`basename $0`
-
-# 16 = root path has not specified arter --root option
-# 91 = root path not correct
-# 92 = Cannot create '/tmp/...' directory
-EXITSTATUS=0
-
-CWD=`pwd`
-
-umask 022
-if [ ! -z "$TMPDIR" ] ; then mkdir -p $TMPDIR ; fi
-TMP=$(mkdir -p /tmp/radix && mktemp -d -p /tmp/radix $program.XXXXXXXX) || { echo "Cannot create '/tmp/...' directory" ; exit 92; }
-trap "rm -rf $TMP" EXIT
-
-
-TARGET_ROOT_PATH=
-
-usage() {
- cat << EOF
-
-Usage: $program [options]
-
-$program - Radix Linux timezone configuration utility.
-
-options:
- --root <DIR> - Configure timezone someplace else, like <DIR>.
-
-EOF
-}
-
-
-check_abs_paths()
-{
- if [ ! -z "$TARGET_ROOT_PATH" ] ; then
- if [[ ${TARGET_ROOT_PATH:0:1} != "/" ]] ; then
- TARGET_ROOT_PATH=$CWD/$TARGET_ROOT_PATH
- fi
- TARGET_ROOT_PATH="$(echo "$TARGET_ROOT_PATH" | sed -e "s/\/$//")/"
- fi
-}
-
-#
-# Parse options:
-#
-while [ 0 ]; do
- if [ "$1" = "-h" -o "$1" = "--help" ]; then
- usage
- exit 0
- elif [ "$1" = "--root" ]; then
- if [ "$2" = "" ]; then
- usage
- echo "ERROR: Target ROOT directory has not specified. Check --root option."
- EXITSTATUS=17
- exit $EXITSTATUS
- fi
- TARGET_ROOT_PATH="$2"
- shift 2
- else
- break
- fi
-done
-
-check_abs_paths
-
-if [ -z "$TARGET_ROOT_PATH" ] ; then
- TARGET_ROOT_PATH="/"
-fi
-
-if [ ! -d $TARGET_ROOT_PATH ] ; then
- echo "ERROR: Target ROOT path specified but not correct."
- EXITSTATUS=91
- exit $EXITSTATUS
-fi
-
-: ${DIALOG=dialog}
-: ${DIALOGRC=${TARGET_ROOT_PATH}etc/dialogrc}
-
-#
-# The hardware clock configuration file:
-#
-HWCLOCK_CONF=${TARGET_ROOT_PATH}etc/hardwareclock
-
-#
-# setzone( $TIMEZONE )
-#
-# This function accepts a time zone as the only parameter
-# and sets it as the default system time zone.
-#
-setzone()
-{
- TZ=$1
-
- cd ${TARGET_ROOT_PATH}etc
- if [ -r ${TARGET_ROOT_PATH}usr/share/zoneinfo/$TZ -o \
- -L ${TARGET_ROOT_PATH}usr/share/zoneinfo/$TZ ]; then
- ln -sf ../usr/share/zoneinfo/$TZ localtime-copied-from
- rm -f localtime
- cd ..
- cp etc/localtime-copied-from etc/localtime
- fi
-}
-
-#
-# writeconf( $CLOCK_SET_TO )
-#
-# Writes out $HWCLOCK_CONF that tells rc.S how the hardware clock value is stored.
-#
-writeconf()
-{
- echo "#" > $HWCLOCK_CONF
- echo "# /etc/hardwareclock" >> $HWCLOCK_CONF
- echo "#" >> $HWCLOCK_CONF
- echo "# Tells how the hardware clock time is stored." >> $HWCLOCK_CONF
- echo "# You should run timeconfig to edit this file." >> $HWCLOCK_CONF
- echo "" >> $HWCLOCK_CONF
- echo $1 >> $HWCLOCK_CONF
-}
-
-#
-# Ask the user if the hardware clock is set for UTC/GMT
-#
-cat > $TMP/menu-utc$$ << EOF
---colors \\
---backtitle "\Z7Radix\Zn \Z1cross\Zn\Z7 Linux\Zn" \\
---title " \Z4\ZbSet Hardware Clock\ZB\Zn " \\
---menu "\\n\\
- Is the hardware clock set to Coordinated Universal Time (UTC/GMT)?\\n\\
- If it is, select YES here.\\n\\n\\
- If the hardware clock is set to the current local time (this is how\\n\\
- most PCs are set up), then say NO here.\\n\\n\\
- If you are not sure what this is, you should answer NO here.\\n\\
-" 16 74 2 \\
-"NO" "Hardware clock is set to local time" \\
-"YES" "Hardware clock is set to UTC" \\
-EOF
-
-$DIALOG --file $TMP/menu-utc$$ 2> $TMP/utc$$
-if [ $? = 1 -o $? = 255 ]; then
- rm -f $TMP/utc$$
- rm -f $TMP/menu-utc$$
- exit
-fi
-if [ "`cat $TMP/utc$$`" = "YES" ]; then
- # yes, the hardware clock is UTC
- writeconf "UTC"
-else # must be NO
- writeconf "localtime"
-fi
-rm -f $TMP/utc$$
-rm -f $TMP/menu-utc$$
-
-#
-# Ask the user which timezone is preffered
-#
-cat > $TMP/menu-tz$$ << EOF
---colors \\
---backtitle "\Z7Radix\Zn \Z1cross\Zn\Z7 Linux\Zn" \\
---title " \Z4\ZbTimezone Configuration\ZB\Zn " \\
---menu "\\n\\
- Please select one of the following timezones for your machine:\\n\\
-" 22 74 14 \\
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/part-02
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/part-02 (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts/part-02 (nonexistent)
@@ -1,16 +0,0 @@
-EOF
-
-$DIALOG --file $TMP/menu-tz$$ 2> $TMP/tz$$
-ret=$?
-if [ $ret -eq 1 -o $ret -eq 255 ]; then
- rm -f $TMP/tz$$
- rm -f $TMP/menu-tz$$
- exit
-fi
-
-TIMEZONE="`cat $TMP/tz$$`"
-rm -f $TMP/tz$$
-rm -f $TMP/menu-tz$$
-
-setzone $TIMEZONE
-exit
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/scripts
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-description.in (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-description.in (nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-glibc-zoneinfo: glibc-zoneinfo @VERSION@ (timezone database @TZVERSION@)
-glibc-zoneinfo:
-glibc-zoneinfo: This package allows you to configure your time zone.
-glibc-zoneinfo:
-glibc-zoneinfo: This timezone database comes from the tzdata and tzcode packages by
-glibc-zoneinfo: Arthur David Olson et.al. The latest version and more information
-glibc-zoneinfo: may be found at: http://www.iana.org/time-zones
-glibc-zoneinfo:
-glibc-zoneinfo: Use the timeconfig utility to set your local time zone.
-glibc-zoneinfo:
-glibc-zoneinfo:
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/PATCHES (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/PATCHES (nonexistent)
@@ -1,2 +0,0 @@
-
-../../../../sources/iana/tz/patches/tzcode-2022f-version.patch -p0
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-install.sh (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-install.sh (nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1: the new package version
-pre_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-post_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-pre_update() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-post_update() {
- post_install
-}
-
-# arg 1: the old package version
-pre_remove() {
- /bin/true
-}
-
-# arg 1: the old package version
-post_remove() {
- /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*
Property changes on: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/glibc-zoneinfo-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f/Makefile (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f/Makefile (nonexistent)
@@ -1,202 +0,0 @@
-
-COMPONENT_TARGETS = $(HARDWARE_INTEL_PC32)
-COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
-COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
-COMPONENT_TARGETS += $(HARDWARE_CB1X)
-COMPONENT_TARGETS += $(HARDWARE_CB2X)
-COMPONENT_TARGETS += $(HARDWARE_CB3X)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
-COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
-COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
-COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
-COMPONENT_TARGETS += $(HARDWARE_POIN2)
-COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
-COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
-COMPONENT_TARGETS += $(HARDWARE_M201)
-COMPONENT_TARGETS += $(HARDWARE_MXV)
-COMPONENT_TARGETS += $(HARDWARE_P201)
-COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
-COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
-COMPONENT_TARGETS += $(HARDWARE_P212)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
-COMPONENT_TARGETS += $(HARDWARE_Q201)
-COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
-COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
-COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
-COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
-COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
-COMPONENT_TARGETS += $(HARDWARE_CI20)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
-COMPONENT_TARGETS += $(HARDWARE_S824L)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN)
-COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
-
-
-NEED_ABS_PATH = true
-COMPONENT_IS_3PP = true
-
-
-include ../../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES = sources/iana/tz
-
-REQUIRES = libs/glibc/2.36-i18n
-
-# ======= __END_OF_REQUIRES__ =======
-
-
-version = 2.36
-tz_version = 2022f
-
-tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
-tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
-
-
-SRC_DIR = $(TARGET_BUILD_DIR)/timezone
-doc_dir_name = zoneinfo-$(version)
-src_done = $(TARGET_BUILD_DIR)/.source-done
-
-PATCHES = PATCHES
-
-install_target = $(TARGET_BUILD_DIR)/.install_done
-
-scripts_dir = $(CURDIR)/scripts
-part_01 = $(CURDIR)/$(TARGET_BUILD_DIR)/part-01
-
-
-OPTIMIZATION_FLAGS = -O3
-
-
-####### Targets
-
-PKG_GROUP = libs
-
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-GLIBC_TZ_PKG_NAME = glibc-zoneinfo
-GLIBC_TZ_PKG_VERSION = 2.36
-GLIBC_TZ_PKG_ARCH = $(PKGARCH)
-GLIBC_TZ_PKG_DISTRO_NAME = $(DISTRO_NAME)
-GLIBC_TZ_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
-GLIBC_TZ_PKG_GROUP = $(PKG_GROUP)
-### |---handy-ruler-------------------------------|
-GLIBC_TZ_PKG_SHORT_DESCRIPTION = timezone database
-GLIBC_TZ_PKG_URL = $(BUG_URL)
-GLIBC_TZ_PKG_LICENSE = public
-GLIBC_TZ_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_TZ_PKG_NAME)-pkg-description
-GLIBC_TZ_PKG_DESCRIPTION_FILE_IN = $(GLIBC_TZ_PKG_NAME)-pkg-description.in
-GLIBC_TZ_PKG_INSTALL_SCRIPT = $(GLIBC_TZ_PKG_NAME)-pkg-install.sh
-
-GLIBC_TZ_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_TZ_PKG_NAME)-package
-
-pkg_basename = $(GLIBC_TZ_PKG_NAME)-$(GLIBC_TZ_PKG_VERSION)-$(GLIBC_TZ_PKG_ARCH)-$(GLIBC_TZ_PKG_DISTRO_NAME)-$(GLIBC_TZ_PKG_DISTRO_VERSION)
-
-pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate = $(call cert-name,$(pkg_archive))
-pkg_signature = $(call sign-name,$(pkg_archive))
-pkg_description = $(call desc-name,$(pkg_archive))
-products = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS = $(install_target)
-
-PRODUCT_TARGETS = $(products)
-
-ROOTFS_TARGETS = $(pkg_archive)
-
-
-include ../../../../build-system/core.mk
-
-
-ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
-OPTIMIZATION_FLAGS += -fPIC
-endif
-
-
-$(src_done): $(tar_gz_code_archive) $(tar_gz_data_archive)
- @mkdir -p $(SRC_DIR)
- @tar xzf $(tar_gz_code_archive) -C $(SRC_DIR)
- @tar xzf $(tar_gz_data_archive) -C $(SRC_DIR)
- $(APPLY_PATCHES)
- @touch $@
-
-$(install_target): $(src_done)
- @mkdir -p $(GLIBC_TZ_PKG)
- @cd $(SRC_DIR) && $(MAKE)
- @cd $(SRC_DIR) && $(MAKE) -j1 install DESTDIR=.
- @mkdir -p $(GLIBC_TZ_PKG)/usr/lib$(LIBSUFFIX)
- @cp -a $(SRC_DIR)/usr/lib/libtz.a $(GLIBC_TZ_PKG)/usr/lib$(LIBSUFFIX)
- @mkdir -p $(GLIBC_TZ_PKG)/usr/share/zoneinfo{,-leaps}
- @cp -a $(SRC_DIR)/usr/share/zoneinfo/* $(GLIBC_TZ_PKG)/usr/share/zoneinfo
- @cp -a $(SRC_DIR)/usr/share/zoneinfo-leaps/* $(GLIBC_TZ_PKG)/usr/share/zoneinfo-leaps
- @( cd $(GLIBC_TZ_PKG)/usr/share ; ln -sf zoneinfo zoneinfo-posix )
- # ======= Remove PACKAGE/usr/share/zoneinfo/localtime -- =======
- # ======= the install script will create it as a link to /etc/localtime =======
- @rm -f $(GLIBC_TZ_PKG)/usr/share/zoneinfo/localtime
- # ======= timeconfig script =======
- @$(scripts_dir)/list-zones $(GLIBC_TZ_PKG)/usr/share/zoneinfo $(part_01)
- @mkdir -p $(GLIBC_TZ_PKG)/usr/sbin
- @cat $(scripts_dir)/part-00 $(part_01) $(scripts_dir)/part-02 > $(GLIBC_TZ_PKG)/usr/sbin/timeconfig
- @chmod 0755 $(GLIBC_TZ_PKG)/usr/sbin/timeconfig
- # ======= Install Documentation =======
- @cp -rf $(SRC_DIR)/usr/share/man $(GLIBC_TZ_PKG)/usr/share
- @( cd $(GLIBC_TZ_PKG)/usr/share/man/man3 ; \
- for file in *.3 ; do \
- gzip -9 --force $$file; \
- done )
- @( cd $(GLIBC_TZ_PKG)/usr/share/man/man5 ; \
- for file in *.5 ; do \
- gzip -9 --force $$file; \
- done )
- @( cd $(GLIBC_TZ_PKG)/usr/share/man/man8 ; \
- for file in *.8 ; do \
- gzip -9 --force $$file; \
- done )
- @mkdir -p $(GLIBC_TZ_PKG)/usr/share/doc/$(doc_dir_name)
- @( cd $(SRC_DIR) ; \
- cp -a CONTRIBUTING LICENSE NEWS README \
- $(GLIBC_TZ_PKG)/usr/share/doc/$(doc_dir_name) ; \
- )
- # ======= Install the same to $(TARGET_DEST_DIR) =======
- $(call install-into-devenv, $(GLIBC_TZ_PKG))
- @touch $@
-
-$(GLIBC_TZ_PKG_DESCRIPTION_FILE): $(GLIBC_TZ_PKG_DESCRIPTION_FILE_IN)
- @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" \
- | $(SED) -e "s/@TZVERSION@/$(tz_version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature) : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(install_target) $(GLIBC_TZ_PKG_DESCRIPTION_FILE) $(GLIBC_TZ_PKG_INSTALL_SCRIPT)
- @cp $(GLIBC_TZ_PKG_DESCRIPTION_FILE) $(GLIBC_TZ_PKG)/.DESCRIPTION
- @cp $(GLIBC_TZ_PKG_INSTALL_SCRIPT) $(GLIBC_TZ_PKG)/.INSTALL
- @$(BUILD_PKG_REQUIRES) $(GLIBC_TZ_PKG)/.REQUIRES
- @echo "pkgname=$(GLIBC_TZ_PKG_NAME)" > $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "pkgver=$(GLIBC_TZ_PKG_VERSION)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "arch=$(GLIBC_TZ_PKG_ARCH)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "distroname=$(GLIBC_TZ_PKG_DISTRO_NAME)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "distrover=$(GLIBC_TZ_PKG_DISTRO_VERSION)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "group=$(GLIBC_TZ_PKG_GROUP)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "short_description=\"$(GLIBC_TZ_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "url=$(GLIBC_TZ_PKG_URL)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
- echo "license=$(GLIBC_TZ_PKG_LICENSE)" >> $(GLIBC_TZ_PKG)/.PKGINFO
- @$(PSEUDO) sh -c "cd $(GLIBC_TZ_PKG) && \
- chown -R root:root . && \
- $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.36-zoneinfo/2022f
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo/2022f (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo/2022f (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36-zoneinfo/2022f
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36-zoneinfo
===================================================================
--- radix-1.9/libs/glibc/2.36-zoneinfo (revision 34)
+++ radix-1.9/libs/glibc/2.36-zoneinfo (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36-zoneinfo
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36/glibc-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.36/glibc-pkg-description.in (revision 34)
+++ radix-1.9/libs/glibc/2.36/glibc-pkg-description.in (nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-glibc: glibc @VERSION@ (GNU C libraries)
-glibc:
-glibc: This package contains the GNU C libraries and header files.
-glibc: The GNU C library was written originally by Roland McGrath,
-glibc: and is currently maintained by Ulrich Drepper. Some parts of
-glibc: the library were contributed or worked on by other people.
-glibc:
-glibc:
-glibc:
-glibc:
-glibc:
Index: radix-1.9/libs/glibc/2.36/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.36/tz-exclude.list (revision 34)
+++ radix-1.9/libs/glibc/2.36/tz-exclude.list (nonexistent)
@@ -1 +0,0 @@
-Makefile
Index: radix-1.9/libs/glibc/2.36/profile.d/glibc.csh
===================================================================
--- radix-1.9/libs/glibc/2.36/profile.d/glibc.csh (revision 34)
+++ radix-1.9/libs/glibc/2.36/profile.d/glibc.csh (nonexistent)
@@ -1,9 +0,0 @@
-#!/bin/csh
-# Set more relaxed (glibc-2.3.5 like) malloc() checking.
-#
-# This relaxes the default paranoia level so that it reports
-# bugs, but does not kill the questionable process. You can
-# get away with running broken programs with this setting,
-# but at a possible performance and security cost.
-#
-#setenv MALLOC_CHECK_ 1
Index: radix-1.9/libs/glibc/2.36/profile.d/glibc.sh
===================================================================
--- radix-1.9/libs/glibc/2.36/profile.d/glibc.sh (revision 34)
+++ radix-1.9/libs/glibc/2.36/profile.d/glibc.sh (nonexistent)
@@ -1,8 +0,0 @@
-#!/bin/sh
-# Set more relaxed (glibc-2.3.5 like) malloc() checking.
-#
-# This relaxes the default paranoia level so that it reports
-# bugs, but does not kill the questionable process. You can
-# get away with running broken programs with this setting,
-# but at a possible performance and security cost.
-#export MALLOC_CHECK_=1
Index: radix-1.9/libs/glibc/2.36/profile.d
===================================================================
--- radix-1.9/libs/glibc/2.36/profile.d (revision 34)
+++ radix-1.9/libs/glibc/2.36/profile.d (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36/profile.d
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36/glibc-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.36/glibc-pkg-install.sh (revision 34)
+++ radix-1.9/libs/glibc/2.36/glibc-pkg-install.sh (nonexistent)
@@ -1,2219 +0,0 @@
-#!/bin/sh
-
-# Preserve new files
-install_file() {
- NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
- # If there's no file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-
-
-# arg 1: the new package version
-pre_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-post_install() {
- install_file etc/nscd.conf.new
- install_file etc/profile.d/glibc.csh.new
- install_file etc/profile.d/glibc.sh.new
- # ======= Clearly you already decided this issue. :-) =======
- rm -f etc/profile.d/glibc.csh.new
- rm -f etc/profile.d/glibc.sh.new
-
- #
- # NOTE:
- # 'install-info' can work using relative paths and we can make use build machine
- # utility during installation to the some partition and use target 'install-info'
- # during installation directly on the running target machine.
- #
- if [ -x /usr/bin/install-info ] ; then
- install-info --info-dir=usr/share/info usr/share/info/libc.info.gz 2>/dev/null
- elif ! grep "(libc)" usr/share/info/dir 1> /dev/null 2> /dev/null ; then
- cat << __EOF__ >> usr/share/info/dir
-
-GNU C library functions and macros
-* __fbufsize: (libc)Controlling Buffering.
-* __flbf: (libc)Controlling Buffering.
-* __fpending: (libc)Controlling Buffering.
-* __fpurge: (libc)Flushing Buffers.
-* __freadable: (libc)Opening Streams.
-* __freading: (libc)Opening Streams.
-* __fsetlocking: (libc)Streams and Threads.
-* __fwritable: (libc)Opening Streams.
-* __fwriting: (libc)Opening Streams.
-* __gconv_end_fct: (libc)glibc iconv Implementation.
-* __gconv_fct: (libc)glibc iconv Implementation.
-* __gconv_init_fct: (libc)glibc iconv Implementation.
-* __ppc_get_timebase_freq: (libc)PowerPC.
-* __ppc_get_timebase: (libc)PowerPC.
-* __ppc_mdoio: (libc)PowerPC.
-* __ppc_mdoom: (libc)PowerPC.
-* __ppc_set_ppr_low: (libc)PowerPC.
-* __ppc_set_ppr_med_high: (libc)PowerPC.
-* __ppc_set_ppr_med_low: (libc)PowerPC.
-* __ppc_set_ppr_med: (libc)PowerPC.
-* __ppc_set_ppr_very_low: (libc)PowerPC.
-* __ppc_yield: (libc)PowerPC.
-* __riscv_flush_icache: (libc)RISC-V.
-* __va_copy: (libc)Argument Macros.
-* __x86_get_cpuid_feature_leaf: (libc)X86.
-* _Complex_I: (libc)Complex Numbers.
-* _dl_find_object: (libc)Dynamic Linker Introspection.
-* _exit: (libc)Termination Internals.
-* _Exit: (libc)Termination Internals.
-* _flushlbf: (libc)Flushing Buffers.
-* _Fork: (libc)Creating a Process.
-* _Imaginary_I: (libc)Complex Numbers.
-* _IOFBF: (libc)Controlling Buffering.
-* _IOLBF: (libc)Controlling Buffering.
-* _IONBF: (libc)Controlling Buffering.
-* _PATH_UTMP: (libc)Manipulating the Database.
-* _PATH_WTMP: (libc)Manipulating the Database.
-* _POSIX2_C_DEV: (libc)System Options.
-* _POSIX2_C_VERSION: (libc)Version Supported.
-* _POSIX2_FORT_DEV: (libc)System Options.
-* _POSIX2_FORT_RUN: (libc)System Options.
-* _POSIX2_LOCALEDEF: (libc)System Options.
-* _POSIX2_SW_DEV: (libc)System Options.
-* _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
-* _POSIX_JOB_CONTROL: (libc)System Options.
-* _POSIX_NO_TRUNC: (libc)Options for Files.
-* _POSIX_SAVED_IDS: (libc)System Options.
-* _POSIX_VDISABLE: (libc)Options for Files.
-* _POSIX_VERSION: (libc)Version Supported.
-* _tolower: (libc)Case Conversion.
-* _toupper: (libc)Case Conversion.
-* a64l: (libc)Encode Binary Data.
-* abort: (libc)Aborting a Program.
-* abs: (libc)Absolute Value.
-* accept: (libc)Accepting Connections.
-* access: (libc)Testing File Access.
-* acosfNx: (libc)Inverse Trig Functions.
-* acosfN: (libc)Inverse Trig Functions.
-* acosf: (libc)Inverse Trig Functions.
-* acoshfNx: (libc)Hyperbolic Functions.
-* acoshfN: (libc)Hyperbolic Functions.
-* acoshf: (libc)Hyperbolic Functions.
-* acoshl: (libc)Hyperbolic Functions.
-* acosh: (libc)Hyperbolic Functions.
-* acosl: (libc)Inverse Trig Functions.
-* acos: (libc)Inverse Trig Functions.
-* addmntent: (libc)mtab.
-* addseverity: (libc)Adding Severity Classes.
-* adjtimex: (libc)Setting and Adjusting the Time.
-* adjtime: (libc)Setting and Adjusting the Time.
-* aio_cancel: (libc)Cancel AIO Operations.
-* aio_cancel64: (libc)Cancel AIO Operations.
-* aio_error: (libc)Status of AIO Operations.
-* aio_error64: (libc)Status of AIO Operations.
-* aio_fsync: (libc)Synchronizing AIO Operations.
-* aio_fsync64: (libc)Synchronizing AIO Operations.
-* aio_init: (libc)Configuration of AIO.
-* aio_read: (libc)Asynchronous Reads/Writes.
-* aio_read64: (libc)Asynchronous Reads/Writes.
-* aio_return: (libc)Status of AIO Operations.
-* aio_return64: (libc)Status of AIO Operations.
-* aio_suspend: (libc)Synchronizing AIO Operations.
-* aio_suspend64: (libc)Synchronizing AIO Operations.
-* aio_write: (libc)Asynchronous Reads/Writes.
-* aio_write64: (libc)Asynchronous Reads/Writes.
-* alarm: (libc)Setting an Alarm.
-* aligned_alloc: (libc)Aligned Memory Blocks.
-* alloca: (libc)Variable Size Automatic.
-* alphasort: (libc)Scanning Directory Content.
-* alphasort64: (libc)Scanning Directory Content.
-* ALTWERASE: (libc)Local Modes.
-* arc4random_buf: (libc)High Quality Random.
-* arc4random_uniform: (libc)High Quality Random.
-* arc4random: (libc)High Quality Random.
-* ARG_MAX: (libc)General Limits.
-* ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
-* argp_error: (libc)Argp Helper Functions.
-* argp_failure: (libc)Argp Helper Functions.
-* argp_help: (libc)Argp Help.
-* argp_parse: (libc)Argp.
-* argp_state_help: (libc)Argp Helper Functions.
-* argp_usage: (libc)Argp Helper Functions.
-* argz_add_sep: (libc)Argz Functions.
-* argz_add: (libc)Argz Functions.
-* argz_append: (libc)Argz Functions.
-* argz_count: (libc)Argz Functions.
-* argz_create_sep: (libc)Argz Functions.
-* argz_create: (libc)Argz Functions.
-* argz_delete: (libc)Argz Functions.
-* argz_extract: (libc)Argz Functions.
-* argz_insert: (libc)Argz Functions.
-* argz_next: (libc)Argz Functions.
-* argz_replace: (libc)Argz Functions.
-* argz_stringify: (libc)Argz Functions.
-* asctime_r: (libc)Formatting Calendar Time.
-* asctime: (libc)Formatting Calendar Time.
-* asinfNx: (libc)Inverse Trig Functions.
-* asinfN: (libc)Inverse Trig Functions.
-* asinf: (libc)Inverse Trig Functions.
-* asinhfNx: (libc)Hyperbolic Functions.
-* asinhfN: (libc)Hyperbolic Functions.
-* asinhf: (libc)Hyperbolic Functions.
-* asinhl: (libc)Hyperbolic Functions.
-* asinh: (libc)Hyperbolic Functions.
-* asinl: (libc)Inverse Trig Functions.
-* asin: (libc)Inverse Trig Functions.
-* asprintf: (libc)Dynamic Output.
-* assert_perror: (libc)Consistency Checking.
-* assert: (libc)Consistency Checking.
-* atan2f: (libc)Inverse Trig Functions.
-* atan2: (libc)Inverse Trig Functions.
-* atanfNx: (libc)Inverse Trig Functions.
-* atanfN: (libc)Inverse Trig Functions.
-* atanf: (libc)Inverse Trig Functions.
-* atanhfNx: (libc)Hyperbolic Functions.
-* atanhfN: (libc)Hyperbolic Functions.
-* atanhf: (libc)Hyperbolic Functions.
-* atanhl: (libc)Hyperbolic Functions.
-* atanh: (libc)Hyperbolic Functions.
-* atanl: (libc)Inverse Trig Functions.
-* atan: (libc)Inverse Trig Functions.
-* atan2fNx: (libc)Inverse Trig Functions.
-* atan2fN: (libc)Inverse Trig Functions.
-* atan2l: (libc)Inverse Trig Functions.
-* atexit: (libc)Cleanups on Exit.
-* atof: (libc)Parsing of Floats.
-* atoi: (libc)Parsing of Integers.
-* atoll: (libc)Parsing of Integers.
-* atol: (libc)Parsing of Integers.
-* backtrace_symbols_fd: (libc)Backtraces.
-* backtrace_symbols: (libc)Backtraces.
-* backtrace: (libc)Backtraces.
-* basename: (libc)Finding Tokens in a String.
-* basename: (libc)Finding Tokens in a String.
-* BC_BASE_MAX: (libc)Utility Limits.
-* BC_DIM_MAX: (libc)Utility Limits.
-* BC_SCALE_MAX: (libc)Utility Limits.
-* BC_STRING_MAX: (libc)Utility Limits.
-* bcmp: (libc)String/Array Comparison.
-* bcopy: (libc)Copying Strings and Arrays.
-* bind_textdomain_codeset: (libc)Charset conversion in gettext.
-* bindtextdomain: (libc)Locating gettext catalog.
-* bind: (libc)Setting Address.
-* brk: (libc)Resizing the Data Segment.
-* BRKINT: (libc)Input Modes.
-* bsearch: (libc)Array Search Function.
-* btowc: (libc)Converting a Character.
-* BUFSIZ: (libc)Controlling Buffering.
-* bzero: (libc)Copying Strings and Arrays.
-* cabsfNx: (libc)Absolute Value.
-* cabsfN: (libc)Absolute Value.
-* cabsf: (libc)Absolute Value.
-* cabsl: (libc)Absolute Value.
-* cabs: (libc)Absolute Value.
-* cacosfNx: (libc)Inverse Trig Functions.
-* cacosfN: (libc)Inverse Trig Functions.
-* cacosf: (libc)Inverse Trig Functions.
-* cacoshfNx: (libc)Hyperbolic Functions.
-* cacoshfN: (libc)Hyperbolic Functions.
-* cacoshf: (libc)Hyperbolic Functions.
-* cacoshl: (libc)Hyperbolic Functions.
-* cacosh: (libc)Hyperbolic Functions.
-* cacosl: (libc)Inverse Trig Functions.
-* cacos: (libc)Inverse Trig Functions.
-* call_once: (libc)Call Once.
-* calloc: (libc)Allocating Cleared Space.
-* canonicalize_file_name: (libc)Symbolic Links.
-* canonicalizefNx: (libc)FP Bit Twiddling.
-* canonicalizefN: (libc)FP Bit Twiddling.
-* canonicalizef: (libc)FP Bit Twiddling.
-* canonicalizel: (libc)FP Bit Twiddling.
-* canonicalize: (libc)FP Bit Twiddling.
-* cargfNx: (libc)Operations on Complex.
-* cargfN: (libc)Operations on Complex.
-* cargf: (libc)Operations on Complex.
-* cargl: (libc)Operations on Complex.
-* carg: (libc)Operations on Complex.
-* casinfNx: (libc)Inverse Trig Functions.
-* casinfN: (libc)Inverse Trig Functions.
-* casinf: (libc)Inverse Trig Functions.
-* casinhfNx: (libc)Hyperbolic Functions.
-* casinhfN: (libc)Hyperbolic Functions.
-* casinhf: (libc)Hyperbolic Functions.
-* casinhl: (libc)Hyperbolic Functions.
-* casinh: (libc)Hyperbolic Functions.
-* casinl: (libc)Inverse Trig Functions.
-* casin: (libc)Inverse Trig Functions.
-* catanfNx: (libc)Inverse Trig Functions.
-* catanfN: (libc)Inverse Trig Functions.
-* catanf: (libc)Inverse Trig Functions.
-* catanhfNx: (libc)Hyperbolic Functions.
-* catanhfN: (libc)Hyperbolic Functions.
-* catanhf: (libc)Hyperbolic Functions.
-* catanhl: (libc)Hyperbolic Functions.
-* catanh: (libc)Hyperbolic Functions.
-* catanl: (libc)Inverse Trig Functions.
-* catan: (libc)Inverse Trig Functions.
-* catclose: (libc)The catgets Functions.
-* catgets: (libc)The catgets Functions.
-* catopen: (libc)The catgets Functions.
-* cbrtfNx: (libc)Exponents and Logarithms.
-* cbrtfN: (libc)Exponents and Logarithms.
-* cbrtf: (libc)Exponents and Logarithms.
-* cbrtl: (libc)Exponents and Logarithms.
-* cbrt: (libc)Exponents and Logarithms.
-* ccosfNx: (libc)Trig Functions.
-* ccosfN: (libc)Trig Functions.
-* ccosf: (libc)Trig Functions.
-* ccoshfNx: (libc)Hyperbolic Functions.
-* ccoshfN: (libc)Hyperbolic Functions.
-* ccoshf: (libc)Hyperbolic Functions.
-* ccoshl: (libc)Hyperbolic Functions.
-* ccosh: (libc)Hyperbolic Functions.
-* ccosl: (libc)Trig Functions.
-* ccos: (libc)Trig Functions.
-* CCTS_OFLOW: (libc)Control Modes.
-* ceilfNx: (libc)Rounding Functions.
-* ceilfN: (libc)Rounding Functions.
-* ceilf: (libc)Rounding Functions.
-* ceill: (libc)Rounding Functions.
-* ceil: (libc)Rounding Functions.
-* cexpfNx: (libc)Exponents and Logarithms.
-* cexpfN: (libc)Exponents and Logarithms.
-* cexpf: (libc)Exponents and Logarithms.
-* cexpl: (libc)Exponents and Logarithms.
-* cexp: (libc)Exponents and Logarithms.
-* cfgetispeed: (libc)Line Speed.
-* cfgetospeed: (libc)Line Speed.
-* cfmakeraw: (libc)Noncanonical Input.
-* cfsetispeed: (libc)Line Speed.
-* cfsetospeed: (libc)Line Speed.
-* cfsetspeed: (libc)Line Speed.
-* CHAR_BIT: (libc)Width of Type.
-* chdir: (libc)Working Directory.
-* CHILD_MAX: (libc)General Limits.
-* chmod: (libc)Setting Permissions.
-* chown: (libc)File Owner.
-* CIGNORE: (libc)Control Modes.
-* cimagfNx: (libc)Operations on Complex.
-* cimagfN: (libc)Operations on Complex.
-* cimagf: (libc)Operations on Complex.
-* cimagl: (libc)Operations on Complex.
-* cimag: (libc)Operations on Complex.
-* clearenv: (libc)Environment Access.
-* clearerr_unlocked: (libc)Error Recovery.
-* clearerr: (libc)Error Recovery.
-* CLK_TCK: (libc)Processor Time.
-* CLOCAL: (libc)Control Modes.
-* clock_getres: (libc)Getting the Time.
-* clock_gettime: (libc)Getting the Time.
-* CLOCK_MONOTONIC: (libc)Getting the Time.
-* CLOCK_REALTIME: (libc)Getting the Time.
-* clock_settime: (libc)Setting and Adjusting the Time.
-* clock: (libc)CPU Time.
-* CLOCKS_PER_SEC: (libc)CPU Time.
-* clog10fNx: (libc)Exponents and Logarithms.
-* clog10fN: (libc)Exponents and Logarithms.
-* clog10f: (libc)Exponents and Logarithms.
-* clog10l: (libc)Exponents and Logarithms.
-* clog10: (libc)Exponents and Logarithms.
-* clogfNx: (libc)Exponents and Logarithms.
-* clogfN: (libc)Exponents and Logarithms.
-* clogf: (libc)Exponents and Logarithms.
-* clogl: (libc)Exponents and Logarithms.
-* clog: (libc)Exponents and Logarithms.
-* close_range: (libc)Opening and Closing Files.
-* closedir: (libc)Reading/Closing Directory.
-* closefrom: (libc)Opening and Closing Files.
-* closelog: (libc)closelog.
-* close: (libc)Opening and Closing Files.
-* cnd_broadcast: (libc)ISO C Condition Variables.
-* cnd_destroy: (libc)ISO C Condition Variables.
-* cnd_init: (libc)ISO C Condition Variables.
-* cnd_signal: (libc)ISO C Condition Variables.
-* cnd_timedwait: (libc)ISO C Condition Variables.
-* cnd_wait: (libc)ISO C Condition Variables.
-* COLL_WEIGHTS_MAX: (libc)Utility Limits.
-* confstr: (libc)String Parameters.
-* conjfNx: (libc)Operations on Complex.
-* conjfN: (libc)Operations on Complex.
-* conjf: (libc)Operations on Complex.
-* conjl: (libc)Operations on Complex.
-* conj: (libc)Operations on Complex.
-* connect: (libc)Connecting.
-* copy_file_range: (libc)Copying File Data.
-* copysignfNx: (libc)FP Bit Twiddling.
-* copysignfN: (libc)FP Bit Twiddling.
-* copysignf: (libc)FP Bit Twiddling.
-* copysignl: (libc)FP Bit Twiddling.
-* copysign: (libc)FP Bit Twiddling.
-* cosfNx: (libc)Trig Functions.
-* cosfN: (libc)Trig Functions.
-* cosf: (libc)Trig Functions.
-* coshfNx: (libc)Hyperbolic Functions.
-* coshfN: (libc)Hyperbolic Functions.
-* coshf: (libc)Hyperbolic Functions.
-* coshl: (libc)Hyperbolic Functions.
-* cosh: (libc)Hyperbolic Functions.
-* cosl: (libc)Trig Functions.
-* cos: (libc)Trig Functions.
-* cpowfNx: (libc)Exponents and Logarithms.
-* cpowfN: (libc)Exponents and Logarithms.
-* cpowf: (libc)Exponents and Logarithms.
-* cpowl: (libc)Exponents and Logarithms.
-* cpow: (libc)Exponents and Logarithms.
-* cprojfNx: (libc)Operations on Complex.
-* cprojfN: (libc)Operations on Complex.
-* cprojf: (libc)Operations on Complex.
-* cprojl: (libc)Operations on Complex.
-* cproj: (libc)Operations on Complex.
-* CPU_CLR: (libc)CPU Affinity.
-* CPU_FEATURE_ACTIVE: (libc)X86.
-* CPU_FEATURE_PRESENT: (libc)X86.
-* CPU_ISSET: (libc)CPU Affinity.
-* CPU_SETSIZE: (libc)CPU Affinity.
-* CPU_SET: (libc)CPU Affinity.
-* CPU_ZERO: (libc)CPU Affinity.
-* CREAD: (libc)Control Modes.
-* crealfNx: (libc)Operations on Complex.
-* crealfN: (libc)Operations on Complex.
-* crealf: (libc)Operations on Complex.
-* creall: (libc)Operations on Complex.
-* creal: (libc)Operations on Complex.
-* creat: (libc)Opening and Closing Files.
-* creat64: (libc)Opening and Closing Files.
-* CRTS_IFLOW: (libc)Control Modes.
-* crypt_r: (libc)Passphrase Storage.
-* crypt: (libc)Passphrase Storage.
-* CS5: (libc)Control Modes.
-* CS6: (libc)Control Modes.
-* CS7: (libc)Control Modes.
-* CS8: (libc)Control Modes.
-* csinfNx: (libc)Trig Functions.
-* csinfN: (libc)Trig Functions.
-* csinf: (libc)Trig Functions.
-* csinhfNx: (libc)Hyperbolic Functions.
-* csinhfN: (libc)Hyperbolic Functions.
-* csinhf: (libc)Hyperbolic Functions.
-* csinhl: (libc)Hyperbolic Functions.
-* csinh: (libc)Hyperbolic Functions.
-* csinl: (libc)Trig Functions.
-* csin: (libc)Trig Functions.
-* CSIZE: (libc)Control Modes.
-* csqrtfNx: (libc)Exponents and Logarithms.
-* csqrtfN: (libc)Exponents and Logarithms.
-* csqrtf: (libc)Exponents and Logarithms.
-* csqrtl: (libc)Exponents and Logarithms.
-* csqrt: (libc)Exponents and Logarithms.
-* CSTOPB: (libc)Control Modes.
-* ctanfNx: (libc)Trig Functions.
-* ctanfN: (libc)Trig Functions.
-* ctanf: (libc)Trig Functions.
-* ctanhfNx: (libc)Hyperbolic Functions.
-* ctanhfN: (libc)Hyperbolic Functions.
-* ctanhf: (libc)Hyperbolic Functions.
-* ctanhl: (libc)Hyperbolic Functions.
-* ctanh: (libc)Hyperbolic Functions.
-* ctanl: (libc)Trig Functions.
-* ctan: (libc)Trig Functions.
-* ctermid: (libc)Identifying the Terminal.
-* ctime_r: (libc)Formatting Calendar Time.
-* ctime: (libc)Formatting Calendar Time.
-* cuserid: (libc)Who Logged In.
-* daddl: (libc)Misc FP Arithmetic.
-* dcgettext: (libc)Translation with gettext.
-* dcngettext: (libc)Advanced gettext functions.
-* ddivl: (libc)Misc FP Arithmetic.
-* dfmal: (libc)Misc FP Arithmetic.
-* dgettext: (libc)Translation with gettext.
-* difftime: (libc)Calculating Elapsed Time.
-* dirfd: (libc)Opening a Directory.
-* dirname: (libc)Finding Tokens in a String.
-* div: (libc)Integer Division.
-* DLFO_EH_SEGMENT_TYPE: (libc)Dynamic Linker Introspection.
-* DLFO_STRUCT_HAS_EH_COUNT: (libc)Dynamic Linker Introspection.
-* DLFO_STRUCT_HAS_EH_DBASE: (libc)Dynamic Linker Introspection.
-* dlinfo: (libc)Dynamic Linker Introspection.
-* dmull: (libc)Misc FP Arithmetic.
-* dngettext: (libc)Advanced gettext functions.
-* drand48_r: (libc)SVID Random.
-* drand48: (libc)SVID Random.
-* dremf: (libc)Remainder Functions.
-* dreml: (libc)Remainder Functions.
-* drem: (libc)Remainder Functions.
-* dsqrtl: (libc)Misc FP Arithmetic.
-* dsubl: (libc)Misc FP Arithmetic.
-* DTTOIF: (libc)Directory Entries.
-* dup: (libc)Duplicating Descriptors.
-* dup2: (libc)Duplicating Descriptors.
-* E2BIG: (libc)Error Codes.
-* EACCES: (libc)Error Codes.
-* EADDRINUSE: (libc)Error Codes.
-* EADDRNOTAVAIL: (libc)Error Codes.
-* EADV: (libc)Error Codes.
-* EAFNOSUPPORT: (libc)Error Codes.
-* EAGAIN: (libc)Error Codes.
-* EALREADY: (libc)Error Codes.
-* EAUTH: (libc)Error Codes.
-* EBACKGROUND: (libc)Error Codes.
-* EBADE: (libc)Error Codes.
-* EBADFD: (libc)Error Codes.
-* EBADF: (libc)Error Codes.
-* EBADMSG: (libc)Error Codes.
-* EBADRPC: (libc)Error Codes.
-* EBADRQC: (libc)Error Codes.
-* EBADR: (libc)Error Codes.
-* EBADSLT: (libc)Error Codes.
-* EBFONT: (libc)Error Codes.
-* EBUSY: (libc)Error Codes.
-* ECANCELED: (libc)Error Codes.
-* ECHILD: (libc)Error Codes.
-* ECHOCTL: (libc)Local Modes.
-* ECHOE: (libc)Local Modes.
-* ECHOKE: (libc)Local Modes.
-* ECHOK: (libc)Local Modes.
-* ECHONL: (libc)Local Modes.
-* ECHOPRT: (libc)Local Modes.
-* ECHO: (libc)Local Modes.
-* ECHRNG: (libc)Error Codes.
-* ECOMM: (libc)Error Codes.
-* ECONNABORTED: (libc)Error Codes.
-* ECONNREFUSED: (libc)Error Codes.
-* ECONNRESET: (libc)Error Codes.
-* ecvt_r: (libc)System V Number Conversion.
-* ecvt: (libc)System V Number Conversion.
-* EDEADLK: (libc)Error Codes.
-* EDEADLOCK: (libc)Error Codes.
-* EDESTADDRREQ: (libc)Error Codes.
-* EDIED: (libc)Error Codes.
-* EDOM: (libc)Error Codes.
-* EDOTDOT: (libc)Error Codes.
-* EDQUOT: (libc)Error Codes.
-* ED: (libc)Error Codes.
-* EEXIST: (libc)Error Codes.
-* EFAULT: (libc)Error Codes.
-* EFBIG: (libc)Error Codes.
-* EFTYPE: (libc)Error Codes.
-* EGRATUITOUS: (libc)Error Codes.
-* EGREGIOUS: (libc)Error Codes.
-* EHOSTDOWN: (libc)Error Codes.
-* EHOSTUNREACH: (libc)Error Codes.
-* EHWPOISON: (libc)Error Codes.
-* EIDRM: (libc)Error Codes.
-* EIEIO: (libc)Error Codes.
-* EILSEQ: (libc)Error Codes.
-* EINPROGRESS: (libc)Error Codes.
-* EINTR: (libc)Error Codes.
-* EINVAL: (libc)Error Codes.
-* EIO: (libc)Error Codes.
-* EISCONN: (libc)Error Codes.
-* EISDIR: (libc)Error Codes.
-* EISNAM: (libc)Error Codes.
-* EKEYEXPIRED: (libc)Error Codes.
-* EKEYREJECTED: (libc)Error Codes.
-* EKEYREVOKED: (libc)Error Codes.
-* EL2HLT: (libc)Error Codes.
-* EL2NSYNC: (libc)Error Codes.
-* EL3HLT: (libc)Error Codes.
-* EL3RST: (libc)Error Codes.
-* ELIBACC: (libc)Error Codes.
-* ELIBBAD: (libc)Error Codes.
-* ELIBEXEC: (libc)Error Codes.
-* ELIBMAX: (libc)Error Codes.
-* ELIBSCN: (libc)Error Codes.
-* ELNRNG: (libc)Error Codes.
-* ELOOP: (libc)Error Codes.
-* EMEDIUMTYPE: (libc)Error Codes.
-* EMFILE: (libc)Error Codes.
-* EMLINK: (libc)Error Codes.
-* EMSGSIZE: (libc)Error Codes.
-* EMULTIHOP: (libc)Error Codes.
-* ENAMETOOLONG: (libc)Error Codes.
-* ENAVAIL: (libc)Error Codes.
-* endfsent: (libc)fstab.
-* endgrent: (libc)Scanning All Groups.
-* endhostent: (libc)Host Names.
-* endmntent: (libc)mtab.
-* endnetent: (libc)Networks Database.
-* endnetgrent: (libc)Lookup Netgroup.
-* endprotoent: (libc)Protocols Database.
-* endpwent: (libc)Scanning All Users.
-* endservent: (libc)Services Database.
-* endutent: (libc)Manipulating the Database.
-* endutxent: (libc)XPG Functions.
-* ENEEDAUTH: (libc)Error Codes.
-* ENETDOWN: (libc)Error Codes.
-* ENETRESET: (libc)Error Codes.
-* ENETUNREACH: (libc)Error Codes.
-* ENFILE: (libc)Error Codes.
-* ENOANO: (libc)Error Codes.
-* ENOBUFS: (libc)Error Codes.
-* ENOCSI: (libc)Error Codes.
-* ENODATA: (libc)Error Codes.
-* ENODEV: (libc)Error Codes.
-* ENOENT: (libc)Error Codes.
-* ENOEXEC: (libc)Error Codes.
-* ENOKEY: (libc)Error Codes.
-* ENOLCK: (libc)Error Codes.
-* ENOLINK: (libc)Error Codes.
-* ENOMEDIUM: (libc)Error Codes.
-* ENOMEM: (libc)Error Codes.
-* ENOMSG: (libc)Error Codes.
-* ENONET: (libc)Error Codes.
-* ENOPKG: (libc)Error Codes.
-* ENOPROTOOPT: (libc)Error Codes.
-* ENOSPC: (libc)Error Codes.
-* ENOSR: (libc)Error Codes.
-* ENOSTR: (libc)Error Codes.
-* ENOSYS: (libc)Error Codes.
-* ENOTBLK: (libc)Error Codes.
-* ENOTCONN: (libc)Error Codes.
-* ENOTDIR: (libc)Error Codes.
-* ENOTEMPTY: (libc)Error Codes.
-* ENOTNAM: (libc)Error Codes.
-* ENOTRECOVERABLE: (libc)Error Codes.
-* ENOTSOCK: (libc)Error Codes.
-* ENOTSUP: (libc)Error Codes.
-* ENOTTY: (libc)Error Codes.
-* ENOTUNIQ: (libc)Error Codes.
-* envz_add: (libc)Envz Functions.
-* envz_entry: (libc)Envz Functions.
-* envz_get: (libc)Envz Functions.
-* envz_merge: (libc)Envz Functions.
-* envz_remove: (libc)Envz Functions.
-* envz_strip: (libc)Envz Functions.
-* ENXIO: (libc)Error Codes.
-* EOF: (libc)EOF and Errors.
-* EOPNOTSUPP: (libc)Error Codes.
-* EOVERFLOW: (libc)Error Codes.
-* EOWNERDEAD: (libc)Error Codes.
-* EPERM: (libc)Error Codes.
-* EPFNOSUPPORT: (libc)Error Codes.
-* EPIPE: (libc)Error Codes.
-* EPROCLIM: (libc)Error Codes.
-* EPROCUNAVAIL: (libc)Error Codes.
-* EPROGMISMATCH: (libc)Error Codes.
-* EPROGUNAVAIL: (libc)Error Codes.
-* EPROTONOSUPPORT: (libc)Error Codes.
-* EPROTOTYPE: (libc)Error Codes.
-* EPROTO: (libc)Error Codes.
-* EQUIV_CLASS_MAX: (libc)Utility Limits.
-* erand48_r: (libc)SVID Random.
-* erand48: (libc)SVID Random.
-* ERANGE: (libc)Error Codes.
-* EREMCHG: (libc)Error Codes.
-* EREMOTEIO: (libc)Error Codes.
-* EREMOTE: (libc)Error Codes.
-* ERESTART: (libc)Error Codes.
-* erfcfNx: (libc)Special Functions.
-* erfcfN: (libc)Special Functions.
-* erfcf: (libc)Special Functions.
-* erfcl: (libc)Special Functions.
-* erfc: (libc)Special Functions.
-* erffNx: (libc)Special Functions.
-* erffN: (libc)Special Functions.
-* erff: (libc)Special Functions.
-* ERFKILL: (libc)Error Codes.
-* erfl: (libc)Special Functions.
-* erf: (libc)Special Functions.
-* EROFS: (libc)Error Codes.
-* ERPCMISMATCH: (libc)Error Codes.
-* errno: (libc)Checking for Errors.
-* error_at_line: (libc)Error Messages.
-* error: (libc)Error Messages.
-* errx: (libc)Error Messages.
-* err: (libc)Error Messages.
-* ESHUTDOWN: (libc)Error Codes.
-* ESOCKTNOSUPPORT: (libc)Error Codes.
-* ESPIPE: (libc)Error Codes.
-* ESRCH: (libc)Error Codes.
-* ESRMNT: (libc)Error Codes.
-* ESTALE: (libc)Error Codes.
-* ESTRPIPE: (libc)Error Codes.
-* ETIMEDOUT: (libc)Error Codes.
-* ETIME: (libc)Error Codes.
-* ETOOMANYREFS: (libc)Error Codes.
-* ETXTBSY: (libc)Error Codes.
-* EUCLEAN: (libc)Error Codes.
-* EUNATCH: (libc)Error Codes.
-* EUSERS: (libc)Error Codes.
-* EWOULDBLOCK: (libc)Error Codes.
-* EXDEV: (libc)Error Codes.
-* execle: (libc)Executing a File.
-* execlp: (libc)Executing a File.
-* execl: (libc)Executing a File.
-* execve: (libc)Executing a File.
-* execvp: (libc)Executing a File.
-* execv: (libc)Executing a File.
-* EXFULL: (libc)Error Codes.
-* exit: (libc)Normal Termination.
-* EXIT_FAILURE: (libc)Exit Status.
-* EXIT_SUCCESS: (libc)Exit Status.
-* exp10fNx: (libc)Exponents and Logarithms.
-* exp10fN: (libc)Exponents and Logarithms.
-* exp10f: (libc)Exponents and Logarithms.
-* exp10l: (libc)Exponents and Logarithms.
-* exp10: (libc)Exponents and Logarithms.
-* exp2f: (libc)Exponents and Logarithms.
-* exp2: (libc)Exponents and Logarithms.
-* expfNx: (libc)Exponents and Logarithms.
-* expfN: (libc)Exponents and Logarithms.
-* expf: (libc)Exponents and Logarithms.
-* explicit_bzero: (libc)Erasing Sensitive Data.
-* expl: (libc)Exponents and Logarithms.
-* expm1fNx: (libc)Exponents and Logarithms.
-* expm1fN: (libc)Exponents and Logarithms.
-* expm1f: (libc)Exponents and Logarithms.
-* expm1l: (libc)Exponents and Logarithms.
-* expm1: (libc)Exponents and Logarithms.
-* exp: (libc)Exponents and Logarithms.
-* exp2fNx: (libc)Exponents and Logarithms.
-* exp2fN: (libc)Exponents and Logarithms.
-* exp2l: (libc)Exponents and Logarithms.
-* EXPR_NEST_MAX: (libc)Utility Limits.
-* F_DUPFD: (libc)Duplicating Descriptors.
-* F_GETFD: (libc)Descriptor Flags.
-* F_GETFL: (libc)Getting File Status Flags.
-* F_GETLK: (libc)File Locks.
-* F_GETOWN: (libc)Interrupt Input.
-* F_OFD_GETLK: (libc)Open File Description Locks.
-* F_OFD_SETLKW: (libc)Open File Description Locks.
-* F_OFD_SETLK: (libc)Open File Description Locks.
-* F_OK: (libc)Testing File Access.
-* F_SETFD: (libc)Descriptor Flags.
-* F_SETFL: (libc)Getting File Status Flags.
-* F_SETLKW: (libc)File Locks.
-* F_SETLK: (libc)File Locks.
-* F_SETOWN: (libc)Interrupt Input.
-* fabsfNx: (libc)Absolute Value.
-* fabsfN: (libc)Absolute Value.
-* fabsf: (libc)Absolute Value.
-* fabsl: (libc)Absolute Value.
-* fabs: (libc)Absolute Value.
-* faddl: (libc)Misc FP Arithmetic.
-* fadd: (libc)Misc FP Arithmetic.
-* fchdir: (libc)Working Directory.
-* fchmod: (libc)Setting Permissions.
-* fchown: (libc)File Owner.
-* fcloseall: (libc)Closing Streams.
-* fclose: (libc)Closing Streams.
-* fcntl: (libc)Control Operations.
-* fcvt_r: (libc)System V Number Conversion.
-* fcvt: (libc)System V Number Conversion.
-* FD_CLOEXEC: (libc)Descriptor Flags.
-* FD_CLR: (libc)Waiting for I/O.
-* FD_ISSET: (libc)Waiting for I/O.
-* FD_SETSIZE: (libc)Waiting for I/O.
-* FD_SET: (libc)Waiting for I/O.
-* FD_ZERO: (libc)Waiting for I/O.
-* fdatasync: (libc)Synchronizing I/O.
-* fdimfNx: (libc)Misc FP Arithmetic.
-* fdimfN: (libc)Misc FP Arithmetic.
-* fdimf: (libc)Misc FP Arithmetic.
-* fdiml: (libc)Misc FP Arithmetic.
-* fdim: (libc)Misc FP Arithmetic.
-* fdivl: (libc)Misc FP Arithmetic.
-* fdiv: (libc)Misc FP Arithmetic.
-* fdopendir: (libc)Opening a Directory.
-* fdopen: (libc)Descriptors and Streams.
-* FE_SNANS_ALWAYS_SIGNAL: (libc)Infinity and NaN.
-* feclearexcept: (libc)Status bit operations.
-* fedisableexcept: (libc)Control Functions.
-* feenableexcept: (libc)Control Functions.
-* fegetenv: (libc)Control Functions.
-* fegetexceptflag: (libc)Status bit operations.
-* fegetexcept: (libc)Control Functions.
-* fegetmode: (libc)Control Functions.
-* fegetround: (libc)Rounding.
-* feholdexcept: (libc)Control Functions.
-* feof_unlocked: (libc)EOF and Errors.
-* feof: (libc)EOF and Errors.
-* feraiseexcept: (libc)Status bit operations.
-* ferror_unlocked: (libc)EOF and Errors.
-* ferror: (libc)EOF and Errors.
-* fesetenv: (libc)Control Functions.
-* fesetexceptflag: (libc)Status bit operations.
-* fesetexcept: (libc)Status bit operations.
-* fesetmode: (libc)Control Functions.
-* fesetround: (libc)Rounding.
-* fetestexceptflag: (libc)Status bit operations.
-* fetestexcept: (libc)Status bit operations.
-* feupdateenv: (libc)Control Functions.
-* fexecve: (libc)Executing a File.
-* fflush_unlocked: (libc)Flushing Buffers.
-* fflush: (libc)Flushing Buffers.
-* ffmal: (libc)Misc FP Arithmetic.
-* ffma: (libc)Misc FP Arithmetic.
-* fgetc_unlocked: (libc)Character Input.
-* fgetc: (libc)Character Input.
-* fgetgrent_r: (libc)Scanning All Groups.
-* fgetgrent: (libc)Scanning All Groups.
-* fgetpos: (libc)Portable Positioning.
-* fgetpos64: (libc)Portable Positioning.
-* fgetpwent_r: (libc)Scanning All Users.
-* fgetpwent: (libc)Scanning All Users.
-* fgets_unlocked: (libc)Line Input.
-* fgets: (libc)Line Input.
-* fgetwc_unlocked: (libc)Character Input.
-* fgetwc: (libc)Character Input.
-* fgetws_unlocked: (libc)Line Input.
-* fgetws: (libc)Line Input.
-* FILENAME_MAX: (libc)Limits for Files.
-* fileno_unlocked: (libc)Descriptors and Streams.
-* fileno: (libc)Descriptors and Streams.
-* finitef: (libc)Floating Point Classes.
-* finitel: (libc)Floating Point Classes.
-* finite: (libc)Floating Point Classes.
-* flockfile: (libc)Streams and Threads.
-* floorfNx: (libc)Rounding Functions.
-* floorfN: (libc)Rounding Functions.
-* floorf: (libc)Rounding Functions.
-* floorl: (libc)Rounding Functions.
-* floor: (libc)Rounding Functions.
-* FLUSHO: (libc)Local Modes.
-* fMaddfNx: (libc)Misc FP Arithmetic.
-* fMaddfN: (libc)Misc FP Arithmetic.
-* fmafNx: (libc)Misc FP Arithmetic.
-* fmafN: (libc)Misc FP Arithmetic.
-* fmaf: (libc)Misc FP Arithmetic.
-* fmal: (libc)Misc FP Arithmetic.
-* fmaxfNx: (libc)Misc FP Arithmetic.
-* fmaxfN: (libc)Misc FP Arithmetic.
-* fmaxf: (libc)Misc FP Arithmetic.
-* fmaximum_mag_numfNx: (libc)Misc FP Arithmetic.
-* fmaximum_mag_numfN: (libc)Misc FP Arithmetic.
-* fmaximum_mag_numf: (libc)Misc FP Arithmetic.
-* fmaximum_mag_numl: (libc)Misc FP Arithmetic.
-* fmaximum_mag_num: (libc)Misc FP Arithmetic.
-* fmaximum_magfNx: (libc)Misc FP Arithmetic.
-* fmaximum_magfN: (libc)Misc FP Arithmetic.
-* fmaximum_magf: (libc)Misc FP Arithmetic.
-* fmaximum_magl: (libc)Misc FP Arithmetic.
-* fmaximum_mag: (libc)Misc FP Arithmetic.
-* fmaximum_numfNx: (libc)Misc FP Arithmetic.
-* fmaximum_numfN: (libc)Misc FP Arithmetic.
-* fmaximum_numf: (libc)Misc FP Arithmetic.
-* fmaximum_numl: (libc)Misc FP Arithmetic.
-* fmaximum_num: (libc)Misc FP Arithmetic.
-* fmaximumfNx: (libc)Misc FP Arithmetic.
-* fmaximumfN: (libc)Misc FP Arithmetic.
-* fmaximumf: (libc)Misc FP Arithmetic.
-* fmaximuml: (libc)Misc FP Arithmetic.
-* fmaximum: (libc)Misc FP Arithmetic.
-* fmaxl: (libc)Misc FP Arithmetic.
-* fmaxmagfNx: (libc)Misc FP Arithmetic.
-* fmaxmagfN: (libc)Misc FP Arithmetic.
-* fmaxmagf: (libc)Misc FP Arithmetic.
-* fmaxmagl: (libc)Misc FP Arithmetic.
-* fmaxmag: (libc)Misc FP Arithmetic.
-* fmax: (libc)Misc FP Arithmetic.
-* fma: (libc)Misc FP Arithmetic.
-* fMdivfNx: (libc)Misc FP Arithmetic.
-* fMdivfN: (libc)Misc FP Arithmetic.
-* fmemopen: (libc)String Streams.
-* fMfmafNx: (libc)Misc FP Arithmetic.
-* fMfmafN: (libc)Misc FP Arithmetic.
-* fminfNx: (libc)Misc FP Arithmetic.
-* fminfN: (libc)Misc FP Arithmetic.
-* fminf: (libc)Misc FP Arithmetic.
-* fminimum_mag_numfNx: (libc)Misc FP Arithmetic.
-* fminimum_mag_numfN: (libc)Misc FP Arithmetic.
-* fminimum_mag_numf: (libc)Misc FP Arithmetic.
-* fminimum_mag_numl: (libc)Misc FP Arithmetic.
-* fminimum_mag_num: (libc)Misc FP Arithmetic.
-* fminimum_magfNx: (libc)Misc FP Arithmetic.
-* fminimum_magfN: (libc)Misc FP Arithmetic.
-* fminimum_magf: (libc)Misc FP Arithmetic.
-* fminimum_magl: (libc)Misc FP Arithmetic.
-* fminimum_mag: (libc)Misc FP Arithmetic.
-* fminimum_numfNx: (libc)Misc FP Arithmetic.
-* fminimum_numfN: (libc)Misc FP Arithmetic.
-* fminimum_numf: (libc)Misc FP Arithmetic.
-* fminimum_numl: (libc)Misc FP Arithmetic.
-* fminimum_num: (libc)Misc FP Arithmetic.
-* fminimumfNx: (libc)Misc FP Arithmetic.
-* fminimumfN: (libc)Misc FP Arithmetic.
-* fminimumf: (libc)Misc FP Arithmetic.
-* fminimuml: (libc)Misc FP Arithmetic.
-* fminimum: (libc)Misc FP Arithmetic.
-* fminl: (libc)Misc FP Arithmetic.
-* fminmagfNx: (libc)Misc FP Arithmetic.
-* fminmagfN: (libc)Misc FP Arithmetic.
-* fminmagf: (libc)Misc FP Arithmetic.
-* fminmagl: (libc)Misc FP Arithmetic.
-* fminmag: (libc)Misc FP Arithmetic.
-* fmin: (libc)Misc FP Arithmetic.
-* fMmulfNx: (libc)Misc FP Arithmetic.
-* fMmulfN: (libc)Misc FP Arithmetic.
-* fmodfNx: (libc)Remainder Functions.
-* fmodfN: (libc)Remainder Functions.
-* fmodf: (libc)Remainder Functions.
-* fmodl: (libc)Remainder Functions.
-* fmod: (libc)Remainder Functions.
-* fMsqrtfNx: (libc)Misc FP Arithmetic.
-* fMsqrtfN: (libc)Misc FP Arithmetic.
-* fMsubfNx: (libc)Misc FP Arithmetic.
-* fMsubfN: (libc)Misc FP Arithmetic.
-* fmtmsg: (libc)Printing Formatted Messages.
-* fmull: (libc)Misc FP Arithmetic.
-* fmul: (libc)Misc FP Arithmetic.
-* fMxaddfNx: (libc)Misc FP Arithmetic.
-* fMxaddfN: (libc)Misc FP Arithmetic.
-* fMxdivfNx: (libc)Misc FP Arithmetic.
-* fMxdivfN: (libc)Misc FP Arithmetic.
-* fMxfmafNx: (libc)Misc FP Arithmetic.
-* fMxfmafN: (libc)Misc FP Arithmetic.
-* fMxmulfNx: (libc)Misc FP Arithmetic.
-* fMxmulfN: (libc)Misc FP Arithmetic.
-* fMxsqrtfNx: (libc)Misc FP Arithmetic.
-* fMxsqrtfN: (libc)Misc FP Arithmetic.
-* fMxsubfNx: (libc)Misc FP Arithmetic.
-* fMxsubfN: (libc)Misc FP Arithmetic.
-* fnmatch: (libc)Wildcard Matching.
-* FOPEN_MAX: (libc)Opening Streams.
-* fopencookie: (libc)Streams and Cookies.
-* fopen: (libc)Opening Streams.
-* fopen64: (libc)Opening Streams.
-* forkpty: (libc)Pseudo-Terminal Pairs.
-* fork: (libc)Creating a Process.
-* FP_ILOGB0: (libc)Exponents and Logarithms.
-* FP_ILOGBNAN: (libc)Exponents and Logarithms.
-* FP_LLOGB0: (libc)Exponents and Logarithms.
-* FP_LLOGBNAN: (libc)Exponents and Logarithms.
-* fpathconf: (libc)Pathconf.
-* fpclassify: (libc)Floating Point Classes.
-* fprintf: (libc)Formatted Output Functions.
-* fputc_unlocked: (libc)Simple Output.
-* fputc: (libc)Simple Output.
-* fputs_unlocked: (libc)Simple Output.
-* fputs: (libc)Simple Output.
-* fputwc_unlocked: (libc)Simple Output.
-* fputwc: (libc)Simple Output.
-* fputws_unlocked: (libc)Simple Output.
-* fputws: (libc)Simple Output.
-* fread_unlocked: (libc)Block Input/Output.
-* fread: (libc)Block Input/Output.
-* free: (libc)Freeing after Malloc.
-* freopen: (libc)Opening Streams.
-* freopen64: (libc)Opening Streams.
-* frexpfNx: (libc)Normalization Functions.
-* frexpfN: (libc)Normalization Functions.
-* frexpf: (libc)Normalization Functions.
-* frexpl: (libc)Normalization Functions.
-* frexp: (libc)Normalization Functions.
-* fromfpfNx: (libc)Rounding Functions.
-* fromfpfN: (libc)Rounding Functions.
-* fromfpf: (libc)Rounding Functions.
-* fromfpl: (libc)Rounding Functions.
-* fromfpxfNx: (libc)Rounding Functions.
-* fromfpxfN: (libc)Rounding Functions.
-* fromfpxf: (libc)Rounding Functions.
-* fromfpxl: (libc)Rounding Functions.
-* fromfpx: (libc)Rounding Functions.
-* fromfp: (libc)Rounding Functions.
-* fscanf: (libc)Formatted Input Functions.
-* fseeko: (libc)File Positioning.
-* fseeko64: (libc)File Positioning.
-* fseek: (libc)File Positioning.
-* fsetpos: (libc)Portable Positioning.
-* fsetpos64: (libc)Portable Positioning.
-* fsqrtl: (libc)Misc FP Arithmetic.
-* fsqrt: (libc)Misc FP Arithmetic.
-* fstat: (libc)Reading Attributes.
-* fstat64: (libc)Reading Attributes.
-* fsubl: (libc)Misc FP Arithmetic.
-* fsub: (libc)Misc FP Arithmetic.
-* fsync: (libc)Synchronizing I/O.
-* ftello: (libc)File Positioning.
-* ftello64: (libc)File Positioning.
-* ftell: (libc)File Positioning.
-* ftruncate: (libc)File Size.
-* ftruncate64: (libc)File Size.
-* ftrylockfile: (libc)Streams and Threads.
-* ftw: (libc)Working with Directory Trees.
-* ftw64: (libc)Working with Directory Trees.
-* funlockfile: (libc)Streams and Threads.
-* futimes: (libc)File Times.
-* fwide: (libc)Streams and I18N.
-* fwprintf: (libc)Formatted Output Functions.
-* fwrite_unlocked: (libc)Block Input/Output.
-* fwrite: (libc)Block Input/Output.
-* fwscanf: (libc)Formatted Input Functions.
-* gammaf: (libc)Special Functions.
-* gammal: (libc)Special Functions.
-* gamma: (libc)Special Functions.
-* gcvt: (libc)System V Number Conversion.
-* get_avphys_pages: (libc)Query Memory Parameters.
-* get_current_dir_name: (libc)Working Directory.
-* get_nprocs_conf: (libc)Processor Resources.
-* get_nprocs: (libc)Processor Resources.
-* get_phys_pages: (libc)Query Memory Parameters.
-* getauxval: (libc)Auxiliary Vector.
-* getc_unlocked: (libc)Character Input.
-* getchar_unlocked: (libc)Character Input.
-* getchar: (libc)Character Input.
-* getcontext: (libc)System V contexts.
-* getcpu: (libc)CPU Affinity.
-* getcwd: (libc)Working Directory.
-* getc: (libc)Character Input.
-* getdate_r: (libc)General Time String Parsing.
-* getdate: (libc)General Time String Parsing.
-* getdelim: (libc)Line Input.
-* getdents64: (libc)Low-level Directory Access.
-* getdomainnname: (libc)Host Identification.
-* getegid: (libc)Reading Persona.
-* getentropy: (libc)Unpredictable Bytes.
-* getenv: (libc)Environment Access.
-* geteuid: (libc)Reading Persona.
-* getfsent: (libc)fstab.
-* getfsfile: (libc)fstab.
-* getfsspec: (libc)fstab.
-* getgid: (libc)Reading Persona.
-* getgrent_r: (libc)Scanning All Groups.
-* getgrent: (libc)Scanning All Groups.
-* getgrgid_r: (libc)Lookup Group.
-* getgrgid: (libc)Lookup Group.
-* getgrnam_r: (libc)Lookup Group.
-* getgrnam: (libc)Lookup Group.
-* getgrouplist: (libc)Setting Groups.
-* getgroups: (libc)Reading Persona.
-* gethostbyaddr_r: (libc)Host Names.
-* gethostbyaddr: (libc)Host Names.
-* gethostbyname2_r: (libc)Host Names.
-* gethostbyname2: (libc)Host Names.
-* gethostbyname_r: (libc)Host Names.
-* gethostbyname: (libc)Host Names.
-* gethostent: (libc)Host Names.
-* gethostid: (libc)Host Identification.
-* gethostname: (libc)Host Identification.
-* getitimer: (libc)Setting an Alarm.
-* getline: (libc)Line Input.
-* getloadavg: (libc)Processor Resources.
-* getlogin: (libc)Who Logged In.
-* getmntent_r: (libc)mtab.
-* getmntent: (libc)mtab.
-* getnetbyaddr: (libc)Networks Database.
-* getnetbyname: (libc)Networks Database.
-* getnetent: (libc)Networks Database.
-* getnetgrent_r: (libc)Lookup Netgroup.
-* getnetgrent: (libc)Lookup Netgroup.
-* getopt_long_only: (libc)Getopt Long Options.
-* getopt_long: (libc)Getopt Long Options.
-* getopt: (libc)Using Getopt.
-* getpagesize: (libc)Query Memory Parameters.
-* getpass: (libc)getpass.
-* getpayloadfNx: (libc)FP Bit Twiddling.
-* getpayloadfN: (libc)FP Bit Twiddling.
-* getpayloadf: (libc)FP Bit Twiddling.
-* getpayloadl: (libc)FP Bit Twiddling.
-* getpayload: (libc)FP Bit Twiddling.
-* getpeername: (libc)Who is Connected.
-* getpgid: (libc)Process Group Functions.
-* getpgrp: (libc)Process Group Functions.
-* getpid: (libc)Process Identification.
-* getppid: (libc)Process Identification.
-* getpriority: (libc)Traditional Scheduling Functions.
-* getprotobyname: (libc)Protocols Database.
-* getprotobynumber: (libc)Protocols Database.
-* getprotoent: (libc)Protocols Database.
-* getpt: (libc)Allocation.
-* getpwent_r: (libc)Scanning All Users.
-* getpwent: (libc)Scanning All Users.
-* getpwnam_r: (libc)Lookup User.
-* getpwnam: (libc)Lookup User.
-* getpwuid_r: (libc)Lookup User.
-* getpwuid: (libc)Lookup User.
-* getrandom: (libc)Unpredictable Bytes.
-* getrlimit: (libc)Limits on Resources.
-* getrlimit64: (libc)Limits on Resources.
-* getrusage: (libc)Resource Usage.
-* getservbyname: (libc)Services Database.
-* getservbyport: (libc)Services Database.
-* getservent: (libc)Services Database.
-* getsid: (libc)Process Group Functions.
-* getsockname: (libc)Reading Address.
-* getsockopt: (libc)Socket Option Functions.
-* getsubopt: (libc)Suboptions.
-* gets: (libc)Line Input.
-* gettext: (libc)Translation with gettext.
-* gettid: (libc)Process Identification.
-* gettimeofday: (libc)Getting the Time.
-* getuid: (libc)Reading Persona.
-* getumask: (libc)Setting Permissions.
-* getutent_r: (libc)Manipulating the Database.
-* getutent: (libc)Manipulating the Database.
-* getutid_r: (libc)Manipulating the Database.
-* getutid: (libc)Manipulating the Database.
-* getutline_r: (libc)Manipulating the Database.
-* getutline: (libc)Manipulating the Database.
-* getutmpx: (libc)XPG Functions.
-* getutmp: (libc)XPG Functions.
-* getutxent: (libc)XPG Functions.
-* getutxid: (libc)XPG Functions.
-* getutxline: (libc)XPG Functions.
-* getwc_unlocked: (libc)Character Input.
-* getwchar_unlocked: (libc)Character Input.
-* getwchar: (libc)Character Input.
-* getwc: (libc)Character Input.
-* getwd: (libc)Working Directory.
-* getw: (libc)Character Input.
-* globfree: (libc)More Flags for Globbing.
-* globfree64: (libc)More Flags for Globbing.
-* glob: (libc)Calling Glob.
-* glob64: (libc)Calling Glob.
-* gmtime_r: (libc)Broken-down Time.
-* gmtime: (libc)Broken-down Time.
-* grantpt: (libc)Allocation.
-* gsignal: (libc)Signaling Yourself.
-* gtty: (libc)BSD Terminal Modes.
-* hasmntopt: (libc)mtab.
-* hcreate_r: (libc)Hash Search Function.
-* hcreate: (libc)Hash Search Function.
-* hdestroy_r: (libc)Hash Search Function.
-* hdestroy: (libc)Hash Search Function.
-* hsearch_r: (libc)Hash Search Function.
-* hsearch: (libc)Hash Search Function.
-* htonl: (libc)Byte Order.
-* htons: (libc)Byte Order.
-* HUGE_VAL_FNx: (libc)Math Error Reporting.
-* HUGE_VAL_FN: (libc)Math Error Reporting.
-* HUGE_VALF: (libc)Math Error Reporting.
-* HUGE_VALL: (libc)Math Error Reporting.
-* HUGE_VAL: (libc)Math Error Reporting.
-* HUPCL: (libc)Control Modes.
-* hypotfNx: (libc)Exponents and Logarithms.
-* hypotfN: (libc)Exponents and Logarithms.
-* hypotf: (libc)Exponents and Logarithms.
-* hypotl: (libc)Exponents and Logarithms.
-* hypot: (libc)Exponents and Logarithms.
-* ICANON: (libc)Local Modes.
-* iconv_close: (libc)Generic Conversion Interface.
-* iconv_open: (libc)Generic Conversion Interface.
-* iconv: (libc)Generic Conversion Interface.
-* ICRNL: (libc)Input Modes.
-* IEXTEN: (libc)Local Modes.
-* if_freenameindex: (libc)Interface Naming.
-* if_indextoname: (libc)Interface Naming.
-* if_nameindex: (libc)Interface Naming.
-* if_nametoindex: (libc)Interface Naming.
-* IFNAMSIZ: (libc)Interface Naming.
-* IFTODT: (libc)Directory Entries.
-* IGNBRK: (libc)Input Modes.
-* IGNCR: (libc)Input Modes.
-* IGNPAR: (libc)Input Modes.
-* ilogbfNx: (libc)Exponents and Logarithms.
-* ilogbfN: (libc)Exponents and Logarithms.
-* ilogbf: (libc)Exponents and Logarithms.
-* ilogbl: (libc)Exponents and Logarithms.
-* ilogb: (libc)Exponents and Logarithms.
-* imaxabs: (libc)Absolute Value.
-* IMAXBEL: (libc)Input Modes.
-* imaxdiv: (libc)Integer Division.
-* in6addr_any: (libc)Host Address Data Type.
-* in6addr_loopback: (libc)Host Address Data Type.
-* INADDR_ANY: (libc)Host Address Data Type.
-* INADDR_BROADCAST: (libc)Host Address Data Type.
-* INADDR_LOOPBACK: (libc)Host Address Data Type.
-* INADDR_NONE: (libc)Host Address Data Type.
-* index: (libc)Search Functions.
-* inet_addr: (libc)Host Address Functions.
-* inet_aton: (libc)Host Address Functions.
-* inet_lnaof: (libc)Host Address Functions.
-* inet_makeaddr: (libc)Host Address Functions.
-* inet_netof: (libc)Host Address Functions.
-* inet_network: (libc)Host Address Functions.
-* inet_ntoa: (libc)Host Address Functions.
-* inet_ntop: (libc)Host Address Functions.
-* inet_pton: (libc)Host Address Functions.
-* INFINITY: (libc)Infinity and NaN.
-* initgroups: (libc)Setting Groups.
-* initstate_r: (libc)BSD Random.
-* initstate: (libc)BSD Random.
-* INLCR: (libc)Input Modes.
-* innetgr: (libc)Netgroup Membership.
-* INPCK: (libc)Input Modes.
-* ioctl: (libc)IOCTLs.
-* IPPORT_RESERVED: (libc)Ports.
-* IPPORT_USERRESERVED: (libc)Ports.
-* isalnum: (libc)Classification of Characters.
-* isalpha: (libc)Classification of Characters.
-* isascii: (libc)Classification of Characters.
-* isatty: (libc)Is It a Terminal.
-* isblank: (libc)Classification of Characters.
-* iscanonical: (libc)Floating Point Classes.
-* iscntrl: (libc)Classification of Characters.
-* isdigit: (libc)Classification of Characters.
-* iseqsig: (libc)FP Comparison Functions.
-* isfinite: (libc)Floating Point Classes.
-* isgraph: (libc)Classification of Characters.
-* isgreaterequal: (libc)FP Comparison Functions.
-* isgreater: (libc)FP Comparison Functions.
-* ISIG: (libc)Local Modes.
-* isinff: (libc)Floating Point Classes.
-* isinfl: (libc)Floating Point Classes.
-* isinf: (libc)Floating Point Classes.
-* islessequal: (libc)FP Comparison Functions.
-* islessgreater: (libc)FP Comparison Functions.
-* isless: (libc)FP Comparison Functions.
-* islower: (libc)Classification of Characters.
-* isnanf: (libc)Floating Point Classes.
-* isnanl: (libc)Floating Point Classes.
-* isnan: (libc)Floating Point Classes.
-* isnan: (libc)Floating Point Classes.
-* isnormal: (libc)Floating Point Classes.
-* isprint: (libc)Classification of Characters.
-* ispunct: (libc)Classification of Characters.
-* issignaling: (libc)Floating Point Classes.
-* isspace: (libc)Classification of Characters.
-* issubnormal: (libc)Floating Point Classes.
-* ISTRIP: (libc)Input Modes.
-* isunordered: (libc)FP Comparison Functions.
-* isupper: (libc)Classification of Characters.
-* iswalnum: (libc)Classification of Wide Characters.
-* iswalpha: (libc)Classification of Wide Characters.
-* iswblank: (libc)Classification of Wide Characters.
-* iswcntrl: (libc)Classification of Wide Characters.
-* iswctype: (libc)Classification of Wide Characters.
-* iswdigit: (libc)Classification of Wide Characters.
-* iswgraph: (libc)Classification of Wide Characters.
-* iswlower: (libc)Classification of Wide Characters.
-* iswprint: (libc)Classification of Wide Characters.
-* iswpunct: (libc)Classification of Wide Characters.
-* iswspace: (libc)Classification of Wide Characters.
-* iswupper: (libc)Classification of Wide Characters.
-* iswxdigit: (libc)Classification of Wide Characters.
-* isxdigit: (libc)Classification of Characters.
-* iszero: (libc)Floating Point Classes.
-* IXANY: (libc)Input Modes.
-* IXOFF: (libc)Input Modes.
-* IXON: (libc)Input Modes.
-* I: (libc)Complex Numbers.
-* j0fNx: (libc)Special Functions.
-* j0fN: (libc)Special Functions.
-* j0f: (libc)Special Functions.
-* j0l: (libc)Special Functions.
-* j0: (libc)Special Functions.
-* j1fNx: (libc)Special Functions.
-* j1fN: (libc)Special Functions.
-* j1f: (libc)Special Functions.
-* j1l: (libc)Special Functions.
-* j1: (libc)Special Functions.
-* jnfNx: (libc)Special Functions.
-* jnfN: (libc)Special Functions.
-* jnf: (libc)Special Functions.
-* jnl: (libc)Special Functions.
-* jn: (libc)Special Functions.
-* jrand48_r: (libc)SVID Random.
-* jrand48: (libc)SVID Random.
-* killpg: (libc)Signaling Another Process.
-* kill: (libc)Signaling Another Process.
-* l64a: (libc)Encode Binary Data.
-* L_ctermid: (libc)Identifying the Terminal.
-* L_cuserid: (libc)Who Logged In.
-* L_tmpnam: (libc)Temporary Files.
-* labs: (libc)Absolute Value.
-* lcong48_r: (libc)SVID Random.
-* lcong48: (libc)SVID Random.
-* ldexpfNx: (libc)Normalization Functions.
-* ldexpfN: (libc)Normalization Functions.
-* ldexpf: (libc)Normalization Functions.
-* ldexpl: (libc)Normalization Functions.
-* ldexp: (libc)Normalization Functions.
-* ldiv: (libc)Integer Division.
-* lfind: (libc)Array Search Function.
-* lgamma_r: (libc)Special Functions.
-* lgammaf_r: (libc)Special Functions.
-* lgammafN_r: (libc)Special Functions.
-* lgammafNx_r: (libc)Special Functions.
-* lgammafNx: (libc)Special Functions.
-* lgammafN: (libc)Special Functions.
-* lgammaf: (libc)Special Functions.
-* lgammal_r: (libc)Special Functions.
-* lgammal: (libc)Special Functions.
-* lgamma: (libc)Special Functions.
-* LINE_MAX: (libc)Utility Limits.
-* LINK_MAX: (libc)Limits for Files.
-* linkat: (libc)Hard Links.
-* link: (libc)Hard Links.
-* lio_listio: (libc)Asynchronous Reads/Writes.
-* lio_listio64: (libc)Asynchronous Reads/Writes.
-* listen: (libc)Listening.
-* llabs: (libc)Absolute Value.
-* lldiv: (libc)Integer Division.
-* llogbfNx: (libc)Exponents and Logarithms.
-* llogbfN: (libc)Exponents and Logarithms.
-* llogbf: (libc)Exponents and Logarithms.
-* llogbl: (libc)Exponents and Logarithms.
-* llogb: (libc)Exponents and Logarithms.
-* llrintfNx: (libc)Rounding Functions.
-* llrintfN: (libc)Rounding Functions.
-* llrintf: (libc)Rounding Functions.
-* llrintl: (libc)Rounding Functions.
-* llrint: (libc)Rounding Functions.
-* llroundfNx: (libc)Rounding Functions.
-* llroundfN: (libc)Rounding Functions.
-* llroundf: (libc)Rounding Functions.
-* llroundl: (libc)Rounding Functions.
-* llround: (libc)Rounding Functions.
-* localeconv: (libc)The Lame Way to Locale Data.
-* localtime_r: (libc)Broken-down Time.
-* localtime: (libc)Broken-down Time.
-* log10fNx: (libc)Exponents and Logarithms.
-* log10fN: (libc)Exponents and Logarithms.
-* log10f: (libc)Exponents and Logarithms.
-* log10l: (libc)Exponents and Logarithms.
-* log10: (libc)Exponents and Logarithms.
-* log1pfNx: (libc)Exponents and Logarithms.
-* log1pfN: (libc)Exponents and Logarithms.
-* log1pf: (libc)Exponents and Logarithms.
-* log1pl: (libc)Exponents and Logarithms.
-* log1p: (libc)Exponents and Logarithms.
-* log2fN: (libc)Exponents and Logarithms.
-* log2f: (libc)Exponents and Logarithms.
-* log2: (libc)Exponents and Logarithms.
-* logbfNx: (libc)Exponents and Logarithms.
-* logbfN: (libc)Exponents and Logarithms.
-* logbf: (libc)Exponents and Logarithms.
-* logbl: (libc)Exponents and Logarithms.
-* logb: (libc)Exponents and Logarithms.
-* logfNx: (libc)Exponents and Logarithms.
-* logfN: (libc)Exponents and Logarithms.
-* logf: (libc)Exponents and Logarithms.
-* login_tty: (libc)Logging In and Out.
-* login: (libc)Logging In and Out.
-* logl: (libc)Exponents and Logarithms.
-* logout: (libc)Logging In and Out.
-* logwtmp: (libc)Logging In and Out.
-* log: (libc)Exponents and Logarithms.
-* log2fNx: (libc)Exponents and Logarithms.
-* log2l: (libc)Exponents and Logarithms.
-* longjmp: (libc)Non-Local Details.
-* lrand48_r: (libc)SVID Random.
-* lrand48: (libc)SVID Random.
-* lrintfNx: (libc)Rounding Functions.
-* lrintfN: (libc)Rounding Functions.
-* lrintf: (libc)Rounding Functions.
-* lrintl: (libc)Rounding Functions.
-* lrint: (libc)Rounding Functions.
-* lroundfNx: (libc)Rounding Functions.
-* lroundfN: (libc)Rounding Functions.
-* lroundf: (libc)Rounding Functions.
-* lroundl: (libc)Rounding Functions.
-* lround: (libc)Rounding Functions.
-* lsearch: (libc)Array Search Function.
-* lseek: (libc)File Position Primitive.
-* lseek64: (libc)File Position Primitive.
-* lstat: (libc)Reading Attributes.
-* lstat64: (libc)Reading Attributes.
-* lutimes: (libc)File Times.
-* madvise: (libc)Memory-mapped I/O.
-* makecontext: (libc)System V contexts.
-* mallinfo2: (libc)Statistics of Malloc.
-* malloc: (libc)Basic Allocation.
-* mallopt: (libc)Malloc Tunable Parameters.
-* MAX_CANON: (libc)Limits for Files.
-* MAX_INPUT: (libc)Limits for Files.
-* MAXNAMLEN: (libc)Limits for Files.
-* MAXSYMLINKS: (libc)Symbolic Links.
-* MB_CUR_MAX: (libc)Selecting the Conversion.
-* MB_LEN_MAX: (libc)Selecting the Conversion.
-* mblen: (libc)Non-reentrant Character Conversion.
-* mbrlen: (libc)Converting a Character.
-* mbrtowc: (libc)Converting a Character.
-* mbsinit: (libc)Keeping the state.
-* mbsnrtowcs: (libc)Converting Strings.
-* mbsrtowcs: (libc)Converting Strings.
-* mbstowcs: (libc)Non-reentrant String Conversion.
-* mbtowc: (libc)Non-reentrant Character Conversion.
-* mcheck: (libc)Heap Consistency Checking.
-* MDMBUF: (libc)Control Modes.
-* memalign: (libc)Aligned Memory Blocks.
-* memccpy: (libc)Copying Strings and Arrays.
-* memchr: (libc)Search Functions.
-* memcmp: (libc)String/Array Comparison.
-* memcpy: (libc)Copying Strings and Arrays.
-* memfd_create: (libc)Memory-mapped I/O.
-* memfrob: (libc)Obfuscating Data.
-* memmem: (libc)Search Functions.
-* memmove: (libc)Copying Strings and Arrays.
-* mempcpy: (libc)Copying Strings and Arrays.
-* memrchr: (libc)Search Functions.
-* memset: (libc)Copying Strings and Arrays.
-* mkdir: (libc)Creating Directories.
-* mkdtemp: (libc)Temporary Files.
-* mkfifo: (libc)FIFO Special Files.
-* mknod: (libc)Making Special Files.
-* mkstemp: (libc)Temporary Files.
-* mktemp: (libc)Temporary Files.
-* mktime: (libc)Broken-down Time.
-* mlockall: (libc)Page Lock Functions.
-* mlock: (libc)Page Lock Functions.
-* mlock2: (libc)Page Lock Functions.
-* mmap: (libc)Memory-mapped I/O.
-* mmap64: (libc)Memory-mapped I/O.
-* modffNx: (libc)Rounding Functions.
-* modffN: (libc)Rounding Functions.
-* modff: (libc)Rounding Functions.
-* modfl: (libc)Rounding Functions.
-* modf: (libc)Rounding Functions.
-* mount: (libc)Mount-Unmount-Remount.
-* mprobe: (libc)Heap Consistency Checking.
-* mprotect: (libc)Memory Protection.
-* mrand48_r: (libc)SVID Random.
-* mrand48: (libc)SVID Random.
-* mremap: (libc)Memory-mapped I/O.
-* MSG_DONTROUTE: (libc)Socket Data Options.
-* MSG_OOB: (libc)Socket Data Options.
-* MSG_PEEK: (libc)Socket Data Options.
-* msync: (libc)Memory-mapped I/O.
-* mtrace: (libc)Tracing malloc.
-* mtx_destroy: (libc)ISO C Mutexes.
-* mtx_init: (libc)ISO C Mutexes.
-* mtx_lock: (libc)ISO C Mutexes.
-* mtx_timedlock: (libc)ISO C Mutexes.
-* mtx_trylock: (libc)ISO C Mutexes.
-* mtx_unlock: (libc)ISO C Mutexes.
-* munlockall: (libc)Page Lock Functions.
-* munlock: (libc)Page Lock Functions.
-* munmap: (libc)Memory-mapped I/O.
-* muntrace: (libc)Tracing malloc.
-* NAME_MAX: (libc)Limits for Files.
-* nanfNx: (libc)FP Bit Twiddling.
-* nanfN: (libc)FP Bit Twiddling.
-* nanf: (libc)FP Bit Twiddling.
-* nanl: (libc)FP Bit Twiddling.
-* nanosleep: (libc)Sleeping.
-* nan: (libc)FP Bit Twiddling.
-* NAN: (libc)Infinity and NaN.
-* NCCS: (libc)Mode Data Types.
-* nearbyintfNx: (libc)Rounding Functions.
-* nearbyintfN: (libc)Rounding Functions.
-* nearbyintf: (libc)Rounding Functions.
-* nearbyintl: (libc)Rounding Functions.
-* nearbyint: (libc)Rounding Functions.
-* nextafterfNx: (libc)FP Bit Twiddling.
-* nextafterfN: (libc)FP Bit Twiddling.
-* nextafterf: (libc)FP Bit Twiddling.
-* nextafterl: (libc)FP Bit Twiddling.
-* nextafter: (libc)FP Bit Twiddling.
-* nextdownfNx: (libc)FP Bit Twiddling.
-* nextdownfN: (libc)FP Bit Twiddling.
-* nextdownf: (libc)FP Bit Twiddling.
-* nextdownl: (libc)FP Bit Twiddling.
-* nextdown: (libc)FP Bit Twiddling.
-* nexttowardf: (libc)FP Bit Twiddling.
-* nexttowardl: (libc)FP Bit Twiddling.
-* nexttoward: (libc)FP Bit Twiddling.
-* nextupfNx: (libc)FP Bit Twiddling.
-* nextupfN: (libc)FP Bit Twiddling.
-* nextupf: (libc)FP Bit Twiddling.
-* nextupl: (libc)FP Bit Twiddling.
-* nextup: (libc)FP Bit Twiddling.
-* nftw: (libc)Working with Directory Trees.
-* nftw64: (libc)Working with Directory Trees.
-* ngettext: (libc)Advanced gettext functions.
-* NGROUPS_MAX: (libc)General Limits.
-* nice: (libc)Traditional Scheduling Functions.
-* nl_langinfo: (libc)The Elegant and Fast Way.
-* NOFLSH: (libc)Local Modes.
-* NOKERNINFO: (libc)Local Modes.
-* nrand48_r: (libc)SVID Random.
-* nrand48: (libc)SVID Random.
-* NSIG: (libc)Standard Signals.
-* ntohl: (libc)Byte Order.
-* ntohs: (libc)Byte Order.
-* ntp_adjtime: (libc)Setting and Adjusting the Time.
-* ntp_gettime: (libc)Setting and Adjusting the Time.
-* NULL: (libc)Null Pointer Constant.
-* O_ACCMODE: (libc)Access Modes.
-* O_APPEND: (libc)Operating Modes.
-* O_ASYNC: (libc)Operating Modes.
-* O_CREAT: (libc)Open-time Flags.
-* O_DIRECTORY: (libc)Open-time Flags.
-* O_EXCL: (libc)Open-time Flags.
-* O_EXEC: (libc)Access Modes.
-* O_EXLOCK: (libc)Open-time Flags.
-* O_FSYNC: (libc)Operating Modes.
-* O_IGNORE_CTTY: (libc)Open-time Flags.
-* O_NDELAY: (libc)Operating Modes.
-* O_NOATIME: (libc)Operating Modes.
-* O_NOCTTY: (libc)Open-time Flags.
-* O_NOFOLLOW: (libc)Open-time Flags.
-* O_NOLINK: (libc)Open-time Flags.
-* O_NONBLOCK: (libc)Operating Modes.
-* O_NONBLOCK: (libc)Open-time Flags.
-* O_NOTRANS: (libc)Open-time Flags.
-* O_PATH: (libc)Access Modes.
-* O_RDONLY: (libc)Access Modes.
-* O_RDWR: (libc)Access Modes.
-* O_READ: (libc)Access Modes.
-* O_SHLOCK: (libc)Open-time Flags.
-* O_SYNC: (libc)Operating Modes.
-* O_TMPFILE: (libc)Open-time Flags.
-* O_TRUNC: (libc)Open-time Flags.
-* O_WRITE: (libc)Access Modes.
-* O_WRONLY: (libc)Access Modes.
-* obstack_1grow_fast: (libc)Extra Fast Growing.
-* obstack_1grow: (libc)Growing Objects.
-* obstack_alignment_mask: (libc)Obstacks Data Alignment.
-* obstack_alloc: (libc)Allocation in an Obstack.
-* obstack_base: (libc)Status of an Obstack.
-* obstack_blank_fast: (libc)Extra Fast Growing.
-* obstack_blank: (libc)Growing Objects.
-* obstack_chunk_size: (libc)Obstack Chunks.
-* obstack_copy: (libc)Allocation in an Obstack.
-* obstack_copy0: (libc)Allocation in an Obstack.
-* obstack_finish: (libc)Growing Objects.
-* obstack_free: (libc)Freeing Obstack Objects.
-* obstack_grow: (libc)Growing Objects.
-* obstack_grow0: (libc)Growing Objects.
-* obstack_init: (libc)Preparing for Obstacks.
-* obstack_int_grow_fast: (libc)Extra Fast Growing.
-* obstack_int_grow: (libc)Growing Objects.
-* obstack_next_free: (libc)Status of an Obstack.
-* obstack_object_size: (libc)Status of an Obstack.
-* obstack_object_size: (libc)Growing Objects.
-* obstack_printf: (libc)Dynamic Output.
-* obstack_ptr_grow_fast: (libc)Extra Fast Growing.
-* obstack_ptr_grow: (libc)Growing Objects.
-* obstack_room: (libc)Extra Fast Growing.
-* obstack_vprintf: (libc)Variable Arguments Output.
-* offsetof: (libc)Structure Measurement.
-* on_exit: (libc)Cleanups on Exit.
-* ONLCR: (libc)Output Modes.
-* ONOEOT: (libc)Output Modes.
-* open64: (libc)Opening and Closing Files.
-* OPEN_MAX: (libc)General Limits.
-* open_memstream: (libc)String Streams.
-* opendir: (libc)Opening a Directory.
-* openlog: (libc)openlog.
-* openpty: (libc)Pseudo-Terminal Pairs.
-* open: (libc)Opening and Closing Files.
-* OPOST: (libc)Output Modes.
-* OXTABS: (libc)Output Modes.
-* P_tmpdir: (libc)Temporary Files.
-* PA_FLAG_MASK: (libc)Parsing a Template String.
-* PARENB: (libc)Control Modes.
-* PARMRK: (libc)Input Modes.
-* PARODD: (libc)Control Modes.
-* parse_printf_format: (libc)Parsing a Template String.
-* PATH_MAX: (libc)Limits for Files.
-* pathconf: (libc)Pathconf.
-* pause: (libc)Using Pause.
-* pclose: (libc)Pipe to a Subprocess.
-* PENDIN: (libc)Local Modes.
-* perror: (libc)Error Messages.
-* PF_FILE: (libc)Local Namespace Details.
-* PF_INET: (libc)Internet Namespace.
-* PF_INET6: (libc)Internet Namespace.
-* PF_LOCAL: (libc)Local Namespace Details.
-* PF_UNIX: (libc)Local Namespace Details.
-* pipe: (libc)Creating a Pipe.
-* PIPE_BUF: (libc)Limits for Files.
-* pkey_alloc: (libc)Memory Protection.
-* pkey_free: (libc)Memory Protection.
-* pkey_get: (libc)Memory Protection.
-* pkey_mprotect: (libc)Memory Protection.
-* pkey_set: (libc)Memory Protection.
-* popen: (libc)Pipe to a Subprocess.
-* posix_fallocate: (libc)Storage Allocation.
-* posix_fallocate64: (libc)Storage Allocation.
-* posix_memalign: (libc)Aligned Memory Blocks.
-* powfNx: (libc)Exponents and Logarithms.
-* powfN: (libc)Exponents and Logarithms.
-* powf: (libc)Exponents and Logarithms.
-* powl: (libc)Exponents and Logarithms.
-* pow: (libc)Exponents and Logarithms.
-* preadv: (libc)Scatter-Gather.
-* preadv2: (libc)Scatter-Gather.
-* preadv64v2: (libc)Scatter-Gather.
-* preadv64: (libc)Scatter-Gather.
-* pread: (libc)I/O Primitives.
-* pread64: (libc)I/O Primitives.
-* printf_size_info: (libc)Predefined Printf Handlers.
-* printf_size: (libc)Predefined Printf Handlers.
-* printf: (libc)Formatted Output Functions.
-* psignal: (libc)Signal Messages.
-* pthread_attr_getsigmask_np: (libc)Initial Thread Signal Mask.
-* PTHREAD_ATTR_NO_SIGMASK_NP: (libc)Initial Thread Signal Mask.
-* pthread_attr_setsigmask_np: (libc)Initial Thread Signal Mask.
-* pthread_clockjoin_np: (libc)Waiting with Explicit Clocks.
-* pthread_cond_clockwait: (libc)Waiting with Explicit Clocks.
-* pthread_getattr_default_np: (libc)Default Thread Attributes.
-* pthread_getspecific: (libc)Thread-specific Data.
-* pthread_key_create: (libc)Thread-specific Data.
-* pthread_key_delete: (libc)Thread-specific Data.
-* pthread_rwlock_clockrdlock: (libc)Waiting with Explicit Clocks.
-* pthread_rwlock_clockwrlock: (libc)Waiting with Explicit Clocks.
-* pthread_setattr_default_np: (libc)Default Thread Attributes.
-* pthread_setspecific: (libc)Thread-specific Data.
-* pthread_timedjoin_np: (libc)Waiting with Explicit Clocks.
-* pthread_tryjoin_np: (libc)Waiting with Explicit Clocks.
-* ptsname_r: (libc)Allocation.
-* ptsname: (libc)Allocation.
-* putc_unlocked: (libc)Simple Output.
-* putchar_unlocked: (libc)Simple Output.
-* putchar: (libc)Simple Output.
-* putc: (libc)Simple Output.
-* putenv: (libc)Environment Access.
-* putpwent: (libc)Writing a User Entry.
-* puts: (libc)Simple Output.
-* pututline: (libc)Manipulating the Database.
-* pututxline: (libc)XPG Functions.
-* putwc_unlocked: (libc)Simple Output.
-* putwchar_unlocked: (libc)Simple Output.
-* putwchar: (libc)Simple Output.
-* putwc: (libc)Simple Output.
-* putw: (libc)Simple Output.
-* pwritev: (libc)Scatter-Gather.
-* pwritev2: (libc)Scatter-Gather.
-* pwritev64v2: (libc)Scatter-Gather.
-* pwritev64: (libc)Scatter-Gather.
-* pwrite: (libc)I/O Primitives.
-* pwrite64: (libc)I/O Primitives.
-* qecvt_r: (libc)System V Number Conversion.
-* qecvt: (libc)System V Number Conversion.
-* qfcvt_r: (libc)System V Number Conversion.
-* qfcvt: (libc)System V Number Conversion.
-* qgcvt: (libc)System V Number Conversion.
-* qsort: (libc)Array Sort Function.
-* R_OK: (libc)Testing File Access.
-* raise: (libc)Signaling Yourself.
-* RAND_MAX: (libc)ISO Random.
-* rand_r: (libc)ISO Random.
-* random_r: (libc)BSD Random.
-* random: (libc)BSD Random.
-* rand: (libc)ISO Random.
-* rawmemchr: (libc)Search Functions.
-* RE_DUP_MAX: (libc)General Limits.
-* readdir64_r: (libc)Reading/Closing Directory.
-* readdir64: (libc)Reading/Closing Directory.
-* readdir_r: (libc)Reading/Closing Directory.
-* readdir: (libc)Reading/Closing Directory.
-* readlink: (libc)Symbolic Links.
-* readv: (libc)Scatter-Gather.
-* read: (libc)I/O Primitives.
-* reallocarray: (libc)Changing Block Size.
-* realloc: (libc)Changing Block Size.
-* realpath: (libc)Symbolic Links.
-* recvfrom: (libc)Receiving Datagrams.
-* recvmsg: (libc)Receiving Datagrams.
-* recv: (libc)Receiving Data.
-* regcomp: (libc)POSIX Regexp Compilation.
-* regerror: (libc)Regexp Cleanup.
-* regexec: (libc)Matching POSIX Regexps.
-* regfree: (libc)Regexp Cleanup.
-* register_printf_function: (libc)Registering New Conversions.
-* remainderfNx: (libc)Remainder Functions.
-* remainderfN: (libc)Remainder Functions.
-* remainderf: (libc)Remainder Functions.
-* remainderl: (libc)Remainder Functions.
-* remainder: (libc)Remainder Functions.
-* remove: (libc)Deleting Files.
-* rename: (libc)Renaming Files.
-* rewinddir: (libc)Random Access Directory.
-* rewind: (libc)File Positioning.
-* rindex: (libc)Search Functions.
-* rintfNx: (libc)Rounding Functions.
-* rintfN: (libc)Rounding Functions.
-* rintf: (libc)Rounding Functions.
-* rintl: (libc)Rounding Functions.
-* rint: (libc)Rounding Functions.
-* RLIM_INFINITY: (libc)Limits on Resources.
-* rmdir: (libc)Deleting Files.
-* roundevenfNx: (libc)Rounding Functions.
-* roundevenfN: (libc)Rounding Functions.
-* roundevenf: (libc)Rounding Functions.
-* roundevenl: (libc)Rounding Functions.
-* roundeven: (libc)Rounding Functions.
-* roundfNx: (libc)Rounding Functions.
-* roundfN: (libc)Rounding Functions.
-* roundf: (libc)Rounding Functions.
-* roundl: (libc)Rounding Functions.
-* round: (libc)Rounding Functions.
-* rpmatch: (libc)Yes-or-No Questions.
-* RSEQ_SIG: (libc)Restartable Sequences.
-* S_IFMT: (libc)Testing File Type.
-* S_ISBLK: (libc)Testing File Type.
-* S_ISCHR: (libc)Testing File Type.
-* S_ISDIR: (libc)Testing File Type.
-* S_ISFIFO: (libc)Testing File Type.
-* S_ISLNK: (libc)Testing File Type.
-* S_ISREG: (libc)Testing File Type.
-* S_ISSOCK: (libc)Testing File Type.
-* S_TYPEISMQ: (libc)Testing File Type.
-* S_TYPEISSEM: (libc)Testing File Type.
-* S_TYPEISSHM: (libc)Testing File Type.
-* SA_NOCLDSTOP: (libc)Flags for Sigaction.
-* SA_ONSTACK: (libc)Flags for Sigaction.
-* SA_RESTART: (libc)Flags for Sigaction.
-* sbrk: (libc)Resizing the Data Segment.
-* scalbf: (libc)Normalization Functions.
-* scalblnfNx: (libc)Normalization Functions.
-* scalblnfN: (libc)Normalization Functions.
-* scalblnf: (libc)Normalization Functions.
-* scalblnl: (libc)Normalization Functions.
-* scalbln: (libc)Normalization Functions.
-* scalbl: (libc)Normalization Functions.
-* scalbnfNx: (libc)Normalization Functions.
-* scalbnfN: (libc)Normalization Functions.
-* scalbnf: (libc)Normalization Functions.
-* scalbnl: (libc)Normalization Functions.
-* scalbn: (libc)Normalization Functions.
-* scalb: (libc)Normalization Functions.
-* scandir: (libc)Scanning Directory Content.
-* scandir64: (libc)Scanning Directory Content.
-* scanf: (libc)Formatted Input Functions.
-* sched_get_priority_max: (libc)Basic Scheduling Functions.
-* sched_get_priority_min: (libc)Basic Scheduling Functions.
-* sched_getaffinity: (libc)CPU Affinity.
-* sched_getparam: (libc)Basic Scheduling Functions.
-* sched_getscheduler: (libc)Basic Scheduling Functions.
-* sched_rr_get_interval: (libc)Basic Scheduling Functions.
-* sched_setaffinity: (libc)CPU Affinity.
-* sched_setparam: (libc)Basic Scheduling Functions.
-* sched_setscheduler: (libc)Basic Scheduling Functions.
-* sched_yield: (libc)Basic Scheduling Functions.
-* secure_getenv: (libc)Environment Access.
-* seed48_r: (libc)SVID Random.
-* seed48: (libc)SVID Random.
-* SEEK_CUR: (libc)File Positioning.
-* SEEK_END: (libc)File Positioning.
-* SEEK_SET: (libc)File Positioning.
-* seekdir: (libc)Random Access Directory.
-* select: (libc)Waiting for I/O.
-* sem_clockwait: (libc)Waiting with Explicit Clocks.
-* sem_close: (libc)Semaphores.
-* sem_destroy: (libc)Semaphores.
-* sem_getvalue: (libc)Semaphores.
-* sem_init: (libc)Semaphores.
-* sem_open: (libc)Semaphores.
-* sem_post: (libc)Semaphores.
-* sem_timedwait: (libc)Semaphores.
-* sem_trywait: (libc)Semaphores.
-* sem_unlink: (libc)Semaphores.
-* sem_wait: (libc)Semaphores.
-* semctl: (libc)Semaphores.
-* semget: (libc)Semaphores.
-* semop: (libc)Semaphores.
-* semtimedop: (libc)Semaphores.
-* sendmsg: (libc)Receiving Datagrams.
-* sendto: (libc)Sending Datagrams.
-* send: (libc)Sending Data.
-* setbuffer: (libc)Controlling Buffering.
-* setbuf: (libc)Controlling Buffering.
-* setcontext: (libc)System V contexts.
-* setdomainname: (libc)Host Identification.
-* setegid: (libc)Setting Groups.
-* setenv: (libc)Environment Access.
-* seteuid: (libc)Setting User ID.
-* setfsent: (libc)fstab.
-* setgid: (libc)Setting Groups.
-* setgrent: (libc)Scanning All Groups.
-* setgroups: (libc)Setting Groups.
-* sethostent: (libc)Host Names.
-* sethostid: (libc)Host Identification.
-* sethostname: (libc)Host Identification.
-* setitimer: (libc)Setting an Alarm.
-* setjmp: (libc)Non-Local Details.
-* setlinebuf: (libc)Controlling Buffering.
-* setlocale: (libc)Setting the Locale.
-* setlogmask: (libc)setlogmask.
-* setmntent: (libc)mtab.
-* setnetent: (libc)Networks Database.
-* setnetgrent: (libc)Lookup Netgroup.
-* setpayloadfNx: (libc)FP Bit Twiddling.
-* setpayloadfN: (libc)FP Bit Twiddling.
-* setpayloadf: (libc)FP Bit Twiddling.
-* setpayloadl: (libc)FP Bit Twiddling.
-* setpayloadsigfNx: (libc)FP Bit Twiddling.
-* setpayloadsigfN: (libc)FP Bit Twiddling.
-* setpayloadsigf: (libc)FP Bit Twiddling.
-* setpayloadsigl: (libc)FP Bit Twiddling.
-* setpayloadsig: (libc)FP Bit Twiddling.
-* setpayload: (libc)FP Bit Twiddling.
-* setpgid: (libc)Process Group Functions.
-* setpgrp: (libc)Process Group Functions.
-* setpriority: (libc)Traditional Scheduling Functions.
-* setprotoent: (libc)Protocols Database.
-* setpwent: (libc)Scanning All Users.
-* setregid: (libc)Setting Groups.
-* setreuid: (libc)Setting User ID.
-* setrlimit: (libc)Limits on Resources.
-* setrlimit64: (libc)Limits on Resources.
-* setservent: (libc)Services Database.
-* setsid: (libc)Process Group Functions.
-* setsockopt: (libc)Socket Option Functions.
-* setstate_r: (libc)BSD Random.
-* setstate: (libc)BSD Random.
-* settimeofday: (libc)Setting and Adjusting the Time.
-* setuid: (libc)Setting User ID.
-* setutent: (libc)Manipulating the Database.
-* setutxent: (libc)XPG Functions.
-* setvbuf: (libc)Controlling Buffering.
-* shm_open: (libc)Memory-mapped I/O.
-* shm_unlink: (libc)Memory-mapped I/O.
-* shutdown: (libc)Closing a Socket.
-* SIG_ERR: (libc)Basic Signal Handling.
-* sigabbrev_np: (libc)Signal Messages.
-* SIGABRT: (libc)Program Error Signals.
-* sigaction: (libc)Advanced Signal Handling.
-* sigaddset: (libc)Signal Sets.
-* SIGALRM: (libc)Alarm Signals.
-* sigaltstack: (libc)Signal Stack.
-* sigblock: (libc)BSD Signal Handling.
-* SIGBUS: (libc)Program Error Signals.
-* SIGCHLD: (libc)Job Control Signals.
-* SIGCLD: (libc)Job Control Signals.
-* SIGCONT: (libc)Job Control Signals.
-* sigdelset: (libc)Signal Sets.
-* sigdescr_np: (libc)Signal Messages.
-* sigemptyset: (libc)Signal Sets.
-* SIGEMT: (libc)Program Error Signals.
-* sigfillset: (libc)Signal Sets.
-* SIGFPE: (libc)Program Error Signals.
-* SIGHUP: (libc)Termination Signals.
-* SIGILL: (libc)Program Error Signals.
-* SIGINFO: (libc)Miscellaneous Signals.
-* siginterrupt: (libc)BSD Signal Handling.
-* SIGINT: (libc)Termination Signals.
-* SIGIOT: (libc)Program Error Signals.
-* SIGIO: (libc)Asynchronous I/O Signals.
-* sigismember: (libc)Signal Sets.
-* SIGKILL: (libc)Termination Signals.
-* siglongjmp: (libc)Non-Local Exits and Signals.
-* SIGLOST: (libc)Operation Error Signals.
-* sigmask: (libc)BSD Signal Handling.
-* signal: (libc)Basic Signal Handling.
-* signbit: (libc)FP Bit Twiddling.
-* significandf: (libc)Normalization Functions.
-* significandl: (libc)Normalization Functions.
-* significand: (libc)Normalization Functions.
-* sigpause: (libc)BSD Signal Handling.
-* sigpending: (libc)Checking for Pending Signals.
-* SIGPIPE: (libc)Operation Error Signals.
-* SIGPOLL: (libc)Asynchronous I/O Signals.
-* sigprocmask: (libc)Process Signal Mask.
-* SIGPROF: (libc)Alarm Signals.
-* SIGQUIT: (libc)Termination Signals.
-* SIGSEGV: (libc)Program Error Signals.
-* sigsetjmp: (libc)Non-Local Exits and Signals.
-* sigsetmask: (libc)BSD Signal Handling.
-* sigstack: (libc)Signal Stack.
-* SIGSTOP: (libc)Job Control Signals.
-* sigsuspend: (libc)Sigsuspend.
-* SIGSYS: (libc)Program Error Signals.
-* SIGTERM: (libc)Termination Signals.
-* SIGTRAP: (libc)Program Error Signals.
-* SIGTSTP: (libc)Job Control Signals.
-* SIGTTIN: (libc)Job Control Signals.
-* SIGTTOU: (libc)Job Control Signals.
-* SIGURG: (libc)Asynchronous I/O Signals.
-* SIGUSR1: (libc)Miscellaneous Signals.
-* SIGUSR2: (libc)Miscellaneous Signals.
-* SIGVTALRM: (libc)Alarm Signals.
-* SIGWINCH: (libc)Miscellaneous Signals.
-* SIGXCPU: (libc)Operation Error Signals.
-* SIGXFSZ: (libc)Operation Error Signals.
-* sincosfNx: (libc)Trig Functions.
-* sincosfN: (libc)Trig Functions.
-* sincosf: (libc)Trig Functions.
-* sincosl: (libc)Trig Functions.
-* sincos: (libc)Trig Functions.
-* sinfNx: (libc)Trig Functions.
-* sinfN: (libc)Trig Functions.
-* sinf: (libc)Trig Functions.
-* sinhfNx: (libc)Hyperbolic Functions.
-* sinhfN: (libc)Hyperbolic Functions.
-* sinhf: (libc)Hyperbolic Functions.
-* sinhl: (libc)Hyperbolic Functions.
-* sinh: (libc)Hyperbolic Functions.
-* sinl: (libc)Trig Functions.
-* sin: (libc)Trig Functions.
-* sleep: (libc)Sleeping.
-* SNANFNx: (libc)Infinity and NaN.
-* SNANFN: (libc)Infinity and NaN.
-* SNANF: (libc)Infinity and NaN.
-* SNANL: (libc)Infinity and NaN.
-* SNAN: (libc)Infinity and NaN.
-* snprintf: (libc)Formatted Output Functions.
-* SOCK_DGRAM: (libc)Communication Styles.
-* SOCK_RAW: (libc)Communication Styles.
-* SOCK_RDM: (libc)Communication Styles.
-* SOCK_SEQPACKET: (libc)Communication Styles.
-* SOCK_STREAM: (libc)Communication Styles.
-* socketpair: (libc)Socket Pairs.
-* socket: (libc)Creating a Socket.
-* SOL_SOCKET: (libc)Socket-Level Options.
-* sprintf: (libc)Formatted Output Functions.
-* sqrtfNx: (libc)Exponents and Logarithms.
-* sqrtfN: (libc)Exponents and Logarithms.
-* sqrtf: (libc)Exponents and Logarithms.
-* sqrtl: (libc)Exponents and Logarithms.
-* sqrt: (libc)Exponents and Logarithms.
-* srandom_r: (libc)BSD Random.
-* srandom: (libc)BSD Random.
-* srand: (libc)ISO Random.
-* srand48_r: (libc)SVID Random.
-* srand48: (libc)SVID Random.
-* sscanf: (libc)Formatted Input Functions.
-* ssignal: (libc)Basic Signal Handling.
-* SSIZE_MAX: (libc)General Limits.
-* stat: (libc)Reading Attributes.
-* stat64: (libc)Reading Attributes.
-* stime: (libc)Setting and Adjusting the Time.
-* stpcpy: (libc)Copying Strings and Arrays.
-* stpncpy: (libc)Truncating Strings.
-* strcasecmp: (libc)String/Array Comparison.
-* strcasestr: (libc)Search Functions.
-* strcat: (libc)Concatenating Strings.
-* strchrnul: (libc)Search Functions.
-* strchr: (libc)Search Functions.
-* strcmp: (libc)String/Array Comparison.
-* strcoll: (libc)Collation Functions.
-* strcpy: (libc)Copying Strings and Arrays.
-* strcspn: (libc)Search Functions.
-* strdupa: (libc)Copying Strings and Arrays.
-* strdup: (libc)Copying Strings and Arrays.
-* STREAM_MAX: (libc)General Limits.
-* strerror_r: (libc)Error Messages.
-* strerrordesc_np: (libc)Error Messages.
-* strerrorname_np: (libc)Error Messages.
-* strerror: (libc)Error Messages.
-* strfmon: (libc)Formatting Numbers.
-* strfromd: (libc)Printing of Floats.
-* strfromfNx: (libc)Printing of Floats.
-* strfromfN: (libc)Printing of Floats.
-* strfromf: (libc)Printing of Floats.
-* strfroml: (libc)Printing of Floats.
-* strfry: (libc)Shuffling Bytes.
-* strftime: (libc)Formatting Calendar Time.
-* strlen: (libc)String Length.
-* strncasecmp: (libc)String/Array Comparison.
-* strncat: (libc)Truncating Strings.
-* strncmp: (libc)String/Array Comparison.
-* strncpy: (libc)Truncating Strings.
-* strndupa: (libc)Truncating Strings.
-* strndup: (libc)Truncating Strings.
-* strnlen: (libc)String Length.
-* strpbrk: (libc)Search Functions.
-* strptime: (libc)Low-Level Time String Parsing.
-* strrchr: (libc)Search Functions.
-* strsep: (libc)Finding Tokens in a String.
-* strsignal: (libc)Signal Messages.
-* strspn: (libc)Search Functions.
-* strstr: (libc)Search Functions.
-* strtod: (libc)Parsing of Floats.
-* strtofNx: (libc)Parsing of Floats.
-* strtofN: (libc)Parsing of Floats.
-* strtof: (libc)Parsing of Floats.
-* strtoimax: (libc)Parsing of Integers.
-* strtok_r: (libc)Finding Tokens in a String.
-* strtok: (libc)Finding Tokens in a String.
-* strtold: (libc)Parsing of Floats.
-* strtoll: (libc)Parsing of Integers.
-* strtol: (libc)Parsing of Integers.
-* strtoq: (libc)Parsing of Integers.
-* strtoull: (libc)Parsing of Integers.
-* strtoul: (libc)Parsing of Integers.
-* strtoumax: (libc)Parsing of Integers.
-* strtouq: (libc)Parsing of Integers.
-* strverscmp: (libc)String/Array Comparison.
-* strxfrm: (libc)Collation Functions.
-* stty: (libc)BSD Terminal Modes.
-* SUN_LEN: (libc)Local Namespace Details.
-* swapcontext: (libc)System V contexts.
-* swprintf: (libc)Formatted Output Functions.
-* swscanf: (libc)Formatted Input Functions.
-* symlink: (libc)Symbolic Links.
-* sync: (libc)Synchronizing I/O.
-* syscall: (libc)System Calls.
-* sysconf: (libc)Sysconf Definition.
-* syslog: (libc)syslog; vsyslog.
-* system: (libc)Running a Command.
-* sysv_signal: (libc)Basic Signal Handling.
-* tanfNx: (libc)Trig Functions.
-* tanfN: (libc)Trig Functions.
-* tanf: (libc)Trig Functions.
-* tanhfNx: (libc)Hyperbolic Functions.
-* tanhfN: (libc)Hyperbolic Functions.
-* tanhf: (libc)Hyperbolic Functions.
-* tanhl: (libc)Hyperbolic Functions.
-* tanh: (libc)Hyperbolic Functions.
-* tanl: (libc)Trig Functions.
-* tan: (libc)Trig Functions.
-* tcdrain: (libc)Line Control.
-* tcflow: (libc)Line Control.
-* tcflush: (libc)Line Control.
-* tcgetattr: (libc)Mode Functions.
-* tcgetpgrp: (libc)Terminal Access Functions.
-* tcgetsid: (libc)Terminal Access Functions.
-* tcsendbreak: (libc)Line Control.
-* tcsetattr: (libc)Mode Functions.
-* tcsetpgrp: (libc)Terminal Access Functions.
-* tdelete: (libc)Tree Search Function.
-* tdestroy: (libc)Tree Search Function.
-* telldir: (libc)Random Access Directory.
-* tempnam: (libc)Temporary Files.
-* textdomain: (libc)Locating gettext catalog.
-* tfind: (libc)Tree Search Function.
-* tgammafNx: (libc)Special Functions.
-* tgammafN: (libc)Special Functions.
-* tgammaf: (libc)Special Functions.
-* tgammal: (libc)Special Functions.
-* tgamma: (libc)Special Functions.
-* tgkill: (libc)Signaling Another Process.
-* thrd_create: (libc)ISO C Thread Management.
-* thrd_current: (libc)ISO C Thread Management.
-* thrd_detach: (libc)ISO C Thread Management.
-* thrd_equal: (libc)ISO C Thread Management.
-* thrd_exit: (libc)ISO C Thread Management.
-* thrd_join: (libc)ISO C Thread Management.
-* thrd_sleep: (libc)ISO C Thread Management.
-* thrd_yield: (libc)ISO C Thread Management.
-* timegm: (libc)Broken-down Time.
-* timelocal: (libc)Broken-down Time.
-* times: (libc)Processor Time.
-* time: (libc)Getting the Time.
-* TMP_MAX: (libc)Temporary Files.
-* tmpfile: (libc)Temporary Files.
-* tmpfile64: (libc)Temporary Files.
-* tmpnam_r: (libc)Temporary Files.
-* tmpnam: (libc)Temporary Files.
-* toascii: (libc)Case Conversion.
-* tolower: (libc)Case Conversion.
-* TOSTOP: (libc)Local Modes.
-* totalorderfNx: (libc)FP Comparison Functions.
-* totalorderfN: (libc)FP Comparison Functions.
-* totalorderf: (libc)FP Comparison Functions.
-* totalorderl: (libc)FP Comparison Functions.
-* totalordermagfNx: (libc)FP Comparison Functions.
-* totalordermagfN: (libc)FP Comparison Functions.
-* totalordermagf: (libc)FP Comparison Functions.
-* totalordermagl: (libc)FP Comparison Functions.
-* totalordermag: (libc)FP Comparison Functions.
-* totalorder: (libc)FP Comparison Functions.
-* toupper: (libc)Case Conversion.
-* towctrans: (libc)Wide Character Case Conversion.
-* towlower: (libc)Wide Character Case Conversion.
-* towupper: (libc)Wide Character Case Conversion.
-* truncate: (libc)File Size.
-* truncate64: (libc)File Size.
-* truncfNx: (libc)Rounding Functions.
-* truncfN: (libc)Rounding Functions.
-* truncf: (libc)Rounding Functions.
-* truncl: (libc)Rounding Functions.
-* trunc: (libc)Rounding Functions.
-* tsearch: (libc)Tree Search Function.
-* tss_create: (libc)ISO C Thread-local Storage.
-* tss_delete: (libc)ISO C Thread-local Storage.
-* tss_get: (libc)ISO C Thread-local Storage.
-* tss_set: (libc)ISO C Thread-local Storage.
-* ttyname_r: (libc)Is It a Terminal.
-* ttyname: (libc)Is It a Terminal.
-* twalk_r: (libc)Tree Search Function.
-* twalk: (libc)Tree Search Function.
-* TZNAME_MAX: (libc)General Limits.
-* tzset: (libc)Time Zone Functions.
-* ufromfpfNx: (libc)Rounding Functions.
-* ufromfpfN: (libc)Rounding Functions.
-* ufromfpf: (libc)Rounding Functions.
-* ufromfpl: (libc)Rounding Functions.
-* ufromfpxfNx: (libc)Rounding Functions.
-* ufromfpxfN: (libc)Rounding Functions.
-* ufromfpxf: (libc)Rounding Functions.
-* ufromfpxl: (libc)Rounding Functions.
-* ufromfpx: (libc)Rounding Functions.
-* ufromfp: (libc)Rounding Functions.
-* ulimit: (libc)Limits on Resources.
-* umask: (libc)Setting Permissions.
-* umount: (libc)Mount-Unmount-Remount.
-* umount2: (libc)Mount-Unmount-Remount.
-* uname: (libc)Platform Type.
-* ungetc: (libc)How Unread.
-* ungetwc: (libc)How Unread.
-* unlink: (libc)Deleting Files.
-* unlockpt: (libc)Allocation.
-* unsetenv: (libc)Environment Access.
-* updwtmp: (libc)Manipulating the Database.
-* utimes: (libc)File Times.
-* utime: (libc)File Times.
-* utmpname: (libc)Manipulating the Database.
-* utmpxname: (libc)XPG Functions.
-* va_arg: (libc)Argument Macros.
-* va_copy: (libc)Argument Macros.
-* va_end: (libc)Argument Macros.
-* va_start: (libc)Argument Macros.
-* valloc: (libc)Aligned Memory Blocks.
-* vasprintf: (libc)Variable Arguments Output.
-* VDISCARD: (libc)Other Special.
-* VDSUSP: (libc)Signal Characters.
-* VEOF: (libc)Editing Characters.
-* VEOL: (libc)Editing Characters.
-* VEOL2: (libc)Editing Characters.
-* VERASE: (libc)Editing Characters.
-* verrx: (libc)Error Messages.
-* verr: (libc)Error Messages.
-* versionsort: (libc)Scanning Directory Content.
-* versionsort64: (libc)Scanning Directory Content.
-* vfork: (libc)Creating a Process.
-* vfprintf: (libc)Variable Arguments Output.
-* vfscanf: (libc)Variable Arguments Input.
-* vfwprintf: (libc)Variable Arguments Output.
-* vfwscanf: (libc)Variable Arguments Input.
-* VINTR: (libc)Signal Characters.
-* VKILL: (libc)Editing Characters.
-* vlimit: (libc)Limits on Resources.
-* VLNEXT: (libc)Other Special.
-* VMIN: (libc)Noncanonical Input.
-* vprintf: (libc)Variable Arguments Output.
-* VQUIT: (libc)Signal Characters.
-* VREPRINT: (libc)Editing Characters.
-* vscanf: (libc)Variable Arguments Input.
-* vsnprintf: (libc)Variable Arguments Output.
-* vsprintf: (libc)Variable Arguments Output.
-* vsscanf: (libc)Variable Arguments Input.
-* VSTART: (libc)Start/Stop Characters.
-* VSTATUS: (libc)Other Special.
-* VSTOP: (libc)Start/Stop Characters.
-* VSUSP: (libc)Signal Characters.
-* vswprintf: (libc)Variable Arguments Output.
-* vswscanf: (libc)Variable Arguments Input.
-* vsyslog: (libc)syslog; vsyslog.
-* VTIME: (libc)Noncanonical Input.
-* vwarnx: (libc)Error Messages.
-* vwarn: (libc)Error Messages.
-* VWERASE: (libc)Editing Characters.
-* vwprintf: (libc)Variable Arguments Output.
-* vwscanf: (libc)Variable Arguments Input.
-* W_OK: (libc)Testing File Access.
-* wait3: (libc)BSD Wait Functions.
-* waitpid: (libc)Process Completion.
-* wait: (libc)Process Completion.
-* wait4: (libc)Process Completion.
-* warnx: (libc)Error Messages.
-* warn: (libc)Error Messages.
-* WCHAR_MAX: (libc)Extended Char Intro.
-* WCHAR_MIN: (libc)Extended Char Intro.
-* WCOREDUMP: (libc)Process Completion Status.
-* wcpcpy: (libc)Copying Strings and Arrays.
-* wcpncpy: (libc)Truncating Strings.
-* wcrtomb: (libc)Converting a Character.
-* wcscasecmp: (libc)String/Array Comparison.
-* wcscat: (libc)Concatenating Strings.
-* wcschrnul: (libc)Search Functions.
-* wcschr: (libc)Search Functions.
-* wcscmp: (libc)String/Array Comparison.
-* wcscoll: (libc)Collation Functions.
-* wcscpy: (libc)Copying Strings and Arrays.
-* wcscspn: (libc)Search Functions.
-* wcsdup: (libc)Copying Strings and Arrays.
-* wcsftime: (libc)Formatting Calendar Time.
-* wcslen: (libc)String Length.
-* wcsncasecmp: (libc)String/Array Comparison.
-* wcsncat: (libc)Truncating Strings.
-* wcsncmp: (libc)String/Array Comparison.
-* wcsncpy: (libc)Truncating Strings.
-* wcsnlen: (libc)String Length.
-* wcsnrtombs: (libc)Converting Strings.
-* wcspbrk: (libc)Search Functions.
-* wcsrchr: (libc)Search Functions.
-* wcsrtombs: (libc)Converting Strings.
-* wcsspn: (libc)Search Functions.
-* wcsstr: (libc)Search Functions.
-* wcstod: (libc)Parsing of Floats.
-* wcstofNx: (libc)Parsing of Floats.
-* wcstofN: (libc)Parsing of Floats.
-* wcstof: (libc)Parsing of Floats.
-* wcstoimax: (libc)Parsing of Integers.
-* wcstok: (libc)Finding Tokens in a String.
-* wcstold: (libc)Parsing of Floats.
-* wcstoll: (libc)Parsing of Integers.
-* wcstol: (libc)Parsing of Integers.
-* wcstombs: (libc)Non-reentrant String Conversion.
-* wcstoq: (libc)Parsing of Integers.
-* wcstoull: (libc)Parsing of Integers.
-* wcstoul: (libc)Parsing of Integers.
-* wcstoumax: (libc)Parsing of Integers.
-* wcstouq: (libc)Parsing of Integers.
-* wcswcs: (libc)Search Functions.
-* wcsxfrm: (libc)Collation Functions.
-* wctob: (libc)Converting a Character.
-* wctomb: (libc)Non-reentrant Character Conversion.
-* wctrans: (libc)Wide Character Case Conversion.
-* wctype: (libc)Classification of Wide Characters.
-* WEOF: (libc)Extended Char Intro.
-* WEOF: (libc)EOF and Errors.
-* WEXITSTATUS: (libc)Process Completion Status.
-* WIFEXITED: (libc)Process Completion Status.
-* WIFSIGNALED: (libc)Process Completion Status.
-* WIFSTOPPED: (libc)Process Completion Status.
-* wmemchr: (libc)Search Functions.
-* wmemcmp: (libc)String/Array Comparison.
-* wmemcpy: (libc)Copying Strings and Arrays.
-* wmemmove: (libc)Copying Strings and Arrays.
-* wmempcpy: (libc)Copying Strings and Arrays.
-* wmemset: (libc)Copying Strings and Arrays.
-* wordexp: (libc)Calling Wordexp.
-* wordfree: (libc)Calling Wordexp.
-* wprintf: (libc)Formatted Output Functions.
-* writev: (libc)Scatter-Gather.
-* write: (libc)I/O Primitives.
-* wscanf: (libc)Formatted Input Functions.
-* WSTOPSIG: (libc)Process Completion Status.
-* WTERMSIG: (libc)Process Completion Status.
-* X_OK: (libc)Testing File Access.
-* y0fNx: (libc)Special Functions.
-* y0fN: (libc)Special Functions.
-* y0f: (libc)Special Functions.
-* y0l: (libc)Special Functions.
-* y0: (libc)Special Functions.
-* y1fNx: (libc)Special Functions.
-* y1fN: (libc)Special Functions.
-* y1f: (libc)Special Functions.
-* y1l: (libc)Special Functions.
-* y1: (libc)Special Functions.
-* ynfNx: (libc)Special Functions.
-* ynfN: (libc)Special Functions.
-* ynf: (libc)Special Functions.
-* ynl: (libc)Special Functions.
-* yn: (libc)Special Functions.
-
-Software libraries
-* Libc: (libc). C library.
-__EOF__
- fi
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-pre_update() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-post_update() {
- post_install
-}
-
-# arg 1: the old package version
-pre_remove() {
- if [ -x /usr/bin/install-info ] ; then
- install-info --delete --info-file=usr/share/info/libc.info.gz --dir-file=usr/share/info/dir 2> /dev/null || /bin/true
- fi
-}
-
-# arg 1: the old package version
-post_remove() {
- /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*
Property changes on: radix-1.9/libs/glibc/2.36/glibc-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.36/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.36/PATCHES (revision 34)
+++ radix-1.9/libs/glibc/2.36/PATCHES (nonexistent)
@@ -1,13 +0,0 @@
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-b3736d1a3c-2.36.1.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-i18n.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-malloc-hooks.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-en_US-no-am-pm.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-reenable-DT-HASH.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-locale-no-archive.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zonefile.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zoneinfo.patch
-../../../sources/iana/tz/patches/glibc-2.36-tzcode-2022f.patch -p0
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-ppc64-interpreter.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.36/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.36/Makefile (revision 34)
+++ radix-1.9/libs/glibc/2.36/Makefile (nonexistent)
@@ -1,253 +0,0 @@
-
-COMPONENT_TARGETS = $(HARDWARE_INTEL_PC32)
-COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
-COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
-COMPONENT_TARGETS += $(HARDWARE_CB1X)
-COMPONENT_TARGETS += $(HARDWARE_CB2X)
-COMPONENT_TARGETS += $(HARDWARE_CB3X)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
-COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
-COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
-COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
-COMPONENT_TARGETS += $(HARDWARE_POIN2)
-COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
-COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
-COMPONENT_TARGETS += $(HARDWARE_M201)
-COMPONENT_TARGETS += $(HARDWARE_MXV)
-COMPONENT_TARGETS += $(HARDWARE_P201)
-COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
-COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
-COMPONENT_TARGETS += $(HARDWARE_P212)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
-COMPONENT_TARGETS += $(HARDWARE_Q201)
-COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
-COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
-COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
-COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
-COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
-COMPONENT_TARGETS += $(HARDWARE_CI20)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
-COMPONENT_TARGETS += $(HARDWARE_S824L)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN)
-COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
-
-
-NEED_ABS_PATH = true
-COMPONENT_IS_3PP = true
-
-
-include ../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES = sources/GNU/glibc/2.36
-SOURCE_REQUIRES += sources/iana/tz
-
-
-REQUIRES = dev/kernel-headers
-REQUIRES += dev/gcc-runtime/12.2.0
-
-# ======= __END_OF_REQUIRES__ =======
-
-
-version = 2.36
-tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
-
-tz_version = 2022f
-tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
-tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
-exclude_list = $(CURDIR)/tz-exclude.list
-
-SRC_ARCHIVE = $(tar_xz_archive)
-SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
-src_dir_name = glibc-$(version)
-src_done = $(TARGET_BUILD_DIR)/.source-done
-
-PATCHES = PATCHES
-
-build_dir = $(CURDIR)/$(TARGET_BUILD_DIR)/build
-build_target = $(CURDIR)/$(TARGET_BUILD_DIR)/.built
-install_target = $(CURDIR)/$(TARGET_BUILD_DIR)/.installed
-
-
-build_glibc_pkg = $(CURDIR)/$(TARGET_BUILD_DIR)/.glibc_pkg_done
-
-
-OPTIMIZATION_FLAGS = -O3
-
-
-####### Targets
-
-PKG_GROUP = libs
-
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-GLIBC_PKG_NAME = glibc
-GLIBC_PKG_VERSION = 2.36
-GLIBC_PKG_ARCH = $(PKGARCH)
-GLIBC_PKG_DISTRO_NAME = $(DISTRO_NAME)
-GLIBC_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
-GLIBC_PKG_GROUP = $(PKG_GROUP)
-### |---handy-ruler-------------------------------|
-GLIBC_PKG_SHORT_DESCRIPTION = GNU C libraries
-GLIBC_PKG_URL = $(BUG_URL)
-GLIBC_PKG_LICENSE = GPLv2
-GLIBC_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_PKG_NAME)-pkg-description
-GLIBC_PKG_DESCRIPTION_FILE_IN = $(GLIBC_PKG_NAME)-pkg-description.in
-GLIBC_PKG_INSTALL_SCRIPT = $(GLIBC_PKG_NAME)-pkg-install.sh
-
-GLIBC_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_PKG_NAME)-package
-
-pkg_basename = $(GLIBC_PKG_NAME)-$(GLIBC_PKG_VERSION)-$(GLIBC_PKG_ARCH)-$(GLIBC_PKG_DISTRO_NAME)-$(GLIBC_PKG_DISTRO_VERSION)
-
-pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate = $(call cert-name,$(pkg_archive))
-pkg_signature = $(call sign-name,$(pkg_archive))
-pkg_description = $(call desc-name,$(pkg_archive))
-products = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS = $(build_target)
-BUILD_TARGETS += $(install_target)
-BUILD_TARGETS += $(build_glibc_pkg)
-
-PRODUCT_TARGETS = $(products)
-
-ROOTFS_TARGETS = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot = install_root=$(GLIBC_PKG)
-
-
-extra_configure_switches += --libdir=/usr/lib$(LIBSUFFIX)
-extra_configure_switches += --with-headers=$(TARGET_DEST_DIR)/usr/include
-extra_configure_switches += --enable-kernel=2.6.36
-extra_configure_switches += --enable-add-ons
-extra_configure_switches += --enable-profile
-extra_configure_switches += --enable-bind-now
-extra_configure_switches += --without-gd
-extra_configure_switches += --without-cvs
-
-
-extra_configure_switches += libc_cv_slibdir=/lib$(LIBSUFFIX)
-extra_configure_switches += libc_cv_rtlddir=/lib$(LIBSUFFIX)
-
-
-#
-# Time Zone config:
-#
-CFLAGS += -DHAVE_LOCALTIME_RZ=0 -DNETBSD_INSPIRED=0
-
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
- $(UNPACK_SRC_ARCHIVE)
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
- $(APPLY_PATCHES)
- @touch $@
-
-$(build_target): $(src_done)
- @mkdir -p $(build_dir)
- @echo "slibdir=/lib$(LIBSUFFIX)" >> $(build_dir)/configparms
- @echo "rtlddir=/lib$(LIBSUFFIX)" >> $(build_dir)/configparms
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(env_sysroot) $(extra_environment) ../$(src_dir_name)/configure \
- --prefix=/usr \
- --build=$(BUILD) \
- --host=$(TARGET) \
- $(extra_configure_switches)
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE)
- @touch $@
-
-$(install_target): $(build_target)
- @mkdir -p $(GLIBC_PKG)
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
- # ======= fake LOCALES installation to allow implementation of iconv and intl into GLIBC =======
- @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 SUPPORTED-LOCALES="" \
- localedata/install-locales $(env_sysroot)
- @touch $@
-
-$(build_glibc_pkg): $(install_target)
- # ======= Install nscd.conf =======
- @mkdir -p $(GLIBC_PKG)/etc
- @cat $(SRC_DIR)/nscd/nscd.conf > $(GLIBC_PKG)/etc/nscd.conf.new
- @mkdir -p $(GLIBC_PKG)/var/db/nscd
- @mkdir -p $(GLIBC_PKG)/var/run/nscd
- # ======= Install profile.d scripts =======
- @mkdir -p $(GLIBC_PKG)/etc/profile.d
- @cat $(CURDIR)/profile.d/glibc.csh > $(GLIBC_PKG)/etc/profile.d/glibc.csh.new
- @cat $(CURDIR)/profile.d/glibc.sh > $(GLIBC_PKG)/etc/profile.d/glibc.sh.new
- @chmod 755 $(GLIBC_PKG)/etc/profile.d/*
- # ======= create sln symlink in /bin =======
- @mkdir -p $(GLIBC_PKG)/bin
- @( cd $(GLIBC_PKG)/bin ; ln -sf ../sbin/sln sln )
- # ======= Install Documentation =======
- @rm -f $(GLIBC_PKG)/usr/share/info/dir
- @gzip -9 $(GLIBC_PKG)/usr/share/info/*
- @mkdir -p $(GLIBC_PKG)/usr/doc/glibc-$(version)
- @cp -a $(SRC_DIR)/COPYING* $(SRC_DIR)/LICENSES \
- $(GLIBC_PKG)/usr/doc/glibc-$(version)
- @mkdir -p $(GLIBC_PKG)/usr/share/doc/glibc-$(version)/nscd
- @( cd $(SRC_DIR) ; \
- cp -a COPYING* INSTALL LICENSES NEWS README \
- $(GLIBC_PKG)/usr/share/doc/glibc-$(version) ; \
- )
- @cp -a $(SRC_DIR)/nscd/nscd.init $(GLIBC_PKG)/usr/share/doc/glibc-$(version)/nscd
- @( cd $(SRC_DIR) ; \
- if [ -r ChangeLog ]; then \
- DOCSDIR=`echo $(GLIBC_PKG)/usr/share/doc/glibc-$(version)` ; \
- cat ChangeLog | head -n 1000 > $$DOCSDIR/ChangeLog ; \
- touch -r ChangeLog $$DOCSDIR/ChangeLog ; \
- fi \
- )
- # ======= Install the same to $(TARGET_DEST_DIR) =======
- $(call install-into-devenv, $(GLIBC_PKG))
- # ======= Remove BS path from target scripts =======
- @sed -i 's,$(BUILDSYSTEM),,g' $(GLIBC_PKG)/usr/bin/mtrace
- # ======= Strip binaries =======
- @( cd $(GLIBC_PKG) ; \
- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-debug 2> /dev/null ; \
- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) -g2 2> /dev/null ; \
- find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- find . | xargs file | grep "relocatable" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
- )
- @touch $@
-
-$(GLIBC_PKG_DESCRIPTION_FILE): $(GLIBC_PKG_DESCRIPTION_FILE_IN)
- @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature) : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(build_glibc_pkg) $(GLIBC_PKG_DESCRIPTION_FILE) $(GLIBC_PKG_INSTALL_SCRIPT)
- @cp $(GLIBC_PKG_DESCRIPTION_FILE) $(GLIBC_PKG)/.DESCRIPTION
- @cp $(GLIBC_PKG_INSTALL_SCRIPT) $(GLIBC_PKG)/.INSTALL
- @$(BUILD_BIN_PKG_REQUIRES) $(GLIBC_PKG)/.REQUIRES
- @echo "pkgname=$(GLIBC_PKG_NAME)" > $(GLIBC_PKG)/.PKGINFO ; \
- echo "pkgver=$(GLIBC_PKG_VERSION)" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "arch=$(GLIBC_PKG_ARCH)" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "distroname=$(GLIBC_PKG_DISTRO_NAME)" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "distrover=$(GLIBC_PKG_DISTRO_VERSION)" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "group=$(GLIBC_PKG_GROUP)" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "short_description=\"$(GLIBC_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "url=$(GLIBC_PKG_URL)" >> $(GLIBC_PKG)/.PKGINFO ; \
- echo "license=$(GLIBC_PKG_LICENSE)" >> $(GLIBC_PKG)/.PKGINFO
- @$(PSEUDO) sh -c "cd $(GLIBC_PKG) && \
- chown -R root:root . && \
- $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.36
===================================================================
--- radix-1.9/libs/glibc/2.36 (revision 34)
+++ radix-1.9/libs/glibc/2.36 (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.36-i18n/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.36-i18n/tz-exclude.list (revision 34)
+++ radix-1.9/libs/glibc/2.36-i18n/tz-exclude.list (nonexistent)
@@ -1 +0,0 @@
-Makefile
Index: radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-install.sh (revision 34)
+++ radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-install.sh (nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1: the new package version
-pre_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-post_install() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-pre_update() {
- /bin/true
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-post_update() {
- post_install
-}
-
-# arg 1: the old package version
-pre_remove() {
- /bin/true
-}
-
-# arg 1: the old package version
-post_remove() {
- /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*
Property changes on: radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.36-i18n/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.36-i18n/PATCHES (revision 34)
+++ radix-1.9/libs/glibc/2.36-i18n/PATCHES (nonexistent)
@@ -1,13 +0,0 @@
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-b3736d1a3c-2.36.1.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-i18n.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-malloc-hooks.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-en_US-no-am-pm.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-reenable-DT-HASH.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-locale-no-archive.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zonefile.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-zoneinfo.patch
-../../../sources/iana/tz/patches/glibc-2.36-tzcode-2022f.patch -p0
-
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-ppc64-interpreter.patch -p0
-../../../sources/GNU/glibc/2.36/patches/glibc-2.36-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.36-i18n/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.36-i18n/Makefile (revision 34)
+++ radix-1.9/libs/glibc/2.36-i18n/Makefile (nonexistent)
@@ -1,234 +0,0 @@
-
-COMPONENT_TARGETS = $(HARDWARE_INTEL_PC32)
-COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
-COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
-COMPONENT_TARGETS += $(HARDWARE_CB1X)
-COMPONENT_TARGETS += $(HARDWARE_CB2X)
-COMPONENT_TARGETS += $(HARDWARE_CB3X)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
-COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
-COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
-COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
-COMPONENT_TARGETS += $(HARDWARE_POIN2)
-COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
-COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
-COMPONENT_TARGETS += $(HARDWARE_M201)
-COMPONENT_TARGETS += $(HARDWARE_MXV)
-COMPONENT_TARGETS += $(HARDWARE_P201)
-COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
-COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
-COMPONENT_TARGETS += $(HARDWARE_P212)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
-COMPONENT_TARGETS += $(HARDWARE_Q201)
-COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
-COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
-COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
-COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
-COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
-COMPONENT_TARGETS += $(HARDWARE_CI20)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
-COMPONENT_TARGETS += $(HARDWARE_S824L)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN)
-COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
-
-
-NEED_ABS_PATH = true
-COMPONENT_IS_3PP = true
-
-
-include ../../../build-system/constants.mk
-
-
-
-SOURCE_REQUIRES = sources/GNU/glibc/2.36
-SOURCE_REQUIRES += sources/iana/tz
-
-REQUIRES = libs/glibc/2.36
-
-# ======= __END_OF_REQUIRES__ =======
-
-
-version = 2.36
-tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
-
-tz_version = 2022f
-tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
-tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
-exclude_list = $(CURDIR)/tz-exclude.list
-
-SRC_ARCHIVE = $(tar_xz_archive)
-SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
-src_dir_name = glibc-$(version)
-src_done = $(TARGET_BUILD_DIR)/.source-done
-
-PATCHES = PATCHES
-
-build_dir = $(TARGET_BUILD_DIR)/build
-build_target = $(TARGET_BUILD_DIR)/.built
-install_target = $(TARGET_BUILD_DIR)/.installed
-
-
-OPTIMIZATION_FLAGS = -O3
-
-
-####### Targets
-
-PKG_GROUP = libs
-
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-GLIBC_I18N_PKG_NAME = glibc-i18n
-GLIBC_I18N_PKG_VERSION = 2.36
-GLIBC_I18N_PKG_ARCH = $(PKGARCH)
-GLIBC_I18N_PKG_DISTRO_NAME = $(DISTRO_NAME)
-GLIBC_I18N_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
-GLIBC_I18N_PKG_GROUP = $(PKG_GROUP)
-### |---handy-ruler-------------------------------|
-GLIBC_I18N_PKG_SHORT_DESCRIPTION = locale files
-GLIBC_I18N_PKG_URL = $(BUG_URL)
-GLIBC_I18N_PKG_LICENSE = GPLv2
-GLIBC_I18N_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_I18N_PKG_NAME)-pkg-description
-GLIBC_I18N_PKG_DESCRIPTION_FILE_IN = $(GLIBC_I18N_PKG_NAME)-pkg-description.in
-GLIBC_I18N_PKG_INSTALL_SCRIPT = $(GLIBC_I18N_PKG_NAME)-pkg-install.sh
-
-GLIBC_I18N_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_I18N_PKG_NAME)-package
-
-pkg_basename = $(GLIBC_I18N_PKG_NAME)-$(GLIBC_I18N_PKG_VERSION)-$(GLIBC_I18N_PKG_ARCH)-$(GLIBC_I18N_PKG_DISTRO_NAME)-$(GLIBC_I18N_PKG_DISTRO_VERSION)
-
-pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate = $(call cert-name,$(pkg_archive))
-pkg_signature = $(call sign-name,$(pkg_archive))
-pkg_description = $(call desc-name,$(pkg_archive))
-products = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS = $(build_target)
-BUILD_TARGETS += $(install_target)
-
-PRODUCT_TARGETS = $(products)
-
-ROOTFS_TARGETS = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot = install_root=$(GLIBC_I18N_PKG)
-
-
-ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
-OPTIMIZATION_FLAGS += -fPIC
-endif
-
-
-INSTALL_NOT_ARCHIVED_LOCALES = no
-
-ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC) \
- $(TOOLCHAIN_POWER8_GLIBC) \
- $(TOOLCHAIN_POWER8LE_GLIBC) \
- $(TOOLCHAIN_POWER9_GLIBC) \
- $(TOOLCHAIN_POWER9LE_GLIBC)),)
-INSTALL_ALL_LOCALES = yes
-else
-INSTALL_ALL_LOCALES = no
-endif
-
-# ==================================================================
-LOCALES = fa_IR/UTF-8
-# ==================================================================
-LOCALES += de_DE.UTF-8/UTF-8 de_DE/ISO-8859-1 de_DE@euro/ISO-8859-15
-# ==================================================================
-LOCALES += en_HK.UTF-8/UTF-8 en_HK/ISO-8859-1
-LOCALES += en_PH.UTF-8/UTF-8 en_PH/ISO-8859-1
-LOCALES += en_US.UTF-8/UTF-8 en_US/ISO-8859-1
-LOCALES += es_MX.UTF-8/UTF-8 es_MX/ISO-8859-1
-# ==================================================================
-LOCALES += fr_FR.UTF-8/UTF-8 fr_FR/ISO-8859-1 fr_FR@euro/ISO-8859-15
-LOCALES += it_IT.UTF-8/UTF-8 it_IT/ISO-8859-1 it_IT@euro/ISO-8859-15
-# ==================================================================
-LOCALES += ja_JP.EUC-JP/EUC-JP ja_JP.UTF-8/UTF-8
-LOCALES += en_RU.KOI8-R/KOI8-R en_RU.UTF-8/UTF-8 en_RU.CP1251/CP1251
-LOCALES += en_RU.ISO-8859-5/ISO-8859-5 en_RU/ISO-8859-5
-# ==================================================================
-LOCALES += ru_RU.KOI8-R/KOI8-R ru_RU.UTF-8/UTF-8 ru_RU.CP1251/CP1251
-LOCALES += ru_RU.ISO-8859-5/ISO-8859-5 ru_RU/ISO-8859-5
-# ==================================================================
-
-
-RADIX_BUILD_CC = $(X86_64_GLIBC_PATH)/$(X86_64_GLIBC_VERSION)/bin/$(X86_64_GLIBC_ARCH)-gcc
-
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
- $(UNPACK_SRC_ARCHIVE)
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
- @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
- $(APPLY_PATCHES)
-ifeq ($(INSTALL_NOT_ARCHIVED_LOCALES),yes)
- @cd $(SRC_DIR)/localedata && sed -i 's,$\(LOCALEDEF),\$\(LOCALEDEF\) --no-archive,' Makefile
-endif
- @touch $@
-
-$(build_target): $(src_done)
- @mkdir -p $(build_dir)
- @mkdir -p $(GLIBC_I18N_PKG)
- @echo "slibdir=/lib$(LIBSUFFIX)" >> $(build_dir)/configparms
- @cd $(build_dir) && CC=$(RADIX_BUILD_CC) ../$(src_dir_name)/configure \
- --prefix=/usr \
- --build=$(BUILD) \
- --libdir=/usr/lib$(LIBSUFFIX)
- @cd $(build_dir) && $(MAKE)
-ifneq ($(INSTALL_ALL_LOCALES),yes)
- @cd $(build_dir) && $(MAKE) -j1 SUPPORTED-LOCALES="$(LOCALES)" localedata/install-locales $(env_sysroot)
-else
- @cd $(build_dir) && $(MAKE) -j1 localedata/install-locales $(env_sysroot)
-endif
- @touch $@
-
-$(install_target): $(build_target)
-ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC) \
- $(TOOLCHAIN_POWER8_GLIBC) \
- $(TOOLCHAIN_POWER9_GLIBC)),)
- # ======= Install the same locales into /usr/lib32 (x86_32, ppc32 compat) directories =======
- @mkdir -p $(GLIBC_I18N_PKG)/usr/lib32 && cp -rf $(GLIBC_I18N_PKG)/usr/lib/locale $(GLIBC_I18N_PKG)/usr/lib32
-endif
- # ======= Install the same to $(TARGET_DEST_DIR) =======
- $(call install-into-devenv, $(GLIBC_I18N_PKG))
- @touch $@
-
-$(GLIBC_I18N_PKG_DESCRIPTION_FILE): $(GLIBC_I18N_PKG_DESCRIPTION_FILE_IN)
- @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature) : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(install_target) $(GLIBC_I18N_PKG_DESCRIPTION_FILE) $(GLIBC_I18N_PKG_INSTALL_SCRIPT)
- @cp $(GLIBC_I18N_PKG_DESCRIPTION_FILE) $(GLIBC_I18N_PKG)/.DESCRIPTION
- @cp $(GLIBC_I18N_PKG_INSTALL_SCRIPT) $(GLIBC_I18N_PKG)/.INSTALL
- @$(BUILD_PKG_REQUIRES) $(GLIBC_I18N_PKG)/.REQUIRES
- @echo "pkgname=$(GLIBC_I18N_PKG_NAME)" > $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "pkgver=$(GLIBC_I18N_PKG_VERSION)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "arch=$(GLIBC_I18N_PKG_ARCH)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "distroname=$(GLIBC_I18N_PKG_DISTRO_NAME)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "distrover=$(GLIBC_I18N_PKG_DISTRO_VERSION)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "group=$(GLIBC_I18N_PKG_GROUP)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "short_description=\"$(GLIBC_I18N_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "url=$(GLIBC_I18N_PKG_URL)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
- echo "license=$(GLIBC_I18N_PKG_LICENSE)" >> $(GLIBC_I18N_PKG)/.PKGINFO
- @$(PSEUDO) sh -c "cd $(GLIBC_I18N_PKG) && \
- chown -R root:root . && \
- $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-description.in (revision 34)
+++ radix-1.9/libs/glibc/2.36-i18n/glibc-i18n-pkg-description.in (nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':'.
-
- |-----handy-ruler------------------------------------------------------|
-glibc-i18n: glibc-i18n @VERSION@ (locale files from glibc)
-glibc-i18n:
-glibc-i18n: These files go in /usr/lib/locale and /usr/share/i18n/ to provide
-glibc-i18n: internationalization support. You'll need this package unless you
-glibc-i18n: will be using US English only.
-glibc-i18n:
-glibc-i18n:
-glibc-i18n:
-glibc-i18n:
-glibc-i18n:
-glibc-i18n:
Index: radix-1.9/libs/glibc/2.36-i18n
===================================================================
--- radix-1.9/libs/glibc/2.36-i18n (revision 34)
+++ radix-1.9/libs/glibc/2.36-i18n (nonexistent)
Property changes on: radix-1.9/libs/glibc/2.36-i18n
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/glibc/2.37/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.37/Makefile (nonexistent)
+++ radix-1.9/libs/glibc/2.37/Makefile (revision 35)
@@ -0,0 +1,253 @@
+
+COMPONENT_TARGETS = $(HARDWARE_INTEL_PC32)
+COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
+COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
+COMPONENT_TARGETS += $(HARDWARE_CB1X)
+COMPONENT_TARGETS += $(HARDWARE_CB2X)
+COMPONENT_TARGETS += $(HARDWARE_CB3X)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
+COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
+COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
+COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
+COMPONENT_TARGETS += $(HARDWARE_POIN2)
+COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
+COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
+COMPONENT_TARGETS += $(HARDWARE_M201)
+COMPONENT_TARGETS += $(HARDWARE_MXV)
+COMPONENT_TARGETS += $(HARDWARE_P201)
+COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
+COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
+COMPONENT_TARGETS += $(HARDWARE_P212)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
+COMPONENT_TARGETS += $(HARDWARE_Q201)
+COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
+COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
+COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
+COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
+COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
+COMPONENT_TARGETS += $(HARDWARE_CI20)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
+COMPONENT_TARGETS += $(HARDWARE_S824L)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN)
+COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
+
+
+NEED_ABS_PATH = true
+COMPONENT_IS_3PP = true
+
+
+include ../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES = sources/GNU/glibc/2.37
+SOURCE_REQUIRES += sources/iana/tz
+
+
+REQUIRES = dev/kernel-headers
+REQUIRES += dev/gcc-runtime/12.2.0
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+version = 2.37
+tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
+
+tz_version = 2023c
+tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
+tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
+exclude_list = $(CURDIR)/tz-exclude.list
+
+SRC_ARCHIVE = $(tar_xz_archive)
+SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
+src_dir_name = glibc-$(version)
+src_done = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES = PATCHES
+
+build_dir = $(CURDIR)/$(TARGET_BUILD_DIR)/build
+build_target = $(CURDIR)/$(TARGET_BUILD_DIR)/.built
+install_target = $(CURDIR)/$(TARGET_BUILD_DIR)/.installed
+
+
+build_glibc_pkg = $(CURDIR)/$(TARGET_BUILD_DIR)/.glibc_pkg_done
+
+
+OPTIMIZATION_FLAGS = -O3
+
+
+####### Targets
+
+PKG_GROUP = libs
+
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+GLIBC_PKG_NAME = glibc
+GLIBC_PKG_VERSION = 2.37
+GLIBC_PKG_ARCH = $(PKGARCH)
+GLIBC_PKG_DISTRO_NAME = $(DISTRO_NAME)
+GLIBC_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
+GLIBC_PKG_GROUP = $(PKG_GROUP)
+### |---handy-ruler-------------------------------|
+GLIBC_PKG_SHORT_DESCRIPTION = GNU C libraries
+GLIBC_PKG_URL = $(BUG_URL)
+GLIBC_PKG_LICENSE = GPLv2
+GLIBC_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_PKG_NAME)-pkg-description
+GLIBC_PKG_DESCRIPTION_FILE_IN = $(GLIBC_PKG_NAME)-pkg-description.in
+GLIBC_PKG_INSTALL_SCRIPT = $(GLIBC_PKG_NAME)-pkg-install.sh
+
+GLIBC_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_PKG_NAME)-package
+
+pkg_basename = $(GLIBC_PKG_NAME)-$(GLIBC_PKG_VERSION)-$(GLIBC_PKG_ARCH)-$(GLIBC_PKG_DISTRO_NAME)-$(GLIBC_PKG_DISTRO_VERSION)
+
+pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate = $(call cert-name,$(pkg_archive))
+pkg_signature = $(call sign-name,$(pkg_archive))
+pkg_description = $(call desc-name,$(pkg_archive))
+products = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS = $(build_target)
+BUILD_TARGETS += $(install_target)
+BUILD_TARGETS += $(build_glibc_pkg)
+
+PRODUCT_TARGETS = $(products)
+
+ROOTFS_TARGETS = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot = install_root=$(GLIBC_PKG)
+
+
+extra_configure_switches += --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches += --with-headers=$(TARGET_DEST_DIR)/usr/include
+extra_configure_switches += --enable-kernel=2.6.36
+extra_configure_switches += --enable-add-ons
+extra_configure_switches += --enable-profile
+extra_configure_switches += --enable-bind-now
+extra_configure_switches += --without-gd
+extra_configure_switches += --without-cvs
+
+
+extra_configure_switches += libc_cv_slibdir=/lib$(LIBSUFFIX)
+extra_configure_switches += libc_cv_rtlddir=/lib$(LIBSUFFIX)
+
+
+#
+# Time Zone config:
+#
+CFLAGS += -DHAVE_LOCALTIME_RZ=0 -DNETBSD_INSPIRED=0
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+ $(UNPACK_SRC_ARCHIVE)
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
+ $(APPLY_PATCHES)
+ @touch $@
+
+$(build_target): $(src_done)
+ @mkdir -p $(build_dir)
+ @echo "slibdir=/lib$(LIBSUFFIX)" >> $(build_dir)/configparms
+ @echo "rtlddir=/lib$(LIBSUFFIX)" >> $(build_dir)/configparms
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(env_sysroot) $(extra_environment) ../$(src_dir_name)/configure \
+ --prefix=/usr \
+ --build=$(BUILD) \
+ --host=$(TARGET) \
+ $(extra_configure_switches)
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE)
+ @touch $@
+
+$(install_target): $(build_target)
+ @mkdir -p $(GLIBC_PKG)
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+ # ======= fake LOCALES installation to allow implementation of iconv and intl into GLIBC =======
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 SUPPORTED-LOCALES="" \
+ localedata/install-locales $(env_sysroot)
+ @touch $@
+
+$(build_glibc_pkg): $(install_target)
+ # ======= Install nscd.conf =======
+ @mkdir -p $(GLIBC_PKG)/etc
+ @cat $(SRC_DIR)/nscd/nscd.conf > $(GLIBC_PKG)/etc/nscd.conf.new
+ @mkdir -p $(GLIBC_PKG)/var/db/nscd
+ @mkdir -p $(GLIBC_PKG)/var/run/nscd
+ # ======= Install profile.d scripts =======
+ @mkdir -p $(GLIBC_PKG)/etc/profile.d
+ @cat $(CURDIR)/profile.d/glibc.csh > $(GLIBC_PKG)/etc/profile.d/glibc.csh.new
+ @cat $(CURDIR)/profile.d/glibc.sh > $(GLIBC_PKG)/etc/profile.d/glibc.sh.new
+ @chmod 755 $(GLIBC_PKG)/etc/profile.d/*
+ # ======= create sln symlink in /bin =======
+ @mkdir -p $(GLIBC_PKG)/bin
+ @( cd $(GLIBC_PKG)/bin ; ln -sf ../sbin/sln sln )
+ # ======= Install Documentation =======
+ @rm -f $(GLIBC_PKG)/usr/share/info/dir
+ @gzip -9 $(GLIBC_PKG)/usr/share/info/*
+ @mkdir -p $(GLIBC_PKG)/usr/doc/glibc-$(version)
+ @cp -a $(SRC_DIR)/COPYING* $(SRC_DIR)/LICENSES \
+ $(GLIBC_PKG)/usr/doc/glibc-$(version)
+ @mkdir -p $(GLIBC_PKG)/usr/share/doc/glibc-$(version)/nscd
+ @( cd $(SRC_DIR) ; \
+ cp -a COPYING* INSTALL LICENSES NEWS README \
+ $(GLIBC_PKG)/usr/share/doc/glibc-$(version) ; \
+ )
+ @cp -a $(SRC_DIR)/nscd/nscd.init $(GLIBC_PKG)/usr/share/doc/glibc-$(version)/nscd
+ @( cd $(SRC_DIR) ; \
+ if [ -r ChangeLog ]; then \
+ DOCSDIR=`echo $(GLIBC_PKG)/usr/share/doc/glibc-$(version)` ; \
+ cat ChangeLog | head -n 1000 > $$DOCSDIR/ChangeLog ; \
+ touch -r ChangeLog $$DOCSDIR/ChangeLog ; \
+ fi \
+ )
+ # ======= Install the same to $(TARGET_DEST_DIR) =======
+ $(call install-into-devenv, $(GLIBC_PKG))
+ # ======= Remove BS path from target scripts =======
+ @sed -i 's,$(BUILDSYSTEM),,g' $(GLIBC_PKG)/usr/bin/mtrace
+ # ======= Strip binaries =======
+ @( cd $(GLIBC_PKG) ; \
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-debug 2> /dev/null ; \
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) -g2 2> /dev/null ; \
+ find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ find . | xargs file | grep "relocatable" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ )
+ @touch $@
+
+$(GLIBC_PKG_DESCRIPTION_FILE): $(GLIBC_PKG_DESCRIPTION_FILE_IN)
+ @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature) : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(build_glibc_pkg) $(GLIBC_PKG_DESCRIPTION_FILE) $(GLIBC_PKG_INSTALL_SCRIPT)
+ @cp $(GLIBC_PKG_DESCRIPTION_FILE) $(GLIBC_PKG)/.DESCRIPTION
+ @cp $(GLIBC_PKG_INSTALL_SCRIPT) $(GLIBC_PKG)/.INSTALL
+ @$(BUILD_BIN_PKG_REQUIRES) $(GLIBC_PKG)/.REQUIRES
+ @echo "pkgname=$(GLIBC_PKG_NAME)" > $(GLIBC_PKG)/.PKGINFO ; \
+ echo "pkgver=$(GLIBC_PKG_VERSION)" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "arch=$(GLIBC_PKG_ARCH)" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "distroname=$(GLIBC_PKG_DISTRO_NAME)" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "distrover=$(GLIBC_PKG_DISTRO_VERSION)" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "group=$(GLIBC_PKG_GROUP)" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "short_description=\"$(GLIBC_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "url=$(GLIBC_PKG_URL)" >> $(GLIBC_PKG)/.PKGINFO ; \
+ echo "license=$(GLIBC_PKG_LICENSE)" >> $(GLIBC_PKG)/.PKGINFO
+ @$(PSEUDO) sh -c "cd $(GLIBC_PKG) && \
+ chown -R root:root . && \
+ $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.37/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.37/PATCHES (nonexistent)
+++ radix-1.9/libs/glibc/2.37/PATCHES (revision 35)
@@ -0,0 +1,13 @@
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-CVE-2023-25139.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-i18n.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-malloc-hooks.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-en_US-no-am-pm.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-reenable-DT-HASH.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-locale-no-archive.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zonefile.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zoneinfo.patch
+../../../sources/iana/tz/patches/glibc-2.37-tzcode-2023c.patch -p0
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-ppc64-interpreter.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.37/glibc-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.37/glibc-pkg-description.in (nonexistent)
+++ radix-1.9/libs/glibc/2.37/glibc-pkg-description.in (revision 35)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+glibc: glibc @VERSION@ (GNU C libraries)
+glibc:
+glibc: This package contains the GNU C libraries and header files.
+glibc: The GNU C library was written originally by Roland McGrath,
+glibc: and is currently maintained by Ulrich Drepper. Some parts of
+glibc: the library were contributed or worked on by other people.
+glibc:
+glibc:
+glibc:
+glibc:
+glibc:
Index: radix-1.9/libs/glibc/2.37/glibc-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.37/glibc-pkg-install.sh (nonexistent)
+++ radix-1.9/libs/glibc/2.37/glibc-pkg-install.sh (revision 35)
@@ -0,0 +1,2219 @@
+#!/bin/sh
+
+# Preserve new files
+install_file() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ install_file etc/nscd.conf.new
+ install_file etc/profile.d/glibc.csh.new
+ install_file etc/profile.d/glibc.sh.new
+ # ======= Clearly you already decided this issue. :-) =======
+ rm -f etc/profile.d/glibc.csh.new
+ rm -f etc/profile.d/glibc.sh.new
+
+ #
+ # NOTE:
+ # 'install-info' can work using relative paths and we can make use build machine
+ # utility during installation to the some partition and use target 'install-info'
+ # during installation directly on the running target machine.
+ #
+ if [ -x /usr/bin/install-info ] ; then
+ install-info --info-dir=usr/share/info usr/share/info/libc.info.gz 2>/dev/null
+ elif ! grep "(libc)" usr/share/info/dir 1> /dev/null 2> /dev/null ; then
+ cat << __EOF__ >> usr/share/info/dir
+
+GNU C library functions and macros
+* __fbufsize: (libc)Controlling Buffering.
+* __flbf: (libc)Controlling Buffering.
+* __fpending: (libc)Controlling Buffering.
+* __fpurge: (libc)Flushing Buffers.
+* __freadable: (libc)Opening Streams.
+* __freading: (libc)Opening Streams.
+* __fsetlocking: (libc)Streams and Threads.
+* __fwritable: (libc)Opening Streams.
+* __fwriting: (libc)Opening Streams.
+* __gconv_end_fct: (libc)glibc iconv Implementation.
+* __gconv_fct: (libc)glibc iconv Implementation.
+* __gconv_init_fct: (libc)glibc iconv Implementation.
+* __ppc_get_timebase_freq: (libc)PowerPC.
+* __ppc_get_timebase: (libc)PowerPC.
+* __ppc_mdoio: (libc)PowerPC.
+* __ppc_mdoom: (libc)PowerPC.
+* __ppc_set_ppr_low: (libc)PowerPC.
+* __ppc_set_ppr_med_high: (libc)PowerPC.
+* __ppc_set_ppr_med_low: (libc)PowerPC.
+* __ppc_set_ppr_med: (libc)PowerPC.
+* __ppc_set_ppr_very_low: (libc)PowerPC.
+* __ppc_yield: (libc)PowerPC.
+* __riscv_flush_icache: (libc)RISC-V.
+* __va_copy: (libc)Argument Macros.
+* __x86_get_cpuid_feature_leaf: (libc)X86.
+* _Complex_I: (libc)Complex Numbers.
+* _dl_find_object: (libc)Dynamic Linker Introspection.
+* _exit: (libc)Termination Internals.
+* _Exit: (libc)Termination Internals.
+* _flushlbf: (libc)Flushing Buffers.
+* _Fork: (libc)Creating a Process.
+* _Imaginary_I: (libc)Complex Numbers.
+* _IOFBF: (libc)Controlling Buffering.
+* _IOLBF: (libc)Controlling Buffering.
+* _IONBF: (libc)Controlling Buffering.
+* _PATH_UTMP: (libc)Manipulating the Database.
+* _PATH_WTMP: (libc)Manipulating the Database.
+* _POSIX2_C_DEV: (libc)System Options.
+* _POSIX2_C_VERSION: (libc)Version Supported.
+* _POSIX2_FORT_DEV: (libc)System Options.
+* _POSIX2_FORT_RUN: (libc)System Options.
+* _POSIX2_LOCALEDEF: (libc)System Options.
+* _POSIX2_SW_DEV: (libc)System Options.
+* _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
+* _POSIX_JOB_CONTROL: (libc)System Options.
+* _POSIX_NO_TRUNC: (libc)Options for Files.
+* _POSIX_SAVED_IDS: (libc)System Options.
+* _POSIX_VDISABLE: (libc)Options for Files.
+* _POSIX_VERSION: (libc)Version Supported.
+* _tolower: (libc)Case Conversion.
+* _toupper: (libc)Case Conversion.
+* a64l: (libc)Encode Binary Data.
+* abort: (libc)Aborting a Program.
+* abs: (libc)Absolute Value.
+* accept: (libc)Accepting Connections.
+* access: (libc)Testing File Access.
+* acosfNx: (libc)Inverse Trig Functions.
+* acosfN: (libc)Inverse Trig Functions.
+* acosf: (libc)Inverse Trig Functions.
+* acoshfNx: (libc)Hyperbolic Functions.
+* acoshfN: (libc)Hyperbolic Functions.
+* acoshf: (libc)Hyperbolic Functions.
+* acoshl: (libc)Hyperbolic Functions.
+* acosh: (libc)Hyperbolic Functions.
+* acosl: (libc)Inverse Trig Functions.
+* acos: (libc)Inverse Trig Functions.
+* addmntent: (libc)mtab.
+* addseverity: (libc)Adding Severity Classes.
+* adjtimex: (libc)Setting and Adjusting the Time.
+* adjtime: (libc)Setting and Adjusting the Time.
+* aio_cancel: (libc)Cancel AIO Operations.
+* aio_cancel64: (libc)Cancel AIO Operations.
+* aio_error: (libc)Status of AIO Operations.
+* aio_error64: (libc)Status of AIO Operations.
+* aio_fsync: (libc)Synchronizing AIO Operations.
+* aio_fsync64: (libc)Synchronizing AIO Operations.
+* aio_init: (libc)Configuration of AIO.
+* aio_read: (libc)Asynchronous Reads/Writes.
+* aio_read64: (libc)Asynchronous Reads/Writes.
+* aio_return: (libc)Status of AIO Operations.
+* aio_return64: (libc)Status of AIO Operations.
+* aio_suspend: (libc)Synchronizing AIO Operations.
+* aio_suspend64: (libc)Synchronizing AIO Operations.
+* aio_write: (libc)Asynchronous Reads/Writes.
+* aio_write64: (libc)Asynchronous Reads/Writes.
+* alarm: (libc)Setting an Alarm.
+* aligned_alloc: (libc)Aligned Memory Blocks.
+* alloca: (libc)Variable Size Automatic.
+* alphasort: (libc)Scanning Directory Content.
+* alphasort64: (libc)Scanning Directory Content.
+* ALTWERASE: (libc)Local Modes.
+* arc4random_buf: (libc)High Quality Random.
+* arc4random_uniform: (libc)High Quality Random.
+* arc4random: (libc)High Quality Random.
+* ARG_MAX: (libc)General Limits.
+* ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
+* argp_error: (libc)Argp Helper Functions.
+* argp_failure: (libc)Argp Helper Functions.
+* argp_help: (libc)Argp Help.
+* argp_parse: (libc)Argp.
+* argp_state_help: (libc)Argp Helper Functions.
+* argp_usage: (libc)Argp Helper Functions.
+* argz_add_sep: (libc)Argz Functions.
+* argz_add: (libc)Argz Functions.
+* argz_append: (libc)Argz Functions.
+* argz_count: (libc)Argz Functions.
+* argz_create_sep: (libc)Argz Functions.
+* argz_create: (libc)Argz Functions.
+* argz_delete: (libc)Argz Functions.
+* argz_extract: (libc)Argz Functions.
+* argz_insert: (libc)Argz Functions.
+* argz_next: (libc)Argz Functions.
+* argz_replace: (libc)Argz Functions.
+* argz_stringify: (libc)Argz Functions.
+* asctime_r: (libc)Formatting Calendar Time.
+* asctime: (libc)Formatting Calendar Time.
+* asinfNx: (libc)Inverse Trig Functions.
+* asinfN: (libc)Inverse Trig Functions.
+* asinf: (libc)Inverse Trig Functions.
+* asinhfNx: (libc)Hyperbolic Functions.
+* asinhfN: (libc)Hyperbolic Functions.
+* asinhf: (libc)Hyperbolic Functions.
+* asinhl: (libc)Hyperbolic Functions.
+* asinh: (libc)Hyperbolic Functions.
+* asinl: (libc)Inverse Trig Functions.
+* asin: (libc)Inverse Trig Functions.
+* asprintf: (libc)Dynamic Output.
+* assert_perror: (libc)Consistency Checking.
+* assert: (libc)Consistency Checking.
+* atan2f: (libc)Inverse Trig Functions.
+* atan2: (libc)Inverse Trig Functions.
+* atanfNx: (libc)Inverse Trig Functions.
+* atanfN: (libc)Inverse Trig Functions.
+* atanf: (libc)Inverse Trig Functions.
+* atanhfNx: (libc)Hyperbolic Functions.
+* atanhfN: (libc)Hyperbolic Functions.
+* atanhf: (libc)Hyperbolic Functions.
+* atanhl: (libc)Hyperbolic Functions.
+* atanh: (libc)Hyperbolic Functions.
+* atanl: (libc)Inverse Trig Functions.
+* atan: (libc)Inverse Trig Functions.
+* atan2fNx: (libc)Inverse Trig Functions.
+* atan2fN: (libc)Inverse Trig Functions.
+* atan2l: (libc)Inverse Trig Functions.
+* atexit: (libc)Cleanups on Exit.
+* atof: (libc)Parsing of Floats.
+* atoi: (libc)Parsing of Integers.
+* atoll: (libc)Parsing of Integers.
+* atol: (libc)Parsing of Integers.
+* backtrace_symbols_fd: (libc)Backtraces.
+* backtrace_symbols: (libc)Backtraces.
+* backtrace: (libc)Backtraces.
+* basename: (libc)Finding Tokens in a String.
+* basename: (libc)Finding Tokens in a String.
+* BC_BASE_MAX: (libc)Utility Limits.
+* BC_DIM_MAX: (libc)Utility Limits.
+* BC_SCALE_MAX: (libc)Utility Limits.
+* BC_STRING_MAX: (libc)Utility Limits.
+* bcmp: (libc)String/Array Comparison.
+* bcopy: (libc)Copying Strings and Arrays.
+* bind_textdomain_codeset: (libc)Charset conversion in gettext.
+* bindtextdomain: (libc)Locating gettext catalog.
+* bind: (libc)Setting Address.
+* brk: (libc)Resizing the Data Segment.
+* BRKINT: (libc)Input Modes.
+* bsearch: (libc)Array Search Function.
+* btowc: (libc)Converting a Character.
+* BUFSIZ: (libc)Controlling Buffering.
+* bzero: (libc)Copying Strings and Arrays.
+* cabsfNx: (libc)Absolute Value.
+* cabsfN: (libc)Absolute Value.
+* cabsf: (libc)Absolute Value.
+* cabsl: (libc)Absolute Value.
+* cabs: (libc)Absolute Value.
+* cacosfNx: (libc)Inverse Trig Functions.
+* cacosfN: (libc)Inverse Trig Functions.
+* cacosf: (libc)Inverse Trig Functions.
+* cacoshfNx: (libc)Hyperbolic Functions.
+* cacoshfN: (libc)Hyperbolic Functions.
+* cacoshf: (libc)Hyperbolic Functions.
+* cacoshl: (libc)Hyperbolic Functions.
+* cacosh: (libc)Hyperbolic Functions.
+* cacosl: (libc)Inverse Trig Functions.
+* cacos: (libc)Inverse Trig Functions.
+* call_once: (libc)Call Once.
+* calloc: (libc)Allocating Cleared Space.
+* canonicalize_file_name: (libc)Symbolic Links.
+* canonicalizefNx: (libc)FP Bit Twiddling.
+* canonicalizefN: (libc)FP Bit Twiddling.
+* canonicalizef: (libc)FP Bit Twiddling.
+* canonicalizel: (libc)FP Bit Twiddling.
+* canonicalize: (libc)FP Bit Twiddling.
+* cargfNx: (libc)Operations on Complex.
+* cargfN: (libc)Operations on Complex.
+* cargf: (libc)Operations on Complex.
+* cargl: (libc)Operations on Complex.
+* carg: (libc)Operations on Complex.
+* casinfNx: (libc)Inverse Trig Functions.
+* casinfN: (libc)Inverse Trig Functions.
+* casinf: (libc)Inverse Trig Functions.
+* casinhfNx: (libc)Hyperbolic Functions.
+* casinhfN: (libc)Hyperbolic Functions.
+* casinhf: (libc)Hyperbolic Functions.
+* casinhl: (libc)Hyperbolic Functions.
+* casinh: (libc)Hyperbolic Functions.
+* casinl: (libc)Inverse Trig Functions.
+* casin: (libc)Inverse Trig Functions.
+* catanfNx: (libc)Inverse Trig Functions.
+* catanfN: (libc)Inverse Trig Functions.
+* catanf: (libc)Inverse Trig Functions.
+* catanhfNx: (libc)Hyperbolic Functions.
+* catanhfN: (libc)Hyperbolic Functions.
+* catanhf: (libc)Hyperbolic Functions.
+* catanhl: (libc)Hyperbolic Functions.
+* catanh: (libc)Hyperbolic Functions.
+* catanl: (libc)Inverse Trig Functions.
+* catan: (libc)Inverse Trig Functions.
+* catclose: (libc)The catgets Functions.
+* catgets: (libc)The catgets Functions.
+* catopen: (libc)The catgets Functions.
+* cbrtfNx: (libc)Exponents and Logarithms.
+* cbrtfN: (libc)Exponents and Logarithms.
+* cbrtf: (libc)Exponents and Logarithms.
+* cbrtl: (libc)Exponents and Logarithms.
+* cbrt: (libc)Exponents and Logarithms.
+* ccosfNx: (libc)Trig Functions.
+* ccosfN: (libc)Trig Functions.
+* ccosf: (libc)Trig Functions.
+* ccoshfNx: (libc)Hyperbolic Functions.
+* ccoshfN: (libc)Hyperbolic Functions.
+* ccoshf: (libc)Hyperbolic Functions.
+* ccoshl: (libc)Hyperbolic Functions.
+* ccosh: (libc)Hyperbolic Functions.
+* ccosl: (libc)Trig Functions.
+* ccos: (libc)Trig Functions.
+* CCTS_OFLOW: (libc)Control Modes.
+* ceilfNx: (libc)Rounding Functions.
+* ceilfN: (libc)Rounding Functions.
+* ceilf: (libc)Rounding Functions.
+* ceill: (libc)Rounding Functions.
+* ceil: (libc)Rounding Functions.
+* cexpfNx: (libc)Exponents and Logarithms.
+* cexpfN: (libc)Exponents and Logarithms.
+* cexpf: (libc)Exponents and Logarithms.
+* cexpl: (libc)Exponents and Logarithms.
+* cexp: (libc)Exponents and Logarithms.
+* cfgetispeed: (libc)Line Speed.
+* cfgetospeed: (libc)Line Speed.
+* cfmakeraw: (libc)Noncanonical Input.
+* cfsetispeed: (libc)Line Speed.
+* cfsetospeed: (libc)Line Speed.
+* cfsetspeed: (libc)Line Speed.
+* CHAR_BIT: (libc)Width of Type.
+* chdir: (libc)Working Directory.
+* CHILD_MAX: (libc)General Limits.
+* chmod: (libc)Setting Permissions.
+* chown: (libc)File Owner.
+* CIGNORE: (libc)Control Modes.
+* cimagfNx: (libc)Operations on Complex.
+* cimagfN: (libc)Operations on Complex.
+* cimagf: (libc)Operations on Complex.
+* cimagl: (libc)Operations on Complex.
+* cimag: (libc)Operations on Complex.
+* clearenv: (libc)Environment Access.
+* clearerr_unlocked: (libc)Error Recovery.
+* clearerr: (libc)Error Recovery.
+* CLK_TCK: (libc)Processor Time.
+* CLOCAL: (libc)Control Modes.
+* clock_getres: (libc)Getting the Time.
+* clock_gettime: (libc)Getting the Time.
+* CLOCK_MONOTONIC: (libc)Getting the Time.
+* CLOCK_REALTIME: (libc)Getting the Time.
+* clock_settime: (libc)Setting and Adjusting the Time.
+* clock: (libc)CPU Time.
+* CLOCKS_PER_SEC: (libc)CPU Time.
+* clog10fNx: (libc)Exponents and Logarithms.
+* clog10fN: (libc)Exponents and Logarithms.
+* clog10f: (libc)Exponents and Logarithms.
+* clog10l: (libc)Exponents and Logarithms.
+* clog10: (libc)Exponents and Logarithms.
+* clogfNx: (libc)Exponents and Logarithms.
+* clogfN: (libc)Exponents and Logarithms.
+* clogf: (libc)Exponents and Logarithms.
+* clogl: (libc)Exponents and Logarithms.
+* clog: (libc)Exponents and Logarithms.
+* close_range: (libc)Opening and Closing Files.
+* closedir: (libc)Reading/Closing Directory.
+* closefrom: (libc)Opening and Closing Files.
+* closelog: (libc)closelog.
+* close: (libc)Opening and Closing Files.
+* cnd_broadcast: (libc)ISO C Condition Variables.
+* cnd_destroy: (libc)ISO C Condition Variables.
+* cnd_init: (libc)ISO C Condition Variables.
+* cnd_signal: (libc)ISO C Condition Variables.
+* cnd_timedwait: (libc)ISO C Condition Variables.
+* cnd_wait: (libc)ISO C Condition Variables.
+* COLL_WEIGHTS_MAX: (libc)Utility Limits.
+* confstr: (libc)String Parameters.
+* conjfNx: (libc)Operations on Complex.
+* conjfN: (libc)Operations on Complex.
+* conjf: (libc)Operations on Complex.
+* conjl: (libc)Operations on Complex.
+* conj: (libc)Operations on Complex.
+* connect: (libc)Connecting.
+* copy_file_range: (libc)Copying File Data.
+* copysignfNx: (libc)FP Bit Twiddling.
+* copysignfN: (libc)FP Bit Twiddling.
+* copysignf: (libc)FP Bit Twiddling.
+* copysignl: (libc)FP Bit Twiddling.
+* copysign: (libc)FP Bit Twiddling.
+* cosfNx: (libc)Trig Functions.
+* cosfN: (libc)Trig Functions.
+* cosf: (libc)Trig Functions.
+* coshfNx: (libc)Hyperbolic Functions.
+* coshfN: (libc)Hyperbolic Functions.
+* coshf: (libc)Hyperbolic Functions.
+* coshl: (libc)Hyperbolic Functions.
+* cosh: (libc)Hyperbolic Functions.
+* cosl: (libc)Trig Functions.
+* cos: (libc)Trig Functions.
+* cpowfNx: (libc)Exponents and Logarithms.
+* cpowfN: (libc)Exponents and Logarithms.
+* cpowf: (libc)Exponents and Logarithms.
+* cpowl: (libc)Exponents and Logarithms.
+* cpow: (libc)Exponents and Logarithms.
+* cprojfNx: (libc)Operations on Complex.
+* cprojfN: (libc)Operations on Complex.
+* cprojf: (libc)Operations on Complex.
+* cprojl: (libc)Operations on Complex.
+* cproj: (libc)Operations on Complex.
+* CPU_CLR: (libc)CPU Affinity.
+* CPU_FEATURE_ACTIVE: (libc)X86.
+* CPU_FEATURE_PRESENT: (libc)X86.
+* CPU_ISSET: (libc)CPU Affinity.
+* CPU_SETSIZE: (libc)CPU Affinity.
+* CPU_SET: (libc)CPU Affinity.
+* CPU_ZERO: (libc)CPU Affinity.
+* CREAD: (libc)Control Modes.
+* crealfNx: (libc)Operations on Complex.
+* crealfN: (libc)Operations on Complex.
+* crealf: (libc)Operations on Complex.
+* creall: (libc)Operations on Complex.
+* creal: (libc)Operations on Complex.
+* creat: (libc)Opening and Closing Files.
+* creat64: (libc)Opening and Closing Files.
+* CRTS_IFLOW: (libc)Control Modes.
+* crypt_r: (libc)Passphrase Storage.
+* crypt: (libc)Passphrase Storage.
+* CS5: (libc)Control Modes.
+* CS6: (libc)Control Modes.
+* CS7: (libc)Control Modes.
+* CS8: (libc)Control Modes.
+* csinfNx: (libc)Trig Functions.
+* csinfN: (libc)Trig Functions.
+* csinf: (libc)Trig Functions.
+* csinhfNx: (libc)Hyperbolic Functions.
+* csinhfN: (libc)Hyperbolic Functions.
+* csinhf: (libc)Hyperbolic Functions.
+* csinhl: (libc)Hyperbolic Functions.
+* csinh: (libc)Hyperbolic Functions.
+* csinl: (libc)Trig Functions.
+* csin: (libc)Trig Functions.
+* CSIZE: (libc)Control Modes.
+* csqrtfNx: (libc)Exponents and Logarithms.
+* csqrtfN: (libc)Exponents and Logarithms.
+* csqrtf: (libc)Exponents and Logarithms.
+* csqrtl: (libc)Exponents and Logarithms.
+* csqrt: (libc)Exponents and Logarithms.
+* CSTOPB: (libc)Control Modes.
+* ctanfNx: (libc)Trig Functions.
+* ctanfN: (libc)Trig Functions.
+* ctanf: (libc)Trig Functions.
+* ctanhfNx: (libc)Hyperbolic Functions.
+* ctanhfN: (libc)Hyperbolic Functions.
+* ctanhf: (libc)Hyperbolic Functions.
+* ctanhl: (libc)Hyperbolic Functions.
+* ctanh: (libc)Hyperbolic Functions.
+* ctanl: (libc)Trig Functions.
+* ctan: (libc)Trig Functions.
+* ctermid: (libc)Identifying the Terminal.
+* ctime_r: (libc)Formatting Calendar Time.
+* ctime: (libc)Formatting Calendar Time.
+* cuserid: (libc)Who Logged In.
+* daddl: (libc)Misc FP Arithmetic.
+* dcgettext: (libc)Translation with gettext.
+* dcngettext: (libc)Advanced gettext functions.
+* ddivl: (libc)Misc FP Arithmetic.
+* dfmal: (libc)Misc FP Arithmetic.
+* dgettext: (libc)Translation with gettext.
+* difftime: (libc)Calculating Elapsed Time.
+* dirfd: (libc)Opening a Directory.
+* dirname: (libc)Finding Tokens in a String.
+* div: (libc)Integer Division.
+* DLFO_EH_SEGMENT_TYPE: (libc)Dynamic Linker Introspection.
+* DLFO_STRUCT_HAS_EH_COUNT: (libc)Dynamic Linker Introspection.
+* DLFO_STRUCT_HAS_EH_DBASE: (libc)Dynamic Linker Introspection.
+* dlinfo: (libc)Dynamic Linker Introspection.
+* dmull: (libc)Misc FP Arithmetic.
+* dngettext: (libc)Advanced gettext functions.
+* drand48_r: (libc)SVID Random.
+* drand48: (libc)SVID Random.
+* dremf: (libc)Remainder Functions.
+* dreml: (libc)Remainder Functions.
+* drem: (libc)Remainder Functions.
+* dsqrtl: (libc)Misc FP Arithmetic.
+* dsubl: (libc)Misc FP Arithmetic.
+* DTTOIF: (libc)Directory Entries.
+* dup: (libc)Duplicating Descriptors.
+* dup2: (libc)Duplicating Descriptors.
+* E2BIG: (libc)Error Codes.
+* EACCES: (libc)Error Codes.
+* EADDRINUSE: (libc)Error Codes.
+* EADDRNOTAVAIL: (libc)Error Codes.
+* EADV: (libc)Error Codes.
+* EAFNOSUPPORT: (libc)Error Codes.
+* EAGAIN: (libc)Error Codes.
+* EALREADY: (libc)Error Codes.
+* EAUTH: (libc)Error Codes.
+* EBACKGROUND: (libc)Error Codes.
+* EBADE: (libc)Error Codes.
+* EBADFD: (libc)Error Codes.
+* EBADF: (libc)Error Codes.
+* EBADMSG: (libc)Error Codes.
+* EBADRPC: (libc)Error Codes.
+* EBADRQC: (libc)Error Codes.
+* EBADR: (libc)Error Codes.
+* EBADSLT: (libc)Error Codes.
+* EBFONT: (libc)Error Codes.
+* EBUSY: (libc)Error Codes.
+* ECANCELED: (libc)Error Codes.
+* ECHILD: (libc)Error Codes.
+* ECHOCTL: (libc)Local Modes.
+* ECHOE: (libc)Local Modes.
+* ECHOKE: (libc)Local Modes.
+* ECHOK: (libc)Local Modes.
+* ECHONL: (libc)Local Modes.
+* ECHOPRT: (libc)Local Modes.
+* ECHO: (libc)Local Modes.
+* ECHRNG: (libc)Error Codes.
+* ECOMM: (libc)Error Codes.
+* ECONNABORTED: (libc)Error Codes.
+* ECONNREFUSED: (libc)Error Codes.
+* ECONNRESET: (libc)Error Codes.
+* ecvt_r: (libc)System V Number Conversion.
+* ecvt: (libc)System V Number Conversion.
+* EDEADLK: (libc)Error Codes.
+* EDEADLOCK: (libc)Error Codes.
+* EDESTADDRREQ: (libc)Error Codes.
+* EDIED: (libc)Error Codes.
+* EDOM: (libc)Error Codes.
+* EDOTDOT: (libc)Error Codes.
+* EDQUOT: (libc)Error Codes.
+* ED: (libc)Error Codes.
+* EEXIST: (libc)Error Codes.
+* EFAULT: (libc)Error Codes.
+* EFBIG: (libc)Error Codes.
+* EFTYPE: (libc)Error Codes.
+* EGRATUITOUS: (libc)Error Codes.
+* EGREGIOUS: (libc)Error Codes.
+* EHOSTDOWN: (libc)Error Codes.
+* EHOSTUNREACH: (libc)Error Codes.
+* EHWPOISON: (libc)Error Codes.
+* EIDRM: (libc)Error Codes.
+* EIEIO: (libc)Error Codes.
+* EILSEQ: (libc)Error Codes.
+* EINPROGRESS: (libc)Error Codes.
+* EINTR: (libc)Error Codes.
+* EINVAL: (libc)Error Codes.
+* EIO: (libc)Error Codes.
+* EISCONN: (libc)Error Codes.
+* EISDIR: (libc)Error Codes.
+* EISNAM: (libc)Error Codes.
+* EKEYEXPIRED: (libc)Error Codes.
+* EKEYREJECTED: (libc)Error Codes.
+* EKEYREVOKED: (libc)Error Codes.
+* EL2HLT: (libc)Error Codes.
+* EL2NSYNC: (libc)Error Codes.
+* EL3HLT: (libc)Error Codes.
+* EL3RST: (libc)Error Codes.
+* ELIBACC: (libc)Error Codes.
+* ELIBBAD: (libc)Error Codes.
+* ELIBEXEC: (libc)Error Codes.
+* ELIBMAX: (libc)Error Codes.
+* ELIBSCN: (libc)Error Codes.
+* ELNRNG: (libc)Error Codes.
+* ELOOP: (libc)Error Codes.
+* EMEDIUMTYPE: (libc)Error Codes.
+* EMFILE: (libc)Error Codes.
+* EMLINK: (libc)Error Codes.
+* EMSGSIZE: (libc)Error Codes.
+* EMULTIHOP: (libc)Error Codes.
+* ENAMETOOLONG: (libc)Error Codes.
+* ENAVAIL: (libc)Error Codes.
+* endfsent: (libc)fstab.
+* endgrent: (libc)Scanning All Groups.
+* endhostent: (libc)Host Names.
+* endmntent: (libc)mtab.
+* endnetent: (libc)Networks Database.
+* endnetgrent: (libc)Lookup Netgroup.
+* endprotoent: (libc)Protocols Database.
+* endpwent: (libc)Scanning All Users.
+* endservent: (libc)Services Database.
+* endutent: (libc)Manipulating the Database.
+* endutxent: (libc)XPG Functions.
+* ENEEDAUTH: (libc)Error Codes.
+* ENETDOWN: (libc)Error Codes.
+* ENETRESET: (libc)Error Codes.
+* ENETUNREACH: (libc)Error Codes.
+* ENFILE: (libc)Error Codes.
+* ENOANO: (libc)Error Codes.
+* ENOBUFS: (libc)Error Codes.
+* ENOCSI: (libc)Error Codes.
+* ENODATA: (libc)Error Codes.
+* ENODEV: (libc)Error Codes.
+* ENOENT: (libc)Error Codes.
+* ENOEXEC: (libc)Error Codes.
+* ENOKEY: (libc)Error Codes.
+* ENOLCK: (libc)Error Codes.
+* ENOLINK: (libc)Error Codes.
+* ENOMEDIUM: (libc)Error Codes.
+* ENOMEM: (libc)Error Codes.
+* ENOMSG: (libc)Error Codes.
+* ENONET: (libc)Error Codes.
+* ENOPKG: (libc)Error Codes.
+* ENOPROTOOPT: (libc)Error Codes.
+* ENOSPC: (libc)Error Codes.
+* ENOSR: (libc)Error Codes.
+* ENOSTR: (libc)Error Codes.
+* ENOSYS: (libc)Error Codes.
+* ENOTBLK: (libc)Error Codes.
+* ENOTCONN: (libc)Error Codes.
+* ENOTDIR: (libc)Error Codes.
+* ENOTEMPTY: (libc)Error Codes.
+* ENOTNAM: (libc)Error Codes.
+* ENOTRECOVERABLE: (libc)Error Codes.
+* ENOTSOCK: (libc)Error Codes.
+* ENOTSUP: (libc)Error Codes.
+* ENOTTY: (libc)Error Codes.
+* ENOTUNIQ: (libc)Error Codes.
+* envz_add: (libc)Envz Functions.
+* envz_entry: (libc)Envz Functions.
+* envz_get: (libc)Envz Functions.
+* envz_merge: (libc)Envz Functions.
+* envz_remove: (libc)Envz Functions.
+* envz_strip: (libc)Envz Functions.
+* ENXIO: (libc)Error Codes.
+* EOF: (libc)EOF and Errors.
+* EOPNOTSUPP: (libc)Error Codes.
+* EOVERFLOW: (libc)Error Codes.
+* EOWNERDEAD: (libc)Error Codes.
+* EPERM: (libc)Error Codes.
+* EPFNOSUPPORT: (libc)Error Codes.
+* EPIPE: (libc)Error Codes.
+* EPROCLIM: (libc)Error Codes.
+* EPROCUNAVAIL: (libc)Error Codes.
+* EPROGMISMATCH: (libc)Error Codes.
+* EPROGUNAVAIL: (libc)Error Codes.
+* EPROTONOSUPPORT: (libc)Error Codes.
+* EPROTOTYPE: (libc)Error Codes.
+* EPROTO: (libc)Error Codes.
+* EQUIV_CLASS_MAX: (libc)Utility Limits.
+* erand48_r: (libc)SVID Random.
+* erand48: (libc)SVID Random.
+* ERANGE: (libc)Error Codes.
+* EREMCHG: (libc)Error Codes.
+* EREMOTEIO: (libc)Error Codes.
+* EREMOTE: (libc)Error Codes.
+* ERESTART: (libc)Error Codes.
+* erfcfNx: (libc)Special Functions.
+* erfcfN: (libc)Special Functions.
+* erfcf: (libc)Special Functions.
+* erfcl: (libc)Special Functions.
+* erfc: (libc)Special Functions.
+* erffNx: (libc)Special Functions.
+* erffN: (libc)Special Functions.
+* erff: (libc)Special Functions.
+* ERFKILL: (libc)Error Codes.
+* erfl: (libc)Special Functions.
+* erf: (libc)Special Functions.
+* EROFS: (libc)Error Codes.
+* ERPCMISMATCH: (libc)Error Codes.
+* errno: (libc)Checking for Errors.
+* error_at_line: (libc)Error Messages.
+* error: (libc)Error Messages.
+* errx: (libc)Error Messages.
+* err: (libc)Error Messages.
+* ESHUTDOWN: (libc)Error Codes.
+* ESOCKTNOSUPPORT: (libc)Error Codes.
+* ESPIPE: (libc)Error Codes.
+* ESRCH: (libc)Error Codes.
+* ESRMNT: (libc)Error Codes.
+* ESTALE: (libc)Error Codes.
+* ESTRPIPE: (libc)Error Codes.
+* ETIMEDOUT: (libc)Error Codes.
+* ETIME: (libc)Error Codes.
+* ETOOMANYREFS: (libc)Error Codes.
+* ETXTBSY: (libc)Error Codes.
+* EUCLEAN: (libc)Error Codes.
+* EUNATCH: (libc)Error Codes.
+* EUSERS: (libc)Error Codes.
+* EWOULDBLOCK: (libc)Error Codes.
+* EXDEV: (libc)Error Codes.
+* execle: (libc)Executing a File.
+* execlp: (libc)Executing a File.
+* execl: (libc)Executing a File.
+* execve: (libc)Executing a File.
+* execvp: (libc)Executing a File.
+* execv: (libc)Executing a File.
+* EXFULL: (libc)Error Codes.
+* exit: (libc)Normal Termination.
+* EXIT_FAILURE: (libc)Exit Status.
+* EXIT_SUCCESS: (libc)Exit Status.
+* exp10fNx: (libc)Exponents and Logarithms.
+* exp10fN: (libc)Exponents and Logarithms.
+* exp10f: (libc)Exponents and Logarithms.
+* exp10l: (libc)Exponents and Logarithms.
+* exp10: (libc)Exponents and Logarithms.
+* exp2f: (libc)Exponents and Logarithms.
+* exp2: (libc)Exponents and Logarithms.
+* expfNx: (libc)Exponents and Logarithms.
+* expfN: (libc)Exponents and Logarithms.
+* expf: (libc)Exponents and Logarithms.
+* explicit_bzero: (libc)Erasing Sensitive Data.
+* expl: (libc)Exponents and Logarithms.
+* expm1fNx: (libc)Exponents and Logarithms.
+* expm1fN: (libc)Exponents and Logarithms.
+* expm1f: (libc)Exponents and Logarithms.
+* expm1l: (libc)Exponents and Logarithms.
+* expm1: (libc)Exponents and Logarithms.
+* exp: (libc)Exponents and Logarithms.
+* exp2fNx: (libc)Exponents and Logarithms.
+* exp2fN: (libc)Exponents and Logarithms.
+* exp2l: (libc)Exponents and Logarithms.
+* EXPR_NEST_MAX: (libc)Utility Limits.
+* F_DUPFD: (libc)Duplicating Descriptors.
+* F_GETFD: (libc)Descriptor Flags.
+* F_GETFL: (libc)Getting File Status Flags.
+* F_GETLK: (libc)File Locks.
+* F_GETOWN: (libc)Interrupt Input.
+* F_OFD_GETLK: (libc)Open File Description Locks.
+* F_OFD_SETLKW: (libc)Open File Description Locks.
+* F_OFD_SETLK: (libc)Open File Description Locks.
+* F_OK: (libc)Testing File Access.
+* F_SETFD: (libc)Descriptor Flags.
+* F_SETFL: (libc)Getting File Status Flags.
+* F_SETLKW: (libc)File Locks.
+* F_SETLK: (libc)File Locks.
+* F_SETOWN: (libc)Interrupt Input.
+* fabsfNx: (libc)Absolute Value.
+* fabsfN: (libc)Absolute Value.
+* fabsf: (libc)Absolute Value.
+* fabsl: (libc)Absolute Value.
+* fabs: (libc)Absolute Value.
+* faddl: (libc)Misc FP Arithmetic.
+* fadd: (libc)Misc FP Arithmetic.
+* fchdir: (libc)Working Directory.
+* fchmod: (libc)Setting Permissions.
+* fchown: (libc)File Owner.
+* fcloseall: (libc)Closing Streams.
+* fclose: (libc)Closing Streams.
+* fcntl: (libc)Control Operations.
+* fcvt_r: (libc)System V Number Conversion.
+* fcvt: (libc)System V Number Conversion.
+* FD_CLOEXEC: (libc)Descriptor Flags.
+* FD_CLR: (libc)Waiting for I/O.
+* FD_ISSET: (libc)Waiting for I/O.
+* FD_SETSIZE: (libc)Waiting for I/O.
+* FD_SET: (libc)Waiting for I/O.
+* FD_ZERO: (libc)Waiting for I/O.
+* fdatasync: (libc)Synchronizing I/O.
+* fdimfNx: (libc)Misc FP Arithmetic.
+* fdimfN: (libc)Misc FP Arithmetic.
+* fdimf: (libc)Misc FP Arithmetic.
+* fdiml: (libc)Misc FP Arithmetic.
+* fdim: (libc)Misc FP Arithmetic.
+* fdivl: (libc)Misc FP Arithmetic.
+* fdiv: (libc)Misc FP Arithmetic.
+* fdopendir: (libc)Opening a Directory.
+* fdopen: (libc)Descriptors and Streams.
+* FE_SNANS_ALWAYS_SIGNAL: (libc)Infinity and NaN.
+* feclearexcept: (libc)Status bit operations.
+* fedisableexcept: (libc)Control Functions.
+* feenableexcept: (libc)Control Functions.
+* fegetenv: (libc)Control Functions.
+* fegetexceptflag: (libc)Status bit operations.
+* fegetexcept: (libc)Control Functions.
+* fegetmode: (libc)Control Functions.
+* fegetround: (libc)Rounding.
+* feholdexcept: (libc)Control Functions.
+* feof_unlocked: (libc)EOF and Errors.
+* feof: (libc)EOF and Errors.
+* feraiseexcept: (libc)Status bit operations.
+* ferror_unlocked: (libc)EOF and Errors.
+* ferror: (libc)EOF and Errors.
+* fesetenv: (libc)Control Functions.
+* fesetexceptflag: (libc)Status bit operations.
+* fesetexcept: (libc)Status bit operations.
+* fesetmode: (libc)Control Functions.
+* fesetround: (libc)Rounding.
+* fetestexceptflag: (libc)Status bit operations.
+* fetestexcept: (libc)Status bit operations.
+* feupdateenv: (libc)Control Functions.
+* fexecve: (libc)Executing a File.
+* fflush_unlocked: (libc)Flushing Buffers.
+* fflush: (libc)Flushing Buffers.
+* ffmal: (libc)Misc FP Arithmetic.
+* ffma: (libc)Misc FP Arithmetic.
+* fgetc_unlocked: (libc)Character Input.
+* fgetc: (libc)Character Input.
+* fgetgrent_r: (libc)Scanning All Groups.
+* fgetgrent: (libc)Scanning All Groups.
+* fgetpos: (libc)Portable Positioning.
+* fgetpos64: (libc)Portable Positioning.
+* fgetpwent_r: (libc)Scanning All Users.
+* fgetpwent: (libc)Scanning All Users.
+* fgets_unlocked: (libc)Line Input.
+* fgets: (libc)Line Input.
+* fgetwc_unlocked: (libc)Character Input.
+* fgetwc: (libc)Character Input.
+* fgetws_unlocked: (libc)Line Input.
+* fgetws: (libc)Line Input.
+* FILENAME_MAX: (libc)Limits for Files.
+* fileno_unlocked: (libc)Descriptors and Streams.
+* fileno: (libc)Descriptors and Streams.
+* finitef: (libc)Floating Point Classes.
+* finitel: (libc)Floating Point Classes.
+* finite: (libc)Floating Point Classes.
+* flockfile: (libc)Streams and Threads.
+* floorfNx: (libc)Rounding Functions.
+* floorfN: (libc)Rounding Functions.
+* floorf: (libc)Rounding Functions.
+* floorl: (libc)Rounding Functions.
+* floor: (libc)Rounding Functions.
+* FLUSHO: (libc)Local Modes.
+* fMaddfNx: (libc)Misc FP Arithmetic.
+* fMaddfN: (libc)Misc FP Arithmetic.
+* fmafNx: (libc)Misc FP Arithmetic.
+* fmafN: (libc)Misc FP Arithmetic.
+* fmaf: (libc)Misc FP Arithmetic.
+* fmal: (libc)Misc FP Arithmetic.
+* fmaxfNx: (libc)Misc FP Arithmetic.
+* fmaxfN: (libc)Misc FP Arithmetic.
+* fmaxf: (libc)Misc FP Arithmetic.
+* fmaximum_mag_numfNx: (libc)Misc FP Arithmetic.
+* fmaximum_mag_numfN: (libc)Misc FP Arithmetic.
+* fmaximum_mag_numf: (libc)Misc FP Arithmetic.
+* fmaximum_mag_numl: (libc)Misc FP Arithmetic.
+* fmaximum_mag_num: (libc)Misc FP Arithmetic.
+* fmaximum_magfNx: (libc)Misc FP Arithmetic.
+* fmaximum_magfN: (libc)Misc FP Arithmetic.
+* fmaximum_magf: (libc)Misc FP Arithmetic.
+* fmaximum_magl: (libc)Misc FP Arithmetic.
+* fmaximum_mag: (libc)Misc FP Arithmetic.
+* fmaximum_numfNx: (libc)Misc FP Arithmetic.
+* fmaximum_numfN: (libc)Misc FP Arithmetic.
+* fmaximum_numf: (libc)Misc FP Arithmetic.
+* fmaximum_numl: (libc)Misc FP Arithmetic.
+* fmaximum_num: (libc)Misc FP Arithmetic.
+* fmaximumfNx: (libc)Misc FP Arithmetic.
+* fmaximumfN: (libc)Misc FP Arithmetic.
+* fmaximumf: (libc)Misc FP Arithmetic.
+* fmaximuml: (libc)Misc FP Arithmetic.
+* fmaximum: (libc)Misc FP Arithmetic.
+* fmaxl: (libc)Misc FP Arithmetic.
+* fmaxmagfNx: (libc)Misc FP Arithmetic.
+* fmaxmagfN: (libc)Misc FP Arithmetic.
+* fmaxmagf: (libc)Misc FP Arithmetic.
+* fmaxmagl: (libc)Misc FP Arithmetic.
+* fmaxmag: (libc)Misc FP Arithmetic.
+* fmax: (libc)Misc FP Arithmetic.
+* fma: (libc)Misc FP Arithmetic.
+* fMdivfNx: (libc)Misc FP Arithmetic.
+* fMdivfN: (libc)Misc FP Arithmetic.
+* fmemopen: (libc)String Streams.
+* fMfmafNx: (libc)Misc FP Arithmetic.
+* fMfmafN: (libc)Misc FP Arithmetic.
+* fminfNx: (libc)Misc FP Arithmetic.
+* fminfN: (libc)Misc FP Arithmetic.
+* fminf: (libc)Misc FP Arithmetic.
+* fminimum_mag_numfNx: (libc)Misc FP Arithmetic.
+* fminimum_mag_numfN: (libc)Misc FP Arithmetic.
+* fminimum_mag_numf: (libc)Misc FP Arithmetic.
+* fminimum_mag_numl: (libc)Misc FP Arithmetic.
+* fminimum_mag_num: (libc)Misc FP Arithmetic.
+* fminimum_magfNx: (libc)Misc FP Arithmetic.
+* fminimum_magfN: (libc)Misc FP Arithmetic.
+* fminimum_magf: (libc)Misc FP Arithmetic.
+* fminimum_magl: (libc)Misc FP Arithmetic.
+* fminimum_mag: (libc)Misc FP Arithmetic.
+* fminimum_numfNx: (libc)Misc FP Arithmetic.
+* fminimum_numfN: (libc)Misc FP Arithmetic.
+* fminimum_numf: (libc)Misc FP Arithmetic.
+* fminimum_numl: (libc)Misc FP Arithmetic.
+* fminimum_num: (libc)Misc FP Arithmetic.
+* fminimumfNx: (libc)Misc FP Arithmetic.
+* fminimumfN: (libc)Misc FP Arithmetic.
+* fminimumf: (libc)Misc FP Arithmetic.
+* fminimuml: (libc)Misc FP Arithmetic.
+* fminimum: (libc)Misc FP Arithmetic.
+* fminl: (libc)Misc FP Arithmetic.
+* fminmagfNx: (libc)Misc FP Arithmetic.
+* fminmagfN: (libc)Misc FP Arithmetic.
+* fminmagf: (libc)Misc FP Arithmetic.
+* fminmagl: (libc)Misc FP Arithmetic.
+* fminmag: (libc)Misc FP Arithmetic.
+* fmin: (libc)Misc FP Arithmetic.
+* fMmulfNx: (libc)Misc FP Arithmetic.
+* fMmulfN: (libc)Misc FP Arithmetic.
+* fmodfNx: (libc)Remainder Functions.
+* fmodfN: (libc)Remainder Functions.
+* fmodf: (libc)Remainder Functions.
+* fmodl: (libc)Remainder Functions.
+* fmod: (libc)Remainder Functions.
+* fMsqrtfNx: (libc)Misc FP Arithmetic.
+* fMsqrtfN: (libc)Misc FP Arithmetic.
+* fMsubfNx: (libc)Misc FP Arithmetic.
+* fMsubfN: (libc)Misc FP Arithmetic.
+* fmtmsg: (libc)Printing Formatted Messages.
+* fmull: (libc)Misc FP Arithmetic.
+* fmul: (libc)Misc FP Arithmetic.
+* fMxaddfNx: (libc)Misc FP Arithmetic.
+* fMxaddfN: (libc)Misc FP Arithmetic.
+* fMxdivfNx: (libc)Misc FP Arithmetic.
+* fMxdivfN: (libc)Misc FP Arithmetic.
+* fMxfmafNx: (libc)Misc FP Arithmetic.
+* fMxfmafN: (libc)Misc FP Arithmetic.
+* fMxmulfNx: (libc)Misc FP Arithmetic.
+* fMxmulfN: (libc)Misc FP Arithmetic.
+* fMxsqrtfNx: (libc)Misc FP Arithmetic.
+* fMxsqrtfN: (libc)Misc FP Arithmetic.
+* fMxsubfNx: (libc)Misc FP Arithmetic.
+* fMxsubfN: (libc)Misc FP Arithmetic.
+* fnmatch: (libc)Wildcard Matching.
+* FOPEN_MAX: (libc)Opening Streams.
+* fopencookie: (libc)Streams and Cookies.
+* fopen: (libc)Opening Streams.
+* fopen64: (libc)Opening Streams.
+* forkpty: (libc)Pseudo-Terminal Pairs.
+* fork: (libc)Creating a Process.
+* FP_ILOGB0: (libc)Exponents and Logarithms.
+* FP_ILOGBNAN: (libc)Exponents and Logarithms.
+* FP_LLOGB0: (libc)Exponents and Logarithms.
+* FP_LLOGBNAN: (libc)Exponents and Logarithms.
+* fpathconf: (libc)Pathconf.
+* fpclassify: (libc)Floating Point Classes.
+* fprintf: (libc)Formatted Output Functions.
+* fputc_unlocked: (libc)Simple Output.
+* fputc: (libc)Simple Output.
+* fputs_unlocked: (libc)Simple Output.
+* fputs: (libc)Simple Output.
+* fputwc_unlocked: (libc)Simple Output.
+* fputwc: (libc)Simple Output.
+* fputws_unlocked: (libc)Simple Output.
+* fputws: (libc)Simple Output.
+* fread_unlocked: (libc)Block Input/Output.
+* fread: (libc)Block Input/Output.
+* free: (libc)Freeing after Malloc.
+* freopen: (libc)Opening Streams.
+* freopen64: (libc)Opening Streams.
+* frexpfNx: (libc)Normalization Functions.
+* frexpfN: (libc)Normalization Functions.
+* frexpf: (libc)Normalization Functions.
+* frexpl: (libc)Normalization Functions.
+* frexp: (libc)Normalization Functions.
+* fromfpfNx: (libc)Rounding Functions.
+* fromfpfN: (libc)Rounding Functions.
+* fromfpf: (libc)Rounding Functions.
+* fromfpl: (libc)Rounding Functions.
+* fromfpxfNx: (libc)Rounding Functions.
+* fromfpxfN: (libc)Rounding Functions.
+* fromfpxf: (libc)Rounding Functions.
+* fromfpxl: (libc)Rounding Functions.
+* fromfpx: (libc)Rounding Functions.
+* fromfp: (libc)Rounding Functions.
+* fscanf: (libc)Formatted Input Functions.
+* fseeko: (libc)File Positioning.
+* fseeko64: (libc)File Positioning.
+* fseek: (libc)File Positioning.
+* fsetpos: (libc)Portable Positioning.
+* fsetpos64: (libc)Portable Positioning.
+* fsqrtl: (libc)Misc FP Arithmetic.
+* fsqrt: (libc)Misc FP Arithmetic.
+* fstat: (libc)Reading Attributes.
+* fstat64: (libc)Reading Attributes.
+* fsubl: (libc)Misc FP Arithmetic.
+* fsub: (libc)Misc FP Arithmetic.
+* fsync: (libc)Synchronizing I/O.
+* ftello: (libc)File Positioning.
+* ftello64: (libc)File Positioning.
+* ftell: (libc)File Positioning.
+* ftruncate: (libc)File Size.
+* ftruncate64: (libc)File Size.
+* ftrylockfile: (libc)Streams and Threads.
+* ftw: (libc)Working with Directory Trees.
+* ftw64: (libc)Working with Directory Trees.
+* funlockfile: (libc)Streams and Threads.
+* futimes: (libc)File Times.
+* fwide: (libc)Streams and I18N.
+* fwprintf: (libc)Formatted Output Functions.
+* fwrite_unlocked: (libc)Block Input/Output.
+* fwrite: (libc)Block Input/Output.
+* fwscanf: (libc)Formatted Input Functions.
+* gammaf: (libc)Special Functions.
+* gammal: (libc)Special Functions.
+* gamma: (libc)Special Functions.
+* gcvt: (libc)System V Number Conversion.
+* get_avphys_pages: (libc)Query Memory Parameters.
+* get_current_dir_name: (libc)Working Directory.
+* get_nprocs_conf: (libc)Processor Resources.
+* get_nprocs: (libc)Processor Resources.
+* get_phys_pages: (libc)Query Memory Parameters.
+* getauxval: (libc)Auxiliary Vector.
+* getc_unlocked: (libc)Character Input.
+* getchar_unlocked: (libc)Character Input.
+* getchar: (libc)Character Input.
+* getcontext: (libc)System V contexts.
+* getcpu: (libc)CPU Affinity.
+* getcwd: (libc)Working Directory.
+* getc: (libc)Character Input.
+* getdate_r: (libc)General Time String Parsing.
+* getdate: (libc)General Time String Parsing.
+* getdelim: (libc)Line Input.
+* getdents64: (libc)Low-level Directory Access.
+* getdomainnname: (libc)Host Identification.
+* getegid: (libc)Reading Persona.
+* getentropy: (libc)Unpredictable Bytes.
+* getenv: (libc)Environment Access.
+* geteuid: (libc)Reading Persona.
+* getfsent: (libc)fstab.
+* getfsfile: (libc)fstab.
+* getfsspec: (libc)fstab.
+* getgid: (libc)Reading Persona.
+* getgrent_r: (libc)Scanning All Groups.
+* getgrent: (libc)Scanning All Groups.
+* getgrgid_r: (libc)Lookup Group.
+* getgrgid: (libc)Lookup Group.
+* getgrnam_r: (libc)Lookup Group.
+* getgrnam: (libc)Lookup Group.
+* getgrouplist: (libc)Setting Groups.
+* getgroups: (libc)Reading Persona.
+* gethostbyaddr_r: (libc)Host Names.
+* gethostbyaddr: (libc)Host Names.
+* gethostbyname2_r: (libc)Host Names.
+* gethostbyname2: (libc)Host Names.
+* gethostbyname_r: (libc)Host Names.
+* gethostbyname: (libc)Host Names.
+* gethostent: (libc)Host Names.
+* gethostid: (libc)Host Identification.
+* gethostname: (libc)Host Identification.
+* getitimer: (libc)Setting an Alarm.
+* getline: (libc)Line Input.
+* getloadavg: (libc)Processor Resources.
+* getlogin: (libc)Who Logged In.
+* getmntent_r: (libc)mtab.
+* getmntent: (libc)mtab.
+* getnetbyaddr: (libc)Networks Database.
+* getnetbyname: (libc)Networks Database.
+* getnetent: (libc)Networks Database.
+* getnetgrent_r: (libc)Lookup Netgroup.
+* getnetgrent: (libc)Lookup Netgroup.
+* getopt_long_only: (libc)Getopt Long Options.
+* getopt_long: (libc)Getopt Long Options.
+* getopt: (libc)Using Getopt.
+* getpagesize: (libc)Query Memory Parameters.
+* getpass: (libc)getpass.
+* getpayloadfNx: (libc)FP Bit Twiddling.
+* getpayloadfN: (libc)FP Bit Twiddling.
+* getpayloadf: (libc)FP Bit Twiddling.
+* getpayloadl: (libc)FP Bit Twiddling.
+* getpayload: (libc)FP Bit Twiddling.
+* getpeername: (libc)Who is Connected.
+* getpgid: (libc)Process Group Functions.
+* getpgrp: (libc)Process Group Functions.
+* getpid: (libc)Process Identification.
+* getppid: (libc)Process Identification.
+* getpriority: (libc)Traditional Scheduling Functions.
+* getprotobyname: (libc)Protocols Database.
+* getprotobynumber: (libc)Protocols Database.
+* getprotoent: (libc)Protocols Database.
+* getpt: (libc)Allocation.
+* getpwent_r: (libc)Scanning All Users.
+* getpwent: (libc)Scanning All Users.
+* getpwnam_r: (libc)Lookup User.
+* getpwnam: (libc)Lookup User.
+* getpwuid_r: (libc)Lookup User.
+* getpwuid: (libc)Lookup User.
+* getrandom: (libc)Unpredictable Bytes.
+* getrlimit: (libc)Limits on Resources.
+* getrlimit64: (libc)Limits on Resources.
+* getrusage: (libc)Resource Usage.
+* getservbyname: (libc)Services Database.
+* getservbyport: (libc)Services Database.
+* getservent: (libc)Services Database.
+* getsid: (libc)Process Group Functions.
+* getsockname: (libc)Reading Address.
+* getsockopt: (libc)Socket Option Functions.
+* getsubopt: (libc)Suboptions.
+* gets: (libc)Line Input.
+* gettext: (libc)Translation with gettext.
+* gettid: (libc)Process Identification.
+* gettimeofday: (libc)Getting the Time.
+* getuid: (libc)Reading Persona.
+* getumask: (libc)Setting Permissions.
+* getutent_r: (libc)Manipulating the Database.
+* getutent: (libc)Manipulating the Database.
+* getutid_r: (libc)Manipulating the Database.
+* getutid: (libc)Manipulating the Database.
+* getutline_r: (libc)Manipulating the Database.
+* getutline: (libc)Manipulating the Database.
+* getutmpx: (libc)XPG Functions.
+* getutmp: (libc)XPG Functions.
+* getutxent: (libc)XPG Functions.
+* getutxid: (libc)XPG Functions.
+* getutxline: (libc)XPG Functions.
+* getwc_unlocked: (libc)Character Input.
+* getwchar_unlocked: (libc)Character Input.
+* getwchar: (libc)Character Input.
+* getwc: (libc)Character Input.
+* getwd: (libc)Working Directory.
+* getw: (libc)Character Input.
+* globfree: (libc)More Flags for Globbing.
+* globfree64: (libc)More Flags for Globbing.
+* glob: (libc)Calling Glob.
+* glob64: (libc)Calling Glob.
+* gmtime_r: (libc)Broken-down Time.
+* gmtime: (libc)Broken-down Time.
+* grantpt: (libc)Allocation.
+* gsignal: (libc)Signaling Yourself.
+* gtty: (libc)BSD Terminal Modes.
+* hasmntopt: (libc)mtab.
+* hcreate_r: (libc)Hash Search Function.
+* hcreate: (libc)Hash Search Function.
+* hdestroy_r: (libc)Hash Search Function.
+* hdestroy: (libc)Hash Search Function.
+* hsearch_r: (libc)Hash Search Function.
+* hsearch: (libc)Hash Search Function.
+* htonl: (libc)Byte Order.
+* htons: (libc)Byte Order.
+* HUGE_VAL_FNx: (libc)Math Error Reporting.
+* HUGE_VAL_FN: (libc)Math Error Reporting.
+* HUGE_VALF: (libc)Math Error Reporting.
+* HUGE_VALL: (libc)Math Error Reporting.
+* HUGE_VAL: (libc)Math Error Reporting.
+* HUPCL: (libc)Control Modes.
+* hypotfNx: (libc)Exponents and Logarithms.
+* hypotfN: (libc)Exponents and Logarithms.
+* hypotf: (libc)Exponents and Logarithms.
+* hypotl: (libc)Exponents and Logarithms.
+* hypot: (libc)Exponents and Logarithms.
+* ICANON: (libc)Local Modes.
+* iconv_close: (libc)Generic Conversion Interface.
+* iconv_open: (libc)Generic Conversion Interface.
+* iconv: (libc)Generic Conversion Interface.
+* ICRNL: (libc)Input Modes.
+* IEXTEN: (libc)Local Modes.
+* if_freenameindex: (libc)Interface Naming.
+* if_indextoname: (libc)Interface Naming.
+* if_nameindex: (libc)Interface Naming.
+* if_nametoindex: (libc)Interface Naming.
+* IFNAMSIZ: (libc)Interface Naming.
+* IFTODT: (libc)Directory Entries.
+* IGNBRK: (libc)Input Modes.
+* IGNCR: (libc)Input Modes.
+* IGNPAR: (libc)Input Modes.
+* ilogbfNx: (libc)Exponents and Logarithms.
+* ilogbfN: (libc)Exponents and Logarithms.
+* ilogbf: (libc)Exponents and Logarithms.
+* ilogbl: (libc)Exponents and Logarithms.
+* ilogb: (libc)Exponents and Logarithms.
+* imaxabs: (libc)Absolute Value.
+* IMAXBEL: (libc)Input Modes.
+* imaxdiv: (libc)Integer Division.
+* in6addr_any: (libc)Host Address Data Type.
+* in6addr_loopback: (libc)Host Address Data Type.
+* INADDR_ANY: (libc)Host Address Data Type.
+* INADDR_BROADCAST: (libc)Host Address Data Type.
+* INADDR_LOOPBACK: (libc)Host Address Data Type.
+* INADDR_NONE: (libc)Host Address Data Type.
+* index: (libc)Search Functions.
+* inet_addr: (libc)Host Address Functions.
+* inet_aton: (libc)Host Address Functions.
+* inet_lnaof: (libc)Host Address Functions.
+* inet_makeaddr: (libc)Host Address Functions.
+* inet_netof: (libc)Host Address Functions.
+* inet_network: (libc)Host Address Functions.
+* inet_ntoa: (libc)Host Address Functions.
+* inet_ntop: (libc)Host Address Functions.
+* inet_pton: (libc)Host Address Functions.
+* INFINITY: (libc)Infinity and NaN.
+* initgroups: (libc)Setting Groups.
+* initstate_r: (libc)BSD Random.
+* initstate: (libc)BSD Random.
+* INLCR: (libc)Input Modes.
+* innetgr: (libc)Netgroup Membership.
+* INPCK: (libc)Input Modes.
+* ioctl: (libc)IOCTLs.
+* IPPORT_RESERVED: (libc)Ports.
+* IPPORT_USERRESERVED: (libc)Ports.
+* isalnum: (libc)Classification of Characters.
+* isalpha: (libc)Classification of Characters.
+* isascii: (libc)Classification of Characters.
+* isatty: (libc)Is It a Terminal.
+* isblank: (libc)Classification of Characters.
+* iscanonical: (libc)Floating Point Classes.
+* iscntrl: (libc)Classification of Characters.
+* isdigit: (libc)Classification of Characters.
+* iseqsig: (libc)FP Comparison Functions.
+* isfinite: (libc)Floating Point Classes.
+* isgraph: (libc)Classification of Characters.
+* isgreaterequal: (libc)FP Comparison Functions.
+* isgreater: (libc)FP Comparison Functions.
+* ISIG: (libc)Local Modes.
+* isinff: (libc)Floating Point Classes.
+* isinfl: (libc)Floating Point Classes.
+* isinf: (libc)Floating Point Classes.
+* islessequal: (libc)FP Comparison Functions.
+* islessgreater: (libc)FP Comparison Functions.
+* isless: (libc)FP Comparison Functions.
+* islower: (libc)Classification of Characters.
+* isnanf: (libc)Floating Point Classes.
+* isnanl: (libc)Floating Point Classes.
+* isnan: (libc)Floating Point Classes.
+* isnan: (libc)Floating Point Classes.
+* isnormal: (libc)Floating Point Classes.
+* isprint: (libc)Classification of Characters.
+* ispunct: (libc)Classification of Characters.
+* issignaling: (libc)Floating Point Classes.
+* isspace: (libc)Classification of Characters.
+* issubnormal: (libc)Floating Point Classes.
+* ISTRIP: (libc)Input Modes.
+* isunordered: (libc)FP Comparison Functions.
+* isupper: (libc)Classification of Characters.
+* iswalnum: (libc)Classification of Wide Characters.
+* iswalpha: (libc)Classification of Wide Characters.
+* iswblank: (libc)Classification of Wide Characters.
+* iswcntrl: (libc)Classification of Wide Characters.
+* iswctype: (libc)Classification of Wide Characters.
+* iswdigit: (libc)Classification of Wide Characters.
+* iswgraph: (libc)Classification of Wide Characters.
+* iswlower: (libc)Classification of Wide Characters.
+* iswprint: (libc)Classification of Wide Characters.
+* iswpunct: (libc)Classification of Wide Characters.
+* iswspace: (libc)Classification of Wide Characters.
+* iswupper: (libc)Classification of Wide Characters.
+* iswxdigit: (libc)Classification of Wide Characters.
+* isxdigit: (libc)Classification of Characters.
+* iszero: (libc)Floating Point Classes.
+* IXANY: (libc)Input Modes.
+* IXOFF: (libc)Input Modes.
+* IXON: (libc)Input Modes.
+* I: (libc)Complex Numbers.
+* j0fNx: (libc)Special Functions.
+* j0fN: (libc)Special Functions.
+* j0f: (libc)Special Functions.
+* j0l: (libc)Special Functions.
+* j0: (libc)Special Functions.
+* j1fNx: (libc)Special Functions.
+* j1fN: (libc)Special Functions.
+* j1f: (libc)Special Functions.
+* j1l: (libc)Special Functions.
+* j1: (libc)Special Functions.
+* jnfNx: (libc)Special Functions.
+* jnfN: (libc)Special Functions.
+* jnf: (libc)Special Functions.
+* jnl: (libc)Special Functions.
+* jn: (libc)Special Functions.
+* jrand48_r: (libc)SVID Random.
+* jrand48: (libc)SVID Random.
+* killpg: (libc)Signaling Another Process.
+* kill: (libc)Signaling Another Process.
+* l64a: (libc)Encode Binary Data.
+* L_ctermid: (libc)Identifying the Terminal.
+* L_cuserid: (libc)Who Logged In.
+* L_tmpnam: (libc)Temporary Files.
+* labs: (libc)Absolute Value.
+* lcong48_r: (libc)SVID Random.
+* lcong48: (libc)SVID Random.
+* ldexpfNx: (libc)Normalization Functions.
+* ldexpfN: (libc)Normalization Functions.
+* ldexpf: (libc)Normalization Functions.
+* ldexpl: (libc)Normalization Functions.
+* ldexp: (libc)Normalization Functions.
+* ldiv: (libc)Integer Division.
+* lfind: (libc)Array Search Function.
+* lgamma_r: (libc)Special Functions.
+* lgammaf_r: (libc)Special Functions.
+* lgammafN_r: (libc)Special Functions.
+* lgammafNx_r: (libc)Special Functions.
+* lgammafNx: (libc)Special Functions.
+* lgammafN: (libc)Special Functions.
+* lgammaf: (libc)Special Functions.
+* lgammal_r: (libc)Special Functions.
+* lgammal: (libc)Special Functions.
+* lgamma: (libc)Special Functions.
+* LINE_MAX: (libc)Utility Limits.
+* LINK_MAX: (libc)Limits for Files.
+* linkat: (libc)Hard Links.
+* link: (libc)Hard Links.
+* lio_listio: (libc)Asynchronous Reads/Writes.
+* lio_listio64: (libc)Asynchronous Reads/Writes.
+* listen: (libc)Listening.
+* llabs: (libc)Absolute Value.
+* lldiv: (libc)Integer Division.
+* llogbfNx: (libc)Exponents and Logarithms.
+* llogbfN: (libc)Exponents and Logarithms.
+* llogbf: (libc)Exponents and Logarithms.
+* llogbl: (libc)Exponents and Logarithms.
+* llogb: (libc)Exponents and Logarithms.
+* llrintfNx: (libc)Rounding Functions.
+* llrintfN: (libc)Rounding Functions.
+* llrintf: (libc)Rounding Functions.
+* llrintl: (libc)Rounding Functions.
+* llrint: (libc)Rounding Functions.
+* llroundfNx: (libc)Rounding Functions.
+* llroundfN: (libc)Rounding Functions.
+* llroundf: (libc)Rounding Functions.
+* llroundl: (libc)Rounding Functions.
+* llround: (libc)Rounding Functions.
+* localeconv: (libc)The Lame Way to Locale Data.
+* localtime_r: (libc)Broken-down Time.
+* localtime: (libc)Broken-down Time.
+* log10fNx: (libc)Exponents and Logarithms.
+* log10fN: (libc)Exponents and Logarithms.
+* log10f: (libc)Exponents and Logarithms.
+* log10l: (libc)Exponents and Logarithms.
+* log10: (libc)Exponents and Logarithms.
+* log1pfNx: (libc)Exponents and Logarithms.
+* log1pfN: (libc)Exponents and Logarithms.
+* log1pf: (libc)Exponents and Logarithms.
+* log1pl: (libc)Exponents and Logarithms.
+* log1p: (libc)Exponents and Logarithms.
+* log2fN: (libc)Exponents and Logarithms.
+* log2f: (libc)Exponents and Logarithms.
+* log2: (libc)Exponents and Logarithms.
+* logbfNx: (libc)Exponents and Logarithms.
+* logbfN: (libc)Exponents and Logarithms.
+* logbf: (libc)Exponents and Logarithms.
+* logbl: (libc)Exponents and Logarithms.
+* logb: (libc)Exponents and Logarithms.
+* logfNx: (libc)Exponents and Logarithms.
+* logfN: (libc)Exponents and Logarithms.
+* logf: (libc)Exponents and Logarithms.
+* login_tty: (libc)Logging In and Out.
+* login: (libc)Logging In and Out.
+* logl: (libc)Exponents and Logarithms.
+* logout: (libc)Logging In and Out.
+* logwtmp: (libc)Logging In and Out.
+* log: (libc)Exponents and Logarithms.
+* log2fNx: (libc)Exponents and Logarithms.
+* log2l: (libc)Exponents and Logarithms.
+* longjmp: (libc)Non-Local Details.
+* lrand48_r: (libc)SVID Random.
+* lrand48: (libc)SVID Random.
+* lrintfNx: (libc)Rounding Functions.
+* lrintfN: (libc)Rounding Functions.
+* lrintf: (libc)Rounding Functions.
+* lrintl: (libc)Rounding Functions.
+* lrint: (libc)Rounding Functions.
+* lroundfNx: (libc)Rounding Functions.
+* lroundfN: (libc)Rounding Functions.
+* lroundf: (libc)Rounding Functions.
+* lroundl: (libc)Rounding Functions.
+* lround: (libc)Rounding Functions.
+* lsearch: (libc)Array Search Function.
+* lseek: (libc)File Position Primitive.
+* lseek64: (libc)File Position Primitive.
+* lstat: (libc)Reading Attributes.
+* lstat64: (libc)Reading Attributes.
+* lutimes: (libc)File Times.
+* madvise: (libc)Memory-mapped I/O.
+* makecontext: (libc)System V contexts.
+* mallinfo2: (libc)Statistics of Malloc.
+* malloc: (libc)Basic Allocation.
+* mallopt: (libc)Malloc Tunable Parameters.
+* MAX_CANON: (libc)Limits for Files.
+* MAX_INPUT: (libc)Limits for Files.
+* MAXNAMLEN: (libc)Limits for Files.
+* MAXSYMLINKS: (libc)Symbolic Links.
+* MB_CUR_MAX: (libc)Selecting the Conversion.
+* MB_LEN_MAX: (libc)Selecting the Conversion.
+* mblen: (libc)Non-reentrant Character Conversion.
+* mbrlen: (libc)Converting a Character.
+* mbrtowc: (libc)Converting a Character.
+* mbsinit: (libc)Keeping the state.
+* mbsnrtowcs: (libc)Converting Strings.
+* mbsrtowcs: (libc)Converting Strings.
+* mbstowcs: (libc)Non-reentrant String Conversion.
+* mbtowc: (libc)Non-reentrant Character Conversion.
+* mcheck: (libc)Heap Consistency Checking.
+* MDMBUF: (libc)Control Modes.
+* memalign: (libc)Aligned Memory Blocks.
+* memccpy: (libc)Copying Strings and Arrays.
+* memchr: (libc)Search Functions.
+* memcmp: (libc)String/Array Comparison.
+* memcpy: (libc)Copying Strings and Arrays.
+* memfd_create: (libc)Memory-mapped I/O.
+* memfrob: (libc)Obfuscating Data.
+* memmem: (libc)Search Functions.
+* memmove: (libc)Copying Strings and Arrays.
+* mempcpy: (libc)Copying Strings and Arrays.
+* memrchr: (libc)Search Functions.
+* memset: (libc)Copying Strings and Arrays.
+* mkdir: (libc)Creating Directories.
+* mkdtemp: (libc)Temporary Files.
+* mkfifo: (libc)FIFO Special Files.
+* mknod: (libc)Making Special Files.
+* mkstemp: (libc)Temporary Files.
+* mktemp: (libc)Temporary Files.
+* mktime: (libc)Broken-down Time.
+* mlockall: (libc)Page Lock Functions.
+* mlock: (libc)Page Lock Functions.
+* mlock2: (libc)Page Lock Functions.
+* mmap: (libc)Memory-mapped I/O.
+* mmap64: (libc)Memory-mapped I/O.
+* modffNx: (libc)Rounding Functions.
+* modffN: (libc)Rounding Functions.
+* modff: (libc)Rounding Functions.
+* modfl: (libc)Rounding Functions.
+* modf: (libc)Rounding Functions.
+* mount: (libc)Mount-Unmount-Remount.
+* mprobe: (libc)Heap Consistency Checking.
+* mprotect: (libc)Memory Protection.
+* mrand48_r: (libc)SVID Random.
+* mrand48: (libc)SVID Random.
+* mremap: (libc)Memory-mapped I/O.
+* MSG_DONTROUTE: (libc)Socket Data Options.
+* MSG_OOB: (libc)Socket Data Options.
+* MSG_PEEK: (libc)Socket Data Options.
+* msync: (libc)Memory-mapped I/O.
+* mtrace: (libc)Tracing malloc.
+* mtx_destroy: (libc)ISO C Mutexes.
+* mtx_init: (libc)ISO C Mutexes.
+* mtx_lock: (libc)ISO C Mutexes.
+* mtx_timedlock: (libc)ISO C Mutexes.
+* mtx_trylock: (libc)ISO C Mutexes.
+* mtx_unlock: (libc)ISO C Mutexes.
+* munlockall: (libc)Page Lock Functions.
+* munlock: (libc)Page Lock Functions.
+* munmap: (libc)Memory-mapped I/O.
+* muntrace: (libc)Tracing malloc.
+* NAME_MAX: (libc)Limits for Files.
+* nanfNx: (libc)FP Bit Twiddling.
+* nanfN: (libc)FP Bit Twiddling.
+* nanf: (libc)FP Bit Twiddling.
+* nanl: (libc)FP Bit Twiddling.
+* nanosleep: (libc)Sleeping.
+* nan: (libc)FP Bit Twiddling.
+* NAN: (libc)Infinity and NaN.
+* NCCS: (libc)Mode Data Types.
+* nearbyintfNx: (libc)Rounding Functions.
+* nearbyintfN: (libc)Rounding Functions.
+* nearbyintf: (libc)Rounding Functions.
+* nearbyintl: (libc)Rounding Functions.
+* nearbyint: (libc)Rounding Functions.
+* nextafterfNx: (libc)FP Bit Twiddling.
+* nextafterfN: (libc)FP Bit Twiddling.
+* nextafterf: (libc)FP Bit Twiddling.
+* nextafterl: (libc)FP Bit Twiddling.
+* nextafter: (libc)FP Bit Twiddling.
+* nextdownfNx: (libc)FP Bit Twiddling.
+* nextdownfN: (libc)FP Bit Twiddling.
+* nextdownf: (libc)FP Bit Twiddling.
+* nextdownl: (libc)FP Bit Twiddling.
+* nextdown: (libc)FP Bit Twiddling.
+* nexttowardf: (libc)FP Bit Twiddling.
+* nexttowardl: (libc)FP Bit Twiddling.
+* nexttoward: (libc)FP Bit Twiddling.
+* nextupfNx: (libc)FP Bit Twiddling.
+* nextupfN: (libc)FP Bit Twiddling.
+* nextupf: (libc)FP Bit Twiddling.
+* nextupl: (libc)FP Bit Twiddling.
+* nextup: (libc)FP Bit Twiddling.
+* nftw: (libc)Working with Directory Trees.
+* nftw64: (libc)Working with Directory Trees.
+* ngettext: (libc)Advanced gettext functions.
+* NGROUPS_MAX: (libc)General Limits.
+* nice: (libc)Traditional Scheduling Functions.
+* nl_langinfo: (libc)The Elegant and Fast Way.
+* NOFLSH: (libc)Local Modes.
+* NOKERNINFO: (libc)Local Modes.
+* nrand48_r: (libc)SVID Random.
+* nrand48: (libc)SVID Random.
+* NSIG: (libc)Standard Signals.
+* ntohl: (libc)Byte Order.
+* ntohs: (libc)Byte Order.
+* ntp_adjtime: (libc)Setting and Adjusting the Time.
+* ntp_gettime: (libc)Setting and Adjusting the Time.
+* NULL: (libc)Null Pointer Constant.
+* O_ACCMODE: (libc)Access Modes.
+* O_APPEND: (libc)Operating Modes.
+* O_ASYNC: (libc)Operating Modes.
+* O_CREAT: (libc)Open-time Flags.
+* O_DIRECTORY: (libc)Open-time Flags.
+* O_EXCL: (libc)Open-time Flags.
+* O_EXEC: (libc)Access Modes.
+* O_EXLOCK: (libc)Open-time Flags.
+* O_FSYNC: (libc)Operating Modes.
+* O_IGNORE_CTTY: (libc)Open-time Flags.
+* O_NDELAY: (libc)Operating Modes.
+* O_NOATIME: (libc)Operating Modes.
+* O_NOCTTY: (libc)Open-time Flags.
+* O_NOFOLLOW: (libc)Open-time Flags.
+* O_NOLINK: (libc)Open-time Flags.
+* O_NONBLOCK: (libc)Operating Modes.
+* O_NONBLOCK: (libc)Open-time Flags.
+* O_NOTRANS: (libc)Open-time Flags.
+* O_PATH: (libc)Access Modes.
+* O_RDONLY: (libc)Access Modes.
+* O_RDWR: (libc)Access Modes.
+* O_READ: (libc)Access Modes.
+* O_SHLOCK: (libc)Open-time Flags.
+* O_SYNC: (libc)Operating Modes.
+* O_TMPFILE: (libc)Open-time Flags.
+* O_TRUNC: (libc)Open-time Flags.
+* O_WRITE: (libc)Access Modes.
+* O_WRONLY: (libc)Access Modes.
+* obstack_1grow_fast: (libc)Extra Fast Growing.
+* obstack_1grow: (libc)Growing Objects.
+* obstack_alignment_mask: (libc)Obstacks Data Alignment.
+* obstack_alloc: (libc)Allocation in an Obstack.
+* obstack_base: (libc)Status of an Obstack.
+* obstack_blank_fast: (libc)Extra Fast Growing.
+* obstack_blank: (libc)Growing Objects.
+* obstack_chunk_size: (libc)Obstack Chunks.
+* obstack_copy: (libc)Allocation in an Obstack.
+* obstack_copy0: (libc)Allocation in an Obstack.
+* obstack_finish: (libc)Growing Objects.
+* obstack_free: (libc)Freeing Obstack Objects.
+* obstack_grow: (libc)Growing Objects.
+* obstack_grow0: (libc)Growing Objects.
+* obstack_init: (libc)Preparing for Obstacks.
+* obstack_int_grow_fast: (libc)Extra Fast Growing.
+* obstack_int_grow: (libc)Growing Objects.
+* obstack_next_free: (libc)Status of an Obstack.
+* obstack_object_size: (libc)Status of an Obstack.
+* obstack_object_size: (libc)Growing Objects.
+* obstack_printf: (libc)Dynamic Output.
+* obstack_ptr_grow_fast: (libc)Extra Fast Growing.
+* obstack_ptr_grow: (libc)Growing Objects.
+* obstack_room: (libc)Extra Fast Growing.
+* obstack_vprintf: (libc)Variable Arguments Output.
+* offsetof: (libc)Structure Measurement.
+* on_exit: (libc)Cleanups on Exit.
+* ONLCR: (libc)Output Modes.
+* ONOEOT: (libc)Output Modes.
+* open64: (libc)Opening and Closing Files.
+* OPEN_MAX: (libc)General Limits.
+* open_memstream: (libc)String Streams.
+* opendir: (libc)Opening a Directory.
+* openlog: (libc)openlog.
+* openpty: (libc)Pseudo-Terminal Pairs.
+* open: (libc)Opening and Closing Files.
+* OPOST: (libc)Output Modes.
+* OXTABS: (libc)Output Modes.
+* P_tmpdir: (libc)Temporary Files.
+* PA_FLAG_MASK: (libc)Parsing a Template String.
+* PARENB: (libc)Control Modes.
+* PARMRK: (libc)Input Modes.
+* PARODD: (libc)Control Modes.
+* parse_printf_format: (libc)Parsing a Template String.
+* PATH_MAX: (libc)Limits for Files.
+* pathconf: (libc)Pathconf.
+* pause: (libc)Using Pause.
+* pclose: (libc)Pipe to a Subprocess.
+* PENDIN: (libc)Local Modes.
+* perror: (libc)Error Messages.
+* PF_FILE: (libc)Local Namespace Details.
+* PF_INET: (libc)Internet Namespace.
+* PF_INET6: (libc)Internet Namespace.
+* PF_LOCAL: (libc)Local Namespace Details.
+* PF_UNIX: (libc)Local Namespace Details.
+* pipe: (libc)Creating a Pipe.
+* PIPE_BUF: (libc)Limits for Files.
+* pkey_alloc: (libc)Memory Protection.
+* pkey_free: (libc)Memory Protection.
+* pkey_get: (libc)Memory Protection.
+* pkey_mprotect: (libc)Memory Protection.
+* pkey_set: (libc)Memory Protection.
+* popen: (libc)Pipe to a Subprocess.
+* posix_fallocate: (libc)Storage Allocation.
+* posix_fallocate64: (libc)Storage Allocation.
+* posix_memalign: (libc)Aligned Memory Blocks.
+* powfNx: (libc)Exponents and Logarithms.
+* powfN: (libc)Exponents and Logarithms.
+* powf: (libc)Exponents and Logarithms.
+* powl: (libc)Exponents and Logarithms.
+* pow: (libc)Exponents and Logarithms.
+* preadv: (libc)Scatter-Gather.
+* preadv2: (libc)Scatter-Gather.
+* preadv64v2: (libc)Scatter-Gather.
+* preadv64: (libc)Scatter-Gather.
+* pread: (libc)I/O Primitives.
+* pread64: (libc)I/O Primitives.
+* printf_size_info: (libc)Predefined Printf Handlers.
+* printf_size: (libc)Predefined Printf Handlers.
+* printf: (libc)Formatted Output Functions.
+* psignal: (libc)Signal Messages.
+* pthread_attr_getsigmask_np: (libc)Initial Thread Signal Mask.
+* PTHREAD_ATTR_NO_SIGMASK_NP: (libc)Initial Thread Signal Mask.
+* pthread_attr_setsigmask_np: (libc)Initial Thread Signal Mask.
+* pthread_clockjoin_np: (libc)Waiting with Explicit Clocks.
+* pthread_cond_clockwait: (libc)Waiting with Explicit Clocks.
+* pthread_getattr_default_np: (libc)Default Thread Attributes.
+* pthread_getspecific: (libc)Thread-specific Data.
+* pthread_key_create: (libc)Thread-specific Data.
+* pthread_key_delete: (libc)Thread-specific Data.
+* pthread_rwlock_clockrdlock: (libc)Waiting with Explicit Clocks.
+* pthread_rwlock_clockwrlock: (libc)Waiting with Explicit Clocks.
+* pthread_setattr_default_np: (libc)Default Thread Attributes.
+* pthread_setspecific: (libc)Thread-specific Data.
+* pthread_timedjoin_np: (libc)Waiting with Explicit Clocks.
+* pthread_tryjoin_np: (libc)Waiting with Explicit Clocks.
+* ptsname_r: (libc)Allocation.
+* ptsname: (libc)Allocation.
+* putc_unlocked: (libc)Simple Output.
+* putchar_unlocked: (libc)Simple Output.
+* putchar: (libc)Simple Output.
+* putc: (libc)Simple Output.
+* putenv: (libc)Environment Access.
+* putpwent: (libc)Writing a User Entry.
+* puts: (libc)Simple Output.
+* pututline: (libc)Manipulating the Database.
+* pututxline: (libc)XPG Functions.
+* putwc_unlocked: (libc)Simple Output.
+* putwchar_unlocked: (libc)Simple Output.
+* putwchar: (libc)Simple Output.
+* putwc: (libc)Simple Output.
+* putw: (libc)Simple Output.
+* pwritev: (libc)Scatter-Gather.
+* pwritev2: (libc)Scatter-Gather.
+* pwritev64v2: (libc)Scatter-Gather.
+* pwritev64: (libc)Scatter-Gather.
+* pwrite: (libc)I/O Primitives.
+* pwrite64: (libc)I/O Primitives.
+* qecvt_r: (libc)System V Number Conversion.
+* qecvt: (libc)System V Number Conversion.
+* qfcvt_r: (libc)System V Number Conversion.
+* qfcvt: (libc)System V Number Conversion.
+* qgcvt: (libc)System V Number Conversion.
+* qsort: (libc)Array Sort Function.
+* R_OK: (libc)Testing File Access.
+* raise: (libc)Signaling Yourself.
+* RAND_MAX: (libc)ISO Random.
+* rand_r: (libc)ISO Random.
+* random_r: (libc)BSD Random.
+* random: (libc)BSD Random.
+* rand: (libc)ISO Random.
+* rawmemchr: (libc)Search Functions.
+* RE_DUP_MAX: (libc)General Limits.
+* readdir64_r: (libc)Reading/Closing Directory.
+* readdir64: (libc)Reading/Closing Directory.
+* readdir_r: (libc)Reading/Closing Directory.
+* readdir: (libc)Reading/Closing Directory.
+* readlink: (libc)Symbolic Links.
+* readv: (libc)Scatter-Gather.
+* read: (libc)I/O Primitives.
+* reallocarray: (libc)Changing Block Size.
+* realloc: (libc)Changing Block Size.
+* realpath: (libc)Symbolic Links.
+* recvfrom: (libc)Receiving Datagrams.
+* recvmsg: (libc)Receiving Datagrams.
+* recv: (libc)Receiving Data.
+* regcomp: (libc)POSIX Regexp Compilation.
+* regerror: (libc)Regexp Cleanup.
+* regexec: (libc)Matching POSIX Regexps.
+* regfree: (libc)Regexp Cleanup.
+* register_printf_function: (libc)Registering New Conversions.
+* remainderfNx: (libc)Remainder Functions.
+* remainderfN: (libc)Remainder Functions.
+* remainderf: (libc)Remainder Functions.
+* remainderl: (libc)Remainder Functions.
+* remainder: (libc)Remainder Functions.
+* remove: (libc)Deleting Files.
+* rename: (libc)Renaming Files.
+* rewinddir: (libc)Random Access Directory.
+* rewind: (libc)File Positioning.
+* rindex: (libc)Search Functions.
+* rintfNx: (libc)Rounding Functions.
+* rintfN: (libc)Rounding Functions.
+* rintf: (libc)Rounding Functions.
+* rintl: (libc)Rounding Functions.
+* rint: (libc)Rounding Functions.
+* RLIM_INFINITY: (libc)Limits on Resources.
+* rmdir: (libc)Deleting Files.
+* roundevenfNx: (libc)Rounding Functions.
+* roundevenfN: (libc)Rounding Functions.
+* roundevenf: (libc)Rounding Functions.
+* roundevenl: (libc)Rounding Functions.
+* roundeven: (libc)Rounding Functions.
+* roundfNx: (libc)Rounding Functions.
+* roundfN: (libc)Rounding Functions.
+* roundf: (libc)Rounding Functions.
+* roundl: (libc)Rounding Functions.
+* round: (libc)Rounding Functions.
+* rpmatch: (libc)Yes-or-No Questions.
+* RSEQ_SIG: (libc)Restartable Sequences.
+* S_IFMT: (libc)Testing File Type.
+* S_ISBLK: (libc)Testing File Type.
+* S_ISCHR: (libc)Testing File Type.
+* S_ISDIR: (libc)Testing File Type.
+* S_ISFIFO: (libc)Testing File Type.
+* S_ISLNK: (libc)Testing File Type.
+* S_ISREG: (libc)Testing File Type.
+* S_ISSOCK: (libc)Testing File Type.
+* S_TYPEISMQ: (libc)Testing File Type.
+* S_TYPEISSEM: (libc)Testing File Type.
+* S_TYPEISSHM: (libc)Testing File Type.
+* SA_NOCLDSTOP: (libc)Flags for Sigaction.
+* SA_ONSTACK: (libc)Flags for Sigaction.
+* SA_RESTART: (libc)Flags for Sigaction.
+* sbrk: (libc)Resizing the Data Segment.
+* scalbf: (libc)Normalization Functions.
+* scalblnfNx: (libc)Normalization Functions.
+* scalblnfN: (libc)Normalization Functions.
+* scalblnf: (libc)Normalization Functions.
+* scalblnl: (libc)Normalization Functions.
+* scalbln: (libc)Normalization Functions.
+* scalbl: (libc)Normalization Functions.
+* scalbnfNx: (libc)Normalization Functions.
+* scalbnfN: (libc)Normalization Functions.
+* scalbnf: (libc)Normalization Functions.
+* scalbnl: (libc)Normalization Functions.
+* scalbn: (libc)Normalization Functions.
+* scalb: (libc)Normalization Functions.
+* scandir: (libc)Scanning Directory Content.
+* scandir64: (libc)Scanning Directory Content.
+* scanf: (libc)Formatted Input Functions.
+* sched_get_priority_max: (libc)Basic Scheduling Functions.
+* sched_get_priority_min: (libc)Basic Scheduling Functions.
+* sched_getaffinity: (libc)CPU Affinity.
+* sched_getparam: (libc)Basic Scheduling Functions.
+* sched_getscheduler: (libc)Basic Scheduling Functions.
+* sched_rr_get_interval: (libc)Basic Scheduling Functions.
+* sched_setaffinity: (libc)CPU Affinity.
+* sched_setparam: (libc)Basic Scheduling Functions.
+* sched_setscheduler: (libc)Basic Scheduling Functions.
+* sched_yield: (libc)Basic Scheduling Functions.
+* secure_getenv: (libc)Environment Access.
+* seed48_r: (libc)SVID Random.
+* seed48: (libc)SVID Random.
+* SEEK_CUR: (libc)File Positioning.
+* SEEK_END: (libc)File Positioning.
+* SEEK_SET: (libc)File Positioning.
+* seekdir: (libc)Random Access Directory.
+* select: (libc)Waiting for I/O.
+* sem_clockwait: (libc)Waiting with Explicit Clocks.
+* sem_close: (libc)Semaphores.
+* sem_destroy: (libc)Semaphores.
+* sem_getvalue: (libc)Semaphores.
+* sem_init: (libc)Semaphores.
+* sem_open: (libc)Semaphores.
+* sem_post: (libc)Semaphores.
+* sem_timedwait: (libc)Semaphores.
+* sem_trywait: (libc)Semaphores.
+* sem_unlink: (libc)Semaphores.
+* sem_wait: (libc)Semaphores.
+* semctl: (libc)Semaphores.
+* semget: (libc)Semaphores.
+* semop: (libc)Semaphores.
+* semtimedop: (libc)Semaphores.
+* sendmsg: (libc)Receiving Datagrams.
+* sendto: (libc)Sending Datagrams.
+* send: (libc)Sending Data.
+* setbuffer: (libc)Controlling Buffering.
+* setbuf: (libc)Controlling Buffering.
+* setcontext: (libc)System V contexts.
+* setdomainname: (libc)Host Identification.
+* setegid: (libc)Setting Groups.
+* setenv: (libc)Environment Access.
+* seteuid: (libc)Setting User ID.
+* setfsent: (libc)fstab.
+* setgid: (libc)Setting Groups.
+* setgrent: (libc)Scanning All Groups.
+* setgroups: (libc)Setting Groups.
+* sethostent: (libc)Host Names.
+* sethostid: (libc)Host Identification.
+* sethostname: (libc)Host Identification.
+* setitimer: (libc)Setting an Alarm.
+* setjmp: (libc)Non-Local Details.
+* setlinebuf: (libc)Controlling Buffering.
+* setlocale: (libc)Setting the Locale.
+* setlogmask: (libc)setlogmask.
+* setmntent: (libc)mtab.
+* setnetent: (libc)Networks Database.
+* setnetgrent: (libc)Lookup Netgroup.
+* setpayloadfNx: (libc)FP Bit Twiddling.
+* setpayloadfN: (libc)FP Bit Twiddling.
+* setpayloadf: (libc)FP Bit Twiddling.
+* setpayloadl: (libc)FP Bit Twiddling.
+* setpayloadsigfNx: (libc)FP Bit Twiddling.
+* setpayloadsigfN: (libc)FP Bit Twiddling.
+* setpayloadsigf: (libc)FP Bit Twiddling.
+* setpayloadsigl: (libc)FP Bit Twiddling.
+* setpayloadsig: (libc)FP Bit Twiddling.
+* setpayload: (libc)FP Bit Twiddling.
+* setpgid: (libc)Process Group Functions.
+* setpgrp: (libc)Process Group Functions.
+* setpriority: (libc)Traditional Scheduling Functions.
+* setprotoent: (libc)Protocols Database.
+* setpwent: (libc)Scanning All Users.
+* setregid: (libc)Setting Groups.
+* setreuid: (libc)Setting User ID.
+* setrlimit: (libc)Limits on Resources.
+* setrlimit64: (libc)Limits on Resources.
+* setservent: (libc)Services Database.
+* setsid: (libc)Process Group Functions.
+* setsockopt: (libc)Socket Option Functions.
+* setstate_r: (libc)BSD Random.
+* setstate: (libc)BSD Random.
+* settimeofday: (libc)Setting and Adjusting the Time.
+* setuid: (libc)Setting User ID.
+* setutent: (libc)Manipulating the Database.
+* setutxent: (libc)XPG Functions.
+* setvbuf: (libc)Controlling Buffering.
+* shm_open: (libc)Memory-mapped I/O.
+* shm_unlink: (libc)Memory-mapped I/O.
+* shutdown: (libc)Closing a Socket.
+* SIG_ERR: (libc)Basic Signal Handling.
+* sigabbrev_np: (libc)Signal Messages.
+* SIGABRT: (libc)Program Error Signals.
+* sigaction: (libc)Advanced Signal Handling.
+* sigaddset: (libc)Signal Sets.
+* SIGALRM: (libc)Alarm Signals.
+* sigaltstack: (libc)Signal Stack.
+* sigblock: (libc)BSD Signal Handling.
+* SIGBUS: (libc)Program Error Signals.
+* SIGCHLD: (libc)Job Control Signals.
+* SIGCLD: (libc)Job Control Signals.
+* SIGCONT: (libc)Job Control Signals.
+* sigdelset: (libc)Signal Sets.
+* sigdescr_np: (libc)Signal Messages.
+* sigemptyset: (libc)Signal Sets.
+* SIGEMT: (libc)Program Error Signals.
+* sigfillset: (libc)Signal Sets.
+* SIGFPE: (libc)Program Error Signals.
+* SIGHUP: (libc)Termination Signals.
+* SIGILL: (libc)Program Error Signals.
+* SIGINFO: (libc)Miscellaneous Signals.
+* siginterrupt: (libc)BSD Signal Handling.
+* SIGINT: (libc)Termination Signals.
+* SIGIOT: (libc)Program Error Signals.
+* SIGIO: (libc)Asynchronous I/O Signals.
+* sigismember: (libc)Signal Sets.
+* SIGKILL: (libc)Termination Signals.
+* siglongjmp: (libc)Non-Local Exits and Signals.
+* SIGLOST: (libc)Operation Error Signals.
+* sigmask: (libc)BSD Signal Handling.
+* signal: (libc)Basic Signal Handling.
+* signbit: (libc)FP Bit Twiddling.
+* significandf: (libc)Normalization Functions.
+* significandl: (libc)Normalization Functions.
+* significand: (libc)Normalization Functions.
+* sigpause: (libc)BSD Signal Handling.
+* sigpending: (libc)Checking for Pending Signals.
+* SIGPIPE: (libc)Operation Error Signals.
+* SIGPOLL: (libc)Asynchronous I/O Signals.
+* sigprocmask: (libc)Process Signal Mask.
+* SIGPROF: (libc)Alarm Signals.
+* SIGQUIT: (libc)Termination Signals.
+* SIGSEGV: (libc)Program Error Signals.
+* sigsetjmp: (libc)Non-Local Exits and Signals.
+* sigsetmask: (libc)BSD Signal Handling.
+* sigstack: (libc)Signal Stack.
+* SIGSTOP: (libc)Job Control Signals.
+* sigsuspend: (libc)Sigsuspend.
+* SIGSYS: (libc)Program Error Signals.
+* SIGTERM: (libc)Termination Signals.
+* SIGTRAP: (libc)Program Error Signals.
+* SIGTSTP: (libc)Job Control Signals.
+* SIGTTIN: (libc)Job Control Signals.
+* SIGTTOU: (libc)Job Control Signals.
+* SIGURG: (libc)Asynchronous I/O Signals.
+* SIGUSR1: (libc)Miscellaneous Signals.
+* SIGUSR2: (libc)Miscellaneous Signals.
+* SIGVTALRM: (libc)Alarm Signals.
+* SIGWINCH: (libc)Miscellaneous Signals.
+* SIGXCPU: (libc)Operation Error Signals.
+* SIGXFSZ: (libc)Operation Error Signals.
+* sincosfNx: (libc)Trig Functions.
+* sincosfN: (libc)Trig Functions.
+* sincosf: (libc)Trig Functions.
+* sincosl: (libc)Trig Functions.
+* sincos: (libc)Trig Functions.
+* sinfNx: (libc)Trig Functions.
+* sinfN: (libc)Trig Functions.
+* sinf: (libc)Trig Functions.
+* sinhfNx: (libc)Hyperbolic Functions.
+* sinhfN: (libc)Hyperbolic Functions.
+* sinhf: (libc)Hyperbolic Functions.
+* sinhl: (libc)Hyperbolic Functions.
+* sinh: (libc)Hyperbolic Functions.
+* sinl: (libc)Trig Functions.
+* sin: (libc)Trig Functions.
+* sleep: (libc)Sleeping.
+* SNANFNx: (libc)Infinity and NaN.
+* SNANFN: (libc)Infinity and NaN.
+* SNANF: (libc)Infinity and NaN.
+* SNANL: (libc)Infinity and NaN.
+* SNAN: (libc)Infinity and NaN.
+* snprintf: (libc)Formatted Output Functions.
+* SOCK_DGRAM: (libc)Communication Styles.
+* SOCK_RAW: (libc)Communication Styles.
+* SOCK_RDM: (libc)Communication Styles.
+* SOCK_SEQPACKET: (libc)Communication Styles.
+* SOCK_STREAM: (libc)Communication Styles.
+* socketpair: (libc)Socket Pairs.
+* socket: (libc)Creating a Socket.
+* SOL_SOCKET: (libc)Socket-Level Options.
+* sprintf: (libc)Formatted Output Functions.
+* sqrtfNx: (libc)Exponents and Logarithms.
+* sqrtfN: (libc)Exponents and Logarithms.
+* sqrtf: (libc)Exponents and Logarithms.
+* sqrtl: (libc)Exponents and Logarithms.
+* sqrt: (libc)Exponents and Logarithms.
+* srandom_r: (libc)BSD Random.
+* srandom: (libc)BSD Random.
+* srand: (libc)ISO Random.
+* srand48_r: (libc)SVID Random.
+* srand48: (libc)SVID Random.
+* sscanf: (libc)Formatted Input Functions.
+* ssignal: (libc)Basic Signal Handling.
+* SSIZE_MAX: (libc)General Limits.
+* stat: (libc)Reading Attributes.
+* stat64: (libc)Reading Attributes.
+* stime: (libc)Setting and Adjusting the Time.
+* stpcpy: (libc)Copying Strings and Arrays.
+* stpncpy: (libc)Truncating Strings.
+* strcasecmp: (libc)String/Array Comparison.
+* strcasestr: (libc)Search Functions.
+* strcat: (libc)Concatenating Strings.
+* strchrnul: (libc)Search Functions.
+* strchr: (libc)Search Functions.
+* strcmp: (libc)String/Array Comparison.
+* strcoll: (libc)Collation Functions.
+* strcpy: (libc)Copying Strings and Arrays.
+* strcspn: (libc)Search Functions.
+* strdupa: (libc)Copying Strings and Arrays.
+* strdup: (libc)Copying Strings and Arrays.
+* STREAM_MAX: (libc)General Limits.
+* strerror_r: (libc)Error Messages.
+* strerrordesc_np: (libc)Error Messages.
+* strerrorname_np: (libc)Error Messages.
+* strerror: (libc)Error Messages.
+* strfmon: (libc)Formatting Numbers.
+* strfromd: (libc)Printing of Floats.
+* strfromfNx: (libc)Printing of Floats.
+* strfromfN: (libc)Printing of Floats.
+* strfromf: (libc)Printing of Floats.
+* strfroml: (libc)Printing of Floats.
+* strfry: (libc)Shuffling Bytes.
+* strftime: (libc)Formatting Calendar Time.
+* strlen: (libc)String Length.
+* strncasecmp: (libc)String/Array Comparison.
+* strncat: (libc)Truncating Strings.
+* strncmp: (libc)String/Array Comparison.
+* strncpy: (libc)Truncating Strings.
+* strndupa: (libc)Truncating Strings.
+* strndup: (libc)Truncating Strings.
+* strnlen: (libc)String Length.
+* strpbrk: (libc)Search Functions.
+* strptime: (libc)Low-Level Time String Parsing.
+* strrchr: (libc)Search Functions.
+* strsep: (libc)Finding Tokens in a String.
+* strsignal: (libc)Signal Messages.
+* strspn: (libc)Search Functions.
+* strstr: (libc)Search Functions.
+* strtod: (libc)Parsing of Floats.
+* strtofNx: (libc)Parsing of Floats.
+* strtofN: (libc)Parsing of Floats.
+* strtof: (libc)Parsing of Floats.
+* strtoimax: (libc)Parsing of Integers.
+* strtok_r: (libc)Finding Tokens in a String.
+* strtok: (libc)Finding Tokens in a String.
+* strtold: (libc)Parsing of Floats.
+* strtoll: (libc)Parsing of Integers.
+* strtol: (libc)Parsing of Integers.
+* strtoq: (libc)Parsing of Integers.
+* strtoull: (libc)Parsing of Integers.
+* strtoul: (libc)Parsing of Integers.
+* strtoumax: (libc)Parsing of Integers.
+* strtouq: (libc)Parsing of Integers.
+* strverscmp: (libc)String/Array Comparison.
+* strxfrm: (libc)Collation Functions.
+* stty: (libc)BSD Terminal Modes.
+* SUN_LEN: (libc)Local Namespace Details.
+* swapcontext: (libc)System V contexts.
+* swprintf: (libc)Formatted Output Functions.
+* swscanf: (libc)Formatted Input Functions.
+* symlink: (libc)Symbolic Links.
+* sync: (libc)Synchronizing I/O.
+* syscall: (libc)System Calls.
+* sysconf: (libc)Sysconf Definition.
+* syslog: (libc)syslog; vsyslog.
+* system: (libc)Running a Command.
+* sysv_signal: (libc)Basic Signal Handling.
+* tanfNx: (libc)Trig Functions.
+* tanfN: (libc)Trig Functions.
+* tanf: (libc)Trig Functions.
+* tanhfNx: (libc)Hyperbolic Functions.
+* tanhfN: (libc)Hyperbolic Functions.
+* tanhf: (libc)Hyperbolic Functions.
+* tanhl: (libc)Hyperbolic Functions.
+* tanh: (libc)Hyperbolic Functions.
+* tanl: (libc)Trig Functions.
+* tan: (libc)Trig Functions.
+* tcdrain: (libc)Line Control.
+* tcflow: (libc)Line Control.
+* tcflush: (libc)Line Control.
+* tcgetattr: (libc)Mode Functions.
+* tcgetpgrp: (libc)Terminal Access Functions.
+* tcgetsid: (libc)Terminal Access Functions.
+* tcsendbreak: (libc)Line Control.
+* tcsetattr: (libc)Mode Functions.
+* tcsetpgrp: (libc)Terminal Access Functions.
+* tdelete: (libc)Tree Search Function.
+* tdestroy: (libc)Tree Search Function.
+* telldir: (libc)Random Access Directory.
+* tempnam: (libc)Temporary Files.
+* textdomain: (libc)Locating gettext catalog.
+* tfind: (libc)Tree Search Function.
+* tgammafNx: (libc)Special Functions.
+* tgammafN: (libc)Special Functions.
+* tgammaf: (libc)Special Functions.
+* tgammal: (libc)Special Functions.
+* tgamma: (libc)Special Functions.
+* tgkill: (libc)Signaling Another Process.
+* thrd_create: (libc)ISO C Thread Management.
+* thrd_current: (libc)ISO C Thread Management.
+* thrd_detach: (libc)ISO C Thread Management.
+* thrd_equal: (libc)ISO C Thread Management.
+* thrd_exit: (libc)ISO C Thread Management.
+* thrd_join: (libc)ISO C Thread Management.
+* thrd_sleep: (libc)ISO C Thread Management.
+* thrd_yield: (libc)ISO C Thread Management.
+* timegm: (libc)Broken-down Time.
+* timelocal: (libc)Broken-down Time.
+* times: (libc)Processor Time.
+* time: (libc)Getting the Time.
+* TMP_MAX: (libc)Temporary Files.
+* tmpfile: (libc)Temporary Files.
+* tmpfile64: (libc)Temporary Files.
+* tmpnam_r: (libc)Temporary Files.
+* tmpnam: (libc)Temporary Files.
+* toascii: (libc)Case Conversion.
+* tolower: (libc)Case Conversion.
+* TOSTOP: (libc)Local Modes.
+* totalorderfNx: (libc)FP Comparison Functions.
+* totalorderfN: (libc)FP Comparison Functions.
+* totalorderf: (libc)FP Comparison Functions.
+* totalorderl: (libc)FP Comparison Functions.
+* totalordermagfNx: (libc)FP Comparison Functions.
+* totalordermagfN: (libc)FP Comparison Functions.
+* totalordermagf: (libc)FP Comparison Functions.
+* totalordermagl: (libc)FP Comparison Functions.
+* totalordermag: (libc)FP Comparison Functions.
+* totalorder: (libc)FP Comparison Functions.
+* toupper: (libc)Case Conversion.
+* towctrans: (libc)Wide Character Case Conversion.
+* towlower: (libc)Wide Character Case Conversion.
+* towupper: (libc)Wide Character Case Conversion.
+* truncate: (libc)File Size.
+* truncate64: (libc)File Size.
+* truncfNx: (libc)Rounding Functions.
+* truncfN: (libc)Rounding Functions.
+* truncf: (libc)Rounding Functions.
+* truncl: (libc)Rounding Functions.
+* trunc: (libc)Rounding Functions.
+* tsearch: (libc)Tree Search Function.
+* tss_create: (libc)ISO C Thread-local Storage.
+* tss_delete: (libc)ISO C Thread-local Storage.
+* tss_get: (libc)ISO C Thread-local Storage.
+* tss_set: (libc)ISO C Thread-local Storage.
+* ttyname_r: (libc)Is It a Terminal.
+* ttyname: (libc)Is It a Terminal.
+* twalk_r: (libc)Tree Search Function.
+* twalk: (libc)Tree Search Function.
+* TZNAME_MAX: (libc)General Limits.
+* tzset: (libc)Time Zone Functions.
+* ufromfpfNx: (libc)Rounding Functions.
+* ufromfpfN: (libc)Rounding Functions.
+* ufromfpf: (libc)Rounding Functions.
+* ufromfpl: (libc)Rounding Functions.
+* ufromfpxfNx: (libc)Rounding Functions.
+* ufromfpxfN: (libc)Rounding Functions.
+* ufromfpxf: (libc)Rounding Functions.
+* ufromfpxl: (libc)Rounding Functions.
+* ufromfpx: (libc)Rounding Functions.
+* ufromfp: (libc)Rounding Functions.
+* ulimit: (libc)Limits on Resources.
+* umask: (libc)Setting Permissions.
+* umount: (libc)Mount-Unmount-Remount.
+* umount2: (libc)Mount-Unmount-Remount.
+* uname: (libc)Platform Type.
+* ungetc: (libc)How Unread.
+* ungetwc: (libc)How Unread.
+* unlink: (libc)Deleting Files.
+* unlockpt: (libc)Allocation.
+* unsetenv: (libc)Environment Access.
+* updwtmp: (libc)Manipulating the Database.
+* utimes: (libc)File Times.
+* utime: (libc)File Times.
+* utmpname: (libc)Manipulating the Database.
+* utmpxname: (libc)XPG Functions.
+* va_arg: (libc)Argument Macros.
+* va_copy: (libc)Argument Macros.
+* va_end: (libc)Argument Macros.
+* va_start: (libc)Argument Macros.
+* valloc: (libc)Aligned Memory Blocks.
+* vasprintf: (libc)Variable Arguments Output.
+* VDISCARD: (libc)Other Special.
+* VDSUSP: (libc)Signal Characters.
+* VEOF: (libc)Editing Characters.
+* VEOL: (libc)Editing Characters.
+* VEOL2: (libc)Editing Characters.
+* VERASE: (libc)Editing Characters.
+* verrx: (libc)Error Messages.
+* verr: (libc)Error Messages.
+* versionsort: (libc)Scanning Directory Content.
+* versionsort64: (libc)Scanning Directory Content.
+* vfork: (libc)Creating a Process.
+* vfprintf: (libc)Variable Arguments Output.
+* vfscanf: (libc)Variable Arguments Input.
+* vfwprintf: (libc)Variable Arguments Output.
+* vfwscanf: (libc)Variable Arguments Input.
+* VINTR: (libc)Signal Characters.
+* VKILL: (libc)Editing Characters.
+* vlimit: (libc)Limits on Resources.
+* VLNEXT: (libc)Other Special.
+* VMIN: (libc)Noncanonical Input.
+* vprintf: (libc)Variable Arguments Output.
+* VQUIT: (libc)Signal Characters.
+* VREPRINT: (libc)Editing Characters.
+* vscanf: (libc)Variable Arguments Input.
+* vsnprintf: (libc)Variable Arguments Output.
+* vsprintf: (libc)Variable Arguments Output.
+* vsscanf: (libc)Variable Arguments Input.
+* VSTART: (libc)Start/Stop Characters.
+* VSTATUS: (libc)Other Special.
+* VSTOP: (libc)Start/Stop Characters.
+* VSUSP: (libc)Signal Characters.
+* vswprintf: (libc)Variable Arguments Output.
+* vswscanf: (libc)Variable Arguments Input.
+* vsyslog: (libc)syslog; vsyslog.
+* VTIME: (libc)Noncanonical Input.
+* vwarnx: (libc)Error Messages.
+* vwarn: (libc)Error Messages.
+* VWERASE: (libc)Editing Characters.
+* vwprintf: (libc)Variable Arguments Output.
+* vwscanf: (libc)Variable Arguments Input.
+* W_OK: (libc)Testing File Access.
+* wait3: (libc)BSD Wait Functions.
+* waitpid: (libc)Process Completion.
+* wait: (libc)Process Completion.
+* wait4: (libc)Process Completion.
+* warnx: (libc)Error Messages.
+* warn: (libc)Error Messages.
+* WCHAR_MAX: (libc)Extended Char Intro.
+* WCHAR_MIN: (libc)Extended Char Intro.
+* WCOREDUMP: (libc)Process Completion Status.
+* wcpcpy: (libc)Copying Strings and Arrays.
+* wcpncpy: (libc)Truncating Strings.
+* wcrtomb: (libc)Converting a Character.
+* wcscasecmp: (libc)String/Array Comparison.
+* wcscat: (libc)Concatenating Strings.
+* wcschrnul: (libc)Search Functions.
+* wcschr: (libc)Search Functions.
+* wcscmp: (libc)String/Array Comparison.
+* wcscoll: (libc)Collation Functions.
+* wcscpy: (libc)Copying Strings and Arrays.
+* wcscspn: (libc)Search Functions.
+* wcsdup: (libc)Copying Strings and Arrays.
+* wcsftime: (libc)Formatting Calendar Time.
+* wcslen: (libc)String Length.
+* wcsncasecmp: (libc)String/Array Comparison.
+* wcsncat: (libc)Truncating Strings.
+* wcsncmp: (libc)String/Array Comparison.
+* wcsncpy: (libc)Truncating Strings.
+* wcsnlen: (libc)String Length.
+* wcsnrtombs: (libc)Converting Strings.
+* wcspbrk: (libc)Search Functions.
+* wcsrchr: (libc)Search Functions.
+* wcsrtombs: (libc)Converting Strings.
+* wcsspn: (libc)Search Functions.
+* wcsstr: (libc)Search Functions.
+* wcstod: (libc)Parsing of Floats.
+* wcstofNx: (libc)Parsing of Floats.
+* wcstofN: (libc)Parsing of Floats.
+* wcstof: (libc)Parsing of Floats.
+* wcstoimax: (libc)Parsing of Integers.
+* wcstok: (libc)Finding Tokens in a String.
+* wcstold: (libc)Parsing of Floats.
+* wcstoll: (libc)Parsing of Integers.
+* wcstol: (libc)Parsing of Integers.
+* wcstombs: (libc)Non-reentrant String Conversion.
+* wcstoq: (libc)Parsing of Integers.
+* wcstoull: (libc)Parsing of Integers.
+* wcstoul: (libc)Parsing of Integers.
+* wcstoumax: (libc)Parsing of Integers.
+* wcstouq: (libc)Parsing of Integers.
+* wcswcs: (libc)Search Functions.
+* wcsxfrm: (libc)Collation Functions.
+* wctob: (libc)Converting a Character.
+* wctomb: (libc)Non-reentrant Character Conversion.
+* wctrans: (libc)Wide Character Case Conversion.
+* wctype: (libc)Classification of Wide Characters.
+* WEOF: (libc)Extended Char Intro.
+* WEOF: (libc)EOF and Errors.
+* WEXITSTATUS: (libc)Process Completion Status.
+* WIFEXITED: (libc)Process Completion Status.
+* WIFSIGNALED: (libc)Process Completion Status.
+* WIFSTOPPED: (libc)Process Completion Status.
+* wmemchr: (libc)Search Functions.
+* wmemcmp: (libc)String/Array Comparison.
+* wmemcpy: (libc)Copying Strings and Arrays.
+* wmemmove: (libc)Copying Strings and Arrays.
+* wmempcpy: (libc)Copying Strings and Arrays.
+* wmemset: (libc)Copying Strings and Arrays.
+* wordexp: (libc)Calling Wordexp.
+* wordfree: (libc)Calling Wordexp.
+* wprintf: (libc)Formatted Output Functions.
+* writev: (libc)Scatter-Gather.
+* write: (libc)I/O Primitives.
+* wscanf: (libc)Formatted Input Functions.
+* WSTOPSIG: (libc)Process Completion Status.
+* WTERMSIG: (libc)Process Completion Status.
+* X_OK: (libc)Testing File Access.
+* y0fNx: (libc)Special Functions.
+* y0fN: (libc)Special Functions.
+* y0f: (libc)Special Functions.
+* y0l: (libc)Special Functions.
+* y0: (libc)Special Functions.
+* y1fNx: (libc)Special Functions.
+* y1fN: (libc)Special Functions.
+* y1f: (libc)Special Functions.
+* y1l: (libc)Special Functions.
+* y1: (libc)Special Functions.
+* ynfNx: (libc)Special Functions.
+* ynfN: (libc)Special Functions.
+* ynf: (libc)Special Functions.
+* ynl: (libc)Special Functions.
+* yn: (libc)Special Functions.
+
+Software libraries
+* Libc: (libc). C library.
+__EOF__
+ fi
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_update() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_update() {
+ post_install
+}
+
+# arg 1: the old package version
+pre_remove() {
+ if [ -x /usr/bin/install-info ] ; then
+ install-info --delete --info-file=usr/share/info/libc.info.gz --dir-file=usr/share/info/dir 2> /dev/null || /bin/true
+ fi
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*
Property changes on: radix-1.9/libs/glibc/2.37/glibc-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.37/profile.d/glibc.csh
===================================================================
--- radix-1.9/libs/glibc/2.37/profile.d/glibc.csh (nonexistent)
+++ radix-1.9/libs/glibc/2.37/profile.d/glibc.csh (revision 35)
@@ -0,0 +1,9 @@
+#!/bin/csh
+# Set more relaxed (glibc-2.3.5 like) malloc() checking.
+#
+# This relaxes the default paranoia level so that it reports
+# bugs, but does not kill the questionable process. You can
+# get away with running broken programs with this setting,
+# but at a possible performance and security cost.
+#
+#setenv MALLOC_CHECK_ 1
Index: radix-1.9/libs/glibc/2.37/profile.d/glibc.sh
===================================================================
--- radix-1.9/libs/glibc/2.37/profile.d/glibc.sh (nonexistent)
+++ radix-1.9/libs/glibc/2.37/profile.d/glibc.sh (revision 35)
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Set more relaxed (glibc-2.3.5 like) malloc() checking.
+#
+# This relaxes the default paranoia level so that it reports
+# bugs, but does not kill the questionable process. You can
+# get away with running broken programs with this setting,
+# but at a possible performance and security cost.
+#export MALLOC_CHECK_=1
Index: radix-1.9/libs/glibc/2.37/profile.d
===================================================================
--- radix-1.9/libs/glibc/2.37/profile.d (nonexistent)
+++ radix-1.9/libs/glibc/2.37/profile.d (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37/profile.d
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.37/tz-exclude.list (nonexistent)
+++ radix-1.9/libs/glibc/2.37/tz-exclude.list (revision 35)
@@ -0,0 +1 @@
+Makefile
Index: radix-1.9/libs/glibc/2.37
===================================================================
--- radix-1.9/libs/glibc/2.37 (nonexistent)
+++ radix-1.9/libs/glibc/2.37 (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37-i18n/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.37-i18n/Makefile (nonexistent)
+++ radix-1.9/libs/glibc/2.37-i18n/Makefile (revision 35)
@@ -0,0 +1,234 @@
+
+COMPONENT_TARGETS = $(HARDWARE_INTEL_PC32)
+COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
+COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
+COMPONENT_TARGETS += $(HARDWARE_CB1X)
+COMPONENT_TARGETS += $(HARDWARE_CB2X)
+COMPONENT_TARGETS += $(HARDWARE_CB3X)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
+COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
+COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
+COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
+COMPONENT_TARGETS += $(HARDWARE_POIN2)
+COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
+COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
+COMPONENT_TARGETS += $(HARDWARE_M201)
+COMPONENT_TARGETS += $(HARDWARE_MXV)
+COMPONENT_TARGETS += $(HARDWARE_P201)
+COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
+COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
+COMPONENT_TARGETS += $(HARDWARE_P212)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
+COMPONENT_TARGETS += $(HARDWARE_Q201)
+COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
+COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
+COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
+COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
+COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
+COMPONENT_TARGETS += $(HARDWARE_CI20)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
+COMPONENT_TARGETS += $(HARDWARE_S824L)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN)
+COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
+
+
+NEED_ABS_PATH = true
+COMPONENT_IS_3PP = true
+
+
+include ../../../build-system/constants.mk
+
+
+
+SOURCE_REQUIRES = sources/GNU/glibc/2.37
+SOURCE_REQUIRES += sources/iana/tz
+
+REQUIRES = libs/glibc/2.37
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+version = 2.37
+tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
+
+tz_version = 2023c
+tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
+tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
+exclude_list = $(CURDIR)/tz-exclude.list
+
+SRC_ARCHIVE = $(tar_xz_archive)
+SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
+src_dir_name = glibc-$(version)
+src_done = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES = PATCHES
+
+build_dir = $(TARGET_BUILD_DIR)/build
+build_target = $(TARGET_BUILD_DIR)/.built
+install_target = $(TARGET_BUILD_DIR)/.installed
+
+
+OPTIMIZATION_FLAGS = -O3
+
+
+####### Targets
+
+PKG_GROUP = libs
+
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+GLIBC_I18N_PKG_NAME = glibc-i18n
+GLIBC_I18N_PKG_VERSION = 2.37
+GLIBC_I18N_PKG_ARCH = $(PKGARCH)
+GLIBC_I18N_PKG_DISTRO_NAME = $(DISTRO_NAME)
+GLIBC_I18N_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
+GLIBC_I18N_PKG_GROUP = $(PKG_GROUP)
+### |---handy-ruler-------------------------------|
+GLIBC_I18N_PKG_SHORT_DESCRIPTION = locale files
+GLIBC_I18N_PKG_URL = $(BUG_URL)
+GLIBC_I18N_PKG_LICENSE = GPLv2
+GLIBC_I18N_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_I18N_PKG_NAME)-pkg-description
+GLIBC_I18N_PKG_DESCRIPTION_FILE_IN = $(GLIBC_I18N_PKG_NAME)-pkg-description.in
+GLIBC_I18N_PKG_INSTALL_SCRIPT = $(GLIBC_I18N_PKG_NAME)-pkg-install.sh
+
+GLIBC_I18N_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_I18N_PKG_NAME)-package
+
+pkg_basename = $(GLIBC_I18N_PKG_NAME)-$(GLIBC_I18N_PKG_VERSION)-$(GLIBC_I18N_PKG_ARCH)-$(GLIBC_I18N_PKG_DISTRO_NAME)-$(GLIBC_I18N_PKG_DISTRO_VERSION)
+
+pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate = $(call cert-name,$(pkg_archive))
+pkg_signature = $(call sign-name,$(pkg_archive))
+pkg_description = $(call desc-name,$(pkg_archive))
+products = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS = $(build_target)
+BUILD_TARGETS += $(install_target)
+
+PRODUCT_TARGETS = $(products)
+
+ROOTFS_TARGETS = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot = install_root=$(GLIBC_I18N_PKG)
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+OPTIMIZATION_FLAGS += -fPIC
+endif
+
+
+INSTALL_NOT_ARCHIVED_LOCALES = no
+
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC) \
+ $(TOOLCHAIN_POWER8_GLIBC) \
+ $(TOOLCHAIN_POWER8LE_GLIBC) \
+ $(TOOLCHAIN_POWER9_GLIBC) \
+ $(TOOLCHAIN_POWER9LE_GLIBC)),)
+INSTALL_ALL_LOCALES = yes
+else
+INSTALL_ALL_LOCALES = no
+endif
+
+# ==================================================================
+LOCALES = fa_IR/UTF-8
+# ==================================================================
+LOCALES += de_DE.UTF-8/UTF-8 de_DE/ISO-8859-1 de_DE@euro/ISO-8859-15
+# ==================================================================
+LOCALES += en_HK.UTF-8/UTF-8 en_HK/ISO-8859-1
+LOCALES += en_PH.UTF-8/UTF-8 en_PH/ISO-8859-1
+LOCALES += en_US.UTF-8/UTF-8 en_US/ISO-8859-1
+LOCALES += es_MX.UTF-8/UTF-8 es_MX/ISO-8859-1
+# ==================================================================
+LOCALES += fr_FR.UTF-8/UTF-8 fr_FR/ISO-8859-1 fr_FR@euro/ISO-8859-15
+LOCALES += it_IT.UTF-8/UTF-8 it_IT/ISO-8859-1 it_IT@euro/ISO-8859-15
+# ==================================================================
+LOCALES += ja_JP.EUC-JP/EUC-JP ja_JP.UTF-8/UTF-8
+LOCALES += en_RU.KOI8-R/KOI8-R en_RU.UTF-8/UTF-8 en_RU.CP1251/CP1251
+LOCALES += en_RU.ISO-8859-5/ISO-8859-5 en_RU/ISO-8859-5
+# ==================================================================
+LOCALES += ru_RU.KOI8-R/KOI8-R ru_RU.UTF-8/UTF-8 ru_RU.CP1251/CP1251
+LOCALES += ru_RU.ISO-8859-5/ISO-8859-5 ru_RU/ISO-8859-5
+# ==================================================================
+
+
+RADIX_BUILD_CC = $(X86_64_GLIBC_PATH)/$(X86_64_GLIBC_VERSION)/bin/$(X86_64_GLIBC_ARCH)-gcc
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+ $(UNPACK_SRC_ARCHIVE)
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
+ $(APPLY_PATCHES)
+ifeq ($(INSTALL_NOT_ARCHIVED_LOCALES),yes)
+ @cd $(SRC_DIR)/localedata && sed -i 's,$\(LOCALEDEF),\$\(LOCALEDEF\) --no-archive,' Makefile
+endif
+ @touch $@
+
+$(build_target): $(src_done)
+ @mkdir -p $(build_dir)
+ @mkdir -p $(GLIBC_I18N_PKG)
+ @echo "slibdir=/lib$(LIBSUFFIX)" >> $(build_dir)/configparms
+ @cd $(build_dir) && CC=$(RADIX_BUILD_CC) ../$(src_dir_name)/configure \
+ --prefix=/usr \
+ --build=$(BUILD) \
+ --libdir=/usr/lib$(LIBSUFFIX)
+ @cd $(build_dir) && $(MAKE)
+ifneq ($(INSTALL_ALL_LOCALES),yes)
+ @cd $(build_dir) && $(MAKE) -j1 SUPPORTED-LOCALES="$(LOCALES)" localedata/install-locales $(env_sysroot)
+else
+ @cd $(build_dir) && $(MAKE) -j1 localedata/install-locales $(env_sysroot)
+endif
+ @touch $@
+
+$(install_target): $(build_target)
+ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC) \
+ $(TOOLCHAIN_POWER8_GLIBC) \
+ $(TOOLCHAIN_POWER9_GLIBC)),)
+ # ======= Install the same locales into /usr/lib32 (x86_32, ppc32 compat) directories =======
+ @mkdir -p $(GLIBC_I18N_PKG)/usr/lib32 && cp -rf $(GLIBC_I18N_PKG)/usr/lib/locale $(GLIBC_I18N_PKG)/usr/lib32
+endif
+ # ======= Install the same to $(TARGET_DEST_DIR) =======
+ $(call install-into-devenv, $(GLIBC_I18N_PKG))
+ @touch $@
+
+$(GLIBC_I18N_PKG_DESCRIPTION_FILE): $(GLIBC_I18N_PKG_DESCRIPTION_FILE_IN)
+ @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature) : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(install_target) $(GLIBC_I18N_PKG_DESCRIPTION_FILE) $(GLIBC_I18N_PKG_INSTALL_SCRIPT)
+ @cp $(GLIBC_I18N_PKG_DESCRIPTION_FILE) $(GLIBC_I18N_PKG)/.DESCRIPTION
+ @cp $(GLIBC_I18N_PKG_INSTALL_SCRIPT) $(GLIBC_I18N_PKG)/.INSTALL
+ @$(BUILD_PKG_REQUIRES) $(GLIBC_I18N_PKG)/.REQUIRES
+ @echo "pkgname=$(GLIBC_I18N_PKG_NAME)" > $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "pkgver=$(GLIBC_I18N_PKG_VERSION)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "arch=$(GLIBC_I18N_PKG_ARCH)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "distroname=$(GLIBC_I18N_PKG_DISTRO_NAME)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "distrover=$(GLIBC_I18N_PKG_DISTRO_VERSION)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "group=$(GLIBC_I18N_PKG_GROUP)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "short_description=\"$(GLIBC_I18N_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "url=$(GLIBC_I18N_PKG_URL)" >> $(GLIBC_I18N_PKG)/.PKGINFO ; \
+ echo "license=$(GLIBC_I18N_PKG_LICENSE)" >> $(GLIBC_I18N_PKG)/.PKGINFO
+ @$(PSEUDO) sh -c "cd $(GLIBC_I18N_PKG) && \
+ chown -R root:root . && \
+ $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.37-i18n/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.37-i18n/PATCHES (nonexistent)
+++ radix-1.9/libs/glibc/2.37-i18n/PATCHES (revision 35)
@@ -0,0 +1,13 @@
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-CVE-2023-25139.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-i18n.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-malloc-hooks.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-en_US-no-am-pm.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-reenable-DT-HASH.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-locale-no-archive.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zonefile.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zoneinfo.patch
+../../../sources/iana/tz/patches/glibc-2.37-tzcode-2023c.patch -p0
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-ppc64-interpreter.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-description.in (nonexistent)
+++ radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-description.in (revision 35)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+glibc-i18n: glibc-i18n @VERSION@ (locale files from glibc)
+glibc-i18n:
+glibc-i18n: These files go in /usr/lib/locale and /usr/share/i18n/ to provide
+glibc-i18n: internationalization support. You'll need this package unless you
+glibc-i18n: will be using US English only.
+glibc-i18n:
+glibc-i18n:
+glibc-i18n:
+glibc-i18n:
+glibc-i18n:
+glibc-i18n:
Index: radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-install.sh (nonexistent)
+++ radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-install.sh (revision 35)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_update() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_update() {
+ post_install
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*
Property changes on: radix-1.9/libs/glibc/2.37-i18n/glibc-i18n-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.37-i18n/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.37-i18n/tz-exclude.list (nonexistent)
+++ radix-1.9/libs/glibc/2.37-i18n/tz-exclude.list (revision 35)
@@ -0,0 +1 @@
+Makefile
Index: radix-1.9/libs/glibc/2.37-i18n
===================================================================
--- radix-1.9/libs/glibc/2.37-i18n (nonexistent)
+++ radix-1.9/libs/glibc/2.37-i18n (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37-i18n
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37-ppc32/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.37-ppc32/Makefile (nonexistent)
+++ radix-1.9/libs/glibc/2.37-ppc32/Makefile (revision 35)
@@ -0,0 +1,192 @@
+
+COMPONENT_TARGETS = $(HARDWARE_S824L)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
+
+NEED_ABS_PATH = true
+COMPONENT_IS_3PP = true
+
+CREATE_PPC32_PACKAGE = true
+
+
+include ../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES = sources/GNU/glibc/2.37
+SOURCE_REQUIRES += sources/iana/tz
+
+REQUIRES = libs/glibc/2.37
+REQUIRES += dev/kernel-headers
+REQUIRES += dev/gcc-runtime/12.2.0
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+version = 2.37
+tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
+
+tz_version = 2023c
+tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
+tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
+exclude_list = $(CURDIR)/tz-exclude.list
+
+SRC_ARCHIVE = $(tar_xz_archive)
+SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
+src_dir_name = glibc-$(version)
+src_done = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES = PATCHES
+
+build_dir = $(TARGET_BUILD_DIR)/build
+build_target = $(TARGET_BUILD_DIR)/.built
+install_target = $(TARGET_BUILD_DIR)/.installed
+
+
+build_glibc32_pkg = $(TARGET_BUILD_DIR)/.glibc32_pkg_done
+
+
+OPTIMIZATION_FLAGS = -O3
+
+
+####### Targets
+
+PKG_GROUP = libs
+
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+GLIBC_32_PKG_NAME = glibc-x32
+GLIBC_32_PKG_VERSION = 2.37
+GLIBC_32_PKG_ARCH = $(PKGARCH)
+GLIBC_32_PKG_DISTRO_NAME = $(DISTRO_NAME)
+GLIBC_32_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
+GLIBC_32_PKG_GROUP = $(PKG_GROUP)
+### |---handy-ruler-------------------------------|
+GLIBC_32_PKG_SHORT_DESCRIPTION = GNU C libraries
+GLIBC_32_PKG_URL = $(BUG_URL)
+GLIBC_32_PKG_LICENSE = GPLv2
+GLIBC_32_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-pkg-description
+GLIBC_32_PKG_DESCRIPTION_FILE_IN = $(GLIBC_32_PKG_NAME)-pkg-description.in
+GLIBC_32_PKG_INSTALL_SCRIPT = $(GLIBC_32_PKG_NAME)-pkg-install.sh
+
+GLIBC_32_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-package
+
+pkg_basename = $(GLIBC_32_PKG_NAME)-$(GLIBC_32_PKG_VERSION)-$(GLIBC_32_PKG_ARCH)-$(GLIBC_32_PKG_DISTRO_NAME)-$(GLIBC_32_PKG_DISTRO_VERSION)
+
+pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate = $(call cert-name,$(pkg_archive))
+pkg_signature = $(call sign-name,$(pkg_archive))
+pkg_description = $(call desc-name,$(pkg_archive))
+products = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS = $(build_target)
+BUILD_TARGETS += $(install_target)
+BUILD_TARGETS += $(build_glibc32_pkg)
+
+PRODUCT_TARGETS = $(products)
+
+ROOTFS_TARGETS = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot = install_root=$(GLIBC_32_PKG)
+
+
+extra_configure_switches += --libdir=/usr/lib$(MULTILIB_PPC32_SUFFIX)
+extra_configure_switches += --with-headers=$(TARGET_DEST_DIR)/usr/include
+extra_configure_switches += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches += --enable-kernel=2.6.36
+extra_configure_switches += --enable-add-ons
+extra_configure_switches += --enable-profile
+extra_configure_switches += --enable-bind-now
+extra_configure_switches += --without-gd
+extra_configure_switches += --without-cvs
+
+
+extra_configure_switches += libc_cv_slibdir=/lib$(MULTILIB_PPC32_SUFFIX)
+extra_configure_switches += libc_cv_rtlddir=/lib$(MULTILIB_PPC32_SUFFIX)
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+ $(UNPACK_SRC_ARCHIVE)
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
+ $(APPLY_PATCHES)
+ @touch $@
+
+$(build_target): $(src_done)
+ @mkdir -p $(build_dir)
+ @echo "slibdir=/lib$(MULTILIB_PPC32_SUFFIX)" >> $(build_dir)/configparms
+ @echo "rtlddir=/lib$(MULTILIB_PPC32_SUFFIX)" >> $(build_dir)/configparms
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(env_sysroot) ../$(src_dir_name)/configure \
+ --prefix=/usr \
+ --build=$(BUILD) \
+ --host=$(TARGET32) \
+ $(extra_configure_switches)
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE)
+ @touch $@
+
+$(install_target): $(build_target)
+ @mkdir -p $(GLIBC_32_PKG)
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+ # ======= fake LOCALES installation to allow implementation of iconv and intl into GLIBC =======
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 SUPPORTED-LOCALES="" \
+ localedata/install-locales $(env_sysroot)
+ @touch $@
+
+$(build_glibc32_pkg): $(install_target)
+ # ======= Remove not needed stuff =======
+ @rm -rf $(GLIBC_32_PKG)/etc
+ @rm -rf $(GLIBC_32_PKG)/sbin
+ @rm -rf $(GLIBC_32_PKG)/usr/bin
+ @rm -rf $(GLIBC_32_PKG)/usr/sbin
+ @rm -rf $(GLIBC_32_PKG)/usr/share
+ @rm -rf $(GLIBC_32_PKG)/var
+ @( cd $(GLIBC_32_PKG)/usr/include/gnu ; cp lib-names-32.h stubs-32.h ../.. )
+ @rm -rf $(GLIBC_32_PKG)/usr/include
+ @( mkdir -p $(GLIBC_32_PKG)/usr/include/gnu ; \
+ mv $(GLIBC_32_PKG)/usr/lib-names-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
+ mv $(GLIBC_32_PKG)/usr/stubs-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
+ )
+ # ======= Create symbolic link to libnsl.so.1 =======
+ @( cd $(GLIBC_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
+ ln -sf ../../lib$(MULTILIB_PPC32_SUFFIX)/libnsl.so.1 libnsl.so ; \
+ )
+ # ======= Install the same to $(TARGET_DEST_DIR) =======
+ $(call install-into-devenv, $(GLIBC_32_PKG))
+ # ======= Strip binaries =======
+ @( cd $(GLIBC_32_PKG) ; \
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-debug 2> /dev/null ; \
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ find . | xargs file | grep "relocatable" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ )
+ @touch $@
+
+$(GLIBC_32_PKG_DESCRIPTION_FILE): $(GLIBC_32_PKG_DESCRIPTION_FILE_IN)
+ @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature) : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(build_glibc32_pkg) $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG_INSTALL_SCRIPT)
+ @cp $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG)/.DESCRIPTION
+ @cp $(GLIBC_32_PKG_INSTALL_SCRIPT) $(GLIBC_32_PKG)/.INSTALL
+ @$(BUILD_BIN_PKG_REQUIRES) $(GLIBC_32_PKG)/.REQUIRES
+ @echo "pkgname=$(GLIBC_32_PKG_NAME)" > $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "pkgver=$(GLIBC_32_PKG_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "arch=$(GLIBC_32_PKG_ARCH)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "distroname=$(GLIBC_32_PKG_DISTRO_NAME)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "distrover=$(GLIBC_32_PKG_DISTRO_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "group=$(GLIBC_32_PKG_GROUP)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "short_description=\"$(GLIBC_32_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "url=$(GLIBC_32_PKG_URL)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "license=$(GLIBC_32_PKG_LICENSE)" >> $(GLIBC_32_PKG)/.PKGINFO
+ @$(PSEUDO) sh -c "cd $(GLIBC_32_PKG) && \
+ chown -R root:root . && \
+ $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.37-ppc32/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.37-ppc32/PATCHES (nonexistent)
+++ radix-1.9/libs/glibc/2.37-ppc32/PATCHES (revision 35)
@@ -0,0 +1,13 @@
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-CVE-2023-25139.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-i18n.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-malloc-hooks.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-en_US-no-am-pm.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-reenable-DT-HASH.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-locale-no-archive.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zonefile.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zoneinfo.patch
+../../../sources/iana/tz/patches/glibc-2.37-tzcode-2023c.patch -p0
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-ppc64-interpreter.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-description.in (nonexistent)
+++ radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-description.in (revision 35)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+glibc-x32: glibc-x32 @VERSION@ (ppc32 GNU C libraries)
+glibc-x32:
+glibc-x32: This package contains the GNU C libraries and header files.
+glibc-x32: The GNU C library was written originally by Roland McGrath,
+glibc-x32: and is currently maintained by Ulrich Drepper. Some parts of
+glibc-x32: the library were contributed or worked on by other people.
+glibc-x32:
+glibc-x32:
+glibc-x32:
+glibc-x32:
+glibc-x32:
Index: radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-install.sh (nonexistent)
+++ radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-install.sh (revision 35)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_update() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_update() {
+ post_install
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*
Property changes on: radix-1.9/libs/glibc/2.37-ppc32/glibc-x32-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.37-ppc32/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.37-ppc32/tz-exclude.list (nonexistent)
+++ radix-1.9/libs/glibc/2.37-ppc32/tz-exclude.list (revision 35)
@@ -0,0 +1 @@
+Makefile
Index: radix-1.9/libs/glibc/2.37-ppc32
===================================================================
--- radix-1.9/libs/glibc/2.37-ppc32 (nonexistent)
+++ radix-1.9/libs/glibc/2.37-ppc32 (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37-ppc32
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37-x86_32/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.37-x86_32/Makefile (nonexistent)
+++ radix-1.9/libs/glibc/2.37-x86_32/Makefile (revision 35)
@@ -0,0 +1,189 @@
+
+COMPONENT_TARGETS = $(HARDWARE_INTEL_PC64)
+
+NEED_ABS_PATH = true
+COMPONENT_IS_3PP = true
+
+CREATE_X86_32_PACKAGE = true
+
+
+include ../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES = sources/GNU/glibc/2.37
+SOURCE_REQUIRES += sources/iana/tz
+
+REQUIRES = libs/glibc/2.37
+REQUIRES += dev/kernel-headers
+REQUIRES += dev/gcc-runtime/12.2.0
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+version = 2.37
+tar_xz_archive = $(SRC_PACKAGE_PATH)/GNU/glibc/$(version)/glibc-$(version).tar.xz
+
+tz_version = 2023c
+tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
+tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
+exclude_list = $(CURDIR)/tz-exclude.list
+
+SRC_ARCHIVE = $(tar_xz_archive)
+SRC_DIR = $(TARGET_BUILD_DIR)/glibc-$(version)
+src_dir_name = glibc-$(version)
+src_done = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES = PATCHES
+
+build_dir = $(TARGET_BUILD_DIR)/build
+build_target = $(TARGET_BUILD_DIR)/.built
+install_target = $(TARGET_BUILD_DIR)/.installed
+
+
+build_glibc32_pkg = $(TARGET_BUILD_DIR)/.glibc32_pkg_done
+
+
+OPTIMIZATION_FLAGS = -O3
+
+
+####### Targets
+
+PKG_GROUP = libs
+
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+GLIBC_32_PKG_NAME = glibc-x32
+GLIBC_32_PKG_VERSION = 2.37
+GLIBC_32_PKG_ARCH = $(PKGARCH)
+GLIBC_32_PKG_DISTRO_NAME = $(DISTRO_NAME)
+GLIBC_32_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
+GLIBC_32_PKG_GROUP = $(PKG_GROUP)
+### |---handy-ruler-------------------------------|
+GLIBC_32_PKG_SHORT_DESCRIPTION = GNU C libraries
+GLIBC_32_PKG_URL = $(BUG_URL)
+GLIBC_32_PKG_LICENSE = GPLv2
+GLIBC_32_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-pkg-description
+GLIBC_32_PKG_DESCRIPTION_FILE_IN = $(GLIBC_32_PKG_NAME)-pkg-description.in
+GLIBC_32_PKG_INSTALL_SCRIPT = $(GLIBC_32_PKG_NAME)-pkg-install.sh
+
+GLIBC_32_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_32_PKG_NAME)-package
+
+pkg_basename = $(GLIBC_32_PKG_NAME)-$(GLIBC_32_PKG_VERSION)-$(GLIBC_32_PKG_ARCH)-$(GLIBC_32_PKG_DISTRO_NAME)-$(GLIBC_32_PKG_DISTRO_VERSION)
+
+pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate = $(call cert-name,$(pkg_archive))
+pkg_signature = $(call sign-name,$(pkg_archive))
+pkg_description = $(call desc-name,$(pkg_archive))
+products = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS = $(build_target)
+BUILD_TARGETS += $(install_target)
+BUILD_TARGETS += $(build_glibc32_pkg)
+
+PRODUCT_TARGETS = $(products)
+
+ROOTFS_TARGETS = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot = install_root=$(GLIBC_32_PKG)
+
+
+extra_configure_switches += --libdir=/usr/lib$(MULTILIB_X86_32_SUFFIX)
+extra_configure_switches += --with-headers=$(TARGET_DEST_DIR)/usr/include
+extra_configure_switches += --with-binutils=$(TOOLCHAIN_PATH)/bin
+extra_configure_switches += --enable-kernel=2.6.36
+extra_configure_switches += --enable-add-ons
+extra_configure_switches += --enable-profile
+extra_configure_switches += --enable-bind-now
+extra_configure_switches += --without-gd
+extra_configure_switches += --without-cvs
+
+
+extra_configure_switches += libc_cv_slibdir=/lib$(MULTILIB_X86_32_SUFFIX)
+extra_configure_switches += libc_cv_rtlddir=/lib$(MULTILIB_X86_32_SUFFIX)
+
+
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+ $(UNPACK_SRC_ARCHIVE)
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_code_archive) -C $(SRC_DIR)/timezone
+ @tar --exclude-from=$(exclude_list) -xzf $(tar_gz_data_archive) -C $(SRC_DIR)/timezone
+ $(APPLY_PATCHES)
+ @touch $@
+
+$(build_target): $(src_done)
+ @mkdir -p $(build_dir)
+ @echo "slibdir=/lib$(MULTILIB_X86_32_SUFFIX)" >> $(build_dir)/configparms
+ @echo "rtlddir=/lib$(MULTILIB_X86_32_SUFFIX)" >> $(build_dir)/configparms
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(env_sysroot) ../$(src_dir_name)/configure \
+ --prefix=/usr \
+ --build=$(BUILD) \
+ --host=$(TARGET32) \
+ $(extra_configure_switches)
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE)
+ @touch $@
+
+$(install_target): $(build_target)
+ @mkdir -p $(GLIBC_32_PKG)
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+ # ======= fake LOCALES installation to allow implementation of iconv and intl into GLIBC =======
+ @cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 SUPPORTED-LOCALES="" \
+ localedata/install-locales $(env_sysroot)
+ @touch $@
+
+$(build_glibc32_pkg): $(install_target)
+ # ======= Remove not needed stuff =======
+ @rm -rf $(GLIBC_32_PKG)/etc
+ @rm -rf $(GLIBC_32_PKG)/sbin
+ @rm -rf $(GLIBC_32_PKG)/usr/bin
+ @rm -rf $(GLIBC_32_PKG)/usr/sbin
+ @rm -rf $(GLIBC_32_PKG)/usr/share
+ @rm -rf $(GLIBC_32_PKG)/var
+ @( cd $(GLIBC_32_PKG)/usr/include/gnu ; cp lib-names-32.h stubs-32.h ../.. )
+ @rm -rf $(GLIBC_32_PKG)/usr/include
+ @( mkdir -p $(GLIBC_32_PKG)/usr/include/gnu ; \
+ mv $(GLIBC_32_PKG)/usr/lib-names-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
+ mv $(GLIBC_32_PKG)/usr/stubs-32.h $(GLIBC_32_PKG)/usr/include/gnu ; \
+ )
+ # ======= Create symbolic link to libnsl.so.1 =======
+ @( cd $(GLIBC_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
+ ln -sf ../../lib$(MULTILIB_X86_32_SUFFIX)/libnsl.so.1 libnsl.so ; \
+ )
+ # ======= Install the same to $(TARGET_DEST_DIR) =======
+ $(call install-into-devenv, $(GLIBC_32_PKG))
+ # ======= Strip binaries =======
+ @( cd $(GLIBC_32_PKG) ; \
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-debug 2> /dev/null ; \
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ find . | xargs file | grep "relocatable" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+ )
+ @touch $@
+
+$(GLIBC_32_PKG_DESCRIPTION_FILE): $(GLIBC_32_PKG_DESCRIPTION_FILE_IN)
+ @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature) : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(build_glibc32_pkg) $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG_INSTALL_SCRIPT)
+ @cp $(GLIBC_32_PKG_DESCRIPTION_FILE) $(GLIBC_32_PKG)/.DESCRIPTION
+ @cp $(GLIBC_32_PKG_INSTALL_SCRIPT) $(GLIBC_32_PKG)/.INSTALL
+ @$(BUILD_BIN_PKG_REQUIRES) $(GLIBC_32_PKG)/.REQUIRES
+ @echo "pkgname=$(GLIBC_32_PKG_NAME)" > $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "pkgver=$(GLIBC_32_PKG_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "arch=$(GLIBC_32_PKG_ARCH)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "distroname=$(GLIBC_32_PKG_DISTRO_NAME)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "distrover=$(GLIBC_32_PKG_DISTRO_VERSION)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "group=$(GLIBC_32_PKG_GROUP)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "short_description=\"$(GLIBC_32_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "url=$(GLIBC_32_PKG_URL)" >> $(GLIBC_32_PKG)/.PKGINFO ; \
+ echo "license=$(GLIBC_32_PKG_LICENSE)" >> $(GLIBC_32_PKG)/.PKGINFO
+ @$(PSEUDO) sh -c "cd $(GLIBC_32_PKG) && \
+ chown -R root:root . && \
+ $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.37-x86_32/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.37-x86_32/PATCHES (nonexistent)
+++ radix-1.9/libs/glibc/2.37-x86_32/PATCHES (revision 35)
@@ -0,0 +1,13 @@
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-CVE-2023-25139.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-i18n.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-malloc-hooks.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-en_US-no-am-pm.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-reenable-DT-HASH.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-locale-no-archive.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zonefile.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-zoneinfo.patch
+../../../sources/iana/tz/patches/glibc-2.37-tzcode-2023c.patch -p0
+
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-ppc64-interpreter.patch -p0
+../../../sources/GNU/glibc/2.37/patches/glibc-2.37-x86_64-interpreter.patch -p0
Index: radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-description.in (nonexistent)
+++ radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-description.in (revision 35)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+glibc-x32: glibc-x32 @VERSION@ (GNU C libraries)
+glibc-x32:
+glibc-x32: This package contains the GNU C libraries and header files.
+glibc-x32: The GNU C library was written originally by Roland McGrath,
+glibc-x32: and is currently maintained by Ulrich Drepper. Some parts of
+glibc-x32: the library were contributed or worked on by other people.
+glibc-x32:
+glibc-x32:
+glibc-x32:
+glibc-x32:
+glibc-x32:
Index: radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-install.sh (nonexistent)
+++ radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-install.sh (revision 35)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_update() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_update() {
+ post_install
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*
Property changes on: radix-1.9/libs/glibc/2.37-x86_32/glibc-x32-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.37-x86_32/tz-exclude.list
===================================================================
--- radix-1.9/libs/glibc/2.37-x86_32/tz-exclude.list (nonexistent)
+++ radix-1.9/libs/glibc/2.37-x86_32/tz-exclude.list (revision 35)
@@ -0,0 +1 @@
+Makefile
Index: radix-1.9/libs/glibc/2.37-x86_32
===================================================================
--- radix-1.9/libs/glibc/2.37-x86_32 (nonexistent)
+++ radix-1.9/libs/glibc/2.37-x86_32 (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37-x86_32
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/Makefile
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/Makefile (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/Makefile (revision 35)
@@ -0,0 +1,202 @@
+
+COMPONENT_TARGETS = $(HARDWARE_INTEL_PC32)
+COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
+COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
+COMPONENT_TARGETS += $(HARDWARE_CB1X)
+COMPONENT_TARGETS += $(HARDWARE_CB2X)
+COMPONENT_TARGETS += $(HARDWARE_CB3X)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
+COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
+COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
+COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
+COMPONENT_TARGETS += $(HARDWARE_POIN2)
+COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
+COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
+COMPONENT_TARGETS += $(HARDWARE_M201)
+COMPONENT_TARGETS += $(HARDWARE_MXV)
+COMPONENT_TARGETS += $(HARDWARE_P201)
+COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
+COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
+COMPONENT_TARGETS += $(HARDWARE_P212)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
+COMPONENT_TARGETS += $(HARDWARE_Q201)
+COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
+COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
+COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
+COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
+COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
+COMPONENT_TARGETS += $(HARDWARE_CI20)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
+COMPONENT_TARGETS += $(HARDWARE_S824L)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN)
+COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
+
+
+NEED_ABS_PATH = true
+COMPONENT_IS_3PP = true
+
+
+include ../../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES = sources/iana/tz
+
+REQUIRES = libs/glibc/2.37-i18n
+
+# ======= __END_OF_REQUIRES__ =======
+
+
+version = 2.37
+tz_version = 2023c
+
+tar_gz_code_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzcode$(tz_version).tar.gz
+tar_gz_data_archive = $(SRC_PACKAGE_PATH)/iana/tz/tzdata$(tz_version).tar.gz
+
+
+SRC_DIR = $(TARGET_BUILD_DIR)/timezone
+doc_dir_name = zoneinfo-$(version)
+src_done = $(TARGET_BUILD_DIR)/.source-done
+
+PATCHES = PATCHES
+
+install_target = $(TARGET_BUILD_DIR)/.install_done
+
+scripts_dir = $(CURDIR)/scripts
+part_01 = $(CURDIR)/$(TARGET_BUILD_DIR)/part-01
+
+
+OPTIMIZATION_FLAGS = -O3
+
+
+####### Targets
+
+PKG_GROUP = libs
+
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+GLIBC_TZ_PKG_NAME = glibc-zoneinfo
+GLIBC_TZ_PKG_VERSION = 2.37
+GLIBC_TZ_PKG_ARCH = $(PKGARCH)
+GLIBC_TZ_PKG_DISTRO_NAME = $(DISTRO_NAME)
+GLIBC_TZ_PKG_DISTRO_VERSION = $(DISTRO_VERSION)
+GLIBC_TZ_PKG_GROUP = $(PKG_GROUP)
+### |---handy-ruler-------------------------------|
+GLIBC_TZ_PKG_SHORT_DESCRIPTION = timezone database
+GLIBC_TZ_PKG_URL = $(BUG_URL)
+GLIBC_TZ_PKG_LICENSE = public
+GLIBC_TZ_PKG_DESCRIPTION_FILE = $(TARGET_BUILD_DIR)/$(GLIBC_TZ_PKG_NAME)-pkg-description
+GLIBC_TZ_PKG_DESCRIPTION_FILE_IN = $(GLIBC_TZ_PKG_NAME)-pkg-description.in
+GLIBC_TZ_PKG_INSTALL_SCRIPT = $(GLIBC_TZ_PKG_NAME)-pkg-install.sh
+
+GLIBC_TZ_PKG = $(CURDIR)/$(TARGET_BUILD_DIR)/$(GLIBC_TZ_PKG_NAME)-package
+
+pkg_basename = $(GLIBC_TZ_PKG_NAME)-$(GLIBC_TZ_PKG_VERSION)-$(GLIBC_TZ_PKG_ARCH)-$(GLIBC_TZ_PKG_DISTRO_NAME)-$(GLIBC_TZ_PKG_DISTRO_VERSION)
+
+pkg_archive = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate = $(call cert-name,$(pkg_archive))
+pkg_signature = $(call sign-name,$(pkg_archive))
+pkg_description = $(call desc-name,$(pkg_archive))
+products = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS = $(install_target)
+
+PRODUCT_TARGETS = $(products)
+
+ROOTFS_TARGETS = $(pkg_archive)
+
+
+include ../../../../build-system/core.mk
+
+
+ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
+OPTIMIZATION_FLAGS += -fPIC
+endif
+
+
+$(src_done): $(tar_gz_code_archive) $(tar_gz_data_archive)
+ @mkdir -p $(SRC_DIR)
+ @tar xzf $(tar_gz_code_archive) -C $(SRC_DIR)
+ @tar xzf $(tar_gz_data_archive) -C $(SRC_DIR)
+ $(APPLY_PATCHES)
+ @touch $@
+
+$(install_target): $(src_done)
+ @mkdir -p $(GLIBC_TZ_PKG)
+ @cd $(SRC_DIR) && $(MAKE)
+ @cd $(SRC_DIR) && $(MAKE) -j1 install DESTDIR=.
+ @mkdir -p $(GLIBC_TZ_PKG)/usr/lib$(LIBSUFFIX)
+ @cp -a $(SRC_DIR)/usr/lib/libtz.a $(GLIBC_TZ_PKG)/usr/lib$(LIBSUFFIX)
+ @mkdir -p $(GLIBC_TZ_PKG)/usr/share/zoneinfo{,-leaps}
+ @cp -a $(SRC_DIR)/usr/share/zoneinfo/* $(GLIBC_TZ_PKG)/usr/share/zoneinfo
+ @cp -a $(SRC_DIR)/usr/share/zoneinfo-leaps/* $(GLIBC_TZ_PKG)/usr/share/zoneinfo-leaps
+ @( cd $(GLIBC_TZ_PKG)/usr/share ; ln -sf zoneinfo zoneinfo-posix )
+ # ======= Remove PACKAGE/usr/share/zoneinfo/localtime -- =======
+ # ======= the install script will create it as a link to /etc/localtime =======
+ @rm -f $(GLIBC_TZ_PKG)/usr/share/zoneinfo/localtime
+ # ======= timeconfig script =======
+ @$(scripts_dir)/list-zones $(GLIBC_TZ_PKG)/usr/share/zoneinfo $(part_01)
+ @mkdir -p $(GLIBC_TZ_PKG)/usr/sbin
+ @cat $(scripts_dir)/part-00 $(part_01) $(scripts_dir)/part-02 > $(GLIBC_TZ_PKG)/usr/sbin/timeconfig
+ @chmod 0755 $(GLIBC_TZ_PKG)/usr/sbin/timeconfig
+ # ======= Install Documentation =======
+ @cp -rf $(SRC_DIR)/usr/share/man $(GLIBC_TZ_PKG)/usr/share
+ @( cd $(GLIBC_TZ_PKG)/usr/share/man/man3 ; \
+ for file in *.3 ; do \
+ gzip -9 --force $$file; \
+ done )
+ @( cd $(GLIBC_TZ_PKG)/usr/share/man/man5 ; \
+ for file in *.5 ; do \
+ gzip -9 --force $$file; \
+ done )
+ @( cd $(GLIBC_TZ_PKG)/usr/share/man/man8 ; \
+ for file in *.8 ; do \
+ gzip -9 --force $$file; \
+ done )
+ @mkdir -p $(GLIBC_TZ_PKG)/usr/share/doc/$(doc_dir_name)
+ @( cd $(SRC_DIR) ; \
+ cp -a CONTRIBUTING LICENSE NEWS README \
+ $(GLIBC_TZ_PKG)/usr/share/doc/$(doc_dir_name) ; \
+ )
+ # ======= Install the same to $(TARGET_DEST_DIR) =======
+ $(call install-into-devenv, $(GLIBC_TZ_PKG))
+ @touch $@
+
+$(GLIBC_TZ_PKG_DESCRIPTION_FILE): $(GLIBC_TZ_PKG_DESCRIPTION_FILE_IN)
+ @cat $< | $(SED) -e "s/@VERSION@/$(version)/g" \
+ | $(SED) -e "s/@TZVERSION@/$(tz_version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature) : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(install_target) $(GLIBC_TZ_PKG_DESCRIPTION_FILE) $(GLIBC_TZ_PKG_INSTALL_SCRIPT)
+ @cp $(GLIBC_TZ_PKG_DESCRIPTION_FILE) $(GLIBC_TZ_PKG)/.DESCRIPTION
+ @cp $(GLIBC_TZ_PKG_INSTALL_SCRIPT) $(GLIBC_TZ_PKG)/.INSTALL
+ @$(BUILD_PKG_REQUIRES) $(GLIBC_TZ_PKG)/.REQUIRES
+ @echo "pkgname=$(GLIBC_TZ_PKG_NAME)" > $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "pkgver=$(GLIBC_TZ_PKG_VERSION)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "arch=$(GLIBC_TZ_PKG_ARCH)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "distroname=$(GLIBC_TZ_PKG_DISTRO_NAME)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "distrover=$(GLIBC_TZ_PKG_DISTRO_VERSION)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "group=$(GLIBC_TZ_PKG_GROUP)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "short_description=\"$(GLIBC_TZ_PKG_SHORT_DESCRIPTION)\"" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "url=$(GLIBC_TZ_PKG_URL)" >> $(GLIBC_TZ_PKG)/.PKGINFO ; \
+ echo "license=$(GLIBC_TZ_PKG_LICENSE)" >> $(GLIBC_TZ_PKG)/.PKGINFO
+ @$(PSEUDO) sh -c "cd $(GLIBC_TZ_PKG) && \
+ chown -R root:root . && \
+ $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/PATCHES
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/PATCHES (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/PATCHES (revision 35)
@@ -0,0 +1,2 @@
+
+../../../../sources/iana/tz/patches/tzcode-2023c-version.patch -p0
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-description.in
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-description.in (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-description.in (revision 35)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+glibc-zoneinfo: glibc-zoneinfo @VERSION@ (timezone database @TZVERSION@)
+glibc-zoneinfo:
+glibc-zoneinfo: This package allows you to configure your time zone.
+glibc-zoneinfo:
+glibc-zoneinfo: This timezone database comes from the tzdata and tzcode packages by
+glibc-zoneinfo: Arthur David Olson et.al. The latest version and more information
+glibc-zoneinfo: may be found at: http://www.iana.org/time-zones
+glibc-zoneinfo:
+glibc-zoneinfo: Use the timeconfig utility to set your local time zone.
+glibc-zoneinfo:
+glibc-zoneinfo:
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-install.sh
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-install.sh (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-install.sh (revision 35)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_update() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_update() {
+ post_install
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*
Property changes on: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/glibc-zoneinfo-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/list-zones
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/list-zones (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/list-zones (revision 35)
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+path=$1
+p01=$2
+
+if [ -z "$path" -a -z "$p01" ] ; then
+ echo ""
+ echo "Usage: `basename $0` PATH output-file"
+ echo ""
+ exit 1
+fi
+
+ls 1> /dev/null 2> $p01
+
+( cd $path
+ find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | sort | while read zone ; do
+ if [ "`dirname $zone`" != "." ] ; then
+ line="\"`echo "$zone" | sed "s,\./,,"`\" \" \" \\\\"
+ echo "$line" >> $p01
+ fi
+ done
+
+ find . -type f | xargs file | grep "timezone data" | cut -f 1 -d : | sort | while read zone ; do
+ if [ "`dirname $zone`" == "." ] ; then
+ line="\"`echo "$zone" | sed "s,\./,,"`\" \" \" \\\\"
+ echo "$line" >> $p01
+ fi
+ done
+)
Property changes on: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/list-zones
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/part-00
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/part-00 (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/part-00 (revision 35)
@@ -0,0 +1,164 @@
+#!/bin/sh
+
+# program name:
+program=`basename $0`
+
+# 16 = root path has not specified arter --root option
+# 91 = root path not correct
+# 92 = Cannot create '/tmp/...' directory
+EXITSTATUS=0
+
+CWD=`pwd`
+
+umask 022
+if [ ! -z "$TMPDIR" ] ; then mkdir -p $TMPDIR ; fi
+TMP=$(mkdir -p /tmp/radix && mktemp -d -p /tmp/radix $program.XXXXXXXX) || { echo "Cannot create '/tmp/...' directory" ; exit 92; }
+trap "rm -rf $TMP" EXIT
+
+
+TARGET_ROOT_PATH=
+
+usage() {
+ cat << EOF
+
+Usage: $program [options]
+
+$program - Radix Linux timezone configuration utility.
+
+options:
+ --root <DIR> - Configure timezone someplace else, like <DIR>.
+
+EOF
+}
+
+
+check_abs_paths()
+{
+ if [ ! -z "$TARGET_ROOT_PATH" ] ; then
+ if [[ ${TARGET_ROOT_PATH:0:1} != "/" ]] ; then
+ TARGET_ROOT_PATH=$CWD/$TARGET_ROOT_PATH
+ fi
+ TARGET_ROOT_PATH="$(echo "$TARGET_ROOT_PATH" | sed -e "s/\/$//")/"
+ fi
+}
+
+#
+# Parse options:
+#
+while [ 0 ]; do
+ if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+ elif [ "$1" = "--root" ]; then
+ if [ "$2" = "" ]; then
+ usage
+ echo "ERROR: Target ROOT directory has not specified. Check --root option."
+ EXITSTATUS=17
+ exit $EXITSTATUS
+ fi
+ TARGET_ROOT_PATH="$2"
+ shift 2
+ else
+ break
+ fi
+done
+
+check_abs_paths
+
+if [ -z "$TARGET_ROOT_PATH" ] ; then
+ TARGET_ROOT_PATH="/"
+fi
+
+if [ ! -d $TARGET_ROOT_PATH ] ; then
+ echo "ERROR: Target ROOT path specified but not correct."
+ EXITSTATUS=91
+ exit $EXITSTATUS
+fi
+
+: ${DIALOG=dialog}
+: ${DIALOGRC=${TARGET_ROOT_PATH}etc/dialogrc}
+
+#
+# The hardware clock configuration file:
+#
+HWCLOCK_CONF=${TARGET_ROOT_PATH}etc/hardwareclock
+
+#
+# setzone( $TIMEZONE )
+#
+# This function accepts a time zone as the only parameter
+# and sets it as the default system time zone.
+#
+setzone()
+{
+ TZ=$1
+
+ cd ${TARGET_ROOT_PATH}etc
+ if [ -r ${TARGET_ROOT_PATH}usr/share/zoneinfo/$TZ -o \
+ -L ${TARGET_ROOT_PATH}usr/share/zoneinfo/$TZ ]; then
+ ln -sf ../usr/share/zoneinfo/$TZ localtime-copied-from
+ rm -f localtime
+ cd ..
+ cp etc/localtime-copied-from etc/localtime
+ fi
+}
+
+#
+# writeconf( $CLOCK_SET_TO )
+#
+# Writes out $HWCLOCK_CONF that tells rc.S how the hardware clock value is stored.
+#
+writeconf()
+{
+ echo "#" > $HWCLOCK_CONF
+ echo "# /etc/hardwareclock" >> $HWCLOCK_CONF
+ echo "#" >> $HWCLOCK_CONF
+ echo "# Tells how the hardware clock time is stored." >> $HWCLOCK_CONF
+ echo "# You should run timeconfig to edit this file." >> $HWCLOCK_CONF
+ echo "" >> $HWCLOCK_CONF
+ echo $1 >> $HWCLOCK_CONF
+}
+
+#
+# Ask the user if the hardware clock is set for UTC/GMT
+#
+cat > $TMP/menu-utc$$ << EOF
+--colors \\
+--backtitle "\Z7Radix\Zn \Z1cross\Zn\Z7 Linux\Zn" \\
+--title " \Z4\ZbSet Hardware Clock\ZB\Zn " \\
+--menu "\\n\\
+ Is the hardware clock set to Coordinated Universal Time (UTC/GMT)?\\n\\
+ If it is, select YES here.\\n\\n\\
+ If the hardware clock is set to the current local time (this is how\\n\\
+ most PCs are set up), then say NO here.\\n\\n\\
+ If you are not sure what this is, you should answer NO here.\\n\\
+" 16 74 2 \\
+"NO" "Hardware clock is set to local time" \\
+"YES" "Hardware clock is set to UTC" \\
+EOF
+
+$DIALOG --file $TMP/menu-utc$$ 2> $TMP/utc$$
+if [ $? = 1 -o $? = 255 ]; then
+ rm -f $TMP/utc$$
+ rm -f $TMP/menu-utc$$
+ exit
+fi
+if [ "`cat $TMP/utc$$`" = "YES" ]; then
+ # yes, the hardware clock is UTC
+ writeconf "UTC"
+else # must be NO
+ writeconf "localtime"
+fi
+rm -f $TMP/utc$$
+rm -f $TMP/menu-utc$$
+
+#
+# Ask the user which timezone is preffered
+#
+cat > $TMP/menu-tz$$ << EOF
+--colors \\
+--backtitle "\Z7Radix\Zn \Z1cross\Zn\Z7 Linux\Zn" \\
+--title " \Z4\ZbTimezone Configuration\ZB\Zn " \\
+--menu "\\n\\
+ Please select one of the following timezones for your machine:\\n\\
+" 22 74 14 \\
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/part-02
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/part-02 (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts/part-02 (revision 35)
@@ -0,0 +1,16 @@
+EOF
+
+$DIALOG --file $TMP/menu-tz$$ 2> $TMP/tz$$
+ret=$?
+if [ $ret -eq 1 -o $ret -eq 255 ]; then
+ rm -f $TMP/tz$$
+ rm -f $TMP/menu-tz$$
+ exit
+fi
+
+TIMEZONE="`cat $TMP/tz$$`"
+rm -f $TMP/tz$$
+rm -f $TMP/menu-tz$$
+
+setzone $TIMEZONE
+exit
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37-zoneinfo/2023c/scripts
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37-zoneinfo/2023c
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo/2023c (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo/2023c (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37-zoneinfo/2023c
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/glibc/2.37-zoneinfo
===================================================================
--- radix-1.9/libs/glibc/2.37-zoneinfo (nonexistent)
+++ radix-1.9/libs/glibc/2.37-zoneinfo (revision 35)
Property changes on: radix-1.9/libs/glibc/2.37-zoneinfo
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/gmp/6.2.1/Makefile
===================================================================
--- radix-1.9/libs/gmp/6.2.1/Makefile (revision 34)
+++ radix-1.9/libs/gmp/6.2.1/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/GNU/gmp
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gmp/6.2.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/gmp/6.2.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/gmp/6.2.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/gmp
REQUIRES = libs/gmp/6.2.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/gmp/6.2.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/gmp/6.2.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/gmp/6.2.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/gmp
REQUIRES = libs/gmp/6.2.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/icu4c/73.1/Makefile
===================================================================
--- radix-1.9/libs/icu4c/73.1/Makefile (revision 34)
+++ radix-1.9/libs/icu4c/73.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/icu4c/73.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/icu4c/73.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/icu4c/73.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/icu4c
REQUIRES = libs/icu4c/73.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/icu4c/73.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/icu4c/73.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/icu4c/73.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/icu4c
REQUIRES = libs/icu4c/73.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/ijs/0.35/Makefile
===================================================================
--- radix-1.9/libs/ijs/0.35/Makefile (revision 34)
+++ radix-1.9/libs/ijs/0.35/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/ijs/0.35-ppc32/Makefile
===================================================================
--- radix-1.9/libs/ijs/0.35-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/ijs/0.35-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/ijs
REQUIRES = libs/ijs/0.35
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/ijs/0.35-x86_32/Makefile
===================================================================
--- radix-1.9/libs/ijs/0.35-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/ijs/0.35-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/ijs
REQUIRES = libs/ijs/0.35
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/jansson/2.13.1/Makefile
===================================================================
--- radix-1.9/libs/jansson/2.13.1/Makefile (revision 34)
+++ radix-1.9/libs/jansson/2.13.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/jemalloc/5.2.1/Makefile
===================================================================
--- radix-1.9/libs/jemalloc/5.2.1/Makefile (revision 34)
+++ radix-1.9/libs/jemalloc/5.2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
REQUIRES += dev/perl/5.36.0
Index: radix-1.9/libs/json-c/0.15/Makefile
===================================================================
--- radix-1.9/libs/json-c/0.15/Makefile (revision 34)
+++ radix-1.9/libs/json-c/0.15/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/json-c/0.15-ppc32/Makefile
===================================================================
--- radix-1.9/libs/json-c/0.15-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/json-c/0.15-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/json-c
REQUIRES = libs/json-c/0.15
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/json-c/0.15-x86_32/Makefile
===================================================================
--- radix-1.9/libs/json-c/0.15-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/json-c/0.15-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/json-c
REQUIRES = libs/json-c/0.15
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/judy/1.0.5/Makefile
===================================================================
--- radix-1.9/libs/judy/1.0.5/Makefile (revision 34)
+++ radix-1.9/libs/judy/1.0.5/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/keyutils/1.6.3/Makefile
===================================================================
--- radix-1.9/libs/keyutils/1.6.3/Makefile (revision 34)
+++ radix-1.9/libs/keyutils/1.6.3/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/keyutils/1.6.3-ppc32/Makefile
===================================================================
--- radix-1.9/libs/keyutils/1.6.3-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/keyutils/1.6.3-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/keyutils
REQUIRES = libs/keyutils/1.6.3
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/keyutils/1.6.3-x86_32/Makefile
===================================================================
--- radix-1.9/libs/keyutils/1.6.3-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/keyutils/1.6.3-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/keyutils
REQUIRES = libs/keyutils/1.6.3
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libaio/0.3.112/Makefile
===================================================================
--- radix-1.9/libs/libaio/0.3.112/Makefile (revision 34)
+++ radix-1.9/libs/libaio/0.3.112/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libaio/0.3.112-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libaio/0.3.112-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libaio/0.3.112-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libaio
REQUIRES = libs/libaio/0.3.112
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libaio/0.3.112-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libaio/0.3.112-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libaio/0.3.112-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libaio
REQUIRES = libs/libaio/0.3.112
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libdaemon/0.14/Makefile
===================================================================
--- radix-1.9/libs/libdaemon/0.14/Makefile (revision 34)
+++ radix-1.9/libs/libdaemon/0.14/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libdatrie/0.2.13/Makefile
===================================================================
--- radix-1.9/libs/libdatrie/0.2.13/Makefile (revision 34)
+++ radix-1.9/libs/libdatrie/0.2.13/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libdatrie/0.2.13-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libdatrie/0.2.13-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libdatrie/0.2.13-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libdatrie
REQUIRES = libs/libdatrie/0.2.13
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libdatrie/0.2.13-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libdatrie/0.2.13-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libdatrie/0.2.13-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libdatrie
REQUIRES = libs/libdatrie/0.2.13
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libexif/0.6.24/Makefile
===================================================================
--- radix-1.9/libs/libexif/0.6.24/Makefile (revision 34)
+++ radix-1.9/libs/libexif/0.6.24/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libexif/0.6.24-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libexif/0.6.24-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libexif/0.6.24-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/libexif
REQUIRES = libs/libexif/0.6.24
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libexif/0.6.24-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libexif/0.6.24-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libexif/0.6.24-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/libexif
REQUIRES = libs/libexif/0.6.24
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libffi/3.4.4/Makefile
===================================================================
--- radix-1.9/libs/libffi/3.4.4/Makefile (revision 34)
+++ radix-1.9/libs/libffi/3.4.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libffi/3.4.4-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libffi/3.4.4-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libffi/3.4.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libffi
REQUIRES = libs/libffi/3.4.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libffi/3.4.4-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libffi/3.4.4-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libffi/3.4.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libffi
REQUIRES = libs/libffi/3.4.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libidn/1.36/Makefile
===================================================================
--- radix-1.9/libs/libidn/1.36/Makefile (revision 34)
+++ radix-1.9/libs/libidn/1.36/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libidn/1.36-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libidn/1.36-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libidn/1.36-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/libidn
REQUIRES = libs/libidn/1.36
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libidn/1.36-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libidn/1.36-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libidn/1.36-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/libidn
REQUIRES = libs/libidn/1.36
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libiodbc/3.52.14/Makefile
===================================================================
--- radix-1.9/libs/libiodbc/3.52.14/Makefile (revision 34)
+++ radix-1.9/libs/libiodbc/3.52.14/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libjpeg-turbo/2.1.2/Makefile
===================================================================
--- radix-1.9/libs/libjpeg-turbo/2.1.2/Makefile (revision 34)
+++ radix-1.9/libs/libjpeg-turbo/2.1.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libjpeg-turbo/2.1.2-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libjpeg-turbo/2.1.2-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libjpeg-turbo/2.1.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libjpeg-turbo
REQUIRES = libs/libjpeg-turbo/2.1.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libjpeg-turbo/2.1.2-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libjpeg-turbo/2.1.2-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libjpeg-turbo/2.1.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libjpeg-turbo
REQUIRES = libs/libjpeg-turbo/2.1.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libmd/1.0.4/Makefile
===================================================================
--- radix-1.9/libs/libmd/1.0.4/Makefile (revision 34)
+++ radix-1.9/libs/libmd/1.0.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libmd/1.0.4-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libmd/1.0.4-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libmd/1.0.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libmd
REQUIRES = libs/libmd/1.0.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libmd/1.0.4-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libmd/1.0.4-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libmd/1.0.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libmd
REQUIRES = libs/libmd/1.0.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libpipeline/1.5.4/Makefile
===================================================================
--- radix-1.9/libs/libpipeline/1.5.4/Makefile (revision 34)
+++ radix-1.9/libs/libpipeline/1.5.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libraw1394/2.1.2/Makefile
===================================================================
--- radix-1.9/libs/libraw1394/2.1.2/Makefile (revision 34)
+++ radix-1.9/libs/libraw1394/2.1.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libraw1394/2.1.2-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libraw1394/2.1.2-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libraw1394/2.1.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/ieee1394/libraw1394
REQUIRES = libs/libraw1394/2.1.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libraw1394/2.1.2-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libraw1394/2.1.2-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libraw1394/2.1.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/ieee1394/libraw1394
REQUIRES = libs/libraw1394/2.1.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libsodium/1.0.18/Makefile
===================================================================
--- radix-1.9/libs/libsodium/1.0.18/Makefile (revision 34)
+++ radix-1.9/libs/libsodium/1.0.18/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libsodium/1.0.18-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libsodium/1.0.18-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libsodium/1.0.18-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libsodium
REQUIRES = libs/libsodium/1.0.18
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libsodium/1.0.18-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libsodium/1.0.18-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libsodium/1.0.18-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libsodium
REQUIRES = libs/libsodium/1.0.18
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libtasn1/4.16.0/Makefile
===================================================================
--- radix-1.9/libs/libtasn1/4.16.0/Makefile (revision 34)
+++ radix-1.9/libs/libtasn1/4.16.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libtasn1/4.16.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libtasn1/4.16.0-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libtasn1/4.16.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/libtasn1
REQUIRES = libs/libtasn1/4.16.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libtasn1/4.16.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libtasn1/4.16.0-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libtasn1/4.16.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/libtasn1
REQUIRES = libs/libtasn1/4.16.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libunistring/0.9.10/Makefile
===================================================================
--- radix-1.9/libs/libunistring/0.9.10/Makefile (revision 34)
+++ radix-1.9/libs/libunistring/0.9.10/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libunistring/0.9.10-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libunistring/0.9.10-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libunistring/0.9.10-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/GNU/libunistring
REQUIRES = libs/libunistring/0.9.10
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libunistring/0.9.10-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libunistring/0.9.10-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libunistring/0.9.10-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/GNU/libunistring
REQUIRES = libs/libunistring/0.9.10
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/liburing/2.1/Makefile
===================================================================
--- radix-1.9/libs/liburing/2.1/Makefile (revision 34)
+++ radix-1.9/libs/liburing/2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/liburing/2.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/liburing/2.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/liburing/2.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/liburing
REQUIRES = libs/liburing/2.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/liburing/2.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/liburing/2.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/liburing/2.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/liburing
REQUIRES = libs/liburing/2.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libuv/1.41.0/Makefile
===================================================================
--- radix-1.9/libs/libuv/1.41.0/Makefile (revision 34)
+++ radix-1.9/libs/libuv/1.41.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libuv/1.41.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libuv/1.41.0-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libuv/1.41.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libuv
REQUIRES = libs/libuv/1.41.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libuv/1.41.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libuv/1.41.0-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libuv/1.41.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libuv
REQUIRES = libs/libuv/1.41.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libvisual/0.4.1/Makefile
===================================================================
--- radix-1.9/libs/libvisual/0.4.1/Makefile (revision 34)
+++ radix-1.9/libs/libvisual/0.4.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
#
Index: radix-1.9/libs/libvisual/0.4.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libvisual/0.4.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libvisual/0.4.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libvisual
REQUIRES = libs/libvisual/0.4.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libvisual/0.4.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libvisual/0.4.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libvisual/0.4.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libvisual
REQUIRES = libs/libvisual/0.4.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libyaml/0.2.5/Makefile
===================================================================
--- radix-1.9/libs/libyaml/0.2.5/Makefile (revision 34)
+++ radix-1.9/libs/libyaml/0.2.5/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libyaml/0.2.5-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libyaml/0.2.5-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/libyaml/0.2.5-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/libyaml
REQUIRES = libs/libyaml/0.2.5
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libyaml/0.2.5-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libyaml/0.2.5-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/libyaml/0.2.5-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/libyaml
REQUIRES = libs/libyaml/0.2.5
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/lz4/1.9.4/Makefile
===================================================================
--- radix-1.9/libs/lz4/1.9.4/Makefile (revision 34)
+++ radix-1.9/libs/lz4/1.9.4/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/l/lz4
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/lz4/1.9.4-ppc32/Makefile
===================================================================
--- radix-1.9/libs/lz4/1.9.4-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/lz4/1.9.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/lz4
REQUIRES = libs/lz4/1.9.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/lz4/1.9.4-x86_32/Makefile
===================================================================
--- radix-1.9/libs/lz4/1.9.4-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/lz4/1.9.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/lz4
REQUIRES = libs/lz4/1.9.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/lzo/2.10/Makefile
===================================================================
--- radix-1.9/libs/lzo/2.10/Makefile (revision 34)
+++ radix-1.9/libs/lzo/2.10/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/l/lzo
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/lzo/2.10-ppc32/Makefile
===================================================================
--- radix-1.9/libs/lzo/2.10-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/lzo/2.10-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/lzo
REQUIRES = libs/lzo/2.10
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/lzo/2.10-x86_32/Makefile
===================================================================
--- radix-1.9/libs/lzo/2.10-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/lzo/2.10-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/lzo
REQUIRES = libs/lzo/2.10
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/md4c/0.4.8/Makefile
===================================================================
--- radix-1.9/libs/md4c/0.4.8/Makefile (revision 34)
+++ radix-1.9/libs/md4c/0.4.8/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/md4c/0.4.8-ppc32/Makefile
===================================================================
--- radix-1.9/libs/md4c/0.4.8-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/md4c/0.4.8-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/md4c
REQUIRES = libs/md4c/0.4.8
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/md4c/0.4.8-x86_32/Makefile
===================================================================
--- radix-1.9/libs/md4c/0.4.8-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/md4c/0.4.8-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/md4c
REQUIRES = libs/md4c/0.4.8
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/oniguruma/6.9.7.1/Makefile
===================================================================
--- radix-1.9/libs/oniguruma/6.9.7.1/Makefile (revision 34)
+++ radix-1.9/libs/oniguruma/6.9.7.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/oniguruma/6.9.7.1-ppc32/Makefile
===================================================================
--- radix-1.9/libs/oniguruma/6.9.7.1-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/oniguruma/6.9.7.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/oniguruma
REQUIRES = libs/oniguruma/6.9.7.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/oniguruma/6.9.7.1-x86_32/Makefile
===================================================================
--- radix-1.9/libs/oniguruma/6.9.7.1-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/oniguruma/6.9.7.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/oniguruma
REQUIRES = libs/oniguruma/6.9.7.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/popt/1.18/Makefile
===================================================================
--- radix-1.9/libs/popt/1.18/Makefile (revision 34)
+++ radix-1.9/libs/popt/1.18/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/popt/1.18-ppc32/Makefile
===================================================================
--- radix-1.9/libs/popt/1.18-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/popt/1.18-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/popt
REQUIRES = libs/popt/1.18
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/popt/1.18-x86_32/Makefile
===================================================================
--- radix-1.9/libs/popt/1.18-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/popt/1.18-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/popt
REQUIRES = libs/popt/1.18
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/sbc/2.0/Makefile
===================================================================
--- radix-1.9/libs/sbc/2.0/Makefile (revision 34)
+++ radix-1.9/libs/sbc/2.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/sbc/2.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/sbc/2.0-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/sbc/2.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/sbc
REQUIRES = libs/sbc/2.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/sbc/2.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/sbc/2.0-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/sbc/2.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/sbc
REQUIRES = libs/sbc/2.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/sg3_utils/1.45/Makefile
===================================================================
--- radix-1.9/libs/sg3_utils/1.45/Makefile (revision 34)
+++ radix-1.9/libs/sg3_utils/1.45/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/sg3_utils/1.45-ppc32/Makefile
===================================================================
--- radix-1.9/libs/sg3_utils/1.45-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/sg3_utils/1.45-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/sg3_utils
REQUIRES = libs/sg3_utils/1.45
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/sg3_utils/1.45-x86_32/Makefile
===================================================================
--- radix-1.9/libs/sg3_utils/1.45-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/sg3_utils/1.45-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/sg3_utils
REQUIRES = libs/sg3_utils/1.45
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/tidy-html5/5.8.0/Makefile
===================================================================
--- radix-1.9/libs/tidy-html5/5.8.0/Makefile (revision 34)
+++ radix-1.9/libs/tidy-html5/5.8.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/tidy-html5/5.8.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/tidy-html5/5.8.0-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/tidy-html5/5.8.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/tidy-html5
REQUIRES = libs/tidy-html5/5.8.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/tidy-html5/5.8.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/tidy-html5/5.8.0-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/tidy-html5/5.8.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/tidy-html5
REQUIRES = libs/tidy-html5/5.8.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/tslib/1.22/Makefile
===================================================================
--- radix-1.9/libs/tslib/1.22/Makefile (revision 34)
+++ radix-1.9/libs/tslib/1.22/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/tslib/1.22-ppc32/Makefile
===================================================================
--- radix-1.9/libs/tslib/1.22-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/tslib/1.22-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/tslib
REQUIRES = libs/tslib/1.22
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/tslib/1.22-x86_32/Makefile
===================================================================
--- radix-1.9/libs/tslib/1.22-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/tslib/1.22-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/tslib
REQUIRES = libs/tslib/1.22
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/utf8proc/2.7.0/Makefile
===================================================================
--- radix-1.9/libs/utf8proc/2.7.0/Makefile (revision 34)
+++ radix-1.9/libs/utf8proc/2.7.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/utf8proc/2.7.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/utf8proc/2.7.0-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/utf8proc/2.7.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/utf8proc
REQUIRES = libs/utf8proc/2.7.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/utf8proc/2.7.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/utf8proc/2.7.0-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/utf8proc/2.7.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/utf8proc
REQUIRES = libs/utf8proc/2.7.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/zlib/1.2.13/Makefile
===================================================================
--- radix-1.9/libs/zlib/1.2.13/Makefile (revision 34)
+++ radix-1.9/libs/zlib/1.2.13/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/l/zlib
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/zlib/1.2.13-ppc32/Makefile
===================================================================
--- radix-1.9/libs/zlib/1.2.13-ppc32/Makefile (revision 34)
+++ radix-1.9/libs/zlib/1.2.13-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/l/zlib
REQUIRES = libs/zlib/1.2.13
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/zlib/1.2.13-x86_32/Makefile
===================================================================
--- radix-1.9/libs/zlib/1.2.13-x86_32/Makefile (revision 34)
+++ radix-1.9/libs/zlib/1.2.13-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/l/zlib
REQUIRES = libs/zlib/1.2.13
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/cdparanoia/10.2/Makefile
===================================================================
--- radix-1.9/media/cdparanoia/10.2/Makefile (revision 34)
+++ radix-1.9/media/cdparanoia/10.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/cdparanoia/10.2-ppc32/Makefile
===================================================================
--- radix-1.9/media/cdparanoia/10.2-ppc32/Makefile (revision 34)
+++ radix-1.9/media/cdparanoia/10.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/cdparanoia
REQUIRES = media/cdparanoia/10.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/cdparanoia/10.2-x86_32/Makefile
===================================================================
--- radix-1.9/media/cdparanoia/10.2-x86_32/Makefile (revision 34)
+++ radix-1.9/media/cdparanoia/10.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/cdparanoia
REQUIRES = media/cdparanoia/10.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/dcadec/0.2.0/Makefile
===================================================================
--- radix-1.9/media/dcadec/0.2.0/Makefile (revision 34)
+++ radix-1.9/media/dcadec/0.2.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/dcadec/0.2.0-ppc32/Makefile
===================================================================
--- radix-1.9/media/dcadec/0.2.0-ppc32/Makefile (revision 34)
+++ radix-1.9/media/dcadec/0.2.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/dcadec
REQUIRES = media/dcadec/0.2.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/dcadec/0.2.0-x86_32/Makefile
===================================================================
--- radix-1.9/media/dcadec/0.2.0-x86_32/Makefile (revision 34)
+++ radix-1.9/media/dcadec/0.2.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/dcadec
REQUIRES = media/dcadec/0.2.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/faac/1.30/Makefile
===================================================================
--- radix-1.9/media/faac/1.30/Makefile (revision 34)
+++ radix-1.9/media/faac/1.30/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/faac/1.30-ppc32/Makefile
===================================================================
--- radix-1.9/media/faac/1.30-ppc32/Makefile (revision 34)
+++ radix-1.9/media/faac/1.30-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/audiocoding/faac
REQUIRES = media/faac/1.30
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/faac/1.30-x86_32/Makefile
===================================================================
--- radix-1.9/media/faac/1.30-x86_32/Makefile (revision 34)
+++ radix-1.9/media/faac/1.30-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/audiocoding/faac
REQUIRES = media/faac/1.30
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/faad2/2.10.1/Makefile
===================================================================
--- radix-1.9/media/faad2/2.10.1/Makefile (revision 34)
+++ radix-1.9/media/faad2/2.10.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/faad2/2.10.1-ppc32/Makefile
===================================================================
--- radix-1.9/media/faad2/2.10.1-ppc32/Makefile (revision 34)
+++ radix-1.9/media/faad2/2.10.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/audiocoding/faac
REQUIRES = media/faad2/2.10.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/faad2/2.10.1-x86_32/Makefile
===================================================================
--- radix-1.9/media/faad2/2.10.1-x86_32/Makefile (revision 34)
+++ radix-1.9/media/faad2/2.10.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/audiocoding/faac
REQUIRES = media/faad2/2.10.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/fdk-aac/2.0.2/Makefile
===================================================================
--- radix-1.9/media/fdk-aac/2.0.2/Makefile (revision 34)
+++ radix-1.9/media/fdk-aac/2.0.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/fdk-aac/2.0.2-ppc32/Makefile
===================================================================
--- radix-1.9/media/fdk-aac/2.0.2-ppc32/Makefile (revision 34)
+++ radix-1.9/media/fdk-aac/2.0.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/fdk-aac
REQUIRES = media/fdk-aac/2.0.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/fdk-aac/2.0.2-x86_32/Makefile
===================================================================
--- radix-1.9/media/fdk-aac/2.0.2-x86_32/Makefile (revision 34)
+++ radix-1.9/media/fdk-aac/2.0.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/fdk-aac
REQUIRES = media/fdk-aac/2.0.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/gsm/1.0.22/Makefile
===================================================================
--- radix-1.9/media/gsm/1.0.22/Makefile (revision 34)
+++ radix-1.9/media/gsm/1.0.22/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/gsm/1.0.22-ppc32/Makefile
===================================================================
--- radix-1.9/media/gsm/1.0.22-ppc32/Makefile (revision 34)
+++ radix-1.9/media/gsm/1.0.22-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/gsm
REQUIRES = media/gsm/1.0.22
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/gsm/1.0.22-x86_32/Makefile
===================================================================
--- radix-1.9/media/gsm/1.0.22-x86_32/Makefile (revision 34)
+++ radix-1.9/media/gsm/1.0.22-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/gsm
REQUIRES = media/gsm/1.0.22
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libavtp/0.2.0/Makefile
===================================================================
--- radix-1.9/media/libavtp/0.2.0/Makefile (revision 34)
+++ radix-1.9/media/libavtp/0.2.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libavtp/0.2.0-ppc32/Makefile
===================================================================
--- radix-1.9/media/libavtp/0.2.0-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libavtp/0.2.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/libavtp
REQUIRES = media/libavtp/0.2.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libavtp/0.2.0-x86_32/Makefile
===================================================================
--- radix-1.9/media/libavtp/0.2.0-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libavtp/0.2.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/libavtp
REQUIRES = media/libavtp/0.2.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libmad/0.15.1b/Makefile
===================================================================
--- radix-1.9/media/libmad/0.15.1b/Makefile (revision 34)
+++ radix-1.9/media/libmad/0.15.1b/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libmad/0.15.1b-ppc32/Makefile
===================================================================
--- radix-1.9/media/libmad/0.15.1b-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libmad/0.15.1b-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/mad/libmad
REQUIRES = media/libmad/0.15.1b
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libmad/0.15.1b-x86_32/Makefile
===================================================================
--- radix-1.9/media/libmad/0.15.1b-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libmad/0.15.1b-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/mad/libmad
REQUIRES = media/libmad/0.15.1b
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libmodplug/0.8.9.0/Makefile
===================================================================
--- radix-1.9/media/libmodplug/0.8.9.0/Makefile (revision 34)
+++ radix-1.9/media/libmodplug/0.8.9.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libmodplug/0.8.9.0-ppc32/Makefile
===================================================================
--- radix-1.9/media/libmodplug/0.8.9.0-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libmodplug/0.8.9.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/libmodplug
REQUIRES = media/libmodplug/0.8.9.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libmodplug/0.8.9.0-x86_32/Makefile
===================================================================
--- radix-1.9/media/libmodplug/0.8.9.0-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libmodplug/0.8.9.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/libmodplug
REQUIRES = media/libmodplug/0.8.9.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libogg/1.3.5/Makefile
===================================================================
--- radix-1.9/media/libogg/1.3.5/Makefile (revision 34)
+++ radix-1.9/media/libogg/1.3.5/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libogg/1.3.5-ppc32/Makefile
===================================================================
--- radix-1.9/media/libogg/1.3.5-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libogg/1.3.5-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/libogg
REQUIRES = media/libogg/1.3.5
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libogg/1.3.5-x86_32/Makefile
===================================================================
--- radix-1.9/media/libogg/1.3.5-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libogg/1.3.5-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/libogg
REQUIRES = media/libogg/1.3.5
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libomxil-bellagio/0.9.3/Makefile
===================================================================
--- radix-1.9/media/libomxil-bellagio/0.9.3/Makefile (revision 34)
+++ radix-1.9/media/libomxil-bellagio/0.9.3/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libomxil-bellagio/0.9.3-ppc32/Makefile
===================================================================
--- radix-1.9/media/libomxil-bellagio/0.9.3-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libomxil-bellagio/0.9.3-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/OpenMAX/libomxil-bellagio
REQUIRES = media/libomxil-bellagio/0.9.3
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libomxil-bellagio/0.9.3-x86_32/Makefile
===================================================================
--- radix-1.9/media/libomxil-bellagio/0.9.3-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libomxil-bellagio/0.9.3-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/OpenMAX/libomxil-bellagio
REQUIRES = media/libomxil-bellagio/0.9.3
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libsoxr/0.1.3/Makefile
===================================================================
--- radix-1.9/media/libsoxr/0.1.3/Makefile (revision 34)
+++ radix-1.9/media/libsoxr/0.1.3/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES += libs/glibc/2.36
+REQUIRES += libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libsoxr/0.1.3-ppc32/Makefile
===================================================================
--- radix-1.9/media/libsoxr/0.1.3-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libsoxr/0.1.3-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/libsoxr
REQUIRES = media/libsoxr/0.1.3
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libsoxr/0.1.3-x86_32/Makefile
===================================================================
--- radix-1.9/media/libsoxr/0.1.3-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libsoxr/0.1.3-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/libsoxr
REQUIRES = media/libsoxr/0.1.3
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libvidstab/1.1.0/Makefile
===================================================================
--- radix-1.9/media/libvidstab/1.1.0/Makefile (revision 34)
+++ radix-1.9/media/libvidstab/1.1.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES += libs/glibc/2.36
+REQUIRES += libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libvidstab/1.1.0-ppc32/Makefile
===================================================================
--- radix-1.9/media/libvidstab/1.1.0-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libvidstab/1.1.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/vid-stab
REQUIRES = media/libvidstab/1.1.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libvidstab/1.1.0-x86_32/Makefile
===================================================================
--- radix-1.9/media/libvidstab/1.1.0-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libvidstab/1.1.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/vid-stab
REQUIRES = media/libvidstab/1.1.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libvpx/1.12.0/Makefile
===================================================================
--- radix-1.9/media/libvpx/1.12.0/Makefile (revision 34)
+++ radix-1.9/media/libvpx/1.12.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libvpx/1.12.0-ppc32/Makefile
===================================================================
--- radix-1.9/media/libvpx/1.12.0-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libvpx/1.12.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/libvpx
REQUIRES = media/libvpx/1.12.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libvpx/1.12.0-x86_32/Makefile
===================================================================
--- radix-1.9/media/libvpx/1.12.0-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libvpx/1.12.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/libvpx
REQUIRES = media/libvpx/1.12.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libx264/0.164.20221217/Makefile
===================================================================
--- radix-1.9/media/libx264/0.164.20221217/Makefile (revision 34)
+++ radix-1.9/media/libx264/0.164.20221217/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libx264/0.164.20221217-ppc32/Makefile
===================================================================
--- radix-1.9/media/libx264/0.164.20221217-ppc32/Makefile (revision 34)
+++ radix-1.9/media/libx264/0.164.20221217-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/VideoLAN/x264
REQUIRES = media/libx264/0.164.20221217
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/libx264/0.164.20221217-x86_32/Makefile
===================================================================
--- radix-1.9/media/libx264/0.164.20221217-x86_32/Makefile (revision 34)
+++ radix-1.9/media/libx264/0.164.20221217-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/VideoLAN/x264
REQUIRES = media/libx264/0.164.20221217
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/mp4v2/2.1.1/Makefile
===================================================================
--- radix-1.9/media/mp4v2/2.1.1/Makefile (revision 34)
+++ radix-1.9/media/mp4v2/2.1.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/mp4v2/2.1.1-ppc32/Makefile
===================================================================
--- radix-1.9/media/mp4v2/2.1.1-ppc32/Makefile (revision 34)
+++ radix-1.9/media/mp4v2/2.1.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/mp4v2
REQUIRES = media/mp4v2/2.1.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/mp4v2/2.1.1-x86_32/Makefile
===================================================================
--- radix-1.9/media/mp4v2/2.1.1-x86_32/Makefile (revision 34)
+++ radix-1.9/media/mp4v2/2.1.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/mp4v2
REQUIRES = media/mp4v2/2.1.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/opencore-amr/0.1.6/Makefile
===================================================================
--- radix-1.9/media/opencore-amr/0.1.6/Makefile (revision 34)
+++ radix-1.9/media/opencore-amr/0.1.6/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/opencore-amr/0.1.6-ppc32/Makefile
===================================================================
--- radix-1.9/media/opencore-amr/0.1.6-ppc32/Makefile (revision 34)
+++ radix-1.9/media/opencore-amr/0.1.6-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/opencore-amr
REQUIRES = media/opencore-amr/0.1.6
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/opencore-amr/0.1.6-x86_32/Makefile
===================================================================
--- radix-1.9/media/opencore-amr/0.1.6-x86_32/Makefile (revision 34)
+++ radix-1.9/media/opencore-amr/0.1.6-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/opencore-amr
REQUIRES = media/opencore-amr/0.1.6
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/openh264/2.3.1/Makefile
===================================================================
--- radix-1.9/media/openh264/2.3.1/Makefile (revision 34)
+++ radix-1.9/media/openh264/2.3.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES += libs/glibc/2.36
+REQUIRES += libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/openh264/2.3.1-ppc32/Makefile
===================================================================
--- radix-1.9/media/openh264/2.3.1-ppc32/Makefile (revision 34)
+++ radix-1.9/media/openh264/2.3.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/VideoLAN/x264
REQUIRES = media/openh264/2.3.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/openh264/2.3.1-x86_32/Makefile
===================================================================
--- radix-1.9/media/openh264/2.3.1-x86_32/Makefile (revision 34)
+++ radix-1.9/media/openh264/2.3.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/VideoLAN/x264
REQUIRES = media/openh264/2.3.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/opus/1.3.1/Makefile
===================================================================
--- radix-1.9/media/opus/1.3.1/Makefile (revision 34)
+++ radix-1.9/media/opus/1.3.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/opus/1.3.1-ppc32/Makefile
===================================================================
--- radix-1.9/media/opus/1.3.1-ppc32/Makefile (revision 34)
+++ radix-1.9/media/opus/1.3.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/opus
REQUIRES = media/opus/1.3.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/opus/1.3.1-x86_32/Makefile
===================================================================
--- radix-1.9/media/opus/1.3.1-x86_32/Makefile (revision 34)
+++ radix-1.9/media/opus/1.3.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/opus
REQUIRES = media/opus/1.3.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/speexdsp/1.2.1/Makefile
===================================================================
--- radix-1.9/media/speexdsp/1.2.1/Makefile (revision 34)
+++ radix-1.9/media/speexdsp/1.2.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/speexdsp/1.2.1-ppc32/Makefile
===================================================================
--- radix-1.9/media/speexdsp/1.2.1-ppc32/Makefile (revision 34)
+++ radix-1.9/media/speexdsp/1.2.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/speexdsp
REQUIRES = media/speexdsp/1.2.1
-REQUIRES = libs/glibc/2.36-ppc32
+REQUIRES = libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/speexdsp/1.2.1-x86_32/Makefile
===================================================================
--- radix-1.9/media/speexdsp/1.2.1-x86_32/Makefile (revision 34)
+++ radix-1.9/media/speexdsp/1.2.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/xiph/speexdsp
REQUIRES = media/speexdsp/1.2.1
-REQUIRES = libs/glibc/2.36-x86_32
+REQUIRES = libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/vo-aacenc/0.1.3/Makefile
===================================================================
--- radix-1.9/media/vo-aacenc/0.1.3/Makefile (revision 34)
+++ radix-1.9/media/vo-aacenc/0.1.3/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/vo-aacenc/0.1.3-ppc32/Makefile
===================================================================
--- radix-1.9/media/vo-aacenc/0.1.3-ppc32/Makefile (revision 34)
+++ radix-1.9/media/vo-aacenc/0.1.3-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/vo-aacenc
REQUIRES = media/vo-aacenc/0.1.3
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/vo-aacenc/0.1.3-x86_32/Makefile
===================================================================
--- radix-1.9/media/vo-aacenc/0.1.3-x86_32/Makefile (revision 34)
+++ radix-1.9/media/vo-aacenc/0.1.3-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/vo-aacenc
REQUIRES = media/vo-aacenc/0.1.3
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/vo-amrwbenc/0.1.3/Makefile
===================================================================
--- radix-1.9/media/vo-amrwbenc/0.1.3/Makefile (revision 34)
+++ radix-1.9/media/vo-amrwbenc/0.1.3/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/vo-amrwbenc/0.1.3-ppc32/Makefile
===================================================================
--- radix-1.9/media/vo-amrwbenc/0.1.3-ppc32/Makefile (revision 34)
+++ radix-1.9/media/vo-amrwbenc/0.1.3-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/vo-amrwbenc
REQUIRES = media/vo-amrwbenc/0.1.3
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/vo-amrwbenc/0.1.3-x86_32/Makefile
===================================================================
--- radix-1.9/media/vo-amrwbenc/0.1.3-x86_32/Makefile (revision 34)
+++ radix-1.9/media/vo-amrwbenc/0.1.3-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/amr/vo-amrwbenc
REQUIRES = media/vo-amrwbenc/0.1.3
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/wavpack/5.6.0/Makefile
===================================================================
--- radix-1.9/media/wavpack/5.6.0/Makefile (revision 34)
+++ radix-1.9/media/wavpack/5.6.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/wavpack/5.6.0-ppc32/Makefile
===================================================================
--- radix-1.9/media/wavpack/5.6.0-ppc32/Makefile (revision 34)
+++ radix-1.9/media/wavpack/5.6.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/wavpack
REQUIRES = media/wavpack/5.6.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/wavpack/5.6.0-x86_32/Makefile
===================================================================
--- radix-1.9/media/wavpack/5.6.0-x86_32/Makefile (revision 34)
+++ radix-1.9/media/wavpack/5.6.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/wavpack
REQUIRES = media/wavpack/5.6.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/x265/3.5/Makefile
===================================================================
--- radix-1.9/media/x265/3.5/Makefile (revision 34)
+++ radix-1.9/media/x265/3.5/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/x265/3.5-ppc32/Makefile
===================================================================
--- radix-1.9/media/x265/3.5-ppc32/Makefile (revision 34)
+++ radix-1.9/media/x265/3.5-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/VideoLAN/x265
REQUIRES = media/x265/3.5
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/x265/3.5-x86_32/Makefile
===================================================================
--- radix-1.9/media/x265/3.5-x86_32/Makefile (revision 34)
+++ radix-1.9/media/x265/3.5-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/VideoLAN/x265
REQUIRES = media/x265/3.5
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/xvidcore/1.3.7/Makefile
===================================================================
--- radix-1.9/media/xvidcore/1.3.7/Makefile (revision 34)
+++ radix-1.9/media/xvidcore/1.3.7/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/xvidcore/1.3.7-ppc32/Makefile
===================================================================
--- radix-1.9/media/xvidcore/1.3.7-ppc32/Makefile (revision 34)
+++ radix-1.9/media/xvidcore/1.3.7-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/m/xvidcore
REQUIRES = media/xvidcore/1.3.7
-REQUIRES = libs/glibc/2.36-ppc32
+REQUIRES = libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/xvidcore/1.3.7-x86_32/Makefile
===================================================================
--- radix-1.9/media/xvidcore/1.3.7-x86_32/Makefile (revision 34)
+++ radix-1.9/media/xvidcore/1.3.7-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/m/xvidcore
REQUIRES = media/xvidcore/1.3.7
-REQUIRES = libs/glibc/2.36-x86_32
+REQUIRES = libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/biff+comsat/0.17/Makefile
===================================================================
--- radix-1.9/net/biff+comsat/0.17/Makefile (revision 34)
+++ radix-1.9/net/biff+comsat/0.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/bridge-utils/1.7.1/Makefile
===================================================================
--- radix-1.9/net/bridge-utils/1.7.1/Makefile (revision 34)
+++ radix-1.9/net/bridge-utils/1.7.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/bsd-finger/0.17/Makefile
===================================================================
--- radix-1.9/net/bsd-finger/0.17/Makefile (revision 34)
+++ radix-1.9/net/bsd-finger/0.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/geoip/1.16.2/Makefile
===================================================================
--- radix-1.9/net/geoip/1.16.2/Makefile (revision 34)
+++ radix-1.9/net/geoip/1.16.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/geoip/1.16.2-ppc32/Makefile
===================================================================
--- radix-1.9/net/geoip/1.16.2-ppc32/Makefile (revision 34)
+++ radix-1.9/net/geoip/1.16.2-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/geoip
REQUIRES = net/geoip/1.16.2
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/geoip/1.16.2-x86_32/Makefile
===================================================================
--- radix-1.9/net/geoip/1.16.2-x86_32/Makefile (revision 34)
+++ radix-1.9/net/geoip/1.16.2-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/geoip
REQUIRES = net/geoip/1.16.2
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/icmpinfo/1.11/Makefile
===================================================================
--- radix-1.9/net/icmpinfo/1.11/Makefile (revision 34)
+++ radix-1.9/net/icmpinfo/1.11/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libgpg-error/1.41/Makefile
===================================================================
--- radix-1.9/net/libgpg-error/1.41/Makefile (revision 34)
+++ radix-1.9/net/libgpg-error/1.41/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libgpg-error/1.41-ppc32/Makefile
===================================================================
--- radix-1.9/net/libgpg-error/1.41-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libgpg-error/1.41-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libgpg-error
REQUIRES = net/libgpg-error/1.41
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libgpg-error/1.41-x86_32/Makefile
===================================================================
--- radix-1.9/net/libgpg-error/1.41-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libgpg-error/1.41-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libgpg-error
REQUIRES = net/libgpg-error/1.41
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmaxminddb/1.6.0/Makefile
===================================================================
--- radix-1.9/net/libmaxminddb/1.6.0/Makefile (revision 34)
+++ radix-1.9/net/libmaxminddb/1.6.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmaxminddb/1.6.0-ppc32/Makefile
===================================================================
--- radix-1.9/net/libmaxminddb/1.6.0-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libmaxminddb/1.6.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libmaxminddb
REQUIRES = net/libmaxminddb/1.6.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmaxminddb/1.6.0-x86_32/Makefile
===================================================================
--- radix-1.9/net/libmaxminddb/1.6.0-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libmaxminddb/1.6.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libmaxminddb
REQUIRES = net/libmaxminddb/1.6.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmilter/8.17.1/Makefile
===================================================================
--- radix-1.9/net/libmilter/8.17.1/Makefile (revision 34)
+++ radix-1.9/net/libmilter/8.17.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmnl/1.0.4/Makefile
===================================================================
--- radix-1.9/net/libmnl/1.0.4/Makefile (revision 34)
+++ radix-1.9/net/libmnl/1.0.4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmnl/1.0.4-ppc32/Makefile
===================================================================
--- radix-1.9/net/libmnl/1.0.4-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libmnl/1.0.4-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libmnl
REQUIRES = net/libmnl/1.0.4
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libmnl/1.0.4-x86_32/Makefile
===================================================================
--- radix-1.9/net/libmnl/1.0.4-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libmnl/1.0.4-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libmnl
REQUIRES = net/libmnl/1.0.4
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libndp/1.7/Makefile
===================================================================
--- radix-1.9/net/libndp/1.7/Makefile (revision 34)
+++ radix-1.9/net/libndp/1.7/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libndp/1.7-ppc32/Makefile
===================================================================
--- radix-1.9/net/libndp/1.7-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libndp/1.7-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libndp
REQUIRES = net/libndp/1.7
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libndp/1.7-x86_32/Makefile
===================================================================
--- radix-1.9/net/libndp/1.7-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libndp/1.7-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libndp
REQUIRES = net/libndp/1.7
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libnfnetlink/1.0.1/Makefile
===================================================================
--- radix-1.9/net/libnfnetlink/1.0.1/Makefile (revision 34)
+++ radix-1.9/net/libnfnetlink/1.0.1/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libnfnetlink/1.0.1-ppc32/Makefile
===================================================================
--- radix-1.9/net/libnfnetlink/1.0.1-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libnfnetlink/1.0.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libnfnetlink
REQUIRES = net/libnfnetlink/1.0.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libnfnetlink/1.0.1-x86_32/Makefile
===================================================================
--- radix-1.9/net/libnfnetlink/1.0.1-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libnfnetlink/1.0.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libnfnetlink
REQUIRES = net/libnfnetlink/1.0.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libnl3/3.5.0/Makefile
===================================================================
--- radix-1.9/net/libnl3/3.5.0/Makefile (revision 34)
+++ radix-1.9/net/libnl3/3.5.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libnl3/3.5.0-ppc32/Makefile
===================================================================
--- radix-1.9/net/libnl3/3.5.0-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libnl3/3.5.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libnl3
REQUIRES = net/libnl3/3.5.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libnl3/3.5.0-x86_32/Makefile
===================================================================
--- radix-1.9/net/libnl3/3.5.0-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libnl3/3.5.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libnl3
REQUIRES = net/libnl3/3.5.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libtirpc/1.3.1/Makefile
===================================================================
--- radix-1.9/net/libtirpc/1.3.1/Makefile (revision 34)
+++ radix-1.9/net/libtirpc/1.3.1/Makefile (revision 35)
@@ -55,7 +55,7 @@
SOURCE_REQUIRES = sources/packages/n/libtirpc
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libtirpc/1.3.1-ppc32/Makefile
===================================================================
--- radix-1.9/net/libtirpc/1.3.1-ppc32/Makefile (revision 34)
+++ radix-1.9/net/libtirpc/1.3.1-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/libtirpc
REQUIRES = net/libtirpc/1.3.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/libtirpc/1.3.1-x86_32/Makefile
===================================================================
--- radix-1.9/net/libtirpc/1.3.1-x86_32/Makefile (revision 34)
+++ radix-1.9/net/libtirpc/1.3.1-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/libtirpc
REQUIRES = net/libtirpc/1.3.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/net-tools/1.60/Makefile
===================================================================
--- radix-1.9/net/net-tools/1.60/Makefile (revision 34)
+++ radix-1.9/net/net-tools/1.60/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/netdate/4/Makefile
===================================================================
--- radix-1.9/net/netdate/4/Makefile (revision 34)
+++ radix-1.9/net/netdate/4/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/netkit-routed/0.17/Makefile
===================================================================
--- radix-1.9/net/netkit-routed/0.17/Makefile (revision 34)
+++ radix-1.9/net/netkit-routed/0.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/netkit-rwho/0.17/Makefile
===================================================================
--- radix-1.9/net/netkit-rwho/0.17/Makefile (revision 34)
+++ radix-1.9/net/netkit-rwho/0.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/netkit-timed/0.17/Makefile
===================================================================
--- radix-1.9/net/netkit-timed/0.17/Makefile (revision 34)
+++ radix-1.9/net/netkit-timed/0.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/netwrite/0.17/Makefile
===================================================================
--- radix-1.9/net/netwrite/0.17/Makefile (revision 34)
+++ radix-1.9/net/netwrite/0.17/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/nghttp2/1.43.0/Makefile
===================================================================
--- radix-1.9/net/nghttp2/1.43.0/Makefile (revision 34)
+++ radix-1.9/net/nghttp2/1.43.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/nghttp2/1.43.0-ppc32/Makefile
===================================================================
--- radix-1.9/net/nghttp2/1.43.0-ppc32/Makefile (revision 34)
+++ radix-1.9/net/nghttp2/1.43.0-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/nghttp2
REQUIRES = net/nghttp2/1.43.0
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/nghttp2/1.43.0-x86_32/Makefile
===================================================================
--- radix-1.9/net/nghttp2/1.43.0-x86_32/Makefile (revision 34)
+++ radix-1.9/net/nghttp2/1.43.0-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/nghttp2
REQUIRES = net/nghttp2/1.43.0
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/npth/1.6/Makefile
===================================================================
--- radix-1.9/net/npth/1.6/Makefile (revision 34)
+++ radix-1.9/net/npth/1.6/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/npth/1.6-ppc32/Makefile
===================================================================
--- radix-1.9/net/npth/1.6-ppc32/Makefile (revision 34)
+++ radix-1.9/net/npth/1.6-ppc32/Makefile (revision 35)
@@ -16,7 +16,7 @@
SOURCE_REQUIRES = sources/packages/n/npth
REQUIRES = net/npth/1.6
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/npth/1.6-x86_32/Makefile
===================================================================
--- radix-1.9/net/npth/1.6-x86_32/Makefile (revision 34)
+++ radix-1.9/net/npth/1.6-x86_32/Makefile (revision 35)
@@ -13,7 +13,7 @@
SOURCE_REQUIRES = sources/packages/n/npth
REQUIRES = net/npth/1.6
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/nspr/4.35/Makefile
===================================================================
--- radix-1.9/net/nspr/4.35/Makefile (revision 34)
+++ radix-1.9/net/nspr/4.35/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/rfkill/1.0/Makefile
===================================================================
--- radix-1.9/net/rfkill/1.0/Makefile (revision 34)
+++ radix-1.9/net/rfkill/1.0/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/rpcsvc-proto/1.4.2/Makefile
===================================================================
--- radix-1.9/net/rpcsvc-proto/1.4.2/Makefile (revision 34)
+++ radix-1.9/net/rpcsvc-proto/1.4.2/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/net/wireless-tools/30/Makefile
===================================================================
--- radix-1.9/net/wireless-tools/30/Makefile (revision 34)
+++ radix-1.9/net/wireless-tools/30/Makefile (revision 35)
@@ -58,7 +58,7 @@
ifeq ($(__USE_BUILT_GCC_LIBS__),yes)
REQUIRES = dev/gcc/12.2.0
else
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
endif
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/products/base/Makefile
===================================================================
--- radix-1.9/products/base/Makefile (revision 34)
+++ radix-1.9/products/base/Makefile (revision 35)
@@ -101,12 +101,12 @@
# ...
#
-REQUIRES += libs/glibc/2.36-zoneinfo/2022f
+REQUIRES += libs/glibc/2.37-zoneinfo/2022f
ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) $(TOOLCHAIN_POWER9_GLIBC)),)
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
endif
ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC)),)
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
endif
# ...
Index: radix-1.9/secure/pam/1.5.1/Makefile
===================================================================
--- radix-1.9/secure/pam/1.5.1/Makefile (revision 34)
+++ radix-1.9/secure/pam/1.5.1/Makefile (revision 35)
@@ -56,7 +56,7 @@
SOURCE_REQUIRES = sources/packages/s/Linux-PAM
SOURCE_REQUIRES += sources/packages/s/pam-redhat
-REQUIRES = libs/glibc/2.36
+REQUIRES = libs/glibc/2.37
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/secure/pam/1.5.1-ppc32/Makefile
===================================================================
--- radix-1.9/secure/pam/1.5.1-ppc32/Makefile (revision 34)
+++ radix-1.9/secure/pam/1.5.1-ppc32/Makefile (revision 35)
@@ -17,7 +17,7 @@
SOURCE_REQUIRES += sources/packages/s/pam-redhat
REQUIRES = secure/pam/1.5.1
-REQUIRES += libs/glibc/2.36-ppc32
+REQUIRES += libs/glibc/2.37-ppc32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/secure/pam/1.5.1-x86_32/Makefile
===================================================================
--- radix-1.9/secure/pam/1.5.1-x86_32/Makefile (revision 34)
+++ radix-1.9/secure/pam/1.5.1-x86_32/Makefile (revision 35)
@@ -14,7 +14,7 @@
SOURCE_REQUIRES += sources/packages/s/pam-redhat
REQUIRES = secure/pam/1.5.1
-REQUIRES += libs/glibc/2.36-x86_32
+REQUIRES += libs/glibc/2.37-x86_32
# ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-glibc-2.36/localedata/locales/en_US
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-en_US-no-am-pm.patch
-
-mv glibc-$VERSION-en_US-no-am-pm.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales/en_US
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales/en_US (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales/en_US (nonexistent)
@@ -1,179 +0,0 @@
-comment_char %
-escape_char /
-
-% This file is part of the GNU C Library and contains locale data.
-% The Free Software Foundation does not claim any copyright interest
-% in the locale data contained in this file. The foregoing does not
-% affect the license of the GNU C Library as a whole. It does not
-% exempt you from the conditions of the license if your use would
-% otherwise be governed by that license.
-
-% Locale for English locale in the USA
-
-LC_IDENTIFICATION
-title "English locale for the USA"
-source "Free Software Foundation, Inc."
-address "https:////www.gnu.org//software//libc//"
-contact ""
-email "bug-glibc-locales@gnu.org"
-tel ""
-fax ""
-language "American English"
-territory "United States"
-revision "1.0"
-date "2000-06-24"
-
-category "i18n:2012";LC_IDENTIFICATION
-category "i18n:2012";LC_CTYPE
-category "i18n:2012";LC_COLLATE
-category "i18n:2012";LC_TIME
-category "i18n:2012";LC_NUMERIC
-category "i18n:2012";LC_MONETARY
-category "i18n:2012";LC_MESSAGES
-category "i18n:2012";LC_PAPER
-category "i18n:2012";LC_NAME
-category "i18n:2012";LC_ADDRESS
-category "i18n:2012";LC_TELEPHONE
-category "i18n:2012";LC_MEASUREMENT
-END LC_IDENTIFICATION
-
-LC_CTYPE
-copy "en_GB"
-END LC_CTYPE
-
-LC_COLLATE
-
-% Copy the template from ISO/IEC 14651
-copy "iso14651_t1"
-
-END LC_COLLATE
-
-LC_MONETARY
-int_curr_symbol "USD "
-currency_symbol "$"
-mon_decimal_point "."
-mon_thousands_sep ","
-mon_grouping 3;3
-positive_sign ""
-negative_sign "-"
-int_frac_digits 2
-frac_digits 2
-p_cs_precedes 1
-int_p_sep_by_space 1
-p_sep_by_space 0
-n_cs_precedes 1
-int_n_sep_by_space 1
-n_sep_by_space 0
-p_sign_posn 1
-n_sign_posn 1
-%
-END LC_MONETARY
-
-LC_NUMERIC
-decimal_point "."
-thousands_sep ","
-grouping 3;3
-END LC_NUMERIC
-
-LC_TIME
-abday "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"
-day "Sunday";/
- "Monday";/
- "Tuesday";/
- "Wednesday";/
- "Thursday";/
- "Friday";/
- "Saturday"
-
-week 7;19971130;1
-abmon "Jan";"Feb";/
- "Mar";"Apr";/
- "May";"Jun";/
- "Jul";"Aug";/
- "Sep";"Oct";/
- "Nov";"Dec"
-mon "January";/
- "February";/
- "March";/
- "April";/
- "May";/
- "June";/
- "July";/
- "August";/
- "September";/
- "October";/
- "November";/
- "December"
-% Appropriate date and time representation (%c)
-d_t_fmt "%a %d %b %Y %r %Z"
-%
-% Appropriate date representation (%x)
-d_fmt "%m//%d//%Y"
-%
-% Appropriate time representation (%X)
-t_fmt "%r"
-%
-% Appropriate AM/PM time representation (%r)
-t_fmt_ampm "%I:%M:%S %p"
-%
-% Appropriate date and time representation for date(1). This is
-% different from d_t_fmt for historical reasons and has been different
-% since 2000 when date_fmt was added as a GNU extension. At the end
-% of 2018 it was adjusted to use 12H time (bug 24046) instead of 24H.
-% [ Slackware editor's note - no thank you, US users
-% of UNIX-like systems expect a 24 hour clock, just
-% like users in the vast majority of other locales. ]
-%date_fmt "%a %d %b %Y %r %Z"
-%
-% Strings for AM/PM
-%
-am_pm "AM";"PM"
-END LC_TIME
-
-LC_MESSAGES
-yesexpr "^[+1yY]"
-noexpr "^[-0nN]"
-yesstr "yes"
-nostr "no"
-END LC_MESSAGES
-
-LC_PAPER
-height 279
-width 216
-END LC_PAPER
-
-LC_NAME
-name_fmt "%d%t%g%t%m%t%f"
-name_miss "Miss."
-name_mr "Mr."
-name_mrs "Mrs."
-name_ms "Ms."
-END LC_NAME
-
-
-LC_ADDRESS
-postal_fmt "%a%N%f%N%d%N%b%N%h %s %e %r%N%T, %S %z%N%c%N"
-country_name "United States"
-country_post "USA"
-country_ab2 "US"
-country_ab3 "USA"
-country_num 840
-country_car "USA"
-country_isbn 0
-lang_name "English"
-lang_ab "en"
-lang_term "eng"
-lang_lib "eng"
-END LC_ADDRESS
-
-LC_TELEPHONE
-tel_int_fmt "+%c (%a) %l"
-tel_dom_fmt "(%a) %l"
-int_select "11"
-int_prefix "1"
-END LC_TELEPHONE
-
-LC_MEASUREMENT
-% US customary units.
-measurement 2
-END LC_MEASUREMENT
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata/locales
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new/localedata
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-en_US-no-am-pm-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-glibc-2.36/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
-glibc-2.36/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-ppc64-interpreter.patch
-
-mv glibc-$VERSION-ppc64-interpreter.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed (nonexistent)
@@ -1,15 +0,0 @@
-/LD_TRACE_LOADED_OBJECTS=1/a\
-add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
-
-# ldd is generated from elf/ldd.bash.in with the name
-# of ld.so as generated in Makeconfig
-
-# that name is replaced by a pair referring to both
-# the 32bit and 64bit dynamic linker.
-
-# /lib(64|)/*(64|).so.(1|2) is replaced with /lib64/*64.so.(1|2) and /lib/*.so.1
-# this works for /lib/ld64.so.x and /lib32/ld.so.x as input
-s_lib64_lib_
-s_64\.so_\.so_
-s_^RTLDLIST=\(.*lib\)\(\|64\|32\)\(/[^/]*\)\(\.so\.[0-9.]*\)[[:blank:]]*$_RTLDLIST="\1\364\4 \132\3\.so\.1"_
-
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc/ldconfig.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc/ldconfig.h (nonexistent)
@@ -1,27 +0,0 @@
-/* ldconfig default paths and libraries. Linux/PowerPC version.
- Copyright (C) 2002-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <sysdeps/generic/ldconfig.h>
-
-#define SYSDEP_KNOWN_INTERPRETER_NAMES \
- { "/lib/ld64.so.1", FLAG_ELF_LIBC6 }, \
- { "/lib/ld64.so.2", FLAG_ELF_LIBC6 }, \
- { "/lib32/ld.so.1", FLAG_ELF_LIBC6 },
-#define SYSDEP_KNOWN_LIBRARY_NAMES \
- { "libc.so.6", FLAG_ELF_LIBC6 }, \
- { "libm.so.6", FLAG_ELF_LIBC6 },
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/powerpc
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps/unix
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new/sysdeps
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-ppc64-interpreter-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/file.list (nonexistent)
@@ -1,5 +0,0 @@
-glibc-2.36/Makeconfig
-glibc-2.36/Makerules
-glibc-2.36/config.make.in
-glibc-2.36/configure
-glibc-2.36/configure.ac
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-reenable-DT-HASH.patch
-
-mv glibc-$VERSION-reenable-DT-HASH.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure (nonexistent)
@@ -1,8474 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU C Library (see version.h).
-#
-# Report bugs to <https://sourceware.org/bugzilla/>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
- # into an infinite loop, continuously re-executing ourselves.
- if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
- _as_can_reexec=no; export _as_can_reexec;
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
- fi
- # We don't want this to propagate to other subprocesses.
- { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-"
- as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
- exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
- as_have_required=yes
-else
- as_have_required=no
-fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- as_found=:
- case $as_dir in #(
- /*)
- for as_base in sh bash ksh sh5; do
- # Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
- CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
- break 2
-fi
-fi
- done;;
- esac
- as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
- if test "x$CONFIG_SHELL" != x; then :
- export CONFIG_SHELL
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
- else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: https://sourceware.org/bugzilla/ about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
- fi
- exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
- # already done that, so ensure we don't try to do so again and fall
- # in an infinite loop. This has already happened in practice.
- _as_can_reexec=no; export _as_can_reexec
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -pR'
- fi
-else
- as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='GNU C Library'
-PACKAGE_TARNAME='glibc'
-PACKAGE_VERSION='(see version.h)'
-PACKAGE_STRING='GNU C Library (see version.h)'
-PACKAGE_BUGREPORT='https://sourceware.org/bugzilla/'
-PACKAGE_URL='https://www.gnu.org/software/glibc/'
-
-ac_unique_file="include/features.h"
-enable_option_checking=no
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-pthread_in_libc
-RELEASE
-VERSION
-mach_interface_list
-DEFINES
-static_nss
-profile
-libc_cv_multidir
-shared
-static
-ldd_rewrite_script
-use_ldconfig
-libc_cv_rootsbindir
-libc_cv_localstatedir
-libc_cv_sysconfdir
-libc_cv_complocaledir
-libc_cv_rtlddir
-libc_cv_slibdir
-use_nscd
-libc_cv_gcc_unwind_find_fde
-libc_extra_cppflags
-libc_extra_cflags
-libc_cv_cxx_thread_local
-CPPUNDEFS
-have_selinux
-have_libcap
-have_libaudit
-LIBGD
-libc_cv_cc_loop_to_function
-libc_cv_cc_submachine
-libc_cv_cc_nofma
-libc_cv_mtls_dialect_gnu2
-libc_cv_has_glob_dat
-libc_cv_hashstyle
-libc_cv_fpie
-libc_cv_z_execstack
-ASFLAGS_config
-libc_cv_cc_with_libunwind
-libc_cv_insert
-libc_cv_protected_data
-INSTALL_INFO
-PERL
-BASH_SHELL
-CXX_BITS_STD_ABS_H
-CXX_CMATH_HEADER
-CXX_CSTDLIB_HEADER
-CXX_SYSINCLUDES
-SYSINCLUDES
-PYTHON
-PYTHON_PROG
-AUTOCONF
-NM
-BISON
-AWK
-SED
-MAKEINFO
-MSGFMT
-MAKE
-LD
-AS
-GPROF
-OBJCOPY
-OBJDUMP
-AR
-LN_S
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-sysnames
-submachine
-multi_arch
-libc_cv_textrel_ifunc
-no_stack_protector
-stack_protector
-libc_cv_ssp
-libc_cv_with_fp
-base_machine
-have_tunables
-build_pt_chown
-build_nscd
-libc_cv_static_nss_crypt
-libc_cv_nss_crypt
-build_crypt
-memory_tagging
-experimental_malloc
-enable_werror
-all_warnings
-force_install
-bindnow
-hardcoded_path_in_tests
-enable_timezone_tools
-rtld_early_cflags
-extra_nonshared_cflags
-use_default_link
-sysheaders
-ac_ct_CXX
-CXXFLAGS
-CXX
-READELF
-CPP
-cross_compiling
-BUILD_CC
-OBJEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-subdirs
-REPORT_BUGS_TEXI
-REPORT_BUGS_TO
-PKGVERSION_TEXI
-PKGVERSION
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-with_pkgversion
-with_bugurl
-with_gd
-with_gd_include
-with_gd_lib
-with_binutils
-with_selinux
-with_headers
-with_default_link
-with_nonshared_cflags
-with_rtld_early_cflags
-with_timeoutfactor
-enable_sanity_checks
-enable_shared
-enable_profile
-enable_default_pie
-enable_timezone_tools
-enable_hardcoded_path_in_tests
-enable_hidden_plt
-enable_bind_now
-enable_stack_protector
-enable_static_nss
-enable_force_install
-enable_maintainer_mode
-enable_kernel
-enable_all_warnings
-enable_werror
-enable_multi_arch
-enable_experimental_malloc
-enable_memory_tagging
-enable_crypt
-enable_nss_crypt
-enable_systemtap
-enable_build_nscd
-enable_nscd
-enable_pt_chown
-enable_tunables
-enable_mathvec
-enable_cet
-enable_scv
-with_cpu
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-CXX
-CXXFLAGS
-CCC'
-ac_subdirs_all=''
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *=) ac_optarg= ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- case $ac_envvar in #(
- '' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
- esac
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures GNU C Library (see version.h) to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking ...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/glibc]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of GNU C Library (see version.h):";;
- esac
- cat <<\_ACEOF
-
-Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-sanity-checks really do not use threads (should not be used except
- in special situations) [default=yes]
- --enable-shared build shared library [default=yes if GNU ld]
- --enable-profile build profiled library [default=no]
- --disable-default-pie Do not build glibc programs and the testsuite as PIE
- [default=no]
- --disable-timezone-tools
- do not install timezone tools [default=install]
- --enable-hardcoded-path-in-tests
- hardcode newly built glibc path in tests
- [default=no]
- --disable-hidden-plt do not hide internal function calls to avoid PLT
- --enable-bind-now disable lazy relocations in DSOs
- --enable-stack-protector=[yes|no|all|strong]
- Use -fstack-protector[-all|-strong] to detect glibc
- buffer overflows
- --enable-static-nss build static NSS modules [default=no]
- --disable-force-install don't force installation of files from this package,
- even if they are older than the installed files
- --enable-maintainer-mode
- enable make rules and dependencies not useful (and
- sometimes confusing) to the casual installer
- --enable-kernel=VERSION compile for compatibility with kernel not older than
- VERSION
- --enable-all-warnings enable all useful warnings gcc can issue
- --disable-werror do not build with -Werror
- --enable-multi-arch enable single DSO with optimizations for multiple
- architectures
- --disable-experimental-malloc
- disable experimental malloc features
- --enable-memory-tagging enable memory tagging if supported by the
- architecture [default=no]
- --disable-crypt do not build nor install the passphrase hashing
- library, libcrypt
- --enable-nss-crypt enable libcrypt to use nss
- --enable-systemtap enable systemtap static probe points [default=no]
- --disable-build-nscd disable building and installing the nscd daemon
- --disable-nscd library functions will not contact the nscd daemon
- --enable-pt_chown Enable building and installing pt_chown
- --enable-tunables Enable tunables support. Known values are 'yes',
- 'no' and 'valstring'
- --enable-mathvec Enable building and installing mathvec [default
- depends on architecture]
- --enable-cet enable Intel Control-flow Enforcement Technology
- (CET), x86 only
- --disable-scv syscalls will not use scv instruction, even if the
- kernel supports it, powerpc only
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-pkgversion=PKG Use PKG in the version string in place of "GNU libc"
- --with-bugurl=URL Direct users to URL to report a bug
- --with-gd=DIR find libgd include dir and library with prefix DIR
- --with-gd-include=DIR find libgd include files in DIR
- --with-gd-lib=DIR find libgd library files in DIR
- --with-binutils=PATH specify location of binutils (as and ld)
- --with-selinux if building with SELinux support
- --with-headers=PATH location of system headers to use (for example
- /usr/src/linux/include) [default=compiler default]
- --with-default-link do not use explicit linker scripts
- --with-nonshared-cflags=CFLAGS
- build nonshared libraries with additional CFLAGS
- --with-rtld-early-cflags=CFLAGS
- build early initialization with additional CFLAGS
- --with-timeoutfactor=NUM
- specify an integer to scale the timeout
- --with-cpu=CPU select code for CPU variant
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
- CXX C++ compiler command
- CXXFLAGS C++ compiler flags
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <https://sourceware.org/bugzilla/>.
-GNU C Library home page: <https://www.gnu.org/software/glibc/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-GNU C Library configure (see version.h)
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
- if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
- if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_cxx_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_cxx_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } > conftest.i && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by GNU C Library $as_me (see version.h), which was
-generated by GNU Autoconf 2.69. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
- done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
- 2)
- as_fn_append ac_configure_args1 " '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- as_fn_append ac_configure_args " '$ac_arg'"
- ;;
- esac
- done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special files
- # actually), so we avoid doing that. DJGPP emulates it as a regular file.
- if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_config_headers="$ac_config_headers config.h"
-
-ac_aux_dir=
-for ac_dir in scripts "$srcdir"/scripts; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in scripts \"$srcdir\"/scripts" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-
-
-
-# Check whether --with-pkgversion was given.
-if test "${with_pkgversion+set}" = set; then :
- withval=$with_pkgversion; case "$withval" in
- yes) as_fn_error $? "package version not specified" "$LINENO" 5 ;;
- no) PKGVERSION= ;;
- *) PKGVERSION="($withval) " ;;
- esac
-else
- PKGVERSION="(GNU libc) "
-
-fi
-
- PKGVERSION_TEXI=`echo "$PKGVERSION" | sed 's/@/@@/g'`
-
-
-
-
-
-# Check whether --with-bugurl was given.
-if test "${with_bugurl+set}" = set; then :
- withval=$with_bugurl; case "$withval" in
- yes) as_fn_error $? "bug URL not specified" "$LINENO" 5 ;;
- no) BUGURL=
- ;;
- *) BUGURL="$withval"
- ;;
- esac
-else
- BUGURL="https://www.gnu.org/software/libc/bugs.html"
-
-fi
-
- case ${BUGURL} in
- "")
- REPORT_BUGS_TO=
- REPORT_BUGS_TEXI=
- ;;
- *)
- REPORT_BUGS_TO="<$BUGURL>"
- REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
- ;;
- esac;
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define PKGVERSION "$PKGVERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define REPORT_BUGS_TO "$REPORT_BUGS_TO"
-_ACEOF
-
-
-# Glibc should not depend on any header files
-
-
-# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
-# here to work around the Autoconf issue discussed in
-# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
-# AC_PROG_CPP
-
-# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
-# issue discussed in
-# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
-
-
-
-
-subdirs="$subdirs "
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-EXEEXT=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-if test $host != $build; then
- for ac_prog in gcc cc
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_BUILD_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$BUILD_CC"; then
- ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_BUILD_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-BUILD_CC=$ac_cv_prog_BUILD_CC
-if test -n "$BUILD_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5
-$as_echo "$BUILD_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$BUILD_CC" && break
-done
-
-fi
-
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- CPP="$CC -E"
-fi
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args.
-set dummy ${ac_tool_prefix}readelf; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_READELF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$READELF"; then
- ac_cv_prog_READELF="$READELF" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_READELF="${ac_tool_prefix}readelf"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-READELF=$ac_cv_prog_READELF
-if test -n "$READELF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
-$as_echo "$READELF" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_READELF"; then
- ac_ct_READELF=$READELF
- # Extract the first word of "readelf", so it can be a program name with args.
-set dummy readelf; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_READELF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_READELF"; then
- ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_READELF="readelf"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
-if test -n "$ac_ct_READELF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5
-$as_echo "$ac_ct_READELF" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_READELF" = x; then
- READELF="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- READELF=$ac_ct_READELF
- fi
-else
- READELF="$ac_cv_prog_READELF"
-fi
-
-
-# We need the C++ compiler only for testing.
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
- if test -n "$CCC"; then
- CXX=$CCC
- else
- if test -n "$ac_tool_prefix"; then
- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CXX"; then
- ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CXX" && break
- done
-fi
-if test -z "$CXX"; then
- ac_ct_CXX=$CXX
- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CXX"; then
- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CXX="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CXX" && break
-done
-
- if test "x$ac_ct_CXX" = x; then
- CXX="g++"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CXX=$ac_ct_CXX
- fi
-fi
-
- fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GXX=yes
-else
- GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_cxx_werror_flag=$ac_cxx_werror_flag
- ac_cxx_werror_flag=yes
- ac_cv_prog_cxx_g=no
- CXXFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- ac_cv_prog_cxx_g=yes
-else
- CXXFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
- CXXFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-g"
- fi
-else
- if test "$GXX" = yes; then
- CXXFLAGS="-O2"
- else
- CXXFLAGS=
- fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-# It's useless to us if it can't link programs (e.g. missing -lstdc++).
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX can link programs" >&5
-$as_echo_n "checking whether $CXX can link programs... " >&6; }
-if ${libc_cv_cxx_link_ok+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-# Default, dynamic case.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
- libc_cv_cxx_link_ok=yes
-else
- libc_cv_cxx_link_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-# Static case.
-old_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS -static"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <iostream>
-
-int
-main()
-{
- std::cout << "Hello, world!";
- return 0;
-}
-
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-else
- libc_cv_cxx_link_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LDFLAGS="$old_LDFLAGS"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cxx_link_ok" >&5
-$as_echo "$libc_cv_cxx_link_ok" >&6; }
-if test $libc_cv_cxx_link_ok != yes; then :
- CXX=
-fi
-
-if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
- as_fn_error $? "you must configure in a separate build directory" "$LINENO" 5
-fi
-
-# This will get text that should go into config.make.
-config_vars=
-
-# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
-
-# Check whether --with-gd was given.
-if test "${with_gd+set}" = set; then :
- withval=$with_gd; case "$with_gd" in
-yes|''|no) ;;
-*) libgd_include="-I$withval/include"
- libgd_ldflags="-L$withval/lib" ;;
-esac
-
-fi
-
-
-# Check whether --with-gd-include was given.
-if test "${with_gd_include+set}" = set; then :
- withval=$with_gd_include; case "$with_gd_include" in
-''|no) ;;
-*) libgd_include="-I$withval" ;;
-esac
-
-fi
-
-
-# Check whether --with-gd-lib was given.
-if test "${with_gd_lib+set}" = set; then :
- withval=$with_gd_lib; case "$with_gd_lib" in
-''|no) ;;
-*) libgd_ldflags="-L$withval" ;;
-esac
-
-fi
-
-
-if test -n "$libgd_include"; then
- config_vars="$config_vars
-CFLAGS-memusagestat.c = $libgd_include"
-fi
-if test -n "$libgd_ldflags"; then
- config_vars="$config_vars
-libgd-LDFLAGS = $libgd_ldflags"
-fi
-
-
-# Check whether --with-binutils was given.
-if test "${with_binutils+set}" = set; then :
- withval=$with_binutils; path_binutils=$withval
-else
- path_binutils=''
-fi
-
-
-# Check whether --with-selinux was given.
-if test "${with_selinux+set}" = set; then :
- withval=$with_selinux; with_selinux=$withval
-else
- with_selinux=auto
-fi
-
-
-
-# Check whether --with-headers was given.
-if test "${with_headers+set}" = set; then :
- withval=$with_headers; sysheaders=$withval
-else
- sysheaders=''
-fi
-
-
-
-
-
-# Check whether --with-default-link was given.
-if test "${with_default_link+set}" = set; then :
- withval=$with_default_link; use_default_link=$withval
-else
- use_default_link=no
-fi
-
-
-
-# Check whether --with-nonshared-cflags was given.
-if test "${with_nonshared_cflags+set}" = set; then :
- withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval
-else
- extra_nonshared_cflags=
-fi
-
-
-
-# Check whether --with-rtld-early-cflags was given.
-if test "${with_rtld_early_cflags+set}" = set; then :
- withval=$with_rtld_early_cflags; rtld_early_cflags=$withval
-else
- rtld_early_cflags=
-fi
-
-
-
-
-# Check whether --with-timeoutfactor was given.
-if test "${with_timeoutfactor+set}" = set; then :
- withval=$with_timeoutfactor; timeoutfactor=$withval
-else
- timeoutfactor=1
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define TIMEOUTFACTOR $timeoutfactor
-_ACEOF
-
-
-# Check whether --enable-sanity-checks was given.
-if test "${enable_sanity_checks+set}" = set; then :
- enableval=$enable_sanity_checks; enable_sanity=$enableval
-else
- enable_sanity=yes
-fi
-
-
-# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
- enableval=$enable_shared; shared=$enableval
-else
- shared=yes
-fi
-
-# Check whether --enable-profile was given.
-if test "${enable_profile+set}" = set; then :
- enableval=$enable_profile; profile=$enableval
-else
- profile=no
-fi
-
-# Check whether --enable-default-pie was given.
-if test "${enable_default_pie+set}" = set; then :
- enableval=$enable_default_pie; default_pie=$enableval
-else
- default_pie=yes
-fi
-
-# Check whether --enable-timezone-tools was given.
-if test "${enable_timezone_tools+set}" = set; then :
- enableval=$enable_timezone_tools; enable_timezone_tools=$enableval
-else
- enable_timezone_tools=yes
-fi
-
-
-
-# Check whether --enable-hardcoded-path-in-tests was given.
-if test "${enable_hardcoded_path_in_tests+set}" = set; then :
- enableval=$enable_hardcoded_path_in_tests; hardcoded_path_in_tests=$enableval
-else
- hardcoded_path_in_tests=no
-fi
-
-
-
-# Check whether --enable-hidden-plt was given.
-if test "${enable_hidden_plt+set}" = set; then :
- enableval=$enable_hidden_plt; hidden=$enableval
-else
- hidden=yes
-fi
-
-if test "x$hidden" = xno; then
- $as_echo "#define NO_HIDDEN 1" >>confdefs.h
-
-fi
-
-# Check whether --enable-bind-now was given.
-if test "${enable_bind_now+set}" = set; then :
- enableval=$enable_bind_now; bindnow=$enableval
-else
- bindnow=no
-fi
-
-
-if test "x$bindnow" = xyes; then
- $as_echo "#define BIND_NOW 1" >>confdefs.h
-
-fi
-
-# Check whether --enable-stack-protector was given.
-if test "${enable_stack_protector+set}" = set; then :
- enableval=$enable_stack_protector; enable_stack_protector=$enableval
-else
- enable_stack_protector=no
-fi
-
-case "$enable_stack_protector" in
-all|yes|no|strong) ;;
-*) as_fn_error $? "Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"" "$LINENO" 5;;
-esac
-
-# Check whether --enable-static-nss was given.
-if test "${enable_static_nss+set}" = set; then :
- enableval=$enable_static_nss; static_nss=$enableval
-else
- static_nss=no
-fi
-
-if test x"$static_nss" = xyes || test x"$shared" = xno; then
- static_nss=yes
- $as_echo "#define DO_STATIC_NSS 1" >>confdefs.h
-
-fi
-
-# Check whether --enable-force-install was given.
-if test "${enable_force_install+set}" = set; then :
- enableval=$enable_force_install; force_install=$enableval
-else
- force_install=yes
-fi
-
-
-
-# Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
- enableval=$enable_maintainer_mode; maintainer=$enableval
-else
- maintainer=no
-fi
-
-
-# Check whether --enable-kernel was given.
-if test "${enable_kernel+set}" = set; then :
- enableval=$enable_kernel; minimum_kernel=$enableval
-fi
-
-if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
- # Better nothing than this.
- minimum_kernel=""
-else
- if test "$minimum_kernel" = current; then
- minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
- fi
-fi
-
-# Check whether --enable-all-warnings was given.
-if test "${enable_all_warnings+set}" = set; then :
- enableval=$enable_all_warnings; all_warnings=$enableval
-fi
-
-
-
-# Check whether --enable-werror was given.
-if test "${enable_werror+set}" = set; then :
- enableval=$enable_werror; enable_werror=$enableval
-else
- enable_werror=yes
-fi
-
-
-
-# Check whether --enable-multi-arch was given.
-if test "${enable_multi_arch+set}" = set; then :
- enableval=$enable_multi_arch; multi_arch=$enableval
-else
- multi_arch=default
-fi
-
-
-# Check whether --enable-experimental-malloc was given.
-if test "${enable_experimental_malloc+set}" = set; then :
- enableval=$enable_experimental_malloc; experimental_malloc=$enableval
-else
- experimental_malloc=yes
-fi
-
-
-
-# Check whether --enable-memory-tagging was given.
-if test "${enable_memory_tagging+set}" = set; then :
- enableval=$enable_memory_tagging; memory_tagging=$enableval
-else
- memory_tagging=no
-fi
-
-if test "$memory_tagging" = yes; then
- # Only enable this on architectures that support it.
- case $host_cpu in
- aarch64)
- $as_echo "#define USE_MTAG 1" >>confdefs.h
-
- ;;
- esac
-fi
-
-
-# Check whether --enable-crypt was given.
-if test "${enable_crypt+set}" = set; then :
- enableval=$enable_crypt; build_crypt=$enableval
-else
- build_crypt=yes
-fi
-
-
-
-# Check whether --enable-nss-crypt was given.
-if test "${enable_nss_crypt+set}" = set; then :
- enableval=$enable_nss_crypt; nss_crypt=$enableval
-else
- nss_crypt=no
-fi
-
-if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-nss-crypt has no effect when libcrypt is disabled" >&5
-$as_echo "$as_me: WARNING: --enable-nss-crypt has no effect when libcrypt is disabled" >&2;}
- nss_crypt=no
-fi
-if test x$nss_crypt = xyes; then
- nss_includes=-I$(nss-config --includedir 2>/dev/null)
- if test $? -ne 0; then
- as_fn_error $? "cannot find include directory with nss-config" "$LINENO" 5
- fi
- nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
- if test $? -ne 0; then
- as_fn_error $? "cannot find include directory with nspr-config" "$LINENO" 5
- fi
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $nss_includes $nspr_includes"
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-typedef int PRBool;
-#include <hasht.h>
-#include <nsslowhash.h>
-void f (void) { NSSLOW_Init (); }
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- libc_cv_nss_crypt=yes
-else
- as_fn_error $? "
-cannot find NSS headers with lowlevel hash function interfaces" "$LINENO" 5
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- old_LIBS="$LIBS"
- old_LDFLAGS="$LDFLAGS"
- LIBS="$LIBS -lfreebl3"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-typedef int PRBool;
-#include <hasht.h>
-#include <nsslowhash.h>
-int
-main ()
-{
-NSSLOW_Init();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- libc_cv_nss_crypt=yes
-else
- as_fn_error $? "
-cannot link program using lowlevel NSS hash functions" "$LINENO" 5
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- # Check to see if there is a static NSS cryptographic library.
- # If there isn't then we can't link anything with libcrypt.a,
- # and that might mean disabling some static tests.
- LDFLAGS="$LDFLAGS -static"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-typedef int PRBool;
-#include <hasht.h>
-#include <nsslowhash.h>
-int
-main ()
-{
-NSSLOW_Init();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- libc_cv_static_nss_crypt=yes
-else
- libc_cv_static_nss_crypt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$old_LDFLAGS"
- CFLAGS="$old_CFLAGS"
- LIBS="$old_LIBS"
-else
- libc_cv_nss_crypt=no
- libc_cv_static_nss_crypt=no
-fi
-
-
-
-
-# Check whether --enable-systemtap was given.
-if test "${enable_systemtap+set}" = set; then :
- enableval=$enable_systemtap; systemtap=$enableval
-else
- systemtap=no
-fi
-
-if test "x$systemtap" != xno; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemtap static probe support" >&5
-$as_echo_n "checking for systemtap static probe support... " >&6; }
-if ${libc_cv_sdt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- old_CFLAGS="$CFLAGS"
- CFLAGS="-std=gnu11 $CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/sdt.h>
-void foo (int i, void *p)
-{
- asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
- :: STAP_PROBE_ASM_OPERANDS (2, i, p));
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- libc_cv_sdt=yes
-else
- libc_cv_sdt=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$old_CFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sdt" >&5
-$as_echo "$libc_cv_sdt" >&6; }
- if test $libc_cv_sdt = yes; then
- $as_echo "#define USE_STAP_PROBE 1" >>confdefs.h
-
- elif test "x$systemtap" != xauto; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "systemtap support needs sys/sdt.h with asm support
-See \`config.log' for more details" "$LINENO" 5; }
- fi
-fi
-
-# Check whether --enable-build-nscd was given.
-if test "${enable_build_nscd+set}" = set; then :
- enableval=$enable_build_nscd; build_nscd=$enableval
-else
- build_nscd=default
-fi
-
-
-
-# Note the use of $use_nscd is near the bottom of the file.
-# Check whether --enable-nscd was given.
-if test "${enable_nscd+set}" = set; then :
- enableval=$enable_nscd; use_nscd=$enableval
-else
- use_nscd=yes
-fi
-
-
-# Check whether --enable-pt_chown was given.
-if test "${enable_pt_chown+set}" = set; then :
- enableval=$enable_pt_chown; build_pt_chown=$enableval
-else
- build_pt_chown=no
-fi
-
-
-if test "$build_pt_chown" = yes; then
- $as_echo "#define HAVE_PT_CHOWN 1" >>confdefs.h
-
-fi
-
-# Check whether --enable-tunables was given.
-if test "${enable_tunables+set}" = set; then :
- enableval=$enable_tunables; have_tunables=$enableval
-else
- have_tunables=yes
-fi
-
-
-if test "$have_tunables" = yes; then
- $as_echo "#define HAVE_TUNABLES 1" >>confdefs.h
-
-fi
-
-# The abi-tags file uses a fairly simplistic model for name recognition that
-# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
-# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
-# This doesn't get used much beyond that, so it's fairly safe.
-case "$host_os" in
-linux*)
- ;;
-gnu*)
- host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
- ;;
-esac
-
-# Check whether --enable-mathvec was given.
-if test "${enable_mathvec+set}" = set; then :
- enableval=$enable_mathvec; build_mathvec=$enableval
-else
- build_mathvec=notset
-fi
-
-
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
-#ifndef __CET__
-# error no CET compiler support
-#endif
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- libc_cv_compiler_default_cet=yes
-else
- libc_cv_compiler_default_cet=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-# Check whether --enable-cet was given.
-if test "${enable_cet+set}" = set; then :
- enableval=$enable_cet; enable_cet=$enableval
-else
- enable_cet=$libc_cv_compiler_default_cet
-fi
-
-
-# Check whether --enable-scv was given.
-if test "${enable_scv+set}" = set; then :
- enableval=$enable_scv; use_scv=$enableval
-else
- use_scv=yes
-fi
-
-
-if test "$use_scv" != "no"; then :
- $as_echo "#define USE_PPC_SCV 1" >>confdefs.h
-
-fi
-
-# We keep the original values in `$config_*' and never modify them, so we
-# can write them unchanged into config.make. Everything else uses
-# $machine, $vendor, and $os, and changes them whenever convenient.
-config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
-
-# Don't allow vendor == "unknown"
-test "$config_vendor" = unknown && config_vendor=
-config_os="`echo $config_os | sed 's/^unknown-//'`"
-
-# Some configurations imply other options.
-elf=yes
-
-# The configure fragment of a port can modify these to supplement
-# or override the table in the case statement below. No fragment should
-# ever change the config_* variables, however.
-machine=$config_machine
-vendor=$config_vendor
-os=$config_os
-base_os=''
-
-submachine=
-
-# Check whether --with-cpu was given.
-if test "${with_cpu+set}" = set; then :
- withval=$with_cpu; case "$withval" in
- yes|'') as_fn_error $? "--with-cpu requires an argument" "$LINENO" 5 ;;
- no) ;;
- *) submachine="$withval" ;;
- esac
-
-fi
-
-
-# An preconfigure script can set this when it wants to disable the sanity
-# check below.
-libc_config_ok=no
-
-# A preconfigure script for a system that may or may not use fpu
-# sysdeps directories sets this to a preprocessor conditional for
-# whether to use such directories.
-with_fp_cond=1
-
-if frags=`ls -d $srcdir/sysdeps/*/preconfigure 2> /dev/null`
-then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysdeps preconfigure fragments" >&5
-$as_echo_n "checking for sysdeps preconfigure fragments... " >&6; }
- for frag in $frags; do
- name=`echo "$frag" | sed 's@/[^/]*$@@;s@^.*/@@'`
- echo $ECHO_N "$name $ECHO_C" >&6
- . "$frag"
- done
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-fi
-
-
-###
-### By using the undocumented --enable-hacker-mode option for configure
-### one can skip this test to make the configuration not fail for unsupported
-### platforms.
-###
-if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
- case "$machine-$host_os" in
- *-linux* | *-gnu*)
- ;;
- *)
- as_fn_error $? "
-*** The GNU C library is currently unavailable for this platform.
-*** If you are interested in seeing glibc on this platform visit
-*** the \"How to submit a new port\" in the wiki:
-*** https://sourceware.org/glibc/wiki/#Development
-*** and join the community!" "$LINENO" 5
- ;;
- esac
-fi
-
-# Set base_machine if not set by a preconfigure fragment.
-test -n "$base_machine" || base_machine=$machine
-
-
-# Determine whether to use fpu or nofpu sysdeps directories.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for use of fpu sysdeps directories" >&5
-$as_echo_n "checking for use of fpu sysdeps directories... " >&6; }
-if ${libc_cv_with_fp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-#if $with_fp_cond
-int dummy;
-#else
-# error "no hardware floating point"
-#endif
-EOF
-libc_cv_with_fp=no
-if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
- 1>&5 2>&5 ; then
- libc_cv_with_fp=yes
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_with_fp" >&5
-$as_echo "$libc_cv_with_fp" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fstack-protector" >&5
-$as_echo_n "checking for -fstack-protector... " >&6; }
-if ${libc_cv_ssp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -fstack-protector -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- libc_cv_ssp=yes
-else
- libc_cv_ssp=no
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ssp" >&5
-$as_echo "$libc_cv_ssp" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fstack-protector-strong" >&5
-$as_echo_n "checking for -fstack-protector-strong... " >&6; }
-if ${libc_cv_ssp_strong+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -fstack-protector-strong -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- libc_cv_ssp_strong=yes
-else
- libc_cv_ssp_strong=no
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ssp_strong" >&5
-$as_echo "$libc_cv_ssp_strong" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fstack-protector-all" >&5
-$as_echo_n "checking for -fstack-protector-all... " >&6; }
-if ${libc_cv_ssp_all+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -fstack-protector-all -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- libc_cv_ssp_all=yes
-else
- libc_cv_ssp_all=no
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ssp_all" >&5
-$as_echo "$libc_cv_ssp_all" >&6; }
-
-stack_protector=
-no_stack_protector=
-if test "$libc_cv_ssp" = yes; then
- no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
- $as_echo "#define HAVE_CC_NO_STACK_PROTECTOR 1" >>confdefs.h
-
-fi
-
-if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
- stack_protector="-fstack-protector"
- $as_echo "#define STACK_PROTECTOR_LEVEL 1" >>confdefs.h
-
-elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
- stack_protector="-fstack-protector-all"
- $as_echo "#define STACK_PROTECTOR_LEVEL 2" >>confdefs.h
-
-elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
- stack_protector="-fstack-protector-strong"
- $as_echo "#define STACK_PROTECTOR_LEVEL 3" >>confdefs.h
-
-else
- stack_protector="-fno-stack-protector"
- $as_echo "#define STACK_PROTECTOR_LEVEL 0" >>confdefs.h
-
-fi
-
-
-
-
-if test -n "$stack_protector"; then
- no_ssp=-fno-stack-protector
-else
- no_ssp=
-
- if test "$enable_stack_protector" != no; then
- as_fn_error $? "--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler." "$LINENO" 5
- fi
-fi
-
-# For the multi-arch option we need support in the assembler & linker.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler and linker STT_GNU_IFUNC support" >&5
-$as_echo_n "checking for assembler and linker STT_GNU_IFUNC support... " >&6; }
-if ${libc_cv_ld_gnu_indirect_function+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.S <<EOF
-.type foo,%gnu_indirect_function
-foo:
-.globl _start
-_start:
-.globl __start
-__start:
-.data
-#ifdef _LP64
-.quad foo
-#else
-.long foo
-#endif
-EOF
-libc_cv_ld_gnu_indirect_function=no
-if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
- -nostartfiles -nostdlib $no_ssp \
- -o conftest conftest.S 1>&5 2>&5; then
- # Do a link to see if the backend supports IFUNC relocs.
- $READELF -r conftest 1>&5
- LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && {
- libc_cv_ld_gnu_indirect_function=yes
- }
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ld_gnu_indirect_function" >&5
-$as_echo "$libc_cv_ld_gnu_indirect_function" >&6; }
-
-# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc attribute ifunc support" >&5
-$as_echo_n "checking for gcc attribute ifunc support... " >&6; }
-if ${libc_cv_gcc_indirect_function+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-extern int func (int);
-int used_func (int a)
-{
- return a;
-}
-static void *resolver ()
-{
- return &used_func;
-}
-extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
-EOF
-libc_cv_gcc_indirect_function=no
-if ${CC-cc} -c conftest.c -o conftest.o 1>&5 \
- 2>&5 ; then
- if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&5; then
- libc_cv_gcc_indirect_function=yes
- fi
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_indirect_function" >&5
-$as_echo "$libc_cv_gcc_indirect_function" >&6; }
-
-# Check if linker supports textrel relocation with ifunc (used on elf/tests).
-# Note that it relies on libc_cv_ld_gnu_indirect_function test above.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker supports textrels along with ifunc" >&5
-$as_echo_n "checking whether the linker supports textrels along with ifunc... " >&6; }
-if ${libc_cv_textrel_ifunc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.S <<EOF
-.type foo,%gnu_indirect_function
-foo:
-.globl _start
-_start:
-.globl __start
-__start:
-.data
-#ifdef _LP64
-.quad foo
-#else
-.long foo
-#endif
-.text
-.globl address
-address:
-#ifdef _LP64
-.quad address
-#else
-.long address
-#endif
-EOF
-libc_cv_textrel_ifunc=no
-if test $libc_cv_ld_gnu_indirect_function = yes; then
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- libc_cv_textrel_ifunc=yes
- fi
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_textrel_ifunc" >&5
-$as_echo "$libc_cv_textrel_ifunc" >&6; }
-
-
-# Check if CC supports attribute retain as it is used in attribute_used_retain macro.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU attribute retain support" >&5
-$as_echo_n "checking for GNU attribute retain support... " >&6; }
-if ${libc_cv_gnu_retain+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-static int var __attribute__ ((used, retain, section ("__libc_atexit")));
-EOF
-libc_cv_gnu_retain=no
-if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&5 \
- 2>&5 ; then
- libc_cv_gnu_retain=yes
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gnu_retain" >&5
-$as_echo "$libc_cv_gnu_retain" >&6; }
-if test $libc_cv_gnu_retain = yes; then
- $as_echo "#define HAVE_GNU_RETAIN 1" >>confdefs.h
-
-fi
-config_vars="$config_vars
-have-gnu-retain = $libc_cv_gnu_retain"
-
-# Check if gcc warns about alias for function with incompatible types.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler warns about alias for function with incompatible types" >&5
-$as_echo_n "checking if compiler warns about alias for function with incompatible types... " >&6; }
-if ${libc_cv_gcc_incompatible_alias+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-int __redirect_foo (const void *s, int c);
-
-__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
-__typeof (__redirect_foo) *foo_impl (void)
-{
- return 0;
-}
-
-extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
-EOF
-libc_cv_gcc_incompatible_alias=yes
-if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&5 2>&5 ; then
- libc_cv_gcc_incompatible_alias=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_incompatible_alias" >&5
-$as_echo "$libc_cv_gcc_incompatible_alias" >&6; }
-
-if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
- if test x"$multi_arch" = xyes; then
- as_fn_error $? "--enable-multi-arch support requires assembler and linker support" "$LINENO" 5
- else
- multi_arch=no
- fi
-fi
-if test x"$libc_cv_gcc_indirect_function" != xyes; then
- # GCC 8+ emits a warning for alias with incompatible types and it might
- # fail to build ifunc resolvers aliases to either weak or internal
- # symbols. Disables multiarch build in this case.
- if test x"$libc_cv_gcc_incompatible_alias" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: gcc emits a warning for alias between functions of incompatible types" >&5
-$as_echo "$as_me: WARNING: gcc emits a warning for alias between functions of incompatible types" >&2;}
- if test x"$multi_arch" = xyes; then
- as_fn_error $? "--enable-multi-arch support requires a gcc with gnu-indirect-function support" "$LINENO" 5
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Multi-arch is disabled." >&5
-$as_echo "$as_me: WARNING: Multi-arch is disabled." >&2;}
- multi_arch=no
- elif test x"$multi_arch" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-multi-arch support recommends a gcc with gnu-indirect-function support.
-Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function" >&5
-$as_echo "$as_me: WARNING: --enable-multi-arch support recommends a gcc with gnu-indirect-function support.
-Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function" >&2;}
- fi
-fi
-multi_arch_d=
-if test x"$multi_arch" != xno; then
- multi_arch_d=/multiarch
-fi
-
-# Compute the list of sysdep directories for this configuration.
-# This can take a while to compute.
-sysdep_dir=$srcdir/sysdeps
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sysdep dirs" >&5
-$as_echo_n "checking sysdep dirs... " >&6; }
-# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
-os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
-
-test "x$base_os" != x || case "$os" in
-gnu*)
- base_os=mach/hurd ;;
-linux*)
- base_os=unix/sysv ;;
-esac
-
-# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
-tail=$os
-ostry=$os
-while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
- ostry="$ostry /$o"
- tail=$o
-done
-o=`echo $tail | sed 's/[0-9]*$//'`
-if test $o != $tail; then
- ostry="$ostry /$o"
-fi
-# For linux-gnu, try linux-gnu, then linux.
-o=`echo $tail | sed 's/-.*$//'`
-if test $o != $tail; then
- ostry="$ostry /$o"
-fi
-
-# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
-base=
-tail=$base_os
-while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
- set $b
- base="$base /$1"
- tail="$2"
-done
-
-# For sparc/sparc32, try sparc/sparc32 and then sparc.
-mach=
-tail=$machine${submachine:+/$submachine}
-while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
- set $m
- # Prepend the machine's FPU directory unless the architecture specific
- # preconfigure disables it.
- if test "$libc_cv_with_fp" = yes; then
- maybe_fpu=/fpu
- else
- maybe_fpu=/nofpu
- fi
- # For each machine term, try it with and then without /multiarch.
- for try_fpu in $maybe_fpu ''; do
- for try_multi in $multi_arch_d ''; do
- mach="$mach /$1$try_fpu$try_multi"
- done
- done
- tail="$2"
-done
-
-
-# Find what sysdep directories exist.
-sysnames=
-for b in $base ''; do
- for m0 in $mach ''; do
- for v in /$vendor ''; do
- test "$v" = / && continue
- for o in /$ostry ''; do
- test "$o" = / && continue
- for m in $mach ''; do
- try_suffix="$m0$b$v$o$m"
- if test -n "$try_suffix"; then
- try_srcdir="${srcdir}/"
- try="sysdeps$try_suffix"
- test -n "$enable_debug_configure" &&
- echo "$0 DEBUG: try $try" >&2
- if test -d "$try_srcdir$try"; then
- sysnames="$sysnames $try"
- { test -n "$o" || test -n "$b"; } && os_used=t
- { test -n "$m" || test -n "$m0"; } && machine_used=t
- case x${m0:-$m} in
- x*/$submachine) submachine_used=t ;;
- esac
- fi
- fi
- done
- done
- done
- done
-done
-
-# If the assembler supports gnu_indirect_function symbol type and the
-# architecture supports multi-arch, we enable multi-arch by default.
-case $sysnames in
-*"$multi_arch_d"*)
- ;;
-*)
- test x"$multi_arch" = xdefault && multi_arch=no
- ;;
-esac
-if test x"$multi_arch" != xno; then
- $as_echo "#define USE_MULTIARCH 1" >>confdefs.h
-
-fi
-
-
-if test -z "$os_used" && test "$os" != none; then
- as_fn_error $? "Operating system $os is not supported." "$LINENO" 5
-fi
-if test -z "$machine_used" && test "$machine" != none; then
- as_fn_error $? "The $machine is not supported." "$LINENO" 5
-fi
-if test -z "$submachine_used" && test -n "$submachine"; then
- as_fn_error $? "The $submachine subspecies of $host_cpu is not supported." "$LINENO" 5
-fi
-
-
-# We have now validated the configuration.
-
-# Expand the list of system names into a full list of directories
-# from each element's parent name and Implies file (if present).
-set $sysnames
-names=
-while test $# -gt 0; do
- name=$1
- shift
-
- case " $names " in *" $name "*)
- # Already in the list.
- continue
- esac
-
- # Report each name as we discover it, so there is no long pause in output.
- echo $ECHO_N "$name $ECHO_C" >&6
-
- name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
-
- case $name in
- /*) xsrcdir= ;;
- *) xsrcdir=$srcdir/ ;;
- esac
- test -n "$enable_debug_configure" &&
- echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
-
- for implies_file in Implies Implies-before Implies-after; do
- implies_type=`echo $implies_file | sed s/-/_/`
- eval ${implies_type}=
- if test -f $xsrcdir$name/$implies_file; then
- # Collect more names from the `Implies' file (removing comments).
- implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
- for x in $implied_candidate; do
- found=no
- if test -d $xsrcdir$name_base/$x; then
- eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
- found=yes
- fi
- try="sysdeps/$x"
- try_srcdir=$srcdir/
- test -n "$enable_debug_configure" &&
- echo "DEBUG: $name $implies_file $x try() {$try_srcdir}$try" >&2
- if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
- then
- eval "${implies_type}=\"\$${implies_type} \$try\""
- found=yes
- fi
- if test $found = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $name/$implies_file specifies nonexistent $x" >&5
-$as_echo "$as_me: WARNING: $name/$implies_file specifies nonexistent $x" >&2;}
- fi
- done
- fi
- done
-
- # Add NAME to the list of names.
- names="$names $name"
-
- # Find the parent of NAME, using the empty string if it has none.
- parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
-
- test -n "$enable_debug_configure" &&
- echo "DEBUG: $name Implies='$Implies' rest='$*' parent='$parent' \
-Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
-
- # Add the names implied by NAME, and NAME's parent (if it has one), to
- # the list of names to be processed (the argument list). We prepend the
- # implied names to the list and append the parent. We want implied
- # directories to come before further directories inferred from the
- # configuration components; this ensures that for sysv4, unix/common
- # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
- # after sysv4).
- sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
- test -n "$sysnames" && set $sysnames
-done
-
-# Add the default directories.
-default_sysnames="sysdeps/generic"
-sysnames="$names $default_sysnames"
-
-# The other names were emitted during the scan.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $default_sysnames" >&5
-$as_echo "$default_sysnames" >&6; }
-
-
-### Locate tools.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
- done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
- # The makefiles need to use a different form to find it in $srcdir.
- INSTALL='\$(..)./scripts/install-sh -c'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-
-# Was a --with-binutils option given?
-if test -n "$path_binutils"; then
- # Make absolute; ensure a single trailing slash.
- path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
- CC="$CC -B$path_binutils"
-fi
-case "$CC" in
- *fuse-ld=lld*) LDNAME=ld.lld;;
- *) LDNAME=ld;;
-esac
-AS=`$CC -print-prog-name=as`
-LD=`$CC -print-prog-name=$LDNAME`
-AR=`$CC -print-prog-name=ar`
-
-OBJDUMP=`$CC -print-prog-name=objdump`
-
-OBJCOPY=`$CC -print-prog-name=objcopy`
-
-GPROF=`$CC -print-prog-name=gprof`
-
-
-# Determine whether we are using GNU binutils.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $AS is GNU as" >&5
-$as_echo_n "checking whether $AS is GNU as... " >&6; }
-if ${libc_cv_prog_as_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Most GNU programs take a -v and spit out some text including
-# the word 'GNU'. Some try to read stdin, so give them /dev/null.
-if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
- libc_cv_prog_as_gnu=yes
-else
- libc_cv_prog_as_gnu=no
-fi
-rm -fr contest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_prog_as_gnu" >&5
-$as_echo "$libc_cv_prog_as_gnu" >&6; }
-rm -f a.out
-gnu_as=$libc_cv_prog_as_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $LD is GNU ld" >&5
-$as_echo_n "checking whether $LD is GNU ld... " >&6; }
-if ${libc_cv_prog_ld_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Most GNU programs take a -v and spit out some text including
-# the word 'GNU'. Some try to read stdin, so give them /dev/null.
-if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
- libc_cv_prog_ld_gnu=yes
-else
- libc_cv_prog_ld_gnu=no
-fi
-rm -fr contest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_prog_ld_gnu" >&5
-$as_echo "$libc_cv_prog_ld_gnu" >&6; }
-gnu_ld=$libc_cv_prog_ld_gnu
-
-
-# Accept binutils 2.25 or newer.
-for ac_prog in $AS
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AS="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AS" && break
-done
-
-if test -z "$AS"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $AS" >&5
-$as_echo_n "checking version of $AS... " >&6; }
- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- AS=: critic_missing="$critic_missing as"
-fi
-
-
-libc_cv_with_lld=no
-case $($LD --version) in
- "GNU gold"*)
- # Accept gold 1.14 or higher
- for ac_prog in $LD
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$LD"; then
- ac_cv_prog_LD="$LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_LD="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-LD=$ac_cv_prog_LD
-if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$LD" && break
-done
-
-if test -z "$LD"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
-$as_echo_n "checking version of $LD... " >&6; }
- ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU gold.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- LD=: critic_missing="$critic_missing GNU gold"
-fi
-
- ;;
- "LLD"*)
- # Accept LLD 13.0.0 or higher
- for ac_prog in $LD
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$LD"; then
- ac_cv_prog_LD="$LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_LD="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-LD=$ac_cv_prog_LD
-if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$LD" && break
-done
-
-if test -z "$LD"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
-$as_echo_n "checking version of $LD... " >&6; }
- ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*LLD.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1[3-9].*|[2-9][0-9].*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- LD=: critic_missing="$critic_missing LLD"
-fi
-
- libc_cv_with_lld=yes
- ;;
- *)
- for ac_prog in $LD
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$LD"; then
- ac_cv_prog_LD="$LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_LD="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-LD=$ac_cv_prog_LD
-if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$LD" && break
-done
-
-if test -z "$LD"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
-$as_echo_n "checking version of $LD... " >&6; }
- ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- LD=: critic_missing="$critic_missing GNU ld"
-fi
-
- ;;
-esac
-config_vars="$config_vars
-with-lld = $libc_cv_with_lld"
-
-# These programs are version sensitive.
-for ac_prog in gnumake gmake make
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MAKE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$MAKE"; then
- ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_MAKE="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-MAKE=$ac_cv_prog_MAKE
-if test -n "$MAKE"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5
-$as_echo "$MAKE" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$MAKE" && break
-done
-
-if test -z "$MAKE"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $MAKE" >&5
-$as_echo_n "checking version of $MAKE... " >&6; }
- ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- [4-9].* | [1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- critic_missing="$critic_missing make"
-fi
-
-
-for ac_prog in gnumsgfmt gmsgfmt msgfmt
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$MSGFMT"; then
- ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_MSGFMT="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-MSGFMT=$ac_cv_prog_MSGFMT
-if test -n "$MSGFMT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$MSGFMT" && break
-done
-
-if test -z "$MSGFMT"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $MSGFMT" >&5
-$as_echo_n "checking version of $MSGFMT... " >&6; }
- ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- MSGFMT=: aux_missing="$aux_missing msgfmt"
-fi
-
-for ac_prog in makeinfo
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MAKEINFO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$MAKEINFO"; then
- ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_MAKEINFO="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-MAKEINFO=$ac_cv_prog_MAKEINFO
-if test -n "$MAKEINFO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
-$as_echo "$MAKEINFO" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$MAKEINFO" && break
-done
-
-if test -z "$MAKEINFO"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $MAKEINFO" >&5
-$as_echo_n "checking version of $MAKEINFO... " >&6; }
- ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 4.[7-9]*|4.[1-9][0-9]*|[5-9].*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- MAKEINFO=: aux_missing="$aux_missing makeinfo"
-fi
-
-for ac_prog in sed
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$SED"; then
- ac_cv_prog_SED="$SED" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_SED="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-SED=$ac_cv_prog_SED
-if test -n "$SED"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5
-$as_echo "$SED" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$SED" && break
-done
-
-if test -z "$SED"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $SED" >&5
-$as_echo_n "checking version of $SED... " >&6; }
- ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed[^0-9]* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 3.0[2-9]*|3.[1-9]*|[4-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- SED=: aux_missing="$aux_missing sed"
-fi
-
-for ac_prog in gawk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AWK" && break
-done
-
-if test -z "$AWK"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $AWK" >&5
-$as_echo_n "checking version of $AWK... " >&6; }
- ac_prog_version=`$AWK --version 2>&1 | sed -n 's/^.*GNU Awk[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 3.1.[2-9]*|3.[2-9]*|[4-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- critic_missing="$critic_missing gawk"
-fi
-
-for ac_prog in bison
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_BISON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$BISON"; then
- ac_cv_prog_BISON="$BISON" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_BISON="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-BISON=$ac_cv_prog_BISON
-if test -n "$BISON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5
-$as_echo "$BISON" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$BISON" && break
-done
-
-if test -z "$BISON"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $BISON" >&5
-$as_echo_n "checking version of $BISON... " >&6; }
- ac_prog_version=`$BISON --version 2>&1 | sed -n 's/^.*bison (GNU Bison) \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.7*|[3-9].*|[1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- critic_missing="$critic_missing bison"
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC is sufficient to build libc" >&5
-$as_echo_n "checking if $CC is sufficient to build libc... " >&6; }
-if ${libc_cv_compiler_ok+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
-#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)
-#error insufficient compiler
-#endif
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- libc_cv_compiler_ok=yes
-else
- libc_cv_compiler_ok=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_ok" >&5
-$as_echo "$libc_cv_compiler_ok" >&6; }
-if test $libc_cv_compiler_ok != yes; then :
- critic_missing="$critic_missing compiler"
-fi
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$NM"; then
- ac_cv_prog_NM="$NM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_NM="${ac_tool_prefix}nm"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-NM=$ac_cv_prog_NM
-if test -n "$NM"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
-$as_echo "$NM" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NM"; then
- ac_ct_NM=$NM
- # Extract the first word of "nm", so it can be a program name with args.
-set dummy nm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_NM"; then
- ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_NM="nm"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NM=$ac_cv_prog_ac_ct_NM
-if test -n "$ac_ct_NM"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
-$as_echo "$ac_ct_NM" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_NM" = x; then
- NM="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- NM=$ac_ct_NM
- fi
-else
- NM="$ac_cv_prog_NM"
-fi
-
-
-if test "x$maintainer" = "xyes"; then
- for ac_prog in autoconf
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AUTOCONF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AUTOCONF"; then
- ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AUTOCONF="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AUTOCONF=$ac_cv_prog_AUTOCONF
-if test -n "$AUTOCONF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOCONF" >&5
-$as_echo "$AUTOCONF" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AUTOCONF" && break
-done
-test -n "$AUTOCONF" || AUTOCONF="no"
-
- case "x$AUTOCONF" in
- xno|x|x:) AUTOCONF=no ;;
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
-$as_echo_n "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... " >&6; }
-if ${libc_cv_autoconf_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
- libc_cv_autoconf_works=yes
- else
- libc_cv_autoconf_works=no
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_autoconf_works" >&5
-$as_echo "$libc_cv_autoconf_works" >&6; }
- test $libc_cv_autoconf_works = yes || AUTOCONF=no
- ;;
- esac
- if test "x$AUTOCONF" = xno; then
- aux_missing="$aux_missing autoconf"
- fi
-else
- AUTOCONF=no
-fi
-
-# Check for python3 if available, or else python.
-for ac_prog in python3 python
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_PYTHON_PROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$PYTHON_PROG"; then
- ac_cv_prog_PYTHON_PROG="$PYTHON_PROG" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_PYTHON_PROG="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-PYTHON_PROG=$ac_cv_prog_PYTHON_PROG
-if test -n "$PYTHON_PROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_PROG" >&5
-$as_echo "$PYTHON_PROG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$PYTHON_PROG" && break
-done
-
-if test -z "$PYTHON_PROG"; then
- ac_verc_fail=yes
-else
- # Found it, now check the version.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $PYTHON_PROG" >&5
-$as_echo_n "checking version of $PYTHON_PROG... " >&6; }
- ac_prog_version=`$PYTHON_PROG --version 2>&1 | sed -n 's/^.*Python \([0-9][0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
- critic_missing="$critic_missing python"
-fi
-
-PYTHON="$PYTHON_PROG -B"
-
-
-test -n "$critic_missing" && as_fn_error $? "
-*** These critical programs are missing or too old:$critic_missing
-*** Check the INSTALL file for required versions." "$LINENO" 5
-
-test -n "$aux_missing" && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
-*** These auxiliary programs are missing or incompatible versions:$aux_missing
-*** some features or tests will be disabled.
-*** Check the INSTALL file for required versions." >&5
-$as_echo "$as_me: WARNING:
-*** These auxiliary programs are missing or incompatible versions:$aux_missing
-*** some features or tests will be disabled.
-*** Check the INSTALL file for required versions." >&2;}
-
-# if using special system headers, find out the compiler's sekrit
-# header directory and add that to the list. NOTE: Only does the right
-# thing on a system that doesn't need fixincludes. (Not presently a problem.)
-if test -n "$sysheaders"; then
- SYSINCLUDES=-nostdinc
- for d in include include-fixed; do
- i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
- SYSINCLUDES="$SYSINCLUDES -isystem $i"
- done
- SYSINCLUDES="$SYSINCLUDES \
--isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
- if test -n "$CXX"; then
- CXX_SYSINCLUDES=
- for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
- | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
- test "x$cxxheaders" != x &&
- CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
- done
- fi
-fi
-
-
-
-# Obtain some C++ header file paths. This is used to make a local
-# copy of those headers in Makerules.
-if test -n "$CXX"; then
- find_cxx_header () {
- echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
- | sed -n "\,$1:,{s/:\$//;p}"
- }
- CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
- CXX_CMATH_HEADER="$(find_cxx_header cmath)"
- CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
-fi
-
-
-
-
-# Test if LD_LIBRARY_PATH contains the notation for the current directory
-# since this would lead to problems installing/building glibc.
-# LD_LIBRARY_PATH contains the current directory if one of the following
-# is true:
-# - one of the terminals (":" and ";") is the first or last sign
-# - two terminals occur directly after each other
-# - the path contains an element with a dot in it
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LD_LIBRARY_PATH variable" >&5
-$as_echo_n "checking LD_LIBRARY_PATH variable... " >&6; }
-case ${LD_LIBRARY_PATH} in
- [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
- ld_library_path_setting="contains current directory"
- ;;
- *)
- ld_library_path_setting="ok"
- ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_library_path_setting" >&5
-$as_echo "$ld_library_path_setting" >&6; }
-if test "$ld_library_path_setting" != "ok"; then
-as_fn_error $? "
-*** LD_LIBRARY_PATH shouldn't contain the current directory when
-*** building glibc. Please change the environment variable
-*** and run configure again." "$LINENO" 5
-fi
-
-# Extract the first word of "bash", so it can be a program name with args.
-set dummy bash; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_BASH_SHELL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $BASH_SHELL in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_BASH_SHELL="$BASH_SHELL" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_BASH_SHELL="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_BASH_SHELL" && ac_cv_path_BASH_SHELL="no"
- ;;
-esac
-fi
-BASH_SHELL=$ac_cv_path_BASH_SHELL
-if test -n "$BASH_SHELL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH_SHELL" >&5
-$as_echo "$BASH_SHELL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PERL in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
- ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test "$PERL" != no &&
- (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
- PERL=no
-fi
-# Extract the first word of "install-info", so it can be a program name with args.
-set dummy install-info; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_INSTALL_INFO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $INSTALL_INFO in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
-for as_dir in $as_dummy
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="no"
- ;;
-esac
-fi
-INSTALL_INFO=$ac_cv_path_INSTALL_INFO
-if test -n "$INSTALL_INFO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_INFO" >&5
-$as_echo "$INSTALL_INFO" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .set assembler directive" >&5
-$as_echo_n "checking for .set assembler directive... " >&6; }
-if ${libc_cv_asm_set_directive+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.s <<EOF
-.text
-foo:
-.set glibc_conftest_frobozz,foo
-.globl glibc_conftest_frobozz
-EOF
-# The alpha-dec-osf1 assembler gives only a warning for `.set'
-# (but it doesn't work), so we must do a linking check to be sure.
-cat > conftest1.c <<\EOF
-extern int glibc_conftest_frobozz;
-void _start() { glibc_conftest_frobozz = 1; }
-EOF
-if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
- -nostartfiles -nostdlib $no_ssp \
- -o conftest conftest.s conftest1.c 1>&5 2>&5; then
- libc_cv_asm_set_directive=yes
-else
- libc_cv_asm_set_directive=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_set_directive" >&5
-$as_echo "$libc_cv_asm_set_directive" >&6; }
-if test $libc_cv_asm_set_directive = yes; then
- $as_echo "#define HAVE_ASM_SET_DIRECTIVE 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker support for protected data symbol" >&5
-$as_echo_n "checking linker support for protected data symbol... " >&6; }
-if ${libc_cv_protected_data+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
- int bar __attribute__ ((visibility ("protected"))) = 1;
-EOF
- libc_cv_protected_data=no
- if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cat > conftest.c <<EOF
- extern int bar;
- int main (void) { return bar; }
-EOF
- if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- libc_cv_protected_data=yes
- fi
- fi
- rm -f conftest.*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_protected_data" >&5
-$as_echo "$libc_cv_protected_data" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker support for INSERT in linker script" >&5
-$as_echo_n "checking linker support for INSERT in linker script... " >&6; }
-if ${libc_cv_insert+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
- int __attribute__ ((section(".bar"))) bar = 0x12345678;
- int test (void) { return bar; }
-EOF
- cat > conftest.t <<EOF
- SECTIONS
- {
- .bar : { *(.bar) }
- }
- INSERT AFTER .rela.dyn;
-EOF
- libc_cv_insert=no
- if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- libc_cv_insert=yes
- fi
- rm -f conftest.*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_insert" >&5
-$as_echo "$libc_cv_insert" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((alias()))" >&5
-$as_echo_n "checking for broken __attribute__((alias()))... " >&6; }
-if ${libc_cv_broken_alias_attribute+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
- extern int foo (int x) __asm ("xyzzy");
- int bar (int x) { return x; }
- extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
- extern int dfoo;
- extern __typeof (dfoo) dfoo __asm ("abccb");
- int dfoo = 1;
-EOF
- libc_cv_broken_alias_attribute=yes
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- if grep 'xyzzy' conftest.s >/dev/null &&
- grep 'abccb' conftest.s >/dev/null; then
- libc_cv_broken_alias_attribute=no
- fi
- fi
- rm -f conftest.c conftest.s
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_broken_alias_attribute" >&5
-$as_echo "$libc_cv_broken_alias_attribute" >&6; }
-if test $libc_cv_broken_alias_attribute = yes; then
- as_fn_error $? "working alias attribute support required" "$LINENO" 5
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to put _rtld_local into .sdata section" >&5
-$as_echo_n "checking whether to put _rtld_local into .sdata section... " >&6; }
-if ${libc_cv_have_sdata_section+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- echo "int i;" > conftest.c
- libc_cv_have_sdata_section=no
- if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
- | grep '\.sdata' >/dev/null; then
- libc_cv_have_sdata_section=yes
- fi
- rm -f conftest.c conftest.so
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_sdata_section" >&5
-$as_echo "$libc_cv_have_sdata_section" >&6; }
-if test $libc_cv_have_sdata_section = yes; then
- $as_echo "#define HAVE_SDATA_SECTION 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind-support in compiler" >&5
-$as_echo_n "checking for libunwind-support in compiler... " >&6; }
-if ${libc_cv_cc_with_libunwind+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
- conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
- libc_cv_cc_with_libunwind=yes
- else
- libc_cv_cc_with_libunwind=no
- fi
- rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_with_libunwind" >&5
-$as_echo "$libc_cv_cc_with_libunwind" >&6; }
-
-if test $libc_cv_cc_with_libunwind = yes; then
- $as_echo "#define HAVE_CC_WITH_LIBUNWIND 1" >>confdefs.h
-
-fi
-
-ASFLAGS_config=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --noexecstack is desirable for .S files" >&5
-$as_echo_n "checking whether --noexecstack is desirable for .S files... " >&6; }
-if ${libc_cv_as_noexecstack+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-void foo (void) { }
-EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS
- -S -o conftest.s conftest.c 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; } \
- && grep .note.GNU-stack conftest.s >/dev/null \
- && { ac_try='${CC-cc} $ASFLAGS -Wa,--noexecstack
- -c -o conftest.o conftest.s 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- libc_cv_as_noexecstack=yes
-else
- libc_cv_as_noexecstack=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_as_noexecstack" >&5
-$as_echo "$libc_cv_as_noexecstack" >&6; }
-if test $libc_cv_as_noexecstack = yes; then
- ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z execstack" >&5
-$as_echo_n "checking for linker that supports -z execstack... " >&6; }
-libc_linker_feature=no
-if test x"$gnu_ld" = x"yes"; then
- cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -Wl,-z,execstack -nostdlib -nostartfiles
- -fPIC -shared -o conftest.so conftest.c
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,execstack -nostdlib \
- -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
- | grep "warning: -z execstack ignored" > /dev/null 2>&1; then
- true
- else
- libc_linker_feature=yes
- fi
- fi
- rm -f conftest*
-fi
-if test $libc_linker_feature = yes; then
- libc_cv_z_execstack=yes
-else
- libc_cv_z_execstack=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
-$as_echo "$libc_linker_feature" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z start-stop-gc" >&5
-$as_echo_n "checking for linker that supports -z start-stop-gc... " >&6; }
-libc_linker_feature=no
-if test x"$gnu_ld" = x"yes"; then
- cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -Wl,-z,start-stop-gc -nostdlib -nostartfiles
- -fPIC -shared -o conftest.so conftest.c
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,start-stop-gc -nostdlib \
- -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
- | grep "warning: -z start-stop-gc ignored" > /dev/null 2>&1; then
- true
- else
- libc_linker_feature=yes
- fi
- fi
- rm -f conftest*
-fi
-if test $libc_linker_feature = yes; then
- libc_cv_z_start_stop_gc=yes
-else
- libc_cv_z_start_stop_gc=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
-$as_echo "$libc_linker_feature" >&6; }
-config_vars="$config_vars
-have-z-start-stop-gc = $libc_cv_z_start_stop_gc"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports --depaudit" >&5
-$as_echo_n "checking for linker that supports --depaudit... " >&6; }
-libc_linker_feature=no
-if test x"$gnu_ld" = x"yes"; then
- cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -Wl,--depaudit,x -nostdlib -nostartfiles
- -fPIC -shared -o conftest.so conftest.c
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,--depaudit,x -nostdlib \
- -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
- | grep "warning: --depaudit ignored" > /dev/null 2>&1; then
- true
- else
- libc_linker_feature=yes
- fi
- fi
- rm -f conftest*
-fi
-if test $libc_linker_feature = yes; then
- libc_cv_depaudit=yes
-else
- libc_cv_depaudit=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
-$as_echo "$libc_linker_feature" >&6; }
-config_vars="$config_vars
-have-depaudit = $libc_cv_depaudit"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z pack-relative-relocs" >&5
-$as_echo_n "checking for linker that supports -z pack-relative-relocs... " >&6; }
-libc_linker_feature=no
-if test x"$gnu_ld" = x"yes"; then
- cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -Wl,-z,pack-relative-relocs -nostdlib -nostartfiles
- -fPIC -shared -o conftest.so conftest.c
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,pack-relative-relocs -nostdlib \
- -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
- | grep "warning: -z pack-relative-relocs ignored" > /dev/null 2>&1; then
- true
- else
- libc_linker_feature=yes
- fi
- fi
- rm -f conftest*
-fi
-if test $libc_linker_feature = yes; then
- libc_cv_dt_relr=yes
-else
- libc_cv_dt_relr=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
-$as_echo "$libc_linker_feature" >&6; }
-config_vars="$config_vars
-have-dt-relr = $libc_cv_dt_relr"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports --no-dynamic-linker" >&5
-$as_echo_n "checking for linker that supports --no-dynamic-linker... " >&6; }
-libc_linker_feature=no
-if test x"$gnu_ld" = x"yes"; then
- cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -Wl,--no-dynamic-linker -nostdlib -nostartfiles
- -fPIC -shared -o conftest.so conftest.c
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,--no-dynamic-linker -nostdlib \
- -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
- | grep "warning: --no-dynamic-linker ignored" > /dev/null 2>&1; then
- true
- else
- libc_linker_feature=yes
- fi
- fi
- rm -f conftest*
-fi
-if test $libc_linker_feature = yes; then
- libc_cv_no_dynamic_linker=yes
-else
- libc_cv_no_dynamic_linker=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
-$as_echo "$libc_linker_feature" >&6; }
-config_vars="$config_vars
-have-no-dynamic-linker = $libc_cv_no_dynamic_linker"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -static-pie" >&5
-$as_echo_n "checking for -static-pie... " >&6; }
-if ${libc_cv_static_pie+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if { ac_try='${CC-cc} -static-pie -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- libc_cv_static_pie=yes
-else
- libc_cv_static_pie=no
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_static_pie" >&5
-$as_echo "$libc_cv_static_pie" >&6; }
-config_vars="$config_vars
-have-static-pie = $libc_cv_static_pie"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie" >&5
-$as_echo_n "checking for -fpie... " >&6; }
-if ${libc_cv_fpie+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if { ac_try='${CC-cc} -fpie -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- libc_cv_fpie=yes
-else
- libc_cv_fpie=no
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fpie" >&5
-$as_echo "$libc_cv_fpie" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --hash-style option" >&5
-$as_echo_n "checking for --hash-style option... " >&6; }
-if ${libc_cv_hashstyle+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -fPIC -shared -o conftest.so conftest.c
- -Wl,--hash-style=both -nostdlib 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- libc_cv_hashstyle=yes
-else
- libc_cv_hashstyle=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hashstyle" >&5
-$as_echo "$libc_cv_hashstyle" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOB_DAT reloc" >&5
-$as_echo_n "checking for GLOB_DAT reloc... " >&6; }
-if ${libc_cv_has_glob_dat+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-extern int mumble;
-int foo (void) { return mumble; }
-EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostdlib -nostartfiles $no_ssp
- 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
- libc_cv_has_glob_dat=yes
- else
- libc_cv_has_glob_dat=no
- fi
-else
- libc_cv_has_glob_dat=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_has_glob_dat" >&5
-$as_echo "$libc_cv_has_glob_dat" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mtls-dialect=gnu2" >&5
-$as_echo_n "checking for -mtls-dialect=gnu2... " >&6; }
-if ${libc_cv_mtls_dialect_gnu2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-__thread int i;
-void foo (void)
-{
- i = 10;
-}
-EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
- conftest.c -o conftest 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- libc_cv_mtls_dialect_gnu2=yes
-else
- libc_cv_mtls_dialect_gnu2=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mtls_dialect_gnu2" >&5
-$as_echo "$libc_cv_mtls_dialect_gnu2" >&6; }
-
-config_vars="$config_vars
-have-mtls-dialect-gnu2 = $libc_cv_mtls_dialect_gnu2"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc puts quotes around section names" >&5
-$as_echo_n "checking whether cc puts quotes around section names... " >&6; }
-if ${libc_cv_have_section_quotes+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
- static const int foo
- __attribute__ ((section ("bar"))) = 1;
-EOF
- if ${CC-cc} -S conftest.c -o conftest.s; then
- if grep '\.section.*"bar"' conftest.s >/dev/null; then
- libc_cv_have_section_quotes=yes
- else
- libc_cv_have_section_quotes=no
- fi
- else
- libc_cv_have_section_quotes=unknown
- fi
- rm -f conftest.{c,s}
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_section_quotes" >&5
-$as_echo "$libc_cv_have_section_quotes" >&6; }
-if test $libc_cv_have_section_quotes = yes; then
- $as_echo "#define HAVE_SECTION_QUOTES 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_memset" >&5
-$as_echo_n "checking for __builtin_memset... " >&6; }
-if ${libc_cv_gcc_builtin_memset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<\EOF
-void zero (void *x)
-{
- __builtin_memset (x, 0, 1000);
-}
-EOF
-if { ac_try='${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; };
-then
- libc_cv_gcc_builtin_memset=no
-else
- libc_cv_gcc_builtin_memset=yes
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_builtin_memset" >&5
-$as_echo "$libc_cv_gcc_builtin_memset" >&6; }
-if test "$libc_cv_gcc_builtin_memset" = yes ; then
- $as_echo "#define HAVE_BUILTIN_MEMSET 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for redirection of built-in functions" >&5
-$as_echo_n "checking for redirection of built-in functions... " >&6; }
-if ${libc_cv_gcc_builtin_redirection+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<\EOF
-extern char *strstr (const char *, const char *) __asm ("my_strstr");
-char *foo (const char *a, const char *b)
-{
- return __builtin_strstr (a, b);
-}
-EOF
-if { ac_try='${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; };
-then
- libc_cv_gcc_builtin_redirection=yes
-else
- libc_cv_gcc_builtin_redirection=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_builtin_redirection" >&5
-$as_echo "$libc_cv_gcc_builtin_redirection" >&6; }
-if test "$libc_cv_gcc_builtin_redirection" = no; then
- as_fn_error $? "support for the symbol redirection needed" "$LINENO" 5
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option to disable generation of FMA instructions" >&5
-$as_echo_n "checking for compiler option to disable generation of FMA instructions... " >&6; }
-if ${libc_cv_cc_nofma+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- libc_cv_cc_nofma=
-for opt in -ffp-contract=off -mno-fused-madd; do
- if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- libc_cv_cc_nofma=$opt; break
-fi
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_nofma" >&5
-$as_echo "$libc_cv_cc_nofma" >&6; }
-
-
-if test -n "$submachine"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option for CPU variant" >&5
-$as_echo_n "checking for compiler option for CPU variant... " >&6; }
-if ${libc_cv_cc_submachine+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- libc_cv_cc_submachine=no
- for opt in "-march=$submachine" "-mcpu=$submachine"; do
- if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
-
- libc_cv_cc_submachine="$opt"
- break
-fi
- done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_submachine" >&5
-$as_echo "$libc_cv_cc_submachine" >&6; }
- if test "x$libc_cv_cc_submachine" = xno; then
- as_fn_error $? "${CC-cc} does not support $submachine" "$LINENO" 5
- fi
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-tree-loop-distribute-patterns with \
-__attribute__ ((__optimize__))" >&5
-$as_echo_n "checking if $CC accepts -fno-tree-loop-distribute-patterns with \
-__attribute__ ((__optimize__))... " >&6; }
-if ${libc_cv_cc_loop_to_function+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-void
-__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
-foo (void) {}
-EOF
-libc_cv_cc_loop_to_function=no
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
-then
- libc_cv_cc_loop_to_function=yes
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_loop_to_function" >&5
-$as_echo "$libc_cv_cc_loop_to_function" >&6; }
-if test $libc_cv_cc_loop_to_function = yes; then
- $as_echo "#define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5
-$as_echo_n "checking for libgd... " >&6; }
-if test "$with_gd" != "no"; then
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $libgd_include"
- old_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $libgd_ldflags"
- old_LIBS="$LIBS"
- LIBS="$LIBS -lgd -lpng -lz -lm"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <gd.h>
-int
-main ()
-{
-gdImagePng (0, 0)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- LIBGD=yes
-else
- LIBGD=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- CFLAGS="$old_CFLAGS"
- LDFLAGS="$old_LDFLAGS"
- LIBS="$old_LIBS"
-else
- LIBGD=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGD" >&5
-$as_echo "$LIBGD" >&6; }
-
-
-# SELinux detection
-if test x$with_selinux = xno ; then
- have_selinux=no;
-else
- # See if we have the SELinux library
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5
-$as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lselinux $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char is_selinux_enabled ();
-int
-main ()
-{
-return is_selinux_enabled ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_selinux_is_selinux_enabled=yes
-else
- ac_cv_lib_selinux_is_selinux_enabled=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
-$as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
-if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then :
- have_selinux=yes
-else
- have_selinux=no
-fi
-
- if test x$with_selinux = xyes ; then
- if test x$have_selinux = xno ; then
- as_fn_error $? "SELinux explicitly required, but SELinux library not found" "$LINENO" 5
- fi
- fi
-fi
-# Check if we're building with SELinux support.
-if test "x$have_selinux" = xyes; then
-
-$as_echo "#define HAVE_SELINUX 1" >>confdefs.h
-
-
- # See if we have the libaudit library
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for audit_log_user_avc_message in -laudit" >&5
-$as_echo_n "checking for audit_log_user_avc_message in -laudit... " >&6; }
-if ${ac_cv_lib_audit_audit_log_user_avc_message+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-laudit $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char audit_log_user_avc_message ();
-int
-main ()
-{
-return audit_log_user_avc_message ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_audit_audit_log_user_avc_message=yes
-else
- ac_cv_lib_audit_audit_log_user_avc_message=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audit_audit_log_user_avc_message" >&5
-$as_echo "$ac_cv_lib_audit_audit_log_user_avc_message" >&6; }
-if test "x$ac_cv_lib_audit_audit_log_user_avc_message" = xyes; then :
- have_libaudit=yes
-else
- have_libaudit=no
-fi
-
- if test "x$have_libaudit" = xyes; then
-
-$as_echo "#define HAVE_LIBAUDIT 1" >>confdefs.h
-
- fi
-
-
- # See if we have the libcap library
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cap_init in -lcap" >&5
-$as_echo_n "checking for cap_init in -lcap... " >&6; }
-if ${ac_cv_lib_cap_cap_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcap $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char cap_init ();
-int
-main ()
-{
-return cap_init ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_cap_cap_init=yes
-else
- ac_cv_lib_cap_cap_init=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cap_cap_init" >&5
-$as_echo "$ac_cv_lib_cap_cap_init" >&6; }
-if test "x$ac_cv_lib_cap_cap_init" = xyes; then :
- have_libcap=yes
-else
- have_libcap=no
-fi
-
- if test "x$have_libcap" = xyes; then
-
-$as_echo "#define HAVE_LIBCAP 1" >>confdefs.h
-
- fi
-
-fi
-
-
-CPPUNDEFS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FORTIFY_SOURCE predefine" >&5
-$as_echo_n "checking for _FORTIFY_SOURCE predefine... " >&6; }
-if ${libc_cv_predef_fortify_source+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
-#ifdef _FORTIFY_SOURCE
-# error bogon
-#endif
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- libc_cv_predef_fortify_source=no
-else
- libc_cv_predef_fortify_source=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_predef_fortify_source" >&5
-$as_echo "$libc_cv_predef_fortify_source" >&6; }
-if test $libc_cv_predef_fortify_source = yes; then
- CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the assembler requires one version per symbol" >&5
-$as_echo_n "checking whether the assembler requires one version per symbol... " >&6; }
-if ${libc_cv_symver_needs_alias+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.s <<EOF
- .text
-testfunc:
- .globl testfunc
- .symver testfunc, testfunc1@VERSION1
- .symver testfunc, testfunc1@VERSION2
-EOF
- libc_cv_symver_needs_alias=no
- if ${CC-cc} $ASFLAGS -c conftest.s 2>&5; then
- libc_cv_symver_needs_alias=no
- else
- libc_cv_symver_needs_alias=yes
- fi
- rm conftest.*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_symver_needs_alias" >&5
-$as_echo "$libc_cv_symver_needs_alias" >&6; }
-if test "$libc_cv_symver_needs_alias" = yes; then
- $as_echo "#define SYMVER_NEEDS_ALIAS 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_trap with no external dependencies" >&5
-$as_echo_n "checking for __builtin_trap with no external dependencies... " >&6; }
-if ${libc_cv_builtin_trap+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- libc_cv_builtin_trap=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-__builtin_trap ()
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-libc_undefs=`$NM -u conftest.o |
- LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
- 2>&5` || {
- as_fn_error $? "confusing output from $NM -u" "$LINENO" 5
-}
-echo >&5 "libc_undefs='$libc_undefs'"
-if test -z "$libc_undefs"; then
- libc_cv_builtin_trap=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_builtin_trap" >&5
-$as_echo "$libc_cv_builtin_trap" >&6; }
-if test $libc_cv_builtin_trap = yes; then
- $as_echo "#define HAVE_BUILTIN_TRAP 1" >>confdefs.h
-
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler supports thread_local" >&5
-$as_echo_n "checking whether the C++ compiler supports thread_local... " >&6; }
-if ${libc_cv_cxx_thread_local+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-old_CXXFLAGS="$CXXFLAGS"
-CXXFLAGS="$CXXFLAGS -std=gnu++11"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <thread>
-
-// Compiler support.
-struct S
-{
- S ();
- ~S ();
-};
-thread_local S s;
-S * get () { return &s; }
-
-// libstdc++ support.
-#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
-#error __cxa_thread_atexit_impl not supported
-#endif
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- libc_cv_cxx_thread_local=yes
-else
- libc_cv_cxx_thread_local=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CXXFLAGS="$old_CXXFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cxx_thread_local" >&5
-$as_echo "$libc_cv_cxx_thread_local" >&6; }
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-### End of automated tests.
-### Now run sysdeps configure fragments.
-
-# They also can set these variables.
-use_ldconfig=no
-ldd_rewrite_script=no
-libc_cv_sysconfdir=$sysconfdir
-libc_cv_localstatedir=$localstatedir
-libc_cv_gcc_unwind_find_fde=no
-libc_cv_idn=no
-pthread_in_libc=yes
-
-# Iterate over all the sysdep directories we will use, running their
-# configure fragments.
-for dir in $sysnames; do
- case $dir in
- /*) dest=$dir ;;
- *) dest=$srcdir/$dir ;;
- esac
- if test -r $dest/configure; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: running configure fragment for $dir" >&5
-$as_echo "running configure fragment for $dir" >&6; }
- . $dest/configure
- fi
-done
-
-if test x"$build_mathvec" = xnotset; then
- build_mathvec=no
-fi
-config_vars="$config_vars
-build-mathvec = $build_mathvec"
-
-
-
-
-if test x$libc_cv_gcc_unwind_find_fde = xyes; then
- $as_echo "#define EXPORT_UNWIND_FIND_FDE 1" >>confdefs.h
-
-fi
-
-
-# A sysdeps configure fragment can reset this if IFUNC is not actually
-# usable even though the assembler knows how to generate the symbol type.
-if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
- $as_echo "#define HAVE_IFUNC 1" >>confdefs.h
-
-fi
-config_vars="$config_vars
-have-ifunc = $libc_cv_ld_gnu_indirect_function"
-
-if test x"$libc_cv_gcc_indirect_function" = xyes; then
- $as_echo "#define HAVE_GCC_IFUNC 1" >>confdefs.h
-
-fi
-config_vars="$config_vars
-have-gcc-ifunc = $libc_cv_gcc_indirect_function"
-
-# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
-# configure fragment can override the value to prevent this AC_DEFINE.
-
-if test "x$use_nscd" != xno; then
- $as_echo "#define USE_NSCD 1" >>confdefs.h
-
-fi
-if test "x$build_nscd" = xdefault; then
- build_nscd=$use_nscd
-fi
-
-
-
-
-
-
-
-
-if test x$use_ldconfig = xyes; then
- $as_echo "#define USE_LDCONFIG 1" >>confdefs.h
-
-fi
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIC is default" >&5
-$as_echo_n "checking whether -fPIC is default... " >&6; }
-if ${libc_cv_pic_default+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- libc_cv_pic_default=yes
-cat > conftest.c <<EOF
-#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
-# error PIC is default.
-#endif
-EOF
-if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
- libc_cv_pic_default=no
-fi
-rm -f conftest.*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_pic_default" >&5
-$as_echo "$libc_cv_pic_default" >&6; }
-config_vars="$config_vars
-build-pic-default = $libc_cv_pic_default"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIE is default" >&5
-$as_echo_n "checking whether -fPIE is default... " >&6; }
-if ${libc_cv_cc_pie_default+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- libc_cv_cc_pie_default=yes
-cat > conftest.c <<EOF
-#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
-# error PIE is default.
-#endif
-EOF
-if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
- libc_cv_cc_pie_default=no
-fi
-rm -f conftest.*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_pie_default" >&5
-$as_echo "$libc_cv_cc_pie_default" >&6; }
-config_vars="$config_vars
-cc-pie-default = $libc_cv_cc_pie_default"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can build programs as PIE" >&5
-$as_echo_n "checking if we can build programs as PIE... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef PIE_UNSUPPORTED
-# error PIE is not supported
-#endif
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- libc_cv_pie_supported=yes
-else
- libc_cv_pie_supported=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_pie_supported" >&5
-$as_echo "$libc_cv_pie_supported" >&6; }
-# Disable build-pie-default if target does not support it or glibc is
-# configured with --disable-default-pie.
-if test "x$default_pie" = xno; then
- build_pie_default=no
-else
- build_pie_default=$libc_cv_pie_supported
-fi
-config_vars="$config_vars
-build-pie-default = $build_pie_default"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can build static PIE programs" >&5
-$as_echo_n "checking if we can build static PIE programs... " >&6; }
-libc_cv_static_pie_supported=$libc_cv_pie_supported
-if test "x$libc_cv_pie_supported" != xno \
- -a "$libc_cv_no_dynamic_linker" = yes; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef SUPPORT_STATIC_PIE
-# error static PIE is not supported
-#endif
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- libc_cv_static_pie_supported=yes
-else
- libc_cv_static_pie_supported=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_static_pie_supported" >&5
-$as_echo "$libc_cv_static_pie_supported" >&6; }
-
-# Enable static-pie only if it is available and glibc isn't configured
-# with --disable-default-pie.
-if test "x$default_pie" = xno; then
- libc_cv_static_pie=no
-else
- libc_cv_static_pie=$libc_cv_static_pie_supported
-fi
-if test "$libc_cv_static_pie" = "yes"; then
- $as_echo "#define ENABLE_STATIC_PIE 1" >>confdefs.h
-
-fi
-config_vars="$config_vars
-enable-static-pie = $libc_cv_static_pie"
-
-# Set the `multidir' variable by grabbing the variable from the compiler.
-# We do it once and save the result in a generated makefile.
-libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
-
-
-
-
-
-
-
-
-
-VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
-RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
-
-
-
-if test "$pthread_in_libc" = yes; then
- $as_echo "#define PTHREAD_IN_LIBC 1" >>confdefs.h
-
-fi
-
-
-ac_config_files="$ac_config_files config.make Makefile"
-
-ac_config_commands="$ac_config_commands default"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes: double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \.
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- if test ! -f "$cache_file" || test -h "$cache_file"; then
- cat confcache >"$cache_file"
- else
- case $cache_file in #(
- */* | ?:*)
- mv -f confcache "$cache_file"$$ &&
- mv -f "$cache_file"$$ "$cache_file" ;; #(
- *)
- mv -f confcache "$cache_file" ;;
- esac
- fi
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -pR'
- fi
-else
- as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by GNU C Library $as_me (see version.h), which was
-generated by GNU Autoconf 2.69. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration. Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- --config print configuration, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <https://sourceware.org/bugzilla/>.
-GNU C Library home page: <https://www.gnu.org/software/glibc/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-GNU C Library config.status (see version.h)
-configured by $0, generated by GNU Autoconf 2.69,
- with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=?*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- --*=)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- '') as_fn_error $? "missing file argument" ;;
- esac
- as_fn_append CONFIG_FILES " '$ac_optarg'"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- as_fn_append CONFIG_HEADERS " '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h)
- # Conflict between --help and --header
- as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
- --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
- *) as_fn_append ac_config_targets " $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-config_vars='$config_vars'
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "config.make") CONFIG_FILES="$CONFIG_FILES config.make" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
-
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp= ac_tmp=
- trap 'exit_status=$?
- : "${ac_tmp:=$tmp}"
- { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
- trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
- eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
- || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
-h
-s///
-s/^/:/
-s/[ ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[ ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
- ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_tt"; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any. Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[ ]*#[ ]*define[ ][ ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- for (key in D) D_is_set[key] = 1
- FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
- line = \$ 0
- split(line, arg, " ")
- if (arg[1] == "#") {
- defundef = arg[2]
- mac1 = arg[3]
- } else {
- defundef = substr(arg[1], 2)
- mac1 = arg[2]
- }
- split(mac1, mac2, "(") #)
- macro = mac2[1]
- prefix = substr(line, 1, index(line, defundef) - 1)
- if (D_is_set[macro]) {
- # Preserve the white space surrounding the "#".
- print prefix "define", macro P[macro] D[macro]
- next
- } else {
- # Replace #undef with comments. This is necessary, for example,
- # in the case of _POSIX_SOURCE, which is predefined and required
- # on some systems where configure will not decide to define it.
- if (defundef == "undef") {
- print "/*", prefix defundef, macro, "*/"
- next
- }
- }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$ac_tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- as_fn_append ac_file_inputs " '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$ac_tmp/stdin" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
- >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
- "$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&2;}
-
- rm -f "$ac_tmp/stdin"
- case $ac_file in
- -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
- *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
- esac \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
- :H)
- #
- # CONFIG_HEADER
- #
- if test x"$ac_file" != x-; then
- {
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
- } >"$ac_tmp/config.h" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
- else
- rm -f "$ac_file"
- mv "$ac_tmp/config.h" "$ac_file" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- fi
- else
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
- || as_fn_error $? "could not create -" "$LINENO" 5
- fi
- ;;
-
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "default":C)
-case $CONFIG_FILES in *config.make*)
-echo "$config_vars" >> config.make;;
-esac
-test -d bits || mkdir bits ;;
-
- esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit 1
-fi
-
-#
-# CONFIG_SUBDIRS section.
-#
-if test "$no_recursion" != yes; then
-
- # Remove --cache-file, --srcdir, and --disable-option-checking arguments
- # so they do not pile up.
- ac_sub_configure_args=
- ac_prev=
- eval "set x $ac_configure_args"
- shift
- for ac_arg
- do
- if test -n "$ac_prev"; then
- ac_prev=
- continue
- fi
- case $ac_arg in
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
- | --c=*)
- ;;
- --config-cache | -C)
- ;;
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- ;;
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- ;;
- --disable-option-checking)
- ;;
- *)
- case $ac_arg in
- *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
- esac
- done
-
- # Always prepend --prefix to ensure using the same prefix
- # in subdir configurations.
- ac_arg="--prefix=$prefix"
- case $ac_arg in
- *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
- # Pass --silent
- if test "$silent" = yes; then
- ac_sub_configure_args="--silent $ac_sub_configure_args"
- fi
-
- # Always prepend --disable-option-checking to silence warnings, since
- # different subdirs can have different --enable and --with options.
- ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
- ac_popdir=`pwd`
- for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
-
- # Do not complain, so a configure script can configure whichever
- # parts of a large source tree are present.
- test -d "$srcdir/$ac_dir" || continue
-
- ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
- $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
- $as_echo "$ac_msg" >&6
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- cd "$ac_dir"
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- ac_sub_configure=$ac_srcdir/configure.gnu
- elif test -f "$ac_srcdir/configure"; then
- ac_sub_configure=$ac_srcdir/configure
- elif test -f "$ac_srcdir/configure.in"; then
- # This should be Cygnus configure.
- ac_sub_configure=$ac_aux_dir/configure
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
-$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
- ac_sub_configure=
- fi
-
- # The recursion is here.
- if test -n "$ac_sub_configure"; then
- # Make the cache file name correct relative to the subdirectory.
- case $cache_file in
- [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
- *) # Relative name.
- ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
- esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
- # The eval makes quoting arguments work.
- eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
- --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
- as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
- fi
-
- cd "$ac_popdir"
- done
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure.ac
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure.ac (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/configure.ac (nonexistent)
@@ -1,1838 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-dnl Note we do not use AC_PREREQ here! See aclocal.m4 for what we use instead.
-AC_INIT([GNU C Library], [(see version.h)], [https://sourceware.org/bugzilla/],
- [glibc], [https://www.gnu.org/software/glibc/])
-AC_CONFIG_SRCDIR([include/features.h])
-AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_AUX_DIR([scripts])
-
-ACX_PKGVERSION([GNU libc])
-ACX_BUGURL([https://www.gnu.org/software/libc/bugs.html])
-AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
- [Package description])
-AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
- [Bug reporting address])
-
-# Glibc should not depend on any header files
-AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
- [m4_divert_text([DEFAULTS],
- [ac_includes_default='/* none */'])])
-
-# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
-# here to work around the Autoconf issue discussed in
-# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
-AC_DEFUN([AC_PROG_CPP],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_ARG_VAR([CPP], [C preprocessor])dnl
-_AC_ARG_VAR_CPPFLAGS()dnl
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- CPP="$CC -E"
-fi
-AC_SUBST(CPP)dnl
-])# AC_PROG_CPP
-
-# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
-# issue discussed in
-# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
-AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
-
-dnl This is here so we can set $subdirs directly based on configure fragments.
-AC_CONFIG_SUBDIRS()
-
-AC_CANONICAL_HOST
-
-AC_PROG_CC
-if test $host != $build; then
- AC_CHECK_PROGS(BUILD_CC, gcc cc)
-fi
-AC_SUBST(cross_compiling)
-AC_PROG_CPP
-AC_CHECK_TOOL(READELF, readelf, false)
-
-# We need the C++ compiler only for testing.
-AC_PROG_CXX
-# It's useless to us if it can't link programs (e.g. missing -lstdc++).
-AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl
-AC_LANG_PUSH([C++])
-# Default, dynamic case.
-AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
- [libc_cv_cxx_link_ok=yes],
- [libc_cv_cxx_link_ok=no])
-# Static case.
-old_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS -static"
-AC_LINK_IFELSE([AC_LANG_SOURCE([
-#include <iostream>
-
-int
-main()
-{
- std::cout << "Hello, world!";
- return 0;
-}
-])],
- [],
- [libc_cv_cxx_link_ok=no])
-LDFLAGS="$old_LDFLAGS"
-AC_LANG_POP([C++])])
-AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])
-
-if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
- AC_MSG_ERROR([you must configure in a separate build directory])
-fi
-
-# This will get text that should go into config.make.
-config_vars=
-
-# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
-AC_ARG_WITH([gd],
- AS_HELP_STRING([--with-gd=DIR],
- [find libgd include dir and library with prefix DIR]),
- [dnl
-case "$with_gd" in
-yes|''|no) ;;
-*) libgd_include="-I$withval/include"
- libgd_ldflags="-L$withval/lib" ;;
-esac
-])
-AC_ARG_WITH([gd-include],
- AS_HELP_STRING([--with-gd-include=DIR],
- [find libgd include files in DIR]),
- [dnl
-case "$with_gd_include" in
-''|no) ;;
-*) libgd_include="-I$withval" ;;
-esac
-])
-AC_ARG_WITH([gd-lib],
- AS_HELP_STRING([--with-gd-lib=DIR],
- [find libgd library files in DIR]),
- [dnl
-case "$with_gd_lib" in
-''|no) ;;
-*) libgd_ldflags="-L$withval" ;;
-esac
-])
-
-if test -n "$libgd_include"; then
- config_vars="$config_vars
-CFLAGS-memusagestat.c = $libgd_include"
-fi
-if test -n "$libgd_ldflags"; then
- config_vars="$config_vars
-libgd-LDFLAGS = $libgd_ldflags"
-fi
-
-dnl Arguments to specify presence of other packages/features.
-AC_ARG_WITH([binutils],
- AS_HELP_STRING([--with-binutils=PATH],
- [specify location of binutils (as and ld)]),
- [path_binutils=$withval],
- [path_binutils=''])
-AC_ARG_WITH([selinux],
- AS_HELP_STRING([--with-selinux],
- [if building with SELinux support]),
- [with_selinux=$withval],
- [with_selinux=auto])
-
-AC_ARG_WITH([headers],
- AS_HELP_STRING([--with-headers=PATH],
- [location of system headers to use
- (for example /usr/src/linux/include)
- @<:@default=compiler default@:>@]),
- [sysheaders=$withval],
- [sysheaders=''])
-AC_SUBST(sysheaders)
-
-AC_SUBST(use_default_link)
-AC_ARG_WITH([default-link],
- AS_HELP_STRING([--with-default-link],
- [do not use explicit linker scripts]),
- [use_default_link=$withval],
- [use_default_link=no])
-
-dnl Additional build flags injection.
-AC_ARG_WITH([nonshared-cflags],
- AS_HELP_STRING([--with-nonshared-cflags=CFLAGS],
- [build nonshared libraries with additional CFLAGS]),
- [extra_nonshared_cflags=$withval],
- [extra_nonshared_cflags=])
-AC_SUBST(extra_nonshared_cflags)
-AC_ARG_WITH([rtld-early-cflags],
- AS_HELP_STRING([--with-rtld-early-cflags=CFLAGS],
- [build early initialization with additional CFLAGS]),
- [rtld_early_cflags=$withval],
- [rtld_early_cflags=])
-AC_SUBST(rtld_early_cflags)
-
-AC_ARG_WITH([timeoutfactor],
- AS_HELP_STRING([--with-timeoutfactor=NUM],
- [specify an integer to scale the timeout]),
- [timeoutfactor=$withval],
- [timeoutfactor=1])
-AC_DEFINE_UNQUOTED(TIMEOUTFACTOR, $timeoutfactor)
-
-AC_ARG_ENABLE([sanity-checks],
- AS_HELP_STRING([--disable-sanity-checks],
- [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
- [enable_sanity=$enableval],
- [enable_sanity=yes])
-
-AC_ARG_ENABLE([shared],
- AS_HELP_STRING([--enable-shared],
- [build shared library @<:@default=yes if GNU ld@:>@]),
- [shared=$enableval],
- [shared=yes])
-AC_ARG_ENABLE([profile],
- AS_HELP_STRING([--enable-profile],
- [build profiled library @<:@default=no@:>@]),
- [profile=$enableval],
- [profile=no])
-AC_ARG_ENABLE([default-pie],
- AS_HELP_STRING([--disable-default-pie],
- [Do not build glibc programs and the testsuite as PIE @<:@default=no@:>@]),
- [default_pie=$enableval],
- [default_pie=yes])
-AC_ARG_ENABLE([timezone-tools],
- AS_HELP_STRING([--disable-timezone-tools],
- [do not install timezone tools @<:@default=install@:>@]),
- [enable_timezone_tools=$enableval],
- [enable_timezone_tools=yes])
-AC_SUBST(enable_timezone_tools)
-
-AC_ARG_ENABLE([hardcoded-path-in-tests],
- AS_HELP_STRING([--enable-hardcoded-path-in-tests],
- [hardcode newly built glibc path in tests @<:@default=no@:>@]),
- [hardcoded_path_in_tests=$enableval],
- [hardcoded_path_in_tests=no])
-AC_SUBST(hardcoded_path_in_tests)
-
-AC_ARG_ENABLE([hidden-plt],
- AS_HELP_STRING([--disable-hidden-plt],
- [do not hide internal function calls to avoid PLT]),
- [hidden=$enableval],
- [hidden=yes])
-if test "x$hidden" = xno; then
- AC_DEFINE(NO_HIDDEN)
-fi
-
-AC_ARG_ENABLE([bind-now],
- AS_HELP_STRING([--enable-bind-now],
- [disable lazy relocations in DSOs]),
- [bindnow=$enableval],
- [bindnow=no])
-AC_SUBST(bindnow)
-if test "x$bindnow" = xyes; then
- AC_DEFINE(BIND_NOW)
-fi
-
-dnl Build glibc with -fstack-protector, -fstack-protector-all, or
-dnl -fstack-protector-strong.
-AC_ARG_ENABLE([stack-protector],
- AS_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
- [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
- [enable_stack_protector=$enableval],
- [enable_stack_protector=no])
-case "$enable_stack_protector" in
-all|yes|no|strong) ;;
-*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
-esac
-
-dnl On some platforms we cannot use dynamic loading. We must provide
-dnl static NSS modules.
-AC_ARG_ENABLE([static-nss],
- AS_HELP_STRING([--enable-static-nss],
- [build static NSS modules @<:@default=no@:>@]),
- [static_nss=$enableval],
- [static_nss=no])
-dnl Enable static NSS also if we build no shared objects.
-if test x"$static_nss" = xyes || test x"$shared" = xno; then
- static_nss=yes
- AC_DEFINE(DO_STATIC_NSS)
-fi
-
-AC_ARG_ENABLE([force-install],
- AS_HELP_STRING([--disable-force-install],
- [don't force installation of files from this package, even if they are older than the installed files]),
- [force_install=$enableval],
- [force_install=yes])
-AC_SUBST(force_install)
-
-AC_ARG_ENABLE([maintainer-mode],
- AS_HELP_STRING([--enable-maintainer-mode],
- [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
- [maintainer=$enableval],
- [maintainer=no])
-
-dnl On some platforms we allow dropping compatibility with all kernel
-dnl versions.
-AC_ARG_ENABLE([kernel],
- AS_HELP_STRING([--enable-kernel=VERSION],
- [compile for compatibility with kernel not older than VERSION]),
- [minimum_kernel=$enableval],
- [])
-dnl Prevent unreasonable values.
-if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
- # Better nothing than this.
- minimum_kernel=""
-else
- if test "$minimum_kernel" = current; then
- minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
- fi
-fi
-
-dnl For the development we sometimes want gcc to issue even more warnings.
-dnl This is not the default since many of the extra warnings are not
-dnl appropriate.
-AC_ARG_ENABLE([all-warnings],
- AS_HELP_STRING([--enable-all-warnings],
- [enable all useful warnings gcc can issue]),
- [all_warnings=$enableval],
- [])
-AC_SUBST(all_warnings)
-
-AC_ARG_ENABLE([werror],
- AS_HELP_STRING([--disable-werror],
- [do not build with -Werror]),
- [enable_werror=$enableval],
- [enable_werror=yes])
-AC_SUBST(enable_werror)
-
-AC_ARG_ENABLE([multi-arch],
- AS_HELP_STRING([--enable-multi-arch],
- [enable single DSO with optimizations for multiple architectures]),
- [multi_arch=$enableval],
- [multi_arch=default])
-
-AC_ARG_ENABLE([experimental-malloc],
- AS_HELP_STRING([--disable-experimental-malloc],
- [disable experimental malloc features]),
- [experimental_malloc=$enableval],
- [experimental_malloc=yes])
-AC_SUBST(experimental_malloc)
-
-AC_ARG_ENABLE([memory-tagging],
- AS_HELP_STRING([--enable-memory-tagging],
- [enable memory tagging if supported by the architecture @<:@default=no@:>@]),
- [memory_tagging=$enableval],
- [memory_tagging=no])
-if test "$memory_tagging" = yes; then
- # Only enable this on architectures that support it.
- case $host_cpu in
- aarch64)
- AC_DEFINE(USE_MTAG)
- ;;
- esac
-fi
-AC_SUBST(memory_tagging)
-
-AC_ARG_ENABLE([crypt],
- AS_HELP_STRING([--disable-crypt],
- [do not build nor install the passphrase hashing library, libcrypt]),
- [build_crypt=$enableval],
- [build_crypt=yes])
-AC_SUBST(build_crypt)
-
-AC_ARG_ENABLE([nss-crypt],
- AS_HELP_STRING([--enable-nss-crypt],
- [enable libcrypt to use nss]),
- [nss_crypt=$enableval],
- [nss_crypt=no])
-if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
- AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
- nss_crypt=no
-fi
-if test x$nss_crypt = xyes; then
- nss_includes=-I$(nss-config --includedir 2>/dev/null)
- if test $? -ne 0; then
- AC_MSG_ERROR([cannot find include directory with nss-config])
- fi
- nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
- if test $? -ne 0; then
- AC_MSG_ERROR([cannot find include directory with nspr-config])
- fi
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $nss_includes $nspr_includes"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
-#include <hasht.h>
-#include <nsslowhash.h>
-void f (void) { NSSLOW_Init (); }])],
- libc_cv_nss_crypt=yes,
- AC_MSG_ERROR([
-cannot find NSS headers with lowlevel hash function interfaces]))
- old_LIBS="$LIBS"
- old_LDFLAGS="$LDFLAGS"
- LIBS="$LIBS -lfreebl3"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
-#include <hasht.h>
-#include <nsslowhash.h>],
- [NSSLOW_Init();])],
- libc_cv_nss_crypt=yes,
- AC_MSG_ERROR([
-cannot link program using lowlevel NSS hash functions]))
- # Check to see if there is a static NSS cryptographic library.
- # If there isn't then we can't link anything with libcrypt.a,
- # and that might mean disabling some static tests.
- LDFLAGS="$LDFLAGS -static"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
-#include <hasht.h>
-#include <nsslowhash.h>],
- [NSSLOW_Init();])],
- libc_cv_static_nss_crypt=yes,
- libc_cv_static_nss_crypt=no)
- LDFLAGS="$old_LDFLAGS"
- CFLAGS="$old_CFLAGS"
- LIBS="$old_LIBS"
-else
- libc_cv_nss_crypt=no
- libc_cv_static_nss_crypt=no
-fi
-AC_SUBST(libc_cv_nss_crypt)
-AC_SUBST(libc_cv_static_nss_crypt)
-
-
-AC_ARG_ENABLE([systemtap],
- [AS_HELP_STRING([--enable-systemtap],
- [enable systemtap static probe points @<:@default=no@:>@])],
- [systemtap=$enableval],
- [systemtap=no])
-if test "x$systemtap" != xno; then
- AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
- old_CFLAGS="$CFLAGS"
- CFLAGS="-std=gnu11 $CFLAGS"
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
-void foo (int i, void *p)
-{
- asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
- :: STAP_PROBE_ASM_OPERANDS (2, i, p));
-}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
- CFLAGS="$old_CFLAGS"])
- if test $libc_cv_sdt = yes; then
- AC_DEFINE([USE_STAP_PROBE])
- elif test "x$systemtap" != xauto; then
- AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
- fi
-fi
-
-AC_ARG_ENABLE([build-nscd],
- [AS_HELP_STRING([--disable-build-nscd],
- [disable building and installing the nscd daemon])],
- [build_nscd=$enableval],
- [build_nscd=default])
-AC_SUBST(build_nscd)
-
-# Note the use of $use_nscd is near the bottom of the file.
-AC_ARG_ENABLE([nscd],
- [AS_HELP_STRING([--disable-nscd],
- [library functions will not contact the nscd daemon])],
- [use_nscd=$enableval],
- [use_nscd=yes])
-
-AC_ARG_ENABLE([pt_chown],
- [AS_HELP_STRING([--enable-pt_chown],
- [Enable building and installing pt_chown])],
- [build_pt_chown=$enableval],
- [build_pt_chown=no])
-AC_SUBST(build_pt_chown)
-if test "$build_pt_chown" = yes; then
- AC_DEFINE(HAVE_PT_CHOWN)
-fi
-
-AC_ARG_ENABLE([tunables],
- [AS_HELP_STRING([--enable-tunables],
- [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
- [have_tunables=$enableval],
- [have_tunables=yes])
-AC_SUBST(have_tunables)
-if test "$have_tunables" = yes; then
- AC_DEFINE(HAVE_TUNABLES)
-fi
-
-# The abi-tags file uses a fairly simplistic model for name recognition that
-# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
-# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
-# This doesn't get used much beyond that, so it's fairly safe.
-case "$host_os" in
-linux*)
- ;;
-gnu*)
- host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
- ;;
-esac
-
-AC_ARG_ENABLE([mathvec],
- [AS_HELP_STRING([--enable-mathvec],
- [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
- [build_mathvec=$enableval],
- [build_mathvec=notset])
-
-AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
-#ifndef __CET__
-# error no CET compiler support
-#endif]])],
- [libc_cv_compiler_default_cet=yes],
- [libc_cv_compiler_default_cet=no])
-
-AC_ARG_ENABLE([cet],
- AS_HELP_STRING([--enable-cet],
- [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
- [enable_cet=$enableval],
- [enable_cet=$libc_cv_compiler_default_cet])
-
-AC_ARG_ENABLE([scv],
- AC_HELP_STRING([--disable-scv],
- [syscalls will not use scv instruction, even if the kernel supports it, powerpc only]),
- [use_scv=$enableval],
- [use_scv=yes])
-
-AS_IF([[test "$use_scv" != "no"]],[AC_DEFINE(USE_PPC_SCV)])
-
-# We keep the original values in `$config_*' and never modify them, so we
-# can write them unchanged into config.make. Everything else uses
-# $machine, $vendor, and $os, and changes them whenever convenient.
-config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
-
-# Don't allow vendor == "unknown"
-test "$config_vendor" = unknown && config_vendor=
-config_os="`echo $config_os | sed 's/^unknown-//'`"
-
-# Some configurations imply other options.
-elf=yes
-
-# The configure fragment of a port can modify these to supplement
-# or override the table in the case statement below. No fragment should
-# ever change the config_* variables, however.
-machine=$config_machine
-vendor=$config_vendor
-os=$config_os
-base_os=''
-
-submachine=
-AC_ARG_WITH([cpu],
- AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
- [dnl
- case "$withval" in
- yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
- no) ;;
- *) submachine="$withval" ;;
- esac
-])
-
-# An preconfigure script can set this when it wants to disable the sanity
-# check below.
-libc_config_ok=no
-
-# A preconfigure script for a system that may or may not use fpu
-# sysdeps directories sets this to a preprocessor conditional for
-# whether to use such directories.
-with_fp_cond=1
-
-dnl Let sysdeps/*/preconfigure act here.
-LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
-
-
-###
-### By using the undocumented --enable-hacker-mode option for configure
-### one can skip this test to make the configuration not fail for unsupported
-### platforms.
-###
-if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
- case "$machine-$host_os" in
- *-linux* | *-gnu*)
- ;;
- *)
- AC_MSG_ERROR([
-*** The GNU C library is currently unavailable for this platform.
-*** If you are interested in seeing glibc on this platform visit
-*** the "How to submit a new port" in the wiki:
-*** https://sourceware.org/glibc/wiki/#Development
-*** and join the community!])
- ;;
- esac
-fi
-
-# Set base_machine if not set by a preconfigure fragment.
-test -n "$base_machine" || base_machine=$machine
-AC_SUBST(base_machine)
-
-# Determine whether to use fpu or nofpu sysdeps directories.
-AC_CACHE_CHECK([for use of fpu sysdeps directories],
- libc_cv_with_fp, [dnl
-cat > conftest.c <<EOF
-#if $with_fp_cond
-int dummy;
-#else
-# error "no hardware floating point"
-#endif
-EOF
-libc_cv_with_fp=no
-if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
- 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
- libc_cv_with_fp=yes
-fi
-rm -f conftest*])
-AC_SUBST(libc_cv_with_fp)
-
-AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
-LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
- [libc_cv_ssp=yes],
- [libc_cv_ssp=no])
-])
-
-AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
-LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
- [libc_cv_ssp_strong=yes],
- [libc_cv_ssp_strong=no])
-])
-
-AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
-LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
- [libc_cv_ssp_all=yes],
- [libc_cv_ssp_all=no])
-])
-
-stack_protector=
-no_stack_protector=
-if test "$libc_cv_ssp" = yes; then
- no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
- AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
-fi
-
-if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
- stack_protector="-fstack-protector"
- AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
-elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
- stack_protector="-fstack-protector-all"
- AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
-elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
- stack_protector="-fstack-protector-strong"
- AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
-else
- stack_protector="-fno-stack-protector"
- AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
-fi
-AC_SUBST(libc_cv_ssp)
-AC_SUBST(stack_protector)
-AC_SUBST(no_stack_protector)
-
-if test -n "$stack_protector"; then
- dnl Don't run configure tests with stack-protection on, to avoid problems with
- dnl bootstrapping.
- no_ssp=-fno-stack-protector
-else
- no_ssp=
-
- if test "$enable_stack_protector" != no; then
- AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
- fi
-fi
-
-# For the multi-arch option we need support in the assembler & linker.
-AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
- libc_cv_ld_gnu_indirect_function, [dnl
-cat > conftest.S <<EOF
-.type foo,%gnu_indirect_function
-foo:
-.globl _start
-_start:
-.globl __start
-__start:
-.data
-#ifdef _LP64
-.quad foo
-#else
-.long foo
-#endif
-EOF
-libc_cv_ld_gnu_indirect_function=no
-if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
- -nostartfiles -nostdlib $no_ssp \
- -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
- # Do a link to see if the backend supports IFUNC relocs.
- $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
- LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && {
- libc_cv_ld_gnu_indirect_function=yes
- }
-fi
-rm -f conftest*])
-
-# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
-AC_CACHE_CHECK([for gcc attribute ifunc support],
- libc_cv_gcc_indirect_function, [dnl
-cat > conftest.c <<EOF
-extern int func (int);
-int used_func (int a)
-{
- return a;
-}
-static void *resolver ()
-{
- return &used_func;
-}
-extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
-EOF
-libc_cv_gcc_indirect_function=no
-if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
- 2>&AS_MESSAGE_LOG_FD ; then
- if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
- libc_cv_gcc_indirect_function=yes
- fi
-fi
-rm -f conftest*])
-
-# Check if linker supports textrel relocation with ifunc (used on elf/tests).
-# Note that it relies on libc_cv_ld_gnu_indirect_function test above.
-AC_CACHE_CHECK([whether the linker supports textrels along with ifunc],
- libc_cv_textrel_ifunc, [dnl
-cat > conftest.S <<EOF
-.type foo,%gnu_indirect_function
-foo:
-.globl _start
-_start:
-.globl __start
-__start:
-.data
-#ifdef _LP64
-.quad foo
-#else
-.long foo
-#endif
-.text
-.globl address
-address:
-#ifdef _LP64
-.quad address
-#else
-.long address
-#endif
-EOF
-libc_cv_textrel_ifunc=no
-if test $libc_cv_ld_gnu_indirect_function = yes; then
- if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S); then
- libc_cv_textrel_ifunc=yes
- fi
-fi
-rm -f conftest*])
-AC_SUBST(libc_cv_textrel_ifunc)
-
-# Check if CC supports attribute retain as it is used in attribute_used_retain macro.
-AC_CACHE_CHECK([for GNU attribute retain support],
- libc_cv_gnu_retain, [dnl
-cat > conftest.c <<EOF
-static int var __attribute__ ((used, retain, section ("__libc_atexit")));
-EOF
-libc_cv_gnu_retain=no
-if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&AS_MESSAGE_LOG_FD \
- 2>&AS_MESSAGE_LOG_FD ; then
- libc_cv_gnu_retain=yes
-fi
-rm -f conftest*])
-if test $libc_cv_gnu_retain = yes; then
- AC_DEFINE(HAVE_GNU_RETAIN)
-fi
-LIBC_CONFIG_VAR([have-gnu-retain], [$libc_cv_gnu_retain])
-
-# Check if gcc warns about alias for function with incompatible types.
-AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types],
- libc_cv_gcc_incompatible_alias, [dnl
-cat > conftest.c <<EOF
-int __redirect_foo (const void *s, int c);
-
-__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
-__typeof (__redirect_foo) *foo_impl (void)
-{
- return 0;
-}
-
-extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
-EOF
-libc_cv_gcc_incompatible_alias=yes
-if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
- libc_cv_gcc_incompatible_alias=no
-fi
-rm -f conftest*])
-
-if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
- if test x"$multi_arch" = xyes; then
- AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
- else
- multi_arch=no
- fi
-fi
-if test x"$libc_cv_gcc_indirect_function" != xyes; then
- # GCC 8+ emits a warning for alias with incompatible types and it might
- # fail to build ifunc resolvers aliases to either weak or internal
- # symbols. Disables multiarch build in this case.
- if test x"$libc_cv_gcc_incompatible_alias" = xyes; then
- AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types])
- if test x"$multi_arch" = xyes; then
- AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support])
- fi
- AC_MSG_WARN([Multi-arch is disabled.])
- multi_arch=no
- elif test x"$multi_arch" = xyes; then
- AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
-Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
- fi
-fi
-multi_arch_d=
-if test x"$multi_arch" != xno; then
- multi_arch_d=/multiarch
-fi
-
-# Compute the list of sysdep directories for this configuration.
-# This can take a while to compute.
-sysdep_dir=$srcdir/sysdeps
-AC_MSG_CHECKING(sysdep dirs)
-dnl We need to use [ and ] for other purposes for a while now.
-changequote(,)dnl
-# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
-os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
-
-test "x$base_os" != x || case "$os" in
-gnu*)
- base_os=mach/hurd ;;
-linux*)
- base_os=unix/sysv ;;
-esac
-
-# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
-tail=$os
-ostry=$os
-while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
- ostry="$ostry /$o"
- tail=$o
-done
-o=`echo $tail | sed 's/[0-9]*$//'`
-if test $o != $tail; then
- ostry="$ostry /$o"
-fi
-# For linux-gnu, try linux-gnu, then linux.
-o=`echo $tail | sed 's/-.*$//'`
-if test $o != $tail; then
- ostry="$ostry /$o"
-fi
-
-# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
-base=
-tail=$base_os
-while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
- set $b
- base="$base /$1"
- tail="$2"
-done
-
-# For sparc/sparc32, try sparc/sparc32 and then sparc.
-mach=
-tail=$machine${submachine:+/$submachine}
-while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
- set $m
- # Prepend the machine's FPU directory unless the architecture specific
- # preconfigure disables it.
- if test "$libc_cv_with_fp" = yes; then
- maybe_fpu=/fpu
- else
- maybe_fpu=/nofpu
- fi
- # For each machine term, try it with and then without /multiarch.
- for try_fpu in $maybe_fpu ''; do
- for try_multi in $multi_arch_d ''; do
- mach="$mach /$1$try_fpu$try_multi"
- done
- done
- tail="$2"
-done
-
-dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
-changequote([,])dnl
-
-# Find what sysdep directories exist.
-sysnames=
-for b in $base ''; do
- for m0 in $mach ''; do
- for v in /$vendor ''; do
- test "$v" = / && continue
- for o in /$ostry ''; do
- test "$o" = / && continue
- for m in $mach ''; do
- try_suffix="$m0$b$v$o$m"
- if test -n "$try_suffix"; then
- try_srcdir="${srcdir}/"
- try="sysdeps$try_suffix"
- test -n "$enable_debug_configure" &&
- echo "$0 [DEBUG]: try $try" >&2
- if test -d "$try_srcdir$try"; then
- sysnames="$sysnames $try"
- { test -n "$o" || test -n "$b"; } && os_used=t
- { test -n "$m" || test -n "$m0"; } && machine_used=t
- case x${m0:-$m} in
- x*/$submachine) submachine_used=t ;;
- esac
- fi
- fi
- done
- done
- done
- done
-done
-
-# If the assembler supports gnu_indirect_function symbol type and the
-# architecture supports multi-arch, we enable multi-arch by default.
-case $sysnames in
-*"$multi_arch_d"*)
- ;;
-*)
- test x"$multi_arch" = xdefault && multi_arch=no
- ;;
-esac
-if test x"$multi_arch" != xno; then
- AC_DEFINE(USE_MULTIARCH)
-fi
-AC_SUBST(multi_arch)
-
-if test -z "$os_used" && test "$os" != none; then
- AC_MSG_ERROR(Operating system $os is not supported.)
-fi
-if test -z "$machine_used" && test "$machine" != none; then
- AC_MSG_ERROR(The $machine is not supported.)
-fi
-if test -z "$submachine_used" && test -n "$submachine"; then
- AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
-fi
-AC_SUBST(submachine)
-
-# We have now validated the configuration.
-
-# Expand the list of system names into a full list of directories
-# from each element's parent name and Implies file (if present).
-set $sysnames
-names=
-while test $# -gt 0; do
- name=$1
- shift
-
- case " $names " in *" $name "*)
- # Already in the list.
- continue
- esac
-
- # Report each name as we discover it, so there is no long pause in output.
- echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
-
- name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
-
- case $name in
- /*) xsrcdir= ;;
- *) xsrcdir=$srcdir/ ;;
- esac
- test -n "$enable_debug_configure" &&
- echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
-
- for implies_file in Implies Implies-before Implies-after; do
- implies_type=`echo $implies_file | sed s/-/_/`
- eval ${implies_type}=
- if test -f $xsrcdir$name/$implies_file; then
- # Collect more names from the `Implies' file (removing comments).
- implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
- for x in $implied_candidate; do
- found=no
- if test -d $xsrcdir$name_base/$x; then
- eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
- found=yes
- fi
- try="sysdeps/$x"
- try_srcdir=$srcdir/
- test -n "$enable_debug_configure" &&
- echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
- if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
- then
- eval "${implies_type}=\"\$${implies_type} \$try\""
- found=yes
- fi
- if test $found = no; then
- AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
- fi
- done
- fi
- done
-
- # Add NAME to the list of names.
- names="$names $name"
-
- # Find the parent of NAME, using the empty string if it has none.
-changequote(,)dnl
- parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
-changequote([,])dnl
-
- test -n "$enable_debug_configure" &&
- echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
-Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
-
- # Add the names implied by NAME, and NAME's parent (if it has one), to
- # the list of names to be processed (the argument list). We prepend the
- # implied names to the list and append the parent. We want implied
- # directories to come before further directories inferred from the
- # configuration components; this ensures that for sysv4, unix/common
- # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
- # after sysv4).
- sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
- test -n "$sysnames" && set $sysnames
-done
-
-# Add the default directories.
-default_sysnames="sysdeps/generic"
-sysnames="$names $default_sysnames"
-AC_SUBST(sysnames)
-# The other names were emitted during the scan.
-AC_MSG_RESULT($default_sysnames)
-
-
-### Locate tools.
-
-AC_PROG_INSTALL
-if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
- # The makefiles need to use a different form to find it in $srcdir.
- INSTALL='\$(..)./scripts/install-sh -c'
-fi
-AC_PROG_LN_S
-
-LIBC_PROG_BINUTILS
-
-# Accept binutils 2.25 or newer.
-AC_CHECK_PROG_VER(AS, $AS, --version,
- [GNU assembler.* \([0-9]*\.[0-9.]*\)],
- [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
- AS=: critic_missing="$critic_missing as")
-
-libc_cv_with_lld=no
-case $($LD --version) in
- "GNU gold"*)
- # Accept gold 1.14 or higher
- AC_CHECK_PROG_VER(LD, $LD, --version,
- [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
- [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
- LD=: critic_missing="$critic_missing GNU gold")
- ;;
- "LLD"*)
- # Accept LLD 13.0.0 or higher
- AC_CHECK_PROG_VER(LD, $LD, --version,
- [LLD.* \([0-9][0-9]*\.[0-9.]*\)],
- [1[3-9].*|[2-9][0-9].*],
- LD=: critic_missing="$critic_missing LLD")
- libc_cv_with_lld=yes
- ;;
- *)
- AC_CHECK_PROG_VER(LD, $LD, --version,
- [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
- [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
- LD=: critic_missing="$critic_missing GNU ld")
- ;;
-esac
-LIBC_CONFIG_VAR([with-lld], [$libc_cv_with_lld])
-
-# These programs are version sensitive.
-AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
- [GNU Make[^0-9]*\([0-9][0-9.]*\)],
- [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
-
-AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
- [GNU gettext.* \([0-9]*\.[0-9.]*\)],
- [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
- MSGFMT=: aux_missing="$aux_missing msgfmt")
-AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
- [GNU texinfo.* \([0-9][0-9.]*\)],
- [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
- MAKEINFO=: aux_missing="$aux_missing makeinfo")
-AC_CHECK_PROG_VER(SED, sed, --version,
- [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
- [3.0[2-9]*|3.[1-9]*|[4-9]*],
- SED=: aux_missing="$aux_missing sed")
-AC_CHECK_PROG_VER(AWK, gawk, --version,
- [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
- [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
-AC_CHECK_PROG_VER(BISON, bison, --version,
- [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
- [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison")
-
-AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
-AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
-#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)
-#error insufficient compiler
-#endif]])],
- [libc_cv_compiler_ok=yes],
- [libc_cv_compiler_ok=no])])
-AS_IF([test $libc_cv_compiler_ok != yes],
- [critic_missing="$critic_missing compiler"])
-
-AC_CHECK_TOOL(NM, nm, false)
-
-if test "x$maintainer" = "xyes"; then
- AC_CHECK_PROGS(AUTOCONF, autoconf, no)
- case "x$AUTOCONF" in
- xno|x|x:) AUTOCONF=no ;;
- *)
- AC_CACHE_CHECK(dnl
- whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
- libc_cv_autoconf_works=yes
- else
- libc_cv_autoconf_works=no
- fi])
- test $libc_cv_autoconf_works = yes || AUTOCONF=no
- ;;
- esac
- if test "x$AUTOCONF" = xno; then
- aux_missing="$aux_missing autoconf"
- fi
-else
- AUTOCONF=no
-fi
-
-# Check for python3 if available, or else python.
-AC_CHECK_PROG_VER(PYTHON_PROG, python3 python, --version,
- [Python \([0-9][0-9.]*\)],
- [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*],
- critic_missing="$critic_missing python")
-PYTHON="$PYTHON_PROG -B"
-AC_SUBST(PYTHON)
-
-test -n "$critic_missing" && AC_MSG_ERROR([
-*** These critical programs are missing or too old:$critic_missing
-*** Check the INSTALL file for required versions.])
-
-test -n "$aux_missing" && AC_MSG_WARN([
-*** These auxiliary programs are missing or incompatible versions:$aux_missing
-*** some features or tests will be disabled.
-*** Check the INSTALL file for required versions.])
-
-# if using special system headers, find out the compiler's sekrit
-# header directory and add that to the list. NOTE: Only does the right
-# thing on a system that doesn't need fixincludes. (Not presently a problem.)
-if test -n "$sysheaders"; then
- SYSINCLUDES=-nostdinc
- for d in include include-fixed; do
- i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
- SYSINCLUDES="$SYSINCLUDES -isystem $i"
- done
- SYSINCLUDES="$SYSINCLUDES \
--isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
- if test -n "$CXX"; then
- CXX_SYSINCLUDES=
- for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
- | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
- test "x$cxxheaders" != x &&
- CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
- done
- fi
-fi
-AC_SUBST(SYSINCLUDES)
-AC_SUBST(CXX_SYSINCLUDES)
-
-# Obtain some C++ header file paths. This is used to make a local
-# copy of those headers in Makerules.
-if test -n "$CXX"; then
- find_cxx_header () {
- echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
- | sed -n "\,$1:,{s/:\$//;p}"
- }
- CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
- CXX_CMATH_HEADER="$(find_cxx_header cmath)"
- CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
-fi
-AC_SUBST(CXX_CSTDLIB_HEADER)
-AC_SUBST(CXX_CMATH_HEADER)
-AC_SUBST(CXX_BITS_STD_ABS_H)
-
-# Test if LD_LIBRARY_PATH contains the notation for the current directory
-# since this would lead to problems installing/building glibc.
-# LD_LIBRARY_PATH contains the current directory if one of the following
-# is true:
-# - one of the terminals (":" and ";") is the first or last sign
-# - two terminals occur directly after each other
-# - the path contains an element with a dot in it
-AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
-changequote(,)dnl
-case ${LD_LIBRARY_PATH} in
- [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
- ld_library_path_setting="contains current directory"
- ;;
- *)
- ld_library_path_setting="ok"
- ;;
-esac
-changequote([,])dnl
-AC_MSG_RESULT($ld_library_path_setting)
-if test "$ld_library_path_setting" != "ok"; then
-AC_MSG_ERROR([
-*** LD_LIBRARY_PATH shouldn't contain the current directory when
-*** building glibc. Please change the environment variable
-*** and run configure again.])
-fi
-
-AC_PATH_PROG(BASH_SHELL, bash, no)
-
-AC_PATH_PROG(PERL, perl, no)
-if test "$PERL" != no &&
- (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
- PERL=no
-fi
-AC_PATH_PROG(INSTALL_INFO, install-info, no,
- $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
-
-AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
-cat > conftest.s <<EOF
-.text
-foo:
-.set glibc_conftest_frobozz,foo
-.globl glibc_conftest_frobozz
-EOF
-# The alpha-dec-osf1 assembler gives only a warning for `.set'
-# (but it doesn't work), so we must do a linking check to be sure.
-cat > conftest1.c <<\EOF
-extern int glibc_conftest_frobozz;
-void _start() { glibc_conftest_frobozz = 1; }
-EOF
-if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
- -nostartfiles -nostdlib $no_ssp \
- -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
- libc_cv_asm_set_directive=yes
-else
- libc_cv_asm_set_directive=no
-fi
-rm -f conftest*])
-if test $libc_cv_asm_set_directive = yes; then
- AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
-fi
-
-AC_CACHE_CHECK(linker support for protected data symbol,
- libc_cv_protected_data,
- [cat > conftest.c <<EOF
- int bar __attribute__ ((visibility ("protected"))) = 1;
-EOF
- libc_cv_protected_data=no
- if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
- cat > conftest.c <<EOF
- extern int bar;
- int main (void) { return bar; }
-EOF
- if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
- libc_cv_protected_data=yes
- fi
- fi
- rm -f conftest.*
- ])
-AC_SUBST(libc_cv_protected_data)
-
-AC_CACHE_CHECK(linker support for INSERT in linker script,
- libc_cv_insert,
- [cat > conftest.c <<EOF
- int __attribute__ ((section(".bar"))) bar = 0x12345678;
- int test (void) { return bar; }
-EOF
- cat > conftest.t <<EOF
- SECTIONS
- {
- .bar : { *(.bar) }
- }
- INSERT AFTER .rela.dyn;
-EOF
- libc_cv_insert=no
- if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
- libc_cv_insert=yes
- fi
- rm -f conftest.*
- ])
-AC_SUBST(libc_cv_insert)
-
-AC_CACHE_CHECK(for broken __attribute__((alias())),
- libc_cv_broken_alias_attribute,
- [cat > conftest.c <<EOF
- extern int foo (int x) __asm ("xyzzy");
- int bar (int x) { return x; }
- extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
- extern int dfoo;
- extern __typeof (dfoo) dfoo __asm ("abccb");
- int dfoo = 1;
-EOF
- libc_cv_broken_alias_attribute=yes
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep 'xyzzy' conftest.s >/dev/null &&
- grep 'abccb' conftest.s >/dev/null; then
- libc_cv_broken_alias_attribute=no
- fi
- fi
- rm -f conftest.c conftest.s
- ])
-if test $libc_cv_broken_alias_attribute = yes; then
- AC_MSG_ERROR(working alias attribute support required)
-fi
-
-AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
- libc_cv_have_sdata_section,
- [echo "int i;" > conftest.c
- libc_cv_have_sdata_section=no
- if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
- | grep '\.sdata' >/dev/null; then
- libc_cv_have_sdata_section=yes
- fi
- rm -f conftest.c conftest.so
- ])
-if test $libc_cv_have_sdata_section = yes; then
- AC_DEFINE(HAVE_SDATA_SECTION)
-fi
-
-AC_CACHE_CHECK(for libunwind-support in compiler,
- libc_cv_cc_with_libunwind, [
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
- conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
- libc_cv_cc_with_libunwind=yes
- else
- libc_cv_cc_with_libunwind=no
- fi
- rm -f conftest*])
-AC_SUBST(libc_cv_cc_with_libunwind)
-if test $libc_cv_cc_with_libunwind = yes; then
- AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
-fi
-
-ASFLAGS_config=
-AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
- libc_cv_as_noexecstack, [dnl
-cat > conftest.c <<EOF
-void foo (void) { }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
- -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
- && grep .note.GNU-stack conftest.s >/dev/null \
- && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
- -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_as_noexecstack=yes
-else
- libc_cv_as_noexecstack=no
-fi
-rm -f conftest*])
-if test $libc_cv_as_noexecstack = yes; then
- ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
-fi
-AC_SUBST(ASFLAGS_config)
-
-LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
- [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
-AC_SUBST(libc_cv_z_execstack)
-
-LIBC_LINKER_FEATURE([-z start-stop-gc], [-Wl,-z,start-stop-gc],
- [libc_cv_z_start_stop_gc=yes], [libc_cv_z_start_stop_gc=no])
-LIBC_CONFIG_VAR([have-z-start-stop-gc], [$libc_cv_z_start_stop_gc])
-
-LIBC_LINKER_FEATURE([--depaudit], [-Wl,--depaudit,x],
- [libc_cv_depaudit=yes], [libc_cv_depaudit=no])
-LIBC_CONFIG_VAR([have-depaudit], [$libc_cv_depaudit])
-
-LIBC_LINKER_FEATURE([-z pack-relative-relocs],
- [-Wl,-z,pack-relative-relocs],
- [libc_cv_dt_relr=yes], [libc_cv_dt_relr=no])
-LIBC_CONFIG_VAR([have-dt-relr], [$libc_cv_dt_relr])
-
-LIBC_LINKER_FEATURE([--no-dynamic-linker],
- [-Wl,--no-dynamic-linker],
- [libc_cv_no_dynamic_linker=yes],
- [libc_cv_no_dynamic_linker=no])
-LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker])
-
-AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl
-LIBC_TRY_CC_OPTION([-static-pie],
- [libc_cv_static_pie=yes],
- [libc_cv_static_pie=no])
-])
-LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie])
-
-AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
-LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
-])
-
-AC_SUBST(libc_cv_fpie)
-
-AC_CACHE_CHECK(for --hash-style option,
- libc_cv_hashstyle, [dnl
-cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
- -fPIC -shared -o conftest.so conftest.c
- -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_hashstyle=yes
-else
- libc_cv_hashstyle=no
-fi
-rm -f conftest*])
-AC_SUBST(libc_cv_hashstyle)
-
-AC_CACHE_CHECK(for GLOB_DAT reloc,
- libc_cv_has_glob_dat, [dnl
-cat > conftest.c <<EOF
-extern int mumble;
-int foo (void) { return mumble; }
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -fPIC -shared -o conftest.so conftest.c
- -nostdlib -nostartfiles $no_ssp
- 1>&AS_MESSAGE_LOG_FD])
-then
-dnl look for GLOB_DAT relocation.
- if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
- libc_cv_has_glob_dat=yes
- else
- libc_cv_has_glob_dat=no
- fi
-else
- libc_cv_has_glob_dat=no
-fi
-rm -f conftest*])
-AC_SUBST(libc_cv_has_glob_dat)
-
-AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
-[dnl
-cat > conftest.c <<EOF
-__thread int i;
-void foo (void)
-{
- i = 10;
-}
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
- conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD])
-then
- libc_cv_mtls_dialect_gnu2=yes
-else
- libc_cv_mtls_dialect_gnu2=no
-fi
-rm -f conftest*])
-AC_SUBST(libc_cv_mtls_dialect_gnu2)
-LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
-
-AC_CACHE_CHECK(whether cc puts quotes around section names,
- libc_cv_have_section_quotes,
- [cat > conftest.c <<EOF
- static const int foo
- __attribute__ ((section ("bar"))) = 1;
-EOF
- if ${CC-cc} -S conftest.c -o conftest.s; then
- if grep '\.section.*"bar"' conftest.s >/dev/null; then
- libc_cv_have_section_quotes=yes
- else
- libc_cv_have_section_quotes=no
- fi
- else
- libc_cv_have_section_quotes=unknown
- fi
- rm -f conftest.{c,s}
- ])
-if test $libc_cv_have_section_quotes = yes; then
- AC_DEFINE(HAVE_SECTION_QUOTES)
-fi
-
-AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
-cat > conftest.c <<\EOF
-void zero (void *x)
-{
- __builtin_memset (x, 0, 1000);
-}
-EOF
-dnl
-if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
-then
- libc_cv_gcc_builtin_memset=no
-else
- libc_cv_gcc_builtin_memset=yes
-fi
-rm -f conftest* ])
-if test "$libc_cv_gcc_builtin_memset" = yes ; then
- AC_DEFINE(HAVE_BUILTIN_MEMSET)
-fi
-
-AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
-cat > conftest.c <<\EOF
-extern char *strstr (const char *, const char *) __asm ("my_strstr");
-char *foo (const char *a, const char *b)
-{
- return __builtin_strstr (a, b);
-}
-EOF
-dnl
-if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
-then
- libc_cv_gcc_builtin_redirection=yes
-else
- libc_cv_gcc_builtin_redirection=no
-fi
-rm -f conftest* ])
-if test "$libc_cv_gcc_builtin_redirection" = no; then
- AC_MSG_ERROR([support for the symbol redirection needed])
-fi
-
-dnl Determine how to disable generation of FMA instructions.
-AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
- libc_cv_cc_nofma, [dnl
-libc_cv_cc_nofma=
-for opt in -ffp-contract=off -mno-fused-madd; do
- LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
-done])
-AC_SUBST(libc_cv_cc_nofma)
-
-if test -n "$submachine"; then
- AC_CACHE_CHECK([for compiler option for CPU variant],
- libc_cv_cc_submachine, [dnl
- libc_cv_cc_submachine=no
- for opt in "-march=$submachine" "-mcpu=$submachine"; do
- LIBC_TRY_CC_OPTION([$opt], [
- libc_cv_cc_submachine="$opt"
- break], [])
- done])
- if test "x$libc_cv_cc_submachine" = xno; then
- AC_MSG_ERROR([${CC-cc} does not support $submachine])
- fi
-fi
-AC_SUBST(libc_cv_cc_submachine)
-
-AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
-__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
-cat > conftest.c <<EOF
-void
-__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
-foo (void) {}
-EOF
-libc_cv_cc_loop_to_function=no
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
-then
- libc_cv_cc_loop_to_function=yes
-fi
-rm -f conftest*])
-if test $libc_cv_cc_loop_to_function = yes; then
- AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
-fi
-AC_SUBST(libc_cv_cc_loop_to_function)
-
-dnl Check whether we have the gd library available.
-AC_MSG_CHECKING(for libgd)
-if test "$with_gd" != "no"; then
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $libgd_include"
- old_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $libgd_ldflags"
- old_LIBS="$LIBS"
- LIBS="$LIBS -lgd -lpng -lz -lm"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gd.h>]], [[gdImagePng (0, 0)]])],
- [LIBGD=yes], [LIBGD=no])
- CFLAGS="$old_CFLAGS"
- LDFLAGS="$old_LDFLAGS"
- LIBS="$old_LIBS"
-else
- LIBGD=no
-fi
-AC_MSG_RESULT($LIBGD)
-AC_SUBST(LIBGD)
-
-# SELinux detection
-if test x$with_selinux = xno ; then
- have_selinux=no;
-else
- # See if we have the SELinux library
- AC_CHECK_LIB(selinux, is_selinux_enabled,
- have_selinux=yes, have_selinux=no)
- if test x$with_selinux = xyes ; then
- if test x$have_selinux = xno ; then
- AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
- fi
- fi
-fi
-# Check if we're building with SELinux support.
-if test "x$have_selinux" = xyes; then
- AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
-
- # See if we have the libaudit library
- AC_CHECK_LIB(audit, audit_log_user_avc_message,
- have_libaudit=yes, have_libaudit=no)
- if test "x$have_libaudit" = xyes; then
- AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
- fi
- AC_SUBST(have_libaudit)
-
- # See if we have the libcap library
- AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
- if test "x$have_libcap" = xyes; then
- AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
- fi
- AC_SUBST(have_libcap)
-fi
-AC_SUBST(have_selinux)
-
-CPPUNDEFS=
-dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
-dnl Since we are building the implementations of the fortified functions here,
-dnl having the macro defined interacts very badly.
-dnl _FORTIFY_SOURCE requires compiler optimization level 1 (gcc -O1)
-dnl and above (see "man FEATURE_TEST_MACROS").
-dnl So do NOT replace AC_COMPILE_IFELSE with AC_PREPROC_IFELSE.
-AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
-#ifdef _FORTIFY_SOURCE
-# error bogon
-#endif]])],
- [libc_cv_predef_fortify_source=no],
- [libc_cv_predef_fortify_source=yes])])
-if test $libc_cv_predef_fortify_source = yes; then
- CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
-fi
-AC_SUBST(CPPUNDEFS)
-
-dnl Starting with binutils 2.35, GAS can attach multiple symbol versions
-dnl to one symbol (PR 23840).
-AC_CACHE_CHECK(whether the assembler requires one version per symbol,
- libc_cv_symver_needs_alias, [dnl
- cat > conftest.s <<EOF
- .text
-testfunc:
- .globl testfunc
- .symver testfunc, testfunc1@VERSION1
- .symver testfunc, testfunc1@VERSION2
-EOF
- libc_cv_symver_needs_alias=no
- if ${CC-cc} $ASFLAGS -c conftest.s 2>&AS_MESSAGE_LOG_FD; then
- libc_cv_symver_needs_alias=no
- else
- libc_cv_symver_needs_alias=yes
- fi
- rm conftest.*
-])
-if test "$libc_cv_symver_needs_alias" = yes; then
- AC_DEFINE(SYMVER_NEEDS_ALIAS)
-fi
-
-AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
- libc_cv_builtin_trap, [dnl
-libc_cv_builtin_trap=no
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_trap ()]])],[
-libc_undefs=`$NM -u conftest.o |
- LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
- 2>&AS_MESSAGE_LOG_FD` || {
- AC_MSG_ERROR([confusing output from $NM -u])
-}
-echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
-if test -z "$libc_undefs"; then
- libc_cv_builtin_trap=yes
-fi],[])])
-if test $libc_cv_builtin_trap = yes; then
- AC_DEFINE([HAVE_BUILTIN_TRAP])
-fi
-
-dnl C++ feature tests.
-AC_LANG_PUSH([C++])
-
-AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
- libc_cv_cxx_thread_local, [
-old_CXXFLAGS="$CXXFLAGS"
-CXXFLAGS="$CXXFLAGS -std=gnu++11"
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-#include <thread>
-
-// Compiler support.
-struct S
-{
- S ();
- ~S ();
-};
-thread_local S s;
-S * get () { return &s; }
-
-// libstdc++ support.
-#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
-#error __cxa_thread_atexit_impl not supported
-#endif
-])],
- [libc_cv_cxx_thread_local=yes],
- [libc_cv_cxx_thread_local=no])
-CXXFLAGS="$old_CXXFLAGS"
-])
-AC_SUBST(libc_cv_cxx_thread_local)
-
-AC_LANG_POP([C++])
-dnl End of C++ feature tests.
-
-### End of automated tests.
-### Now run sysdeps configure fragments.
-
-# They also can set these variables.
-use_ldconfig=no
-ldd_rewrite_script=no
-libc_cv_sysconfdir=$sysconfdir
-libc_cv_localstatedir=$localstatedir
-libc_cv_gcc_unwind_find_fde=no
-libc_cv_idn=no
-pthread_in_libc=yes
-
-# Iterate over all the sysdep directories we will use, running their
-# configure fragments.
-for dir in $sysnames; do
- case $dir in
- /*) dest=$dir ;;
- *) dest=$srcdir/$dir ;;
- esac
- if test -r $dest/configure; then
- AC_MSG_RESULT(running configure fragment for $dir)
- . $dest/configure
- fi
-done
-
-if test x"$build_mathvec" = xnotset; then
- build_mathvec=no
-fi
-LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
-
-AC_SUBST(libc_extra_cflags)
-AC_SUBST(libc_extra_cppflags)
-
-if test x$libc_cv_gcc_unwind_find_fde = xyes; then
- AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
-fi
-AC_SUBST(libc_cv_gcc_unwind_find_fde)
-
-# A sysdeps configure fragment can reset this if IFUNC is not actually
-# usable even though the assembler knows how to generate the symbol type.
-if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
- AC_DEFINE(HAVE_IFUNC)
-fi
-LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function])
-
-if test x"$libc_cv_gcc_indirect_function" = xyes; then
- AC_DEFINE(HAVE_GCC_IFUNC)
-fi
-LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function])
-
-# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
-# configure fragment can override the value to prevent this AC_DEFINE.
-AC_SUBST(use_nscd)
-if test "x$use_nscd" != xno; then
- AC_DEFINE([USE_NSCD])
-fi
-if test "x$build_nscd" = xdefault; then
- build_nscd=$use_nscd
-fi
-
-AC_SUBST(libc_cv_slibdir)
-AC_SUBST(libc_cv_rtlddir)
-AC_SUBST(libc_cv_complocaledir)
-AC_SUBST(libc_cv_sysconfdir)
-AC_SUBST(libc_cv_localstatedir)
-AC_SUBST(libc_cv_rootsbindir)
-
-if test x$use_ldconfig = xyes; then
- AC_DEFINE(USE_LDCONFIG)
-fi
-AC_SUBST(use_ldconfig)
-AC_SUBST(ldd_rewrite_script)
-
-AC_SUBST(static)
-AC_SUBST(shared)
-
-AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
-[libc_cv_pic_default=yes
-cat > conftest.c <<EOF
-#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
-# error PIC is default.
-#endif
-EOF
-if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
- libc_cv_pic_default=no
-fi
-rm -f conftest.*])
-LIBC_CONFIG_VAR([build-pic-default], [$libc_cv_pic_default])
-
-AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default,
-[libc_cv_cc_pie_default=yes
-cat > conftest.c <<EOF
-#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
-# error PIE is default.
-#endif
-EOF
-if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
- libc_cv_cc_pie_default=no
-fi
-rm -f conftest.*])
-LIBC_CONFIG_VAR([cc-pie-default], [$libc_cv_cc_pie_default])
-
-AC_MSG_CHECKING(if we can build programs as PIE)
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifdef PIE_UNSUPPORTED
-# error PIE is not supported
-#endif]])], [libc_cv_pie_supported=yes], [libc_cv_pie_supported=no])
-AC_MSG_RESULT($libc_cv_pie_supported)
-# Disable build-pie-default if target does not support it or glibc is
-# configured with --disable-default-pie.
-if test "x$default_pie" = xno; then
- build_pie_default=no
-else
- build_pie_default=$libc_cv_pie_supported
-fi
-LIBC_CONFIG_VAR([build-pie-default], [$build_pie_default])
-
-AC_MSG_CHECKING(if we can build static PIE programs)
-libc_cv_static_pie_supported=$libc_cv_pie_supported
-if test "x$libc_cv_pie_supported" != xno \
- -a "$libc_cv_no_dynamic_linker" = yes; then
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifndef SUPPORT_STATIC_PIE
-# error static PIE is not supported
-#endif]])], [libc_cv_static_pie_supported=yes],
- [libc_cv_static_pie_supported=no])
-fi
-AC_MSG_RESULT($libc_cv_static_pie_supported)
-
-# Enable static-pie only if it is available and glibc isn't configured
-# with --disable-default-pie.
-if test "x$default_pie" = xno; then
- libc_cv_static_pie=no
-else
- libc_cv_static_pie=$libc_cv_static_pie_supported
-fi
-if test "$libc_cv_static_pie" = "yes"; then
- AC_DEFINE(ENABLE_STATIC_PIE)
-fi
-LIBC_CONFIG_VAR([enable-static-pie], [$libc_cv_static_pie])
-
-# Set the `multidir' variable by grabbing the variable from the compiler.
-# We do it once and save the result in a generated makefile.
-libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
-AC_SUBST(libc_cv_multidir)
-
-AC_SUBST(profile)
-AC_SUBST(static_nss)
-
-AC_SUBST(DEFINES)
-
-dnl See sysdeps/mach/configure.ac for this variable.
-AC_SUBST(mach_interface_list)
-
-VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
-RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
-AC_SUBST(VERSION)
-AC_SUBST(RELEASE)
-
-if test "$pthread_in_libc" = yes; then
- AC_DEFINE(PTHREAD_IN_LIBC)
-fi
-AC_SUBST(pthread_in_libc)
-
-AC_CONFIG_FILES([config.make Makefile])
-AC_CONFIG_COMMANDS([default],[[
-case $CONFIG_FILES in *config.make*)
-echo "$config_vars" >> config.make;;
-esac
-test -d bits || mkdir bits]],[[config_vars='$config_vars']])
-AC_OUTPUT
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/config.make.in
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/config.make.in (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/config.make.in (nonexistent)
@@ -1,148 +0,0 @@
-# @configure_input@
-# Don't edit this file. Put configuration parameters in configparms instead.
-
-version = @VERSION@
-release = @RELEASE@
-
-# Installation prefixes.
-install_root = $(DESTDIR)
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datadir = @datadir@
-libdir = @libdir@
-bindir = @bindir@
-slibdir = @libc_cv_slibdir@
-rtlddir = @libc_cv_rtlddir@
-complocaledir = @libc_cv_complocaledir@
-sysconfdir = @libc_cv_sysconfdir@
-libexecdir = @libexecdir@
-rootsbindir = @libc_cv_rootsbindir@
-infodir = @infodir@
-includedir = @includedir@
-datarootdir = @datarootdir@
-localstatedir = @libc_cv_localstatedir@
-localedir = @localedir@
-multidir= @libc_cv_multidir@
-
-# Should we use and build ldconfig?
-use-ldconfig = @use_ldconfig@
-
-# Maybe the `ldd' script must be rewritten.
-ldd-rewrite-script = @ldd_rewrite_script@
-
-# System configuration.
-config-machine = @host_cpu@
-base-machine = @base_machine@
-config-vendor = @host_vendor@
-config-os = @host_os@
-config-sysdirs = @sysnames@
-cflags-cpu = @libc_cv_cc_submachine@
-asflags-cpu = @libc_cv_cc_submachine@
-
-config-extra-cflags = @libc_extra_cflags@
-config-extra-cppflags = @libc_extra_cppflags@
-config-cflags-nofma = @libc_cv_cc_nofma@
-
-defines = @DEFINES@
-sysheaders = @sysheaders@
-sysincludes = @SYSINCLUDES@
-c++-sysincludes = @CXX_SYSINCLUDES@
-c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
-c++-cmath-header = @CXX_CMATH_HEADER@
-c++-bits-std_abs-h = @CXX_BITS_STD_ABS_H@
-all-warnings = @all_warnings@
-enable-werror = @enable_werror@
-
-have-z-execstack = @libc_cv_z_execstack@
-have-protected-data = @libc_cv_protected_data@
-have-insert = @libc_cv_insert@
-have-glob-dat-reloc = @libc_cv_has_glob_dat@
-with-fp = @libc_cv_with_fp@
-enable-timezone-tools = @enable_timezone_tools@
-unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
-have-fpie = @libc_cv_fpie@
-have-ssp = @libc_cv_ssp@
-stack-protector = @stack_protector@
-no-stack-protector = @no_stack_protector@
-have-selinux = @have_selinux@
-have-libaudit = @have_libaudit@
-have-libcap = @have_libcap@
-have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
-bind-now = @bindnow@
-have-hash-style = @libc_cv_hashstyle@
-use-default-link = @use_default_link@
-have-cxx-thread_local = @libc_cv_cxx_thread_local@
-have-loop-to-function = @libc_cv_cc_loop_to_function@
-have-textrel_ifunc = @libc_cv_textrel_ifunc@
-
-multi-arch = @multi_arch@
-
-mach-interface-list = @mach_interface_list@
-
-experimental-malloc = @experimental_malloc@
-
-memory-tagging = @memory_tagging@
-
-nss-crypt = @libc_cv_nss_crypt@
-static-nss-crypt = @libc_cv_static_nss_crypt@
-
-# Configuration options.
-build-shared = @shared@
-build-profile = @profile@
-build-static-nss = @static_nss@
-cross-compiling = @cross_compiling@
-force-install = @force_install@
-build-crypt = @build_crypt@
-build-nscd = @build_nscd@
-use-nscd = @use_nscd@
-build-hardcoded-path-in-tests= @hardcoded_path_in_tests@
-build-pt-chown = @build_pt_chown@
-have-tunables = @have_tunables@
-pthread-in-libc = @pthread_in_libc@
-
-# Build tools.
-CC = @CC@
-CXX = @CXX@
-BUILD_CC = @BUILD_CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS-config = @CPPFLAGS@
-CPPUNDEFS = @CPPUNDEFS@
-extra-nonshared-cflags = @extra_nonshared_cflags@
-rtld-early-cflags = @rtld_early_cflags@
-ASFLAGS-config = @ASFLAGS_config@
-AR = @AR@
-NM = @NM@
-MAKEINFO = @MAKEINFO@
-AS = $(CC) -c
-BISON = @BISON@
-AUTOCONF = @AUTOCONF@
-OBJDUMP = @OBJDUMP@
-OBJCOPY = @OBJCOPY@
-GPROF = @GPROF@
-READELF = @READELF@
-
-# Installation tools.
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_INFO = @INSTALL_INFO@
-LN_S = @LN_S@
-MSGFMT = @MSGFMT@
-
-# Script execution tools.
-BASH = @BASH_SHELL@
-AWK = @AWK@
-PERL = @PERL@
-PYTHON = @PYTHON@
-
-# Additional libraries.
-LIBGD = @LIBGD@
-
-# Package versions and bug reporting configuration.
-PKGVERSION = @PKGVERSION@
-PKGVERSION_TEXI = @PKGVERSION_TEXI@
-REPORT_BUGS_TO = @REPORT_BUGS_TO@
-REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@
-
-# More variables may be inserted below by configure.
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/Makeconfig
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/Makeconfig (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/Makeconfig (nonexistent)
@@ -1,1415 +0,0 @@
-# Copyright (C) 1991-2022 Free Software Foundation, Inc.
-# Copyright The GNU Toolchain Authors.
-# This file is part of the GNU C Library.
-
-# The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-#
-# Makefile configuration options for the GNU C library.
-#
-ifneq (,)
-This makefile requires GNU Make.
-endif
-
-all: # Make this the default goal
-
-ifneq "$(origin +included-Makeconfig)" "file"
-
-+included-Makeconfig := yes
-
-ifdef subdir
-.. := ../
-endif
-
-# $(common-objdir) is the place to put objects and
-# such that are not specific to a single subdir.
-ifdef objdir
-objpfx := $(patsubst %//,%/,$(objdir)/$(subdir)/)
-common-objpfx = $(objdir)/
-common-objdir = $(objdir)
-else
-$(error objdir must be defined by the build-directory Makefile)
-endif
-
-# Root of the sysdeps tree.
-sysdep_dir := $(..)sysdeps
-export sysdep_dir := $(sysdep_dir)
-
-# Get the values defined by options to `configure'.
-include $(common-objpfx)config.make
-
-# What flags to give to sources which call user provided callbacks
-uses-callbacks = -fexceptions
-
-# What flags to give to tests which test stack alignment
-stack-align-test-flags =
-
-# Complete path to sysdep dirs.
-# `configure' writes a definition of `config-sysdirs' in `config.make'.
-sysdirs := $(foreach D,$(config-sysdirs),$(firstword $(filter /%,$D) $(..)$D))
-
-+sysdep_dirs = $(sysdirs)
-ifdef objdir
-+sysdep_dirs := $(objdir) $(+sysdep_dirs)
-endif
-
-# Run config.status to update config.make and config.h. We don't show the
-# dependence of config.h to Make, because it is only touched when it
-# changes and so config.status would be run every time; the dependence of
-# config.make should suffice to force regeneration and re-exec, and the new
-# image will notice if config.h changed.
-$(common-objpfx)config.make: $(common-objpfx)config.status \
- $(..)config.make.in $(..)config.h.in
- cd $(<D); $(SHELL) $(<F)
-
-# Find all the sysdeps configure fragments, to make sure we re-run
-# configure when any of them changes.
-$(common-objpfx)config.status: $(..)version.h $(..)configure \
- $(foreach dir,$(sysdirs),\
- $(wildcard $(dir)/Implies) \
- $(patsubst %.ac,%,\
- $(firstword $(wildcard \
- $(addprefix $(dir)/,configure configure.ac))))) \
- $(patsubst %.ac,%,\
- $(wildcard $(..)sysdeps/*/preconfigure $(..)sysdeps/*/preconfigure.ac))
- @cd $(@D); if test -f $(@F); then exec $(SHELL) $(@F) --recheck; else \
- echo The GNU C library has not been configured. >&2; \
- echo Run \`configure\' to configure it before building. >&2; \
- echo Try \`configure --help\' for more details. >&2; \
- exit 1; fi
-
-# We don't want CPPFLAGS to be exported to the command running configure.
-unexport CPPFLAGS
-
-# Get the user's configuration parameters.
-ifneq ($(wildcard $(..)configparms),)
-include $(..)configparms
-endif
-ifneq ($(objpfx),)
-ifneq ($(wildcard $(common-objpfx)configparms),)
-include $(common-objpfx)configparms
-endif
-endif
-
-####
-#### These are the configuration variables. You can define values for
-#### the variables below in the file `configparms'.
-#### Do NOT edit this file.
-####
-
-
-# Common prefix for machine-independent installation directories.
-ifeq ($(origin prefix),undefined) # ifndef would override explicit empty value.
-prefix = /usr/local
-endif
-
-# Decide whether we shall build the programs or not. We always do this
-# unless the user tells us (in configparms) or we are building for a
-# standalone target.
-ifndef build-programs
-ifneq ($(config-os),none)
-build-programs=yes
-else
-build-programs=no
-endif
-endif
-
-# Common prefix for machine-dependent installation directories.
-ifeq ($(origin exec_prefix),undefined)
-exec_prefix = $(prefix)
-endif
-
-# Where to install the library and object files.
-ifndef libdir
-libdir = $(exec_prefix)/lib
-endif
-inst_libdir = $(install_root)$(libdir)
-
-# Where to install the shared library.
-ifndef slibdir
-slibdir = $(exec_prefix)/lib
-endif
-inst_slibdir = $(install_root)$(slibdir)
-
-# Where to install the dynamic linker.
-ifndef rtlddir
-rtlddir = $(slibdir)
-endif
-inst_rtlddir = $(install_root)$(rtlddir)
-
-# Prefix to put on files installed in $(libdir). For libraries `libNAME.a',
-# the prefix is spliced between `lib' and the name, so the linker switch
-# `-l$(libprefix)NAME' finds the library; for other files the prefix is
-# just prepended to the whole file name.
-ifeq ($(origin libprefix),undefined)
-libprefix =
-endif
-
-# Where to install the header files.
-ifndef includedir
-includedir = $(prefix)/include
-endif
-inst_includedir = $(install_root)$(includedir)
-
-# Where to install machine-independent data files.
-# These are the timezone database, and the locale database.
-ifndef datadir
-datadir = $(prefix)/share
-endif
-inst_datadir = $(install_root)$(datadir)
-
-# Where to install the timezone data files (which are machine-independent).
-ifndef zonedir
-zonedir = $(datadir)/zoneinfo
-endif
-inst_zonedir = $(install_root)$(zonedir)
-
-# Where to install the compiled binary locale archive and compiled
-# binary locale files.
-ifndef complocaledir
-complocaledir = $(libdir)/locale
-endif
-inst_complocaledir = $(install_root)$(complocaledir)
-
-# Where to install the message catalog data files (which are
-# machine-independent).
-ifndef localedir
-localedir = $(datadir)/locale
-endif
-inst_localedir = $(install_root)$(localedir)
-
-# Where to install the locale charmap source files.
-ifndef i18ndir
-i18ndir = $(datadir)/i18n
-endif
-inst_i18ndir = $(install_root)$(i18ndir)
-
-# Where to install the shared object for charset transformation.
-ifndef gconvdir
-gconvdir = $(libdir)/gconv
-endif
-inst_gconvdir = $(install_root)$(gconvdir)
-
-# Where to install programs.
-ifndef bindir
-bindir = $(exec_prefix)/bin
-endif
-inst_bindir = $(install_root)$(bindir)
-
-# Where to install internal programs.
-ifndef libexecdir
-libexecdir = $(exec_prefix)/libexec
-endif
-inst_libexecdir = $(install_root)$(libexecdir)
-
-# Where to install administrative programs.
-ifndef rootsbindir
-rootsbindir = $(exec_prefix)/sbin
-endif
-inst_rootsbindir = $(install_root)$(rootsbindir)
-
-ifndef sbindir
-sbindir = $(exec_prefix)/sbin
-endif
-inst_sbindir = $(install_root)$(sbindir)
-
-# Where to install the Info files.
-ifndef infodir
-infodir = $(prefix)/info
-endif
-inst_infodir = $(install_root)$(infodir)
-
-# Where to install audit libraries.
-ifndef auditdir
-auditdir = $(libdir)/audit
-endif
-inst_auditdir = $(install_root)$(auditdir)
-
-# Where to install default configuration files. These include the local
-# timezone specification and network data base files.
-ifndef sysconfdir
-sysconfdir = $(prefix)/etc
-endif
-inst_sysconfdir = $(install_root)$(sysconfdir)
-
-# Directory for the database files and Makefile for nss_db.
-ifndef vardbdir
-vardbdir = $(localstatedir)/db
-endif
-inst_vardbdir = $(install_root)$(vardbdir)
-
-# Where to install the "localtime" timezone file; this is the file whose
-# contents $(localtime) specifies. If this is a relative pathname, it is
-# relative to $(zonedir). It is a good idea to put this somewhere
-# other than there, so the zoneinfo directory contains only universal data,
-# localizing the configuration data elsewhere.
-ifndef localtime-file
-localtime-file = $(sysconfdir)/localtime
-endif
-
-# What to use for leap second specifications in compiling the default
-# timezone files. Set this to `/dev/null' for no leap second handling as
-# 1003.1 requires, or to `leapseconds' for proper leap second handling.
-# Both zone flavors are always available as `posix/ZONE' and `right/ZONE'.
-# This variable determines the default: if it's `/dev/null',
-# ZONE==posix/ZONE; if it's `leapseconds', ZONE==right/ZONE.
-ifndef leapseconds
-leapseconds = /dev/null
-endif
-
-# What timezone's DST rules should be used when a POSIX-style TZ
-# environment variable doesn't specify any rules. For 1003.1 compliance
-# this timezone must use rules that are as U.S. federal law defines DST.
-# Run `make -C time echo-zonenames' to see a list of available zone names.
-# This setting can be changed with `zic -p TIMEZONE' at any time.
-# If you want POSIX.1 compatibility, use `America/New_York'.
-ifndef posixrules
-posixrules = America/New_York
-endif
-
-# Where to install the "posixrules" timezone file; this is file
-# whose contents $(posixrules) specifies. If this is a relative
-# pathname, it is relative to $(zonedir).
-ifndef posixrules-file
-posixrules-file = posixrules
-endif
-
-
-# Directory where your system's native header files live.
-# This is used on Unix systems to generate some GNU libc header files.
-ifndef sysincludedir
-sysincludedir = /usr/include
-endif
-
-
-# Commands to install files.
-ifndef INSTALL_DATA
-INSTALL_DATA = $(INSTALL) -m 644
-endif
-ifndef INSTALL_SCRIPT
-INSTALL_SCRIPT = $(INSTALL)
-endif
-ifndef INSTALL_PROGRAM
-INSTALL_PROGRAM = $(INSTALL)
-endif
-ifndef INSTALL
-INSTALL = install
-endif
-
-
-# The name of the C compiler.
-# If you've got GCC, and it works, use it.
-ifeq ($(origin CC),default)
-CC := gcc
-endif
-
-# The name of the C compiler to use for compilations of programs to run on
-# the host that is building the library. If you set CC to a
-# cross-compiler, you must set this to the normal compiler.
-ifndef BUILD_CC
-BUILD_CC = $(CC)
-endif
-
-# Default flags to pass the C compiler.
-ifndef default_cflags
-ifeq ($(release),stable)
-default_cflags := -g -O2
-else
-default_cflags := -g -O
-endif
-endif
-
-# Flags to pass the C compiler when assembling preprocessed assembly code
-# (`.S' files).
-ifndef asm-CPPFLAGS
-asm-CPPFLAGS =
-endif
-
-# Must be supported by the linker.
-no-whole-archive = -Wl,--no-whole-archive
-whole-archive = -Wl,--whole-archive
-
-# Installed name of the startup code.
-# The ELF convention is that the startfile is called crt1.o
-start-installed-name = crt1.o
-# On systems that do not need a special startfile for statically linked
-# binaries, simply set it to the normal name.
-ifndef static-start-installed-name
-static-start-installed-name = $(start-installed-name)
-endif
-
-ifeq (yes,$(enable-static-pie))
-# Link with rcrt1.o, instead of crt1.o, to call _dl_relocate_static_pie
-# to relocate static PIE.
-real-static-start-installed-name = r$(static-start-installed-name)
-else
-real-static-start-installed-name = $(static-start-installed-name)
-endif
-
-relro-LDFLAGS = -Wl,-z,relro
-LDFLAGS.so += $(relro-LDFLAGS)
-LDFLAGS-rtld += $(relro-LDFLAGS)
-
-# Linker options to enable and disable DT_RELR.
-ifeq ($(have-dt-relr),yes)
-dt-relr-ldflag = -Wl,-z,pack-relative-relocs
-no-dt-relr-ldflag = -Wl,-z,nopack-relative-relocs
-else
-dt-relr-ldflag =
-no-dt-relr-ldflag =
-endif
-
-ifeq (yes,$(have-hash-style))
-# For the time being we unconditionally use 'both'. At some time we
-# should declare statically linked code as 'out of luck' and compile
-# with --hash-style=gnu only.
-hashstyle-LDFLAGS = -Wl,--hash-style=both
-LDFLAGS.so += $(hashstyle-LDFLAGS)
-LDFLAGS-rtld += $(hashstyle-LDFLAGS)
-endif
-
-ifeq (no,$(build-pie-default))
-pie-default = $(no-pie-ccflag)
-else # build-pie-default
-pic-default = -DPIC
-# Compile libc.a and libc_p.a with -fPIE/-fpie for static PIE.
-pie-default = $(pie-ccflag)
-
-ifeq (yes,$(enable-static-pie))
-static-pie-dt-relr-ldflag = $(dt-relr-ldflag)
-ifeq (yes,$(have-static-pie))
-static-pie-ldflag = -static-pie
-else
-# Static PIE can't have dynamic relocations in read-only segments since
-# static PIE is mapped into memory by kernel. --eh-frame-hdr is needed
-# for PIE to support exception.
-static-pie-ldflag = -Wl,-pie,--no-dynamic-linker,--eh-frame-hdr,-z,text
-endif # have-static-pie
-endif # enable-static-pie
-endif # build-pie-default
-
-# If lazy relocations are disabled, add the -z now flag. Use
-# LDFLAGS-lib.so instead of LDFLAGS.so, to avoid adding the flag to
-# test modules.
-ifeq ($(bind-now),yes)
-LDFLAGS-lib.so += -Wl,-z,now
-# Extra flags for dynamically linked non-test main programs.
-link-extra-flags += -Wl,-z,now
-endif
-
-# Command to run after every final link (executable or shared object).
-# This is invoked with $(call after-link,...), so it should operate on
-# the file $1. This can be set to do some sort of post-processing on
-# binaries, or to perform some sort of static sanity check.
-ifndef after-link
-after-link =
-endif
-
-# Additional libraries to link into every test.
-link-extra-libs-tests = $(libsupport)
-
-# Command for linking PIE programs with the C library.
-ifndef +link-pie
-+link-pie-before-inputs = $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \
- $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
- -Wl,-O1 -nostdlib -nostartfiles \
- $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
- $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
- $(firstword $(CRT-$(@F)) $(csu-objpfx)S$(start-installed-name)) \
- $(+preinit) $(+prectorS)
-+link-pie-before-libc = -o $@ $(+link-pie-before-inputs) \
- $(filter-out $(addprefix $(csu-objpfx),start.o \
- S$(start-installed-name))\
- $(+preinit) $(link-extra-libs) \
- $(common-objpfx)libc% $(+postinit),$^) \
- $(link-extra-libs)
-+link-pie-after-libc = $(+postctorS) $(+postinit)
-define +link-pie
-$(CC) $(link-libc-rpath-link) $(+link-pie-before-libc) $(rtld-LDFLAGS) \
- $(link-extra-flags) $(link-libc) $(+link-pie-after-libc)
-$(call after-link,$@)
-endef
-define +link-pie-tests
-$(CC) $(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
- $(+link-pie-after-libc)
-$(call after-link,$@)
-endef
-define +link-pie-printers-tests
-$(CC) $(+link-pie-before-libc) $(built-rtld-LDFLAGS) \
- $(link-libc-printers-tests) $(+link-pie-after-libc)
-$(call after-link,$@)
-endef
-endif
-# Command for statically linking programs with the C library.
-ifndef +link-static
-+link-static-before-inputs = -nostdlib -nostartfiles -static \
- $(if $($(@F)-no-pie),$(no-pie-ldflag),$(static-pie-ldflag)) \
- $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(static-pie-dt-relr-ldflag)) \
- $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
- $(firstword $(CRT-$(@F)) $(csu-objpfx)$(real-static-start-installed-name)) \
- $(+preinit) $(+prectorT)
-+link-static-before-libc = -o $@ $(+link-static-before-inputs) \
- $(filter-out $(addprefix $(csu-objpfx),start.o \
- $(start-installed-name))\
- $(+preinit) $(link-extra-libs-static) \
- $(common-objpfx)libc% $(+postinit),$^) \
- $(link-extra-libs-static)
-+link-static-after-libc = $(+postctorT) $(+postinit)
-define +link-static
-$(CC) $(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) \
- $(+link-static-after-libc)
-$(call after-link,$@)
-endef
-define +link-static-tests
-$(CC) $(+link-static-before-libc) $(link-libc-static-tests) \
- $(+link-static-after-libc)
-$(call after-link,$@)
-endef
-endif
-# Commands for linking programs with the C library.
-ifndef +link
-ifeq (yes,$(build-shared))
-ifeq (yes,$(cc-pie-default))
-no-pie-ldflag = -no-pie
-endif
-ifeq (yes,$(build-pie-default))
-+link = $(+link-pie)
-+link-tests = $(+link-pie-tests)
-+link-tests-before-inputs = $(+link-pie-before-inputs) $(rtld-tests-LDFLAGS)
-+link-tests-after-inputs = $(link-libc-tests) $(+link-pie-after-libc)
-+link-printers-tests = $(+link-pie-printers-tests)
-else # not build-pie-default
-+link-before-inputs = -nostdlib -nostartfiles $(no-pie-ldflag) \
- $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
- $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
- $(firstword $(CRT-$(@F)) $(csu-objpfx)$(start-installed-name)) \
- $(+preinit) $(+prector)
-+link-before-libc = -o $@ $(+link-before-inputs) \
- $(filter-out $(addprefix $(csu-objpfx),start.o \
- $(start-installed-name))\
- $(+preinit) $(link-extra-libs) \
- $(common-objpfx)libc% $(+postinit),$^) \
- $(link-extra-libs)
-+link-after-libc = $(+postctor) $(+postinit)
-define +link
-$(CC) $(link-libc-rpath-link) $(+link-before-libc) $(rtld-LDFLAGS) \
- $(link-extra-flags) $(link-libc) $(+link-after-libc)
-$(call after-link,$@)
-endef
-+link-tests-before-inputs = $(+link-before-inputs) $(rtld-tests-LDFLAGS)
-+link-tests-after-inputs = $(link-libc-tests) $(+link-after-libc)
-define +link-tests
-$(CC) $(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
- $(+link-after-libc)
-$(call after-link,$@)
-endef
-define +link-printers-tests
-$(CC) $(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
- $(+link-after-libc)
-$(call after-link,$@)
-endef
-endif # build-pie-default
-else # build-static
-+link = $(+link-static)
-+link-tests = $(+link-static-tests)
-+link-tests-before-inputs = $(+link-static-before-inputs)
-+link-tests-after-inputs = $(link-libc-static-tests) $(+link-static-after-libc)
-+link-printers-tests = $(+link-static-tests)
-endif # build-shared
-endif # +link
-
-# The pretty printer test programs need to be compiled without optimizations
-# so they won't confuse gdb. We could use either the 'GCC optimize' pragma
-# or the 'optimize' function attribute to achieve this; however, at least on
-# ARM, gcc always produces different debugging symbols when invoked with
-# a -O greater than 0 than when invoked with -O0, regardless of anything else
-# we're using to suppress optimizations. Therefore, we need to explicitly pass
-# -O0 to it through CFLAGS.
-# Additionally, the build system will try to -include $(common-objpfx)/config.h
-# when compiling the tests, which will throw an error if some special macros
-# (such as __OPTIMIZE__ and IS_IN_build) aren't defined. To avoid this, we
-# tell gcc to define IS_IN_build.
-CFLAGS-printers-tests := -O0 -ggdb3 -DIS_IN_build
-
-ifeq (yes,$(build-shared))
-# These indicate whether to link using the built ld.so or the installed one.
-installed-rtld-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
-built-rtld-LDFLAGS = -Wl,-dynamic-linker=$(elf-objpfx)ld.so
-
-ifndef rtld-LDFLAGS
-rtld-LDFLAGS = $(installed-rtld-LDFLAGS)
-endif
-
-ifndef rtld-tests-LDFLAGS
-ifeq (yes,$(build-hardcoded-path-in-tests))
-rtld-tests-LDFLAGS = $(built-rtld-LDFLAGS)
-else
-rtld-tests-LDFLAGS = $(installed-rtld-LDFLAGS)
-endif # build-hardcoded-path-in-tests
-endif # rtld-tests-LDFLAGS
-
-endif # build-shared
-
-ifndef link-libc
-ifeq (yes,$(build-shared))
-# We need the versioned name of libc.so in the deps of $(others) et al
-# so that the symlink to libc.so is created before anything tries to
-# run the linked programs.
-link-libc-rpath = -Wl,-rpath=$(rpath-link)
-link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
-
-# For programs which are not tests, $(link-libc-rpath-link) is added
-# directly in $(+link), $(+link-pie) above, so that -Wl,-rpath-link
-# comes before the expansion of LDLIBS-* and affects libraries added
-# there. For shared objects, -Wl,-rpath-link is added via
-# $(build-shlib-helper) and $(build-module-helper) in Makerules (also
-# before the expansion of LDLIBS-* variables).
-
-# Tests use -Wl,-rpath instead of -Wl,-rpath-link for
-# build-hardcoded-path-in-tests.
-ifeq (yes,$(build-hardcoded-path-in-tests))
-link-libc-tests-rpath-link = $(link-libc-rpath)
-link-test-modules-rpath-link = $(link-libc-rpath)
-else
-link-libc-tests-rpath-link = $(link-libc-rpath-link)
-link-test-modules-rpath-link =
-endif # build-hardcoded-path-in-tests
-
-link-libc-between-gnulib = $(common-objpfx)libc.so$(libc.so-version) \
- $(common-objpfx)$(patsubst %,$(libtype.oS),c) \
- -Wl,--as-needed $(elf-objpfx)ld.so \
- -Wl,--no-as-needed
-link-libc = $(link-libc-between-gnulib) $(gnulib)
-
-link-libc-tests-after-rpath-link = $(gnulib-tests) $(link-libc-between-gnulib) $(gnulib-tests)
-link-libc-tests = $(link-libc-tests-rpath-link) \
- $(link-libc-tests-after-rpath-link)
-# Pretty printer test programs always require rpath instead of rpath-link.
-link-libc-printers-tests = $(link-libc-rpath) \
- $(link-libc-tests-after-rpath-link)
-
-# This is how to find at build-time things that will be installed there.
-rpath-dirs = math elf dlfcn nss nis rt resolv mathvec support
-rpath-link = \
-$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
-else # build-static
-link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
-link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
-endif # build-shared
-endif # link-libc
-
-# Differences in the linkers on the various platforms.
-LDFLAGS-rpath-ORIGIN = -Wl,-rpath,'$$ORIGIN'
-LDFLAGS-soname-fname = -Wl,-soname,$(@F)
-LDFLAGS-rdynamic = -rdynamic
-LDFLAGS-Bsymbolic = -Bsymbolic
-
-# Choose the default search path for the dynamic linker based on
-# where we will install libraries.
-ifneq ($(libdir),$(slibdir))
-default-rpath = $(slibdir):$(libdir)
-else
-default-rpath = $(libdir)
-endif
-
-ifndef link-extra-libs
-link-extra-libs = $(LDLIBS-$(@F))
-link-extra-libs-static = $(link-extra-libs)
-endif
-
-# The static libraries.
-link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
-link-libc-static-tests = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib-tests) -Wl,--end-group
-
-# How to link against libgcc. Some libgcc functions, such as those
-# for "long long" arithmetic or software floating point, can always be
-# built without use of C library headers and do not have any global
-# state so can safely be linked statically into any executable or
-# shared library requiring them; these functions are in libgcc.a.
-# Other functions, relating to exception handling, may require C
-# library headers to build and it may not be safe to have more than
-# one copy of them in a process; these functions are only in
-# libgcc_s.so and libgcc_eh.a.
-#
-# To avoid circular dependencies when bootstrapping, it is desirable
-# to avoid use of libgcc_s and libgcc_eh in building glibc. Where any
-# glibc functionality (in particular, thread cancellation) requires
-# exception handling, this is implemented through dlopen of libgcc_s
-# to avoid unnecessary dependencies on libgcc_s by programs not using
-# that functionality; executables built with glibc do not use
-# exception handling other than through thread cancellation.
-#
-# Undefined references to functions from libgcc_eh or libgcc_s may
-# arise for code built with -fexceptions. In the case of statically
-# linked programs installed by glibc, unwinding will never actually
-# occur at runtime and the use of elf/static-stubs.c to resolve these
-# references is safe. In the case of statically linked test programs
-# and test programs built with -fexceptions, unwinding may occur in
-# some cases and it is preferable to link with libgcc_eh or libgcc_s
-# so that the testing is as similar as possible to how programs will
-# be built with the installed glibc.
-#
-# Some architectures have architecture-specific systems for exception
-# handling that may involve undefined references to
-# architecture-specific functions. On those architectures,
-# gnulib-arch and static-gnulib-arch may be defined in sysdeps
-# makefiles to use additional libraries for linking executables and
-# shared libraries built by glibc.
-ifndef gnulib
-ifneq ($(have-cc-with-libunwind),yes)
- libunwind =
-else
- libunwind = -lunwind
-endif
-libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
-gnulib-arch =
-gnulib = -lgcc $(gnulib-arch)
-gnulib-tests := -lgcc $(libgcc_eh)
-static-gnulib-arch =
-# By default, elf/static-stubs.o, instead of -lgcc_eh, is used to
-# statically link programs. When --disable-shared is used, we use
-# -lgcc_eh since elf/static-stubs.o isn't sufficient.
-ifeq (yes,$(build-shared))
-static-gnulib = -lgcc $(static-gnulib-arch)
-else
-static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
-endif
-static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
-libc.so-gnulib := -lgcc
-endif
-+preinit = $(addprefix $(csu-objpfx),crti.o)
-+postinit = $(addprefix $(csu-objpfx),crtn.o)
-+prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o`
-+postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
-# Variants of the two previous definitions for linking PIE programs.
-+prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o`
-+postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o`
-# Variants of the two previous definitions for statically linking programs.
-ifeq (yes,$(enable-static-pie))
-# Static PIE must use PIE variants.
-+prectorT = $(+prectorS)
-+postctorT = $(+postctorS)
-else
-+prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o`
-+postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
-endif
-csu-objpfx = $(common-objpfx)csu/
-elf-objpfx = $(common-objpfx)elf/
-
-# A command that, prepended to the name and arguments of a program,
-# and run on the build system, causes that program with those
-# arguments to be run on the host for which the library is built.
-ifndef test-wrapper
-test-wrapper =
-endif
-# Likewise, but the name of the program is preceded by
-# <variable>=<value> assignments for environment variables.
-ifndef test-wrapper-env
-test-wrapper-env = $(test-wrapper) env
-endif
-# Likewise, but the program's environment will be empty except for any
-# explicit <variable>=<value> assignments preceding the program name.
-ifndef test-wrapper-env-only
-test-wrapper-env-only = $(test-wrapper) env -i
-endif
-
-# Whether to run test programs built for the library's host system.
-ifndef run-built-tests
-ifeq (yes|,$(cross-compiling)|$(test-wrapper))
-run-built-tests = no
-else
-run-built-tests = yes
-endif
-endif
-
-# Whether to stop immediately when a test fails. Nonempty means to
-# stop, empty means not to stop.
-ifndef stop-on-test-failure
-stop-on-test-failure =
-endif
-
-# How to run a program we just linked with our library.
-# The program binary is assumed to be $(word 2,$^).
-built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^))
-rtld-prefix = $(elf-objpfx)$(rtld-installed-name) \
- --library-path \
- $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))
-ifeq (yes,$(build-shared))
-comma = ,
-sysdep-library-path = \
-$(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
- $(filter -Wl$(comma)-rpath-link=%,\
- $(sysdep-LDFLAGS)))))
-# $(run-via-rtld-prefix) is a command that, when prepended to the name
-# of a program built with the newly built library, produces a command
-# that, executed on the host for which the library is built, runs that
-# program. For tests listed in tests-static or xtests-static, it is
-# empty.
-run-via-rtld-prefix = \
- $(if $(strip $(filter $(notdir $(built-program-file)), \
- $(tests-static) $(xtests-static))),, $(rtld-prefix))
-else
-run-via-rtld-prefix =
-endif
-# $(run-program-env) is the default environment variable settings to
-# use when running a program built with the newly built library.
-run-program-env = GCONV_PATH=$(common-objpfx)iconvdata \
- LOCPATH=$(common-objpfx)localedata LC_ALL=C
-# $(run-program-prefix) is a command that, when prepended to the name
-# of a program built with the newly built library, produces a command
-# that, executed on the build system on which "make" is run, runs that
-# program. $(run-program-prefix-before-env) and
-# $(run-program-prefix-after-env) are similar, but separate parts
-# before and after a list of environment variables.
-run-program-prefix-before-env = $(test-wrapper-env)
-run-program-prefix-after-env = $(run-via-rtld-prefix)
-run-program-prefix = $(run-program-prefix-before-env) $(run-program-env) \
- $(run-program-prefix-after-env)
-# $(built-program-cmd) is a command that, executed on the build system
-# on which "make" is run, runs the newly built program that is the
-# second dependency of the makefile target in which
-# $(built-program-cmd) is used. $(built-program-cmd-before-env) and
-# $(built-program-cmd-after-env) are similar, before and after a list
-# of environment variables.
-built-program-cmd-before-env = $(test-wrapper-env)
-built-program-cmd-after-env = $(run-via-rtld-prefix) $(built-program-file)
-built-program-cmd = $(built-program-cmd-before-env) $(run-program-env) \
- $(built-program-cmd-after-env)
-# $(host-built-program-cmd) is a command that, executed on the host
-# for which the library is built, runs the newly built program that is
-# the second dependency of the makefile target in which
-# $(host-built-program-cmd) is used.
-host-built-program-cmd = $(run-via-rtld-prefix) $(built-program-file)
-# $(ld-library-path) is the common content to be set in LD_LIBRARY_PATH
-# for running static binaries that may load dynamic objects.
-ld-library-path = $(objpfx):$(common-objpfx)$(addprefix :,$(sysdep-ld-library-path))
-
-ifndef LD
-LD := ld -X
-endif
-
-# $(test-via-rtld-prefix) is a command that, when prepended to the name
-# of a test program built with the newly built library, produces a command
-# that, executed on the host for which the library is built, runs that
-# program. For tests listed in tests-static or xtests-static as well
-# as when test programs are hardcoded to the newly built libraries, it
-# is empty.
-
-# $(test-program-prefix) is a command that, when prepended to the name
-# of a test program built with the newly built library, produces a command
-# that, executed on the build system on which "make" is run, runs that
-# test program. $(test-program-prefix-before-env) and
-# $(test-program-prefix-after-env) are similar, before and after a
-# list of environment variables.
-
-# $(test-program-cmd) is a command that, executed on the build system
-# on which "make" is run, runs the newly built test program that is the
-# second dependency of the makefile target in which
-# $(test-program-cmd) is used. $(test-program-cmd-before-env) and
-# $(test-program-cmd-after-env) are similar, before and after a list
-# of environment variables.
-
-# $(host-test-program-cmd) is a command that, executed on the host
-# for which the library is built, runs the newly built test program that
-# is the second dependency of the makefile target in which
-# $(host-test-program-cmd) is used.
-
-ifeq (yes,$(build-hardcoded-path-in-tests))
-test-via-rtld-prefix =
-test-program-prefix-before-env = $(test-wrapper-env)
-test-program-prefix-after-env =
-test-program-prefix = $(test-program-prefix-before-env) $(run-program-env) \
- $(test-program-prefix-after-env)
-test-program-cmd-before-env = $(test-wrapper-env)
-test-program-cmd-after-env = $(built-program-file)
-test-program-cmd = $(test-program-cmd-before-env) $(run-program-env) \
- $(test-program-cmd-after-env)
-host-test-program-cmd = $(built-program-file)
-else
-test-via-rtld-prefix = $(run-via-rtld-prefix)
-test-program-prefix-before-env = $(run-program-prefix-before-env)
-test-program-prefix-after-env = $(run-program-prefix-after-env)
-test-program-prefix = $(run-program-prefix)
-test-program-cmd-before-env = $(built-program-cmd-before-env)
-test-program-cmd-after-env = $(built-program-cmd-after-env)
-test-program-cmd = $(built-program-cmd)
-host-test-program-cmd = $(host-built-program-cmd)
-endif
-
-# Extra flags to pass to GCC.
-ifeq ($(all-warnings),yes)
-+gccwarn := -Wall -Wwrite-strings -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar
-else
-+gccwarn := -Wall -Wwrite-strings
-endif
-+gccwarn += -Wundef
-ifeq ($(enable-werror),yes)
-+gccwarn += -Werror
-endif
-+gccwarn-c = -Wstrict-prototypes -Wold-style-definition
-
-# We do not depend on the address of constants in different files to be
-# actually different, so allow the compiler to merge them all.
-+merge-constants = -fmerge-all-constants
-
-# We have to assume that glibc functions are called in any rounding
-# mode and also change the rounding mode in a few functions. So,
-# disable any optimization that assume default rounding mode.
-+math-flags = -frounding-math
-
-# Logically only "libnldbl", "nonlib" and "testsuite" should be using
-# -fno-math-errno. However due to GCC bug #88576, only "libm" can use
-# -fno-math-errno.
-+extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno)
-
-# Use 64 bit time_t support for installed programs
-installed-modules = nonlib nscd lddlibc4 ldconfig locale_programs \
- iconvprogs libnss_files libnss_compat libnss_db libnss_hesiod \
- libutil libpcprofile libSegFault
-+extra-time-flags = $(if $(filter $(installed-modules),\
- $(in-module)),-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64)
-
-# We might want to compile with some stack-protection flag.
-ifneq ($(stack-protector),)
-+stack-protector=$(stack-protector)
-endif
-
-# Some routines are unsafe to build with stack-protection since they're called
-# before the stack check guard is set up. Provide a way to disable stack
-# protector. The first argument is the extension (.o, .os, .oS) and the second
-# is a list of routines that this path should be applied to.
-define elide-stack-protector
-$(if $(filter $(@F),$(patsubst %,%$(1),$(2))), $(no-stack-protector))
-endef
-
-# The program that makes Emacs-style TAGS files.
-ETAGS := etags
-
-# The `xgettext' program for producing .pot files from sources.
-ifndef XGETTEXT
-XGETTEXT = xgettext
-endif
-
-# The `m4' macro processor; this is used by sysdeps/sparc/Makefile (and
-# perhaps others) to preprocess assembly code in some cases.
-M4 = m4
-
-# To force installation of files even if they are older than the
-# installed files. This variable is included in the dependency list
-# of all installation targets.
-ifeq ($(force-install),yes)
-+force = force-install
-else
-+force =
-endif
-
-####
-#### End of configuration variables.
-####
-
-# This tells some versions of GNU make before 3.63 not to export all variables.
-.NOEXPORT:
-
-# We want to echo the commands we're running without
-# umpteen zillion filenames along with it (we use `...' instead)
-# but we don't want this echoing done when the user has said
-# he doesn't want to see commands echoed by using -s.
-ifneq "$(findstring s,$(MAKEFLAGS))" "" # if -s
-+cmdecho := echo >/dev/null
-else # not -s
-+cmdecho := echo
-endif # -s
-
-# These are the flags given to the compiler to tell
-# it what sort of optimization and/or debugging output to do.
-ifndef +cflags
-# If `CFLAGS' was defined, use that.
-ifdef CFLAGS
-+cflags := $(filter-out -I%,$(CFLAGS))
-endif # CFLAGS
-endif # +cflags
-
-# If none of the above worked, default to "-g -O".
-ifeq "$(strip $(+cflags))" ""
-+cflags := $(default_cflags)
-endif # $(+cflags) == ""
-
-# Force building with -fno-common because hidden_def, compat_symbol
-# and other constructs do not work for common symbols (and would
-# otherwise require specifying __attribute__ ((nocommon)) on a
-# case-by-case basis).
-+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
- $(+stack-protector) -fno-common
-+gcc-nowarn := -w
-
-# Each sysdeps directory can contain header files that both will be
-# used to compile and will be installed. Each can also contain an
-# include/ subdirectory, whose header files will be used to compile
-# but will not be installed, and will take precedence over the
-# installed files. This mirrors the top-level include/ subdirectory.
-+sysdep-includes := $(foreach dir,$(+sysdep_dirs),\
- $(addprefix -I,$(wildcard $(dir)/include) $(dir)))
-
-# These are flags given to the C compiler to tell it to look for
-# include files (including ones given in angle brackets) in the parent
-# library source directory, in the include directory, and in the
-# current directory.
-+includes = -I$(..)include $(if $(subdir),$(objpfx:%/=-I%)) \
- $(+sysdep-includes) $(includes) \
- $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes)
-
-# Since libio has several internal header files, we use a -I instead
-# of many little headers in the include directory.
-libio-include = -I$(..)libio
-
-# List of non-library modules that we build.
-built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \
- libSegFault libpcprofile librpcsvc locale-programs \
- memusagestat nonlib nscd extramodules libnldbl libsupport \
- testsuite testsuite-internal
-
-in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
- $(libof-$(<F)) \
- $(libof-$(@F)) \
- libc))
-
-# Build ld.so, libc.so and libpthread.so with -ftls-model=initial-exec
-tls-model = $(if $(filter libpthread rtld \
- libc,$(in-module)),-ftls-model=initial-exec,)
-
-module-cppflags-real = -include $(common-objpfx)libc-modules.h \
- -DMODULE_NAME=$(in-module)
-
-# We don't need libc-modules.h and the MODULE_NAME definition for .v.i
-# files. These targets don't (and will likely never need to) use the IS_IN
-# facility. In fact, shlib-versions should not use it because that will
-# create a circular dependency as libc-modules.h is generated from
-# shlib-versions.
-module-cppflags = $(if $(filter %.mk.i %.v.i,$(@F)),,$(module-cppflags-real))
-
-# These are the variables that the implicit compilation rules use.
-# Note that we can't use -std=* in CPPFLAGS, because it overrides
-# the implicit -lang-asm and breaks cpp behavior for .S files--notably
-# it causes cpp to stop predefining __ASSEMBLER__.
-CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \
- $($(subdir)-CPPFLAGS) \
- $(+includes) $(defines) $(module-cppflags) \
- -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
- $(CPPFLAGS-$(suffix $@)) \
- $(foreach lib,$(libof-$(basename $(@F))) \
- $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
- $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
-
-ifneq (no,$(have-tunables))
-CPPFLAGS += -DTOP_NAMESPACE=glibc
-endif
-
-override CFLAGS = -std=gnu11 -fgnu89-inline $(config-extra-cflags) \
- $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
- $(+extra-math-flags) $(+extra-time-flags) \
- $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
- $(CFLAGS-$(@F)) $(tls-model) \
- $(foreach lib,$(libof-$(basename $(@F))) \
- $(libof-$(<F)) $(libof-$(@F)),$(CFLAGS-$(lib)))
-# Use our copies of cstdlib and cmath.
-override CXXFLAGS = -I$(common-objpfx) $(c++-sysincludes) \
- $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
- $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
-
-# If everything is compiled with -fPIC (implicitly) we must tell this by
-# defining the PIC symbol.
-ifeq (yes,$(build-pic-default))
-pic-default = -DPIC
-endif
-
-# Enable object files for different versions of the library.
-# Various things use $(object-suffixes) to know what all to make.
-# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
-# to pass different flags for each flavor.
-libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
-# .op may be added to all-object-suffixes below.
-all-object-suffixes := .o .os .oS
-object-suffixes :=
-CPPFLAGS-.o = $(pic-default)
-# libc.a must be compiled with -fPIE/-fpie for static PIE.
-CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) $(pie-default)
-libtype.o := lib%.a
-object-suffixes += .o
-ifeq (yes,$(build-shared))
-# Under --enable-shared, we will build a shared library of PIC objects.
-# The PIC object files are named foo.os.
-object-suffixes += .os
-pic-cppflags = -DPIC -DSHARED
-CPPFLAGS-.os = $(pic-cppflags)
-CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag)
-libtype.os := lib%_pic.a
-# This can be changed by a sysdep makefile
-pic-ccflag = -fPIC
-# This one should always stay like this unless there is a very good reason.
-PIC-ccflag = -fPIC
-endif
-# This can be changed by a sysdep makefile
-pie-ccflag = -fpie
-no-pie-ccflag = -fno-pie
-# This one should always stay like this unless there is a very good reason.
-PIE-ccflag = -fPIE
-ifeq (yes,$(build-profile))
-# Under --enable-profile, we will build a static library of profiled objects.
-# The profiled object files are named foo.op.
-all-object-suffixes += .op
-object-suffixes += .op
-CPPFLAGS-.op = -DPROF $(pic-default)
-# libc_p.a must be compiled with -fPIE/-fpie for static PIE.
-CFLAGS-.op = -pg $(pie-default)
-libtype.op = lib%_p.a
-endif
-
-# Convenience variable for when we want to treat shared-library cases
-# differently from the rest.
-object-suffixes-noshared := $(filter-out .os,$(object-suffixes))
-
-object-suffixes-for-libc := $(object-suffixes)
-
-ifeq (yes,$(build-shared))
-# Build special library that contains the static-only routines for libc.
-object-suffixes-for-libc += .oS
-
-# Must build the routines as PIC, though, because they can end up in (users')
-# shared objects. We don't want to use CFLAGS-os because users may, for
-# example, make that processor-specific.
-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags)
-CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
-libtype.oS = lib%_nonshared.a
-endif
-
-# The assembler can generate debug information too.
-ifndef ASFLAGS
-ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS))
-endif
-override ASFLAGS += -Werror=undef $(ASFLAGS-config) $(asflags-cpu)
-
-ifndef BUILD_CC
-BUILD_CC = $(CC)
-endif
-
-move-if-change = $(SHELL) $(..)scripts/move-if-change
-
--include $(common-objpfx)sysd-sorted
-subdirs = $(sorted-subdirs)
-subdir-srcdirs = $(foreach dir,$(subdirs),\
- $(firstword $($(dir)-srcdir) $(..)$(dir)))
-
-# This is a pair of implicit rules to preprocess a file with # comments,
-# %ifdef et al, based on config.h settings or other %include'd files.
-# We use chained rules instead of a pipeline here so that we can properly
-# check the exit status of cpp rather than using its bad output when there
-# is a preprocessing error. Another rule should depend on the output file
-# `FOO.v', and along with that `FOO.v.i' should be given dependencies
-# listing both its input files, and any header files that it may reference
-# (but no commands).
-%.v.i: $(common-objpfx)config.h $(..)Makeconfig
- sed '/^[ ]*%/!s/#.*$$//;/^[ ]*$$/d;s/^[ ]*%/#/' \
- $(filter-out FORCE %.h $(..)Makeconfig,$^) \
- | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - \
- > $@T
- mv -f $@T $@
-%.v: %.v.i
- sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T
- mv -f $@T $@
-
-ifeq (yes, $(build-shared))
-
-# To generate a header to support more than one ABI for different
-# architecture variants, the CPU/Makefile defines abi-variants to be a
-# list of names for those variants (e.g. 32 64), and, for each variant,
-# defines abi-$(variant)-condition to be the condition for those options
-# to use in a C #if condition. abi-includes may be defined to a list of
-# headers to include in the generated header, if the default does not
-# suffice. default-abi is defined to be the ABI for the current glibc
-# build.
-
-ifndef abi-includes
-abi-includes := bits/wordsize.h
-endif
-
-# Process the shlib-versions file, which tells us what shared library
-# version numbers to use when we install shared objects on this system.
-# We need to wait until $(subdirs) is complete.
-ifeq ($(sysd-sorted-done),t)
--include $(common-objpfx)soversions.mk
-ifndef avoid-generated
-$(common-objpfx)shlib-versions.v.i: \
- $(wildcard $(+sysdep_dirs:=/shlib-versions) \
- $(subdir-srcdirs:=/shlib-versions)) \
- $(..)shlib-versions
-
-$(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
- $(common-objpfx)shlib-versions.v
- $(AWK) -f $^ > $@T
- mv -f $@T $@
-$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
- (while read which lib number setname; do \
- eval seen_$$which=1; \
- test x"$$which" = xDEFAULT || continue; \
- case $$number in \
- [0-9]*) echo "$$lib.so-version=.$$number"; \
- echo "all-sonames+=$$lib=$$lib.so\$$($$lib.so-version)";;\
- *) echo "$$lib.so-version=$$number"; \
- echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
- esac; \
- done; \
- echo soversions.mk-done = t;) < $< > $@T; exit 0
- mv -f $@T $@
-endif
-endif
-
-postclean-generated += soversions.mk soversions.i \
- shlib-versions.v shlib-versions.v.i
-
-before-compile += $(common-objpfx)libc-modules.h
-common-generated += libc-modules.h libc-modules.stmp
-ifeq ($(soversions.mk-done),t)
-# Generate a header with macro definitions for use with the IS_IN macro.
-# These are the possible values for the MODULE_NAME macro defined when building
-# sources, to identify which module the translation unit is going to be built
-# into.
-$(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
-$(common-objpfx)libc-modules.stmp: $(..)scripts/gen-libc-modules.awk \
- $(common-objpfx)soversions.i
- $(AWK) -v buildlist="$(subst -,_,$(built-modules))" -f $^ > ${@:stmp=T}
- $(move-if-change) ${@:stmp=T} ${@:stmp=h}
- touch $@
-
-endif
-
-# Build the tunables list header early since it could be used by any module in
-# glibc.
-ifneq (no,$(have-tunables))
-before-compile += $(common-objpfx)dl-tunable-list.h
-common-generated += dl-tunable-list.h dl-tunable-list.stmp
-
-$(common-objpfx)dl-tunable-list.h: $(common-objpfx)dl-tunable-list.stmp; @:
-$(common-objpfx)dl-tunable-list.stmp: \
- $(..)scripts/gen-tunables.awk \
- $(..)elf/dl-tunables.list \
- $(wildcard $(subdirs:%=$(..)%/dl-tunables.list)) \
- $(wildcard $(sysdirs:%=%/dl-tunables.list))
- $(AWK) -f $^ > ${@:stmp=T}
- $(move-if-change) ${@:stmp=T} ${@:stmp=h}
- touch $@
-endif
-
-# Dump the GCC macros used by the default compiler flags to a header
-# file, so that they can be inspected when using different compiler
-# flags. Add the GCCMACRO prefix to make these macro names unique.
-$(common-objpfx)gcc-macros.h.in: $(common-objpfx)config.status
- $(CC) $(CFLAGS) $(CPPFLAGS) -E -dM -x c -o $@ /dev/null
-$(common-objpfx)gcc-macros.h: $(common-objpfx)gcc-macros.h.in
- sed 's/^#define /#define GCCMACRO/' < $< > $@
-before-compile += $(common-objpfx)gcc-macros.h
-
-# Generate version maps, but wait until sysdep-subdirs is known
-ifeq ($(sysd-sorted-done),t)
-ifeq ($(build-shared),yes)
--include $(common-objpfx)sysd-versions
--include $(common-objpfx)Versions.mk
-$(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions
-common-generated += $(version-maps)
-postclean-generated += sysd-versions Versions.all abi-versions.h \
- Versions.def Versions.v.i Versions.v Versions.mk
-
-ifndef avoid-generated
-ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs))
-sysd-versions-force = FORCE
-FORCE:
-endif
-
-$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \
- $(common-objpfx)Versions.v
- LC_ALL=C $(AWK) -f $^ > $@T
- mv -f $@T $@
-
-$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
- $(common-objpfx)soversions.i \
- $(common-objpfx)Versions.def
- { while read which lib version setname; do \
- test x"$$which" = xDEFAULT || continue; \
- test -z "$$setname" || echo "$$lib : $$setname"; \
- done < $(word 2,$^); \
- cat $(word 3,$^); \
- } | LC_ALL=C $(AWK) -f $< > $@T
- mv -f $@T $@
-$(common-objpfx)Versions.mk: $(..)scripts/haveversions.awk \
- $(common-objpfx)Versions.all
- $(AWK) -f $^ > $@T
- mv -f $@T $@
-# See %.v/%.v.i implicit rules in Makeconfig.
-$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \
- $(wildcard $(sysdirs:%=%/Versions)) \
- $(sysd-versions-force)
-$(common-objpfx)sysd-versions: $(common-objpfx)versions.stmp
-$(common-objpfx)versions.stmp: $(common-objpfx)Versions.all \
- $(common-objpfx)Versions.v \
- $(..)scripts/versions.awk
- ( echo 'sysd-versions-subdirs = $(subdirs) $(config-sysdirs)' ; \
- cat $(word 2,$^) \
- | LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
- -v move_if_change='$(move-if-change)' \
- -f $(word 3,$^); \
- ) > $(common-objpfx)sysd-versionsT
- mv -f $(common-objpfx)sysd-versionsT $(common-objpfx)sysd-versions
- touch $@
-endif # avoid-generated
-endif # $(build-shared) = yes
-
--include $(common-objpfx)time64-compat.mk
-postclean-generated += time64-compat.mk
-
-$(common-objpfx)time64-compat.mk: $(common-objpfx)time64-compat.mk.i \
- $(sysd-versions-force)
- sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T
- mv -f $@T $@
-$(common-objpfx)time64-compat.mk.i: $(..)Makeconfig
- printf "#include <time64-compat.h>\n#ifdef TIME64_NON_DEFAULT\nhave-time64-compat = yes\n#endif" \
- | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - > $@T
- mv -f $@T $@
-
-
-endif # sysd-sorted-done
-
-# The name under which the run-time dynamic linker is installed.
-# We are currently going for the convention that `/lib/ld.so.1'
-# names the SVR4/ELF ABI-compliant dynamic linker.
-ifndef rtld-installed-name
-ifdef ld.so-version
-rtld-installed-name = $(ld.so-version)
-else
-rtld-installed-name = ld.so.1
-endif
-endif
-
-ifndef rtld-version-installed-name
-rtld-version-installed-name = ld-$(version).so
-endif
-
-endif # build-shared
-
-
-ifeq ($(build-shared),yes)
-libm = $(common-objpfx)math/libm.so$(libm.so-version)
-libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
-else
-libm = $(common-objpfx)math/libm.a
-libmvec = $(common-objpfx)mathvec/libmvec.a
-endif
-
-ifeq ($(build-shared),yes)
-libsupport = $(common-objpfx)support/libsupport_nonshared.a
-else
-libsupport = $(common-objpfx)support/libsupport.a
-endif
-
-# This is a partial list of subdirectories containing the library source.
-# The order is more or less arbitrary. The sorting step will take care of the
-# dependencies and generate sorted-subdirs dynamically.
-all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
- stdlib stdio-common libio malloc string wcsmbs time dirent \
- grp pwd posix io termios resource misc socket sysvipc gmon \
- gnulib iconv iconvdata wctype manual shadow gshadow po argp \
- localedata timezone rt conform debug mathvec support \
- dlfcn elf
-
-ifeq ($(build-crypt),yes)
-all-subdirs += crypt
-rpath-dirs += crypt
-endif
-
-ifndef avoid-generated
-# sysd-sorted itself will contain rules making the sysd-sorted target
-# depend on Depend files. But if you just added a Depend file to an
-# existing directory not in all-subdirs, then sysd-sorted needs to
-# be regenerated, so it depends on existing $(sorted-subdirs:=/Depend) files.
-all-Depend-files := $(wildcard $(sort \
- $(foreach dir,$(all-subdirs),\
- $(firstword $($(dir)-srcdir) \
- $(..)$(dir))/Depend) \
- $(sorted-subdirs:=/Depend)))
-$(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk \
- $(common-objpfx)config.make $(..)Makeconfig \
- $(wildcard $(sysdirs:=/Subdirs)) \
- $(all-Depend-files)
- $(AWK) -f $< \
- -v subdirs='$(all-subdirs)' \
- -v srcpfx='$(..)' \
- $(filter %/Subdirs %/Depend,$^) > $@-tmp
- mv -f $@-tmp $@
-$(all-Depend-files): ;
-endif
-
-# This gives partial TARGET:SOURCE pattern pairs to have rules
-# emitted into sysd-rules. A sysdeps Makeconfig fragment can
-# add its own special object file prefix to this list with e.g. foo-%:%
-# to have foo-*.? compiled from *.? using $(foo-CPPFLAGS).
-sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_%
-
-# Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here.
-sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig))
-ifneq (,$(sysdep-makeconfigs))
-include $(sysdep-makeconfigs)
-endif
-
-# Compute just the target patterns. Makeconfig has set sysd-rules-patterns.
-sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\
- $(firstword $(subst :, ,$p))))
-
-# $(libpthread-routines-var) and $(librt-routines-var) are the make
-# variable to which pthread routines need to be added to land in the
-# right library.
-ifeq ($(pthread-in-libc),yes)
-libpthread-routines-var = routines
-librt-routines-var = routines
-libanl-routines-var = routines
-else
-libpthread-routines-var = libpthread-routines
-librt-routines-var = librt-routines
-libanl-routines-var = libanl-routines
-endif
-
-# A sysdeps Makeconfig fragment may set libc-reentrant to yes.
-ifeq (yes,$(libc-reentrant))
-defines += -D_LIBC_REENTRANT
-
-libio-mtsafe = -D_IO_MTSAFE_IO
-endif
-
-# The name to give to a test in test results summaries.
-test-name = $(strip $(patsubst %.out, %, $(patsubst $(common-objpfx)%, %, $@)))
-
-# Likewise, in XFAIL variable names.
-test-xfail-name = $(strip $(patsubst %.out, %, $(patsubst $(objpfx)%, %, $@)))
-
-# Command to output a test status line (such as PASS: test-name). If
-# test-xfail-$(test-xfail-name) has a nonempty value, the status will be
-# XPASS or XFAIL rather than PASS or FAIL.
-evaluate-test = $(..)scripts/evaluate-test.sh $(test-name) $$? \
- $(if $(test-xfail-$(test-xfail-name)),true,false) \
- $(if $(stop-on-test-failure),true,false) \
- > $(common-objpfx)$(test-name).test-result
-
-endif # Makeconfig not yet included
-
-# Local Variables:
-# mode: makefile
-# End:
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/Makerules
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/Makerules (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new/Makerules (nonexistent)
@@ -1,1507 +0,0 @@
-# Copyright (C) 1991-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-#
-# Common rules for making the GNU C library. This file is included
-# by the top-level Makefile and by all subdirectory makefiles
-# (through Rules).
-#
-ifneq (,)
-This makefile requires GNU Make.
-endif
-
-REQUIRED_MAKE_VERSION = 3.74
-REAL_MAKE_VERSION = $(firstword $(MAKE_VERSION))
-
-ifneq ($(REQUIRED_MAKE_VERSION), \
- $(firstword $(sort $(REAL_MAKE_VERSION) $(REQUIRED_MAKE_VERSION))))
-Wrong GNU Make version. See above for the version needed.
-endif
-
-
-ifdef subdir
-.. := ../
-endif # subdir
-
-# If `sources' was defined by the parent makefile, undefine it so
-# we will later get it from wildcard search in this directory.
-ifneq "$(findstring env,$(origin sources))" ""
-sources :=
-endif
-
-oPATH := $(PATH)
-PATH := this definition should take precedence over $(oPATH)
-ifeq ($(PATH),$(oPATH))
-You must not use the -e flag when building the GNU C library.
-else
-PATH := $(oPATH)
-endif
-
-ifndef +included-Makeconfig
-include $(..)Makeconfig
-endif
-
-# This variable is used in ``include $(o-iterator)'' after defining
-# $(o-iterator-doit) to produce some desired rule using $o for the object
-# suffix, and setting $(object-suffixes-left) to $(object-suffixes); a copy
-# is produced for each object suffix in use.
-o-iterator = $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left))
-
-# Include any system-specific makefiles.
-
-# This is here so things in sysdep Makefiles can easily depend on foo.h as
-# appropriate and not worry about where foo.h comes from, which may be
-# system dependent and not known by that Makefile.
-vpath %.h $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
- $(+sysdep_dirs) $(..)))
-
-# The same is true for RPC source files.
-vpath %.x $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
- $(+sysdep_dirs) $(..)))
-
-# Some sysdep makefiles use this to distinguish being included here from
-# being included individually by a subdir makefile (hurd/Makefile needs this).
-in-Makerules := yes
-
-sysdep-makefiles := $(wildcard $(sysdirs:=/Makefile))
-ifneq (,$(sysdep-makefiles))
-include $(sysdep-makefiles)
-endif
-
-
-# Reorder before-compile so that mach things come first, and hurd things
-# second, before all else. The mach and hurd subdirectories have many
-# generated header files which the much of rest of the library depends on,
-# so it is best to build them first (and mach before hurd, at that).
-before-compile := $(filter $(common-objpfx)mach% $(common-objpfx)hurd%,\
- $(before-compile)) \
- $(filter-out $(common-objpfx)mach% $(common-objpfx)hurd%,\
- $(before-compile))
-
-# Even before that, we need abi-versions.h which is generated right here.
-ifeq ($(build-shared),yes)
-ifndef avoid-generated
-before-compile := $(common-objpfx)abi-versions.h $(before-compile)
-$(common-objpfx)abi-versions.h: $(..)scripts/abi-versions.awk \
- $(common-objpfx)Versions.all
- LC_ALL=C $(AWK) -f $^ > $@T
- mv -f $@T $@
-
-$(common-objpfx)%.latest: $(common-objpfx)abi-versions.h
- sed -n '/ VERSION_$*_/{s/^.*_\([A-Z0-9_]*\).*$$/\1/;h;};$${g;p;}' \
- $(common-objpfx)abi-versions.h > $@T
- mv -f $@T $@
-
-# first-versions.h and ldbl-compat-choose.h provide macros used in
-# various symbol versioning macro calls.
-before-compile := $(common-objpfx)first-versions.h \
- $(common-objpfx)ldbl-compat-choose.h $(before-compile)
-$(common-objpfx)first-versions.h: $(common-objpfx)versions.stmp
-$(common-objpfx)ldbl-compat-choose.h: $(common-objpfx)versions.stmp
-endif # avoid-generated
-endif # $(build-shared) = yes
-
-ifndef avoid-generated
-ifneq (,$(CXX))
-# If C++ headers <cstdlib> or <cmath> are used, GCC 6 will include
-# /usr/include/stdlib.h or /usr/include/math.h from "#include_next"
-# (instead of stdlib/stdlib.h or math/math.h in the glibc source
-# directory), and this turns up as a make dependency. An implicit
-# rule will kick in and make will try to install stdlib/stdlib.h or
-# math/math.h as /usr/include/stdlib.h or /usr/include/math.h because
-# the target is out of date. We make a copy of <cstdlib> and <cmath>
-# in the glibc build directory so that stdlib/stdlib.h and math/math.h
-# will be used instead of /usr/include/stdlib.h and /usr/include/math.h.
-before-compile := $(common-objpfx)cstdlib $(common-objpfx)cmath \
- $(before-compile)
-$(common-objpfx)cstdlib: $(c++-cstdlib-header)
- $(INSTALL_DATA) $< $@T
- $(move-if-change) $@T $@
-$(common-objpfx)cmath: $(c++-cmath-header)
- $(INSTALL_DATA) $< $@T
- $(move-if-change) $@T $@
-ifneq (,$(c++-bits-std_abs-h))
-# Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
-# including /usr/include/stdlib.h.
-before-compile := $(common-objpfx)bits/std_abs.h $(before-compile)
-$(common-objpfx)bits/std_abs.h: $(c++-bits-std_abs-h)
- $(INSTALL_DATA) $< $@T
- $(move-if-change) $@T $@
-endif
-endif
-
-before-compile := $(common-objpfx)libc-abis.h $(before-compile)
-$(common-objpfx)libc-abis.h: $(common-objpfx)libc-abis.stamp; @:
-$(common-objpfx)libc-abis.stamp: $(..)scripts/gen-libc-abis \
- $(firstword $(wildcard $(sysdirs:=/libc-abis)) \
- $(..)libc-abis) \
- $(..)Makerules
- $(SHELL) $< \
- $(base-machine)-$(config-vendor)-$(config-os) \
- < $(word 2,$^) > $(@:.stamp=.h)T
- $(move-if-change) $(@:.stamp=.h)T $(@:.stamp=.h)
- touch $@
-common-generated += $(common-objpfx)libc-abis.h
-endif # avoid-generated
-
-ifeq (yes,$(build-shared))
-$(common-objpfx)runtime-linker.h: $(common-objpfx)runtime-linker.stamp; @:
-$(common-objpfx)runtime-linker.stamp: $(common-objpfx)config.make
- $(make-target-directory)
- echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
- > ${@:stamp=T}
- $(move-if-change) ${@:stamp=T} ${@:stamp=h}
- touch $@
-endif
-
-# Make sure the subdirectory for object files gets created.
-ifdef objpfx
-ifeq (,$(wildcard $(objpfx).))
-before-compile += $(objpfx).
-$(objpfx).:
- $(make-target-directory)
-endif
-endif
-
-# Remove existing files from `before-compile'. Things are added there when
-# they must exist for dependency generation to work right, but once they
-# exist there is no further need for every single file to depend on them,
-# and those gratuitous dependencies result in many gratuitous
-# recompilations.
-before-compile := $(filter-out $(wildcard $(before-compile)),$(before-compile))
-
-# Don't let any before-compile file be an intermediate and get removed.
-ifdef before-compile
-$(before-compile):
-endif
-
-# We don't want $(common-objpfx) files to depend on miscellaneous stuff
-# in subdirs.
-ifdef subdir
-common-before-compile := $(filter-out $(objpfx)%,$(before-compile))
-else
-common-before-compile = $(before-compile)
-endif
-
-ifndef subdir
-# If a makefile needs to do something conditional on something that
-# can only be figured out from headers, write a FOO.make.c input
-# file that uses cpp contructs and contains @@@ LINE @@@ for each LINE
-# to emit in the generated makefile, and use -include $(common-objpfx)FOO.make.
-#
-# We only generate these in the top-level makefile, to avoid any weirdness
-# from subdir-specific makefile tweaks creeping in on an update.
-$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
- rm -f $@T $@.dT
- (echo '# Generated from $*.make.c by Makerules.'; \
- $(CC) $(CFLAGS) $(CPPFLAGS) -E -DASSEMBLER $< \
- -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
- | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
- echo 'common-generated += $(@F)'; \
- sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \
- rm -f $@.dT) > $@T
- mv -f $@T $@
-endif
-
-ifdef subdir
-sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \
- -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g'
-else
-sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \
- -e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g'
-endif
-
-ifdef gen-py-const-headers
-# We'll use a static pattern rule to match .pysym files with their
-# corresponding generated .py files.
-# The generated .py files go in the submodule's dir in the glibc build dir.
-py-const-files := $(patsubst %.pysym,%.py,$(gen-py-const-headers))
-py-const-dir := $(objpfx)
-py-const := $(addprefix $(py-const-dir),$(py-const-files))
-py-const-script := $(..)scripts/gen-as-const.py
-
-# This is a hack we use to generate .py files with constants for
-# Python code.
-#
-# $@.tmp is a temporary file we use to store the partial contents of
-# the target file. We do this instead of just writing on $@ because,
-# if the build process terminates prematurely, re-running Make
-# wouldn't run this rule since Make would see that the target file
-# already exists (despite it being incomplete).
-#
-# The output is redirected to a .py file; we'll import it in the main
-# Python code to read the constants generated by gen-as-const.py.
-$(py-const): $(py-const-dir)%.py: %.pysym $(py-const-script) \
- $(common-before-compile)
- $(make-target-directory)
- $(PYTHON) $(py-const-script) --python \
- --cc="$(CC) $(CFLAGS) $(CPPFLAGS)" $< \
- > $@.tmp
- mv -f $@.tmp $@
-
-generated += $(py-const)
-endif # gen-py-const-headers
-
-ifdef gen-as-const-headers
-# Generating headers for assembly constants.
-# We need this defined early to get into before-compile before
-# it's used in sysd-rules, below.
-# Define GEN_AS_CONST_HEADERS to avoid circular dependency [BZ #22792].
-# NB: <tcb-offsets.h> is generated from tcb-offsets.sym to define
-# offsets and sizes of types in <tls.h> and maybe <pthread.h> which
-# may include <tcb-offsets.h>. Target header files can check if
-# GEN_AS_CONST_HEADERS is defined to avoid circular dependency which
-# may lead to build hang on a many-core machine.
-$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.py \
- %.sym $(common-before-compile)
- $(PYTHON) $< --cc="$(CC) $(CFLAGS) $(CPPFLAGS) -DGEN_AS_CONST_HEADERS \
- -MD -MP -MF $(@:.h=.h.d)T \
- -MT '$(@:.h=.h.d) $(@:.h.d=.h)'" \
- $(filter %.sym,$^) > $(@:.h.d=.h)T
- sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
- $(@:.h=.h.d)T > $(@:.h=.h.d)T2
- rm -f $(@:.h=.h.d)T
- mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d)
- mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
-vpath %.sym $(sysdirs)
-before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
-
-tests-internal += $(gen-as-const-headers:%.sym=test-as-const-%)
-generated += $(gen-as-const-headers:%.sym=test-as-const-%.c)
-$(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.py $(..)Makerules \
- %.sym $(common-objpfx)%.h
- ($(AWK) '{ sub(/^/, "asconst_", $$2); print; }' $(filter %.h,$^); \
- $(PYTHON) $< --test $(filter %.sym,$^)) > $@T
- mv -f $@T $@
-endif
-
-ifeq (yes,$(build-shared))
-# Generate the header containing the names of all shared libraries.
-# We use a stamp file to avoid unnecessary recompilations.
-before-compile += $(common-objpfx)gnu/lib-names.h
-ifeq ($(soversions.mk-done),t)
-ifndef abi-variants
-lib-names-h-abi = gnu/lib-names.h
-lib-names-stmp-abi = gnu/lib-names.stmp
-else
-lib-names-h-abi = gnu/lib-names-$(default-abi).h
-lib-names-stmp-abi = gnu/lib-names-$(default-abi).stmp
-before-compile += $(common-objpfx)$(lib-names-h-abi)
-common-generated += gnu/lib-names.h
-install-others-nosubdir: $(inst_includedir)/$(lib-names-h-abi)
-$(common-objpfx)gnu/lib-names.h:
- $(make-target-directory)
- { \
- echo '/* This file is automatically generated.';\
- echo ' It defines macros to allow user program to find the shared'; \
- echo ' library files which come as part of GNU libc. */'; \
- echo '#ifndef __GNU_LIB_NAMES_H'; \
- echo '#define __GNU_LIB_NAMES_H 1'; \
- echo ''; \
- $(if $(abi-includes), \
- $(foreach h,$(abi-includes), echo '#include <$(h)>';) \
- echo '';) \
- $(foreach v,$(abi-variants),\
- $(if $(abi-$(v)-condition),\
- echo '#if $(abi-$(v)-condition)'; \
- echo '# include <gnu/lib-names-$(v).h>'); \
- $(if $(abi-$(v)-condition),echo '#endif';)) \
- echo ''; \
- echo '#endif /* gnu/lib-names.h */'; \
- } > $@
-endif
-$(common-objpfx)$(lib-names-h-abi): $(common-objpfx)$(lib-names-stmp-abi); @:
-$(common-objpfx)$(lib-names-stmp-abi): $(..)scripts/lib-names.awk \
- $(common-objpfx)soversions.i
- $(make-target-directory)
- { \
- $(if $(abi-variants), \
- echo '/* This file is automatically generated. */';\
- echo '#ifndef __GNU_LIB_NAMES_H'; \
- echo '# error "Never use <$(lib-names-h-abi)> directly; include <gnu/lib-names.h> instead."'; \
- echo '#endif';, \
- echo '/* This file is automatically generated.';\
- echo ' It defines macros to allow user program to find the shared'; \
- echo ' library files which come as part of GNU libc. */'; \
- echo '#ifndef __GNU_LIB_NAMES_H'; \
- echo '#define __GNU_LIB_NAMES_H 1';) \
- echo ''; \
- ($(foreach s,$(all-sonames), echo $(s);)) \
- | LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort; \
- $(if $(abi-variants),, \
- echo ''; \
- echo '#endif /* gnu/lib-names.h */';) \
- } > ${@:stmp=T}
- $(move-if-change) ${@:stmp=T} ${@:stmp=h}
- touch $@
-endif
-common-generated += $(lib-names-h-abi) $(lib-names-stmp-abi)
-endif
-
-###############################################################################
-# NOTE! Everything adding to before-compile needs to come before this point! #
-###############################################################################
-
-# Generate an ordered list of implicit rules which find the source files in
-# each sysdep directory. The old method was to use vpath to search all the
-# sysdep directories. However, that had the problem that a .S file in a
-# later directory would be chosen over a .c file in an earlier directory,
-# which does not preserve the desired sysdeps ordering behavior.
-
-# System-dependent makefiles can put in `inhibit-sysdep-asm' regexps
-# matching sysdep directories whose assembly source files should be
-# suppressed.
-
--include $(common-objpfx)sysd-rules
-ifneq ($(sysd-rules-sysdirs),$(config-sysdirs))
-# The value of $(+sysdep_dirs) the sysd-rules was computed for
-# differs from the one we are using now. So force a rebuild of sysd-rules.
-sysd-rules-force = FORCE
-FORCE:
-endif
-$(common-objpfx)sysd-rules: $(..)scripts/sysd-rules.awk \
- $(common-objpfx)config.make $(..)Makerules \
- $(sysdep-makefiles) $(sysdep-makeconfigs) \
- $(sysd-rules-force)
- -@rm -f $@T
- LC_ALL=C $(AWK) -f $< > $@T \
- -v all_object_suffixes='$(all-object-suffixes)' \
- -v inhibit_sysdep_asm='$(inhibit-sysdep-asm)' \
- -v sysd_rules_patterns='$(sysd-rules-patterns)' \
- -v config_sysdirs='$(config-sysdirs)'
- mv -f $@T $@
-
-ifndef sysd-rules-done
-# Don't do deps until this exists, because it provides rules to make the deps.
-no_deps=t
-endif
-
-define o-iterator-doit
-$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.cc $(before-compile); $$(compile-command.cc)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-# Omit the objpfx rules when building in the source tree, because
-# objpfx is empty and so these rules just override the ones above.
-ifdef objpfx
-# Define first rules to find the source files in $(objpfx).
-# Generated source files will end up there.
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.cc $(before-compile); $$(compile-command.cc)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-endif
-
-# Generate .dT files as we compile.
-compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@
-compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)
-compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
-compile-command.cc = $(compile.cc) $(OUTPUT_OPTION) $(compile-mkdep-flags)
-
-# Like compile-mkdep-flags, but for use with $(BUILD_CC). We don't want to
-# track system includes here, they may spuriously trigger an install rule,
-# and would cause the check-local-headers test to fail.
-native-compile-mkdep-flags = -MMD -MP -MF $@.dt -MT $@
-
-# GCC can grok options after the file name, and it looks nicer that way.
-compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
-compile.cc = $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS)
-compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
- $(ASFLAGS) $(ASFLAGS-$(suffix $@))
-COMPILE.c = $(CC) -c $(CFLAGS) $(CPPFLAGS)
-COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
- $(ASFLAGS) $(ASFLAGS-$(suffix $@))
-
-# We need this for the output to go in the right place. It will default to
-# empty if make was configured to work with a cc that can't grok -c and -o
-# together. You can't compile the C library with such a compiler.
-OUTPUT_OPTION = -o $@
-
-# This is the end of the pipeline for compiling generated C code.
-compile-stdin.c = $(COMPILE.c) -o $@ -x c - $(compile-mkdep-flags)
-
-# We need the $(CFLAGS) to be in there to have the right predefines during
-# the dependency run for C sources. But having it for assembly sources can
-# get the wrong predefines.
-S-CPPFLAGS = -DASSEMBLER $(asm-CPPFLAGS)
-
-ifneq (,$(objpfx))
-# Continuation lines here are dangerous because they introduce spaces!
-define sed-remove-objpfx
--e 's@ $(subst .,\.,$(subst @,\@,$(common-objpfx)))@ $$(common-objpfx)@g' \
--e 's@^$(subst .,\.,$(subst @,\@,$(common-objpfx)))@$$(common-objpfx)@g'
-endef
-endif
-
-# Modify the list of routines we build for different targets
-
-ifeq (yes,$(build-shared))
-ifndef libc.so-version
-# Undefine this because it can't work when we libc.so is unversioned.
-static-only-routines =
-endif
-endif
-
-elide-routines.oS += $(filter-out $(static-only-routines),\
- $(routines) $(aux) $(sysdep_routines))
-elide-routines.os += $(static-only-routines)
-
-# If we have versioned code we don't need the old versions in any of the
-# static libraries.
-elide-routines.o += $(shared-only-routines)
-elide-routines.op += $(shared-only-routines)
-
-# Shared library building.
-
-ifeq (yes,$(build-shared))
-
-# Reference map file only when shared libraries are built and a map file name
-# is given.
-ifeq ($(build-shared),yes)
-map-file = $(firstword $($(@F:.so=-map)) \
- $(addprefix $(common-objpfx), \
- $(filter $(@F:.so=.map),$(version-maps))))
-load-map-file = $(map-file:%=-Wl,--version-script=%)
-endif
-
-# Compiler arguments to use to link a shared object with libc and
-# ld.so. This is intended to be as similar as possible to a default
-# link with an installed libc.
-link-libc-args = -Wl,--start-group \
- $(libc-for-link) \
- $(common-objpfx)libc_nonshared.a \
- -Wl,--as-needed $(elf-objpfx)ld.so -Wl,--no-as-needed \
- -Wl,--end-group
-
-# The corresponding shared libc to use. This may be modified for a
-# particular target.
-libc-for-link = $(common-objpfx)libc.so
-
-# The corresponding dependencies. As these are used in dependencies,
-# not just commands, they cannot use target-specific variables so need
-# to name both possible libc.so objects.
-link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \
- $(common-objpfx)libc_nonshared.a $(elf-objpfx)ld.so
-
-# Pattern rule to build a shared object from an archive of PIC objects.
-# This must come after the installation rules so Make doesn't try to
-# build shared libraries in place from the installed *_pic.a files.
-# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
-# on other shared objects. The linking with libc and ld.so is intended
-# to be as similar as possible to a default link with an installed libc.
-lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(link-libc-deps)
- $(build-shlib) $(link-libc-args)
- $(call after-link,$@)
-
-define build-shlib-helper
-$(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) \
- $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) $(rtld-LDFLAGS) \
- $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
- $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
- $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
- -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
- $(LDFLAGS.so) $(LDFLAGS-lib.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
-endef
-
-ifeq (yes,$(use-default-link))
-# If the linker is good enough, we can let it use its default linker script.
-shlib-lds =
-shlib-lds-flags =
-else
-# binutils only position loadable notes into the first page for binaries,
-# not for shared objects
-$(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
- $(LINK.o) -shared -Wl,-O1 \
- -nostdlib -nostartfiles \
- $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \
- -Wl,--verbose 2>/dev/null | \
- sed > $@T \
- -e '/^=========/,/^=========/!d;/^=========/d' \
- $(if $(filter yes,$(have-hash-style)), \
- -e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
- -e '/^[ ]*\.hash[ ]*:.*$$/{h;d;}' \
- -e '/DATA_SEGMENT_ALIGN/{H;g}' \
- , \
- -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
- ) \
- -e 's/^.*\*(\.dynbss).*$$/& \
- PROVIDE(__start___libc_freeres_ptrs = .); \
- *(__libc_freeres_ptrs) \
- PROVIDE(__stop___libc_freeres_ptrs = .);/'\
- -e 's@^.*\*(\.jcr).*$$@& \
- PROVIDE(__start___libc_subfreeres = .);\
- __libc_subfreeres : { *(__libc_subfreeres) }\
- PROVIDE(__stop___libc_subfreeres = .);\
- PROVIDE(__start___libc_atexit = .);\
- __libc_atexit : { *(__libc_atexit) }\
- PROVIDE(__stop___libc_atexit = .);\
- PROVIDE(__start___libc_IO_vtables = .);\
- __libc_IO_vtables : { *(__libc_IO_vtables) }\
- PROVIDE(__stop___libc_IO_vtables = .);\
- /DISCARD/ : { *(.gnu.glibc-stub.*) }@'
- test -s $@T
- mv -f $@T $@
-common-generated += shlib.lds
-
-shlib-lds = $(common-objpfx)shlib.lds
-shlib-lds-flags = -T $(shlib-lds)
-endif
-
-define build-shlib
-$(build-shlib-helper) -o $@ $(shlib-lds-flags) \
- $(csu-objpfx)abi-note.o $(build-shlib-objlist)
-endef
-
-define build-module-helper
-$(LINK.o) -shared -static-libgcc $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \
- $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \
- $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
- -B$(csu-objpfx) $(load-map-file) \
- $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \
- $(link-test-modules-rpath-link) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
-endef
-
-# This macro is similar to build-shlib but it does not define a soname
-# and it does not depend on the destination name to start with `lib'.
-# binutils only position loadable notes into the first page for binaries,
-# not for shared objects
-define build-module
-$(build-module-helper) -o $@ $(shlib-lds-flags) \
- $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args)
-$(call after-link,$@)
-endef
-define build-module-asneeded
-$(build-module-helper) -o $@ $(shlib-lds-flags) \
- $(csu-objpfx)abi-note.o \
- -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \
- $(link-libc-args)
-$(call after-link,$@)
-endef
-
-# sofini.os must be placed last since it terminates .eh_frame section.
-build-module-helper-objlist = \
- $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
- $(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \
- $(elf-objpfx)sofini.os \
- $(link-libc-deps),$^))
-
-build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
-build-shlib-objlist = $(build-module-helper-objlist) \
- $(LDLIBS-$(@F:lib%.so=%).so) \
- $(filter $(elf-objpfx)sofini.os,$^)
-
-# Don't try to use -lc when making libc.so itself.
-# Also omits crti.o and crtn.o, which we do not want
-# since we define our own `.init' section specially.
-LDFLAGS-c.so = -nostdlib -nostartfiles
-# But we still want to link libc.so against $(libc.so-gnulib).
-LDLIBS-c.so += $(libc.so-gnulib)
-# Give libc.so an entry point and make it directly runnable itself.
-LDFLAGS-c.so += -e __libc_main
-# Pre-link the objects of libc_pic.a for .gnu.glibc-stub.* processing.
-$(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
- $(LINK.o) -nostdlib -nostartfiles -r -o $@ \
- $(LDFLAGS-c_pic.os) $(whole-archive) $^ -o $@
-
-ifeq (,$(strip $(shlib-lds-flags)))
-# Generate a list of -R options to excise .gnu.glibc-stub.* sections.
-$(common-objpfx)libc_pic.opts: $(common-objpfx)libc_pic.os
- $(OBJDUMP) -h $< | \
- $(AWK) '$$2 ~ /\.gnu\.glibc-stub\./ { print "-R", $$2 }' \
- > $@T
- mv -f $@T $@
-# Apply those -R options.
-$(common-objpfx)libc_pic.os.clean: $(common-objpfx)libc_pic.opts \
- $(common-objpfx)libc_pic.os
- $(OBJCOPY) @$^ $@
-generated += libc_pic.opts libc_pic.os.clean
-
-libc_pic_clean := .clean
-endif
-
-# Build a possibly-modified version of libc_pic.a for use in building
-# linkobj/libc.so.
-ifeq (,$(filter sunrpc,$(subdirs)))
-$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a
- $(make-target-directory)
- ln -f $< $@
-else
-$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \
- $(common-objpfx)sunrpc/librpc_compat_pic.a
- $(make-target-directory)
- (cd $(common-objpfx)linkobj; \
- $(AR) x ../libc_pic.a; \
- rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \
- $(AR) x ../sunrpc/librpc_compat_pic.a; \
- $(AR) cr libc_pic.a *.os; \
- rm *.os)
-endif # $(subdirs) contains sunrpc
-
-# Clear link-libc-deps for the libc.so libraries so build-shlibs does not
-# filter ld.so out of the list of linked objects.
-$(common-objpfx)libc.so: link-libc-deps = # empty
-$(common-objpfx)linkobj/libc.so: link-libc-deps = # empty
-
-# Use our own special initializer and finalizer files for the libc.so
-# libraries.
-$(common-objpfx)libc.so: $(common-objpfx)libc_pic.os$(libc_pic_clean) \
- $(elf-objpfx)sofini.os \
- $(elf-objpfx)interp.os \
- $(elf-objpfx)ld.so \
- $(shlib-lds)
- $(build-shlib)
- $(call after-link,$@)
-
-$(common-objpfx)linkobj/libc.so: $(common-objpfx)linkobj/libc_pic.a \
- $(elf-objpfx)sofini.os \
- $(elf-objpfx)interp.os \
- $(elf-objpfx)ld.so \
- $(shlib-lds)
- $(build-shlib)
- $(call after-link,$@)
-
-ifeq ($(build-shared),yes)
-$(common-objpfx)libc.so: $(common-objpfx)libc.map
-endif
-common-generated += libc.so libc_pic.os
-ifdef libc.so-version
-$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
- $(make-link)
-common-generated += libc.so$(libc.so-version)
-endif
-endif
-
-# Figure out the source filenames in this directory.
-
-override sources := $(addsuffix .c,\
- $(filter-out $(elided-routines),\
- $(routines) $(aux) \
- $(sysdep_routines)))
-sysdep_routines := $(sysdep_routines)
-
-headers := $(headers) $(sysdep_headers)
-
-# This is the list of all object files, gotten by
-# replacing every ".c" in `sources' with a ".o".
-override objects := $(addprefix $(objpfx),$(sources:.c=.o))
-
-
-# The makefile may define $(extra-libs) with `libfoo libbar'
-# to build libfoo.a et al from the modules listed in $(libfoo-routines).
-ifdef extra-libs
-# extra-lib.mk is included once for each extra lib to define rules
-# to build it, and to add its objects to the various variables.
-# During its evaluation, $(lib) is set to the name of the library.
-extra-libs-left := $(extra-libs)
-include $(patsubst %,$(..)extra-lib.mk,$(extra-libs))
-endif
-
-
-# The makefile may define $(modules-names) to build additional modules.
-# These are built with $(build-module), except any in $(modules-names-nobuild).
-# MODULE_NAME=extramodules, except any in $(modules-names-tests).
-ifdef modules-names
-cpp-srcs-left := $(filter-out $(modules-names-tests),$(modules-names))
-ifneq (,$(cpp-srcs-left))
-lib := extramodules
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-endif
-
-ifdef modules-names-tests
-cpp-srcs-left := $(filter $(modules-names-tests),$(modules-names))
-ifneq (,$(cpp-srcs-left))
-lib := testsuite
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-endif
-endif
-
-extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
-$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
- $(objpfx)%.os $(shlib-lds) $(link-libs-deps)
- $(build-module)
-endif
-
-+depfiles := $(sources:.c=.d) \
- $(patsubst %.o,%.d,$(filter %.o,$(extra-objs:.os=.o))) \
- $(patsubst %.oS,%.d,$(filter %.oS,$(extra-objs))) \
- $(patsubst %.o,%.d,$(filter %.o,$(extra-test-objs:.os=.o))) \
- $(addsuffix .d,$(tests) $(tests-internal) $(xtests) \
- $(tests-container) $(tests-printers) \
- $(test-srcs) $(tests-time64) $(xtests-time64))
-ifeq ($(build-programs),yes)
-+depfiles += $(addsuffix .d,$(others) $(sysdep-others))
-endif
-+depfiles := $(addprefix $(objpfx),\
- $(filter-out $(addsuffix .d,$(omit-deps)),\
- $(+depfiles)))
-all-dt-files := $(foreach o,$(object-suffixes-for-libc),$(+depfiles:.d=$o.dt))
-+depfiles := $(patsubst %.dt,%.d,$(wildcard $(all-dt-files))) \
- $(wildcard $(all-dt-files:.dt=.d))
-
-# This is a funny rule in that it removes its input file.
-%.d: %.dt
- @sed $(sed-remove-objpfx) $< > $(@:.d=.T) && \
- mv -f $(@:.d=.T) $@ && \
- rm -f $<
-
-# Avoid the .h.d files for any .sym files whose .h files don't exist yet.
-# They will be generated when they're needed, and trying too early won't work.
-+gen-as-const := $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
-+depfiles += $(addsuffix .d,$(filter $(wildcard $(+gen-as-const)),\
- $(+gen-as-const)))
-
-ifdef +depfiles
-ifneq ($(no_deps),t)
--include $(+depfiles)
-endif
-endif
-
-# Maximize efficiency by minimizing the number of rules.
-.SUFFIXES: # Clear the suffix list. We don't use suffix rules.
-# Don't define any builtin rules.
-MAKEFLAGS := $(MAKEFLAGS)r
-
-# Generic rule for making directories.
-%/:
-# mkdir isn't smart enough to strip a trailing /.
-# We always require a mkdir which supports the -p option to avoid error
-# messages in case of races.
- mkdir -p $(@:%/=%)
-
-# Make sure that object files are not removed
-# when they are intermediates between sources and library members.
-.PRECIOUS: $(addprefix $(objpfx)%,$(all-object-suffixes))
-
-# Make sure that the parent library archive is never removed.
-.PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
-
-# Use the verbose option of ar and tar when not running silently.
-ifeq "$(findstring s,$(MAKEFLAGS))" "" # if not -s
-verbose := v
-else # -s
-verbose :=
-endif # not -s
-
-ARFLAGS := r$(verbose)
-CREATE_ARFLAGS := cru$(verbose)
-
-# This makes all the object files in the parent library archive.
-
-.PHONY: lib lib-noranlib
-lib: lib-noranlib $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
-lib-noranlib: libobjs
-
-# For object-suffix $o, the list of objects with that suffix.
-# Makefiles can define `elide-routines.so = foo' to leave foo.so out.
-o-objects = $(patsubst %.o,%$o,$(filter-out $(patsubst %,$(objpfx)%.o,\
- $(elide-routines$o)),\
- $(objects))) \
- $(addprefix $(objpfx),$(o-objects$o))
-
-others: $(addprefix $(objpfx),$(install-lib))
-
-ifndef objects
-
-# Create the stamp$o files to keep the parent makefile happy.
-subdir_lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
-$(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o):
- $(make-target-directory)
- rm -f $@; > $@
-else
-
-# Define explicit rules to update each $(objpfx)stamp.SUFFIX
-# timestamp file; these rules (one explicit rule is generated for each
-# object suffix) write a list of objects to update in the stamp file.
-# The parent will then actually add them all to the archive in the
-# archive rule, below.
-define o-iterator-doit
-$(objpfx)stamp$o: $(o-objects); $$(do-stamp)
-endef
-define do-stamp
-$(make-target-directory)
-echo '$(patsubst $(objpfx)%,$(addsuffix /,$(subdir))%,$^)' > $@T
-mv -f $@T $@
-endef
-object-suffixes-left := $(object-suffixes-for-libc)
-include $(o-iterator)
-
-endif
-
-# Now define explicit rules to build the library archives; these depend
-# on the stamp files built above.
-define o-iterator-doit
-$(common-objpfx)$(patsubst %,$(libtype$o),c): \
- $(subdirs-stamp-o) $(common-objpfx)stamp$o; $$(do-makelib)
-endef
-define do-makelib
-cd $(common-objdir) && \
-$(AR) $(CREATE_ARFLAGS) $(@F) `cat $(patsubst $(common-objpfx)%,%,$^)`
-endef
-subdirs-stamps := $(foreach d,$(subdirs),$(common-objpfx)$d/stamp%)
-subdirs-stamp-o = $(subst %,$o,$(subdirs-stamps))
-ifndef subdir
-$(subdirs-stamps): subdir_lib;
-endif
-object-suffixes-left = $(object-suffixes-for-libc)
-include $(o-iterator)
-
-
-# This makes all the object files.
-.PHONY: objects objs libobjs extra-objs
-objects objs: libobjs extra-objs
-libobjs: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
-extra-objs: $(addprefix $(objpfx),$(extra-objs))
-
-# Canned sequence for building an extra library archive.
-define build-extra-lib
-$(patsubst %/,cd % &&,$(objpfx)) \
-$(AR) $(CREATE_ARFLAGS) $(@:$(objpfx)%=%) \
- $(patsubst $(objpfx)%,%,$^)
-endef
-
-# Installation.
-
-.PHONY: force-install
-force-install:
-
-# $(install-lib) are installed from the object directory into $(libdir);
-# files in $(install-lib) matching `lib%.a' are ranlib'd after installation
-# unless they also appear in $(non-lib.a). $(install-data) are installed as
-# they are into $(datadir). $(headers) are installed as they are in
-# $(includedir). $(install-bin), $(install-bin-script) and $(install-sbin)
-# are installed from the object directory into $(bindir), $(bindir) and
-# $(sbindir), respectively. $(install-others) and $(install-others-programs)
-# are absolute path names of files to install; rules to install them are
-# defined elsewhere.
-
-# The simple library name to install libc.a under.
-# This could be defined by a sysdep Makefile.
-ifndef libc-name
-libc-name := c
-endif
-
-define do-install
-$(make-target-directory)
-$(INSTALL_DATA) $< $@
-endef
-
-# Make the target directory if it doesn't exist, using the `mkinstalldirs'
-# script that does `mkdir -p' even if `mkdir' doesn't support that flag.
-define make-target-directory
-$(addprefix $(..)./scripts/mkinstalldirs ,\
- $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%)))
-endef
-
-# Any directory (parent or subdir) should install libc.a; this way
-# "make install" in a subdir is guaranteed to install everything it changes.
-installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
- $(inst_libdir)/$(patsubst %,$(libtype$o),\
- $(libprefix)$(libc-name)))
-
-.PHONY: check-install-supported
-check-install-supported:
-
-# Check to see if the prefix or exec_prefix GNU standard variable
-# has been overridden on the command line and, if so, fail with
-# an error message since doing so is not supported (set DESTDIR
-# instead).
-ifeq ($(origin prefix),command line)
-check-install-supported:
- $(error Overriding prefix is not supported. Set DESTDIR instead.)
-endif
-
-ifeq ($(origin exec_prefix),command line)
-check-install-supported:
- $(error Overriding exec_prefix is not supported. Set DESTDIR instead.)
-endif
-
-install: check-install-supported
-
-install: $(installed-libcs)
-$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
- $(make-target-directory)
- $(INSTALL_DATA) $(common-objpfx)lib$(*:$(libc-name)%=c%) $@
-
-define do-install-program
-$(make-target-directory)
-$(INSTALL_PROGRAM) $< $@.new
-mv -f $@.new $@
-endef
-
-define do-install-script
-$(make-target-directory)
-$(INSTALL_SCRIPT) $< $@.new
-mv -f $@.new $@
-endef
-
-install-lib.so := $(filter %.so,$(install-lib:%_pic.a=%.so))
-install-lib := $(filter-out %.so %_pic.a,$(install-lib))
-
-ifeq (yes,$(build-shared))
-# Find which .so's have a version number in their soname.
-versioned := $(strip $(foreach so,$(install-lib.so),\
- $(patsubst %,$(so),$($(so)-version))))
-
-install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
-install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
-
-# For libraries whose soname have version numbers, we install two files:
-# $(inst_libdir)/libfoo.so -- for linking, symlink or ld script
-# $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME
-install-lib-nosubdir: $(install-lib.so-unversioned:%=$(inst_slibdir)/%) \
- $(foreach L,$(install-lib.so-versioned),\
- $(inst_libdir)/$L \
- $(inst_slibdir)/$L$($L-version))
-
-# Install all the unversioned shared libraries.
-$(install-lib.so-unversioned:%=$(inst_slibdir)/%): $(inst_slibdir)/%.so: \
- $(objpfx)%.so $(+force)
- $(do-install-program)
-
-ifneq ($(findstring -s,$(LN_S)),)
-define make-link
-rm -f $@.new
-$(SHELL) $(..)scripts/rellns-sh $< $@.new
-mv -f $@.new $@
-endef
-define make-link-multidir
-$(patsubst %/,cd %,$(objpfx)); \
- $(addprefix $(abspath $(..)scripts/mkinstalldirs) ,$(dir $(multidir))); \
- $(LN_S) . $(multidir) 2> /dev/null; \
- test -L $(multidir)
-endef
-else
-# If we have no symbolic links don't bother with rellns-sh.
-define make-link
-rm -f $@.new
-$(LN_S) $< $@.new
-mv -f $@.new $@
-endef
-define make-link-multidir
-$(make-target-directory)
-ln -f $(objpfx)/$(@F) $@
-endef
-endif
-
-ifdef libc.so-version
-$(inst_slibdir)/libc.so$(libc.so-version): $(common-objpfx)libc.so $(+force)
- $(do-install-program)
-
-install: $(inst_slibdir)/libc.so$(libc.so-version)
-
-# This fragment of linker script gives the OUTPUT_FORMAT statement
-# for the configuration we are building. We put this statement into
-# the linker scripts we install for -lc et al so that they will not be
-# used by a link for a different format on a multi-architecture system.
-$(common-objpfx)format.lds: $(common-objpfx)config.make \
- $(common-objpfx)config.h $(..)Makerules
- $(LINK.o) -shared -nostdlib -nostartfiles \
- -x assembler /dev/null -o $@.so
- $(OBJDUMP) -f $@.so | sed -n 's/.*file format \(.*\)/OUTPUT_FORMAT(\1)/;T;p' > $@
- rm -f $@.so
-common-generated += format.lds
-
-ifndef subdir
-# What we install as libc.so for programs to link against is in fact a
-# link script. It contains references for the various libraries we need.
-# The libc.so object is not complete since some functions are only defined
-# in libc_nonshared.a.
-# We need to use absolute paths since otherwise local copies (if they exist)
-# of the files are taken by the linker.
-install: $(inst_libdir)/libc.so
-$(inst_libdir)/libc.so: $(common-objpfx)format.lds \
- $(common-objpfx)libc.so$(libc.so-version) \
- $(inst_libdir)/$(patsubst %,$(libtype.oS),\
- $(libprefix)$(libc-name)) \
- $(+force)
- (echo '/* GNU ld script';\
- echo ' Use the shared library, but some functions are only in';\
- echo ' the static library, so try that secondarily. */';\
- cat $<; \
- echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
- ' AS_NEEDED (' $(rtlddir)/$(rtld-installed-name) ') )' \
- ) > $@.new
- mv -f $@.new $@
-
-endif
-
-else
-install: $(inst_slibdir)/libc.so
-$(inst_slibdir)/libc.so: $(common-objpfx)libc.so $(+force)
- $(do-install-program)
-endif
-
-ifneq (,$(versioned))
-# Produce three sets of rules as above for all the smaller versioned libraries.
-
-define o-iterator-doit
-$(inst_libdir)/$o: $(inst_slibdir)/$o$($o-version) $(+force); $$(make-link)
-endef
-object-suffixes-left := $(filter-out $(install-lib-ldscripts),$(versioned))
-ifneq (,$(object-suffixes-left))
-include $(o-iterator)
-endif
-
-# Make symlinks in the build directory, because the versioned names might
-# be referenced by a DT_NEEDED in another library.
-define o-iterator-doit
-$(objpfx)$o$($o-version): $(objpfx)$o; $$(make-link)
-endef
-object-suffixes-left := $(versioned)
-include $(o-iterator)
-
-generated += $(foreach o,$(versioned),$o$($o-version))
-
-define o-iterator-doit
-$(inst_slibdir)/$o$($o-version): $(objpfx)$o $(+force);
- $$(do-install-program)
-endef
-object-suffixes-left := $(versioned)
-include $(o-iterator)
-endif # ifneq (,$(versioned))
-
-define do-install-so
-$(do-install-program)
-$(patsubst %,$(LN_S) -f $(@F) \
- $(@D)/$(patsubst %$*.so,%,$(<F))$(libprefix)$*.so,\
- $(filter-out %.so,$@))
-endef
-
-so-versions := $(sort $(foreach so,$(install-lib.so),.so$($(so)-version)))
-$(foreach v,$(so-versions),\
- $(inst_slibdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so \
- $(+force)
- $(do-install-so)
-$(foreach v,$(so-versions),\
- $(inst_slibdir)/$(libprefix)%$v): $(common-objpfx)%.so $(+force)
- $(do-install-so)
-endif
-
-ifdef install-bin
-$(addprefix $(inst_bindir)/,$(install-bin)): \
- $(inst_bindir)/%: $(objpfx)% $(+force)
- $(do-install-program)
-endif
-ifdef install-bin-script
-$(addprefix $(inst_bindir)/,$(install-bin-script)): \
- $(inst_bindir)/%: $(objpfx)% $(+force)
- $(do-install-script)
-endif
-ifdef install-rootsbin
-$(addprefix $(inst_rootsbindir)/,$(install-rootsbin)): \
- $(inst_rootsbindir)/%: $(objpfx)% $(+force)
- $(do-install-program)
-endif
-ifdef install-sbin
-$(addprefix $(inst_sbindir)/,$(install-sbin)): \
- $(inst_sbindir)/%: $(objpfx)% $(+force)
- $(do-install-program)
-endif
-ifdef install-lib
-install-lib.a := $(filter lib%.a,$(install-lib))
-install-lib.a := $(filter-out $(install-lib-ldscripts),$(install-lib.a))
-install-lib-non.a := $(filter-out lib%.a,$(install-lib))
-ifdef install-lib-non.a
-$(addprefix $(inst_libdir)/$(libprefix),$(install-lib-non.a)): \
- $(inst_libdir)/$(libprefix)%: $(objpfx)% $(+force)
- $(do-install)
-endif
-ifdef install-lib.a
-$(install-lib.a:lib%.a=$(inst_libdir)/lib$(libprefix)%.a): \
- $(inst_libdir)/lib$(libprefix)%.a: $(objpfx)lib%.a $(+force)
- $(do-install)
-endif
-endif
-ifdef install-data
-$(addprefix $(inst_datadir)/,$(install-data)): $(inst_datadir)/%: % $(+force)
- $(do-install)
-endif
-headers := $(strip $(headers))
-ifdef headers
-# This implicit rule installs headers from the source directory.
-# It may be ignored in preference to rules from sysd-rules to find
-# headers in the sysdeps tree.
-$(inst_includedir)/%.h: $(objpfx)%.h $(+force)
- $(do-install)
-$(inst_includedir)/%.h: $(common-objpfx)%.h $(+force)
- $(do-install)
-$(inst_includedir)/%.h: %.h $(+force)
- $(do-install)
-$(inst_includedir)/%.h: $(..)include/%.h $(+force)
- $(do-install)
-headers-nonh := $(filter-out %.h,$(headers))
-ifdef headers-nonh
-$(addprefix $(inst_includedir)/,$(headers-nonh)): $(inst_includedir)/%: \
- % $(+force)
- $(do-install)
-endif # headers-nonh
-endif # headers
-
-.PHONY: install-bin-nosubdir install-bin-script-nosubdir \
- install-rootsbin-nosubdir install-sbin-nosubdir install-lib-nosubdir \
- install-data-nosubdir install-headers-nosubdir
-install-bin-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin))
-install-bin-script-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin-script))
-install-rootsbin-nosubdir: \
- $(addprefix $(inst_rootsbindir)/,$(install-rootsbin))
-install-sbin-nosubdir: $(addprefix $(inst_sbindir)/,$(install-sbin))
-install-lib-nosubdir: $(addprefix $(inst_libdir)/,\
- $(patsubst lib%.a,lib$(libprefix)%.a,$(install-lib.a)) \
- $(addprefix $(libprefix),$(install-lib-non.a)))
-install-data-nosubdir: $(addprefix $(inst_datadir)/,$(install-data))
-install-headers-nosubdir: $(addprefix $(inst_includedir)/,$(headers))
-install-others-nosubdir: $(install-others)
-install-others-programs-nosubdir: $(install-others-programs)
-
-# We need all the `-nosubdir' targets so that `install' in the parent
-# doesn't depend on several things which each iterate over the subdirs.
-# This rule makes `install-FOO' always use `install-FOO-nosubdir' as a
-# subroutine. Then in the parent `install-FOO' also causes subdir makes.
-install-%:: install-%-nosubdir ;
-
-.PHONY: install install-no-libc.a-nosubdir
-install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir \
- install-lib-nosubdir install-others-nosubdir
-ifeq ($(build-programs),yes)
-install-no-libc.a-nosubdir: install-bin-nosubdir install-bin-script-nosubdir \
- install-rootsbin-nosubdir install-sbin-nosubdir \
- install-others-programs-nosubdir
-endif
-install: install-no-libc.a-nosubdir
-
-# Command to compile $< using the native libraries.
-define native-compile
-$(make-target-directory)
-$(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) \
- $< $(OUTPUT_OPTION) $(BUILD_LDFLAGS)
-endef
-
-# We always want to use configuration definitions.
-ALL_BUILD_CFLAGS = $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -D_GNU_SOURCE \
- -DIS_IN_build -include $(common-objpfx)config.h
-
-# Support the GNU standard name for this target.
-.PHONY: check
-check: tests
-# Special target to run tests which cannot be run unconditionally.
-# Maintainers should use this target.
-.PHONY: xcheck
-xcheck: xtests
-
-# Handle tests-time64 and xtests-time64 that should built with LFS
-# and 64-bit time support.
-include $(o-iterator)
-define o-iterator-doit
-$(foreach f,$(tests-time64) $(xtests-time64),\
- $(objpfx)$(f)$(o)): CFLAGS += -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-ifeq ($(have-time64-compat),yes)
-tests += $(foreach t,$(tests-time64),$(t))
-xtests += $(foreach t,$(xtests-time64),$(t))
-endif
-
-# The only difference between MODULE_NAME=testsuite and MODULE_NAME=nonlib is
-# that almost all internal declarations from config.h, libc-symbols.h, and
-# include/*.h are not available to 'testsuite' code, but are to 'nonlib' code.
-all-testsuite := $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) \
- $(tests-container))
-ifneq (,$(all-testsuite))
-cpp-srcs-left = $(all-testsuite)
-lib := testsuite
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-endif
-
-all-nonlib := $(strip $(others) $(others-extras))
-ifneq (,$(all-nonlib))
-cpp-srcs-left = $(all-nonlib)
-lib := nonlib
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-endif
-
-# All internal tests use testsuite-internal module since for 64 bit time
-# support is set as default for MODULE_NAME=nonlib (which include some
-# installed programs).
-all-testsuite-internal := $(strip $(tests-internal) $(test-internal-extras))
-ifneq (,$(all-testsuite-internal))
-cpp-srcs-left = $(all-testsuite-internal)
-lib := testsuite-internal
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-endif
-
-ifeq ($(build-shared),yes)
-# Generate normalized lists of symbols, versions, and data sizes.
-# This is handy for checking against existing library binaries.
-
-%.symlist: $(..)scripts/abilist.awk %.dynsym
- LC_ALL=C $(AWK) -f $^ > $@T
- mv -f $@T $@
-
-%.dynsym: %.so
- LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T
- mv -f $@T $@
-
-vpath %.abilist $(+sysdep_dirs)
-
-# The .PRECIOUS rule prevents the files built by an implicit rule whose
-# target pattern is %.symlist from being considered "intermediate files"
-# and automatically removed. We only want these files to be removed by
-# 'make clean', which is handled by the 'generated' variable.
-.PRECIOUS: %.symlist
-generated += $(extra-libs:=.symlist)
-
-$(objpfx)check-abi-%.out: $(common-objpfx)config.make %.abilist \
- $(objpfx)%.symlist
- $(check-abi); \
- $(evaluate-test)
-$(objpfx)check-abi-%.out: $(common-objpfx)config.make %.abilist \
- $(common-objpfx)%.symlist
- $(check-abi); \
- $(evaluate-test)
-define check-abi
- diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^) > $@
-endef
-
-update-abi-%: $(objpfx)%.symlist %.abilist
- $(update-abi)
-update-abi-%: $(common-objpfx)%.symlist %.abilist
- $(update-abi)
-define update-abi
-@if cmp -s $^ 2> /dev/null; \
- then \
- echo '+++ $(filter %.abilist,$^) is unchanged'; \
- else cp -f $^; \
- echo '*** Now check $(filter %.abilist,$^) changes for correctness ***'; \
- fi
-endef
-
-# Patch all .abilist files for one DSO. The find command locates abilist
-# files for all architectures. The abilist files in /generic/ are
-# filtered out because these are expected to remain empty.
-define update-all-abi
-$(SHELL) $(..)scripts/update-abilist.sh $^ \
- $$(find $(..)sysdeps -name '$*.abilist' \! -path '*/generic/*')
-endef
-update-all-abi-%: %.abilist $(objpfx)%.symlist
- $(update-all-abi)
-update-all-abi-%: %.abilist $(common-objpfx)%.symlist
- $(update-all-abi)
-
-.PHONY: update-abi update-all-abi check-abi
-update-abi: $(patsubst %.so,update-abi-%,$(install-lib.so-versioned))
-update-all-abi: $(patsubst %.so,update-all-abi-%,$(install-lib.so-versioned))
-check-abi-list = $(patsubst %.so,$(objpfx)check-abi-%.out, \
- $(install-lib.so-versioned))
-check-abi: $(check-abi-list)
-ifdef subdir
-subdir_check-abi: check-abi
-subdir_update-abi: update-abi
-subdir_update-all-abi: update-all-abi
-else
-check-abi: subdir_check-abi
- if grep -q '^FAIL:' $(objpfx)*/check-abi*.test-result; then \
- cat $(objpfx)*/check-abi*.out && exit 1; fi
-update-abi: subdir_update-abi
-update-all-abi: subdir_update-all-abi
-endif
-
-ifeq ($(subdir),elf)
-check-abi: $(objpfx)check-abi-libc.out
-tests-special += $(objpfx)check-abi-libc.out
-update-abi: update-abi-libc
-update-all-abi: update-all-abi-libc
-common-generated += libc.symlist
-endif
-
-ifeq ($(build-shared),yes)
-ifdef subdir
-tests-special += $(check-abi-list)
-endif
-endif
-
-endif
-
-# These will have been set by sysdeps/posix/Makefile.
-L_tmpnam ?= 1
-TMP_MAX ?= 0
-L_ctermid ?= 1
-L_cuserid ?= 1
-
-stdio_lim = $(common-objpfx)bits/stdio_lim.h
-
-$(stdio_lim:lim.h=%.h) $(stdio_lim:lim.h=%.d): $(stdio_lim:lim.h=%.st); @:
-$(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \
- $(common-objpfx)config.make
- $(make-target-directory)
- { echo '#include "$(..)posix/bits/posix1_lim.h"'; \
- } | \
- $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \
- $(CPPUNDEFS) $(+includes) -xc - -o $(@:st=hT)
- sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
- $(@:st=dT) > $(@:st=dt)
- mv -f $(@:st=dt) $(@:st=d)
- fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \
- filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \
- fopen_max=$${fopen_max:-16}; \
- filename_max=$${filename_max:-1024}; \
- sed -e "s/@FOPEN_MAX@/$$fopen_max/" \
- -e "s/@FILENAME_MAX@/$$filename_max/" \
- -e "s/@L_tmpnam@/$(L_tmpnam)/" \
- -e "s/@TMP_MAX@/$(TMP_MAX)/" \
- -e "s/@L_ctermid@/$(L_ctermid)/" \
- -e "s/@L_cuserid@/$(L_cuserid)/" \
- $< > $(@:st=h.new)
- $(move-if-change) $(@:st=h.new) $(@:st=h)
-# Remove these last so that they can be examined if something went wrong.
- rm -f $(@:st=hT) $(@:st=dT) $(@:st=dt)
- touch $@
-# Get dependencies.
-ifndef no_deps
--include $(stdio_lim:h=d)
-endif
-common-generated += bits/stdio_lim.h bits/stdio_lim.d bits/stdio_lim.st
-
-FORCE:
-
-.PHONY: echo-headers
-echo-headers:
- @echo $(headers)
-
-%.bz2: %; bzip2 -9vk $<
-%.gz: %; gzip -9vnc $< > $@.new && mv -f $@.new $@
-%.xz: %; xz -9evk $<
-
-# Common cleaning targets.
-
-.PHONY: common-mostlyclean common-clean mostlyclean clean do-tests-clean
-clean: common-clean
-mostlyclean: common-mostlyclean
-
-do-tests-clean:
- -rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) \
- $(tests-internal) \
- $(xtests) \
- $(test-srcs)) \
- $(addsuffix .test-result,$(tests) \
- $(tests-internal) \
- $(xtests) \
- $(test-srcs)))
-
-# Remove the object files.
-common-mostlyclean:
- -rm -f $(addprefix $(objpfx),$(tests) $(tests-internal) $(xtests) \
- $(test-srcs) \
- $(others) $(sysdep-others) stubs \
- $(addsuffix .o,$(tests) \
- $(tests-internal) \
- $(xtests) \
- $(test-srcs) \
- $(others) \
- $(sysdep-others)) \
- $(addsuffix .out,$(tests) \
- $(tests-internal) \
- $(xtests) \
- $(test-srcs)) \
- $(addsuffix .test-result,$(tests) \
- $(tests-internal) \
- $(xtests) \
- $(test-srcs)))
- -rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \
- $(install-lib) $(install-lib.so) \
- $(install-lib.so:%.so=%_pic.a))
- -rm -f core
- -rm -f $(objpfx)rtld-*.os
- $(rmobjs)
-define rmobjs
-$(foreach o,$(object-suffixes-for-libc),
--rm -f $(objpfx)stamp$o $(o-objects))
-endef
-
-# Also remove the dependencies and generated source files.
-common-clean: common-mostlyclean
- -rm -f $(addprefix $(objpfx),$(generated))
- -rm -f $(objpfx)*.d $(objpfx)*.dt
- -rm -fr $(addprefix $(objpfx),$(generated-dirs))
- -rm -f $(addprefix $(common-objpfx),$(common-generated))
- -rm -f $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
-
-# Produce a file `stubs' which contains `#define __stub_FUNCTION'
-# for each function which is a stub.
-
-ifdef objpfx
-.PHONY: stubs # The parent Makefile calls this target.
-stubs: $(objpfx)stubs
-endif
-objs-for-stubs := $(foreach o,$(object-suffixes-for-libc),$(o-objects)) \
- $(addprefix $(objpfx),$(extra-objs))
-$(objpfx)stubs: $(objs-for-stubs)
-ifneq (,$(strip $(objs-for-stubs)))
- (cd $(objpfx).; $(OBJDUMP) -h $(patsubst $(objpfx)%,%,$^)) | \
- $(AWK) '/\.gnu\.glibc-stub\./ { \
- sub(/\.gnu\.glibc-stub\./, "", $$2); \
- stubs[$$2] = 1; } \
- END { for (s in stubs) print "#define __stub_" s }' > $@T
- mv -f $@T $@
-else
- > $@
-endif
-
-ifneq (,$(strip $(gpl2lgpl)))
-ifneq (,$(wildcard $(..)gpl2lgpl.sed))
-# Snarf from the master source and frob the copying notice.
-$(gpl2lgpl): %: $(..)gpl2lgpl.sed /home/gd/gnu/lib/%
- sed -f $^ > $@-tmp
-# So I don't edit them by mistake.
- chmod a-w $@-tmp
- mv -f $@-tmp $@
-endif
-endif
-
-# Local Variables:
-# mode: makefile
-# End:
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-reenable-DT-HASH-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-glibc-2.36/localedata/SUPPORTED
-glibc-2.36/localedata/locales/ru_RU
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-i18n.patch
-
-mv glibc-$VERSION-i18n.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales/ru_RU
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales/ru_RU (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales/ru_RU (nonexistent)
@@ -1,208 +0,0 @@
-comment_char %
-escape_char /
-
-% This file is part of the GNU C Library and contains locale data.
-% The Free Software Foundation does not claim any copyright interest
-% in the locale data contained in this file. The foregoing does not
-% affect the license of the GNU C Library as a whole. It does not
-% exempt you from the conditions of the license if your use would
-% otherwise be governed by that license.
-
-% Russian Language Locale for Russia
-% Source: RAP
-% Address: Sankt Jo//rgens Alle 8
-% DK-1615 Ko//benhavn V, Danmark
-% Contact: Keld Simonsen
-% Email: Keld.Simonsen@dkuug.dk
-% Tel: +45 - 31226543
-% Fax: +45 - 33256543
-% Language: ru
-% Territory: RU
-% Revision: 4.3
-% Date: 1996-10-15
-% Application: general
-% Users: general
-
-LC_IDENTIFICATION
-title "Russian locale for Russia"
-source "RAP"
-address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark"
-contact ""
-email "bug-glibc-locales@gnu.org"
-tel ""
-fax ""
-language "Russian"
-territory "Russia"
-revision "1.0"
-date "2000-06-29"
-
-category "i18n:2012";LC_IDENTIFICATION
-category "i18n:2012";LC_CTYPE
-category "i18n:2012";LC_COLLATE
-category "i18n:2012";LC_TIME
-category "i18n:2012";LC_NUMERIC
-category "i18n:2012";LC_MONETARY
-category "i18n:2012";LC_MESSAGES
-category "i18n:2012";LC_PAPER
-category "i18n:2012";LC_NAME
-category "i18n:2012";LC_ADDRESS
-category "i18n:2012";LC_TELEPHONE
-category "i18n:2012";LC_MEASUREMENT
-END LC_IDENTIFICATION
-
-LC_COLLATE
-% CLDR collation rules for Russian:
-% (see: https://unicode.org/cldr/trac/browser/trunk/common/collation/ru.xml)
-%
-% <collation type="standard">
-% <cr><![CDATA[
-% [reorder Cyrl]
-% # The root collation already sorts й/Й as a base letter.
-% ]]></cr>
-% </collation>
-%
-copy "iso14651_t1"
-END LC_COLLATE
-
-LC_CTYPE
-copy "i18n"
-
-translit_start
-include "translit_combining";""
-translit_end
-END LC_CTYPE
-
-LC_MESSAGES
-yesexpr "^[+1yY<U0414><U0434>]"
-noexpr "^[-0nN<U041D><U043D>]"
-yesstr "<U0434><U0430>"
-nostr "<U043D><U0435><U0442>"
-END LC_MESSAGES
-
-LC_MONETARY
-int_curr_symbol "RUB "
-currency_symbol "<U20BD>"
-mon_decimal_point "."
-mon_thousands_sep "<U202F>"
-mon_grouping 3;3
-positive_sign ""
-negative_sign "-"
-int_frac_digits 2
-frac_digits 2
-p_cs_precedes 0
-p_sep_by_space 1
-n_cs_precedes 0
-n_sep_by_space 1
-p_sign_posn 1
-n_sign_posn 1
-END LC_MONETARY
-
-LC_NUMERIC
-decimal_point ","
-thousands_sep "<U202F>"
-grouping 3;3
-END LC_NUMERIC
-
-LC_TIME
-day "<U0412><U043E><U0441><U043A><U0440><U0435><U0441><U0435><U043D><U044C><U0435>";/
- "<U041F><U043E><U043D><U0435><U0434><U0435><U043B><U044C><U043D><U0438><U043A>";/
- "<U0412><U0442><U043E><U0440><U043D><U0438><U043A>";/
- "<U0421><U0440><U0435><U0434><U0430>";/
- "<U0427><U0435><U0442><U0432><U0435><U0440><U0433>";/
- "<U041F><U044F><U0442><U043D><U0438><U0446><U0430>";/
- "<U0421><U0443><U0431><U0431><U043E><U0442><U0430>"
-abday "<U0412><U0441>";/
- "<U041F><U043D>";/
- "<U0412><U0442>";/
- "<U0421><U0440>";/
- "<U0427><U0442>";/
- "<U041F><U0442>";/
- "<U0421><U0431>"
-alt_mon "<U042F><U043D><U0432><U0430><U0440><U044C>";/
- "<U0424><U0435><U0432><U0440><U0430><U043B><U044C>";/
- "<U041C><U0430><U0440><U0442>";/
- "<U0410><U043F><U0440><U0435><U043B><U044C>";/
- "<U041C><U0430><U0439>";/
- "<U0418><U044E><U043D><U044C>";/
- "<U0418><U044E><U043B><U044C>";/
- "<U0410><U0432><U0433><U0443><U0441><U0442>";/
- "<U0421><U0435><U043D><U0442><U044F><U0431><U0440><U044C>";/
- "<U041E><U043A><U0442><U044F><U0431><U0440><U044C>";/
- "<U041D><U043E><U044F><U0431><U0440><U044C>";/
- "<U0414><U0435><U043A><U0430><U0431><U0440><U044C>"
-mon "<U044F><U043D><U0432><U0430><U0440><U044F>";/
- "<U0444><U0435><U0432><U0440><U0430><U043B><U044F>";/
- "<U043C><U0430><U0440><U0442><U0430>";/
- "<U0430><U043F><U0440><U0435><U043B><U044F>";/
- "<U043C><U0430><U044F>";/
- "<U0438><U044E><U043D><U044F>";/
- "<U0438><U044E><U043B><U044F>";/
- "<U0430><U0432><U0433><U0443><U0441><U0442><U0430>";/
- "<U0441><U0435><U043D><U0442><U044F><U0431><U0440><U044F>";/
- "<U043E><U043A><U0442><U044F><U0431><U0440><U044F>";/
- "<U043D><U043E><U044F><U0431><U0440><U044F>";/
- "<U0434><U0435><U043A><U0430><U0431><U0440><U044F>"
-ab_alt_mon "<U044F><U043D><U0432>";/
- "<U0444><U0435><U0432>";/
- "<U043C><U0430><U0440>";/
- "<U0430><U043F><U0440>";/
- "<U043C><U0430><U0439>";/
- "<U0438><U044E><U043D>";/
- "<U0438><U044E><U043B>";/
- "<U0430><U0432><U0433>";/
- "<U0441><U0435><U043D>";/
- "<U043E><U043A><U0442>";/
- "<U043D><U043E><U044F>";/
- "<U0434><U0435><U043A>"
-abmon "<U044F><U043D><U0432>";/
- "<U0444><U0435><U0432>";/
- "<U043C><U0430><U0440>";/
- "<U0430><U043F><U0440>";/
- "<U043C><U0430><U044F>";/
- "<U0438><U044E><U043D>";/
- "<U0438><U044E><U043B>";/
- "<U0430><U0432><U0433>";/
- "<U0441><U0435><U043D>";/
- "<U043E><U043A><U0442>";/
- "<U043D><U043E><U044F>";/
- "<U0434><U0435><U043A>"
-d_t_fmt "%a %d %b %Y %T"
-date_fmt "%a %d %b %Y %T %Z"
-d_fmt "%d.%m.%Y"
-t_fmt "%T"
-am_pm "";""
-t_fmt_ampm ""
-week 7;19971130;1
-first_weekday 2
-END LC_TIME
-
-LC_PAPER
-copy "i18n"
-END LC_PAPER
-
-LC_TELEPHONE
-tel_int_fmt "+%c %a %l"
-int_prefix "7"
-int_select "0~10"
-END LC_TELEPHONE
-
-LC_MEASUREMENT
-copy "i18n"
-END LC_MEASUREMENT
-
-LC_NAME
-name_fmt "%d%t%g%t%m%t%f"
-END LC_NAME
-
-LC_ADDRESS
-postal_fmt "%f%N%a%N%d%N%b%N%s %h %e %r%N%z %T%N%c%N"
-country_name "<U0420><U043E><U0441><U0441><U0438><U044F>"
-country_ab2 "RU"
-country_ab3 "RUS"
-country_num 643
-country_car "RUS"
-lang_name "<U0440><U0443><U0441><U0441><U043A><U0438><U0439>"
-lang_ab "ru"
-lang_term "rus"
-lang_lib "rus"
-END LC_ADDRESS
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales/en_RU
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales/en_RU (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales/en_RU (nonexistent)
@@ -1,167 +0,0 @@
-comment_char %
-escape_char /
-
-% English Language Locale for Russia
-% Source: RADIX.PRO
-% Address: Russia, 193231, St. Petersburg, Solidarnosty av., 25-1-105
-% Contact: Andrey V.Kosteltsev
-% Email: kosteltsev@gmail.com
-% Tel: +7 (911) 970-91-61
-% Fax: +7 (911) 970-91-61
-% Language: en
-% Territory: RU
-% Revision: 1.0
-% Date: 2012-09-24
-% Application: general
-% Users: general
-% Charset: ISO-8859-5
-% Distribution and use is free, also
-% for commercial purposes.
-
-LC_IDENTIFICATION
-title "English locale for Russia"
-source "RADIX.PRO"
-address "Russia, 193231, St. Petersburg, Solidarnosty av., 25-1-105"
-contact ""
-email "bug-glibc-locales@gnu.org"
-tel ""
-fax ""
-language "English"
-territory "Russia"
-revision "1.0"
-date "2016-07-29"
-%
-category "i18n:2012";LC_IDENTIFICATION
-category "i18n:2012";LC_CTYPE
-category "i18n:2012";LC_COLLATE
-category "i18n:2012";LC_TIME
-category "i18n:2012";LC_NUMERIC
-category "i18n:2012";LC_MONETARY
-category "i18n:2012";LC_MESSAGES
-category "i18n:2012";LC_PAPER
-category "i18n:2012";LC_NAME
-category "i18n:2012";LC_ADDRESS
-category "i18n:2012";LC_TELEPHONE
-
-END LC_IDENTIFICATION
-
-LC_COLLATE
-% Copy the template from ISO/IEC 14651
-copy "iso14651_t1"
-END LC_COLLATE
-
-LC_CTYPE
-copy "i18n"
-
-translit_start
-include "translit_combining";""
-translit_end
-END LC_CTYPE
-
-LC_MESSAGES
-yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
-noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
-yesstr "<U0059><U0065><U0073>"
-nostr "<U004E><U006F>"
-END LC_MESSAGES
-
-LC_MONETARY
-int_curr_symbol "<U0052><U0055><U0042><U0020>"
-currency_symbol "<U0072><U0075><U0062>"
-mon_decimal_point "<U002E>"
-mon_thousands_sep "<U00A0>"
-mon_grouping 3;3
-positive_sign ""
-negative_sign "<U002D>"
-int_frac_digits 2
-frac_digits 2
-p_cs_precedes 0
-p_sep_by_space 1
-n_cs_precedes 0
-n_sep_by_space 1
-p_sign_posn 1
-n_sign_posn 1
-END LC_MONETARY
-
-LC_NUMERIC
-decimal_point "<U002E>"
-thousands_sep "<U00A0>"
-grouping 3;3
-END LC_NUMERIC
-
-LC_TIME
-abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
- "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
- "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
- "<U0053><U0061><U0074>"
-day "<U0053><U0075><U006E><U0064><U0061><U0079>";/
- "<U004D><U006F><U006E><U0064><U0061><U0079>";/
- "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
- "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
- "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
- "<U0046><U0072><U0069><U0064><U0061><U0079>";/
- "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
-abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
- "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
- "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
- "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
- "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
- "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
-mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
- "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
- "<U004D><U0061><U0072><U0063><U0068>";/
- "<U0041><U0070><U0072><U0069><U006C>";/
- "<U004D><U0061><U0079>";/
- "<U004A><U0075><U006E><U0065>";/
- "<U004A><U0075><U006C><U0079>";/
- "<U0041><U0075><U0067><U0075><U0073><U0074>";/
- "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
- "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
- "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
-d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062>/
-<U0020><U0025><U0059><U0020><U0025><U0054>"
-d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
-t_fmt "<U0025><U0054>"
-am_pm "";""
-t_fmt_ampm ""
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971130;4
-first_weekday 2
-first_workday 2
-END LC_TIME
-
-LC_PAPER
-height 297
-width 210
-END LC_PAPER
-
-LC_TELEPHONE
-tel_int_fmt "<U002B><U0025><U0063><U0020><U0028><U0025><U0061><U0029>/
-<U0020><U0025><U006C>"
-int_prefix "<U0037>"
-int_select "<U0030><U007E><U0031><U0030>"
-END LC_TELEPHONE
-
-LC_MEASUREMENT
-% 1 for Metric system, 2 for US
-measurement 1
-END LC_MEASUREMENT
-
-LC_NAME
-name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-<U0025><U006D><U0025><U0074><U0025><U0066>"
-END LC_NAME
-
-LC_ADDRESS
-postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-<U004E><U0025><U007A><U0020><U0025><U0054><U0025>/
-<U004E><U0025><U0063><U0025><U004E>"
-country_ab2 "<U0052><U0055>"
-country_ab3 "<U0052><U0055><U0053>"
-country_num 643
-END LC_ADDRESS
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/locales
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/SUPPORTED
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/SUPPORTED (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata/SUPPORTED (nonexistent)
@@ -1,501 +0,0 @@
-# This file names the currently supported and somewhat tested locales.
-# If you have any additions please file a glibc bug report.
-SUPPORTED-LOCALES=\
-aa_DJ.UTF-8/UTF-8 \
-aa_DJ/ISO-8859-1 \
-aa_ER/UTF-8 \
-aa_ER@saaho/UTF-8 \
-aa_ET/UTF-8 \
-af_ZA.UTF-8/UTF-8 \
-af_ZA/ISO-8859-1 \
-agr_PE/UTF-8 \
-ak_GH/UTF-8 \
-am_ET/UTF-8 \
-an_ES.UTF-8/UTF-8 \
-an_ES/ISO-8859-15 \
-anp_IN/UTF-8 \
-ar_AE.UTF-8/UTF-8 \
-ar_AE/ISO-8859-6 \
-ar_BH.UTF-8/UTF-8 \
-ar_BH/ISO-8859-6 \
-ar_DZ.UTF-8/UTF-8 \
-ar_DZ/ISO-8859-6 \
-ar_EG.UTF-8/UTF-8 \
-ar_EG/ISO-8859-6 \
-ar_IN/UTF-8 \
-ar_IQ.UTF-8/UTF-8 \
-ar_IQ/ISO-8859-6 \
-ar_JO.UTF-8/UTF-8 \
-ar_JO/ISO-8859-6 \
-ar_KW.UTF-8/UTF-8 \
-ar_KW/ISO-8859-6 \
-ar_LB.UTF-8/UTF-8 \
-ar_LB/ISO-8859-6 \
-ar_LY.UTF-8/UTF-8 \
-ar_LY/ISO-8859-6 \
-ar_MA.UTF-8/UTF-8 \
-ar_MA/ISO-8859-6 \
-ar_OM.UTF-8/UTF-8 \
-ar_OM/ISO-8859-6 \
-ar_QA.UTF-8/UTF-8 \
-ar_QA/ISO-8859-6 \
-ar_SA.UTF-8/UTF-8 \
-ar_SA/ISO-8859-6 \
-ar_SD.UTF-8/UTF-8 \
-ar_SD/ISO-8859-6 \
-ar_SS/UTF-8 \
-ar_SY.UTF-8/UTF-8 \
-ar_SY/ISO-8859-6 \
-ar_TN.UTF-8/UTF-8 \
-ar_TN/ISO-8859-6 \
-ar_YE.UTF-8/UTF-8 \
-ar_YE/ISO-8859-6 \
-ayc_PE/UTF-8 \
-az_AZ/UTF-8 \
-az_IR/UTF-8 \
-as_IN/UTF-8 \
-ast_ES.UTF-8/UTF-8 \
-ast_ES/ISO-8859-15 \
-be_BY.UTF-8/UTF-8 \
-be_BY/CP1251 \
-be_BY@latin/UTF-8 \
-bem_ZM/UTF-8 \
-ber_DZ/UTF-8 \
-ber_MA/UTF-8 \
-bg_BG.UTF-8/UTF-8 \
-bg_BG/CP1251 \
-bhb_IN.UTF-8/UTF-8 \
-bho_IN/UTF-8 \
-bho_NP/UTF-8 \
-bi_VU/UTF-8 \
-bn_BD/UTF-8 \
-bn_IN/UTF-8 \
-bo_CN/UTF-8 \
-bo_IN/UTF-8 \
-br_FR.UTF-8/UTF-8 \
-br_FR/ISO-8859-1 \
-br_FR@euro/ISO-8859-15 \
-brx_IN/UTF-8 \
-bs_BA.UTF-8/UTF-8 \
-bs_BA/ISO-8859-2 \
-byn_ER/UTF-8 \
-C.UTF-8/UTF-8 \
-ca_AD.UTF-8/UTF-8 \
-ca_AD/ISO-8859-15 \
-ca_ES.UTF-8/UTF-8 \
-ca_ES/ISO-8859-1 \
-ca_ES@euro/ISO-8859-15 \
-ca_ES@valencia/UTF-8 \
-ca_FR.UTF-8/UTF-8 \
-ca_FR/ISO-8859-15 \
-ca_IT.UTF-8/UTF-8 \
-ca_IT/ISO-8859-15 \
-ce_RU/UTF-8 \
-chr_US/UTF-8 \
-ckb_IQ/UTF-8 \
-cmn_TW/UTF-8 \
-crh_UA/UTF-8 \
-cs_CZ.UTF-8/UTF-8 \
-cs_CZ/ISO-8859-2 \
-csb_PL/UTF-8 \
-cv_RU/UTF-8 \
-cy_GB.UTF-8/UTF-8 \
-cy_GB/ISO-8859-14 \
-da_DK.UTF-8/UTF-8 \
-da_DK/ISO-8859-1 \
-de_AT.UTF-8/UTF-8 \
-de_AT/ISO-8859-1 \
-de_AT@euro/ISO-8859-15 \
-de_BE.UTF-8/UTF-8 \
-de_BE/ISO-8859-1 \
-de_BE@euro/ISO-8859-15 \
-de_CH.UTF-8/UTF-8 \
-de_CH/ISO-8859-1 \
-de_DE.UTF-8/UTF-8 \
-de_DE/ISO-8859-1 \
-de_DE@euro/ISO-8859-15 \
-de_IT.UTF-8/UTF-8 \
-de_IT/ISO-8859-1 \
-de_LI.UTF-8/UTF-8 \
-de_LU.UTF-8/UTF-8 \
-de_LU/ISO-8859-1 \
-de_LU@euro/ISO-8859-15 \
-doi_IN/UTF-8 \
-dsb_DE/UTF-8 \
-dv_MV/UTF-8 \
-dz_BT/UTF-8 \
-el_GR.UTF-8/UTF-8 \
-el_GR/ISO-8859-7 \
-el_GR@euro/ISO-8859-7 \
-el_CY.UTF-8/UTF-8 \
-el_CY/ISO-8859-7 \
-en_AG/UTF-8 \
-en_AU.UTF-8/UTF-8 \
-en_AU/ISO-8859-1 \
-en_BW.UTF-8/UTF-8 \
-en_BW/ISO-8859-1 \
-en_CA.UTF-8/UTF-8 \
-en_CA/ISO-8859-1 \
-en_DK.UTF-8/UTF-8 \
-en_DK/ISO-8859-1 \
-en_GB.UTF-8/UTF-8 \
-en_GB/ISO-8859-1 \
-en_HK.UTF-8/UTF-8 \
-en_HK/ISO-8859-1 \
-en_IE.UTF-8/UTF-8 \
-en_IE/ISO-8859-1 \
-en_IE@euro/ISO-8859-15 \
-en_IL/UTF-8 \
-en_IN/UTF-8 \
-en_NG/UTF-8 \
-en_NZ.UTF-8/UTF-8 \
-en_NZ/ISO-8859-1 \
-en_PH.UTF-8/UTF-8 \
-en_PH/ISO-8859-1 \
-en_RU.KOI8-R/KOI8-R \
-en_RU.UTF-8/UTF-8 \
-en_RU.CP1251/CP1251 \
-en_RU.ISO-8859-5/ISO-8859-5 \
-en_RU/ISO-8859-5 \
-en_SC.UTF-8/UTF-8 \
-en_SG.UTF-8/UTF-8 \
-en_SG/ISO-8859-1 \
-en_US.UTF-8/UTF-8 \
-en_US/ISO-8859-1 \
-en_ZA.UTF-8/UTF-8 \
-en_ZA/ISO-8859-1 \
-en_ZM/UTF-8 \
-en_ZW.UTF-8/UTF-8 \
-en_ZW/ISO-8859-1 \
-eo/UTF-8 \
-es_AR.UTF-8/UTF-8 \
-es_AR/ISO-8859-1 \
-es_BO.UTF-8/UTF-8 \
-es_BO/ISO-8859-1 \
-es_CL.UTF-8/UTF-8 \
-es_CL/ISO-8859-1 \
-es_CO.UTF-8/UTF-8 \
-es_CO/ISO-8859-1 \
-es_CR.UTF-8/UTF-8 \
-es_CR/ISO-8859-1 \
-es_CU/UTF-8 \
-es_DO.UTF-8/UTF-8 \
-es_DO/ISO-8859-1 \
-es_EC.UTF-8/UTF-8 \
-es_EC/ISO-8859-1 \
-es_ES.UTF-8/UTF-8 \
-es_ES/ISO-8859-1 \
-es_ES@euro/ISO-8859-15 \
-es_GT.UTF-8/UTF-8 \
-es_GT/ISO-8859-1 \
-es_HN.UTF-8/UTF-8 \
-es_HN/ISO-8859-1 \
-es_MX.UTF-8/UTF-8 \
-es_MX/ISO-8859-1 \
-es_NI.UTF-8/UTF-8 \
-es_NI/ISO-8859-1 \
-es_PA.UTF-8/UTF-8 \
-es_PA/ISO-8859-1 \
-es_PE.UTF-8/UTF-8 \
-es_PE/ISO-8859-1 \
-es_PR.UTF-8/UTF-8 \
-es_PR/ISO-8859-1 \
-es_PY.UTF-8/UTF-8 \
-es_PY/ISO-8859-1 \
-es_SV.UTF-8/UTF-8 \
-es_SV/ISO-8859-1 \
-es_US.UTF-8/UTF-8 \
-es_US/ISO-8859-1 \
-es_UY.UTF-8/UTF-8 \
-es_UY/ISO-8859-1 \
-es_VE.UTF-8/UTF-8 \
-es_VE/ISO-8859-1 \
-et_EE.UTF-8/UTF-8 \
-et_EE/ISO-8859-1 \
-et_EE.ISO-8859-15/ISO-8859-15 \
-eu_ES.UTF-8/UTF-8 \
-eu_ES/ISO-8859-1 \
-eu_ES@euro/ISO-8859-15 \
-fa_IR/UTF-8 \
-ff_SN/UTF-8 \
-fi_FI.UTF-8/UTF-8 \
-fi_FI/ISO-8859-1 \
-fi_FI@euro/ISO-8859-15 \
-fil_PH/UTF-8 \
-fo_FO.UTF-8/UTF-8 \
-fo_FO/ISO-8859-1 \
-fr_BE.UTF-8/UTF-8 \
-fr_BE/ISO-8859-1 \
-fr_BE@euro/ISO-8859-15 \
-fr_CA.UTF-8/UTF-8 \
-fr_CA/ISO-8859-1 \
-fr_CH.UTF-8/UTF-8 \
-fr_CH/ISO-8859-1 \
-fr_FR.UTF-8/UTF-8 \
-fr_FR/ISO-8859-1 \
-fr_FR@euro/ISO-8859-15 \
-fr_LU.UTF-8/UTF-8 \
-fr_LU/ISO-8859-1 \
-fr_LU@euro/ISO-8859-15 \
-fur_IT/UTF-8 \
-fy_NL/UTF-8 \
-fy_DE/UTF-8 \
-ga_IE.UTF-8/UTF-8 \
-ga_IE/ISO-8859-1 \
-ga_IE@euro/ISO-8859-15 \
-gd_GB.UTF-8/UTF-8 \
-gd_GB/ISO-8859-15 \
-gez_ER/UTF-8 \
-gez_ER@abegede/UTF-8 \
-gez_ET/UTF-8 \
-gez_ET@abegede/UTF-8 \
-gl_ES.UTF-8/UTF-8 \
-gl_ES/ISO-8859-1 \
-gl_ES@euro/ISO-8859-15 \
-gu_IN/UTF-8 \
-gv_GB.UTF-8/UTF-8 \
-gv_GB/ISO-8859-1 \
-ha_NG/UTF-8 \
-hak_TW/UTF-8 \
-he_IL.UTF-8/UTF-8 \
-he_IL/ISO-8859-8 \
-hi_IN/UTF-8 \
-hif_FJ/UTF-8 \
-hne_IN/UTF-8 \
-hr_HR.UTF-8/UTF-8 \
-hr_HR/ISO-8859-2 \
-hsb_DE/ISO-8859-2 \
-hsb_DE.UTF-8/UTF-8 \
-ht_HT/UTF-8 \
-hu_HU.UTF-8/UTF-8 \
-hu_HU/ISO-8859-2 \
-hy_AM/UTF-8 \
-hy_AM.ARMSCII-8/ARMSCII-8 \
-ia_FR/UTF-8 \
-id_ID.UTF-8/UTF-8 \
-id_ID/ISO-8859-1 \
-ig_NG/UTF-8 \
-ik_CA/UTF-8 \
-is_IS.UTF-8/UTF-8 \
-is_IS/ISO-8859-1 \
-it_CH.UTF-8/UTF-8 \
-it_CH/ISO-8859-1 \
-it_IT.UTF-8/UTF-8 \
-it_IT/ISO-8859-1 \
-it_IT@euro/ISO-8859-15 \
-iu_CA/UTF-8 \
-ja_JP.EUC-JP/EUC-JP \
-ja_JP.UTF-8/UTF-8 \
-ka_GE.UTF-8/UTF-8 \
-ka_GE/GEORGIAN-PS \
-kab_DZ/UTF-8 \
-kk_KZ.UTF-8/UTF-8 \
-kk_KZ/PT154 \
-kl_GL.UTF-8/UTF-8 \
-kl_GL/ISO-8859-1 \
-km_KH/UTF-8 \
-kn_IN/UTF-8 \
-ko_KR.EUC-KR/EUC-KR \
-ko_KR.UTF-8/UTF-8 \
-kok_IN/UTF-8 \
-ks_IN/UTF-8 \
-ks_IN@devanagari/UTF-8 \
-ku_TR.UTF-8/UTF-8 \
-ku_TR/ISO-8859-9 \
-kw_GB.UTF-8/UTF-8 \
-kw_GB/ISO-8859-1 \
-ky_KG/UTF-8 \
-lb_LU/UTF-8 \
-lg_UG.UTF-8/UTF-8 \
-lg_UG/ISO-8859-10 \
-li_BE/UTF-8 \
-li_NL/UTF-8 \
-lij_IT/UTF-8 \
-ln_CD/UTF-8 \
-lo_LA/UTF-8 \
-lt_LT.UTF-8/UTF-8 \
-lt_LT/ISO-8859-13 \
-lv_LV.UTF-8/UTF-8 \
-lv_LV/ISO-8859-13 \
-lzh_TW/UTF-8 \
-mag_IN/UTF-8 \
-mai_IN/UTF-8 \
-mai_NP/UTF-8 \
-mfe_MU/UTF-8 \
-mg_MG.UTF-8/UTF-8 \
-mg_MG/ISO-8859-15 \
-mhr_RU/UTF-8 \
-mi_NZ.UTF-8/UTF-8 \
-mi_NZ/ISO-8859-13 \
-miq_NI/UTF-8 \
-mjw_IN/UTF-8 \
-mk_MK.UTF-8/UTF-8 \
-mk_MK/ISO-8859-5 \
-ml_IN/UTF-8 \
-mn_MN/UTF-8 \
-mni_IN/UTF-8 \
-mnw_MM/UTF-8 \
-mr_IN/UTF-8 \
-ms_MY.UTF-8/UTF-8 \
-ms_MY/ISO-8859-1 \
-mt_MT.UTF-8/UTF-8 \
-mt_MT/ISO-8859-3 \
-my_MM/UTF-8 \
-nan_TW/UTF-8 \
-nan_TW@latin/UTF-8 \
-nb_NO.UTF-8/UTF-8 \
-nb_NO/ISO-8859-1 \
-nds_DE/UTF-8 \
-nds_NL/UTF-8 \
-ne_NP/UTF-8 \
-nhn_MX/UTF-8 \
-niu_NU/UTF-8 \
-niu_NZ/UTF-8 \
-nl_AW/UTF-8 \
-nl_BE.UTF-8/UTF-8 \
-nl_BE/ISO-8859-1 \
-nl_BE@euro/ISO-8859-15 \
-nl_NL.UTF-8/UTF-8 \
-nl_NL/ISO-8859-1 \
-nl_NL@euro/ISO-8859-15 \
-nn_NO.UTF-8/UTF-8 \
-nn_NO/ISO-8859-1 \
-nr_ZA/UTF-8 \
-nso_ZA/UTF-8 \
-oc_FR.UTF-8/UTF-8 \
-oc_FR/ISO-8859-1 \
-om_ET/UTF-8 \
-om_KE.UTF-8/UTF-8 \
-om_KE/ISO-8859-1 \
-or_IN/UTF-8 \
-os_RU/UTF-8 \
-pa_IN/UTF-8 \
-pa_PK/UTF-8 \
-pap_AW/UTF-8 \
-pap_CW/UTF-8 \
-pl_PL.UTF-8/UTF-8 \
-pl_PL/ISO-8859-2 \
-ps_AF/UTF-8 \
-pt_BR.UTF-8/UTF-8 \
-pt_BR/ISO-8859-1 \
-pt_PT.UTF-8/UTF-8 \
-pt_PT/ISO-8859-1 \
-pt_PT@euro/ISO-8859-15 \
-quz_PE/UTF-8 \
-raj_IN/UTF-8 \
-rif_MA/UTF-8 \
-ro_RO.UTF-8/UTF-8 \
-ro_RO/ISO-8859-2 \
-ru_RU.KOI8-R/KOI8-R \
-ru_RU.UTF-8/UTF-8 \
-ru_RU.CP1251/CP1251 \
-ru_RU.ISO-8859-5/ISO-8859-5 \
-ru_RU/ISO-8859-5 \
-ru_UA.UTF-8/UTF-8 \
-ru_UA/KOI8-U \
-rw_RW/UTF-8 \
-sa_IN/UTF-8 \
-sah_RU/UTF-8 \
-sat_IN/UTF-8 \
-sc_IT/UTF-8 \
-sd_IN/UTF-8 \
-sd_IN@devanagari/UTF-8 \
-se_NO/UTF-8 \
-sgs_LT/UTF-8 \
-shn_MM/UTF-8 \
-shs_CA/UTF-8 \
-si_LK/UTF-8 \
-sid_ET/UTF-8 \
-sk_SK.UTF-8/UTF-8 \
-sk_SK/ISO-8859-2 \
-sl_SI.UTF-8/UTF-8 \
-sl_SI/ISO-8859-2 \
-sm_WS/UTF-8 \
-so_DJ.UTF-8/UTF-8 \
-so_DJ/ISO-8859-1 \
-so_ET/UTF-8 \
-so_KE.UTF-8/UTF-8 \
-so_KE/ISO-8859-1 \
-so_SO.UTF-8/UTF-8 \
-so_SO/ISO-8859-1 \
-sq_AL.UTF-8/UTF-8 \
-sq_AL/ISO-8859-1 \
-sq_MK/UTF-8 \
-sr_ME/UTF-8 \
-sr_RS/UTF-8 \
-sr_RS@latin/UTF-8 \
-ss_ZA/UTF-8 \
-st_ZA.UTF-8/UTF-8 \
-st_ZA/ISO-8859-1 \
-sv_FI.UTF-8/UTF-8 \
-sv_FI/ISO-8859-1 \
-sv_FI@euro/ISO-8859-15 \
-sv_SE.UTF-8/UTF-8 \
-sv_SE/ISO-8859-1 \
-sw_KE/UTF-8 \
-sw_TZ/UTF-8 \
-syr/UTF-8 \
-szl_PL/UTF-8 \
-ta_IN/UTF-8 \
-ta_LK/UTF-8 \
-tcy_IN.UTF-8/UTF-8 \
-te_IN/UTF-8 \
-tg_TJ.UTF-8/UTF-8 \
-tg_TJ/KOI8-T \
-th_TH.UTF-8/UTF-8 \
-th_TH/TIS-620 \
-the_NP/UTF-8 \
-ti_ER/UTF-8 \
-ti_ET/UTF-8 \
-tig_ER/UTF-8 \
-tk_TM/UTF-8 \
-tl_PH.UTF-8/UTF-8 \
-tl_PH/ISO-8859-1 \
-tn_ZA/UTF-8 \
-to_TO/UTF-8 \
-tpi_PG/UTF-8 \
-tr_CY.UTF-8/UTF-8 \
-tr_CY/ISO-8859-9 \
-tr_TR.UTF-8/UTF-8 \
-tr_TR/ISO-8859-9 \
-ts_ZA/UTF-8 \
-tt_RU/UTF-8 \
-tt_RU@iqtelif/UTF-8 \
-ug_CN/UTF-8 \
-uk_UA.UTF-8/UTF-8 \
-uk_UA/KOI8-U \
-unm_US/UTF-8 \
-ur_IN/UTF-8 \
-ur_PK/UTF-8 \
-uz_UZ.UTF-8/UTF-8 \
-uz_UZ/ISO-8859-1 \
-uz_UZ@cyrillic/UTF-8 \
-ve_ZA/UTF-8 \
-vi_VN/UTF-8 \
-wa_BE/ISO-8859-1 \
-wa_BE@euro/ISO-8859-15 \
-wa_BE.UTF-8/UTF-8 \
-wae_CH/UTF-8 \
-wal_ET/UTF-8 \
-wo_SN/UTF-8 \
-xh_ZA.UTF-8/UTF-8 \
-xh_ZA/ISO-8859-1 \
-yi_US.UTF-8/UTF-8 \
-yi_US/CP1255 \
-yo_NG/UTF-8 \
-yue_HK/UTF-8 \
-yuw_PG/UTF-8 \
-zh_CN.GB18030/GB18030 \
-zh_CN.GBK/GBK \
-zh_CN.UTF-8/UTF-8 \
-zh_CN/GB2312 \
-zh_HK.UTF-8/UTF-8 \
-zh_HK/BIG5-HKSCS \
-zh_SG.UTF-8/UTF-8 \
-zh_SG.GBK/GBK \
-zh_SG/GB2312 \
-zh_TW.EUC-TW/EUC-TW \
-zh_TW.UTF-8/UTF-8 \
-zh_TW/BIG5 \
-zu_ZA.UTF-8/UTF-8 \
-zu_ZA/ISO-8859-1 \
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new/localedata
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-i18n-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-glibc-2.36/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
-glibc-2.36/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-x86_64-interpreter.patch
-
-mv glibc-$VERSION-x86_64-interpreter.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed (nonexistent)
@@ -1,3 +0,0 @@
-/LD_TRACE_LOADED_OBJECTS=1/a\
-add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
-s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|32\|x32\)\(/ld-linux\)\(\|-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4-x86-64\6 \232\4\6 \2x32\4-x32\6"_
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64/ldconfig.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64/ldconfig.h (nonexistent)
@@ -1,26 +0,0 @@
-/* Copyright (C) 2001-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <sysdeps/generic/ldconfig.h>
-
-#define SYSDEP_KNOWN_INTERPRETER_NAMES \
- { "/lib/ld-linux-x86-64.so.2", FLAG_ELF_LIBC6 }, \
- { "/lib32/ld-linux.so.2", FLAG_ELF_LIBC6 }, \
- { "/libx32/ld-linux-x32.so.2", FLAG_ELF_LIBC6 },
-#define SYSDEP_KNOWN_LIBRARY_NAMES \
- { "libc.so.6", FLAG_ELF_LIBC6 }, \
- { "libm.so.6", FLAG_ELF_LIBC6 },
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64 (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64 (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/x86_64
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv/linux
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix/sysv
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps/unix
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new/sysdeps
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-x86_64-interpreter-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-glibc-2.36/localedata/Makefile
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-locale-no-archive.patch
-
-mv glibc-$VERSION-locale-no-archive.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata/Makefile (nonexistent)
@@ -1,496 +0,0 @@
-# Copyright (C) 1996-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-# Makefile for installing locale data source files.
-
-subdir := localedata
-
-include ../Makeconfig
-
-# List with all available character set descriptions.
-charmaps := $(wildcard charmaps/[A-I]*) $(wildcard charmaps/[J-Z]*)
-
-# List with all available character set descriptions.
-locales := $(wildcard locales/*)
-
-
-subdir-dirs = tests-mbwc
-vpath %.c tests-mbwc
-vpath %.h tests-mbwc
-
-
-test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \
- tst-ctype tst-langinfo-newlocale tst-langinfo-setlocale \
- tst-langinfo-newlocale-static tst-langinfo-setlocale-static \
- tst-numeric
-# List of test input files (list sorted alphabetically):
-test-input := \
- am_ET.UTF-8 \
- az_AZ.UTF-8 \
- be_BY.UTF-8 \
- ber_DZ.UTF-8 \
- ber_MA.UTF-8 \
- bg_BG.UTF-8 \
- br_FR.UTF-8 \
- bs_BA.UTF-8 \
- C.UTF-8 \
- ckb_IQ.UTF-8 \
- cmn_TW.UTF-8 \
- crh_UA.UTF-8 \
- cs_CZ.UTF-8 \
- csb_PL.UTF-8 \
- cv_RU.UTF-8 \
- cy_GB.UTF-8 \
- da_DK.ISO-8859-1 \
- de_DE.ISO-8859-1 \
- dsb_DE.UTF-8 \
- dz_BT.UTF-8 \
- en_US.ISO-8859-1 \
- en_US.UTF-8 \
- eo.UTF-8 \
- es_ES.UTF-8 \
- et_EE.UTF-8 \
- fa_IR.UTF-8 \
- fi_FI.UTF-8 \
- fil_PH.UTF-8 \
- fr_CA.UTF-8 \
- fr_FR.UTF-8 \
- fur_IT.UTF-8 \
- gez_ER.UTF-8@abegede \
- ha_NG.UTF-8 \
- hr_HR.ISO-8859-2 \
- hr_HR.UTF-8 \
- hsb_DE.UTF-8 \
- hu_HU.UTF-8 \
- ig_NG.UTF-8 \
- ik_CA.UTF-8 \
- is_IS.UTF-8 \
- kk_KZ.UTF-8 \
- ku_TR.UTF-8 \
- ky_KG.UTF-8 \
- ln_CD.UTF-8 \
- lt_LT.UTF-8 \
- lv_LV.UTF-8 \
- mi_NZ.UTF-8 \
- ml_IN.UTF-8 \
- mn_MN.UTF-8 \
- mr_IN.UTF-8 \
- mt_MT.UTF-8 \
- nan_TW.UTF-8@latin \
- nb_NO.UTF-8 \
- om_KE.UTF-8 \
- or_IN.UTF-8 \
- os_RU.UTF-8 \
- pl_PL.UTF-8 \
- ps_AF.UTF-8 \
- rif_MA.UTF-8 \
- ro_RO.UTF-8 \
- ru_RU.UTF-8 \
- sah_RU.UTF-8 \
- sc_IT.UTF-8 \
- se_NO.UTF-8 \
- si_LK.UTF-8 \
- sq_AL.UTF-8 \
- sr_RS.UTF-8 \
- sv_SE.ISO-8859-1 \
- sv_SE.UTF-8 \
- syr.UTF-8 \
- szl_PL.UTF-8 \
- tg_TJ.UTF-8 \
- tk_TM.UTF-8 \
- tr_TR.UTF-8 \
- tt_RU.UTF-8 \
- tt_RU.UTF-8@iqtelif \
- ug_CN.UTF-8 \
- uk_UA.UTF-8 \
- uz_UZ.UTF-8 \
- vi_VN.UTF-8 \
- yi_US.UTF-8 \
- yo_NG.UTF-8 \
- zh_CN.UTF-8 \
- $(NULL)
-
-test-input-data = $(addsuffix .in, $(test-input))
-test-output := $(foreach s, .out .xout, \
- $(addsuffix $s, $(basename $(test-input))))
-ld-test-names := test1 test2 test3 test4 test5 test6 test7
-ld-test-srcs := $(addprefix tests/,$(addsuffix .cm,$(ld-test-names)) \
- $(addsuffix .def,$(ld-test-names)) \
- $(addsuffix .ds,test5 test6) \
- test6.c trans.def)
-
-fmon-tests = n01y12 n02n40 n10y31 n11y41 n12y11 n20n32 n30y20 n41n00 \
- y01y10 y02n22 y22n42 y30y21 y32n31 y40y00 y42n21
-
-generated += $(test-input) $(test-output) sort-test.out tst-locale.out \
- tst-leaks.mtrace mtrace-tst-leaks.out
-generated-dirs += $(ld-test-names) tt_TT de_DE.437 \
- $(addprefix tstfmon_,$(fmon-tests)) \
-
-ifeq ($(run-built-tests),yes)
-locale_test_suite := tst_iswalnum tst_iswalpha tst_iswcntrl \
- tst_iswctype tst_iswdigit tst_iswgraph \
- tst_iswlower tst_iswprint tst_iswpunct \
- tst_iswspace tst_iswupper tst_iswxdigit tst_mblen \
- tst_mbrlen tst_mbrtowc tst_mbsrtowcs tst_mbstowcs \
- tst_mbtowc tst_strcoll tst_strfmon tst_strxfrm \
- tst_swscanf tst_towctrans tst_towlower \
- tst_towupper tst_wcrtomb tst_wcscat tst_wcschr \
- tst_wcscmp tst_wcscoll tst_wcscpy tst_wcscspn \
- tst_wcslen tst_wcsncat tst_wcsncmp tst_wcsncpy \
- tst_wcspbrk tst_wcsrtombs tst_wcsspn tst_wcsstr \
- tst_wcstod tst_wcstok tst_wcstombs tst_wcswidth \
- tst_wcsxfrm tst_wctob tst_wctomb tst_wctrans \
- tst_wctype tst_wcwidth
-
-tests = \
- $(locale_test_suite) \
- bug-iconv-trans \
- bug-setlocale1 \
- bug-usesetlocale \
- tst-c-utf8-consistency \
- tst-digits \
- tst-iconv-math-trans \
- tst-leaks \
- tst-mbswcs1 \
- tst-mbswcs2 \
- tst-mbswcs3 \
- tst-mbswcs4 \
- tst-mbswcs5 \
- tst-mbswcs6 \
- tst-setlocale \
- tst-setlocale2 \
- tst-setlocale3 \
- tst-sscanf \
- tst-strfmon1 \
- tst-wctype \
- tst-xlocale1 \
- tst-xlocale2 \
- # tests
-
-tests-static = bug-setlocale1-static
-tests += $(tests-static)
-ifeq (yes,$(build-shared))
-ifneq (no,$(PERL))
-tests-special += $(objpfx)mtrace-tst-leaks.out
-endif
-endif
-endif
-tests-container = \
- tst-localedef-hardlinks
-
-# Files to install.
-ifeq ($(INSTALL_UNCOMPRESSED),yes)
-# This option is for testing inside the testroot container, as the
-# container does not include a working gunzip program.
-install-others := $(addprefix $(inst_i18ndir)/, \
- $(charmaps) \
- $(locales))
-else
-install-others := $(addprefix $(inst_i18ndir)/, \
- $(addsuffix .gz, $(charmaps)) \
- $(locales))
-endif
-
-tests: $(objdir)/iconvdata/gconv-modules
-
-tests-static += tst-langinfo-newlocale-static tst-langinfo-setlocale-static
-
-ifeq ($(run-built-tests),yes)
-tests-special += $(objpfx)sort-test.out $(objpfx)tst-fmon.out \
- $(objpfx)tst-locale.out $(objpfx)tst-rpmatch.out \
- $(objpfx)tst-trans.out $(objpfx)tst-ctype.out \
- $(objpfx)tst-langinfo-newlocale.out \
- $(objpfx)tst-langinfo-setlocale.out \
- $(objpfx)tst-langinfo-newlocale-static.out \
- $(objpfx)tst-langinfo-setlocale-static.out \
- $(objpfx)tst-numeric.out
-# We have to generate locales (list sorted alphabetically)
-LOCALES := \
- am_ET.UTF-8 \
- az_AZ.UTF-8 \
- be_BY.UTF-8 \
- ber_DZ.UTF-8 \
- ber_MA.UTF-8 \
- bg_BG.UTF-8 \
- br_FR.UTF-8 \
- bs_BA.UTF-8 \
- C.UTF-8 \
- ckb_IQ.UTF-8 \
- cmn_TW.UTF-8 \
- crh_UA.UTF-8 \
- cs_CZ.UTF-8 \
- csb_PL.UTF-8 \
- cv_RU.UTF-8 \
- cy_GB.UTF-8 \
- da_DK.ISO-8859-1 \
- de_DE.ISO-8859-1 \
- de_DE.UTF-8 \
- dsb_DE.UTF-8 \
- dz_BT.UTF-8 \
- en_GB.UTF-8 \
- en_US.ANSI_X3.4-1968 \
- en_US.ISO-8859-1\
- en_US.UTF-8 \
- eo.UTF-8 \
- es_ES.UTF-8 \
- et_EE.UTF-8 \
- fa_IR.UTF-8 \
- fi_FI.UTF-8 \
- fil_PH.UTF-8 \
- fr_CA.UTF-8 \
- fr_FR.ISO-8859-1 \
- fr_FR.UTF-8 \
- fur_IT.UTF-8 \
- gez_ER.UTF-8@abegede \
- ha_NG.UTF-8 \
- hr_HR.ISO-8859-2 \
- hr_HR.UTF-8 \
- hsb_DE.UTF-8 \
- hu_HU.UTF-8 \
- ig_NG.UTF-8 \
- ik_CA.UTF-8 \
- is_IS.UTF-8 \
- ja_JP.EUC-JP \
- ja_JP.SJIS \
- ja_JP.UTF-8 \
- kk_KZ.UTF-8 \
- ku_TR.UTF-8 \
- ky_KG.UTF-8 \
- ln_CD.UTF-8 \
- lt_LT.UTF-8 \
- lv_LV.UTF-8 \
- mi_NZ.UTF-8 \
- ml_IN.UTF-8 \
- mn_MN.UTF-8 \
- mr_IN.UTF-8 \
- mt_MT.UTF-8 \
- nan_TW.UTF-8@latin \
- nb_NO.ISO-8859-1 \
- nb_NO.UTF-8 \
- nl_NL.UTF-8 \
- nn_NO.ISO-8859-1 \
- om_KE.UTF-8 \
- or_IN.UTF-8 \
- os_RU.UTF-8 \
- pl_PL.UTF-8 \
- ps_AF.UTF-8 \
- rif_MA.UTF-8 \
- ro_RO.UTF-8 \
- ru_RU.UTF-8 \
- sah_RU.UTF-8 \
- sc_IT.UTF-8 \
- se_NO.UTF-8 \
- si_LK.UTF-8 \
- sq_AL.UTF-8 \
- sr_RS.UTF-8 \
- sv_SE.ISO-8859-1 \
- sv_SE.UTF-8 \
- syr.UTF-8 \
- szl_PL.UTF-8 \
- tg_TJ.UTF-8 \
- tk_TM.UTF-8 \
- tr_TR.ISO-8859-9 \
- tr_TR.UTF-8 \
- tt_RU.UTF-8 \
- tt_RU.UTF-8@iqtelif \
- ug_CN.UTF-8 \
- uk_UA.UTF-8 \
- uz_UZ.UTF-8 \
- vi_VN.UTF-8 \
- yi_US.UTF-8 \
- yo_NG.UTF-8 \
- zh_CN.UTF-8 \
- zh_TW.EUC-TW \
- $(NULL)
-
-include ../gen-locales.mk
-
-$(objpfx)tst-iconv-math-trans.out: $(gen-locales)
-endif
-
-include ../Rules
-
-ifeq ($(INSTALL_UNCOMPRESSED),yes)
-# Install the charmap files as-is. This option is for testing inside
-# the testroot container, as the container does not include a working
-# gunzip program.
-$(inst_i18ndir)/charmaps/%: charmaps/% $(+force)
- $(make-target-directory)
- rm -f $@
- $(INSTALL_DATA) $< $@
-else
-# Install the charmap files in gzipped format.
-$(inst_i18ndir)/charmaps/%.gz: charmaps/% $(+force)
- $(make-target-directory)
- rm -f $(@:.gz=) $@
- $(INSTALL_DATA) $< $(@:.gz=)
- gzip -9n $(@:.gz=)
-endif
-
-# Install the locale source files in the appropriate directory.
-$(inst_i18ndir)/locales/%: locales/% $(+force); $(do-install)
-
-ifeq ($(run-built-tests),yes)
-generated-dirs += $(LOCALES)
-
-$(addsuffix .out,$(addprefix $(objpfx),$(tests))): %: \
- $(addprefix $(objpfx),$(CTYPE_FILES))
-
-$(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
- $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
- '$(run-program-env)' '$(test-program-prefix-after-env)' \
- $(test-input) \
- > $@; \
- $(evaluate-test)
-$(objpfx)tst-fmon.out: tst-fmon.sh $(objpfx)tst-fmon tst-fmon.data \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(run-program-prefix-before-env)' \
- '$(run-program-env)' '$(run-program-prefix-after-env)' \
- '$(test-program-prefix)' tst-fmon.data \
- > $@; \
- $(evaluate-test)
-$(objpfx)tst-numeric.out: tst-numeric.sh $(objpfx)tst-numeric tst-numeric.data \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' tst-numeric.data \
- > $@; \
- $(evaluate-test)
-$(objpfx)tst-locale.out: tst-locale.sh $(common-objpfx)locale/localedef \
- $(ld-test-srcs) $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(built-program-cmd-before-env)' \
- '$(run-program-env)' '$(built-program-cmd-after-env)' > $@; \
- $(evaluate-test)
-$(objpfx)tst-rpmatch.out: tst-rpmatch.sh $(objpfx)tst-rpmatch \
- $(objpfx)tst-fmon.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
- $(evaluate-test)
-$(objpfx)tst-trans.out: tst-trans.sh $(objpfx)tst-trans \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(run-program-prefix-before-env)' \
- '$(run-program-env)' '$(run-program-prefix-after-env)' \
- '$(test-program-prefix-before-env)' \
- '$(test-program-prefix-after-env)'; \
- $(evaluate-test)
-$(objpfx)tst-ctype.out: tst-ctype.sh $(objpfx)tst-ctype \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
- '$(run-program-env)' '$(test-program-cmd-after-env)'; \
- $(evaluate-test)
-$(objpfx)tst-langinfo-newlocale.out: tst-langinfo.sh \
- $(objpfx)tst-langinfo-newlocale \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
- '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
- $(evaluate-test)
-$(objpfx)tst-langinfo-newlocale-static.out: tst-langinfo.sh \
- $(objpfx)tst-langinfo-newlocale-static \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
- '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
- $(evaluate-test)
-# Static use of newlocale is known not to work. See Bug 23164.
-test-xfail-tst-langinfo-newlocale-static = yes
-
-$(objpfx)tst-langinfo-setlocale.out: tst-langinfo.sh \
- $(objpfx)tst-langinfo-setlocale \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
- '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
- $(evaluate-test)
-$(objpfx)tst-langinfo-setlocale-static.out: tst-langinfo.sh \
- $(objpfx)tst-langinfo-setlocale-static \
- $(objpfx)sort-test.out \
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
- '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-digits.out: $(objpfx)tst-locale.out
-$(objpfx)tst-mbswcs6.out: $(addprefix $(objpfx),$(CTYPE_FILES))
-endif
-
-include SUPPORTED
-
-INSTALL-SUPPORTED-LOCALE-ARCHIVE=$(addprefix install-archive-, $(SUPPORTED-LOCALES))
-INSTALL-SUPPORTED-LOCALE-FILES=$(addprefix install-files-, $(SUPPORTED-LOCALES))
-
-# Sometimes the whole collection of locale files should be installed.
-LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
-$(rtld-prefix) $(common-objpfx)locale/localedef
-install-locales: install-locale-archive
-
-# Create and install the locale-archive file.
-install-locale-archive: $(INSTALL-SUPPORTED-LOCALE-ARCHIVE)
-# Create and install the locales individually (no archive).
-install-locale-files: $(INSTALL-SUPPORTED-LOCALE-FILES)
-
-install-locales-dir:
- $(..)./scripts/mkinstalldirs $(inst_complocaledir)
-
-# The SHIFT_JIS and SHIFT_JISX0213 character maps are not ASCII compatible,
-# therefore we have to use --no-warnings=ascii to disable the ASCII check.
-# See localedata/gen-locale.sh for the same logic.
-define build-one-locale
- locale=`echo $@ | sed -e 's/^install-[a-z]*-//'`; \
- charset=`echo $$locale | sed -e 's,.*/,,'`; \
- locale=`echo $$locale | sed -e 's,/[^/]*,,'`; \
- if [ "$$charset" = 'SHIFT_JIS' ] \
- || [ "$$charset" = 'SHIFT_JISX0213' ]; then \
- flags="$$flags --no-warnings=ascii"; \
- fi; \
- echo -n `echo $$locale | sed 's/\([^.\@]*\).*/\1/'`; \
- echo -n ".$$charset"; \
- echo -n `echo $$locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \
- echo -n '...'; \
- input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
- $(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \
- --no-archive \
- -i locales/$$input -f charmaps/$$charset \
- $(addprefix --prefix=,$(install_root)) $$locale \
- && echo ' done';
-endef
-
-$(INSTALL-SUPPORTED-LOCALE-ARCHIVE): install-locales-dir
- @flags=""; \
- $(build-one-locale)
-
-$(INSTALL-SUPPORTED-LOCALE-FILES): install-locales-dir
- @flags="--no-archive --no-hard-links"; \
- $(build-one-locale)
-
-tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP
-tst-wctype-ENV = LC_ALL=ja_JP.EUC-JP
-
-tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace \
- LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
-$(objpfx)mtrace-tst-leaks.out: $(objpfx)tst-leaks.out
- $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@; \
- $(evaluate-test)
-
-bug-setlocale1-ENV-only = LOCPATH=$(objpfx) LC_CTYPE=de_DE.UTF-8
-bug-setlocale1-static-ENV-only = $(bug-setlocale1-ENV-only)
-
-$(objdir)/iconvdata/gconv-modules:
- $(MAKE) -C ../iconvdata subdir=iconvdata $@
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new/localedata
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-locale-no-archive-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/patches/README
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/patches/README (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/patches/README (nonexistent)
@@ -1,23 +0,0 @@
-
-/* begin *
-
- NOTE:
- ====
- glibc-2.36-b3736d1a3c-2.36.1.patch - Upstream 2.36.1
-
- glibc-2.36-reenable-DT-HASH.patch - From e47de5cb2d4dbecb58f569ed241e8e95c568f03c Mon Sep 17 00:00:00 2001
- From: Florian Weimer <fweimer@redhat.com>
- Date: Fri, 29 Apr 2022 16:37:51 +0200
- Subject: [PATCH] Do not use --hash-style=both for building glibc shared
- objects
-
- The comment indicates that --hash-style=both was used to maintain
- compatibility with static dlopen, but we had many internal ABI
- changes since then, so this compatiblity does not add value anymore.
-
- Reviewed-by: Carlos O'Donell <carlos@redhat.com>
-
- glibc-2.36-zonefile.patch - required if IANA timezone version 2022f or later is applyed.
-
-
- * end */
Index: radix-1.9/sources/GNU/glibc/2.36/patches
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/patches (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/patches (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/patches
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-glibc-2.36/malloc/malloc-check.c
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-malloc-hooks.patch
-
-mv glibc-$VERSION-malloc-hooks.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc/malloc-check.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc/malloc-check.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc/malloc-check.c (nonexistent)
@@ -1,403 +0,0 @@
-/* glibc.malloc.check implementation.
- Copyright (C) 2001-2022 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
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; see the file COPYING.LIB. If
- not, see <https://www.gnu.org/licenses/>. */
-
-#define __mremap mremap
-#include "malloc.c"
-
-/* When memory is tagged, the checking data is stored in the user part
- of the chunk. We can't rely on the user not having modified the
- tags, so fetch the tag at each location before dereferencing
- it. */
-#define SAFE_CHAR_OFFSET(p,offset) \
- ((unsigned char *) tag_at (((unsigned char *) p) + offset))
-
-/* A simple, standard set of debugging hooks. Overhead is `only' one
- byte per chunk; still this will catch most cases of double frees or
- overruns. The goal here is to avoid obscure crashes due to invalid
- usage, unlike in the MALLOC_DEBUG code. */
-
-static unsigned char
-magicbyte (const void *p)
-{
- unsigned char magic;
-
- magic = (((uintptr_t) p >> 3) ^ ((uintptr_t) p >> 11)) & 0xFF;
- /* Do not return 1. See the comment in mem2mem_check(). */
- if (magic == 1)
- ++magic;
- return magic;
-}
-
-/* Visualize the chunk as being partitioned into blocks of 255 bytes from the
- highest address of the chunk, downwards. The end of each block tells
- us the size of that block, up to the actual size of the requested
- memory. Our magic byte is right at the end of the requested size, so we
- must reach it with this iteration, otherwise we have witnessed a memory
- corruption. */
-static size_t
-malloc_check_get_size (void *mem)
-{
- size_t size;
- unsigned char c;
- mchunkptr p = mem2chunk (mem);
- unsigned char magic = magicbyte (p);
-
- for (size = CHUNK_HDR_SZ + memsize (p) - 1;
- (c = *SAFE_CHAR_OFFSET (p, size)) != magic;
- size -= c)
- {
- if (c <= 0 || size < (c + CHUNK_HDR_SZ))
- malloc_printerr ("malloc_check_get_size: memory corruption");
- }
-
- /* chunk2mem size. */
- return size - CHUNK_HDR_SZ;
-}
-
-/* Instrument a chunk with overrun detector byte(s) and convert it
- into a user pointer with requested size req_sz. */
-
-static void *
-mem2mem_check (void *ptr, size_t req_sz)
-{
- mchunkptr p;
- unsigned char *m_ptr = ptr;
- size_t max_sz, block_sz, i;
- unsigned char magic;
-
- if (!ptr)
- return ptr;
-
- p = mem2chunk (ptr);
- magic = magicbyte (p);
- max_sz = memsize (p);
-
- for (i = max_sz - 1; i > req_sz; i -= block_sz)
- {
- block_sz = MIN (i - req_sz, 0xff);
- /* Don't allow the magic byte to appear in the chain of length bytes.
- For the following to work, magicbyte cannot return 0x01. */
- if (block_sz == magic)
- --block_sz;
-
- *SAFE_CHAR_OFFSET (m_ptr, i) = block_sz;
- }
- *SAFE_CHAR_OFFSET (m_ptr, req_sz) = magic;
- return (void *) m_ptr;
-}
-
-/* Convert a pointer to be free()d or realloc()ed to a valid chunk
- pointer. If the provided pointer is not valid, return NULL. */
-
-static mchunkptr
-mem2chunk_check (void *mem, unsigned char **magic_p)
-{
- mchunkptr p;
- INTERNAL_SIZE_T sz, c;
- unsigned char magic;
-
- if (!aligned_OK (mem))
- return NULL;
-
- p = mem2chunk (mem);
- sz = chunksize (p);
- magic = magicbyte (p);
- if (!chunk_is_mmapped (p))
- {
- /* Must be a chunk in conventional heap memory. */
- int contig = contiguous (&main_arena);
- if ((contig &&
- ((char *) p < mp_.sbrk_base ||
- ((char *) p + sz) >= (mp_.sbrk_base + main_arena.system_mem))) ||
- sz < MINSIZE || sz & MALLOC_ALIGN_MASK || !inuse (p) ||
- (!prev_inuse (p) && ((prev_size (p) & MALLOC_ALIGN_MASK) != 0 ||
- (contig && (char *) prev_chunk (p) < mp_.sbrk_base) ||
- next_chunk (prev_chunk (p)) != p)))
- return NULL;
-
- for (sz = CHUNK_HDR_SZ + memsize (p) - 1;
- (c = *SAFE_CHAR_OFFSET (p, sz)) != magic;
- sz -= c)
- {
- if (c == 0 || sz < (c + CHUNK_HDR_SZ))
- return NULL;
- }
- }
- else
- {
- unsigned long offset, page_mask = GLRO (dl_pagesize) - 1;
-
- /* mmap()ed chunks have MALLOC_ALIGNMENT or higher power-of-two
- alignment relative to the beginning of a page. Check this
- first. */
- offset = (unsigned long) mem & page_mask;
- if ((offset != MALLOC_ALIGNMENT && offset != 0 && offset != 0x10 &&
- offset != 0x20 && offset != 0x40 && offset != 0x80 && offset != 0x100 &&
- offset != 0x200 && offset != 0x400 && offset != 0x800 && offset != 0x1000 &&
- offset < 0x2000) ||
- !chunk_is_mmapped (p) || prev_inuse (p) ||
- ((((unsigned long) p - prev_size (p)) & page_mask) != 0) ||
- ((prev_size (p) + sz) & page_mask) != 0)
- return NULL;
-
- for (sz = CHUNK_HDR_SZ + memsize (p) - 1;
- (c = *SAFE_CHAR_OFFSET (p, sz)) != magic;
- sz -= c)
- {
- if (c == 0 || sz < (c + CHUNK_HDR_SZ))
- return NULL;
- }
- }
-
- unsigned char* safe_p = SAFE_CHAR_OFFSET (p, sz);
- *safe_p ^= 0xFF;
- if (magic_p)
- *magic_p = safe_p;
- return p;
-}
-
-/* Check for corruption of the top chunk. */
-static void
-top_check (void)
-{
- mchunkptr t = top (&main_arena);
-
- if (t == initial_top (&main_arena) ||
- (!chunk_is_mmapped (t) &&
- chunksize (t) >= MINSIZE &&
- prev_inuse (t) &&
- (!contiguous (&main_arena) ||
- (char *) t + chunksize (t) == mp_.sbrk_base + main_arena.system_mem)))
- return;
-
- malloc_printerr ("malloc: top chunk is corrupt");
-}
-
-static void *
-malloc_check (size_t sz)
-{
- void *victim;
- size_t nb;
-
- if (__builtin_add_overflow (sz, 1, &nb))
- {
- __set_errno (ENOMEM);
- return NULL;
- }
-
- __libc_lock_lock (main_arena.mutex);
- top_check ();
- victim = _int_malloc (&main_arena, nb);
- __libc_lock_unlock (main_arena.mutex);
- return mem2mem_check (tag_new_usable (victim), sz);
-}
-
-static void
-free_check (void *mem)
-{
- mchunkptr p;
-
- if (!mem)
- return;
-
- int err = errno;
-
- /* Quickly check that the freed pointer matches the tag for the memory.
- This gives a useful double-free detection. */
- if (__glibc_unlikely (mtag_enabled))
- *(volatile char *)mem;
-
- __libc_lock_lock (main_arena.mutex);
- p = mem2chunk_check (mem, NULL);
- if (!p)
- malloc_printerr ("free(): invalid pointer");
- if (chunk_is_mmapped (p))
- {
- __libc_lock_unlock (main_arena.mutex);
- munmap_chunk (p);
- }
- else
- {
- /* Mark the chunk as belonging to the library again. */
- (void)tag_region (chunk2mem (p), memsize (p));
- _int_free (&main_arena, p, 1);
- __libc_lock_unlock (main_arena.mutex);
- }
- __set_errno (err);
-}
-
-static void *
-realloc_check (void *oldmem, size_t bytes)
-{
- INTERNAL_SIZE_T chnb;
- void *newmem = 0;
- unsigned char *magic_p = NULL;
- size_t rb;
-
- if (__builtin_add_overflow (bytes, 1, &rb))
- {
- __set_errno (ENOMEM);
- return NULL;
- }
- if (oldmem == 0)
- return malloc_check (bytes);
-
- if (bytes == 0)
- {
- free_check (oldmem);
- return NULL;
- }
-
- /* Quickly check that the freed pointer matches the tag for the memory.
- This gives a useful double-free detection. */
- if (__glibc_unlikely (mtag_enabled))
- *(volatile char *)oldmem;
-
- __libc_lock_lock (main_arena.mutex);
- const mchunkptr oldp = mem2chunk_check (oldmem, &magic_p);
- __libc_lock_unlock (main_arena.mutex);
- if (!oldp)
- malloc_printerr ("realloc(): invalid pointer");
- const INTERNAL_SIZE_T oldsize = chunksize (oldp);
-
- chnb = checked_request2size (rb);
- if (chnb == 0)
- {
- __set_errno (ENOMEM);
- goto invert;
- }
-
- __libc_lock_lock (main_arena.mutex);
-
- if (chunk_is_mmapped (oldp))
- {
-#if HAVE_MREMAP
- mchunkptr newp = mremap_chunk (oldp, chnb);
- if (newp)
- newmem = chunk2mem_tag (newp);
- else
-#endif
- {
- /* Note the extra SIZE_SZ overhead. */
- if (oldsize - SIZE_SZ >= chnb)
- newmem = oldmem; /* do nothing */
- else
- {
- /* Must alloc, copy, free. */
- top_check ();
- newmem = _int_malloc (&main_arena, rb);
- if (newmem)
- {
- memcpy (newmem, oldmem, oldsize - CHUNK_HDR_SZ);
- munmap_chunk (oldp);
- }
- }
- }
- }
- else
- {
- top_check ();
- newmem = _int_realloc (&main_arena, oldp, oldsize, chnb);
- }
-
- DIAG_PUSH_NEEDS_COMMENT;
-#if __GNUC_PREREQ (7, 0)
- /* GCC 7 warns about magic_p may be used uninitialized. But we never
- reach here if magic_p is uninitialized. */
- DIAG_IGNORE_NEEDS_COMMENT (7, "-Wmaybe-uninitialized");
-#endif
- /* mem2chunk_check changed the magic byte in the old chunk.
- If newmem is NULL, then the old chunk will still be used though,
- so we need to invert that change here. */
-invert:
- if (newmem == NULL)
- *magic_p ^= 0xFF;
- DIAG_POP_NEEDS_COMMENT;
-
- __libc_lock_unlock (main_arena.mutex);
-
- return mem2mem_check (tag_new_usable (newmem), bytes);
-}
-
-static void *
-memalign_check (size_t alignment, size_t bytes)
-{
- void *mem;
-
- if (alignment <= MALLOC_ALIGNMENT)
- return malloc_check (bytes);
-
- if (alignment < MINSIZE)
- alignment = MINSIZE;
-
- /* If the alignment is greater than SIZE_MAX / 2 + 1 it cannot be a
- power of 2 and will cause overflow in the check below. */
- if (alignment > SIZE_MAX / 2 + 1)
- {
- __set_errno (EINVAL);
- return NULL;
- }
-
- /* Check for overflow. */
- if (bytes > SIZE_MAX - alignment - MINSIZE)
- {
- __set_errno (ENOMEM);
- return NULL;
- }
-
- /* Make sure alignment is power of 2. */
- if (!powerof2 (alignment))
- {
- size_t a = MALLOC_ALIGNMENT * 2;
- while (a < alignment)
- a <<= 1;
- alignment = a;
- }
-
- __libc_lock_lock (main_arena.mutex);
- top_check ();
- mem = _int_memalign (&main_arena, alignment, bytes + 1);
- __libc_lock_unlock (main_arena.mutex);
- return mem2mem_check (tag_new_usable (mem), bytes);
-}
-
-#if HAVE_TUNABLES
-static void
-TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp)
-{
- int32_t value = (int32_t) valp->numval;
- if (value != 0)
- __malloc_debug_enable (MALLOC_CHECK_HOOK);
-}
-#endif
-
-static bool
-initialize_malloc_check (void)
-{
- /* This is the copy of the malloc initializer that we pulled in along with
- malloc-check. This does not affect any of the libc malloc structures. */
- ptmalloc_init ();
-#if HAVE_TUNABLES
- TUNABLE_GET (check, int32_t, TUNABLE_CALLBACK (set_mallopt_check));
-#else
- const char *s = secure_getenv ("MALLOC_CHECK_");
- if (s && s[0] != '\0' && s[0] != '0')
- __malloc_debug_enable (MALLOC_CHECK_HOOK);
-#endif
- return __is_malloc_debug_enabled (MALLOC_CHECK_HOOK);
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new/malloc
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-malloc-hooks-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/file.list (nonexistent)
@@ -1,27 +0,0 @@
-glibc-2.36/NEWS
-glibc-2.36/bits/socket.h
-glibc-2.36/dlfcn/dlopen.c
-glibc-2.36/elf/Makefile
-glibc-2.36/elf/dl-cache.c
-glibc-2.36/elf/dl-open.c
-glibc-2.36/elf/rtld.c
-glibc-2.36/misc/syslog.c
-glibc-2.36/misc/tst-syslog.c
-glibc-2.36/scripts/glibcextract.py
-glibc-2.36/socket/Makefile
-glibc-2.36/sysdeps/mach/hurd/bits/socket.h
-glibc-2.36/sysdeps/unix/sysv/linux/Makefile
-glibc-2.36/sysdeps/unix/sysv/linux/alpha/brk_call.h
-glibc-2.36/sysdeps/unix/sysv/linux/bits/socket.h
-glibc-2.36/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
-glibc-2.36/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
-glibc-2.36/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h
-glibc-2.36/sysdeps/unix/sysv/linux/sys/mount.h
-glibc-2.36/sysdeps/unix/sysv/linux/syscall-names.list
-glibc-2.36/sysdeps/unix/sysv/linux/tst-mount-consts.py
-glibc-2.36/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
-glibc-2.36/sysdeps/unix/sysv/linux/tst-pidfd.c
-glibc-2.36/wcsmbs/Makefile
-glibc-2.36/wcsmbs/bits/wchar2.h
-glibc-2.36/wcsmbs/uchar.h
-glibc-2.36/wcsmbs/wchar.h
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-b3736d1a3c-2.36.1.patch
-
-mv glibc-$VERSION-b3736d1a3c-2.36.1.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts/glibcextract.py
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts/glibcextract.py (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts/glibcextract.py (nonexistent)
@@ -1,194 +0,0 @@
-#!/usr/bin/python3
-# Extract information from C headers.
-# Copyright (C) 2018-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-import collections
-import os.path
-import re
-import subprocess
-import tempfile
-
-
-def compute_c_consts(sym_data, cc):
- """Compute the values of some C constants.
-
- The first argument is a list whose elements are either strings
- (preprocessor directives, or the special string 'START' to
- indicate this function should insert its initial boilerplate text
- in the output there) or pairs of strings (a name and a C
- expression for the corresponding value). Preprocessor directives
- in the middle of the list may be used to select which constants
- end up being evaluated using which expressions.
-
- """
- out_lines = []
- for arg in sym_data:
- if isinstance(arg, str):
- if arg == 'START':
- out_lines.append('void\ndummy (void)\n{')
- else:
- out_lines.append(arg)
- continue
- name = arg[0]
- value = arg[1]
- out_lines.append('asm ("/* @@@name@@@%s@@@value@@@%%0@@@end@@@ */" '
- ': : \"i\" ((long int) (%s)));'
- % (name, value))
- out_lines.append('}')
- out_lines.append('')
- out_text = '\n'.join(out_lines)
- with tempfile.TemporaryDirectory() as temp_dir:
- c_file_name = os.path.join(temp_dir, 'test.c')
- s_file_name = os.path.join(temp_dir, 'test.s')
- with open(c_file_name, 'w') as c_file:
- c_file.write(out_text)
- # Compilation has to be from stdin to avoid the temporary file
- # name being written into the generated dependencies.
- cmd = ('%s -S -o %s -x c - < %s' % (cc, s_file_name, c_file_name))
- subprocess.check_call(cmd, shell=True)
- consts = {}
- with open(s_file_name, 'r') as s_file:
- for line in s_file:
- match = re.search('@@@name@@@([^@]*)'
- '@@@value@@@[^0-9Xxa-fA-F-]*'
- '([0-9Xxa-fA-F-]+).*@@@end@@@', line)
- if match:
- if (match.group(1) in consts
- and match.group(2) != consts[match.group(1)]):
- raise ValueError('duplicate constant %s'
- % match.group(1))
- consts[match.group(1)] = match.group(2)
- return consts
-
-
-def list_macros(source_text, cc):
- """List the preprocessor macros defined by the given source code.
-
- The return value is a pair of dicts, the first one mapping macro
- names to their expansions and the second one mapping macro names
- to lists of their arguments, or to None for object-like macros.
-
- """
- with tempfile.TemporaryDirectory() as temp_dir:
- c_file_name = os.path.join(temp_dir, 'test.c')
- i_file_name = os.path.join(temp_dir, 'test.i')
- with open(c_file_name, 'w') as c_file:
- c_file.write(source_text)
- cmd = ('%s -E -dM -o %s %s' % (cc, i_file_name, c_file_name))
- subprocess.check_call(cmd, shell=True)
- macros_exp = {}
- macros_args = {}
- with open(i_file_name, 'r') as i_file:
- for line in i_file:
- match = re.fullmatch('#define ([0-9A-Za-z_]+)(.*)\n', line)
- if not match:
- raise ValueError('bad -dM output line: %s' % line)
- name = match.group(1)
- value = match.group(2)
- if value.startswith(' '):
- value = value[1:]
- args = None
- elif value.startswith('('):
- match = re.fullmatch(r'\((.*?)\) (.*)', value)
- if not match:
- raise ValueError('bad -dM output line: %s' % line)
- args = match.group(1).split(',')
- value = match.group(2)
- else:
- raise ValueError('bad -dM output line: %s' % line)
- if name in macros_exp:
- raise ValueError('duplicate macro: %s' % line)
- macros_exp[name] = value
- macros_args[name] = args
- return macros_exp, macros_args
-
-
-def compute_macro_consts(source_text, cc, macro_re, exclude_re=None):
- """Compute the integer constant values of macros defined by source_text.
-
- Macros must match the regular expression macro_re, and if
- exclude_re is defined they must not match exclude_re. Values are
- computed with compute_c_consts.
-
- """
- macros_exp, macros_args = list_macros(source_text, cc)
- macros_set = {m for m in macros_exp
- if (macros_args[m] is None
- and re.fullmatch(macro_re, m)
- and (exclude_re is None
- or not re.fullmatch(exclude_re, m)))}
- sym_data = [source_text, 'START']
- sym_data.extend(sorted((m, m) for m in macros_set))
- return compute_c_consts(sym_data, cc)
-
-
-def compare_macro_consts(source_1, source_2, cc, macro_re, exclude_re=None,
- allow_extra_1=False, allow_extra_2=False):
- """Compare the values of macros defined by two different sources.
-
- The sources would typically be includes of a glibc header and a
- kernel header. If allow_extra_1, the first source may define
- extra macros (typically if the kernel headers are older than the
- version glibc has taken definitions from); if allow_extra_2, the
- second source may define extra macros (typically if the kernel
- headers are newer than the version glibc has taken definitions
- from). Return 1 if there were any differences other than those
- allowed, 0 if the macro values were the same apart from any
- allowed differences.
-
- """
- macros_1 = compute_macro_consts(source_1, cc, macro_re, exclude_re)
- macros_2 = compute_macro_consts(source_2, cc, macro_re, exclude_re)
- if macros_1 == macros_2:
- return 0
- print('First source:\n%s\n' % source_1)
- print('Second source:\n%s\n' % source_2)
- ret = 0
- for name, value in sorted(macros_1.items()):
- if name not in macros_2:
- print('Only in first source: %s' % name)
- if not allow_extra_1:
- ret = 1
- elif macros_1[name] != macros_2[name]:
- print('Different values for %s: %s != %s'
- % (name, macros_1[name], macros_2[name]))
- ret = 1
- for name in sorted(macros_2.keys()):
- if name not in macros_1:
- print('Only in second source: %s' % name)
- if not allow_extra_2:
- ret = 1
- return ret
-
-CompileResult = collections.namedtuple("CompileResult", "returncode output")
-
-def compile_c_snippet(snippet, cc, extra_cc_args=''):
- """Compile and return whether the SNIPPET can be build with CC along
- EXTRA_CC_ARGS compiler flags. Return a CompileResult with RETURNCODE
- being 0 for success, or the failure value and the compiler output.
- """
- with tempfile.TemporaryDirectory() as temp_dir:
- c_file_name = os.path.join(temp_dir, 'test.c')
- obj_file_name = os.path.join(temp_dir, 'test.o')
- with open(c_file_name, 'w') as c_file:
- c_file.write(snippet + '\n')
- cmd = cc.split() + extra_cc_args.split() + ['-c', '-o', obj_file_name,
- c_file_name]
- r = subprocess.run(cmd, check=False, stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- return CompileResult(r.returncode, r.stdout)
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/scripts
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h (nonexistent)
@@ -1,297 +0,0 @@
-/* AUTOGENERATED by update-syscall-lists.py. */
-#define __NR_accept 202
-#define __NR_accept4 242
-#define __NR_acct 89
-#define __NR_add_key 217
-#define __NR_bind 200
-#define __NR_bpf 280
-#define __NR_brk 214
-#define __NR_capget 90
-#define __NR_capset 91
-#define __NR_chdir 49
-#define __NR_chroot 51
-#define __NR_clock_adjtime64 405
-#define __NR_clock_getres_time64 406
-#define __NR_clock_gettime64 403
-#define __NR_clock_nanosleep_time64 407
-#define __NR_clock_settime64 404
-#define __NR_clone 220
-#define __NR_clone3 435
-#define __NR_close 57
-#define __NR_close_range 436
-#define __NR_connect 203
-#define __NR_copy_file_range 285
-#define __NR_delete_module 106
-#define __NR_dup 23
-#define __NR_dup3 24
-#define __NR_epoll_create1 20
-#define __NR_epoll_ctl 21
-#define __NR_epoll_pwait 22
-#define __NR_epoll_pwait2 441
-#define __NR_eventfd2 19
-#define __NR_execve 221
-#define __NR_execveat 281
-#define __NR_exit 93
-#define __NR_exit_group 94
-#define __NR_faccessat 48
-#define __NR_faccessat2 439
-#define __NR_fadvise64_64 223
-#define __NR_fallocate 47
-#define __NR_fanotify_init 262
-#define __NR_fanotify_mark 263
-#define __NR_fchdir 50
-#define __NR_fchmod 52
-#define __NR_fchmodat 53
-#define __NR_fchown 55
-#define __NR_fchownat 54
-#define __NR_fcntl64 25
-#define __NR_fdatasync 83
-#define __NR_fgetxattr 10
-#define __NR_finit_module 273
-#define __NR_flistxattr 13
-#define __NR_flock 32
-#define __NR_fremovexattr 16
-#define __NR_fsconfig 431
-#define __NR_fsetxattr 7
-#define __NR_fsmount 432
-#define __NR_fsopen 430
-#define __NR_fspick 433
-#define __NR_fstatfs64 44
-#define __NR_fsync 82
-#define __NR_ftruncate64 46
-#define __NR_futex_time64 422
-#define __NR_futex_waitv 449
-#define __NR_get_mempolicy 236
-#define __NR_get_robust_list 100
-#define __NR_getcpu 168
-#define __NR_getcwd 17
-#define __NR_getdents64 61
-#define __NR_getegid 177
-#define __NR_geteuid 175
-#define __NR_getgid 176
-#define __NR_getgroups 158
-#define __NR_getitimer 102
-#define __NR_getpeername 205
-#define __NR_getpgid 155
-#define __NR_getpid 172
-#define __NR_getppid 173
-#define __NR_getpriority 141
-#define __NR_getrandom 278
-#define __NR_getresgid 150
-#define __NR_getresuid 148
-#define __NR_getrusage 165
-#define __NR_getsid 156
-#define __NR_getsockname 204
-#define __NR_getsockopt 209
-#define __NR_gettid 178
-#define __NR_getuid 174
-#define __NR_getxattr 8
-#define __NR_init_module 105
-#define __NR_inotify_add_watch 27
-#define __NR_inotify_init1 26
-#define __NR_inotify_rm_watch 28
-#define __NR_io_cancel 3
-#define __NR_io_destroy 1
-#define __NR_io_pgetevents_time64 416
-#define __NR_io_setup 0
-#define __NR_io_submit 2
-#define __NR_io_uring_enter 426
-#define __NR_io_uring_register 427
-#define __NR_io_uring_setup 425
-#define __NR_ioctl 29
-#define __NR_ioprio_get 31
-#define __NR_ioprio_set 30
-#define __NR_kcmp 272
-#define __NR_kexec_file_load 294
-#define __NR_kexec_load 104
-#define __NR_keyctl 219
-#define __NR_kill 129
-#define __NR_landlock_add_rule 445
-#define __NR_landlock_create_ruleset 444
-#define __NR_landlock_restrict_self 446
-#define __NR_lgetxattr 9
-#define __NR_linkat 37
-#define __NR_listen 201
-#define __NR_listxattr 11
-#define __NR_llistxattr 12
-#define __NR_llseek 62
-#define __NR_lookup_dcookie 18
-#define __NR_lremovexattr 15
-#define __NR_lsetxattr 6
-#define __NR_madvise 233
-#define __NR_mbind 235
-#define __NR_membarrier 283
-#define __NR_memfd_create 279
-#define __NR_memfd_secret 447
-#define __NR_migrate_pages 238
-#define __NR_mincore 232
-#define __NR_mkdirat 34
-#define __NR_mknodat 33
-#define __NR_mlock 228
-#define __NR_mlock2 284
-#define __NR_mlockall 230
-#define __NR_mmap2 222
-#define __NR_mount 40
-#define __NR_mount_setattr 442
-#define __NR_move_mount 429
-#define __NR_move_pages 239
-#define __NR_mprotect 226
-#define __NR_mq_getsetattr 185
-#define __NR_mq_notify 184
-#define __NR_mq_open 180
-#define __NR_mq_timedreceive_time64 419
-#define __NR_mq_timedsend_time64 418
-#define __NR_mq_unlink 181
-#define __NR_mremap 216
-#define __NR_msgctl 187
-#define __NR_msgget 186
-#define __NR_msgrcv 188
-#define __NR_msgsnd 189
-#define __NR_msync 227
-#define __NR_munlock 229
-#define __NR_munlockall 231
-#define __NR_munmap 215
-#define __NR_name_to_handle_at 264
-#define __NR_nfsservctl 42
-#define __NR_open_by_handle_at 265
-#define __NR_open_tree 428
-#define __NR_openat 56
-#define __NR_openat2 437
-#define __NR_perf_event_open 241
-#define __NR_personality 92
-#define __NR_pidfd_getfd 438
-#define __NR_pidfd_open 434
-#define __NR_pidfd_send_signal 424
-#define __NR_pipe2 59
-#define __NR_pivot_root 41
-#define __NR_pkey_alloc 289
-#define __NR_pkey_free 290
-#define __NR_pkey_mprotect 288
-#define __NR_ppoll_time64 414
-#define __NR_prctl 167
-#define __NR_pread64 67
-#define __NR_preadv 69
-#define __NR_preadv2 286
-#define __NR_prlimit64 261
-#define __NR_process_madvise 440
-#define __NR_process_mrelease 448
-#define __NR_process_vm_readv 270
-#define __NR_process_vm_writev 271
-#define __NR_pselect6_time64 413
-#define __NR_ptrace 117
-#define __NR_pwrite64 68
-#define __NR_pwritev 70
-#define __NR_pwritev2 287
-#define __NR_quotactl 60
-#define __NR_quotactl_fd 443
-#define __NR_read 63
-#define __NR_readahead 213
-#define __NR_readlinkat 78
-#define __NR_readv 65
-#define __NR_reboot 142
-#define __NR_recvfrom 207
-#define __NR_recvmmsg_time64 417
-#define __NR_recvmsg 212
-#define __NR_remap_file_pages 234
-#define __NR_removexattr 14
-#define __NR_renameat2 276
-#define __NR_request_key 218
-#define __NR_restart_syscall 128
-#define __NR_riscv_flush_icache 259
-#define __NR_rseq 293
-#define __NR_rt_sigaction 134
-#define __NR_rt_sigpending 136
-#define __NR_rt_sigprocmask 135
-#define __NR_rt_sigqueueinfo 138
-#define __NR_rt_sigreturn 139
-#define __NR_rt_sigsuspend 133
-#define __NR_rt_sigtimedwait_time64 421
-#define __NR_rt_tgsigqueueinfo 240
-#define __NR_sched_get_priority_max 125
-#define __NR_sched_get_priority_min 126
-#define __NR_sched_getaffinity 123
-#define __NR_sched_getattr 275
-#define __NR_sched_getparam 121
-#define __NR_sched_getscheduler 120
-#define __NR_sched_rr_get_interval_time64 423
-#define __NR_sched_setaffinity 122
-#define __NR_sched_setattr 274
-#define __NR_sched_setparam 118
-#define __NR_sched_setscheduler 119
-#define __NR_sched_yield 124
-#define __NR_seccomp 277
-#define __NR_semctl 191
-#define __NR_semget 190
-#define __NR_semop 193
-#define __NR_semtimedop_time64 420
-#define __NR_sendfile64 71
-#define __NR_sendmmsg 269
-#define __NR_sendmsg 211
-#define __NR_sendto 206
-#define __NR_set_mempolicy 237
-#define __NR_set_mempolicy_home_node 450
-#define __NR_set_robust_list 99
-#define __NR_set_tid_address 96
-#define __NR_setdomainname 162
-#define __NR_setfsgid 152
-#define __NR_setfsuid 151
-#define __NR_setgid 144
-#define __NR_setgroups 159
-#define __NR_sethostname 161
-#define __NR_setitimer 103
-#define __NR_setns 268
-#define __NR_setpgid 154
-#define __NR_setpriority 140
-#define __NR_setregid 143
-#define __NR_setresgid 149
-#define __NR_setresuid 147
-#define __NR_setreuid 145
-#define __NR_setsid 157
-#define __NR_setsockopt 208
-#define __NR_setuid 146
-#define __NR_setxattr 5
-#define __NR_shmat 196
-#define __NR_shmctl 195
-#define __NR_shmdt 197
-#define __NR_shmget 194
-#define __NR_shutdown 210
-#define __NR_sigaltstack 132
-#define __NR_signalfd4 74
-#define __NR_socket 198
-#define __NR_socketpair 199
-#define __NR_splice 76
-#define __NR_statfs64 43
-#define __NR_statx 291
-#define __NR_swapoff 225
-#define __NR_swapon 224
-#define __NR_symlinkat 36
-#define __NR_sync 81
-#define __NR_sync_file_range 84
-#define __NR_syncfs 267
-#define __NR_sysinfo 179
-#define __NR_syslog 116
-#define __NR_tee 77
-#define __NR_tgkill 131
-#define __NR_timer_create 107
-#define __NR_timer_delete 111
-#define __NR_timer_getoverrun 109
-#define __NR_timer_gettime64 408
-#define __NR_timer_settime64 409
-#define __NR_timerfd_create 85
-#define __NR_timerfd_gettime64 410
-#define __NR_timerfd_settime64 411
-#define __NR_times 153
-#define __NR_tkill 130
-#define __NR_truncate64 45
-#define __NR_umask 166
-#define __NR_umount2 39
-#define __NR_uname 160
-#define __NR_unlinkat 35
-#define __NR_unshare 97
-#define __NR_userfaultfd 282
-#define __NR_utimensat_time64 412
-#define __NR_vhangup 58
-#define __NR_vmsplice 75
-#define __NR_waitid 95
-#define __NR_write 64
-#define __NR_writev 66
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32 (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32 (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv32
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h (nonexistent)
@@ -1,307 +0,0 @@
-/* AUTOGENERATED by update-syscall-lists.py. */
-#define __NR_accept 202
-#define __NR_accept4 242
-#define __NR_acct 89
-#define __NR_add_key 217
-#define __NR_adjtimex 171
-#define __NR_bind 200
-#define __NR_bpf 280
-#define __NR_brk 214
-#define __NR_capget 90
-#define __NR_capset 91
-#define __NR_chdir 49
-#define __NR_chroot 51
-#define __NR_clock_adjtime 266
-#define __NR_clock_getres 114
-#define __NR_clock_gettime 113
-#define __NR_clock_nanosleep 115
-#define __NR_clock_settime 112
-#define __NR_clone 220
-#define __NR_clone3 435
-#define __NR_close 57
-#define __NR_close_range 436
-#define __NR_connect 203
-#define __NR_copy_file_range 285
-#define __NR_delete_module 106
-#define __NR_dup 23
-#define __NR_dup3 24
-#define __NR_epoll_create1 20
-#define __NR_epoll_ctl 21
-#define __NR_epoll_pwait 22
-#define __NR_epoll_pwait2 441
-#define __NR_eventfd2 19
-#define __NR_execve 221
-#define __NR_execveat 281
-#define __NR_exit 93
-#define __NR_exit_group 94
-#define __NR_faccessat 48
-#define __NR_faccessat2 439
-#define __NR_fadvise64 223
-#define __NR_fallocate 47
-#define __NR_fanotify_init 262
-#define __NR_fanotify_mark 263
-#define __NR_fchdir 50
-#define __NR_fchmod 52
-#define __NR_fchmodat 53
-#define __NR_fchown 55
-#define __NR_fchownat 54
-#define __NR_fcntl 25
-#define __NR_fdatasync 83
-#define __NR_fgetxattr 10
-#define __NR_finit_module 273
-#define __NR_flistxattr 13
-#define __NR_flock 32
-#define __NR_fremovexattr 16
-#define __NR_fsconfig 431
-#define __NR_fsetxattr 7
-#define __NR_fsmount 432
-#define __NR_fsopen 430
-#define __NR_fspick 433
-#define __NR_fstat 80
-#define __NR_fstatfs 44
-#define __NR_fsync 82
-#define __NR_ftruncate 46
-#define __NR_futex 98
-#define __NR_futex_waitv 449
-#define __NR_get_mempolicy 236
-#define __NR_get_robust_list 100
-#define __NR_getcpu 168
-#define __NR_getcwd 17
-#define __NR_getdents64 61
-#define __NR_getegid 177
-#define __NR_geteuid 175
-#define __NR_getgid 176
-#define __NR_getgroups 158
-#define __NR_getitimer 102
-#define __NR_getpeername 205
-#define __NR_getpgid 155
-#define __NR_getpid 172
-#define __NR_getppid 173
-#define __NR_getpriority 141
-#define __NR_getrandom 278
-#define __NR_getresgid 150
-#define __NR_getresuid 148
-#define __NR_getrlimit 163
-#define __NR_getrusage 165
-#define __NR_getsid 156
-#define __NR_getsockname 204
-#define __NR_getsockopt 209
-#define __NR_gettid 178
-#define __NR_gettimeofday 169
-#define __NR_getuid 174
-#define __NR_getxattr 8
-#define __NR_init_module 105
-#define __NR_inotify_add_watch 27
-#define __NR_inotify_init1 26
-#define __NR_inotify_rm_watch 28
-#define __NR_io_cancel 3
-#define __NR_io_destroy 1
-#define __NR_io_getevents 4
-#define __NR_io_pgetevents 292
-#define __NR_io_setup 0
-#define __NR_io_submit 2
-#define __NR_io_uring_enter 426
-#define __NR_io_uring_register 427
-#define __NR_io_uring_setup 425
-#define __NR_ioctl 29
-#define __NR_ioprio_get 31
-#define __NR_ioprio_set 30
-#define __NR_kcmp 272
-#define __NR_kexec_file_load 294
-#define __NR_kexec_load 104
-#define __NR_keyctl 219
-#define __NR_kill 129
-#define __NR_landlock_add_rule 445
-#define __NR_landlock_create_ruleset 444
-#define __NR_landlock_restrict_self 446
-#define __NR_lgetxattr 9
-#define __NR_linkat 37
-#define __NR_listen 201
-#define __NR_listxattr 11
-#define __NR_llistxattr 12
-#define __NR_lookup_dcookie 18
-#define __NR_lremovexattr 15
-#define __NR_lseek 62
-#define __NR_lsetxattr 6
-#define __NR_madvise 233
-#define __NR_mbind 235
-#define __NR_membarrier 283
-#define __NR_memfd_create 279
-#define __NR_memfd_secret 447
-#define __NR_migrate_pages 238
-#define __NR_mincore 232
-#define __NR_mkdirat 34
-#define __NR_mknodat 33
-#define __NR_mlock 228
-#define __NR_mlock2 284
-#define __NR_mlockall 230
-#define __NR_mmap 222
-#define __NR_mount 40
-#define __NR_mount_setattr 442
-#define __NR_move_mount 429
-#define __NR_move_pages 239
-#define __NR_mprotect 226
-#define __NR_mq_getsetattr 185
-#define __NR_mq_notify 184
-#define __NR_mq_open 180
-#define __NR_mq_timedreceive 183
-#define __NR_mq_timedsend 182
-#define __NR_mq_unlink 181
-#define __NR_mremap 216
-#define __NR_msgctl 187
-#define __NR_msgget 186
-#define __NR_msgrcv 188
-#define __NR_msgsnd 189
-#define __NR_msync 227
-#define __NR_munlock 229
-#define __NR_munlockall 231
-#define __NR_munmap 215
-#define __NR_name_to_handle_at 264
-#define __NR_nanosleep 101
-#define __NR_newfstatat 79
-#define __NR_nfsservctl 42
-#define __NR_open_by_handle_at 265
-#define __NR_open_tree 428
-#define __NR_openat 56
-#define __NR_openat2 437
-#define __NR_perf_event_open 241
-#define __NR_personality 92
-#define __NR_pidfd_getfd 438
-#define __NR_pidfd_open 434
-#define __NR_pidfd_send_signal 424
-#define __NR_pipe2 59
-#define __NR_pivot_root 41
-#define __NR_pkey_alloc 289
-#define __NR_pkey_free 290
-#define __NR_pkey_mprotect 288
-#define __NR_ppoll 73
-#define __NR_prctl 167
-#define __NR_pread64 67
-#define __NR_preadv 69
-#define __NR_preadv2 286
-#define __NR_prlimit64 261
-#define __NR_process_madvise 440
-#define __NR_process_mrelease 448
-#define __NR_process_vm_readv 270
-#define __NR_process_vm_writev 271
-#define __NR_pselect6 72
-#define __NR_ptrace 117
-#define __NR_pwrite64 68
-#define __NR_pwritev 70
-#define __NR_pwritev2 287
-#define __NR_quotactl 60
-#define __NR_quotactl_fd 443
-#define __NR_read 63
-#define __NR_readahead 213
-#define __NR_readlinkat 78
-#define __NR_readv 65
-#define __NR_reboot 142
-#define __NR_recvfrom 207
-#define __NR_recvmmsg 243
-#define __NR_recvmsg 212
-#define __NR_remap_file_pages 234
-#define __NR_removexattr 14
-#define __NR_renameat2 276
-#define __NR_request_key 218
-#define __NR_restart_syscall 128
-#define __NR_riscv_flush_icache 259
-#define __NR_rseq 293
-#define __NR_rt_sigaction 134
-#define __NR_rt_sigpending 136
-#define __NR_rt_sigprocmask 135
-#define __NR_rt_sigqueueinfo 138
-#define __NR_rt_sigreturn 139
-#define __NR_rt_sigsuspend 133
-#define __NR_rt_sigtimedwait 137
-#define __NR_rt_tgsigqueueinfo 240
-#define __NR_sched_get_priority_max 125
-#define __NR_sched_get_priority_min 126
-#define __NR_sched_getaffinity 123
-#define __NR_sched_getattr 275
-#define __NR_sched_getparam 121
-#define __NR_sched_getscheduler 120
-#define __NR_sched_rr_get_interval 127
-#define __NR_sched_setaffinity 122
-#define __NR_sched_setattr 274
-#define __NR_sched_setparam 118
-#define __NR_sched_setscheduler 119
-#define __NR_sched_yield 124
-#define __NR_seccomp 277
-#define __NR_semctl 191
-#define __NR_semget 190
-#define __NR_semop 193
-#define __NR_semtimedop 192
-#define __NR_sendfile 71
-#define __NR_sendmmsg 269
-#define __NR_sendmsg 211
-#define __NR_sendto 206
-#define __NR_set_mempolicy 237
-#define __NR_set_mempolicy_home_node 450
-#define __NR_set_robust_list 99
-#define __NR_set_tid_address 96
-#define __NR_setdomainname 162
-#define __NR_setfsgid 152
-#define __NR_setfsuid 151
-#define __NR_setgid 144
-#define __NR_setgroups 159
-#define __NR_sethostname 161
-#define __NR_setitimer 103
-#define __NR_setns 268
-#define __NR_setpgid 154
-#define __NR_setpriority 140
-#define __NR_setregid 143
-#define __NR_setresgid 149
-#define __NR_setresuid 147
-#define __NR_setreuid 145
-#define __NR_setrlimit 164
-#define __NR_setsid 157
-#define __NR_setsockopt 208
-#define __NR_settimeofday 170
-#define __NR_setuid 146
-#define __NR_setxattr 5
-#define __NR_shmat 196
-#define __NR_shmctl 195
-#define __NR_shmdt 197
-#define __NR_shmget 194
-#define __NR_shutdown 210
-#define __NR_sigaltstack 132
-#define __NR_signalfd4 74
-#define __NR_socket 198
-#define __NR_socketpair 199
-#define __NR_splice 76
-#define __NR_statfs 43
-#define __NR_statx 291
-#define __NR_swapoff 225
-#define __NR_swapon 224
-#define __NR_symlinkat 36
-#define __NR_sync 81
-#define __NR_sync_file_range 84
-#define __NR_syncfs 267
-#define __NR_sysinfo 179
-#define __NR_syslog 116
-#define __NR_tee 77
-#define __NR_tgkill 131
-#define __NR_timer_create 107
-#define __NR_timer_delete 111
-#define __NR_timer_getoverrun 109
-#define __NR_timer_gettime 108
-#define __NR_timer_settime 110
-#define __NR_timerfd_create 85
-#define __NR_timerfd_gettime 87
-#define __NR_timerfd_settime 86
-#define __NR_times 153
-#define __NR_tkill 130
-#define __NR_truncate 45
-#define __NR_umask 166
-#define __NR_umount2 39
-#define __NR_uname 160
-#define __NR_unlinkat 35
-#define __NR_unshare 97
-#define __NR_userfaultfd 282
-#define __NR_utimensat 88
-#define __NR_vhangup 58
-#define __NR_vmsplice 75
-#define __NR_wait4 260
-#define __NR_waitid 95
-#define __NR_write 64
-#define __NR_writev 66
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64 (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64 (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv/rv64
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/riscv
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-pidfd-consts.py (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-pidfd-consts.py (nonexistent)
@@ -1,54 +0,0 @@
-#!/usr/bin/python3
-# Test that glibc's sys/pidfd.h constants match the kernel's.
-# Copyright (C) 2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-import argparse
-import sys
-
-import glibcextract
-import glibcsyscalls
-
-
-def main():
- """The main entry point."""
- parser = argparse.ArgumentParser(
- description="Test that glibc's sys/pidfd.h constants "
- "match the kernel's.")
- parser.add_argument('--cc', metavar='CC',
- help='C compiler (including options) to use')
- args = parser.parse_args()
-
- if glibcextract.compile_c_snippet(
- '#include <linux/pidfd.h>',
- args.cc).returncode != 0:
- sys.exit (77)
-
- linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
- linux_version_glibc = (5, 19)
- sys.exit(glibcextract.compare_macro_consts(
- '#include <sys/pidfd.h>\n',
- '#include <asm/fcntl.h>\n'
- '#include <linux/pidfd.h>\n',
- args.cc,
- 'PIDFD_.*',
- None,
- linux_version_glibc > linux_version_headers,
- linux_version_headers > linux_version_glibc))
-
-if __name__ == '__main__':
- main()
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-pidfd.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-pidfd.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-pidfd.c (nonexistent)
@@ -1,182 +0,0 @@
-/* Basic tests for Linux pidfd interfaces.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <support/capture_subprocess.h>
-#include <support/check.h>
-#include <support/process_state.h>
-#include <support/support.h>
-#include <support/xsignal.h>
-#include <support/xunistd.h>
-#include <support/xsocket.h>
-#include <sys/pidfd.h>
-#include <sys/wait.h>
-
-#define REMOTE_PATH "/dev/null"
-
-/* The pair of sockets used for coordination. The subprocess uses
- sockets[1]. */
-static int sockets[2];
-
-static pid_t ppid;
-static uid_t puid;
-
-static void
-sighandler (int sig)
-{
-}
-
-static void
-subprocess (void)
-{
- xsignal (SIGUSR1, sighandler);
- xsignal (SIGUSR2, sighandler);
-
- /* Check first pidfd_send_signal with default NULL siginfo_t argument. */
- {
- sigset_t set;
- sigemptyset (&set);
- sigaddset (&set, SIGUSR1);
- siginfo_t info;
- TEST_COMPARE (sigtimedwait (&set, &info, NULL), SIGUSR1);
- TEST_COMPARE (info.si_signo, SIGUSR1);
- TEST_COMPARE (info.si_errno, 0);
- TEST_COMPARE (info.si_code, SI_USER);
- TEST_COMPARE (info.si_pid, ppid);
- TEST_COMPARE (info.si_uid, puid);
- }
-
- /* Check second pidfd_send_signal with crafted siginfo_t argument. */
- {
- sigset_t set;
- sigemptyset (&set);
- sigaddset (&set, SIGUSR2);
- siginfo_t info;
- TEST_COMPARE (sigtimedwait (&set, &info, NULL), SIGUSR2);
- TEST_COMPARE (info.si_signo, SIGUSR2);
- TEST_COMPARE (info.si_errno, EAGAIN);
- TEST_COMPARE (info.si_code, -10);
- TEST_COMPARE (info.si_pid, ppid);
- TEST_COMPARE (info.si_uid, puid);
- }
-
- /* Send a local file descriptor value to check pidfd_getfd. */
- int remote_fd = xopen (REMOTE_PATH, O_WRONLY | O_CLOEXEC, 0);
- xsendto (sockets[1], &remote_fd, sizeof (remote_fd), 0, NULL, 0);
-
- /* Wait for final pidfd_send_signal. */
- pause ();
-
- _exit (0);
-}
-
-static int
-do_test (void)
-{
- {
- /* The pidfd_getfd syscall was the last in the set of pidfd related
- syscalls added to the kernel. Use pidfd_getfd to decide if this
- kernel has pidfd support that we can test. */
- int r = pidfd_getfd (0, 0, 1);
- TEST_VERIFY_EXIT (r == -1);
- if (errno == ENOSYS)
- FAIL_UNSUPPORTED ("kernel does not support pidfd_getfd, skipping test");
- }
-
- ppid = getpid ();
- puid = getuid ();
-
- TEST_COMPARE (socketpair (AF_UNIX, SOCK_STREAM, 0, sockets), 0);
-
- pid_t pid = xfork ();
- if (pid == 0)
- {
- xclose (sockets[0]);
- subprocess ();
- }
- xclose (sockets[1]);
-
- TEST_COMPARE (pidfd_open (-1, 0), -1);
- TEST_COMPARE (errno, EINVAL);
-
- int pidfd = pidfd_open (pid, 0);
- TEST_VERIFY (pidfd != -1);
-
- /* Wait for first sigtimedwait. */
- support_process_state_wait (pid, support_process_state_sleeping);
- TEST_COMPARE (pidfd_send_signal (pidfd, SIGUSR1, NULL, 0), 0);
-
- /* Wait for second sigtimedwait. */
- support_process_state_wait (pid, support_process_state_sleeping);
- {
- siginfo_t info =
- {
- .si_signo = SIGUSR2,
- .si_errno = EAGAIN,
- .si_code = -10,
- .si_pid = ppid,
- .si_uid = puid
- };
- TEST_COMPARE (pidfd_send_signal (pidfd, SIGUSR2, &info, 0), 0);
- }
-
- /* Get remote file descriptor to check for pidfd_getfd. */
- {
- int remote_fd;
- xrecvfrom (sockets[0], &remote_fd, sizeof (remote_fd), 0, NULL, 0);
-
- int fd = pidfd_getfd (pidfd, remote_fd, 0);
- /* pidfd_getfd may fail with EPERM if the process does not have
- PTRACE_MODE_ATTACH_REALCREDS permissions. This means the call
- may be denied if the process doesn't have CAP_SYS_PTRACE or
- if a LSM security_ptrace_access_check denies access. */
- if (fd == -1 && errno == EPERM)
- {
- TEST_COMPARE (pidfd_send_signal (pidfd, SIGKILL, NULL, 0), 0);
- FAIL_UNSUPPORTED ("don't have permission to use pidfd_getfd on pidfd, "
- "skipping test");
- }
- TEST_VERIFY (fd > 0);
-
- char *path = xasprintf ("/proc/%d/fd/%d", pid, remote_fd);
- char *resolved = xreadlink (path);
- TEST_COMPARE_STRING (resolved, REMOTE_PATH);
-
- int remote_fd_mode = fcntl (fd, F_GETFL);
- TEST_VERIFY (remote_fd_mode != -1);
- TEST_VERIFY (remote_fd_mode & O_WRONLY);
-
- int remote_fd_flags = fcntl (fd, F_GETFD);
- TEST_VERIFY (remote_fd_flags != -1);
- TEST_VERIFY (remote_fd_flags & FD_CLOEXEC);
- }
-
- TEST_COMPARE (pidfd_send_signal (pidfd, SIGKILL, NULL, 0), 0);
- {
- siginfo_t info;
- int r = waitid (P_PIDFD, pidfd, &info, WEXITED);
- TEST_COMPARE (r, 0);
- TEST_COMPARE (info.si_status, SIGKILL);
- TEST_COMPARE (info.si_code, CLD_KILLED);
- }
-
- return 0;
-}
-
-#include <support/test-driver.c>
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/syscall-names.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/syscall-names.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/syscall-names.list (nonexistent)
@@ -1,663 +0,0 @@
-# List of all known Linux system calls.
-# Copyright (C) 2017-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-# This file contains the list of system call names. It has to remain in
-# alphabetical order. Lines which start with # are treated as comments.
-# This file can list all potential system calls. The names are only
-# used if the installed kernel headers also provide them.
-
-# The list of system calls is current as of Linux 5.19.
-kernel 5.19
-
-FAST_atomic_update
-FAST_cmpxchg
-FAST_cmpxchg64
-_llseek
-_newselect
-_sysctl
-accept
-accept4
-access
-acct
-acl_get
-acl_set
-add_key
-adjtimex
-afs_syscall
-alarm
-alloc_hugepages
-arc_gettls
-arc_settls
-arc_usr_cmpxchg
-arch_prctl
-arm_fadvise64_64
-arm_sync_file_range
-atomic_barrier
-atomic_cmpxchg_32
-attrctl
-bdflush
-bind
-bpf
-break
-breakpoint
-brk
-cachectl
-cacheflush
-capget
-capset
-chdir
-chmod
-chown
-chown32
-chroot
-clock_adjtime
-clock_adjtime64
-clock_getres
-clock_getres_time64
-clock_gettime
-clock_gettime64
-clock_nanosleep
-clock_nanosleep_time64
-clock_settime
-clock_settime64
-clone
-clone2
-clone3
-close
-close_range
-cmpxchg_badaddr
-connect
-copy_file_range
-creat
-create_module
-delete_module
-dipc
-dup
-dup2
-dup3
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_ctl_old
-epoll_pwait
-epoll_pwait2
-epoll_wait
-epoll_wait_old
-eventfd
-eventfd2
-exec_with_loader
-execv
-execve
-execveat
-exit
-exit_group
-faccessat
-faccessat2
-fadvise64
-fadvise64_64
-fallocate
-fanotify_init
-fanotify_mark
-fchdir
-fchmod
-fchmodat
-fchown
-fchown32
-fchownat
-fcntl
-fcntl64
-fdatasync
-fgetxattr
-finit_module
-flistxattr
-flock
-fork
-fp_udfiex_crtl
-free_hugepages
-fremovexattr
-fsconfig
-fsetxattr
-fsmount
-fsopen
-fspick
-fstat
-fstat64
-fstatat64
-fstatfs
-fstatfs64
-fsync
-ftime
-ftruncate
-ftruncate64
-futex
-futex_time64
-futex_waitv
-futimesat
-get_kernel_syms
-get_mempolicy
-get_robust_list
-get_thread_area
-get_tls
-getcpu
-getcwd
-getdents
-getdents64
-getdomainname
-getdtablesize
-getegid
-getegid32
-geteuid
-geteuid32
-getgid
-getgid32
-getgroups
-getgroups32
-gethostname
-getitimer
-getpagesize
-getpeername
-getpgid
-getpgrp
-getpid
-getpmsg
-getppid
-getpriority
-getrandom
-getresgid
-getresgid32
-getresuid
-getresuid32
-getrlimit
-getrusage
-getsid
-getsockname
-getsockopt
-gettid
-gettimeofday
-getuid
-getuid32
-getunwind
-getxattr
-getxgid
-getxpid
-getxuid
-gtty
-idle
-init_module
-inotify_add_watch
-inotify_init
-inotify_init1
-inotify_rm_watch
-io_cancel
-io_destroy
-io_getevents
-io_pgetevents
-io_pgetevents_time64
-io_setup
-io_submit
-io_uring_enter
-io_uring_register
-io_uring_setup
-ioctl
-ioperm
-iopl
-ioprio_get
-ioprio_set
-ipc
-kcmp
-kern_features
-kexec_file_load
-kexec_load
-keyctl
-kill
-landlock_add_rule
-landlock_create_ruleset
-landlock_restrict_self
-lchown
-lchown32
-lgetxattr
-link
-linkat
-listen
-listxattr
-llistxattr
-llseek
-lock
-lookup_dcookie
-lremovexattr
-lseek
-lsetxattr
-lstat
-lstat64
-madvise
-mbind
-membarrier
-memfd_create
-memfd_secret
-memory_ordering
-migrate_pages
-mincore
-mkdir
-mkdirat
-mknod
-mknodat
-mlock
-mlock2
-mlockall
-mmap
-mmap2
-modify_ldt
-mount
-mount_setattr
-move_mount
-move_pages
-mprotect
-mpx
-mq_getsetattr
-mq_notify
-mq_open
-mq_timedreceive
-mq_timedreceive_time64
-mq_timedsend
-mq_timedsend_time64
-mq_unlink
-mremap
-msgctl
-msgget
-msgrcv
-msgsnd
-msync
-multiplexer
-munlock
-munlockall
-munmap
-name_to_handle_at
-nanosleep
-newfstatat
-nfsservctl
-ni_syscall
-nice
-old_adjtimex
-old_getpagesize
-oldfstat
-oldlstat
-oldolduname
-oldstat
-oldumount
-olduname
-open
-open_by_handle_at
-open_tree
-openat
-openat2
-or1k_atomic
-osf_adjtime
-osf_afs_syscall
-osf_alt_plock
-osf_alt_setsid
-osf_alt_sigpending
-osf_asynch_daemon
-osf_audcntl
-osf_audgen
-osf_chflags
-osf_execve
-osf_exportfs
-osf_fchflags
-osf_fdatasync
-osf_fpathconf
-osf_fstat
-osf_fstatfs
-osf_fstatfs64
-osf_fuser
-osf_getaddressconf
-osf_getdirentries
-osf_getdomainname
-osf_getfh
-osf_getfsstat
-osf_gethostid
-osf_getitimer
-osf_getlogin
-osf_getmnt
-osf_getrusage
-osf_getsysinfo
-osf_gettimeofday
-osf_kloadcall
-osf_kmodcall
-osf_lstat
-osf_memcntl
-osf_mincore
-osf_mount
-osf_mremap
-osf_msfs_syscall
-osf_msleep
-osf_mvalid
-osf_mwakeup
-osf_naccept
-osf_nfssvc
-osf_ngetpeername
-osf_ngetsockname
-osf_nrecvfrom
-osf_nrecvmsg
-osf_nsendmsg
-osf_ntp_adjtime
-osf_ntp_gettime
-osf_old_creat
-osf_old_fstat
-osf_old_getpgrp
-osf_old_killpg
-osf_old_lstat
-osf_old_open
-osf_old_sigaction
-osf_old_sigblock
-osf_old_sigreturn
-osf_old_sigsetmask
-osf_old_sigvec
-osf_old_stat
-osf_old_vadvise
-osf_old_vtrace
-osf_old_wait
-osf_oldquota
-osf_pathconf
-osf_pid_block
-osf_pid_unblock
-osf_plock
-osf_priocntlset
-osf_profil
-osf_proplist_syscall
-osf_reboot
-osf_revoke
-osf_sbrk
-osf_security
-osf_select
-osf_set_program_attributes
-osf_set_speculative
-osf_sethostid
-osf_setitimer
-osf_setlogin
-osf_setsysinfo
-osf_settimeofday
-osf_shmat
-osf_signal
-osf_sigprocmask
-osf_sigsendset
-osf_sigstack
-osf_sigwaitprim
-osf_sstk
-osf_stat
-osf_statfs
-osf_statfs64
-osf_subsys_info
-osf_swapctl
-osf_swapon
-osf_syscall
-osf_sysinfo
-osf_table
-osf_uadmin
-osf_usleep_thread
-osf_uswitch
-osf_utc_adjtime
-osf_utc_gettime
-osf_utimes
-osf_utsname
-osf_wait4
-osf_waitid
-pause
-pciconfig_iobase
-pciconfig_read
-pciconfig_write
-perf_event_open
-perfctr
-perfmonctl
-personality
-pidfd_getfd
-pidfd_open
-pidfd_send_signal
-pipe
-pipe2
-pivot_root
-pkey_alloc
-pkey_free
-pkey_mprotect
-poll
-ppoll
-ppoll_time64
-prctl
-pread64
-preadv
-preadv2
-prlimit64
-process_madvise
-process_mrelease
-process_vm_readv
-process_vm_writev
-prof
-profil
-pselect6
-pselect6_time64
-ptrace
-putpmsg
-pwrite64
-pwritev
-pwritev2
-query_module
-quotactl
-quotactl_fd
-read
-readahead
-readdir
-readlink
-readlinkat
-readv
-reboot
-recv
-recvfrom
-recvmmsg
-recvmmsg_time64
-recvmsg
-remap_file_pages
-removexattr
-rename
-renameat
-renameat2
-request_key
-restart_syscall
-riscv_flush_icache
-rmdir
-rseq
-rt_sigaction
-rt_sigpending
-rt_sigprocmask
-rt_sigqueueinfo
-rt_sigreturn
-rt_sigsuspend
-rt_sigtimedwait
-rt_sigtimedwait_time64
-rt_tgsigqueueinfo
-rtas
-s390_guarded_storage
-s390_pci_mmio_read
-s390_pci_mmio_write
-s390_runtime_instr
-s390_sthyi
-sched_get_affinity
-sched_get_priority_max
-sched_get_priority_min
-sched_getaffinity
-sched_getattr
-sched_getparam
-sched_getscheduler
-sched_rr_get_interval
-sched_rr_get_interval_time64
-sched_set_affinity
-sched_setaffinity
-sched_setattr
-sched_setparam
-sched_setscheduler
-sched_yield
-seccomp
-security
-select
-semctl
-semget
-semop
-semtimedop
-semtimedop_time64
-send
-sendfile
-sendfile64
-sendmmsg
-sendmsg
-sendto
-set_mempolicy
-set_mempolicy_home_node
-set_robust_list
-set_thread_area
-set_tid_address
-set_tls
-setdomainname
-setfsgid
-setfsgid32
-setfsuid
-setfsuid32
-setgid
-setgid32
-setgroups
-setgroups32
-sethae
-sethostname
-setitimer
-setns
-setpgid
-setpgrp
-setpriority
-setregid
-setregid32
-setresgid
-setresgid32
-setresuid
-setresuid32
-setreuid
-setreuid32
-setrlimit
-setsid
-setsockopt
-settimeofday
-setuid
-setuid32
-setxattr
-sgetmask
-shmat
-shmctl
-shmdt
-shmget
-shutdown
-sigaction
-sigaltstack
-signal
-signalfd
-signalfd4
-sigpending
-sigprocmask
-sigreturn
-sigsuspend
-socket
-socketcall
-socketpair
-splice
-spu_create
-spu_run
-ssetmask
-stat
-stat64
-statfs
-statfs64
-statx
-stime
-stty
-subpage_prot
-swapcontext
-swapoff
-swapon
-switch_endian
-symlink
-symlinkat
-sync
-sync_file_range
-sync_file_range2
-syncfs
-sys_debug_setcontext
-sys_epoll_create
-sys_epoll_ctl
-sys_epoll_wait
-syscall
-sysfs
-sysinfo
-syslog
-sysmips
-tee
-tgkill
-time
-timer_create
-timer_delete
-timer_getoverrun
-timer_gettime
-timer_gettime64
-timer_settime
-timer_settime64
-timerfd
-timerfd_create
-timerfd_gettime
-timerfd_gettime64
-timerfd_settime
-timerfd_settime64
-times
-tkill
-truncate
-truncate64
-tuxcall
-udftrap
-ugetrlimit
-ulimit
-umask
-umount
-umount2
-uname
-unlink
-unlinkat
-unshare
-uselib
-userfaultfd
-usr26
-usr32
-ustat
-utime
-utimensat
-utimensat_time64
-utimes
-utrap_install
-vfork
-vhangup
-vm86
-vm86old
-vmsplice
-vserver
-wait4
-waitid
-waitpid
-write
-writev
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-compile.py
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-compile.py (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-compile.py (nonexistent)
@@ -1,66 +0,0 @@
-#!/usr/bin/python3
-# Check if glibc provided sys/mount.h can be used along related kernel
-# headers.
-# Copyright (C) 2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-import argparse
-import sys
-
-import glibcextract
-
-
-def main():
- """The main entry point."""
- parser = argparse.ArgumentParser(
- description='Check if glibc provided sys/mount.h can be '
- ' used along related kernel headers.')
- parser.add_argument('--cc', metavar='CC',
- help='C compiler (including options) to use')
- args = parser.parse_args()
-
- if glibcextract.compile_c_snippet(
- '#include <linux/mount.h>',
- args.cc).returncode != 0:
- sys.exit (77)
-
- def check(testname, snippet):
- # Add -Werror to catch macro redefinitions and _ISOMAC to avoid
- # internal glibc definitions.
- r = glibcextract.compile_c_snippet(snippet, args.cc,
- '-Werror -D_ISOMAC')
- if r.returncode != 0:
- print('error: test {}:\n{}'.format(testname, r.output.decode()))
- return r.returncode
-
- status = max(
- check("sys/mount.h + linux/mount.h",
- "#include <sys/mount.h>\n"
- "#include <linux/mount.h>"),
- check("sys/mount.h + linux/fs.h",
- "#include <sys/mount.h>\n"
- "#include <linux/fs.h>"),
- check("linux/mount.h + sys/mount.h",
- "#include <linux/mount.h>\n"
- "#include <sys/mount.h>"),
- check("linux/fs.h + sys/mount.h",
- "#include <linux/fs.h>\n"
- "#include <sys/mount.h>"))
- sys.exit(status)
-
-if __name__ == '__main__':
- main()
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-consts.py
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-consts.py (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-consts.py (nonexistent)
@@ -1,70 +0,0 @@
-#!/usr/bin/python3
-# Test that glibc's sys/mount.h constants match the kernel's.
-# Copyright (C) 2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-import argparse
-import sys
-
-import glibcextract
-import glibcsyscalls
-
-
-def main():
- """The main entry point."""
- parser = argparse.ArgumentParser(
- description="Test that glibc's sys/mount.h constants "
- "match the kernel's.")
- parser.add_argument('--cc', metavar='CC',
- help='C compiler (including options) to use')
- args = parser.parse_args()
-
- if glibcextract.compile_c_snippet(
- '#include <linux/mount.h>',
- args.cc).returncode != 0:
- sys.exit (77)
-
- linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
- # Constants in glibc were updated to match Linux v5.16. When glibc
- # constants are updated this value should be updated to match the
- # released kernel version from which the constants were taken.
- linux_version_glibc = (5, 16)
- def check(cte, exclude=None):
- return glibcextract.compare_macro_consts(
- '#include <sys/mount.h>\n',
- '#include <asm/fcntl.h>\n'
- '#include <linux/mount.h>\n',
- args.cc,
- cte,
- exclude,
- linux_version_glibc > linux_version_headers,
- linux_version_headers > linux_version_glibc)
-
- # Skip testing FS_CONFIG commands since they are only enums in the kernel
- # header.
- status = max(
- check('FSOPEN_.*'),
- check('FSMOUNT_.*'),
- # MOVE_MOUNT__MASK may vary depending of the kernel version.
- check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK'),
- check('OPEN_TREE_*'),
- # MOUNT_ATTR_SIZE_VER0 is used for mount_setattr.
- check('MOUNT_ATTR_.*', 'MOUNT_ATTR_SIZE_VER0'))
- sys.exit(status)
-
-if __name__ == '__main__':
- main()
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/tst-mount-consts.py
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha/brk_call.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha/brk_call.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha/brk_call.h (nonexistent)
@@ -1,27 +0,0 @@
-/* Invoke the brk system call. Alpha version.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <https://www.gnu.org/licenses/>. */
-
-static inline void *
-__brk_call (void *addr)
-{
- unsigned long int result = INTERNAL_SYSCALL_CALL (brk, addr);
- if (result == -ENOMEM)
- /* Mimic the generic error reporting behavior. */
- result = INTERNAL_SYSCALL_CALL (brk, 0);
- return (void *) result;
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/alpha
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/cmsg_nxthdr.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/cmsg_nxthdr.c (nonexistent)
@@ -1,60 +0,0 @@
-/* Return point to next ancillary data entry in message header.
- Copyright (C) 1997-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <stddef.h>
-#include <sys/socket.h>
-
-
-struct cmsghdr *
-__cmsg_nxthdr (struct msghdr *mhdr, struct cmsghdr *cmsg)
-{
- /* We may safely assume that cmsg lies between mhdr->msg_control and
- mhdr->msg_controllen because the user is required to obtain the first
- cmsg via CMSG_FIRSTHDR, set its length, then obtain subsequent cmsgs
- via CMSG_NXTHDR, setting lengths along the way. However, we don't yet
- trust the value of cmsg->cmsg_len and therefore do not use it in any
- pointer arithmetic until we check its value. */
-
- unsigned char * msg_control_ptr = (unsigned char *) mhdr->msg_control;
- unsigned char * cmsg_ptr = (unsigned char *) cmsg;
-
- size_t size_needed = sizeof (struct cmsghdr)
- + __CMSG_PADDING (cmsg->cmsg_len);
-
- /* The current header is malformed, too small to be a full header. */
- if ((size_t) cmsg->cmsg_len < sizeof (struct cmsghdr))
- return (struct cmsghdr *) 0;
-
- /* There isn't enough space between cmsg and the end of the buffer to
- hold the current cmsg *and* the next one. */
- if (((size_t)
- (msg_control_ptr + mhdr->msg_controllen - cmsg_ptr)
- < size_needed)
- || ((size_t)
- (msg_control_ptr + mhdr->msg_controllen - cmsg_ptr
- - size_needed)
- < cmsg->cmsg_len))
-
- return (struct cmsghdr *) 0;
-
- /* Now, we trust cmsg_len and can use it to find the next header. */
- cmsg = (struct cmsghdr *) ((unsigned char *) cmsg
- + CMSG_ALIGN (cmsg->cmsg_len));
- return cmsg;
-}
-libc_hidden_def (__cmsg_nxthdr)
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits/socket.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits/socket.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits/socket.h (nonexistent)
@@ -1,398 +0,0 @@
-/* System-specific socket constants and types. Linux version.
- Copyright (C) 1991-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#ifndef __BITS_SOCKET_H
-#define __BITS_SOCKET_H
-
-#ifndef _SYS_SOCKET_H
-# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
-#endif
-
-#define __need_size_t
-#include <stddef.h>
-
-#include <sys/types.h>
-
-/* Type for length arguments in socket calls. */
-#ifndef __socklen_t_defined
-typedef __socklen_t socklen_t;
-# define __socklen_t_defined
-#endif
-
-/* Get the architecture-dependent definition of enum __socket_type. */
-#include <bits/socket_type.h>
-
-/* Protocol families. */
-#define PF_UNSPEC 0 /* Unspecified. */
-#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
-#define PF_UNIX PF_LOCAL /* POSIX name for PF_LOCAL. */
-#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
-#define PF_INET 2 /* IP protocol family. */
-#define PF_AX25 3 /* Amateur Radio AX.25. */
-#define PF_IPX 4 /* Novell Internet Protocol. */
-#define PF_APPLETALK 5 /* Appletalk DDP. */
-#define PF_NETROM 6 /* Amateur radio NetROM. */
-#define PF_BRIDGE 7 /* Multiprotocol bridge. */
-#define PF_ATMPVC 8 /* ATM PVCs. */
-#define PF_X25 9 /* Reserved for X.25 project. */
-#define PF_INET6 10 /* IP version 6. */
-#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
-#define PF_DECnet 12 /* Reserved for DECnet project. */
-#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
-#define PF_SECURITY 14 /* Security callback pseudo AF. */
-#define PF_KEY 15 /* PF_KEY key management API. */
-#define PF_NETLINK 16
-#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
-#define PF_PACKET 17 /* Packet family. */
-#define PF_ASH 18 /* Ash. */
-#define PF_ECONET 19 /* Acorn Econet. */
-#define PF_ATMSVC 20 /* ATM SVCs. */
-#define PF_RDS 21 /* RDS sockets. */
-#define PF_SNA 22 /* Linux SNA Project */
-#define PF_IRDA 23 /* IRDA sockets. */
-#define PF_PPPOX 24 /* PPPoX sockets. */
-#define PF_WANPIPE 25 /* Wanpipe API sockets. */
-#define PF_LLC 26 /* Linux LLC. */
-#define PF_IB 27 /* Native InfiniBand address. */
-#define PF_MPLS 28 /* MPLS. */
-#define PF_CAN 29 /* Controller Area Network. */
-#define PF_TIPC 30 /* TIPC sockets. */
-#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
-#define PF_IUCV 32 /* IUCV sockets. */
-#define PF_RXRPC 33 /* RxRPC sockets. */
-#define PF_ISDN 34 /* mISDN sockets. */
-#define PF_PHONET 35 /* Phonet sockets. */
-#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
-#define PF_CAIF 37 /* CAIF sockets. */
-#define PF_ALG 38 /* Algorithm sockets. */
-#define PF_NFC 39 /* NFC sockets. */
-#define PF_VSOCK 40 /* vSockets. */
-#define PF_KCM 41 /* Kernel Connection Multiplexor. */
-#define PF_QIPCRTR 42 /* Qualcomm IPC Router. */
-#define PF_SMC 43 /* SMC sockets. */
-#define PF_XDP 44 /* XDP sockets. */
-#define PF_MCTP 45 /* Management component transport protocol. */
-#define PF_MAX 46 /* For now.. */
-
-/* Address families. */
-#define AF_UNSPEC PF_UNSPEC
-#define AF_LOCAL PF_LOCAL
-#define AF_UNIX PF_UNIX
-#define AF_FILE PF_FILE
-#define AF_INET PF_INET
-#define AF_AX25 PF_AX25
-#define AF_IPX PF_IPX
-#define AF_APPLETALK PF_APPLETALK
-#define AF_NETROM PF_NETROM
-#define AF_BRIDGE PF_BRIDGE
-#define AF_ATMPVC PF_ATMPVC
-#define AF_X25 PF_X25
-#define AF_INET6 PF_INET6
-#define AF_ROSE PF_ROSE
-#define AF_DECnet PF_DECnet
-#define AF_NETBEUI PF_NETBEUI
-#define AF_SECURITY PF_SECURITY
-#define AF_KEY PF_KEY
-#define AF_NETLINK PF_NETLINK
-#define AF_ROUTE PF_ROUTE
-#define AF_PACKET PF_PACKET
-#define AF_ASH PF_ASH
-#define AF_ECONET PF_ECONET
-#define AF_ATMSVC PF_ATMSVC
-#define AF_RDS PF_RDS
-#define AF_SNA PF_SNA
-#define AF_IRDA PF_IRDA
-#define AF_PPPOX PF_PPPOX
-#define AF_WANPIPE PF_WANPIPE
-#define AF_LLC PF_LLC
-#define AF_IB PF_IB
-#define AF_MPLS PF_MPLS
-#define AF_CAN PF_CAN
-#define AF_TIPC PF_TIPC
-#define AF_BLUETOOTH PF_BLUETOOTH
-#define AF_IUCV PF_IUCV
-#define AF_RXRPC PF_RXRPC
-#define AF_ISDN PF_ISDN
-#define AF_PHONET PF_PHONET
-#define AF_IEEE802154 PF_IEEE802154
-#define AF_CAIF PF_CAIF
-#define AF_ALG PF_ALG
-#define AF_NFC PF_NFC
-#define AF_VSOCK PF_VSOCK
-#define AF_KCM PF_KCM
-#define AF_QIPCRTR PF_QIPCRTR
-#define AF_SMC PF_SMC
-#define AF_XDP PF_XDP
-#define AF_MCTP PF_MCTP
-#define AF_MAX PF_MAX
-
-/* Socket level values. Others are defined in the appropriate headers.
-
- XXX These definitions also should go into the appropriate headers as
- far as they are available. */
-#define SOL_RAW 255
-#define SOL_DECNET 261
-#define SOL_X25 262
-#define SOL_PACKET 263
-#define SOL_ATM 264 /* ATM layer (cell level). */
-#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */
-#define SOL_IRDA 266
-#define SOL_NETBEUI 267
-#define SOL_LLC 268
-#define SOL_DCCP 269
-#define SOL_NETLINK 270
-#define SOL_TIPC 271
-#define SOL_RXRPC 272
-#define SOL_PPPOL2TP 273
-#define SOL_BLUETOOTH 274
-#define SOL_PNPIPE 275
-#define SOL_RDS 276
-#define SOL_IUCV 277
-#define SOL_CAIF 278
-#define SOL_ALG 279
-#define SOL_NFC 280
-#define SOL_KCM 281
-#define SOL_TLS 282
-#define SOL_XDP 283
-#define SOL_MPTCP 284
-#define SOL_MCTP 285
-#define SOL_SMC 286
-
-/* Maximum queue length specifiable by listen. */
-#define SOMAXCONN 4096
-
-/* Get the definition of the macro to define the common sockaddr members. */
-#include <bits/sockaddr.h>
-
-/* Structure describing a generic socket address. */
-struct sockaddr
- {
- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
- char sa_data[14]; /* Address data. */
- };
-
-
-/* Structure large enough to hold any socket address (with the historical
- exception of AF_UNIX). */
-#define __ss_aligntype unsigned long int
-#define _SS_PADSIZE \
- (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
-
-struct sockaddr_storage
- {
- __SOCKADDR_COMMON (ss_); /* Address family, etc. */
- char __ss_padding[_SS_PADSIZE];
- __ss_aligntype __ss_align; /* Force desired alignment. */
- };
-
-
-/* Bits in the FLAGS argument to `send', `recv', et al. */
-enum
- {
- MSG_OOB = 0x01, /* Process out-of-band data. */
-#define MSG_OOB MSG_OOB
- MSG_PEEK = 0x02, /* Peek at incoming messages. */
-#define MSG_PEEK MSG_PEEK
- MSG_DONTROUTE = 0x04, /* Don't use local routing. */
-#define MSG_DONTROUTE MSG_DONTROUTE
-#ifdef __USE_GNU
- /* DECnet uses a different name. */
- MSG_TRYHARD = MSG_DONTROUTE,
-# define MSG_TRYHARD MSG_DONTROUTE
-#endif
- MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
-#define MSG_CTRUNC MSG_CTRUNC
- MSG_PROXY = 0x10, /* Supply or ask second address. */
-#define MSG_PROXY MSG_PROXY
- MSG_TRUNC = 0x20,
-#define MSG_TRUNC MSG_TRUNC
- MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
-#define MSG_DONTWAIT MSG_DONTWAIT
- MSG_EOR = 0x80, /* End of record. */
-#define MSG_EOR MSG_EOR
- MSG_WAITALL = 0x100, /* Wait for a full request. */
-#define MSG_WAITALL MSG_WAITALL
- MSG_FIN = 0x200,
-#define MSG_FIN MSG_FIN
- MSG_SYN = 0x400,
-#define MSG_SYN MSG_SYN
- MSG_CONFIRM = 0x800, /* Confirm path validity. */
-#define MSG_CONFIRM MSG_CONFIRM
- MSG_RST = 0x1000,
-#define MSG_RST MSG_RST
- MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
-#define MSG_ERRQUEUE MSG_ERRQUEUE
- MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
-#define MSG_NOSIGNAL MSG_NOSIGNAL
- MSG_MORE = 0x8000, /* Sender will send more. */
-#define MSG_MORE MSG_MORE
- MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/
-#define MSG_WAITFORONE MSG_WAITFORONE
- MSG_BATCH = 0x40000, /* sendmmsg: more messages coming. */
-#define MSG_BATCH MSG_BATCH
- MSG_ZEROCOPY = 0x4000000, /* Use user data in kernel path. */
-#define MSG_ZEROCOPY MSG_ZEROCOPY
- MSG_FASTOPEN = 0x20000000, /* Send data in TCP SYN. */
-#define MSG_FASTOPEN MSG_FASTOPEN
-
- MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
- descriptor received through
- SCM_RIGHTS. */
-#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
- };
-
-
-/* Structure describing messages sent by
- `sendmsg' and received by `recvmsg'. */
-struct msghdr
- {
- void *msg_name; /* Address to send to/receive from. */
- socklen_t msg_namelen; /* Length of address data. */
-
- struct iovec *msg_iov; /* Vector of data to send/receive into. */
- size_t msg_iovlen; /* Number of elements in the vector. */
-
- void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
- size_t msg_controllen; /* Ancillary data buffer length.
- !! The type should be socklen_t but the
- definition of the kernel is incompatible
- with this. */
-
- int msg_flags; /* Flags on received message. */
- };
-
-/* Structure used for storage of ancillary data object information. */
-struct cmsghdr
- {
- size_t cmsg_len; /* Length of data in cmsg_data plus length
- of cmsghdr structure.
- !! The type should be socklen_t but the
- definition of the kernel is incompatible
- with this. */
- int cmsg_level; /* Originating protocol. */
- int cmsg_type; /* Protocol specific type. */
-#if __glibc_c99_flexarr_available
- __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
-#endif
- };
-
-/* Ancillary data object manipulation macros. */
-#if __glibc_c99_flexarr_available
-# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
-#else
-# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
-#endif
-#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
-#define CMSG_FIRSTHDR(mhdr) \
- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
-#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
- & (size_t) ~(sizeof (size_t) - 1))
-#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
- + CMSG_ALIGN (sizeof (struct cmsghdr)))
-#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
-
-/* Given a length, return the additional padding necessary such that
- len + __CMSG_PADDING(len) == CMSG_ALIGN (len). */
-#define __CMSG_PADDING(len) ((sizeof (size_t) \
- - ((len) & (sizeof (size_t) - 1))) \
- & (sizeof (size_t) - 1))
-
-extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
- struct cmsghdr *__cmsg) __THROW;
-#ifdef __USE_EXTERN_INLINES
-# ifndef _EXTERN_INLINE
-# define _EXTERN_INLINE __extern_inline
-# endif
-_EXTERN_INLINE struct cmsghdr *
-__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
-{
- /* We may safely assume that __cmsg lies between __mhdr->msg_control and
- __mhdr->msg_controllen because the user is required to obtain the first
- cmsg via CMSG_FIRSTHDR, set its length, then obtain subsequent cmsgs
- via CMSG_NXTHDR, setting lengths along the way. However, we don't yet
- trust the value of __cmsg->cmsg_len and therefore do not use it in any
- pointer arithmetic until we check its value. */
-
- unsigned char * __msg_control_ptr = (unsigned char *) __mhdr->msg_control;
- unsigned char * __cmsg_ptr = (unsigned char *) __cmsg;
-
- size_t __size_needed = sizeof (struct cmsghdr)
- + __CMSG_PADDING (__cmsg->cmsg_len);
-
- /* The current header is malformed, too small to be a full header. */
- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
- return (struct cmsghdr *) 0;
-
- /* There isn't enough space between __cmsg and the end of the buffer to
- hold the current cmsg *and* the next one. */
- if (((size_t)
- (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr)
- < __size_needed)
- || ((size_t)
- (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr
- - __size_needed)
- < __cmsg->cmsg_len))
-
- return (struct cmsghdr *) 0;
-
- /* Now, we trust cmsg_len and can use it to find the next header. */
- __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
- + CMSG_ALIGN (__cmsg->cmsg_len));
- return __cmsg;
-}
-#endif /* Use `extern inline'. */
-
-/* Socket level message types. This must match the definitions in
- <linux/socket.h>. */
-enum
- {
- SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
-#define SCM_RIGHTS SCM_RIGHTS
-#ifdef __USE_GNU
- , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
-# define SCM_CREDENTIALS SCM_CREDENTIALS
-#endif
- };
-
-#ifdef __USE_GNU
-/* User visible structure for SCM_CREDENTIALS message */
-struct ucred
-{
- pid_t pid; /* PID of sending process. */
- uid_t uid; /* UID of sending process. */
- gid_t gid; /* GID of sending process. */
-};
-#endif
-
-#ifdef __USE_MISC
-# include <bits/types/time_t.h>
-# include <asm/socket.h>
-#else
-# define SO_DEBUG 1
-# include <bits/socket-constants.h>
-#endif
-
-/* Structure used to manipulate the SO_LINGER option. */
-struct linger
- {
- int l_onoff; /* Nonzero to linger on close. */
- int l_linger; /* Time to linger. */
- };
-
-#endif /* bits/socket.h */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/bits
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/Makefile (nonexistent)
@@ -1,427 +0,0 @@
-# Option to pass to Python scripts to set the C compiler. Rewriting
-# MODULE_NAME is required to enable the _ISOMAC verbatim header
-# environment.
-sysdeps-linux-python-cc = \
- --cc="$(CC) $(patsubst -DMODULE_NAME=%,-DMODULE_NAME=testsuite,$(CPPFLAGS))"
-
-# Additional dependencies for Python scripts.
-sysdeps-linux-python-deps = \
- $(..)sysdeps/unix/sysv/linux/glibcsyscalls.py \
- $(..)scripts/glibcextract.py
-
-# Invocation of the Python interpreter with the Python search path.
-sysdeps-linux-python = \
- PYTHONPATH=$(..)scripts:$(..)sysdeps/unix/sysv/linux $(PYTHON)
-
-ifndef subdir
-# This target performs two actions:
-#
-# Replace <arch-syscall.h> with a file generated from kernel headers
-# and <fixup-asm-unistd.h>. Both files are located via the sysdeps
-# override search path.
-#
-# Update sysdeps/unix/sysv/linux/syscall-names.list with additional
-# names found in the generated <arch-syscall.h> file, so that the
-# global system call names list is a superset of the
-# architecture-specific system call names.
-#
-# To bootstrap a new architecture, create an empty file in the right
-# place and run `make update-syscall-lists' from the top-level of a
-# configured, but not-yet-built glibc tree.
-#
-# --lock points to a file not replaced during the update operation, so
-# that mutual exclusion is achieved.
-.PHONY: update-syscall-lists
-update-syscall-lists: arch-syscall.h
- $(sysdeps-linux-python) \
- sysdeps/unix/sysv/linux/update-syscall-lists.py \
- $(sysdeps-linux-python-cc) \
- --lock=sysdeps/unix/sysv/linux/update-syscall-lists.py $< \
- sysdeps/unix/sysv/linux/syscall-names.list
-endif
-
-ifeq ($(subdir),csu)
-sysdep_routines += errno-loc
-endif
-
-ifeq ($(subdir),assert)
-CFLAGS-assert.c += -DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'
-CFLAGS-assert-perr.c += -DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'
-endif
-
-ifeq ($(subdir),malloc)
-CFLAGS-malloc.c += -DMORECORE_CLEARS=2
-endif
-
-ifeq ($(subdir),misc)
-sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
- setfsuid setfsgid epoll_pwait epoll_pwait2 signalfd \
- eventfd eventfd_read eventfd_write prlimit prlimit64 \
- personality epoll_wait tee vmsplice splice \
- open_by_handle_at mlock2 pkey_mprotect pkey_set pkey_get \
- timerfd_gettime timerfd_settime prctl \
- process_vm_readv process_vm_writev clock_adjtime \
- pselect32 \
- xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
- fxstatat fxstatat64 \
- xmknod xmknodat convert_scm_timestamps \
- closefrom_fallback \
- clone3 clone-internal \
- fanotify_mark \
- mremap \
-
-CFLAGS-gethostid.c = -fexceptions
-CFLAGS-tee.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-vmsplice.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-splice.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-open_by_handle_at.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sync_file_range.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pselect32.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=(0x80000000-sysconf(_SC_PAGESIZE))"
-
-sysdep_headers += sys/mount.h sys/acct.h \
- sys/klog.h \
- sys/user.h sys/prctl.h \
- sys/kd.h sys/soundcard.h sys/vt.h \
- sys/quota.h sys/fsuid.h \
- scsi/sg.h scsi/scsi.h scsi/scsi_ioctl.h sys/pci.h \
- sys/raw.h sys/personality.h sys/epoll.h \
- bits/a.out.h sys/inotify.h sys/signalfd.h sys/eventfd.h \
- sys/timerfd.h sys/fanotify.h bits/eventfd.h bits/inotify.h \
- bits/signalfd.h bits/timerfd.h bits/epoll.h \
- bits/socket_type.h bits/syscall.h \
- bits/mman-linux.h bits/mman-shared.h bits/ptrace-shared.h \
- bits/siginfo-arch.h bits/siginfo-consts-arch.h \
- bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
- bits/procfs-prregset.h bits/mman-map-flags-generic.h \
- bits/shmlba.h \
- bits/termios-struct.h bits/termios-c_cc.h \
- bits/termios-c_iflag.h bits/termios-c_oflag.h \
- bits/termios-baud.h bits/termios-c_cflag.h \
- bits/termios-c_lflag.h bits/termios-tcflow.h \
- bits/termios-misc.h \
- bits/types/struct_semid_ds.h \
- bits/types/struct_msqid_ds.h \
- bits/types/struct_shmid_ds.h \
- bits/ipc-perm.h \
- bits/struct_stat.h \
- bits/struct_stat_time64_helper.h \
- bits/types/struct_msqid64_ds.h \
- bits/types/struct_msqid64_ds_helper.h \
- bits/types/struct_semid64_ds.h \
- bits/types/struct_semid64_ds_helper.h \
- bits/types/struct_shmid64_ds.h \
- bits/types/struct_shmid64_ds_helper.h \
- bits/pthread_stack_min.h bits/pthread_stack_min-dynamic.h \
- sys/rseq.h bits/rseq.h \
- sys/pidfd.h
-
-tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
- tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
- test-errno-linux tst-memfd_create tst-mlock2 tst-pkey \
- tst-rlimit-infinity tst-ofdlocks tst-gettid tst-gettid-kill \
- tst-tgkill tst-sysvsem-linux tst-sysvmsg-linux tst-sysvshm-linux \
- tst-timerfd tst-ppoll \
- tst-clock_adjtime tst-adjtimex tst-ntp_adjtime tst-ntp_gettime \
- tst-ntp_gettimex tst-sigtimedwait tst-misalign-clone \
- tst-prctl \
- tst-scm_rights \
- tst-epoll \
- tst-getauxval \
- tst-pidfd \
- tst-process_mrelease \
- tst-mount \
- # tests
-
-# process_madvise requires CAP_SYS_ADMIN.
-xtests += \
- tst-process_madvise \
- # xtests
-
-# For +depfiles in Makerules.
-extra-test-objs += tst-sysconf-iov_max-uapi.o
-
-# Test for the symbol version of fcntl that was replaced in glibc 2.28.
-ifeq ($(have-GLIBC_2.27)$(build-shared),yesyes)
-tests += tst-ofdlocks-compat
-endif
-
-tests-internal += \
- tst-rseq \
- tst-sigcontext-get_pc \
- # tests-internal
-
-ifneq (no,$(have-tunables))
-tests-internal += \
- tst-rseq-disable \
- # tests-internal $(have-tunables)
-endif
-
-tests-time64 += \
- tst-adjtimex-time64 \
- tst-clock_adjtime-time64 \
- tst-epoll-time64 \
- tst-ntp_adjtime-time64 \
- tst-ntp_gettime-time64 \
- tst-ntp_gettimex-time64 \
- tst-ppoll-time64 \
- tst-sigtimedwait-time64 \
- tst-timerfd-time64 \
- tst-prctl-time64 \
- tst-scm_rights-time64 \
- # tests-time64
-
-tests-clone-internal = \
- tst-align-clone-internal \
- tst-clone2-internal \
- tst-clone3-internal \
- tst-getpid1-internal \
- tst-misalign-clone-internal
-tests-internal += $(tests-clone-internal)
-tests-static += $(tests-clone-internal)
-
-CFLAGS-tst-sigcontext-get_pc.c = -fasynchronous-unwind-tables
-
-# Generate the list of SYS_* macros for the system calls (__NR_*
-# macros). The file syscall-names.list contains all possible system
-# call names, and the generated header file produces SYS_* macros for
-# the __NR_* macros which are actually defined.
-
-generated += bits/syscall.h
-$(objpfx)bits/syscall.h: \
- ../sysdeps/unix/sysv/linux/gen-syscall-h.awk \
- ../sysdeps/unix/sysv/linux/syscall-names.list
- $(make-target-directory)
- LC_ALL=C $(AWK) -f $^ > $@-tmp
- $(move-if-change) $@-tmp $@
-before-compile += $(objpfx)bits/syscall.h
-
-# All macros defined by <sys/syscall.h>. Include <bits/syscall.h>
-# explicitly because <sys/sycall.h> skips it if _LIBC is defined.
-$(objpfx)tst-syscall-list-macros.list: \
- $(objpfx)bits/syscall.h ../sysdeps/unix/sysv/linux/sys/syscall.h
- printf '#include <linux/version.h>\n\
-#include <sys/syscall.h>\n#include <bits/syscall.h>\n' | \
- $(CC) -E -o $@-tmp $(CFLAGS) $(CPPFLAGS) -x c - -dM
- $(move-if-change) $@-tmp $@
-
-# __NR_* system call names. Used by the test below.
-$(objpfx)tst-syscall-list-nr.list: \
- ../sysdeps/unix/sysv/linux/filter-nr-syscalls.awk \
- $(objpfx)tst-syscall-list-macros.list
- LC_ALL=C $(AWK) -f $^ > $@-tmp
- $(move-if-change) $@-tmp $@
-
-# SYS_* system call names. Used by the test below.
-$(objpfx)tst-syscall-list-sys.list: $(objpfx)tst-syscall-list-macros.list
- LC_ALL=C $(AWK) '/^#define SYS_/ { print substr($$2, 5) }' $< > $@-tmp
- $(move-if-change) $@-tmp $@
-
-tests-special += $(objpfx)tst-syscall-list.out
-$(objpfx)tst-syscall-list.out: \
- ../sysdeps/unix/sysv/linux/tst-syscall-list.sh \
- $(objpfx)tst-syscall-list-macros.list \
- $(objpfx)tst-syscall-list-nr.list \
- $(objpfx)tst-syscall-list-sys.list
- $(BASH) $^ $(AWK) > $@; $(evaluate-test)
-
-tests-special += $(objpfx)tst-glibcsyscalls.out
-# arch-syscall.h is located via the sysdeps override search path.
-$(objpfx)tst-glibcsyscalls.out: arch-syscall.h \
- ../sysdeps/unix/sysv/linux/syscall-names.list
- $(sysdeps-linux-python) \
- ../sysdeps/unix/sysv/linux/tst-glibcsyscalls.py \
- $(sysdeps-linux-python-cc) $< \
- ../sysdeps/unix/sysv/linux/syscall-names.list \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-$(objpfx)tst-glibcsyscalls.out: \
- ../sysdeps/unix/sysv/linux/tst-glibcsyscalls.py \
- $(sysdeps-linux-python-deps)
-
-# Separate object file for access to the constant from the UAPI header.
-$(objpfx)tst-sysconf-iov_max: $(objpfx)tst-sysconf-iov_max-uapi.o
-
-tests-special += $(objpfx)tst-mman-consts.out
-$(objpfx)tst-mman-consts.out: ../sysdeps/unix/sysv/linux/tst-mman-consts.py
- $(sysdeps-linux-python) \
- ../sysdeps/unix/sysv/linux/tst-mman-consts.py \
- $(sysdeps-linux-python-cc) \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-$(objpfx)tst-mman-consts.out: $(sysdeps-linux-python-deps)
-
-tests-special += $(objpfx)tst-pidfd-consts.out
-$(objpfx)tst-pidfd-consts.out: ../sysdeps/unix/sysv/linux/tst-pidfd-consts.py
- $(sysdeps-linux-python) \
- ../sysdeps/unix/sysv/linux/tst-pidfd-consts.py \
- $(sysdeps-linux-python-cc) \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-$(objpfx)tst-pidfd-consts.out: $(sysdeps-linux-python-deps)
-
-tests-special += $(objpfx)tst-mount-consts.out
-$(objpfx)tst-mount-consts.out: ../sysdeps/unix/sysv/linux/tst-mount-consts.py
- $(sysdeps-linux-python) \
- ../sysdeps/unix/sysv/linux/tst-mount-consts.py \
- $(sysdeps-linux-python-cc) \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-$(objpfx)tst-mount-consts.out: $(sysdeps-linux-python-deps)
-
-tests-special += $(objpfx)tst-mount-compile.out
-$(objpfx)tst-mount-compile.out: ../sysdeps/unix/sysv/linux/tst-mount-compile.py
- $(sysdeps-linux-python) \
- ../sysdeps/unix/sysv/linux/tst-mount-compile.py \
- $(sysdeps-linux-python-cc) \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-$(objpfx)tst-mount-compile.out: $(sysdeps-linux-python-deps)
-
-tst-rseq-disable-ENV = GLIBC_TUNABLES=glibc.pthread.rseq=0
-
-endif # $(subdir) == misc
-
-ifeq ($(subdir),time)
-sysdep_headers += sys/timex.h bits/timex.h
-
-sysdep_routines += ntp_gettime ntp_gettimex
-
-tests += \
- tst-clock_gettime-clobber \
- tst-gettimeofday-clobber \
- tst-time-clobber \
- # tests
-endif
-
-ifeq ($(subdir),signal)
-tests-special += $(objpfx)tst-signal-numbers.out
-# Depending on signal.o* is a hack. What we actually want is a dependency
-# on signal.h and everything it includes. That's impractical to write
-# in this context, but signal.c includes signal.h and not much else so it'll
-# be conservatively correct.
-$(objpfx)tst-signal-numbers.out: \
- ../sysdeps/unix/sysv/linux/tst-signal-numbers.py \
- $(objpfx)signal.o*
- $(sysdeps-linux-python) \
- ../sysdeps/unix/sysv/linux/tst-signal-numbers.py \
- $(sysdeps-linux-python-cc) \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-$(objpfx)tst-signal-numbers.out: $(sysdeps-linux-python-deps)
-endif
-
-ifeq ($(subdir),socket)
-sysdep_headers += net/if_ppp.h net/ppp-comp.h \
- net/ppp_defs.h net/if_arp.h net/route.h net/ethernet.h \
- net/if_slip.h net/if_packet.h net/if_shaper.h \
- bits/socket-constants.h
-sysdep_routines += cmsg_nxthdr
-CFLAGS-recvmmsg.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendmmsg.c = -fexceptions -fasynchronous-unwind-tables
-
-tests += \
- tst-socket-timestamp \
- tst-socket-timestamp-compat \
- # tests
-tests-time64 += \
- tst-socket-timestamp-time64 \
- tst-socket-timestamp-compat-time64
- # tests-time64
-
-tests-special += $(objpfx)tst-socket-consts.out
-$(objpfx)tst-socket-consts.out: ../sysdeps/unix/sysv/linux/tst-socket-consts.py
- PYTHONPATH=../scripts \
- $(PYTHON) ../sysdeps/unix/sysv/linux/tst-socket-consts.py \
- --cc="$(CC) $(patsubst -DMODULE_NAME=%, \
- -DMODULE_NAME=testsuite, \
- $(CPPFLAGS)) -D_ISOMAC" \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-endif # $(subdir) == socket
-
-ifeq ($(subdir),sunrpc)
-sysdep_headers += nfs/nfs.h
-endif
-
-ifeq ($(subdir),termios)
-sysdep_headers += termio.h
-endif
-
-ifeq ($(subdir),posix)
-sysdep_headers += bits/initspin.h
-
-sysdep_routines += sched_getcpu oldglob getcpu
-
-tests += tst-affinity tst-affinity-pid
-
-tests-static := tst-affinity-static
-tests += $(tests-static)
-
-CFLAGS-fork.c = $(libio-mtsafe)
-CFLAGS-getpid.o = -fomit-frame-pointer
-CFLAGS-getpid.os = -fomit-frame-pointer
-endif
-
-ifeq ($(subdir),inet)
-sysdep_headers += netinet/if_fddi.h netinet/if_tr.h \
- netipx/ipx.h netash/ash.h netax25/ax25.h netatalk/at.h \
- netrom/netrom.h netpacket/packet.h netrose/rose.h \
- neteconet/ec.h netiucv/iucv.h
-sysdep_routines += netlink_assert_response
-endif
-
-# Don't compile the ctype glue code, since there is no old non-GNU C library.
-inhibit-glue = yes
-
-ifeq ($(subdir),dirent)
-sysdep_routines += getdirentries getdirentries64
-tests += \
- tst-getdents64 \
- tst-readdir64-compat \
- # tests
-endif # $(subdir) == dirent
-
-ifeq ($(subdir),nis)
-CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
-endif
-
-ifeq ($(subdir),io)
-sysdep_routines += xstatconv internal_statvfs \
- sync_file_range fallocate fallocate64 \
- close_nocancel fcntl_nocancel \
- open_nocancel open64_nocancel \
- openat_nocancel openat64_nocancel \
- read_nocancel pread64_nocancel \
- write_nocancel statx_cp stat_t64_cp
-
-sysdep_headers += bits/fcntl-linux.h
-
-tests += \
- tst-fallocate \
- tst-fallocate64 \
- tst-getcwd-smallbuff \
- tst-o_path-locks \
-# tests
-endif
-
-ifeq ($(subdir),elf)
-sysdep-rtld-routines += dl-brk dl-sbrk dl-getcwd dl-openat64 dl-opendir
-
-libof-lddlibc4 = lddlibc4
-
-others += pldd
-install-bin += pldd
-$(objpfx)pldd: $(objpfx)xmalloc.o
-endif
-
-ifeq ($(subdir),rt)
-CFLAGS-mq_send.c += -fexceptions
-CFLAGS-mq_receive.c += -fexceptions
-endif
-
-ifeq ($(subdir),nscd)
-sysdep-CFLAGS += -DHAVE_EPOLL -DHAVE_INOTIFY -DHAVE_NETLINK
-CFLAGS-gai.c += -DNEED_NETLINK
-endif
-
-ifeq ($(subdir),nptl)
-tests += tst-align-clone tst-getpid1
-
-# tst-rseq-nptl is an internal test because it requires a definition of
-# __NR_rseq from the internal system call list.
-tests-internal += tst-rseq-nptl
-endif
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys/mount.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys/mount.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys/mount.h (nonexistent)
@@ -1,322 +0,0 @@
-/* Header file for mounting/unmount Linux filesystems.
- Copyright (C) 1996-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-/* This is taken from /usr/include/linux/fs.h. */
-
-#ifndef _SYS_MOUNT_H
-#define _SYS_MOUNT_H 1
-
-#include <fcntl.h>
-#include <features.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <sys/ioctl.h>
-
-#ifdef __has_include
-# if __has_include ("linux/mount.h")
-# include "linux/mount.h"
-# endif
-#endif
-
-
-#define BLOCK_SIZE_BITS 10
-#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
-
-
-/* These are the fs-independent mount-flags: up to 16 flags are
- supported */
-enum
-{
-#undef MS_RDONLY
- MS_RDONLY = 1, /* Mount read-only. */
-#define MS_RDONLY MS_RDONLY
-#undef MS_NOSUID
- MS_NOSUID = 2, /* Ignore suid and sgid bits. */
-#define MS_NOSUID MS_NOSUID
-#undef MS_NODEV
- MS_NODEV = 4, /* Disallow access to device special files. */
-#define MS_NODEV MS_NODEV
-#undef MS_NOEXEC
- MS_NOEXEC = 8, /* Disallow program execution. */
-#define MS_NOEXEC MS_NOEXEC
-#undef MS_SYNCHRONOUS
- MS_SYNCHRONOUS = 16, /* Writes are synced at once. */
-#define MS_SYNCHRONOUS MS_SYNCHRONOUS
-#undef MS_REMOUNT
- MS_REMOUNT = 32, /* Alter flags of a mounted FS. */
-#define MS_REMOUNT MS_REMOUNT
-#undef MS_MANDLOCK
- MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
-#define MS_MANDLOCK MS_MANDLOCK
-#undef MS_DIRSYNC
- MS_DIRSYNC = 128, /* Directory modifications are synchronous. */
-#define MS_DIRSYNC MS_DIRSYNC
-#undef MS_NOSYMFOLLOW
- MS_NOSYMFOLLOW = 256, /* Do not follow symlinks. */
-#define MS_NOSYMFOLLOW MS_NOSYMFOLLOW
-#undef MS_NOATIME
- MS_NOATIME = 1024, /* Do not update access times. */
-#define MS_NOATIME MS_NOATIME
-#undef MS_NODIRATIME
- MS_NODIRATIME = 2048, /* Do not update directory access times. */
-#define MS_NODIRATIME MS_NODIRATIME
-#undef MS_BIND
- MS_BIND = 4096, /* Bind directory at different place. */
-#define MS_BIND MS_BIND
-#undef MS_MOVE
- MS_MOVE = 8192,
-#define MS_MOVE MS_MOVE
-#undef MS_REC
- MS_REC = 16384,
-#define MS_REC MS_REC
-#undef MS_SILENT
- MS_SILENT = 32768,
-#define MS_SILENT MS_SILENT
-#undef MS_POSIXACL
- MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */
-#define MS_POSIXACL MS_POSIXACL
-#undef MS_UNBINDABLE
- MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */
-#define MS_UNBINDABLE MS_UNBINDABLE
-#undef MS_PRIVATE
- MS_PRIVATE = 1 << 18, /* Change to private. */
-#define MS_PRIVATE MS_PRIVATE
-#undef MS_SLAVE
- MS_SLAVE = 1 << 19, /* Change to slave. */
-#define MS_SLAVE MS_SLAVE
-#undef MS_SHARED
- MS_SHARED = 1 << 20, /* Change to shared. */
-#define MS_SHARED MS_SHARED
-#undef MS_RELATIME
- MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */
-#define MS_RELATIME MS_RELATIME
-#undef MS_KERNMOUNT
- MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */
-#define MS_KERNMOUNT MS_KERNMOUNT
-#undef MS_I_VERSION
- MS_I_VERSION = 1 << 23, /* Update inode I_version field. */
-#define MS_I_VERSION MS_I_VERSION
-#undef MS_STRICTATIME
- MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */
-#define MS_STRICTATIME MS_STRICTATIME
-#undef MS_LAZYTIME
- MS_LAZYTIME = 1 << 25, /* Update the on-disk [acm]times lazily. */
-#define MS_LAZYTIME MS_LAZYTIME
-#undef MS_ACTIVE
- MS_ACTIVE = 1 << 30,
-#define MS_ACTIVE MS_ACTIVE
-#undef MS_NOUSER
- MS_NOUSER = 1 << 31
-#define MS_NOUSER MS_NOUSER
-};
-
-/* Flags that can be altered by MS_REMOUNT */
-#undef MS_RMT_MASK
-#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION \
- |MS_LAZYTIME)
-
-
-/* Magic mount flag number. Has to be or-ed to the flag values. */
-
-#undef MS_MGC_VAL
-#define MS_MGC_VAL 0xc0ed0000 /* Magic flag number to indicate "new" flags */
-#define MS_MGC_MSK 0xffff0000 /* Magic flag number mask */
-
-
-/* The read-only stuff doesn't really belong here, but any other place
- is probably as bad and I don't want to create yet another include
- file. */
-
-#undef BLKROSET
-#define BLKROSET _IO(0x12, 93) /* Set device read-only (0 = read-write). */
-#undef BLKROGET
-#define BLKROGET _IO(0x12, 94) /* Get read-only status (0 = read_write). */
-#undef BLKRRPART
-#define BLKRRPART _IO(0x12, 95) /* Re-read partition table. */
-#undef BLKGETSIZE
-#define BLKGETSIZE _IO(0x12, 96) /* Return device size. */
-#undef BLKFLSBUF
-#define BLKFLSBUF _IO(0x12, 97) /* Flush buffer cache. */
-#undef BLKRASET
-#define BLKRASET _IO(0x12, 98) /* Set read ahead for block device. */
-#undef BLKRAGET
-#define BLKRAGET _IO(0x12, 99) /* Get current read ahead setting. */
-#undef BLKFRASET
-#define BLKFRASET _IO(0x12,100) /* Set filesystem read-ahead. */
-#undef BLKFRAGET
-#define BLKFRAGET _IO(0x12,101) /* Get filesystem read-ahead. */
-#undef BLKSECTSET
-#define BLKSECTSET _IO(0x12,102) /* Set max sectors per request. */
-#undef BLKSECTGET
-#define BLKSECTGET _IO(0x12,103) /* Get max sectors per request. */
-#undef BLKSSZGET
-#define BLKSSZGET _IO(0x12,104) /* Get block device sector size. */
-#undef BLKBSZGET
-#define BLKBSZGET _IOR(0x12,112,size_t)
-#undef BLKBSZSET
-#define BLKBSZSET _IOW(0x12,113,size_t)
-#undef BLKGETSIZE64
-#define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size. */
-
-
-/* Possible value for FLAGS parameter of `umount2'. */
-enum
-{
- MNT_FORCE = 1, /* Force unmounting. */
-#define MNT_FORCE MNT_FORCE
- MNT_DETACH = 2, /* Just detach from the tree. */
-#define MNT_DETACH MNT_DETACH
- MNT_EXPIRE = 4, /* Mark for expiry. */
-#define MNT_EXPIRE MNT_EXPIRE
- UMOUNT_NOFOLLOW = 8 /* Don't follow symlink on umount. */
-#define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW
-};
-
-
-/* fsmount flags. */
-#define FSMOUNT_CLOEXEC 0x00000001
-
-/* mount attributes used on fsmount. */
-#define MOUNT_ATTR_RDONLY 0x00000001 /* Mount read-only. */
-#define MOUNT_ATTR_NOSUID 0x00000002 /* Ignore suid and sgid bits. */
-#define MOUNT_ATTR_NODEV 0x00000004 /* Disallow access to device special files. */
-#define MOUNT_ATTR_NOEXEC 0x00000008 /* Disallow program execution. */
-#define MOUNT_ATTR__ATIME 0x00000070 /* Setting on how atime should be updated. */
-#define MOUNT_ATTR_RELATIME 0x00000000 /* - Update atime relative to mtime/ctime. */
-#define MOUNT_ATTR_NOATIME 0x00000010 /* - Do not update access times. */
-#define MOUNT_ATTR_STRICTATIME 0x00000020 /* - Always perform atime updates */
-#define MOUNT_ATTR_NODIRATIME 0x00000080 /* Do not update directory access times. */
-#define MOUNT_ATTR_IDMAP 0x00100000 /* Idmap mount to @userns_fd in struct mount_attr. */
-#define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */
-
-
-#ifndef MOUNT_ATTR_SIZE_VER0
-/* For mount_setattr. */
-struct mount_attr
-{
- uint64_t attr_set;
- uint64_t attr_clr;
- uint64_t propagation;
- uint64_t userns_fd;
-};
-#endif
-
-#define MOUNT_ATTR_SIZE_VER0 32 /* sizeof first published struct */
-
-/* move_mount flags. */
-#define MOVE_MOUNT_F_SYMLINKS 0x00000001 /* Follow symlinks on from path */
-#define MOVE_MOUNT_F_AUTOMOUNTS 0x00000002 /* Follow automounts on from path */
-#define MOVE_MOUNT_F_EMPTY_PATH 0x00000004 /* Empty from path permitted */
-#define MOVE_MOUNT_T_SYMLINKS 0x00000010 /* Follow symlinks on to path */
-#define MOVE_MOUNT_T_AUTOMOUNTS 0x00000020 /* Follow automounts on to path */
-#define MOVE_MOUNT_T_EMPTY_PATH 0x00000040 /* Empty to path permitted */
-#define MOVE_MOUNT_SET_GROUP 0x00000100 /* Set sharing group instead */
-
-
-/* fspick flags. */
-#define FSPICK_CLOEXEC 0x00000001
-#define FSPICK_SYMLINK_NOFOLLOW 0x00000002
-#define FSPICK_NO_AUTOMOUNT 0x00000004
-#define FSPICK_EMPTY_PATH 0x00000008
-
-
-#ifndef FSOPEN_CLOEXEC
-/* The type of fsconfig call made. */
-enum fsconfig_command
-{
- FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
-# define FSCONFIG_SET_FLAG FSCONFIG_SET_FLAG
- FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
-# define FSCONFIG_SET_STRING FSCONFIG_SET_STRING
- FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
-# define FSCONFIG_SET_BINARY FSCONFIG_SET_BINARY
- FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
-# define FSCONFIG_SET_PATH FSCONFIG_SET_PATH
- FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
-# define FSCONFIG_SET_PATH_EMPTY FSCONFIG_SET_PATH_EMPTY
- FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
-# define FSCONFIG_SET_FD FSCONFIG_SET_FD
- FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
-# define FSCONFIG_CMD_CREATE FSCONFIG_CMD_CREATE
- FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
-# define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE
-};
-#endif
-
-/* fsopen flags. */
-#define FSOPEN_CLOEXEC 0x00000001
-
-/* open_tree flags. */
-#define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */
-#define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */
-
-
-__BEGIN_DECLS
-
-/* Mount a filesystem. */
-extern int mount (const char *__special_file, const char *__dir,
- const char *__fstype, unsigned long int __rwflag,
- const void *__data) __THROW;
-
-/* Unmount a filesystem. */
-extern int umount (const char *__special_file) __THROW;
-
-/* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */
-extern int umount2 (const char *__special_file, int __flags) __THROW;
-
-/* Open the filesystem referenced by FS_NAME so it can be configured for
- mouting. */
-extern int fsopen (const char *__fs_name, unsigned int __flags) __THROW;
-
-/* Create a mount representation for the FD created by fsopen using
- FLAGS with ATTR_FLAGS describing how the mount is to be performed. */
-extern int fsmount (int __fd, unsigned int __flags,
- unsigned int __ms_flags) __THROW;
-
-/* Add the mounted FROM_DFD referenced by FROM_PATHNAME filesystem returned
- by fsmount in the hierarchy in the place TO_DFD reference by TO_PATHNAME
- using FLAGS. */
-extern int move_mount (int __from_dfd, const char *__from_pathname,
- int __to_dfd, const char *__to_pathname,
- unsigned int flags) __THROW;
-
-/* Set parameters and trigger CMD action on the FD context. KEY, VALUE,
- and AUX are used depending ng of the CMD. */
-extern int fsconfig (int __fd, unsigned int __cmd, const char *__key,
- const void *__value, int __aux) __THROW;
-
-/* Equivalent of fopen for an existing mount point. */
-extern int fspick (int __dfd, const char *__path, unsigned int __flags)
- __THROW;
-
-/* Open the mount point FILENAME in directory DFD using FLAGS. */
-extern int open_tree (int __dfd, const char *__filename, unsigned int __flags)
- __THROW;
-
-/* Change the mount properties of the mount or an entire mount tree. If
- PATH is a relative pathname, then it is interpreted relative to the
- directory referred to by the file descriptor dirfd. Otherwise if DFD is
- the special value AT_FDCWD then PATH is interpreted relative to the current
- working directory of the calling process. */
-extern int mount_setattr (int __dfd, const char *__path, unsigned int __flags,
- struct mount_attr *__uattr, size_t __usize)
- __THROW;
-
-__END_DECLS
-
-#endif /* _SYS_MOUNT_H */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux/sys
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv/linux
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix/sysv
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/unix
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits/socket.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits/socket.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits/socket.h (nonexistent)
@@ -1,395 +0,0 @@
-/* System-specific socket constants and types. Hurd version.
- Copyright (C) 1991-2022 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
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; see the file COPYING.LIB. If
- not, see <https://www.gnu.org/licenses/>. */
-
-#ifndef __BITS_SOCKET_H
-#define __BITS_SOCKET_H 1
-
-#ifndef _SYS_SOCKET_H
-# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
-#endif
-
-#define __need_size_t
-#include <stddef.h>
-
-#include <bits/wordsize.h>
-#include <sys/types.h>
-
-/* Type for length arguments in socket calls. */
-#ifndef __socklen_t_defined
-typedef __socklen_t socklen_t;
-# define __socklen_t_defined
-#endif
-
-
-/* Types of sockets. */
-enum __socket_type
-{
- SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
- byte streams. */
-#define SOCK_STREAM SOCK_STREAM
- SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
- of fixed maximum length. */
-#define SOCK_DGRAM SOCK_DGRAM
- SOCK_RAW = 3, /* Raw protocol interface. */
-#define SOCK_RAW SOCK_RAW
- SOCK_RDM = 4, /* Reliably-delivered messages. */
-#define SOCK_RDM SOCK_RDM
- SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
- datagrams of fixed maximum length. */
-#define SOCK_SEQPACKET SOCK_SEQPACKET
-
-#define SOCK_MAX (SOCK_SEQPACKET + 1)
- /* Mask which covers at least up to SOCK_MASK-1. The
- remaining bits are used as flags. */
-#define SOCK_TYPE_MASK 0xf
-
- /* Flags to be ORed into the type parameter of socket and socketpair and
- used for the flags parameter of accept4. */
-
- SOCK_CLOEXEC = 0x00400000, /* Atomically set close-on-exec flag for the
- new descriptor(s). */
-#define SOCK_CLOEXEC SOCK_CLOEXEC
-
- /* Changed from the O_NONBLOCK value (0x8, which is unusable for us as it is
- conflicting with the original SOCK_* flags' values) to the Linux value
- (04000). TODO: is there a ``better'' value? */
- SOCK_NONBLOCK = 0x0800 /* Atomically mark descriptor(s) as
- non-blocking. */
-#define SOCK_NONBLOCK SOCK_NONBLOCK
-};
-
-/* Protocol families. */
-#define PF_UNSPEC 0 /* Unspecified. */
-#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
-#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
-#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */
-#define PF_INET 2 /* IP protocol family. */
-#define PF_IMPLINK 3 /* ARPAnet IMP protocol. */
-#define PF_PUP 4 /* PUP protocols. */
-#define PF_CHAOS 5 /* MIT Chaos protocols. */
-#define PF_NS 6 /* Xerox NS protocols. */
-#define PF_ISO 7 /* ISO protocols. */
-#define PF_OSI PF_ISO
-#define PF_ECMA 8 /* ECMA protocols. */
-#define PF_DATAKIT 9 /* AT&T Datakit protocols. */
-#define PF_CCITT 10 /* CCITT protocols (X.25 et al). */
-#define PF_SNA 11 /* IBM SNA protocol. */
-#define PF_DECnet 12 /* DECnet protocols. */
-#define PF_DLI 13 /* Direct data link interface. */
-#define PF_LAT 14 /* DEC Local Area Transport protocol. */
-#define PF_HYLINK 15 /* NSC Hyperchannel protocol. */
-#define PF_APPLETALK 16 /* Don't use this. */
-#define PF_ROUTE 17 /* Internal Routing Protocol. */
-#define PF_LINK 18 /* Link layer interface. */
-#define PF_XTP 19 /* eXpress Transfer Protocol (no AF). */
-#define PF_COIP 20 /* Connection-oriented IP, aka ST II. */
-#define PF_CNT 21 /* Computer Network Technology. */
-#define PF_RTIP 22 /* Help Identify RTIP packets. **/
-#define PF_IPX 23 /* Novell Internet Protocol. */
-#define PF_SIP 24 /* Simple Internet Protocol. */
-#define PF_PIP 25 /* Help Identify PIP packets. */
-#define PF_INET6 26 /* IP version 6. */
-#define PF_MAX 27
-
-/* Address families. */
-#define AF_UNSPEC PF_UNSPEC
-#define AF_LOCAL PF_LOCAL
-#define AF_UNIX PF_UNIX
-#define AF_FILE PF_FILE
-#define AF_INET PF_INET
-#define AF_IMPLINK PF_IMPLINK
-#define AF_PUP PF_PUP
-#define AF_CHAOS PF_CHAOS
-#define AF_NS PF_NS
-#define AF_ISO PF_ISO
-#define AF_OSI PF_OSI
-#define AF_ECMA PF_ECMA
-#define AF_DATAKIT PF_DATAKIT
-#define AF_CCITT PF_CCITT
-#define AF_SNA PF_SNA
-#define AF_DECnet PF_DECnet
-#define AF_DLI PF_DLI
-#define AF_LAT PF_LAT
-#define AF_HYLINK PF_HYLINK
-#define AF_APPLETALK PF_APPLETALK
-#define AF_ROUTE PF_ROUTE
-#define AF_LINK PF_LINK
-#ifdef __USE_MISC
-# define pseudo_AF_XTP PF_XTP
-#endif
-#define AF_COIP PF_COIP
-#define AF_CNT PF_CNT
-#ifdef __USE_MISC
-# define pseudo_AF_RTIP PF_RTIP
-#endif
-#define AF_IPX PF_IPX
-#define AF_SIP PF_SIP
-#ifdef __USE_MISC
-# define pseudo_AF_PIP PF_PIP
-#endif
-#define AF_INET6 PF_INET6
-#define AF_MAX PF_MAX
-
-/* Maximum queue length specifiable by listen. */
-#define SOMAXCONN 128 /* 5 on the origional 4.4 BSD. */
-
-/* Get the definition of the macro to define the common sockaddr members. */
-#include <bits/sockaddr.h>
-
-/* Structure describing a generic socket address. */
-struct sockaddr
- {
- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
- char sa_data[14]; /* Address data. */
- };
-
-
-/* Structure large enough to hold any socket address (with the historical
- exception of AF_UNIX). */
-#if __WORDSIZE == 64
-# define __ss_aligntype __uint64_t
-#else
-# define __ss_aligntype __uint32_t
-#endif
-#define _SS_PADSIZE \
- (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
-
-struct sockaddr_storage
- {
- __SOCKADDR_COMMON (ss_); /* Address family, etc. */
- char __ss_padding[_SS_PADSIZE];
- __ss_aligntype __ss_align; /* Force desired alignment. */
- };
-
-
-/* Bits in the FLAGS argument to `send', `recv', et al. */
-enum
- {
- MSG_OOB = 0x01, /* Process out-of-band data. */
-#define MSG_OOB MSG_OOB
- MSG_PEEK = 0x02, /* Peek at incoming messages. */
-#define MSG_PEEK MSG_PEEK
- MSG_DONTROUTE = 0x04, /* Don't use local routing. */
-#define MSG_DONTROUTE MSG_DONTROUTE
- MSG_EOR = 0x08, /* Data completes record. */
-#define MSG_EOR MSG_EOR
- MSG_TRUNC = 0x10, /* Data discarded before delivery. */
-#define MSG_TRUNC MSG_TRUNC
- MSG_CTRUNC = 0x20, /* Control data lost before delivery. */
-#define MSG_CTRUNC MSG_CTRUNC
- MSG_WAITALL = 0x40, /* Wait for full request or error. */
-#define MSG_WAITALL MSG_WAITALL
- MSG_DONTWAIT = 0x80, /* This message should be nonblocking. */
-#define MSG_DONTWAIT MSG_DONTWAIT
- MSG_NOSIGNAL = 0x0400 /* Do not generate SIGPIPE on EPIPE. */
-#define MSG_NOSIGNAL MSG_NOSIGNAL
- };
-
-
-/* Structure describing messages sent by
- `sendmsg' and received by `recvmsg'. */
-struct msghdr
- {
- void *msg_name; /* Address to send to/receive from. */
- socklen_t msg_namelen; /* Length of address data. */
-
- struct iovec *msg_iov; /* Vector of data to send/receive into. */
- int msg_iovlen; /* Number of elements in the vector. */
-
- void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
- socklen_t msg_controllen; /* Ancillary data buffer length. */
-
- int msg_flags; /* Flags in received message. */
- };
-
-/* Structure used for storage of ancillary data object information. */
-struct cmsghdr
- {
- socklen_t cmsg_len; /* Length of data in cmsg_data plus length
- of cmsghdr structure. */
- int cmsg_level; /* Originating protocol. */
- int cmsg_type; /* Protocol specific type. */
-#if __glibc_c99_flexarr_available
- __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
-#endif
- };
-
-/* Ancillary data object manipulation macros. */
-#if __glibc_c99_flexarr_available
-# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
-#else
-# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
-#endif
-
-#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
-
-#define CMSG_FIRSTHDR(mhdr) \
- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
-
-#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
- & (size_t) ~(sizeof (size_t) - 1))
-#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
- + CMSG_ALIGN (sizeof (struct cmsghdr)))
-#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
-
-/* Given a length, return the additional padding necessary such that
- len + __CMSG_PADDING(len) == CMSG_ALIGN (len). */
-#define __CMSG_PADDING(len) ((sizeof (size_t) \
- - ((len) & (sizeof (size_t) - 1))) \
- & (sizeof (size_t) - 1))
-
-extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
- struct cmsghdr *__cmsg) __THROW;
-#ifdef __USE_EXTERN_INLINES
-# ifndef _EXTERN_INLINE
-# define _EXTERN_INLINE __extern_inline
-# endif
-_EXTERN_INLINE struct cmsghdr *
-__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
-{
- /* We may safely assume that __cmsg lies between __mhdr->msg_control and
- __mhdr->msg_controllen because the user is required to obtain the first
- cmsg via CMSG_FIRSTHDR, set its length, then obtain subsequent cmsgs
- via CMSG_NXTHDR, setting lengths along the way. However, we don't yet
- trust the value of __cmsg->cmsg_len and therefore do not use it in any
- pointer arithmetic until we check its value. */
-
- unsigned char * __msg_control_ptr = (unsigned char *) __mhdr->msg_control;
- unsigned char * __cmsg_ptr = (unsigned char *) __cmsg;
-
- size_t __size_needed = sizeof (struct cmsghdr)
- + __CMSG_PADDING (__cmsg->cmsg_len);
-
- /* The current header is malformed, too small to be a full header. */
- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
- return (struct cmsghdr *) 0;
-
- /* There isn't enough space between __cmsg and the end of the buffer to
- hold the current cmsg *and* the next one. */
- if (((size_t)
- (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr)
- < __size_needed)
- || ((size_t)
- (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr
- - __size_needed)
- < __cmsg->cmsg_len))
-
- return (struct cmsghdr *) 0;
-
- /* Now, we trust cmsg_len and can use it to find the next header. */
- __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
- + CMSG_ALIGN (__cmsg->cmsg_len));
- return __cmsg;
-}
-#endif /* Use `extern inline'. */
-
-/* Socket level message types. */
-enum
- {
- SCM_RIGHTS = 0x01, /* Access rights (array of int). */
-#define SCM_RIGHTS SCM_RIGHTS
- SCM_TIMESTAMP = 0x02, /* Timestamp (struct timeval). */
-#define SCM_TIMESTAMP SCM_TIMESTAMP
- SCM_CREDS = 0x03 /* Process creds (struct cmsgcred). */
-#define SCM_CREDS SCM_CREDS
- };
-
-#ifdef __USE_MISC
-/* Unfortunately, BSD practice dictates this structure be of fixed size.
- If there are more than CMGROUP_MAX groups, the list is truncated.
- (On GNU systems, the `cmcred_euid' field is just the first in the
- list of effective UIDs.) */
-#define CMGROUP_MAX 16
-
-/* Structure delivered by SCM_CREDS. This describes the identity of the
- sender of the data simultaneously received on the socket. By BSD
- convention, this is included only when a sender on a AF_LOCAL socket
- sends cmsg data of this type and size; the sender's structure is
- ignored, and the system fills in the various IDs of the sender process. */
-struct cmsgcred
- {
- __pid_t cmcred_pid;
- __uid_t cmcred_uid;
- __uid_t cmcred_euid;
- __gid_t cmcred_gid;
- int cmcred_ngroups;
- __gid_t cmcred_groups[CMGROUP_MAX];
- };
-#endif
-
-/* Protocol number used to manipulate socket-level options
- with `getsockopt' and `setsockopt'. */
-#define SOL_SOCKET 0xffff
-
-/* Socket-level options for `getsockopt' and `setsockopt'. */
-enum
- {
- SO_DEBUG = 0x0001, /* Record debugging information. */
-#define SO_DEBUG SO_DEBUG
- SO_ACCEPTCONN = 0x0002, /* Accept connections on socket. */
-#define SO_ACCEPTCONN SO_ACCEPTCONN
- SO_REUSEADDR = 0x0004, /* Allow reuse of local addresses. */
-#define SO_REUSEADDR SO_REUSEADDR
- SO_KEEPALIVE = 0x0008, /* Keep connections alive and send
- SIGPIPE when they die. */
-#define SO_KEEPALIVE SO_KEEPALIVE
- SO_DONTROUTE = 0x0010, /* Don't do local routing. */
-#define SO_DONTROUTE SO_DONTROUTE
- SO_BROADCAST = 0x0020, /* Allow transmission of
- broadcast messages. */
-#define SO_BROADCAST SO_BROADCAST
- SO_USELOOPBACK = 0x0040, /* Use the software loopback to avoid
- hardware use when possible. */
-#define SO_USELOOPBACK SO_USELOOPBACK
- SO_LINGER = 0x0080, /* Block on close of a reliable
- socket to transmit pending data. */
-#define SO_LINGER SO_LINGER
- SO_OOBINLINE = 0x0100, /* Receive out-of-band data in-band. */
-#define SO_OOBINLINE SO_OOBINLINE
- SO_REUSEPORT = 0x0200, /* Allow local address and port reuse. */
-#define SO_REUSEPORT SO_REUSEPORT
- SO_SNDBUF = 0x1001, /* Send buffer size. */
-#define SO_SNDBUF SO_SNDBUF
- SO_RCVBUF = 0x1002, /* Receive buffer. */
-#define SO_RCVBUF SO_RCVBUF
- SO_SNDLOWAT = 0x1003, /* Send low-water mark. */
-#define SO_SNDLOWAT SO_SNDLOWAT
- SO_RCVLOWAT = 0x1004, /* Receive low-water mark. */
-#define SO_RCVLOWAT SO_RCVLOWAT
- SO_SNDTIMEO = 0x1005, /* Send timeout. */
-#define SO_SNDTIMEO SO_SNDTIMEO
- SO_RCVTIMEO = 0x1006, /* Receive timeout. */
-#define SO_RCVTIMEO SO_RCVTIMEO
- SO_ERROR = 0x1007, /* Get and clear error status. */
-#define SO_ERROR SO_ERROR
- SO_STYLE = 0x1008, /* Get socket connection style. */
-#define SO_STYLE SO_STYLE
- SO_TYPE = SO_STYLE /* Compatible name for SO_STYLE. */
-#define SO_TYPE SO_TYPE
- };
-
-/* Structure used to manipulate the SO_LINGER option. */
-struct linger
- {
- int l_onoff; /* Nonzero to linger on close. */
- int l_linger; /* Time to linger. */
- };
-
-#endif /* bits/socket.h */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd/bits
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach/hurd
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps/mach
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/sysdeps
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn/dlopen.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn/dlopen.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn/dlopen.c (nonexistent)
@@ -1,103 +0,0 @@
-/* Load a shared object at run time.
- Copyright (C) 1995-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <dlfcn.h>
-#include <libintl.h>
-#include <stddef.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-#include <shlib-compat.h>
-
-struct dlopen_args
-{
- /* The arguments for dlopen_doit. */
- const char *file;
- int mode;
- /* The return value of dlopen_doit. */
- void *new;
- /* Address of the caller. */
- const void *caller;
-};
-
-
-/* Non-shared code has no support for multiple namespaces. */
-#ifdef SHARED
-# define NS __LM_ID_CALLER
-#else
-# define NS LM_ID_BASE
-#endif
-
-
-static void
-dlopen_doit (void *a)
-{
- struct dlopen_args *args = (struct dlopen_args *) a;
-
- if (args->mode & ~(RTLD_BINDING_MASK | RTLD_NOLOAD | RTLD_DEEPBIND
- | RTLD_GLOBAL | RTLD_LOCAL | RTLD_NODELETE
- | __RTLD_SPROF))
- _dl_signal_error (0, NULL, NULL, _("invalid mode parameter"));
-
- args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
- args->caller,
- args->file == NULL ? LM_ID_BASE : NS,
- __libc_argc, __libc_argv, __environ);
-}
-
-
-static void *
-dlopen_implementation (const char *file, int mode, void *dl_caller)
-{
- struct dlopen_args args;
- args.file = file;
- args.mode = mode;
- args.caller = dl_caller;
-
- return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
-}
-
-#ifdef SHARED
-void *
-___dlopen (const char *file, int mode)
-{
- if (GLRO (dl_dlfcn_hook) != NULL)
- return GLRO (dl_dlfcn_hook)->dlopen (file, mode, RETURN_ADDRESS (0));
- else
- return dlopen_implementation (file, mode, RETURN_ADDRESS (0));
-}
-versioned_symbol (libc, ___dlopen, dlopen, GLIBC_2_34);
-
-# if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_1, GLIBC_2_34)
-compat_symbol (libdl, ___dlopen, dlopen, GLIBC_2_1);
-# endif
-#else /* !SHARED */
-/* Also used with _dlfcn_hook. */
-void *
-__dlopen (const char *file, int mode, void *dl_caller)
-{
- return dlopen_implementation (file, mode, dl_caller);
-}
-
-void *
-___dlopen (const char *file, int mode)
-{
- return __dlopen (file, mode, RETURN_ADDRESS (0));
-}
-weak_alias (___dlopen, dlopen)
-static_link_warning (dlopen)
-#endif /* !SHARED */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/dlfcn
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/uchar.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/uchar.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/uchar.h (nonexistent)
@@ -1,96 +0,0 @@
-/* Copyright (C) 2011-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-/*
- * ISO C11 Standard: 7.28
- * Unicode utilities <uchar.h>
- */
-
-#ifndef _UCHAR_H
-#define _UCHAR_H 1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-#include <bits/types.h>
-#include <bits/types/mbstate_t.h>
-
-/* Declare the C2x char8_t typedef in C2x modes, but only if the C++
- __cpp_char8_t feature test macro is not defined. */
-#if __GLIBC_USE (ISOC2X) && !defined __cpp_char8_t
-#if __GNUC_PREREQ (10, 0) && defined __cplusplus
-/* Suppress the diagnostic regarding char8_t being a keyword in C++20. */
-# pragma GCC diagnostic push
-# pragma GCC diagnostic ignored "-Wc++20-compat"
-#endif
-/* Define the 8-bit character type. */
-typedef unsigned char char8_t;
-#if __GNUC_PREREQ (10, 0) && defined __cplusplus
-# pragma GCC diagnostic pop
-#endif
-#endif
-
-#ifndef __USE_ISOCXX11
-/* Define the 16-bit and 32-bit character types. */
-typedef __uint_least16_t char16_t;
-typedef __uint_least32_t char32_t;
-#endif
-
-
-__BEGIN_DECLS
-
-/* Declare the C2x mbrtoc8() and c8rtomb() functions in C2x modes or if
- the C++ __cpp_char8_t feature test macro is defined. */
-#if __GLIBC_USE (ISOC2X) || defined __cpp_char8_t
-/* Write char8_t representation of multibyte character pointed
- to by S to PC8. */
-extern size_t mbrtoc8 (char8_t *__restrict __pc8,
- const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __p) __THROW;
-
-/* Write multibyte representation of char8_t C8 to S. */
-extern size_t c8rtomb (char *__restrict __s, char8_t __c8,
- mbstate_t *__restrict __ps) __THROW;
-#endif
-
-/* Write char16_t representation of multibyte character pointed
- to by S to PC16. */
-extern size_t mbrtoc16 (char16_t *__restrict __pc16,
- const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __p) __THROW;
-
-/* Write multibyte representation of char16_t C16 to S. */
-extern size_t c16rtomb (char *__restrict __s, char16_t __c16,
- mbstate_t *__restrict __ps) __THROW;
-
-
-
-/* Write char32_t representation of multibyte character pointed
- to by S to PC32. */
-extern size_t mbrtoc32 (char32_t *__restrict __pc32,
- const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __p) __THROW;
-
-/* Write multibyte representation of char32_t C32 to S. */
-extern size_t c32rtomb (char *__restrict __s, char32_t __c32,
- mbstate_t *__restrict __ps) __THROW;
-
-__END_DECLS
-
-#endif /* uchar.h */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/wchar.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/wchar.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/wchar.h (nonexistent)
@@ -1,884 +0,0 @@
-/* Copyright (C) 1995-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-/*
- * ISO C99 Standard: 7.24
- * Extended multibyte and wide character utilities <wchar.h>
- */
-
-#ifndef _WCHAR_H
-#define _WCHAR_H 1
-
-#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
-#include <bits/libc-header-start.h>
-
-/* Gather machine dependent type support. */
-#include <bits/floatn.h>
-
-#define __need_size_t
-#define __need_wchar_t
-#define __need_NULL
-#include <stddef.h>
-
-#define __need___va_list
-#include <stdarg.h>
-
-#include <bits/wchar.h>
-#include <bits/types/wint_t.h>
-#include <bits/types/mbstate_t.h>
-#include <bits/types/__FILE.h>
-
-#if defined __USE_UNIX98 || defined __USE_XOPEN2K
-# include <bits/types/FILE.h>
-#endif
-#ifdef __USE_XOPEN2K8
-# include <bits/types/locale_t.h>
-#endif
-
-/* Tell the caller that we provide correct C++ prototypes. */
-#if defined __cplusplus && __GNUC_PREREQ (4, 4)
-# define __CORRECT_ISO_CPP_WCHAR_H_PROTO
-#endif
-
-#ifndef WCHAR_MIN
-/* These constants might also be defined in <inttypes.h>. */
-# define WCHAR_MIN __WCHAR_MIN
-# define WCHAR_MAX __WCHAR_MAX
-#endif
-
-#ifndef WEOF
-# define WEOF (0xffffffffu)
-#endif
-
-/* All versions of XPG prior to the publication of ISO C99 required
- the bulk of <wctype.h>'s declarations to appear in this header
- (because <wctype.h> did not exist prior to C99). In POSIX.1-2001
- those declarations were marked as XSI extensions; in -2008 they
- were additionally marked as obsolescent. _GNU_SOURCE mode
- anticipates the removal of these declarations in the next revision
- of POSIX. */
-#if (defined __USE_XOPEN && !defined __USE_GNU \
- && !(defined __USE_XOPEN2K && !defined __USE_XOPEN2KXSI))
-# include <bits/wctype-wchar.h>
-#endif
-
-__BEGIN_DECLS
-
-/* This incomplete type is defined in <time.h> but needed here because
- of `wcsftime'. */
-struct tm;
-
-
-/* Copy SRC to DEST. */
-extern wchar_t *wcscpy (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src)
- __THROW __nonnull ((1, 2));
-
-/* Copy no more than N wide-characters of SRC to DEST. */
-extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src, size_t __n)
- __THROW __nonnull ((1, 2));
-
-/* Append SRC onto DEST. */
-extern wchar_t *wcscat (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src)
- __THROW __nonnull ((1, 2));
-/* Append no more than N wide-characters of SRC onto DEST. */
-extern wchar_t *wcsncat (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src, size_t __n)
- __THROW __nonnull ((1, 2));
-
-/* Compare S1 and S2. */
-extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
-/* Compare N wide-characters of S1 and S2. */
-extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
- __THROW __attribute_pure__ __nonnull ((1, 2));
-
-#ifdef __USE_XOPEN2K8
-/* Compare S1 and S2, ignoring case. */
-extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) __THROW;
-
-/* Compare no more than N chars of S1 and S2, ignoring case. */
-extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2,
- size_t __n) __THROW;
-
-/* Similar to the two functions above but take the information from
- the provided locale and not the global locale. */
-extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
- locale_t __loc) __THROW;
-
-extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
- size_t __n, locale_t __loc) __THROW;
-#endif
-
-/* Compare S1 and S2, both interpreted as appropriate to the
- LC_COLLATE category of the current locale. */
-extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW;
-/* Transform S2 into array pointed to by S1 such that if wcscmp is
- applied to two transformed strings the result is the as applying
- `wcscoll' to the original strings. */
-extern size_t wcsxfrm (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n) __THROW;
-
-#ifdef __USE_XOPEN2K8
-/* Similar to the two functions above but take the information from
- the provided locale and not the global locale. */
-
-/* Compare S1 and S2, both interpreted as appropriate to the
- LC_COLLATE category of the given locale. */
-extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2,
- locale_t __loc) __THROW;
-
-/* Transform S2 into array pointed to by S1 such that if wcscmp is
- applied to two transformed strings the result is the as applying
- `wcscoll' to the original strings. */
-extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2,
- size_t __n, locale_t __loc) __THROW;
-
-/* Duplicate S, returning an identical malloc'd string. */
-extern wchar_t *wcsdup (const wchar_t *__s) __THROW
- __attribute_malloc__ __attr_dealloc_free;
-#endif
-
-/* Find the first occurrence of WC in WCS. */
-#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
-extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
- __THROW __asm ("wcschr") __attribute_pure__;
-extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
- __THROW __asm ("wcschr") __attribute_pure__;
-#else
-extern wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
- __THROW __attribute_pure__;
-#endif
-/* Find the last occurrence of WC in WCS. */
-#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
-extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc)
- __THROW __asm ("wcsrchr") __attribute_pure__;
-extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
- __THROW __asm ("wcsrchr") __attribute_pure__;
-#else
-extern wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
- __THROW __attribute_pure__;
-#endif
-
-#ifdef __USE_GNU
-/* This function is similar to `wcschr'. But it returns a pointer to
- the closing NUL wide character in case C is not found in S. */
-extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc)
- __THROW __attribute_pure__;
-#endif
-
-/* Return the length of the initial segmet of WCS which
- consists entirely of wide characters not in REJECT. */
-extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject)
- __THROW __attribute_pure__;
-/* Return the length of the initial segmet of WCS which
- consists entirely of wide characters in ACCEPT. */
-extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept)
- __THROW __attribute_pure__;
-/* Find the first occurrence in WCS of any character in ACCEPT. */
-#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
-extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept)
- __THROW __asm ("wcspbrk") __attribute_pure__;
-extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs,
- const wchar_t *__accept)
- __THROW __asm ("wcspbrk") __attribute_pure__;
-#else
-extern wchar_t *wcspbrk (const wchar_t *__wcs, const wchar_t *__accept)
- __THROW __attribute_pure__;
-#endif
-/* Find the first occurrence of NEEDLE in HAYSTACK. */
-#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
-extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle)
- __THROW __asm ("wcsstr") __attribute_pure__;
-extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack,
- const wchar_t *__needle)
- __THROW __asm ("wcsstr") __attribute_pure__;
-#else
-extern wchar_t *wcsstr (const wchar_t *__haystack, const wchar_t *__needle)
- __THROW __attribute_pure__;
-#endif
-
-/* Divide WCS into tokens separated by characters in DELIM. */
-extern wchar_t *wcstok (wchar_t *__restrict __s,
- const wchar_t *__restrict __delim,
- wchar_t **__restrict __ptr) __THROW;
-
-/* Return the number of wide characters in S. */
-extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__;
-
-#ifdef __USE_XOPEN
-/* Another name for `wcsstr' from XPG4. */
-# ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
-extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle)
- __THROW __asm ("wcswcs") __attribute_pure__;
-extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack,
- const wchar_t *__needle)
- __THROW __asm ("wcswcs") __attribute_pure__;
-# else
-extern wchar_t *wcswcs (const wchar_t *__haystack, const wchar_t *__needle)
- __THROW __attribute_pure__;
-# endif
-#endif
-
-#ifdef __USE_XOPEN2K8
-/* Return the number of wide characters in S, but at most MAXLEN. */
-extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
- __THROW __attribute_pure__;
-#endif
-
-
-/* Search N wide characters of S for C. */
-#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
-extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n)
- __THROW __asm ("wmemchr") __attribute_pure__;
-extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c,
- size_t __n)
- __THROW __asm ("wmemchr") __attribute_pure__;
-#else
-extern wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, size_t __n)
- __THROW __attribute_pure__;
-#endif
-
-/* Compare N wide characters of S1 and S2. */
-extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
- __THROW __attribute_pure__;
-
-/* Copy N wide characters of SRC to DEST. */
-extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n) __THROW;
-
-/* Copy N wide characters of SRC to DEST, guaranteeing
- correct behavior for overlapping strings. */
-extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
- __THROW;
-
-/* Set N wide characters of S to C. */
-extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW;
-
-#ifdef __USE_GNU
-/* Copy N wide characters of SRC to DEST and return pointer to following
- wide character. */
-extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n)
- __THROW;
-#endif
-
-
-/* Determine whether C constitutes a valid (one-byte) multibyte
- character. */
-extern wint_t btowc (int __c) __THROW;
-
-/* Determine whether C corresponds to a member of the extended
- character set whose multibyte representation is a single byte. */
-extern int wctob (wint_t __c) __THROW;
-
-/* Determine whether PS points to an object representing the initial
- state. */
-extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__;
-
-/* Write wide character representation of multibyte character pointed
- to by S to PWC. */
-extern size_t mbrtowc (wchar_t *__restrict __pwc,
- const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __p) __THROW;
-
-/* Write multibyte representation of wide character WC to S. */
-extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
- mbstate_t *__restrict __ps) __THROW;
-
-/* Return number of bytes in multibyte character pointed to by S. */
-extern size_t __mbrlen (const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __ps) __THROW;
-extern size_t mbrlen (const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __ps) __THROW;
-
-#ifdef __USE_EXTERN_INLINES
-/* Define inline function as optimization. */
-
-/* We can use the BTOWC and WCTOB optimizations since we know that all
- locales must use ASCII encoding for the values in the ASCII range
- and because the wchar_t encoding is always ISO 10646. */
-extern wint_t __btowc_alias (int __c) __asm ("btowc");
-__extern_inline wint_t
-__NTH (btowc (int __c))
-{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f'
- ? (wint_t) __c : __btowc_alias (__c)); }
-
-extern int __wctob_alias (wint_t __c) __asm ("wctob");
-__extern_inline int
-__NTH (wctob (wint_t __wc))
-{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f'
- ? (int) __wc : __wctob_alias (__wc)); }
-
-__extern_inline size_t
-__NTH (mbrlen (const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __ps))
-{ return (__ps != NULL
- ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); }
-#endif
-
-/* Write wide character representation of multibyte character string
- SRC to DST. */
-extern size_t mbsrtowcs (wchar_t *__restrict __dst,
- const char **__restrict __src, size_t __len,
- mbstate_t *__restrict __ps) __THROW;
-
-/* Write multibyte character representation of wide character string
- SRC to DST. */
-extern size_t wcsrtombs (char *__restrict __dst,
- const wchar_t **__restrict __src, size_t __len,
- mbstate_t *__restrict __ps) __THROW;
-
-
-#ifdef __USE_XOPEN2K8
-/* Write wide character representation of at most NMC bytes of the
- multibyte character string SRC to DST. */
-extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
- const char **__restrict __src, size_t __nmc,
- size_t __len, mbstate_t *__restrict __ps) __THROW;
-
-/* Write multibyte character representation of at most NWC characters
- from the wide character string SRC to DST. */
-extern size_t wcsnrtombs (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __nwc, size_t __len,
- mbstate_t *__restrict __ps) __THROW;
-#endif /* use POSIX 2008 */
-
-
-/* The following functions are extensions found in X/Open CAE. */
-#ifdef __USE_XOPEN
-/* Determine number of column positions required for C. */
-extern int wcwidth (wchar_t __c) __THROW;
-
-/* Determine number of column positions required for first N wide
- characters (or fewer if S ends before this) in S. */
-extern int wcswidth (const wchar_t *__s, size_t __n) __THROW;
-#endif /* Use X/Open. */
-
-
-/* Convert initial portion of the wide string NPTR to `double'
- representation. */
-extern double wcstod (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-
-#ifdef __USE_ISOC99
-/* Likewise for `float' and `long double' sizes of floating-point numbers. */
-extern float wcstof (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-extern long double wcstold (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif /* C99 */
-
-/* Likewise for `_FloatN' and `_FloatNx' when support is enabled. */
-
-#if __HAVE_FLOAT16 && defined __USE_GNU
-extern _Float16 wcstof16 (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-#if __HAVE_FLOAT32 && defined __USE_GNU
-extern _Float32 wcstof32 (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-#if __HAVE_FLOAT64 && defined __USE_GNU
-extern _Float64 wcstof64 (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-#if __HAVE_FLOAT128 && defined __USE_GNU
-extern _Float128 wcstof128 (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-#if __HAVE_FLOAT32X && defined __USE_GNU
-extern _Float32x wcstof32x (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-#if __HAVE_FLOAT64X && defined __USE_GNU
-extern _Float64x wcstof64x (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-#if __HAVE_FLOAT128X && defined __USE_GNU
-extern _Float128x wcstof128x (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr) __THROW;
-#endif
-
-
-/* Convert initial portion of wide string NPTR to `long int'
- representation. */
-extern long int wcstol (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __base) __THROW;
-
-/* Convert initial portion of wide string NPTR to `unsigned long int'
- representation. */
-extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __base)
- __THROW;
-
-#ifdef __USE_ISOC99
-/* Convert initial portion of wide string NPTR to `long long int'
- representation. */
-__extension__
-extern long long int wcstoll (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __base)
- __THROW;
-
-/* Convert initial portion of wide string NPTR to `unsigned long long int'
- representation. */
-__extension__
-extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base) __THROW;
-#endif /* ISO C99. */
-
-#ifdef __USE_GNU
-/* Convert initial portion of wide string NPTR to `long long int'
- representation. */
-__extension__
-extern long long int wcstoq (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __base)
- __THROW;
-
-/* Convert initial portion of wide string NPTR to `unsigned long long int'
- representation. */
-__extension__
-extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base) __THROW;
-#endif /* Use GNU. */
-
-#ifdef __USE_GNU
-/* Parallel versions of the functions above which take the locale to
- use as an additional parameter. These are GNU extensions inspired
- by the POSIX.1-2008 extended locale API. */
-extern long int wcstol_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __base,
- locale_t __loc) __THROW;
-
-extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base, locale_t __loc) __THROW;
-
-__extension__
-extern long long int wcstoll_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base, locale_t __loc) __THROW;
-
-__extension__
-extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base, locale_t __loc)
- __THROW;
-
-extern double wcstod_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, locale_t __loc)
- __THROW;
-
-extern float wcstof_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, locale_t __loc)
- __THROW;
-
-extern long double wcstold_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-
-# if __HAVE_FLOAT16
-extern _Float16 wcstof16_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-
-# if __HAVE_FLOAT32
-extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-
-# if __HAVE_FLOAT64
-extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-
-# if __HAVE_FLOAT128
-extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-
-# if __HAVE_FLOAT32X
-extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-
-# if __HAVE_FLOAT64X
-extern _Float64x wcstof64x_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-
-# if __HAVE_FLOAT128X
-extern _Float128x wcstof128x_l (const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- locale_t __loc) __THROW;
-# endif
-#endif /* use GNU */
-
-
-#ifdef __USE_XOPEN2K8
-/* Copy SRC to DEST, returning the address of the terminating L'\0' in
- DEST. */
-extern wchar_t *wcpcpy (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src) __THROW;
-
-/* Copy no more than N characters of SRC to DEST, returning the address of
- the last character written into DEST. */
-extern wchar_t *wcpncpy (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src, size_t __n)
- __THROW;
-#endif
-
-
-/* Wide character I/O functions. */
-
-#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2)
-# ifndef __attr_dealloc_fclose
-# if defined __has_builtin
-# if __has_builtin (__builtin_fclose)
-/* If the attribute macro hasn't been defined yet (by <stdio.h>) and
- fclose is a built-in, use it. */
-# define __attr_dealloc_fclose __attr_dealloc (__builtin_fclose, 1)
-# endif
-# endif
-# endif
-# ifndef __attr_dealloc_fclose
-# define __attr_dealloc_fclose /* empty */
-# endif
-
-/* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces
- a wide character string. */
-extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __THROW
- __attribute_malloc__ __attr_dealloc_fclose;
-#endif
-
-#if defined __USE_ISOC95 || defined __USE_UNIX98
-
-/* Select orientation for stream. */
-extern int fwide (__FILE *__fp, int __mode) __THROW;
-
-
-/* Write formatted output to STREAM.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int fwprintf (__FILE *__restrict __stream,
- const wchar_t *__restrict __format, ...)
- /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
-/* Write formatted output to stdout.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int wprintf (const wchar_t *__restrict __format, ...)
- /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
-/* Write formatted output of at most N characters to S. */
-extern int swprintf (wchar_t *__restrict __s, size_t __n,
- const wchar_t *__restrict __format, ...)
- __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
-
-/* Write formatted output to S from argument list ARG.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int vfwprintf (__FILE *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
-/* Write formatted output to stdout from argument list ARG.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int vwprintf (const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
-/* Write formatted output of at most N character to S from argument
- list ARG. */
-extern int vswprintf (wchar_t *__restrict __s, size_t __n,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
-
-
-/* Read formatted input from STREAM.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int fwscanf (__FILE *__restrict __stream,
- const wchar_t *__restrict __format, ...)
- /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
-/* Read formatted input from stdin.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int wscanf (const wchar_t *__restrict __format, ...)
- /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
-/* Read formatted input from S. */
-extern int swscanf (const wchar_t *__restrict __s,
- const wchar_t *__restrict __format, ...)
- __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
-
-/* For historical reasons, the C99-compliant versions of the scanf
- functions are at alternative names. When __LDBL_COMPAT or
- __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in
- bits/wchar-ldbl.h. */
-#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT \
- && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
-# ifdef __REDIRECT
-extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream,
- const wchar_t *__restrict __format, ...),
- __isoc99_fwscanf)
- /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
-extern int __REDIRECT (wscanf, (const wchar_t *__restrict __format, ...),
- __isoc99_wscanf)
- /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
-extern int __REDIRECT_NTH (swscanf, (const wchar_t *__restrict __s,
- const wchar_t *__restrict __format,
- ...), __isoc99_swscanf)
- /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
-# else
-extern int __isoc99_fwscanf (__FILE *__restrict __stream,
- const wchar_t *__restrict __format, ...);
-extern int __isoc99_wscanf (const wchar_t *__restrict __format, ...);
-extern int __isoc99_swscanf (const wchar_t *__restrict __s,
- const wchar_t *__restrict __format, ...)
- __THROW;
-# define fwscanf __isoc99_fwscanf
-# define wscanf __isoc99_wscanf
-# define swscanf __isoc99_swscanf
-# endif
-# endif
-
-#endif /* Use ISO C95, C99 and Unix98. */
-
-#ifdef __USE_ISOC99
-/* Read formatted input from S into argument list ARG.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int vfwscanf (__FILE *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
-/* Read formatted input from stdin into argument list ARG.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int vwscanf (const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
-/* Read formatted input from S into argument list ARG. */
-extern int vswscanf (const wchar_t *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
-
-/* Same redirection as above for the v*wscanf family. */
-# if !__GLIBC_USE (DEPRECATED_SCANF) \
- && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
- && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) \
- && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
-# ifdef __REDIRECT
-extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg), __isoc99_vfwscanf)
- /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
-extern int __REDIRECT (vwscanf, (const wchar_t *__restrict __format,
- __gnuc_va_list __arg), __isoc99_vwscanf)
- /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
-extern int __REDIRECT_NTH (vswscanf, (const wchar_t *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg), __isoc99_vswscanf)
- /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
-# else
-extern int __isoc99_vfwscanf (__FILE *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg);
-extern int __isoc99_vwscanf (const wchar_t *__restrict __format,
- __gnuc_va_list __arg);
-extern int __isoc99_vswscanf (const wchar_t *__restrict __s,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg) __THROW;
-# define vfwscanf __isoc99_vfwscanf
-# define vwscanf __isoc99_vwscanf
-# define vswscanf __isoc99_vswscanf
-# endif
-# endif
-
-#endif /* Use ISO C99. */
-
-
-/* Read a character from STREAM.
-
- These functions are possible cancellation points and therefore not
- marked with __THROW. */
-extern wint_t fgetwc (__FILE *__stream);
-extern wint_t getwc (__FILE *__stream);
-
-/* Read a character from stdin.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern wint_t getwchar (void);
-
-
-/* Write a character to STREAM.
-
- These functions are possible cancellation points and therefore not
- marked with __THROW. */
-extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
-extern wint_t putwc (wchar_t __wc, __FILE *__stream);
-
-/* Write a character to stdout.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern wint_t putwchar (wchar_t __wc);
-
-
-/* Get a newline-terminated wide character string of finite length
- from STREAM.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
- __FILE *__restrict __stream);
-
-/* Write a string to STREAM.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern int fputws (const wchar_t *__restrict __ws,
- __FILE *__restrict __stream);
-
-
-/* Push a character back onto the input buffer of STREAM.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
-
-
-#ifdef __USE_GNU
-/* These are defined to be equivalent to the `char' functions defined
- in POSIX.1:1996.
-
- These functions are not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation they are cancellation points and
- therefore not marked with __THROW. */
-extern wint_t getwc_unlocked (__FILE *__stream);
-extern wint_t getwchar_unlocked (void);
-
-/* This is the wide character version of a GNU extension.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern wint_t fgetwc_unlocked (__FILE *__stream);
-
-/* Faster version when locking is not necessary.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
-
-/* These are defined to be equivalent to the `char' functions defined
- in POSIX.1:1996.
-
- These functions are not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation they are cancellation points and
- therefore not marked with __THROW. */
-extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
-extern wint_t putwchar_unlocked (wchar_t __wc);
-
-
-/* This function does the same as `fgetws' but does not lock the stream.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
- __FILE *__restrict __stream);
-
-/* This function does the same as `fputws' but does not lock the stream.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern int fputws_unlocked (const wchar_t *__restrict __ws,
- __FILE *__restrict __stream);
-#endif
-
-
-/* Format TP into S according to FORMAT.
- Write no more than MAXSIZE wide characters and return the number
- of wide characters written, or 0 if it would exceed MAXSIZE. */
-extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
- const wchar_t *__restrict __format,
- const struct tm *__restrict __tp) __THROW;
-
-# ifdef __USE_GNU
-/* Similar to `wcsftime' but takes the information from
- the provided locale and not the global locale. */
-extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
- const wchar_t *__restrict __format,
- const struct tm *__restrict __tp,
- locale_t __loc) __THROW;
-# endif
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-/* Declare all functions from bits/wchar2-decl.h first. */
-# include <bits/wchar2-decl.h>
-#endif
-
-/* The following headers provide asm redirections. These redirections must
- appear before the first usage of these functions, e.g. in bits/wchar.h. */
-#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
-# include <bits/wchar-ldbl.h>
-#endif
-
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-/* Now include the function definitions and redirects too. */
-# include <bits/wchar2.h>
-#endif
-
-__END_DECLS
-
-#endif /* wchar.h */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits/wchar2.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits/wchar2.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits/wchar2.h (nonexistent)
@@ -1,442 +0,0 @@
-/* Checking macros for wchar functions.
- Copyright (C) 2005-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#ifndef _WCHAR_H
-# error "Never include <bits/wchar2.h> directly; use <wchar.h> instead."
-#endif
-
-
-extern wchar_t *__REDIRECT_NTH (__wmemcpy_alias,
- (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n),
- wmemcpy);
-extern wchar_t *__REDIRECT_NTH (__wmemcpy_chk_warn,
- (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n,
- size_t __ns1), __wmemcpy_chk)
- __warnattr ("wmemcpy called with length bigger than size of destination "
- "buffer");
-
-__fortify_function wchar_t *
-__NTH (wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
- size_t __n))
-{
- return __glibc_fortify_n (wmemcpy, __n, sizeof (wchar_t),
- __glibc_objsize0 (__s1),
- __s1, __s2, __n);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1,
- const wchar_t *__s2,
- size_t __n), wmemmove);
-extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn,
- (wchar_t *__s1, const wchar_t *__s2,
- size_t __n, size_t __ns1), __wmemmove_chk)
- __warnattr ("wmemmove called with length bigger than size of destination "
- "buffer");
-
-__fortify_function wchar_t *
-__NTH (wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n))
-{
- return __glibc_fortify_n (wmemmove, __n, sizeof (wchar_t),
- __glibc_objsize0 (__s1),
- __s1, __s2, __n);
-}
-
-
-#ifdef __USE_GNU
-extern wchar_t *__REDIRECT_NTH (__wmempcpy_alias,
- (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2,
- size_t __n), wmempcpy);
-extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn,
- (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n,
- size_t __ns1), __wmempcpy_chk)
- __warnattr ("wmempcpy called with length bigger than size of destination "
- "buffer");
-
-__fortify_function wchar_t *
-__NTH (wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
- size_t __n))
-{
- return __glibc_fortify_n (wmempcpy, __n, sizeof (wchar_t),
- __glibc_objsize0 (__s1),
- __s1, __s2, __n);
-}
-#endif
-
-
-extern wchar_t *__REDIRECT_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c,
- size_t __n), wmemset);
-extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn,
- (wchar_t *__s, wchar_t __c, size_t __n,
- size_t __ns), __wmemset_chk)
- __warnattr ("wmemset called with length bigger than size of destination "
- "buffer");
-
-__fortify_function wchar_t *
-__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n))
-{
- return __glibc_fortify_n (wmemset, __n, sizeof (wchar_t),
- __glibc_objsize0 (__s),
- __s, __c, __n);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wcscpy_alias,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src), wcscpy);
-
-__fortify_function wchar_t *
-__NTH (wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
-{
- size_t sz = __glibc_objsize (__dest);
- if (sz != (size_t) -1)
- return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t));
- return __wcscpy_alias (__dest, __src);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src), wcpcpy);
-
-__fortify_function wchar_t *
-__NTH (wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
-{
- size_t sz = __glibc_objsize (__dest);
- if (sz != (size_t) -1)
- return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t));
- return __wcpcpy_alias (__dest, __src);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wcsncpy_alias,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n), wcsncpy);
-extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n, size_t __destlen), __wcsncpy_chk)
- __warnattr ("wcsncpy called with length bigger than size of destination "
- "buffer");
-
-__fortify_function wchar_t *
-__NTH (wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
- size_t __n))
-{
- return __glibc_fortify_n (wcsncpy, __n, sizeof (wchar_t),
- __glibc_objsize (__dest),
- __dest, __src, __n);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wcpncpy_alias,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n), wcpncpy);
-extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n, size_t __destlen), __wcpncpy_chk)
- __warnattr ("wcpncpy called with length bigger than size of destination "
- "buffer");
-
-__fortify_function wchar_t *
-__NTH (wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
- size_t __n))
-{
- return __glibc_fortify_n (wcpncpy, __n, sizeof (wchar_t),
- __glibc_objsize (__dest),
- __dest, __src, __n);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wcscat_alias,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src), wcscat);
-
-__fortify_function wchar_t *
-__NTH (wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
-{
- size_t sz = __glibc_objsize (__dest);
- if (sz != (size_t) -1)
- return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t));
- return __wcscat_alias (__dest, __src);
-}
-
-
-extern wchar_t *__REDIRECT_NTH (__wcsncat_alias,
- (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n), wcsncat);
-
-__fortify_function wchar_t *
-__NTH (wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
- size_t __n))
-{
- size_t sz = __glibc_objsize (__dest);
- if (sz != (size_t) -1)
- return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t));
- return __wcsncat_alias (__dest, __src, __n);
-}
-
-
-
-extern int __REDIRECT_NTH_LDBL (__swprintf_alias,
- (wchar_t *__restrict __s, size_t __n,
- const wchar_t *__restrict __fmt, ...),
- swprintf);
-
-#ifdef __va_arg_pack
-__fortify_function int
-__NTH (swprintf (wchar_t *__restrict __s, size_t __n,
- const wchar_t *__restrict __fmt, ...))
-{
- size_t sz = __glibc_objsize (__s);
- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
- return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
- sz / sizeof (wchar_t), __fmt, __va_arg_pack ());
- return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ());
-}
-#elif !defined __cplusplus
-/* XXX We might want to have support in gcc for swprintf. */
-# define swprintf(s, n, ...) \
- (__glibc_objsize (s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1 \
- ? __swprintf_chk (s, n, __USE_FORTIFY_LEVEL - 1, \
- __glibc_objsize (s) / sizeof (wchar_t), __VA_ARGS__) \
- : swprintf (s, n, __VA_ARGS__))
-#endif
-
-
-extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
- (wchar_t *__restrict __s, size_t __n,
- const wchar_t *__restrict __fmt,
- __gnuc_va_list __ap), vswprintf);
-
-__fortify_function int
-__NTH (vswprintf (wchar_t *__restrict __s, size_t __n,
- const wchar_t *__restrict __fmt, __gnuc_va_list __ap))
-{
- size_t sz = __glibc_objsize (__s);
- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
- return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
- sz / sizeof (wchar_t), __fmt, __ap);
- return __vswprintf_alias (__s, __n, __fmt, __ap);
-}
-
-
-#if __USE_FORTIFY_LEVEL > 1
-
-# ifdef __va_arg_pack
-__fortify_function int
-wprintf (const wchar_t *__restrict __fmt, ...)
-{
- return __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
-}
-
-__fortify_function int
-fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
-{
- return __fwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
- __va_arg_pack ());
-}
-# elif !defined __cplusplus
-# define wprintf(...) \
- __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
-# define fwprintf(stream, ...) \
- __fwprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
-# endif
-
-__fortify_function int
-vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
-{
- return __vwprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
-}
-
-__fortify_function int
-vfwprintf (__FILE *__restrict __stream,
- const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
-{
- return __vfwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
-}
-
-#endif
-
-extern wchar_t *__REDIRECT (__fgetws_alias,
- (wchar_t *__restrict __s, int __n,
- __FILE *__restrict __stream), fgetws) __wur;
-extern wchar_t *__REDIRECT (__fgetws_chk_warn,
- (wchar_t *__restrict __s, size_t __size, int __n,
- __FILE *__restrict __stream), __fgetws_chk)
- __wur __warnattr ("fgetws called with bigger size than length "
- "of destination buffer");
-
-__fortify_function __wur wchar_t *
-fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
-{
- size_t sz = __glibc_objsize (__s);
- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz))
- return __fgetws_alias (__s, __n, __stream);
- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz))
- return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream);
- return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream);
-}
-
-#ifdef __USE_GNU
-extern wchar_t *__REDIRECT (__fgetws_unlocked_alias,
- (wchar_t *__restrict __s, int __n,
- __FILE *__restrict __stream), fgetws_unlocked)
- __wur;
-extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn,
- (wchar_t *__restrict __s, size_t __size, int __n,
- __FILE *__restrict __stream),
- __fgetws_unlocked_chk)
- __wur __warnattr ("fgetws_unlocked called with bigger size than length "
- "of destination buffer");
-
-__fortify_function __wur wchar_t *
-fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
-{
- size_t sz = __glibc_objsize (__s);
- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz))
- return __fgetws_unlocked_alias (__s, __n, __stream);
- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz))
- return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n,
- __stream);
- return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream);
-}
-#endif
-
-
-extern size_t __REDIRECT_NTH (__wcrtomb_alias,
- (char *__restrict __s, wchar_t __wchar,
- mbstate_t *__restrict __ps), wcrtomb) __wur;
-
-__fortify_function __wur size_t
-__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar,
- mbstate_t *__restrict __ps))
-{
- /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
- But this would only disturb the namespace. So we define our own
- version here. */
-#define __WCHAR_MB_LEN_MAX 16
-#if defined MB_LEN_MAX && MB_LEN_MAX != __WCHAR_MB_LEN_MAX
-# error "Assumed value of MB_LEN_MAX wrong"
-#endif
- if (__glibc_objsize (__s) != (size_t) -1
- && __WCHAR_MB_LEN_MAX > __glibc_objsize (__s))
- return __wcrtomb_chk (__s, __wchar, __ps, __glibc_objsize (__s));
- return __wcrtomb_alias (__s, __wchar, __ps);
-}
-
-
-extern size_t __REDIRECT_NTH (__mbsrtowcs_alias,
- (wchar_t *__restrict __dst,
- const char **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps),
- mbsrtowcs);
-extern size_t __REDIRECT_NTH (__mbsrtowcs_chk_warn,
- (wchar_t *__restrict __dst,
- const char **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps,
- size_t __dstlen), __mbsrtowcs_chk)
- __warnattr ("mbsrtowcs called with dst buffer smaller than len "
- "* sizeof (wchar_t)");
-
-__fortify_function size_t
-__NTH (mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps))
-{
- return __glibc_fortify_n (mbsrtowcs, __len, sizeof (wchar_t),
- __glibc_objsize (__dst),
- __dst, __src, __len, __ps);
-}
-
-
-extern size_t __REDIRECT_NTH (__wcsrtombs_alias,
- (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps),
- wcsrtombs);
-extern size_t __REDIRECT_NTH (__wcsrtombs_chk_warn,
- (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps,
- size_t __dstlen), __wcsrtombs_chk)
- __warnattr ("wcsrtombs called with dst buffer smaller than len");
-
-__fortify_function size_t
-__NTH (wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps))
-{
- return __glibc_fortify (wcsrtombs, __len, sizeof (char),
- __glibc_objsize (__dst),
- __dst, __src, __len, __ps);
-}
-
-
-#ifdef __USE_XOPEN2K8
-extern size_t __REDIRECT_NTH (__mbsnrtowcs_alias,
- (wchar_t *__restrict __dst,
- const char **__restrict __src, size_t __nmc,
- size_t __len, mbstate_t *__restrict __ps),
- mbsnrtowcs);
-extern size_t __REDIRECT_NTH (__mbsnrtowcs_chk_warn,
- (wchar_t *__restrict __dst,
- const char **__restrict __src, size_t __nmc,
- size_t __len, mbstate_t *__restrict __ps,
- size_t __dstlen), __mbsnrtowcs_chk)
- __warnattr ("mbsnrtowcs called with dst buffer smaller than len "
- "* sizeof (wchar_t)");
-
-__fortify_function size_t
-__NTH (mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
- size_t __nmc, size_t __len, mbstate_t *__restrict __ps))
-{
- return __glibc_fortify_n (mbsnrtowcs, __len, sizeof (wchar_t),
- __glibc_objsize (__dst),
- __dst, __src, __nmc, __len, __ps);
-}
-
-
-extern size_t __REDIRECT_NTH (__wcsnrtombs_alias,
- (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __nwc, size_t __len,
- mbstate_t *__restrict __ps), wcsnrtombs);
-extern size_t __REDIRECT_NTH (__wcsnrtombs_chk_warn,
- (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __nwc, size_t __len,
- mbstate_t *__restrict __ps,
- size_t __dstlen), __wcsnrtombs_chk)
- __warnattr ("wcsnrtombs called with dst buffer smaller than len");
-
-__fortify_function size_t
-__NTH (wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
- size_t __nwc, size_t __len, mbstate_t *__restrict __ps))
-{
- return __glibc_fortify (wcsnrtombs, __len, sizeof (char),
- __glibc_objsize (__dst),
- __dst, __src, __nwc, __len, __ps);
-}
-#endif
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits/wchar2-decl.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits/wchar2-decl.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits/wchar2-decl.h (nonexistent)
@@ -1,124 +0,0 @@
-/* Checking macros for wchar functions. Declarations only.
- Copyright (C) 2004-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#ifndef _BITS_WCHAR2_DECL_H
-#define _BITS_WCHAR2_DECL_H 1
-
-#ifndef _WCHAR_H
-# error "Never include <bits/wchar2-decl.h> directly; use <wchar.h> instead."
-#endif
-
-
-extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n,
- size_t __ns1) __THROW;
-extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2,
- size_t __n, size_t __ns1) __THROW;
-
-
-#ifdef __USE_GNU
-
-extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1,
- const wchar_t *__restrict __s2, size_t __n,
- size_t __ns1) __THROW;
-
-#endif
-
-
-extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
- size_t __ns) __THROW;
-extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n) __THROW;
-extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __destlen) __THROW;
-extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src, size_t __n,
- size_t __destlen) __THROW;
-extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src, size_t __n,
- size_t __destlen) __THROW;
-extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __destlen) __THROW;
-extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest,
- const wchar_t *__restrict __src,
- size_t __n, size_t __destlen) __THROW;
-extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n,
- int __flag, size_t __s_len,
- const wchar_t *__restrict __format, ...)
- __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 6))) */;
-extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
- int __flag, size_t __s_len,
- const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
- __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
-
-#if __USE_FORTIFY_LEVEL > 1
-
-extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag,
- const wchar_t *__restrict __format, ...);
-extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format,
- ...);
-extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
- const wchar_t *__restrict __format,
- __gnuc_va_list __ap);
-extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format,
- __gnuc_va_list __ap);
-
-#endif
-
-extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
- __FILE *__restrict __stream) __wur;
-
-#ifdef __USE_GNU
-
-extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
- int __n, __FILE *__restrict __stream)
- __wur;
-
-#endif
-
-extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar,
- mbstate_t *__restrict __p,
- size_t __buflen) __THROW __wur;
-extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst,
- const char **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps,
- size_t __dstlen) __THROW;
-extern size_t __wcsrtombs_chk (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __len, mbstate_t *__restrict __ps,
- size_t __dstlen) __THROW;
-
-#ifdef __USE_XOPEN2K8
-
-extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst,
- const char **__restrict __src, size_t __nmc,
- size_t __len, mbstate_t *__restrict __ps,
- size_t __dstlen) __THROW;
-extern size_t __wcsnrtombs_chk (char *__restrict __dst,
- const wchar_t **__restrict __src,
- size_t __nwc, size_t __len,
- mbstate_t *__restrict __ps, size_t __dstlen)
- __THROW;
-
-#endif
-
-#endif /* bits/wchar2-decl.h. */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/bits
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs/Makefile (nonexistent)
@@ -1,116 +0,0 @@
-# Copyright (C) 1995-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-#
-# Sub-makefile for wcsmbs portion of the library.
-#
-subdir := wcsmbs
-
-include ../Makeconfig
-
-headers := wchar.h bits/wchar.h bits/wchar2.h bits/wchar2-decl.h \
- bits/wchar-ldbl.h uchar.h bits/types/__mbstate_t.h \
- bits/types/mbstate_t.h bits/types/wint_t.h
-
-routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
- wcsncmp wcsncpy wcspbrk wcsrchr wcsspn wcstok wcsstr wmemchr \
- wmemcmp wmemcpy wmemmove wmemset wcpcpy wcpncpy wmempcpy \
- btowc wctob mbsinit \
- mbrlen mbrtowc wcrtomb mbsrtowcs wcsrtombs \
- mbsnrtowcs wcsnrtombs wcsnlen wcschrnul \
- wcstol wcstoul wcstoll wcstoull wcstod wcstold wcstof \
- wcstol_l wcstoul_l wcstoll_l wcstoull_l \
- wcstod_l wcstold_l wcstof_l \
- wcstod_nan wcstold_nan wcstof_nan \
- wcscoll wcsxfrm \
- wcwidth wcswidth \
- wcscoll_l wcsxfrm_l \
- wcscasecmp wcsncase wcscasecmp_l wcsncase_l \
- wcsmbsload mbsrtowcs_l \
- isoc99_wscanf isoc99_vwscanf isoc99_fwscanf isoc99_vfwscanf \
- isoc99_swscanf isoc99_vswscanf \
- mbrtoc8 c8rtomb mbrtoc16 c16rtomb mbrtoc32 c32rtomb
-
-strop-tests := wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
- wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \
- wcscspn wmemchr wmemset
-tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
- tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
- tst-c16c32-1 wcsatcliff tst-wcstol-locale tst-wcstod-nan-locale \
- tst-wcstod-round test-char-types tst-fgetwc-after-eof \
- tst-wcstod-nan-sign tst-c16-surrogate tst-c32-state \
- test-mbrtoc8 test-c8rtomb \
- $(addprefix test-,$(strop-tests)) tst-mbstowcs \
- tst-wprintf-binary
-
-include ../Rules
-
-ifeq ($(run-built-tests),yes)
-LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 hr_HR.ISO-8859-2 \
- ja_JP.EUC-JP zh_TW.EUC-TW tr_TR.UTF-8 tr_TR.ISO-8859-9 zh_HK.BIG5-HKSCS
-include ../gen-locales.mk
-
-$(objpfx)tst-btowc.out: $(gen-locales)
-$(objpfx)tst-c16c32-1.out: $(gen-locales)
-$(objpfx)tst-mbrtowc.out: $(gen-locales)
-$(objpfx)tst-mbrtowc2.out: $(gen-locales)
-$(objpfx)tst-wcrtomb.out: $(gen-locales)
-$(objpfx)wcsmbs-tst1.out: $(gen-locales)
-$(objpfx)tst-wcstol-locale.out: $(gen-locales)
-$(objpfx)tst-wcstod-nan-locale.out: $(gen-locales)
-$(objpfx)tst-c16-surrogate.out: $(gen-locales)
-$(objpfx)tst-c32-state.out: $(gen-locales)
-$(objpfx)test-c8rtomb.out: $(gen-locales)
-$(objpfx)test-mbrtoc8.out: $(gen-locales)
-endif
-
-$(objpfx)tst-wcstod-round: $(libm)
-
-CFLAGS-wcwidth.c += -I../wctype
-CFLAGS-wcswidth.c += -I../wctype
-
-strtox-CFLAGS = -I../include
-CFLAGS-wcstol.c += $(strtox-CFLAGS)
-CFLAGS-wcstoul.c += $(strtox-CFLAGS)
-CFLAGS-wcstoll.c += $(strtox-CFLAGS)
-CFLAGS-wcstoull.c += $(strtox-CFLAGS)
-CFLAGS-wcstod.c += $(strtox-CFLAGS)
-CFLAGS-wcstold.c += $(strtox-CFLAGS)
-CFLAGS-wcstof128.c += $(strtox-CFLAGS)
-CFLAGS-wcstof.c += $(strtox-CFLAGS)
-CFLAGS-wcstol_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstoul_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstoll_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstoull_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstod_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstold_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstof_l.c += $(strtox-CFLAGS)
-CPPFLAGS-tst-wchar-h.c += -D_FORTIFY_SOURCE=2
-
-CFLAGS-isoc99_wscanf.c += -fexceptions
-CFLAGS-isoc99_fwscanf.c += -fexceptions
-CFLAGS-isoc99_vwscanf.c += -fexceptions
-CFLAGS-isoc99_vfwscanf.c += -fexceptions
-
-CPPFLAGS += $(libio-mtsafe)
-
-# We need to find the default version of strtold_l in stdlib.
-CPPFLAGS-wcstold_l.c += -I../stdlib
-
-$(objpfx)tst-wcstod-nan-locale: $(libm)
-$(objpfx)tst-wcstod-nan-sign: $(libm)
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/wcsmbs
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc/tst-syslog.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc/tst-syslog.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc/tst-syslog.c (nonexistent)
@@ -1,583 +0,0 @@
-/* Basic tests for syslog interfaces.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <array_length.h>
-#include <fcntl.h>
-#include <paths.h>
-#include <netinet/in.h>
-#include <support/capture_subprocess.h>
-#include <support/check.h>
-#include <support/xstdio.h>
-#include <support/xsocket.h>
-#include <support/xunistd.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <sys/un.h>
-
-static const int facilities[] =
- {
- LOG_KERN,
- LOG_USER,
- LOG_MAIL,
- LOG_DAEMON,
- LOG_AUTH,
- LOG_SYSLOG,
- LOG_LPR,
- LOG_NEWS,
- LOG_UUCP,
- LOG_CRON,
- LOG_AUTHPRIV,
- LOG_FTP,
- LOG_LOCAL0,
- LOG_LOCAL1,
- LOG_LOCAL2,
- LOG_LOCAL3,
- LOG_LOCAL4,
- LOG_LOCAL5,
- LOG_LOCAL6,
- LOG_LOCAL7,
- };
-
-static const int priorities[] =
- {
- LOG_EMERG,
- LOG_ALERT,
- LOG_CRIT,
- LOG_ERR,
- LOG_WARNING,
- LOG_NOTICE,
- LOG_INFO,
- LOG_DEBUG
- };
-
-#define IDENT_LENGTH 64
-#define MSG_LENGTH 1024
-
-#define SYSLOG_MSG_BASE "syslog_message"
-#define OPENLOG_IDENT "openlog_ident"
-static char large_message[MSG_LENGTH];
-
-struct msg_t
- {
- int priority;
- int facility;
- char ident[IDENT_LENGTH];
- char msg[MSG_LENGTH];
- pid_t pid;
- };
-
-static void
-call_vsyslog (int priority, const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
- vsyslog (priority, format, ap);
- va_end (ap);
-}
-
-static void
-send_vsyslog (int options)
-{
- for (size_t i = 0; i < array_length (facilities); i++)
- {
- for (size_t j = 0; j < array_length (priorities); j++)
- {
- int facility = facilities[i];
- int priority = priorities[j];
- call_vsyslog (facility | priority, "%s %d %d", SYSLOG_MSG_BASE,
- facility, priority);
- }
- }
-}
-
-static void
-send_syslog (int options)
-{
- for (size_t i = 0; i < array_length (facilities); i++)
- {
- for (size_t j = 0; j < array_length (priorities); j++)
- {
- int facility = facilities[i];
- int priority = priorities[j];
- syslog (facility | priority, "%s %d %d", SYSLOG_MSG_BASE, facility,
- priority);
- }
- }
-}
-
-static bool
-check_syslog_message (const struct msg_t *msg, int msgnum, int options,
- pid_t pid)
-{
- if (msgnum == array_length (facilities) * array_length (priorities) - 1)
- return false;
-
- int i = msgnum / array_length (priorities);
- int j = msgnum % array_length (priorities);
-
- int expected_facility = facilities[i];
- /* With no preceding openlog, syslog default to LOG_USER. */
- if (expected_facility == LOG_KERN)
- expected_facility = LOG_USER;
- int expected_priority = priorities[j];
-
- TEST_COMPARE (msg->facility, expected_facility);
- TEST_COMPARE (msg->priority, expected_priority);
-
- return true;
-}
-
-static void
-send_syslog_large (int options)
-{
- int facility = LOG_USER;
- int priority = LOG_INFO;
-
- syslog (facility | priority, "%s %d %d", large_message, facility,
- priority);
-}
-
-static void
-send_vsyslog_large (int options)
-{
- int facility = LOG_USER;
- int priority = LOG_INFO;
-
- call_vsyslog (facility | priority, "%s %d %d", large_message, facility,
- priority);
-}
-
-static bool
-check_syslog_message_large (const struct msg_t *msg, int msgnum, int options,
- pid_t pid)
-{
- TEST_COMPARE (msg->facility, LOG_USER);
- TEST_COMPARE (msg->priority, LOG_INFO);
- TEST_COMPARE_STRING (msg->msg, large_message);
-
- return false;
-}
-
-static void
-send_openlog (int options)
-{
- /* Define a non-default IDENT and a not default facility. */
- openlog (OPENLOG_IDENT, options, LOG_LOCAL0);
- for (size_t j = 0; j < array_length (priorities); j++)
- {
- int priority = priorities[j];
- syslog (priority, "%s %d %d", SYSLOG_MSG_BASE, LOG_LOCAL0, priority);
- }
- closelog ();
-
- /* Back to the default IDENT with a non default facility. */
- openlog (NULL, 0, LOG_LOCAL6);
- for (size_t j = 0; j < array_length (priorities); j++)
- {
- int priority = priorities[j];
- syslog (LOG_LOCAL7 | priority, "%s %d %d", SYSLOG_MSG_BASE, LOG_LOCAL7,
- priority);
- }
- closelog ();
-
- /* LOG_KERN does not change the internal default facility. */
- openlog (NULL, 0, LOG_KERN);
- for (size_t j = 0; j < array_length (priorities); j++)
- {
- int priority = priorities[j];
- syslog (priority, "%s %d %d", SYSLOG_MSG_BASE, LOG_KERN, priority);
- }
- closelog ();
-}
-
-static void
-send_openlog_large (int options)
-{
- /* Define a non-default IDENT and a not default facility. */
- openlog (OPENLOG_IDENT, options, LOG_LOCAL0);
-
- syslog (LOG_INFO, "%s %d %d", large_message, LOG_LOCAL0, LOG_INFO);
-
- closelog ();
-}
-
-static bool
-check_openlog_message (const struct msg_t *msg, int msgnum,
- int options, pid_t pid)
-{
- if (msgnum == 3 * array_length (priorities) - 1)
- return false;
-
- int expected_priority = priorities[msgnum % array_length (priorities)];
- TEST_COMPARE (msg->priority, expected_priority);
-
- char expected_ident[IDENT_LENGTH];
- snprintf (expected_ident, sizeof (expected_ident), "%s%s%.0d%s:",
- OPENLOG_IDENT,
- options & LOG_PID ? "[" : "",
- options & LOG_PID ? pid : 0,
- options & LOG_PID ? "]" : "");
-
- if (msgnum < array_length (priorities))
- {
- if (options & LOG_PID)
- TEST_COMPARE (msg->pid, pid);
- TEST_COMPARE_STRING (msg->ident, expected_ident);
- TEST_COMPARE (msg->facility, LOG_LOCAL0);
- }
- else if (msgnum < 2 * array_length (priorities))
- TEST_COMPARE (msg->facility, LOG_LOCAL7);
- else if (msgnum < 3 * array_length (priorities))
- TEST_COMPARE (msg->facility, LOG_KERN);
-
- return true;
-}
-
-static bool
-check_openlog_message_large (const struct msg_t *msg, int msgnum,
- int options, pid_t pid)
-{
- char expected_ident[IDENT_LENGTH];
- snprintf (expected_ident, sizeof (expected_ident), "%s%s%.0d%s:",
- OPENLOG_IDENT,
- options & LOG_PID ? "[" : "",
- options & LOG_PID ? pid : 0,
- options & LOG_PID ? "]" : "");
-
- TEST_COMPARE_STRING (msg->ident, expected_ident);
- TEST_COMPARE_STRING (msg->msg, large_message);
- TEST_COMPARE (msg->priority, LOG_INFO);
- TEST_COMPARE (msg->facility, LOG_LOCAL0);
-
- return false;
-}
-
-static struct msg_t
-parse_syslog_msg (const char *msg)
-{
- struct msg_t r = { .pid = -1 };
- int number;
-
-#define STRINPUT(size) XSTRINPUT(size)
-#define XSTRINPUT(size) "%" # size "s"
-
- /* The message in the form:
- <179>Apr 8 14:51:19 tst-syslog: message 176 3 */
- int n = sscanf (msg, "<%3d>%*s %*d %*d:%*d:%*d " STRINPUT(IDENT_LENGTH)
- " " STRINPUT(MSG_LENGTH) " %*d %*d",
- &number, r.ident, r.msg);
- TEST_COMPARE (n, 3);
-
- r.facility = number & LOG_FACMASK;
- r.priority = number & LOG_PRIMASK;
-
- char *pid_start = strchr (r.ident, '[');
- if (pid_start != NULL)
- {
- char *pid_end = strchr (r.ident, ']');
- if (pid_end != NULL)
- r.pid = strtoul (pid_start + 1, NULL, 10);
- }
-
- return r;
-}
-
-static struct msg_t
-parse_syslog_console (const char *msg)
-{
- int priority;
- int facility;
- struct msg_t r;
-
- /* The message in the form:
- openlog_ident: syslog_message 128 0 */
- int n = sscanf (msg, STRINPUT(IDENT_LENGTH) " " STRINPUT(MSG_LENGTH) " %d %d",
- r.ident, r.msg, &facility, &priority);
- TEST_COMPARE (n, 4);
-
- r.facility = facility;
- r.priority = priority;
-
- return r;
-}
-
-static void
-check_syslog_udp (void (*syslog_send)(int), int options,
- bool (*syslog_check)(const struct msg_t *, int, int,
- pid_t))
-{
- struct sockaddr_un addr =
- {
- .sun_family = AF_UNIX,
- .sun_path = _PATH_LOG
- };
-
- socklen_t addrlen = sizeof (addr);
- int server_udp = xsocket (AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0);
- xbind (server_udp, (struct sockaddr *) &addr, addrlen);
-
- pid_t sender_pid = xfork ();
- if (sender_pid == 0)
- {
- syslog_send (options);
- _exit (0);
- }
-
- int msgnum = 0;
- while (1)
- {
- char buf[2048];
- size_t l = xrecvfrom (server_udp, buf, sizeof (buf), 0,
- (struct sockaddr *) &addr, &addrlen);
- buf[l] = '\0';
-
- struct msg_t msg = parse_syslog_msg (buf);
- if (!syslog_check (&msg, msgnum++, options, sender_pid))
- break;
- }
-
- xclose (server_udp);
-
- int status;
- xwaitpid (sender_pid, &status, 0);
- TEST_COMPARE (status, 0);
-
- unlink (_PATH_LOG);
-}
-
-static void
-check_syslog_tcp (void (*syslog_send)(int), int options,
- bool (*syslog_check)(const struct msg_t *, int, int,
- pid_t))
-{
- struct sockaddr_un addr =
- {
- .sun_family = AF_UNIX,
- .sun_path = _PATH_LOG
- };
- socklen_t addrlen = sizeof (addr);
-
- int server_tcp = xsocket (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
- xbind (server_tcp, (struct sockaddr *) &addr, addrlen);
- xlisten (server_tcp, 5);
-
- pid_t sender_pid = xfork ();
- if (sender_pid == 0)
- {
- syslog_send (options);
- _exit (0);
- }
-
- int client_tcp = xaccept (server_tcp, NULL, NULL);
-
- char buf[2048], *rb = buf;
- size_t rbl = sizeof (buf);
- size_t prl = 0; /* Track the size of the partial record. */
- int msgnum = 0;
-
- while (1)
- {
- size_t rl = xrecvfrom (client_tcp, rb, rbl - prl, 0, NULL, NULL);
- if (rl == 0)
- break;
-
- /* Iterate over the buffer to find and check the record. */
- size_t l = rl + prl;
- char *b = buf;
- while (1)
- {
- /* With TCP each record ends with a '\0'. */
- char *e = memchr (b, '\0', l);
- if (e != NULL)
- {
- struct msg_t msg = parse_syslog_msg (b);
- if (!syslog_check (&msg, msgnum++, options, sender_pid))
- break;
-
- /* Advance to the next record. */
- ptrdiff_t diff = e + 1 - b;
- b += diff;
- l -= diff;
- }
- else
- {
- /* Move the partial record to the start of the buffer. */
- memmove (buf, b, l);
- rb = buf + l;
- prl = l;
- break;
- }
- }
- }
-
- xclose (client_tcp);
- xclose (server_tcp);
-
- int status;
- xwaitpid (sender_pid, &status, 0);
- TEST_COMPARE (status, 0);
-
- unlink (_PATH_LOG);
-}
-
-static void
-check_syslog_console_read (FILE *fp)
-{
- char buf[512];
- int msgnum = 0;
- while (fgets (buf, sizeof (buf), fp) != NULL)
- {
- struct msg_t msg = parse_syslog_console (buf);
- TEST_COMPARE_STRING (msg.ident, OPENLOG_IDENT ":");
- TEST_COMPARE (msg.priority, priorities[msgnum]);
- TEST_COMPARE (msg.facility, LOG_LOCAL0);
-
- if (++msgnum == array_length (priorities))
- break;
- }
-}
-
-static void
-check_syslog_console_read_large (FILE *fp)
-{
- char buf[2048];
- TEST_VERIFY (fgets (buf, sizeof (buf), fp) != NULL);
- struct msg_t msg = parse_syslog_console (buf);
-
- TEST_COMPARE_STRING (msg.ident, OPENLOG_IDENT ":");
- TEST_COMPARE_STRING (msg.msg, large_message);
- TEST_COMPARE (msg.priority, LOG_INFO);
- TEST_COMPARE (msg.facility, LOG_LOCAL0);
-}
-
-static void
-check_syslog_console (void (*syslog_send)(int),
- void (*syslog_check)(FILE *fp))
-{
- xmkfifo (_PATH_CONSOLE, 0666);
-
- pid_t sender_pid = xfork ();
- if (sender_pid == 0)
- {
- syslog_send (LOG_CONS);
- _exit (0);
- }
-
- {
- FILE *fp = xfopen (_PATH_CONSOLE, "r+");
- syslog_check (fp);
- xfclose (fp);
- }
-
- int status;
- xwaitpid (sender_pid, &status, 0);
- TEST_COMPARE (status, 0);
-
- unlink (_PATH_CONSOLE);
-}
-
-static void
-send_openlog_callback (void *clousure)
-{
- int options = *(int *) clousure;
- send_openlog (options);
-}
-
-static void
-send_openlog_callback_large (void *clousure)
-{
- int options = *(int *) clousure;
- send_openlog_large (options);
-}
-
-static void
-check_syslog_perror (bool large)
-{
- struct support_capture_subprocess result;
- result = support_capture_subprocess (large
- ? send_openlog_callback_large
- : send_openlog_callback,
- &(int){LOG_PERROR});
-
- FILE *mfp = fmemopen (result.err.buffer, result.err.length, "r");
- if (mfp == NULL)
- FAIL_EXIT1 ("fmemopen: %m");
- if (large)
- check_syslog_console_read_large (mfp);
- else
- check_syslog_console_read (mfp);
- xfclose (mfp);
-
- support_capture_subprocess_check (&result, "tst-openlog-child", 0,
- sc_allow_stderr);
- support_capture_subprocess_free (&result);
-}
-
-static int
-do_test (void)
-{
- /* Send every combination of facility/priority over UDP and TCP. */
- check_syslog_udp (send_syslog, 0, check_syslog_message);
- check_syslog_tcp (send_syslog, 0, check_syslog_message);
-
- /* Also check vsyslog. */
- check_syslog_udp (send_vsyslog, 0, check_syslog_message);
- check_syslog_tcp (send_vsyslog, 0, check_syslog_message);
-
- /* Run some openlog/syslog/closelog combinations. */
- check_syslog_udp (send_openlog, 0, check_openlog_message);
- check_syslog_tcp (send_openlog, 0, check_openlog_message);
-
- /* Check the LOG_PID option. */
- check_syslog_udp (send_openlog, LOG_PID, check_openlog_message);
- check_syslog_tcp (send_openlog, LOG_PID, check_openlog_message);
-
- /* Check the LOG_CONS option. */
- check_syslog_console (send_openlog, check_syslog_console_read);
-
- /* Check the LOG_PERROR option. */
- check_syslog_perror (false);
-
- /* Similar tests as before, but with a large message to trigger the
- syslog path that uses dynamically allocated memory. */
- memset (large_message, 'a', sizeof large_message - 1);
- large_message[sizeof large_message - 1] = '\0';
-
- check_syslog_udp (send_syslog_large, 0, check_syslog_message_large);
- check_syslog_tcp (send_syslog_large, 0, check_syslog_message_large);
-
- check_syslog_udp (send_vsyslog_large, 0, check_syslog_message_large);
- check_syslog_tcp (send_vsyslog_large, 0, check_syslog_message_large);
-
- check_syslog_udp (send_openlog_large, 0, check_openlog_message_large);
- check_syslog_tcp (send_openlog_large, 0, check_openlog_message_large);
-
- check_syslog_udp (send_openlog_large, LOG_PID, check_openlog_message_large);
- check_syslog_tcp (send_openlog_large, LOG_PID, check_openlog_message_large);
-
- check_syslog_console (send_openlog_large, check_syslog_console_read_large);
-
- check_syslog_perror (true);
-
- return 0;
-}
-
-#include <support/test-driver.c>
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc/syslog.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc/syslog.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc/syslog.c (nonexistent)
@@ -1,391 +0,0 @@
-/*
- * Copyright (c) 1983, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)syslog.c 8.4 (Berkeley) 3/18/94";
-#endif /* LIBC_SCCS and not lint */
-
-#include <libio/libioP.h>
-#include <paths.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdio_ext.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <sys/un.h>
-#include <syslog.h>
-
-static int LogType = SOCK_DGRAM; /* type of socket connection */
-static int LogFile = -1; /* fd for log */
-static bool connected; /* have done connect */
-static int LogStat; /* status bits, set by openlog() */
-static const char *LogTag; /* string to tag the entry with */
-static int LogFacility = LOG_USER; /* default facility code */
-static int LogMask = 0xff; /* mask of priorities to be logged */
-extern char *__progname; /* Program name, from crt0. */
-
-/* Define the lock. */
-__libc_lock_define_initialized (static, syslog_lock)
-static void openlog_internal (const char *, int, int);
-static void closelog_internal (void);
-
-struct cleanup_arg
-{
- void *buf;
- struct sigaction *oldaction;
-};
-
-static void
-cancel_handler (void *ptr)
-{
- /* Restore the old signal handler. */
- struct cleanup_arg *clarg = (struct cleanup_arg *) ptr;
-
- if (clarg != NULL)
- /* Free the memstream buffer, */
- free (clarg->buf);
-
- /* Free the lock. */
- __libc_lock_unlock (syslog_lock);
-}
-
-
-/*
- * syslog, vsyslog --
- * print message on log file; output is intended for syslogd(8).
- */
-void
-__syslog (int pri, const char *fmt, ...)
-{
- va_list ap;
-
- va_start (ap, fmt);
- __vsyslog_internal (pri, fmt, ap, 0);
- va_end (ap);
-}
-ldbl_hidden_def (__syslog, syslog)
-ldbl_strong_alias (__syslog, syslog)
-
-void
-__vsyslog (int pri, const char *fmt, va_list ap)
-{
- __vsyslog_internal (pri, fmt, ap, 0);
-}
-ldbl_weak_alias (__vsyslog, vsyslog)
-
-void
-__syslog_chk (int pri, int flag, const char *fmt, ...)
-{
- va_list ap;
-
- va_start (ap, fmt);
- __vsyslog_internal (pri, fmt, ap, (flag > 0) ? PRINTF_FORTIFY : 0);
- va_end (ap);
-}
-
-void
-__vsyslog_chk (int pri, int flag, const char *fmt, va_list ap)
-{
- __vsyslog_internal (pri, fmt, ap, (flag > 0) ? PRINTF_FORTIFY : 0);
-}
-
-void
-__vsyslog_internal (int pri, const char *fmt, va_list ap,
- unsigned int mode_flags)
-{
- /* Try to use a static buffer as an optimization. */
- char bufs[1024];
- char *buf = NULL;
- size_t bufsize = 0;
- int msgoff;
- int saved_errno = errno;
-
-#define INTERNALLOG LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID
- /* Check for invalid bits. */
- if (pri & ~(LOG_PRIMASK | LOG_FACMASK))
- {
- syslog (INTERNALLOG, "syslog: unknown facility/priority: %x", pri);
- pri &= LOG_PRIMASK | LOG_FACMASK;
- }
-
- /* Prepare for multiple users. We have to take care: most syscalls we are
- using are cancellation points. */
- struct cleanup_arg clarg = { NULL, NULL };
- __libc_cleanup_push (cancel_handler, &clarg);
- __libc_lock_lock (syslog_lock);
-
- /* Check priority against setlogmask values. */
- if ((LOG_MASK (LOG_PRI (pri)) & LogMask) == 0)
- goto out;
-
- /* Set default facility if none specified. */
- if ((pri & LOG_FACMASK) == 0)
- pri |= LogFacility;
-
- pid_t pid = LogStat & LOG_PID ? __getpid () : 0;
-
- /* "%b %e %H:%M:%S " */
- char timestamp[sizeof "MMM DD hh:mm:ss "];
- __time64_t now = time64_now ();
- struct tm now_tm;
- struct tm *now_tmp = __localtime64_r (&now, &now_tm);
- bool has_ts = now_tmp != NULL;
-
- /* In the unlikely case of localtime_r failure (tm_year out of int range)
- skip the hostname so the message is handled as valid PRI but without
- TIMESTAMP or invalid TIMESTAMP (which should force the relay to add the
- timestamp itself). */
- if (has_ts)
- __strftime_l (timestamp, sizeof timestamp, "%h %e %T ", now_tmp,
- _nl_C_locobj_ptr);
-
-#define SYSLOG_HEADER(__pri, __timestamp, __msgoff, pid) \
- "<%d>%s %n%s%s%.0d%s: ", \
- __pri, __timestamp, __msgoff, \
- LogTag == NULL ? __progname : LogTag, \
- "[" + (pid == 0), pid, "]" + (pid == 0)
-
-#define SYSLOG_HEADER_WITHOUT_TS(__pri, __msgoff) \
- "<%d>: %n", __pri, __msgoff
-
- int l;
- if (has_ts)
- l = __snprintf (bufs, sizeof bufs,
- SYSLOG_HEADER (pri, timestamp, &msgoff, pid));
- else
- l = __snprintf (bufs, sizeof bufs,
- SYSLOG_HEADER_WITHOUT_TS (pri, &msgoff));
- if (0 <= l && l < sizeof bufs)
- {
- va_list apc;
- va_copy (apc, ap);
-
- /* Restore errno for %m format. */
- __set_errno (saved_errno);
-
- int vl = __vsnprintf_internal (bufs + l, sizeof bufs - l, fmt, apc,
- mode_flags);
- if (0 <= vl && vl < sizeof bufs - l)
- buf = bufs;
- bufsize = l + vl;
-
- va_end (apc);
- }
-
- if (buf == NULL)
- {
- buf = malloc ((bufsize + 1) * sizeof (char));
- if (buf != NULL)
- {
- /* Tell the cancellation handler to free this buffer. */
- clarg.buf = buf;
-
- if (has_ts)
- __snprintf (buf, l + 1,
- SYSLOG_HEADER (pri, timestamp, &msgoff, pid));
- else
- __snprintf (buf, l + 1,
- SYSLOG_HEADER_WITHOUT_TS (pri, &msgoff));
-
- va_list apc;
- va_copy (apc, ap);
- __vsnprintf_internal (buf + l, bufsize - l + 1, fmt, apc,
- mode_flags);
- va_end (apc);
- }
- else
- {
- /* Nothing much to do but emit an error message. */
- bufsize = __snprintf (bufs, sizeof bufs,
- "out of memory[%d]", __getpid ());
- buf = bufs;
- }
- }
-
- /* Output to stderr if requested. */
- if (LogStat & LOG_PERROR)
- __dprintf (STDERR_FILENO, "%s%s", buf + msgoff,
- "\n" + (buf[bufsize - 1] == '\n'));
-
- /* Get connected, output the message to the local logger. */
- if (!connected)
- openlog_internal (NULL, LogStat | LOG_NDELAY, LogFacility);
-
- /* If we have a SOCK_STREAM connection, also send ASCII NUL as a record
- terminator. */
- if (LogType == SOCK_STREAM)
- ++bufsize;
-
- if (!connected || __send (LogFile, buf, bufsize, MSG_NOSIGNAL) < 0)
- {
- if (connected)
- {
- /* Try to reopen the syslog connection. Maybe it went down. */
- closelog_internal ();
- openlog_internal (NULL, LogStat | LOG_NDELAY, LogFacility);
- }
-
- if (!connected || __send (LogFile, buf, bufsize, MSG_NOSIGNAL) < 0)
- {
- closelog_internal (); /* attempt re-open next time */
- /*
- * Output the message to the console; don't worry
- * about blocking, if console blocks everything will.
- * Make sure the error reported is the one from the
- * syslogd failure.
- */
- int fd;
- if (LogStat & LOG_CONS &&
- (fd = __open (_PATH_CONSOLE, O_WRONLY | O_NOCTTY
- | O_CLOEXEC, 0)) >= 0)
- {
- __dprintf (fd, "%s\r\n", buf + msgoff);
- __close (fd);
- }
- }
- }
-
-out:
- /* End of critical section. */
- __libc_cleanup_pop (0);
- __libc_lock_unlock (syslog_lock);
-
- if (buf != bufs)
- free (buf);
-}
-
-/* AF_UNIX address of local logger */
-static const struct sockaddr_un SyslogAddr =
- {
- .sun_family = AF_UNIX,
- .sun_path = _PATH_LOG
- };
-
-static void
-openlog_internal (const char *ident, int logstat, int logfac)
-{
- if (ident != NULL)
- LogTag = ident;
- LogStat = logstat;
- if ((logfac & ~LOG_FACMASK) == 0)
- LogFacility = logfac;
-
- int retry = 0;
- while (retry < 2)
- {
- if (LogFile == -1)
- {
- if (LogStat & LOG_NDELAY)
- {
- LogFile = __socket (AF_UNIX, LogType | SOCK_CLOEXEC, 0);
- if (LogFile == -1)
- return;
- }
- }
- if (LogFile != -1 && !connected)
- {
- int old_errno = errno;
- if (__connect (LogFile, &SyslogAddr, sizeof (SyslogAddr)) == -1)
- {
- int saved_errno = errno;
- int fd = LogFile;
- LogFile = -1;
- __close (fd);
- __set_errno (old_errno);
- if (saved_errno == EPROTOTYPE)
- {
- /* retry with the other type: */
- LogType = LogType == SOCK_DGRAM ? SOCK_STREAM : SOCK_DGRAM;
- ++retry;
- continue;
- }
- }
- else
- connected = true;
- }
- break;
- }
-}
-
-void
-openlog (const char *ident, int logstat, int logfac)
-{
- /* Protect against multiple users and cancellation. */
- __libc_cleanup_push (cancel_handler, NULL);
- __libc_lock_lock (syslog_lock);
-
- openlog_internal (ident, logstat, logfac);
-
- __libc_cleanup_pop (1);
-}
-
-static void
-closelog_internal (void)
-{
- if (!connected)
- return;
-
- __close (LogFile);
- LogFile = -1;
- connected = false;
-}
-
-void
-closelog (void)
-{
- /* Protect against multiple users and cancellation. */
- __libc_cleanup_push (cancel_handler, NULL);
- __libc_lock_lock (syslog_lock);
-
- closelog_internal ();
- LogTag = NULL;
- LogType = SOCK_DGRAM; /* this is the default */
-
- /* Free the lock. */
- __libc_cleanup_pop (1);
-}
-
-/* setlogmask -- set the log mask level */
-int
-setlogmask (int pmask)
-{
- int omask;
-
- /* Protect against multiple users. */
- __libc_lock_lock (syslog_lock);
-
- omask = LogMask;
- if (pmask != 0)
- LogMask = pmask;
-
- __libc_lock_unlock (syslog_lock);
-
- return (omask);
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/misc
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/dl-cache.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/dl-cache.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/dl-cache.c (nonexistent)
@@ -1,536 +0,0 @@
-/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
- Copyright (C) 1996-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <assert.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-#include <sys/mman.h>
-#include <dl-cache.h>
-#include <dl-procinfo.h>
-#include <stdint.h>
-#include <_itoa.h>
-#include <dl-hwcaps.h>
-#include <dl-isa-level.h>
-
-#ifndef _DL_PLATFORMS_COUNT
-# define _DL_PLATFORMS_COUNT 0
-#endif
-
-/* This is the starting address and the size of the mmap()ed file. */
-static struct cache_file *cache;
-static struct cache_file_new *cache_new;
-static size_t cachesize;
-
-#ifdef SHARED
-/* This is used to cache the priorities of glibc-hwcaps
- subdirectories. The elements of _dl_cache_priorities correspond to
- the strings in the cache_extension_tag_glibc_hwcaps section. */
-static uint32_t *glibc_hwcaps_priorities;
-static uint32_t glibc_hwcaps_priorities_length;
-static uint32_t glibc_hwcaps_priorities_allocated;
-
-/* True if the full malloc was used to allocated the array. */
-static bool glibc_hwcaps_priorities_malloced;
-
-/* Deallocate the glibc_hwcaps_priorities array. */
-static void
-glibc_hwcaps_priorities_free (void)
-{
- /* When the minimal malloc is in use, free does not do anything,
- so it does not make sense to call it. */
- if (glibc_hwcaps_priorities_malloced)
- free (glibc_hwcaps_priorities);
- glibc_hwcaps_priorities = NULL;
- glibc_hwcaps_priorities_allocated = 0;
-}
-
-/* Ordered comparison of a hwcaps string from the cache on the left
- (identified by its string table index) and a _dl_hwcaps_priorities
- element on the right. */
-static int
-glibc_hwcaps_compare (uint32_t left_index, struct dl_hwcaps_priority *right)
-{
- const char *left_name = (const char *) cache + left_index;
- uint32_t left_name_length = strlen (left_name);
- uint32_t to_compare;
- if (left_name_length < right->name_length)
- to_compare = left_name_length;
- else
- to_compare = right->name_length;
- int cmp = memcmp (left_name, right->name, to_compare);
- if (cmp != 0)
- return cmp;
- if (left_name_length < right->name_length)
- return -1;
- else if (left_name_length > right->name_length)
- return 1;
- else
- return 0;
-}
-
-/* Initialize the glibc_hwcaps_priorities array and its length,
- glibc_hwcaps_priorities_length. */
-static void
-glibc_hwcaps_priorities_init (void)
-{
- struct cache_extension_all_loaded ext;
- if (!cache_extension_load (cache_new, cache, cachesize, &ext))
- return;
-
- uint32_t length = (ext.sections[cache_extension_tag_glibc_hwcaps].size
- / sizeof (uint32_t));
- if (length > glibc_hwcaps_priorities_allocated)
- {
- glibc_hwcaps_priorities_free ();
-
- uint32_t *new_allocation = malloc (length * sizeof (uint32_t));
- if (new_allocation == NULL)
- /* This effectively disables hwcaps on memory allocation
- errors. */
- return;
-
- glibc_hwcaps_priorities = new_allocation;
- glibc_hwcaps_priorities_allocated = length;
- glibc_hwcaps_priorities_malloced = __rtld_malloc_is_complete ();
- }
-
- /* Compute the priorities for the subdirectories by merging the
- array in the cache with the dl_hwcaps_priorities array. */
- const uint32_t *left = ext.sections[cache_extension_tag_glibc_hwcaps].base;
- const uint32_t *left_end = left + length;
- struct dl_hwcaps_priority *right = _dl_hwcaps_priorities;
- struct dl_hwcaps_priority *right_end = right + _dl_hwcaps_priorities_length;
- uint32_t *result = glibc_hwcaps_priorities;
-
- while (left < left_end && right < right_end)
- {
- if (*left < cachesize)
- {
- int cmp = glibc_hwcaps_compare (*left, right);
- if (cmp == 0)
- {
- *result = right->priority;
- ++result;
- ++left;
- ++right;
- }
- else if (cmp < 0)
- {
- *result = 0;
- ++result;
- ++left;
- }
- else
- ++right;
- }
- else
- {
- *result = 0;
- ++result;
- }
- }
- while (left < left_end)
- {
- *result = 0;
- ++result;
- ++left;
- }
-
- glibc_hwcaps_priorities_length = length;
-}
-
-/* Return the priority of the cache_extension_tag_glibc_hwcaps section
- entry at INDEX. Zero means do not use. Otherwise, lower values
- indicate greater preference. */
-static uint32_t
-glibc_hwcaps_priority (uint32_t index)
-{
- /* This does not need to repeated initialization attempts because
- this function is only called if there is glibc-hwcaps data in the
- cache, so the first call initializes the glibc_hwcaps_priorities
- array. */
- if (glibc_hwcaps_priorities_length == 0)
- glibc_hwcaps_priorities_init ();
-
- if (index < glibc_hwcaps_priorities_length)
- return glibc_hwcaps_priorities[index];
- else
- return 0;
-}
-#endif /* SHARED */
-
-/* True if PTR is a valid string table index. */
-static inline bool
-_dl_cache_verify_ptr (uint32_t ptr, size_t string_table_size)
-{
- return ptr < string_table_size;
-}
-
-/* Compute the address of the element INDEX of the array at LIBS.
- Conceptually, this is &LIBS[INDEX], but use ENTRY_SIZE for the size
- of *LIBS. */
-static inline const struct file_entry *
-_dl_cache_file_entry (const struct file_entry *libs, size_t entry_size,
- size_t index)
-{
- return (const void *) libs + index * entry_size;
-}
-
-/* We use binary search since the table is sorted in the cache file.
- The first matching entry in the table is returned. It is important
- to use the same algorithm as used while generating the cache file.
- STRING_TABLE_SIZE indicates the maximum offset in STRING_TABLE at
- which data is mapped; it is not exact. */
-static const char *
-search_cache (const char *string_table, uint32_t string_table_size,
- struct file_entry *libs, uint32_t nlibs, uint32_t entry_size,
- const char *name)
-{
- /* Used by the HWCAP check in the struct file_entry_new case. */
- uint64_t platform = _dl_string_platform (GLRO (dl_platform));
- if (platform != (uint64_t) -1)
- platform = 1ULL << platform;
- uint64_t hwcap_mask = GET_HWCAP_MASK ();
-#define _DL_HWCAP_TLS_MASK (1LL << 63)
- uint64_t hwcap_exclude = ~((GLRO (dl_hwcap) & hwcap_mask)
- | _DL_HWCAP_PLATFORM | _DL_HWCAP_TLS_MASK);
-
- int left = 0;
- int right = nlibs - 1;
- const char *best = NULL;
-#ifdef SHARED
- uint32_t best_priority = 0;
-#endif
-
- while (left <= right)
- {
- int middle = (left + right) / 2;
- uint32_t key = _dl_cache_file_entry (libs, entry_size, middle)->key;
-
- /* Make sure string table indices are not bogus before using
- them. */
- if (!_dl_cache_verify_ptr (key, string_table_size))
- return NULL;
-
- /* Actually compare the entry with the key. */
- int cmpres = _dl_cache_libcmp (name, string_table + key);
- if (__glibc_unlikely (cmpres == 0))
- {
- /* Found it. LEFT now marks the last entry for which we
- know the name is correct. */
- left = middle;
-
- /* There might be entries with this name before the one we
- found. So we have to find the beginning. */
- while (middle > 0)
- {
- key = _dl_cache_file_entry (libs, entry_size, middle - 1)->key;
- /* Make sure string table indices are not bogus before
- using them. */
- if (!_dl_cache_verify_ptr (key, string_table_size)
- /* Actually compare the entry. */
- || _dl_cache_libcmp (name, string_table + key) != 0)
- break;
- --middle;
- }
-
- do
- {
- int flags;
- const struct file_entry *lib
- = _dl_cache_file_entry (libs, entry_size, middle);
-
- /* Only perform the name test if necessary. */
- if (middle > left
- /* We haven't seen this string so far. Test whether the
- index is ok and whether the name matches. Otherwise
- we are done. */
- && (! _dl_cache_verify_ptr (lib->key, string_table_size)
- || (_dl_cache_libcmp (name, string_table + lib->key)
- != 0)))
- break;
-
- flags = lib->flags;
- if (_dl_cache_check_flags (flags)
- && _dl_cache_verify_ptr (lib->value, string_table_size))
- {
- /* Named/extension hwcaps get slightly different
- treatment: We keep searching for a better
- match. */
- bool named_hwcap = false;
-
- if (entry_size >= sizeof (struct file_entry_new))
- {
- /* The entry is large enough to include
- HWCAP data. Check it. */
- struct file_entry_new *libnew
- = (struct file_entry_new *) lib;
-
-#ifdef SHARED
- named_hwcap = dl_cache_hwcap_extension (libnew);
- if (named_hwcap
- && !dl_cache_hwcap_isa_level_compatible (libnew))
- continue;
-#endif
-
- /* The entries with named/extension hwcaps have
- been exhausted (they are listed before all
- other entries). Return the best match
- encountered so far if there is one. */
- if (!named_hwcap && best != NULL)
- break;
-
- if ((libnew->hwcap & hwcap_exclude) && !named_hwcap)
- continue;
- if (_DL_PLATFORMS_COUNT
- && (libnew->hwcap & _DL_HWCAP_PLATFORM) != 0
- && ((libnew->hwcap & _DL_HWCAP_PLATFORM)
- != platform))
- continue;
-
-#ifdef SHARED
- /* For named hwcaps, determine the priority and
- see if beats what has been found so far. */
- if (named_hwcap)
- {
- uint32_t entry_priority
- = glibc_hwcaps_priority (libnew->hwcap);
- if (entry_priority == 0)
- /* Not usable at all. Skip. */
- continue;
- else if (best == NULL
- || entry_priority < best_priority)
- /* This entry is of higher priority
- than the previous one, or it is the
- first entry. */
- best_priority = entry_priority;
- else
- /* An entry has already been found,
- but it is a better match. */
- continue;
- }
-#endif /* SHARED */
- }
-
- best = string_table + lib->value;
-
- if (!named_hwcap && flags == _DL_CACHE_DEFAULT_ID)
- /* With named hwcaps, we need to keep searching to
- see if we find a better match. A better match
- is also possible if the flags of the current
- entry do not match the expected cache flags.
- But if the flags match, no better entry will be
- found. */
- break;
- }
- }
- while (++middle <= right);
- break;
- }
-
- if (cmpres < 0)
- left = middle + 1;
- else
- right = middle - 1;
- }
-
- return best;
-}
-
-int
-_dl_cache_libcmp (const char *p1, const char *p2)
-{
- while (*p1 != '\0')
- {
- if (*p1 >= '0' && *p1 <= '9')
- {
- if (*p2 >= '0' && *p2 <= '9')
- {
- /* Must compare this numerically. */
- int val1;
- int val2;
-
- val1 = *p1++ - '0';
- val2 = *p2++ - '0';
- while (*p1 >= '0' && *p1 <= '9')
- val1 = val1 * 10 + *p1++ - '0';
- while (*p2 >= '0' && *p2 <= '9')
- val2 = val2 * 10 + *p2++ - '0';
- if (val1 != val2)
- return val1 - val2;
- }
- else
- return 1;
- }
- else if (*p2 >= '0' && *p2 <= '9')
- return -1;
- else if (*p1 != *p2)
- return *p1 - *p2;
- else
- {
- ++p1;
- ++p2;
- }
- }
- return *p1 - *p2;
-}
-
-
-/* Look up NAME in ld.so.cache and return the file name stored there, or null
- if none is found. The cache is loaded if it was not already. If loading
- the cache previously failed there will be no more attempts to load it.
- The caller is responsible for freeing the returned string. The ld.so.cache
- may be unmapped at any time by a completing recursive dlopen and
- this function must take care that it does not return references to
- any data in the mapping. */
-char *
-_dl_load_cache_lookup (const char *name)
-{
- /* Print a message if the loading of libs is traced. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
- _dl_debug_printf (" search cache=%s\n", LD_SO_CACHE);
-
- if (cache == NULL)
- {
- /* Read the contents of the file. */
- void *file = _dl_sysdep_read_whole_file (LD_SO_CACHE, &cachesize,
- PROT_READ);
-
- /* We can handle three different cache file formats here:
- - only the new format
- - the old libc5/glibc2.0/2.1 format
- - the old format with the new format in it
- The following checks if the cache contains any of these formats. */
- if (file != MAP_FAILED && cachesize > sizeof *cache_new
- && memcmp (file, CACHEMAGIC_VERSION_NEW,
- sizeof CACHEMAGIC_VERSION_NEW - 1) == 0
- /* Check for corruption, avoiding overflow. */
- && ((cachesize - sizeof *cache_new) / sizeof (struct file_entry_new)
- >= ((struct cache_file_new *) file)->nlibs))
- {
- if (! cache_file_new_matches_endian (file))
- {
- __munmap (file, cachesize);
- file = (void *) -1;
- }
- cache_new = file;
- cache = file;
- }
- else if (file != MAP_FAILED && cachesize > sizeof *cache
- && memcmp (file, CACHEMAGIC, sizeof CACHEMAGIC - 1) == 0
- /* Check for corruption, avoiding overflow. */
- && ((cachesize - sizeof *cache) / sizeof (struct file_entry)
- >= ((struct cache_file *) file)->nlibs))
- {
- size_t offset;
- /* Looks ok. */
- cache = file;
-
- /* Check for new version. */
- offset = ALIGN_CACHE (sizeof (struct cache_file)
- + cache->nlibs * sizeof (struct file_entry));
-
- cache_new = (struct cache_file_new *) ((void *) cache + offset);
- if (cachesize < (offset + sizeof (struct cache_file_new))
- || memcmp (cache_new->magic, CACHEMAGIC_VERSION_NEW,
- sizeof CACHEMAGIC_VERSION_NEW - 1) != 0)
- cache_new = (void *) -1;
- else
- {
- if (! cache_file_new_matches_endian (cache_new))
- {
- /* The old-format part of the cache is bogus as well
- if the endianness does not match. (But it is
- unclear how the new header can be located if the
- endianess does not match.) */
- cache = (void *) -1;
- cache_new = (void *) -1;
- __munmap (file, cachesize);
- }
- }
- }
- else
- {
- if (file != MAP_FAILED)
- __munmap (file, cachesize);
- cache = (void *) -1;
- }
-
- assert (cache != NULL);
- }
-
- if (cache == (void *) -1)
- /* Previously looked for the cache file and didn't find it. */
- return NULL;
-
- const char *best;
- if (cache_new != (void *) -1)
- {
- const char *string_table = (const char *) cache_new;
- best = search_cache (string_table, cachesize,
- &cache_new->libs[0].entry, cache_new->nlibs,
- sizeof (cache_new->libs[0]), name);
- }
- else
- {
- const char *string_table = (const char *) &cache->libs[cache->nlibs];
- uint32_t string_table_size
- = (const char *) cache + cachesize - string_table;
- best = search_cache (string_table, string_table_size,
- &cache->libs[0], cache->nlibs,
- sizeof (cache->libs[0]), name);
- }
-
- /* Print our result if wanted. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)
- && best != NULL)
- _dl_debug_printf (" trying file=%s\n", best);
-
- if (best == NULL)
- return NULL;
-
- /* The double copy is *required* since malloc may be interposed
- and call dlopen itself whose completion would unmap the data
- we are accessing. Therefore we must make the copy of the
- mapping data without using malloc. */
- char *temp;
- size_t best_len = strlen (best) + 1;
- temp = alloca (best_len);
- memcpy (temp, best, best_len);
- return __strdup (temp);
-}
-
-#ifndef MAP_COPY
-/* If the system does not support MAP_COPY we cannot leave the file open
- all the time since this would create problems when the file is replaced.
- Therefore we provide this function to close the file and open it again
- once needed. */
-void
-_dl_unload_cache (void)
-{
- if (cache != NULL && cache != (struct cache_file *) -1)
- {
- __munmap (cache, cachesize);
- cache = NULL;
- }
-#ifdef SHARED
- /* This marks the glibc_hwcaps_priorities array as out-of-date. */
- glibc_hwcaps_priorities_length = 0;
-#endif
-}
-#endif
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/dl-open.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/dl-open.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/dl-open.c (nonexistent)
@@ -1,963 +0,0 @@
-/* Load a shared object at runtime, relocate it, and run its initializer.
- Copyright (C) 1996-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <assert.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <libintl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/mman.h> /* Check whether MAP_COPY is defined. */
-#include <sys/param.h>
-#include <libc-lock.h>
-#include <ldsodefs.h>
-#include <sysdep-cancel.h>
-#include <tls.h>
-#include <stap-probe.h>
-#include <atomic.h>
-#include <libc-internal.h>
-#include <array_length.h>
-#include <libc-early-init.h>
-#include <gnu/lib-names.h>
-#include <dl-find_object.h>
-
-#include <dl-dst.h>
-#include <dl-prop.h>
-
-
-/* We must be careful not to leave us in an inconsistent state. Thus we
- catch any error and re-raise it after cleaning up. */
-
-struct dl_open_args
-{
- const char *file;
- int mode;
- /* This is the caller of the dlopen() function. */
- const void *caller_dlopen;
- struct link_map *map;
- /* Namespace ID. */
- Lmid_t nsid;
-
- /* Original value of _ns_global_scope_pending_adds. Set by
- dl_open_worker. Only valid if nsid is a real namespace
- (non-negative). */
- unsigned int original_global_scope_pending_adds;
-
- /* Set to true by dl_open_worker if libc.so was already loaded into
- the namespace at the time dl_open_worker was called. This is
- used to determine whether libc.so early initialization has
- already been done before, and whether to roll back the cached
- libc_map value in the namespace in case of a dlopen failure. */
- bool libc_already_loaded;
-
- /* Set to true if the end of dl_open_worker_begin was reached. */
- bool worker_continue;
-
- /* Original parameters to the program and the current environment. */
- int argc;
- char **argv;
- char **env;
-};
-
-/* Called in case the global scope cannot be extended. */
-static void __attribute__ ((noreturn))
-add_to_global_resize_failure (struct link_map *new)
-{
- _dl_signal_error (ENOMEM, new->l_libname->name, NULL,
- N_ ("cannot extend global scope"));
-}
-
-/* Grow the global scope array for the namespace, so that all the new
- global objects can be added later in add_to_global_update, without
- risk of memory allocation failure. add_to_global_resize raises
- exceptions for memory allocation errors. */
-static void
-add_to_global_resize (struct link_map *new)
-{
- struct link_namespaces *ns = &GL (dl_ns)[new->l_ns];
-
- /* Count the objects we have to put in the global scope. */
- unsigned int to_add = 0;
- for (unsigned int cnt = 0; cnt < new->l_searchlist.r_nlist; ++cnt)
- if (new->l_searchlist.r_list[cnt]->l_global == 0)
- ++to_add;
-
- /* The symbols of the new objects and its dependencies are to be
- introduced into the global scope that will be used to resolve
- references from other dynamically-loaded objects.
-
- The global scope is the searchlist in the main link map. We
- extend this list if necessary. There is one problem though:
- since this structure was allocated very early (before the libc
- is loaded) the memory it uses is allocated by the malloc()-stub
- in the ld.so. When we come here these functions are not used
- anymore. Instead the malloc() implementation of the libc is
- used. But this means the block from the main map cannot be used
- in an realloc() call. Therefore we allocate a completely new
- array the first time we have to add something to the locale scope. */
-
- if (__builtin_add_overflow (ns->_ns_global_scope_pending_adds, to_add,
- &ns->_ns_global_scope_pending_adds))
- add_to_global_resize_failure (new);
-
- unsigned int new_size = 0; /* 0 means no new allocation. */
- void *old_global = NULL; /* Old allocation if free-able. */
-
- /* Minimum required element count for resizing. Adjusted below for
- an exponential resizing policy. */
- size_t required_new_size;
- if (__builtin_add_overflow (ns->_ns_main_searchlist->r_nlist,
- ns->_ns_global_scope_pending_adds,
- &required_new_size))
- add_to_global_resize_failure (new);
-
- if (ns->_ns_global_scope_alloc == 0)
- {
- if (__builtin_add_overflow (required_new_size, 8, &new_size))
- add_to_global_resize_failure (new);
- }
- else if (required_new_size > ns->_ns_global_scope_alloc)
- {
- if (__builtin_mul_overflow (required_new_size, 2, &new_size))
- add_to_global_resize_failure (new);
-
- /* The old array was allocated with our malloc, not the minimal
- malloc. */
- old_global = ns->_ns_main_searchlist->r_list;
- }
-
- if (new_size > 0)
- {
- size_t allocation_size;
- if (__builtin_mul_overflow (new_size, sizeof (struct link_map *),
- &allocation_size))
- add_to_global_resize_failure (new);
- struct link_map **new_global = malloc (allocation_size);
- if (new_global == NULL)
- add_to_global_resize_failure (new);
-
- /* Copy over the old entries. */
- memcpy (new_global, ns->_ns_main_searchlist->r_list,
- ns->_ns_main_searchlist->r_nlist * sizeof (struct link_map *));
-
- ns->_ns_global_scope_alloc = new_size;
- ns->_ns_main_searchlist->r_list = new_global;
-
- if (!RTLD_SINGLE_THREAD_P)
- THREAD_GSCOPE_WAIT ();
-
- free (old_global);
- }
-}
-
-/* Actually add the new global objects to the global scope. Must be
- called after add_to_global_resize. This function cannot fail. */
-static void
-add_to_global_update (struct link_map *new)
-{
- struct link_namespaces *ns = &GL (dl_ns)[new->l_ns];
-
- /* Now add the new entries. */
- unsigned int new_nlist = ns->_ns_main_searchlist->r_nlist;
- for (unsigned int cnt = 0; cnt < new->l_searchlist.r_nlist; ++cnt)
- {
- struct link_map *map = new->l_searchlist.r_list[cnt];
-
- if (map->l_global == 0)
- {
- map->l_global = 1;
-
- /* The array has been resized by add_to_global_resize. */
- assert (new_nlist < ns->_ns_global_scope_alloc);
-
- ns->_ns_main_searchlist->r_list[new_nlist++] = map;
-
- /* We modify the global scope. Report this. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
- _dl_debug_printf ("\nadd %s [%lu] to global scope\n",
- map->l_name, map->l_ns);
- }
- }
-
- /* Some of the pending adds have been performed by the loop above.
- Adjust the counter accordingly. */
- unsigned int added = new_nlist - ns->_ns_main_searchlist->r_nlist;
- assert (added <= ns->_ns_global_scope_pending_adds);
- ns->_ns_global_scope_pending_adds -= added;
-
- atomic_write_barrier ();
- ns->_ns_main_searchlist->r_nlist = new_nlist;
-}
-
-/* Search link maps in all namespaces for the DSO that contains the object at
- address ADDR. Returns the pointer to the link map of the matching DSO, or
- NULL if a match is not found. */
-struct link_map *
-_dl_find_dso_for_object (const ElfW(Addr) addr)
-{
- struct link_map *l;
-
- /* Find the highest-addressed object that ADDR is not below. */
- for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
- for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)
- if (addr >= l->l_map_start && addr < l->l_map_end
- && (l->l_contiguous
- || _dl_addr_inside_object (l, (ElfW(Addr)) addr)))
- {
- assert (ns == l->l_ns);
- return l;
- }
- return NULL;
-}
-rtld_hidden_def (_dl_find_dso_for_object);
-
-/* Return true if NEW is found in the scope for MAP. */
-static size_t
-scope_has_map (struct link_map *map, struct link_map *new)
-{
- size_t cnt;
- for (cnt = 0; map->l_scope[cnt] != NULL; ++cnt)
- if (map->l_scope[cnt] == &new->l_searchlist)
- return true;
- return false;
-}
-
-/* Return the length of the scope for MAP. */
-static size_t
-scope_size (struct link_map *map)
-{
- size_t cnt;
- for (cnt = 0; map->l_scope[cnt] != NULL; )
- ++cnt;
- return cnt;
-}
-
-/* Resize the scopes of depended-upon objects, so that the new object
- can be added later without further allocation of memory. This
- function can raise an exceptions due to malloc failure. */
-static void
-resize_scopes (struct link_map *new)
-{
- /* If the file is not loaded now as a dependency, add the search
- list of the newly loaded object to the scope. */
- for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
-
- /* If the initializer has been called already, the object has
- not been loaded here and now. */
- if (imap->l_init_called && imap->l_type == lt_loaded)
- {
- if (scope_has_map (imap, new))
- /* Avoid duplicates. */
- continue;
-
- size_t cnt = scope_size (imap);
- if (__glibc_unlikely (cnt + 1 >= imap->l_scope_max))
- {
- /* The l_scope array is too small. Allocate a new one
- dynamically. */
- size_t new_size;
- struct r_scope_elem **newp;
-
- if (imap->l_scope != imap->l_scope_mem
- && imap->l_scope_max < array_length (imap->l_scope_mem))
- {
- /* If the current l_scope memory is not pointing to
- the static memory in the structure, but the
- static memory in the structure is large enough to
- use for cnt + 1 scope entries, then switch to
- using the static memory. */
- new_size = array_length (imap->l_scope_mem);
- newp = imap->l_scope_mem;
- }
- else
- {
- new_size = imap->l_scope_max * 2;
- newp = (struct r_scope_elem **)
- malloc (new_size * sizeof (struct r_scope_elem *));
- if (newp == NULL)
- _dl_signal_error (ENOMEM, "dlopen", NULL,
- N_("cannot create scope list"));
- }
-
- /* Copy the array and the terminating NULL. */
- memcpy (newp, imap->l_scope,
- (cnt + 1) * sizeof (imap->l_scope[0]));
- struct r_scope_elem **old = imap->l_scope;
-
- imap->l_scope = newp;
-
- if (old != imap->l_scope_mem)
- _dl_scope_free (old);
-
- imap->l_scope_max = new_size;
- }
- }
- }
-}
-
-/* Second stage of resize_scopes: Add NEW to the scopes. Also print
- debugging information about scopes if requested.
-
- This function cannot raise an exception because all required memory
- has been allocated by a previous call to resize_scopes. */
-static void
-update_scopes (struct link_map *new)
-{
- for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
- int from_scope = 0;
-
- if (imap->l_init_called && imap->l_type == lt_loaded)
- {
- if (scope_has_map (imap, new))
- /* Avoid duplicates. */
- continue;
-
- size_t cnt = scope_size (imap);
- /* Assert that resize_scopes has sufficiently enlarged the
- array. */
- assert (cnt + 1 < imap->l_scope_max);
-
- /* First terminate the extended list. Otherwise a thread
- might use the new last element and then use the garbage
- at offset IDX+1. */
- imap->l_scope[cnt + 1] = NULL;
- atomic_write_barrier ();
- imap->l_scope[cnt] = &new->l_searchlist;
-
- from_scope = cnt;
- }
-
- /* Print scope information. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
- _dl_show_scope (imap, from_scope);
- }
-}
-
-/* Call _dl_add_to_slotinfo with DO_ADD set to false, to allocate
- space in GL (dl_tls_dtv_slotinfo_list). This can raise an
- exception. The return value is true if any of the new objects use
- TLS. */
-static bool
-resize_tls_slotinfo (struct link_map *new)
-{
- bool any_tls = false;
- for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
-
- /* Only add TLS memory if this object is loaded now and
- therefore is not yet initialized. */
- if (! imap->l_init_called && imap->l_tls_blocksize > 0)
- {
- _dl_add_to_slotinfo (imap, false);
- any_tls = true;
- }
- }
- return any_tls;
-}
-
-/* Second stage of TLS update, after resize_tls_slotinfo. This
- function does not raise any exception. It should only be called if
- resize_tls_slotinfo returned true. */
-static void
-update_tls_slotinfo (struct link_map *new)
-{
- unsigned int first_static_tls = new->l_searchlist.r_nlist;
- for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
-
- /* Only add TLS memory if this object is loaded now and
- therefore is not yet initialized. */
- if (! imap->l_init_called && imap->l_tls_blocksize > 0)
- {
- _dl_add_to_slotinfo (imap, true);
-
- if (imap->l_need_tls_init
- && first_static_tls == new->l_searchlist.r_nlist)
- first_static_tls = i;
- }
- }
-
- size_t newgen = GL(dl_tls_generation) + 1;
- if (__glibc_unlikely (newgen == 0))
- _dl_fatal_printf (N_("\
-TLS generation counter wrapped! Please report this."));
- /* Can be read concurrently. */
- atomic_store_relaxed (&GL(dl_tls_generation), newgen);
-
- /* We need a second pass for static tls data, because
- _dl_update_slotinfo must not be run while calls to
- _dl_add_to_slotinfo are still pending. */
- for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
-
- if (imap->l_need_tls_init
- && ! imap->l_init_called
- && imap->l_tls_blocksize > 0)
- {
- /* For static TLS we have to allocate the memory here and
- now, but we can delay updating the DTV. */
- imap->l_need_tls_init = 0;
-#ifdef SHARED
- /* Update the slot information data for at least the
- generation of the DSO we are allocating data for. */
-
- /* FIXME: This can terminate the process on memory
- allocation failure. It is not possible to raise
- exceptions from this context; to fix this bug,
- _dl_update_slotinfo would have to be split into two
- operations, similar to resize_scopes and update_scopes
- above. This is related to bug 16134. */
- _dl_update_slotinfo (imap->l_tls_modid);
-#endif
-
- dl_init_static_tls (imap);
- assert (imap->l_need_tls_init == 0);
- }
- }
-}
-
-/* Mark the objects as NODELETE if required. This is delayed until
- after dlopen failure is not possible, so that _dl_close can clean
- up objects if necessary. */
-static void
-activate_nodelete (struct link_map *new)
-{
- /* It is necessary to traverse the entire namespace. References to
- objects in the global scope and unique symbol bindings can force
- NODELETE status for objects outside the local scope. */
- for (struct link_map *l = GL (dl_ns)[new->l_ns]._ns_loaded; l != NULL;
- l = l->l_next)
- if (l->l_nodelete_pending)
- {
- if (__glibc_unlikely (GLRO (dl_debug_mask) & DL_DEBUG_FILES))
- _dl_debug_printf ("activating NODELETE for %s [%lu]\n",
- l->l_name, l->l_ns);
-
- /* The flag can already be true at this point, e.g. a signal
- handler may have triggered lazy binding and set NODELETE
- status immediately. */
- l->l_nodelete_active = true;
-
- /* This is just a debugging aid, to indicate that
- activate_nodelete has run for this map. */
- l->l_nodelete_pending = false;
- }
-}
-
-/* struct dl_init_args and call_dl_init are used to call _dl_init with
- exception handling disabled. */
-struct dl_init_args
-{
- struct link_map *new;
- int argc;
- char **argv;
- char **env;
-};
-
-static void
-call_dl_init (void *closure)
-{
- struct dl_init_args *args = closure;
- _dl_init (args->new, args->argc, args->argv, args->env);
-}
-
-static void
-dl_open_worker_begin (void *a)
-{
- struct dl_open_args *args = a;
- const char *file = args->file;
- int mode = args->mode;
- struct link_map *call_map = NULL;
-
- /* Determine the caller's map if necessary. This is needed in case
- we have a DST, when we don't know the namespace ID we have to put
- the new object in, or when the file name has no path in which
- case we need to look along the RUNPATH/RPATH of the caller. */
- const char *dst = strchr (file, '$');
- if (dst != NULL || args->nsid == __LM_ID_CALLER
- || strchr (file, '/') == NULL)
- {
- const void *caller_dlopen = args->caller_dlopen;
-
- /* We have to find out from which object the caller is calling.
- By default we assume this is the main application. */
- call_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
-
- struct link_map *l = _dl_find_dso_for_object ((ElfW(Addr)) caller_dlopen);
-
- if (l)
- call_map = l;
-
- if (args->nsid == __LM_ID_CALLER)
- args->nsid = call_map->l_ns;
- }
-
- /* The namespace ID is now known. Keep track of whether libc.so was
- already loaded, to determine whether it is necessary to call the
- early initialization routine (or clear libc_map on error). */
- args->libc_already_loaded = GL(dl_ns)[args->nsid].libc_map != NULL;
-
- /* Retain the old value, so that it can be restored. */
- args->original_global_scope_pending_adds
- = GL (dl_ns)[args->nsid]._ns_global_scope_pending_adds;
-
- /* One might be tempted to assert that we are RT_CONSISTENT at this point, but that
- may not be true if this is a recursive call to dlopen. */
- _dl_debug_initialize (0, args->nsid);
-
- /* Load the named object. */
- struct link_map *new;
- args->map = new = _dl_map_object (call_map, file, lt_loaded, 0,
- mode | __RTLD_CALLMAP, args->nsid);
-
- /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is
- set and the object is not already loaded. */
- if (new == NULL)
- {
- assert (mode & RTLD_NOLOAD);
- return;
- }
-
- if (__glibc_unlikely (mode & __RTLD_SPROF))
- /* This happens only if we load a DSO for 'sprof'. */
- return;
-
- /* This object is directly loaded. */
- ++new->l_direct_opencount;
-
- /* It was already open. */
- if (__glibc_unlikely (new->l_searchlist.r_list != NULL))
- {
- /* Let the user know about the opencount. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
- _dl_debug_printf ("opening file=%s [%lu]; direct_opencount=%u\n\n",
- new->l_name, new->l_ns, new->l_direct_opencount);
-
- /* If the user requested the object to be in the global
- namespace but it is not so far, prepare to add it now. This
- can raise an exception to do a malloc failure. */
- if ((mode & RTLD_GLOBAL) && new->l_global == 0)
- add_to_global_resize (new);
-
- /* Mark the object as not deletable if the RTLD_NODELETE flags
- was passed. */
- if (__glibc_unlikely (mode & RTLD_NODELETE))
- {
- if (__glibc_unlikely (GLRO (dl_debug_mask) & DL_DEBUG_FILES)
- && !new->l_nodelete_active)
- _dl_debug_printf ("marking %s [%lu] as NODELETE\n",
- new->l_name, new->l_ns);
- new->l_nodelete_active = true;
- }
-
- /* Finalize the addition to the global scope. */
- if ((mode & RTLD_GLOBAL) && new->l_global == 0)
- add_to_global_update (new);
-
- assert (_dl_debug_update (args->nsid)->r_state == RT_CONSISTENT);
-
- return;
- }
-
- /* Schedule NODELETE marking for the directly loaded object if
- requested. */
- if (__glibc_unlikely (mode & RTLD_NODELETE))
- new->l_nodelete_pending = true;
-
- /* Load that object's dependencies. */
- _dl_map_object_deps (new, NULL, 0, 0,
- mode & (__RTLD_DLOPEN | RTLD_DEEPBIND | __RTLD_AUDIT));
-
- /* So far, so good. Now check the versions. */
- for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- if (new->l_searchlist.r_list[i]->l_real->l_versions == NULL)
- {
- struct link_map *map = new->l_searchlist.r_list[i]->l_real;
- _dl_check_map_versions (map, 0, 0);
-#ifndef SHARED
- /* During static dlopen, check if ld.so has been loaded.
- Perform partial initialization in this case. This must
- come after the symbol versioning initialization in
- _dl_check_map_versions. */
- if (map->l_info[DT_SONAME] != NULL
- && strcmp (((const char *) D_PTR (map, l_info[DT_STRTAB])
- + map->l_info[DT_SONAME]->d_un.d_val), LD_SO) == 0)
- __rtld_static_init (map);
-#endif
- }
-
-#ifdef SHARED
- /* Auditing checkpoint: we have added all objects. */
- _dl_audit_activity_nsid (new->l_ns, LA_ACT_CONSISTENT);
-#endif
-
- /* Notify the debugger all new objects are now ready to go. */
- struct r_debug *r = _dl_debug_update (args->nsid);
- r->r_state = RT_CONSISTENT;
- _dl_debug_state ();
- LIBC_PROBE (map_complete, 3, args->nsid, r, new);
-
- _dl_open_check (new);
-
- /* Print scope information. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
- _dl_show_scope (new, 0);
-
- /* Only do lazy relocation if `LD_BIND_NOW' is not set. */
- int reloc_mode = mode & __RTLD_AUDIT;
- if (GLRO(dl_lazy))
- reloc_mode |= mode & RTLD_LAZY;
-
- /* Objects must be sorted by dependency for the relocation process.
- This allows IFUNC relocations to work and it also means copy
- relocation of dependencies are if necessary overwritten.
- __dl_map_object_deps has already sorted l_initfini for us. */
- unsigned int first = UINT_MAX;
- unsigned int last = 0;
- unsigned int j = 0;
- struct link_map *l = new->l_initfini[0];
- do
- {
- if (! l->l_real->l_relocated)
- {
- if (first == UINT_MAX)
- first = j;
- last = j + 1;
- }
- l = new->l_initfini[++j];
- }
- while (l != NULL);
-
- int relocation_in_progress = 0;
-
- /* Perform relocation. This can trigger lazy binding in IFUNC
- resolvers. For NODELETE mappings, these dependencies are not
- recorded because the flag has not been applied to the newly
- loaded objects. This means that upon dlopen failure, these
- NODELETE objects can be unloaded despite existing references to
- them. However, such relocation dependencies in IFUNC resolvers
- are undefined anyway, so this is not a problem. */
-
- for (unsigned int i = last; i-- > first; )
- {
- l = new->l_initfini[i];
-
- if (l->l_real->l_relocated)
- continue;
-
- if (! relocation_in_progress)
- {
- /* Notify the debugger that relocations are about to happen. */
- LIBC_PROBE (reloc_start, 2, args->nsid, r);
- relocation_in_progress = 1;
- }
-
-#ifdef SHARED
- if (__glibc_unlikely (GLRO(dl_profile) != NULL))
- {
- /* If this here is the shared object which we want to profile
- make sure the profile is started. We can find out whether
- this is necessary or not by observing the `_dl_profile_map'
- variable. If it was NULL but is not NULL afterwards we must
- start the profiling. */
- struct link_map *old_profile_map = GL(dl_profile_map);
-
- _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
-
- if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
- {
- /* We must prepare the profiling. */
- _dl_start_profile ();
-
- /* Prevent unloading the object. */
- GL(dl_profile_map)->l_nodelete_active = true;
- }
- }
- else
-#endif
- _dl_relocate_object (l, l->l_scope, reloc_mode, 0);
- }
-
- /* This only performs the memory allocations. The actual update of
- the scopes happens below, after failure is impossible. */
- resize_scopes (new);
-
- /* Increase the size of the GL (dl_tls_dtv_slotinfo_list) data
- structure. */
- bool any_tls = resize_tls_slotinfo (new);
-
- /* Perform the necessary allocations for adding new global objects
- to the global scope below. */
- if (mode & RTLD_GLOBAL)
- add_to_global_resize (new);
-
- /* Demarcation point: After this, no recoverable errors are allowed.
- All memory allocations for new objects must have happened
- before. */
-
- /* Finalize the NODELETE status first. This comes before
- update_scopes, so that lazy binding will not see pending NODELETE
- state for newly loaded objects. There is a compiler barrier in
- update_scopes which ensures that the changes from
- activate_nodelete are visible before new objects show up in the
- local scope. */
- activate_nodelete (new);
-
- /* Second stage after resize_scopes: Actually perform the scope
- update. After this, dlsym and lazy binding can bind to new
- objects. */
- update_scopes (new);
-
- if (!_dl_find_object_update (new))
- _dl_signal_error (ENOMEM, new->l_libname->name, NULL,
- N_ ("cannot allocate address lookup data"));
-
- /* FIXME: It is unclear whether the order here is correct.
- Shouldn't new objects be made available for binding (and thus
- execution) only after there TLS data has been set up fully?
- Fixing bug 16134 will likely make this distinction less
- important. */
-
- /* Second stage after resize_tls_slotinfo: Update the slotinfo data
- structures. */
- if (any_tls)
- /* FIXME: This calls _dl_update_slotinfo, which aborts the process
- on memory allocation failure. See bug 16134. */
- update_tls_slotinfo (new);
-
- /* Notify the debugger all new objects have been relocated. */
- if (relocation_in_progress)
- LIBC_PROBE (reloc_complete, 3, args->nsid, r, new);
-
- /* If libc.so was not there before, attempt to call its early
- initialization routine. Indicate to the initialization routine
- whether the libc being initialized is the one in the base
- namespace. */
- if (!args->libc_already_loaded)
- {
- /* dlopen cannot be used to load an initial libc by design. */
- struct link_map *libc_map = GL(dl_ns)[args->nsid].libc_map;
- _dl_call_libc_early_init (libc_map, false);
- }
-
- args->worker_continue = true;
-}
-
-static void
-dl_open_worker (void *a)
-{
- struct dl_open_args *args = a;
-
- args->worker_continue = false;
-
- {
- /* Protects global and module specific TLS state. */
- __rtld_lock_lock_recursive (GL(dl_load_tls_lock));
-
- struct dl_exception ex;
- int err = _dl_catch_exception (&ex, dl_open_worker_begin, args);
-
- __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
-
- if (__glibc_unlikely (ex.errstring != NULL))
- /* Reraise the error. */
- _dl_signal_exception (err, &ex, NULL);
- }
-
- if (!args->worker_continue)
- return;
-
- int mode = args->mode;
- struct link_map *new = args->map;
-
- /* Run the initializer functions of new objects. Temporarily
- disable the exception handler, so that lazy binding failures are
- fatal. */
- {
- struct dl_init_args init_args =
- {
- .new = new,
- .argc = args->argc,
- .argv = args->argv,
- .env = args->env
- };
- _dl_catch_exception (NULL, call_dl_init, &init_args);
- }
-
- /* Now we can make the new map available in the global scope. */
- if (mode & RTLD_GLOBAL)
- add_to_global_update (new);
-
- /* Let the user know about the opencount. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
- _dl_debug_printf ("opening file=%s [%lu]; direct_opencount=%u\n\n",
- new->l_name, new->l_ns, new->l_direct_opencount);
-}
-
-void *
-_dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid,
- int argc, char *argv[], char *env[])
-{
- if ((mode & RTLD_BINDING_MASK) == 0)
- /* One of the flags must be set. */
- _dl_signal_error (EINVAL, file, NULL, N_("invalid mode for dlopen()"));
-
- /* Make sure we are alone. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
-
- if (__glibc_unlikely (nsid == LM_ID_NEWLM))
- {
- /* Find a new namespace. */
- for (nsid = 1; DL_NNS > 1 && nsid < GL(dl_nns); ++nsid)
- if (GL(dl_ns)[nsid]._ns_loaded == NULL)
- break;
-
- if (__glibc_unlikely (nsid == DL_NNS))
- {
- /* No more namespace available. */
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-
- _dl_signal_error (EINVAL, file, NULL, N_("\
-no more namespaces available for dlmopen()"));
- }
-
- if (nsid == GL(dl_nns))
- ++GL(dl_nns);
-
- /* Initialize the new namespace. Most members are
- zero-initialized, only the lock needs special treatment. */
- memset (&GL(dl_ns)[nsid], 0, sizeof (GL(dl_ns)[nsid]));
- __rtld_lock_initialize (GL(dl_ns)[nsid]._ns_unique_sym_table.lock);
-
- _dl_debug_update (nsid)->r_state = RT_CONSISTENT;
- }
- /* Never allow loading a DSO in a namespace which is empty. Such
- direct placements is only causing problems. Also don't allow
- loading into a namespace used for auditing. */
- else if (__glibc_unlikely (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER)
- && (__glibc_unlikely (nsid < 0 || nsid >= GL(dl_nns))
- /* This prevents the [NSID] index expressions from being
- evaluated, so the compiler won't think that we are
- accessing an invalid index here in the !SHARED case where
- DL_NNS is 1 and so any NSID != 0 is invalid. */
- || DL_NNS == 1
- || GL(dl_ns)[nsid]._ns_nloaded == 0
- || GL(dl_ns)[nsid]._ns_loaded->l_auditing))
- _dl_signal_error (EINVAL, file, NULL,
- N_("invalid target namespace in dlmopen()"));
-
- struct dl_open_args args;
- args.file = file;
- args.mode = mode;
- args.caller_dlopen = caller_dlopen;
- args.map = NULL;
- args.nsid = nsid;
- /* args.libc_already_loaded is always assigned by dl_open_worker
- (before any explicit/non-local returns). */
- args.argc = argc;
- args.argv = argv;
- args.env = env;
-
- struct dl_exception exception;
- int errcode = _dl_catch_exception (&exception, dl_open_worker, &args);
-
-#if defined USE_LDCONFIG && !defined MAP_COPY
- /* We must unmap the cache file. */
- _dl_unload_cache ();
-#endif
-
- /* Do this for both the error and success cases. The old value has
- only been determined if the namespace ID was assigned (i.e., it
- is not __LM_ID_CALLER). In the success case, we actually may
- have consumed more pending adds than planned (because the local
- scopes overlap in case of a recursive dlopen, the inner dlopen
- doing some of the globalization work of the outer dlopen), so the
- old pending adds value is larger than absolutely necessary.
- Since it is just a conservative upper bound, this is harmless.
- The top-level dlopen call will restore the field to zero. */
- if (args.nsid >= 0)
- GL (dl_ns)[args.nsid]._ns_global_scope_pending_adds
- = args.original_global_scope_pending_adds;
-
- /* See if an error occurred during loading. */
- if (__glibc_unlikely (exception.errstring != NULL))
- {
- /* Avoid keeping around a dangling reference to the libc.so link
- map in case it has been cached in libc_map. */
- if (!args.libc_already_loaded)
- GL(dl_ns)[args.nsid].libc_map = NULL;
-
- /* Remove the object from memory. It may be in an inconsistent
- state if relocation failed, for example. */
- if (args.map)
- {
- _dl_close_worker (args.map, true);
-
- /* All l_nodelete_pending objects should have been deleted
- at this point, which is why it is not necessary to reset
- the flag here. */
- }
-
- /* Release the lock. */
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-
- /* Reraise the error. */
- _dl_signal_exception (errcode, &exception, NULL);
- }
-
- assert (_dl_debug_update (args.nsid)->r_state == RT_CONSISTENT);
-
- /* Release the lock. */
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-
- return args.map;
-}
-
-
-void
-_dl_show_scope (struct link_map *l, int from)
-{
- _dl_debug_printf ("object=%s [%lu]\n",
- DSO_FILENAME (l->l_name), l->l_ns);
- if (l->l_scope != NULL)
- for (int scope_cnt = from; l->l_scope[scope_cnt] != NULL; ++scope_cnt)
- {
- _dl_debug_printf (" scope %u:", scope_cnt);
-
- for (unsigned int cnt = 0; cnt < l->l_scope[scope_cnt]->r_nlist; ++cnt)
- if (*l->l_scope[scope_cnt]->r_list[cnt]->l_name)
- _dl_debug_printf_c (" %s",
- l->l_scope[scope_cnt]->r_list[cnt]->l_name);
- else
- _dl_debug_printf_c (" %s", RTLD_PROGNAME);
-
- _dl_debug_printf_c ("\n");
- }
- else
- _dl_debug_printf (" no scope\n");
- _dl_debug_printf ("\n");
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/rtld.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/rtld.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/rtld.c (nonexistent)
@@ -1,2827 +0,0 @@
-/* Run time dynamic linker.
- Copyright (C) 1995-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <errno.h>
-#include <dlfcn.h>
-#include <fcntl.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/mman.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <ldsodefs.h>
-#include <_itoa.h>
-#include <entry.h>
-#include <fpu_control.h>
-#include <hp-timing.h>
-#include <libc-lock.h>
-#include <unsecvars.h>
-#include <dl-cache.h>
-#include <dl-osinfo.h>
-#include <dl-procinfo.h>
-#include <dl-prop.h>
-#include <dl-vdso.h>
-#include <dl-vdso-setup.h>
-#include <tls.h>
-#include <stap-probe.h>
-#include <stackinfo.h>
-#include <not-cancel.h>
-#include <array_length.h>
-#include <libc-early-init.h>
-#include <dl-main.h>
-#include <gnu/lib-names.h>
-#include <dl-tunables.h>
-#include <get-dynamic-info.h>
-#include <dl-execve.h>
-#include <dl-find_object.h>
-#include <dl-audit-check.h>
-
-#include <assert.h>
-
-/* This #define produces dynamic linking inline functions for
- bootstrap relocation instead of general-purpose relocation.
- Since ld.so must not have any undefined symbols the result
- is trivial: always the map of ld.so itself. */
-#define RTLD_BOOTSTRAP
-#define RESOLVE_MAP(map, scope, sym, version, flags) map
-#include "dynamic-link.h"
-
-/* Must include after <dl-machine.h> for DT_MIPS definition. */
-#include <dl-debug.h>
-
-/* Only enables rtld profiling for architectures which provides non generic
- hp-timing support. The generic support requires either syscall
- (clock_gettime), which will incur in extra overhead on loading time.
- Using vDSO is also an option, but it will require extra support on loader
- to setup the vDSO pointer before its usage. */
-#if HP_TIMING_INLINE
-# define RLTD_TIMING_DECLARE(var, classifier,...) \
- classifier hp_timing_t var __VA_ARGS__
-# define RTLD_TIMING_VAR(var) RLTD_TIMING_DECLARE (var, )
-# define RTLD_TIMING_SET(var, value) (var) = (value)
-# define RTLD_TIMING_REF(var) &(var)
-
-static inline void
-rtld_timer_start (hp_timing_t *var)
-{
- HP_TIMING_NOW (*var);
-}
-
-static inline void
-rtld_timer_stop (hp_timing_t *var, hp_timing_t start)
-{
- hp_timing_t stop;
- HP_TIMING_NOW (stop);
- HP_TIMING_DIFF (*var, start, stop);
-}
-
-static inline void
-rtld_timer_accum (hp_timing_t *sum, hp_timing_t start)
-{
- hp_timing_t stop;
- rtld_timer_stop (&stop, start);
- HP_TIMING_ACCUM_NT(*sum, stop);
-}
-#else
-# define RLTD_TIMING_DECLARE(var, classifier...)
-# define RTLD_TIMING_SET(var, value)
-# define RTLD_TIMING_VAR(var)
-# define RTLD_TIMING_REF(var) 0
-# define rtld_timer_start(var)
-# define rtld_timer_stop(var, start)
-# define rtld_timer_accum(sum, start)
-#endif
-
-/* Avoid PLT use for our local calls at startup. */
-extern __typeof (__mempcpy) __mempcpy attribute_hidden;
-
-/* GCC has mental blocks about _exit. */
-extern __typeof (_exit) exit_internal asm ("_exit") attribute_hidden;
-#define _exit exit_internal
-
-/* Helper function to handle errors while resolving symbols. */
-static void print_unresolved (int errcode, const char *objname,
- const char *errsting);
-
-/* Helper function to handle errors when a version is missing. */
-static void print_missing_version (int errcode, const char *objname,
- const char *errsting);
-
-/* Print the various times we collected. */
-static void print_statistics (const hp_timing_t *total_timep);
-
-/* Creates an empty audit list. */
-static void audit_list_init (struct audit_list *);
-
-/* Add a string to the end of the audit list, for later parsing. Must
- not be called after audit_list_next. */
-static void audit_list_add_string (struct audit_list *, const char *);
-
-/* Add the audit strings from the link map, found in the dynamic
- segment at TG (either DT_AUDIT and DT_DEPAUDIT). Must be called
- before audit_list_next. */
-static void audit_list_add_dynamic_tag (struct audit_list *,
- struct link_map *,
- unsigned int tag);
-
-/* Extract the next audit module from the audit list. Only modules
- for which dso_name_valid_for_suid is true are returned. Must be
- called after all the audit_list_add_string,
- audit_list_add_dynamic_tags calls. */
-static const char *audit_list_next (struct audit_list *);
-
-/* Initialize *STATE with the defaults. */
-static void dl_main_state_init (struct dl_main_state *state);
-
-/* Process all environments variables the dynamic linker must recognize.
- Since all of them start with `LD_' we are a bit smarter while finding
- all the entries. */
-extern char **_environ attribute_hidden;
-static void process_envvars (struct dl_main_state *state);
-
-int _dl_argc attribute_relro attribute_hidden;
-char **_dl_argv attribute_relro = NULL;
-rtld_hidden_data_def (_dl_argv)
-
-#ifndef THREAD_SET_STACK_GUARD
-/* Only exported for architectures that don't store the stack guard canary
- in thread local area. */
-uintptr_t __stack_chk_guard attribute_relro;
-#endif
-
-/* Only exported for architectures that don't store the pointer guard
- value in thread local area. */
-uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
-#ifndef THREAD_SET_POINTER_GUARD
-strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
-#endif
-
-/* Check that AT_SECURE=0, or that the passed name does not contain
- directories and is not overly long. Reject empty names
- unconditionally. */
-static bool
-dso_name_valid_for_suid (const char *p)
-{
- if (__glibc_unlikely (__libc_enable_secure))
- {
- /* Ignore pathnames with directories for AT_SECURE=1
- programs, and also skip overlong names. */
- size_t len = strlen (p);
- if (len >= SECURE_NAME_LIMIT || memchr (p, '/', len) != NULL)
- return false;
- }
- return *p != '\0';
-}
-
-static void
-audit_list_init (struct audit_list *list)
-{
- list->length = 0;
- list->current_index = 0;
- list->current_tail = NULL;
-}
-
-static void
-audit_list_add_string (struct audit_list *list, const char *string)
-{
- /* Empty strings do not load anything. */
- if (*string == '\0')
- return;
-
- if (list->length == array_length (list->audit_strings))
- _dl_fatal_printf ("Fatal glibc error: Too many audit modules requested\n");
-
- list->audit_strings[list->length++] = string;
-
- /* Initialize processing of the first string for
- audit_list_next. */
- if (list->length == 1)
- list->current_tail = string;
-}
-
-static void
-audit_list_add_dynamic_tag (struct audit_list *list, struct link_map *main_map,
- unsigned int tag)
-{
- ElfW(Dyn) *info = main_map->l_info[ADDRIDX (tag)];
- const char *strtab = (const char *) D_PTR (main_map, l_info[DT_STRTAB]);
- if (info != NULL)
- audit_list_add_string (list, strtab + info->d_un.d_val);
-}
-
-static const char *
-audit_list_next (struct audit_list *list)
-{
- if (list->current_tail == NULL)
- return NULL;
-
- while (true)
- {
- /* Advance to the next string in audit_strings if the current
- string has been exhausted. */
- while (*list->current_tail == '\0')
- {
- ++list->current_index;
- if (list->current_index == list->length)
- {
- list->current_tail = NULL;
- return NULL;
- }
- list->current_tail = list->audit_strings[list->current_index];
- }
-
- /* Split the in-string audit list at the next colon colon. */
- size_t len = strcspn (list->current_tail, ":");
- if (len > 0 && len < sizeof (list->fname))
- {
- memcpy (list->fname, list->current_tail, len);
- list->fname[len] = '\0';
- }
- else
- /* Mark the name as unusable for dso_name_valid_for_suid. */
- list->fname[0] = '\0';
-
- /* Skip over the substring and the following delimiter. */
- list->current_tail += len;
- if (*list->current_tail == ':')
- ++list->current_tail;
-
- /* If the name is valid, return it. */
- if (dso_name_valid_for_suid (list->fname))
- return list->fname;
-
- /* Otherwise wrap around to find the next list element. . */
- }
-}
-
-/* Count audit modules before they are loaded so GLRO(dl_naudit)
- is not yet usable. */
-static size_t
-audit_list_count (struct audit_list *list)
-{
- /* Restore the audit_list iterator state at the end. */
- const char *saved_tail = list->current_tail;
- size_t naudit = 0;
-
- assert (list->current_index == 0);
- while (audit_list_next (list) != NULL)
- naudit++;
- list->current_tail = saved_tail;
- list->current_index = 0;
- return naudit;
-}
-
-static void
-dl_main_state_init (struct dl_main_state *state)
-{
- audit_list_init (&state->audit_list);
- state->library_path = NULL;
- state->library_path_source = NULL;
- state->preloadlist = NULL;
- state->preloadarg = NULL;
- state->glibc_hwcaps_prepend = NULL;
- state->glibc_hwcaps_mask = NULL;
- state->mode = rtld_mode_normal;
- state->any_debug = false;
- state->version_info = false;
-}
-
-#ifndef HAVE_INLINED_SYSCALLS
-/* Set nonzero during loading and initialization of executable and
- libraries, cleared before the executable's entry point runs. This
- must not be initialized to nonzero, because the unused dynamic
- linker loaded in for libc.so's "ld.so.1" dep will provide the
- definition seen by libc.so's initializer; that value must be zero,
- and will be since that dynamic linker's _dl_start and dl_main will
- never be called. */
-int _dl_starting_up = 0;
-rtld_hidden_def (_dl_starting_up)
-#endif
-
-/* This is the structure which defines all variables global to ld.so
- (except those which cannot be added for some reason). */
-struct rtld_global _rtld_global =
- {
- /* Get architecture specific initializer. */
-#include <dl-procruntime.c>
- /* Generally the default presumption without further information is an
- * executable stack but this is not true for all platforms. */
- ._dl_stack_flags = DEFAULT_STACK_PERMS,
-#ifdef _LIBC_REENTRANT
- ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
- ._dl_load_write_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
- ._dl_load_tls_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
-#endif
- ._dl_nns = 1,
- ._dl_ns =
- {
-#ifdef _LIBC_REENTRANT
- [LM_ID_BASE] = { ._ns_unique_sym_table
- = { .lock = _RTLD_LOCK_RECURSIVE_INITIALIZER } }
-#endif
- }
- };
-/* If we would use strong_alias here the compiler would see a
- non-hidden definition. This would undo the effect of the previous
- declaration. So spell out what strong_alias does plus add the
- visibility attribute. */
-extern struct rtld_global _rtld_local
- __attribute__ ((alias ("_rtld_global"), visibility ("hidden")));
-
-
-/* This variable is similar to _rtld_local, but all values are
- read-only after relocation. */
-struct rtld_global_ro _rtld_global_ro attribute_relro =
- {
- /* Get architecture specific initializer. */
-#include <dl-procinfo.c>
-#ifdef NEED_DL_SYSINFO
- ._dl_sysinfo = DL_SYSINFO_DEFAULT,
-#endif
- ._dl_debug_fd = STDERR_FILENO,
-#if !HAVE_TUNABLES
- ._dl_hwcap_mask = HWCAP_IMPORTANT,
-#endif
- ._dl_lazy = 1,
- ._dl_fpu_control = _FPU_DEFAULT,
- ._dl_pagesize = EXEC_PAGESIZE,
- ._dl_inhibit_cache = 0,
-
- /* Function pointers. */
- ._dl_debug_printf = _dl_debug_printf,
- ._dl_mcount = _dl_mcount,
- ._dl_lookup_symbol_x = _dl_lookup_symbol_x,
- ._dl_open = _dl_open,
- ._dl_close = _dl_close,
- ._dl_catch_error = _rtld_catch_error,
- ._dl_error_free = _dl_error_free,
- ._dl_tls_get_addr_soft = _dl_tls_get_addr_soft,
- ._dl_libc_freeres = __rtld_libc_freeres,
- };
-/* If we would use strong_alias here the compiler would see a
- non-hidden definition. This would undo the effect of the previous
- declaration. So spell out was strong_alias does plus add the
- visibility attribute. */
-extern struct rtld_global_ro _rtld_local_ro
- __attribute__ ((alias ("_rtld_global_ro"), visibility ("hidden")));
-
-
-static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
- ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv);
-
-/* These two variables cannot be moved into .data.rel.ro. */
-static struct libname_list _dl_rtld_libname;
-static struct libname_list _dl_rtld_libname2;
-
-/* Variable for statistics. */
-RLTD_TIMING_DECLARE (relocate_time, static);
-RLTD_TIMING_DECLARE (load_time, static, attribute_relro);
-RLTD_TIMING_DECLARE (start_time, static, attribute_relro);
-
-/* Additional definitions needed by TLS initialization. */
-#ifdef TLS_INIT_HELPER
-TLS_INIT_HELPER
-#endif
-
-/* Helper function for syscall implementation. */
-#ifdef DL_SYSINFO_IMPLEMENTATION
-DL_SYSINFO_IMPLEMENTATION
-#endif
-
-/* Before ld.so is relocated we must not access variables which need
- relocations. This means variables which are exported. Variables
- declared as static are fine. If we can mark a variable hidden this
- is fine, too. The latter is important here. We can avoid setting
- up a temporary link map for ld.so if we can mark _rtld_global as
- hidden. */
-#ifndef HIDDEN_VAR_NEEDS_DYNAMIC_RELOC
-# define DONT_USE_BOOTSTRAP_MAP 1
-#endif
-
-#ifdef DONT_USE_BOOTSTRAP_MAP
-static ElfW(Addr) _dl_start_final (void *arg);
-#else
-struct dl_start_final_info
-{
- struct link_map l;
- RTLD_TIMING_VAR (start_time);
-};
-static ElfW(Addr) _dl_start_final (void *arg,
- struct dl_start_final_info *info);
-#endif
-
-/* These are defined magically by the linker. */
-extern const ElfW(Ehdr) __ehdr_start attribute_hidden;
-extern char _etext[] attribute_hidden;
-extern char _end[] attribute_hidden;
-
-
-#ifdef RTLD_START
-RTLD_START
-#else
-# error "sysdeps/MACHINE/dl-machine.h fails to define RTLD_START"
-#endif
-
-/* This is the second half of _dl_start (below). It can be inlined safely
- under DONT_USE_BOOTSTRAP_MAP, where it is careful not to make any GOT
- references. When the tools don't permit us to avoid using a GOT entry
- for _dl_rtld_global (no attribute_hidden support), we must make sure
- this function is not inlined (see below). */
-
-#ifdef DONT_USE_BOOTSTRAP_MAP
-static inline ElfW(Addr) __attribute__ ((always_inline))
-_dl_start_final (void *arg)
-#else
-static ElfW(Addr) __attribute__ ((noinline))
-_dl_start_final (void *arg, struct dl_start_final_info *info)
-#endif
-{
- ElfW(Addr) start_addr;
-
- /* Do not use an initializer for these members because it would
- intefere with __rtld_static_init. */
- GLRO (dl_find_object) = &_dl_find_object;
-
- /* If it hasn't happen yet record the startup time. */
- rtld_timer_start (&start_time);
-#if !defined DONT_USE_BOOTSTRAP_MAP
- RTLD_TIMING_SET (start_time, info->start_time);
-#endif
-
- /* Transfer data about ourselves to the permanent link_map structure. */
-#ifndef DONT_USE_BOOTSTRAP_MAP
- GL(dl_rtld_map).l_addr = info->l.l_addr;
- GL(dl_rtld_map).l_ld = info->l.l_ld;
- GL(dl_rtld_map).l_ld_readonly = info->l.l_ld_readonly;
- memcpy (GL(dl_rtld_map).l_info, info->l.l_info,
- sizeof GL(dl_rtld_map).l_info);
- GL(dl_rtld_map).l_mach = info->l.l_mach;
- GL(dl_rtld_map).l_relocated = 1;
-#endif
- _dl_setup_hash (&GL(dl_rtld_map));
- GL(dl_rtld_map).l_real = &GL(dl_rtld_map);
- GL(dl_rtld_map).l_map_start = (ElfW(Addr)) &__ehdr_start;
- GL(dl_rtld_map).l_map_end = (ElfW(Addr)) _end;
- GL(dl_rtld_map).l_text_end = (ElfW(Addr)) _etext;
- /* Copy the TLS related data if necessary. */
-#ifndef DONT_USE_BOOTSTRAP_MAP
-# if NO_TLS_OFFSET != 0
- GL(dl_rtld_map).l_tls_offset = NO_TLS_OFFSET;
-# endif
-#endif
-
- /* Initialize the stack end variable. */
- __libc_stack_end = __builtin_frame_address (0);
-
- /* Call the OS-dependent function to set up life so we can do things like
- file access. It will call `dl_main' (below) to do all the real work
- of the dynamic linker, and then unwind our frame and run the user
- entry point on the same stack we entered on. */
- start_addr = _dl_sysdep_start (arg, &dl_main);
-
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS))
- {
- RTLD_TIMING_VAR (rtld_total_time);
- rtld_timer_stop (&rtld_total_time, start_time);
- print_statistics (RTLD_TIMING_REF(rtld_total_time));
- }
-
-#ifndef ELF_MACHINE_START_ADDRESS
-# define ELF_MACHINE_START_ADDRESS(map, start) (start)
-#endif
- return ELF_MACHINE_START_ADDRESS (GL(dl_ns)[LM_ID_BASE]._ns_loaded, start_addr);
-}
-
-#ifdef DONT_USE_BOOTSTRAP_MAP
-# define bootstrap_map GL(dl_rtld_map)
-#else
-# define bootstrap_map info.l
-#endif
-
-static ElfW(Addr) __attribute_used__
-_dl_start (void *arg)
-{
-#ifdef DONT_USE_BOOTSTRAP_MAP
- rtld_timer_start (&start_time);
-#else
- struct dl_start_final_info info;
- rtld_timer_start (&info.start_time);
-#endif
-
- /* Partly clean the `bootstrap_map' structure up. Don't use
- `memset' since it might not be built in or inlined and we cannot
- make function calls at this point. Use '__builtin_memset' if we
- know it is available. We do not have to clear the memory if we
- do not have to use the temporary bootstrap_map. Global variables
- are initialized to zero by default. */
-#ifndef DONT_USE_BOOTSTRAP_MAP
-# ifdef HAVE_BUILTIN_MEMSET
- __builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info));
-# else
- for (size_t cnt = 0;
- cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]);
- ++cnt)
- bootstrap_map.l_info[cnt] = 0;
-# endif
-#endif
-
- /* Figure out the run-time load address of the dynamic linker itself. */
- bootstrap_map.l_addr = elf_machine_load_address ();
-
- /* Read our own dynamic section and fill in the info array. */
- bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + elf_machine_dynamic ();
- bootstrap_map.l_ld_readonly = DL_RO_DYN_SECTION;
- elf_get_dynamic_info (&bootstrap_map, true, false);
-
-#if NO_TLS_OFFSET != 0
- bootstrap_map.l_tls_offset = NO_TLS_OFFSET;
-#endif
-
-#ifdef ELF_MACHINE_BEFORE_RTLD_RELOC
- ELF_MACHINE_BEFORE_RTLD_RELOC (&bootstrap_map, bootstrap_map.l_info);
-#endif
-
- if (bootstrap_map.l_addr)
- {
- /* Relocate ourselves so we can do normal function calls and
- data access using the global offset table. */
-
- ELF_DYNAMIC_RELOCATE (&bootstrap_map, NULL, 0, 0, 0);
- }
- bootstrap_map.l_relocated = 1;
-
- /* Please note that we don't allow profiling of this object and
- therefore need not test whether we have to allocate the array
- for the relocation results (as done in dl-reloc.c). */
-
- /* Now life is sane; we can call functions and access global data.
- Set up to use the operating system facilities, and find out from
- the operating system's program loader where to find the program
- header table in core. Put the rest of _dl_start into a separate
- function, that way the compiler cannot put accesses to the GOT
- before ELF_DYNAMIC_RELOCATE. */
-
- __rtld_malloc_init_stubs ();
-
-#ifdef DONT_USE_BOOTSTRAP_MAP
- return _dl_start_final (arg);
-#else
- return _dl_start_final (arg, &info);
-#endif
-}
-
-
-
-/* Now life is peachy; we can do all normal operations.
- On to the real work. */
-
-/* Some helper functions. */
-
-/* Arguments to relocate_doit. */
-struct relocate_args
-{
- struct link_map *l;
- int reloc_mode;
-};
-
-struct map_args
-{
- /* Argument to map_doit. */
- const char *str;
- struct link_map *loader;
- int mode;
- /* Return value of map_doit. */
- struct link_map *map;
-};
-
-struct dlmopen_args
-{
- const char *fname;
- struct link_map *map;
-};
-
-struct lookup_args
-{
- const char *name;
- struct link_map *map;
- void *result;
-};
-
-/* Arguments to version_check_doit. */
-struct version_check_args
-{
- int doexit;
- int dotrace;
-};
-
-static void
-relocate_doit (void *a)
-{
- struct relocate_args *args = (struct relocate_args *) a;
-
- _dl_relocate_object (args->l, args->l->l_scope, args->reloc_mode, 0);
-}
-
-static void
-map_doit (void *a)
-{
- struct map_args *args = (struct map_args *) a;
- int type = (args->mode == __RTLD_OPENEXEC) ? lt_executable : lt_library;
- args->map = _dl_map_object (args->loader, args->str, type, 0,
- args->mode, LM_ID_BASE);
-}
-
-static void
-dlmopen_doit (void *a)
-{
- struct dlmopen_args *args = (struct dlmopen_args *) a;
- args->map = _dl_open (args->fname,
- (RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT
- | __RTLD_SECURE),
- dl_main, LM_ID_NEWLM, _dl_argc, _dl_argv,
- __environ);
-}
-
-static void
-lookup_doit (void *a)
-{
- struct lookup_args *args = (struct lookup_args *) a;
- const ElfW(Sym) *ref = NULL;
- args->result = NULL;
- lookup_t l = _dl_lookup_symbol_x (args->name, args->map, &ref,
- args->map->l_local_scope, NULL, 0,
- DL_LOOKUP_RETURN_NEWEST, NULL);
- if (ref != NULL)
- args->result = DL_SYMBOL_ADDRESS (l, ref);
-}
-
-static void
-version_check_doit (void *a)
-{
- struct version_check_args *args = (struct version_check_args *) a;
- if (_dl_check_all_versions (GL(dl_ns)[LM_ID_BASE]._ns_loaded, 1,
- args->dotrace) && args->doexit)
- /* We cannot start the application. Abort now. */
- _exit (1);
-}
-
-
-static inline struct link_map *
-find_needed (const char *name)
-{
- struct r_scope_elem *scope = &GL(dl_ns)[LM_ID_BASE]._ns_loaded->l_searchlist;
- unsigned int n = scope->r_nlist;
-
- while (n-- > 0)
- if (_dl_name_match_p (name, scope->r_list[n]))
- return scope->r_list[n];
-
- /* Should never happen. */
- return NULL;
-}
-
-static int
-match_version (const char *string, struct link_map *map)
-{
- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- ElfW(Verdef) *def;
-
-#define VERDEFTAG (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (DT_VERDEF))
- if (map->l_info[VERDEFTAG] == NULL)
- /* The file has no symbol versioning. */
- return 0;
-
- def = (ElfW(Verdef) *) ((char *) map->l_addr
- + map->l_info[VERDEFTAG]->d_un.d_ptr);
- while (1)
- {
- ElfW(Verdaux) *aux = (ElfW(Verdaux) *) ((char *) def + def->vd_aux);
-
- /* Compare the version strings. */
- if (strcmp (string, strtab + aux->vda_name) == 0)
- /* Bingo! */
- return 1;
-
- /* If no more definitions we failed to find what we want. */
- if (def->vd_next == 0)
- break;
-
- /* Next definition. */
- def = (ElfW(Verdef) *) ((char *) def + def->vd_next);
- }
-
- return 0;
-}
-
-static bool tls_init_tp_called;
-
-static void *
-init_tls (size_t naudit)
-{
- /* Number of elements in the static TLS block. */
- GL(dl_tls_static_nelem) = GL(dl_tls_max_dtv_idx);
-
- /* Do not do this twice. The audit interface might have required
- the DTV interfaces to be set up early. */
- if (GL(dl_initial_dtv) != NULL)
- return NULL;
-
- /* Allocate the array which contains the information about the
- dtv slots. We allocate a few entries more than needed to
- avoid the need for reallocation. */
- size_t nelem = GL(dl_tls_max_dtv_idx) + 1 + TLS_SLOTINFO_SURPLUS;
-
- /* Allocate. */
- GL(dl_tls_dtv_slotinfo_list) = (struct dtv_slotinfo_list *)
- calloc (sizeof (struct dtv_slotinfo_list)
- + nelem * sizeof (struct dtv_slotinfo), 1);
- /* No need to check the return value. If memory allocation failed
- the program would have been terminated. */
-
- struct dtv_slotinfo *slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
- GL(dl_tls_dtv_slotinfo_list)->len = nelem;
- GL(dl_tls_dtv_slotinfo_list)->next = NULL;
-
- /* Fill in the information from the loaded modules. No namespace
- but the base one can be filled at this time. */
- assert (GL(dl_ns)[LM_ID_BASE + 1]._ns_loaded == NULL);
- int i = 0;
- for (struct link_map *l = GL(dl_ns)[LM_ID_BASE]._ns_loaded; l != NULL;
- l = l->l_next)
- if (l->l_tls_blocksize != 0)
- {
- /* This is a module with TLS data. Store the map reference.
- The generation counter is zero. */
- slotinfo[i].map = l;
- /* slotinfo[i].gen = 0; */
- ++i;
- }
- assert (i == GL(dl_tls_max_dtv_idx));
-
- /* Calculate the size of the static TLS surplus. */
- _dl_tls_static_surplus_init (naudit);
-
- /* Compute the TLS offsets for the various blocks. */
- _dl_determine_tlsoffset ();
-
- /* Construct the static TLS block and the dtv for the initial
- thread. For some platforms this will include allocating memory
- for the thread descriptor. The memory for the TLS block will
- never be freed. It should be allocated accordingly. The dtv
- array can be changed if dynamic loading requires it. */
- void *tcbp = _dl_allocate_tls_storage ();
- if (tcbp == NULL)
- _dl_fatal_printf ("\
-cannot allocate TLS data structures for initial thread\n");
-
- /* Store for detection of the special case by __tls_get_addr
- so it knows not to pass this dtv to the normal realloc. */
- GL(dl_initial_dtv) = GET_DTV (tcbp);
-
- /* And finally install it for the main thread. */
- const char *lossage = TLS_INIT_TP (tcbp);
- if (__glibc_unlikely (lossage != NULL))
- _dl_fatal_printf ("cannot set up thread-local storage: %s\n", lossage);
- __tls_init_tp ();
- tls_init_tp_called = true;
-
- return tcbp;
-}
-
-static unsigned int
-do_preload (const char *fname, struct link_map *main_map, const char *where)
-{
- const char *objname;
- const char *err_str = NULL;
- struct map_args args;
- bool malloced;
-
- args.str = fname;
- args.loader = main_map;
- args.mode = __RTLD_SECURE;
-
- unsigned int old_nloaded = GL(dl_ns)[LM_ID_BASE]._ns_nloaded;
-
- (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit, &args);
- if (__glibc_unlikely (err_str != NULL))
- {
- _dl_error_printf ("\
-ERROR: ld.so: object '%s' from %s cannot be preloaded (%s): ignored.\n",
- fname, where, err_str);
- /* No need to call free, this is still before
- the libc's malloc is used. */
- }
- else if (GL(dl_ns)[LM_ID_BASE]._ns_nloaded != old_nloaded)
- /* It is no duplicate. */
- return 1;
-
- /* Nothing loaded. */
- return 0;
-}
-
-static void
-security_init (void)
-{
- /* Set up the stack checker's canary. */
- uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
-#ifdef THREAD_SET_STACK_GUARD
- THREAD_SET_STACK_GUARD (stack_chk_guard);
-#else
- __stack_chk_guard = stack_chk_guard;
-#endif
-
- /* Set up the pointer guard as well, if necessary. */
- uintptr_t pointer_chk_guard
- = _dl_setup_pointer_guard (_dl_random, stack_chk_guard);
-#ifdef THREAD_SET_POINTER_GUARD
- THREAD_SET_POINTER_GUARD (pointer_chk_guard);
-#endif
- __pointer_chk_guard_local = pointer_chk_guard;
-
- /* We do not need the _dl_random value anymore. The less
- information we leave behind, the better, so clear the
- variable. */
- _dl_random = NULL;
-}
-
-#include <setup-vdso.h>
-
-/* The LD_PRELOAD environment variable gives list of libraries
- separated by white space or colons that are loaded before the
- executable's dependencies and prepended to the global scope list.
- (If the binary is running setuid all elements containing a '/' are
- ignored since it is insecure.) Return the number of preloads
- performed. Ditto for --preload command argument. */
-unsigned int
-handle_preload_list (const char *preloadlist, struct link_map *main_map,
- const char *where)
-{
- unsigned int npreloads = 0;
- const char *p = preloadlist;
- char fname[SECURE_PATH_LIMIT];
-
- while (*p != '\0')
- {
- /* Split preload list at space/colon. */
- size_t len = strcspn (p, " :");
- if (len > 0 && len < sizeof (fname))
- {
- memcpy (fname, p, len);
- fname[len] = '\0';
- }
- else
- fname[0] = '\0';
-
- /* Skip over the substring and the following delimiter. */
- p += len;
- if (*p != '\0')
- ++p;
-
- if (dso_name_valid_for_suid (fname))
- npreloads += do_preload (fname, main_map, where);
- }
- return npreloads;
-}
-
-/* Called if the audit DSO cannot be used: if it does not have the
- appropriate interfaces, or it expects a more recent version library
- version than what the dynamic linker provides. */
-static void
-unload_audit_module (struct link_map *map, int original_tls_idx)
-{
-#ifndef NDEBUG
- Lmid_t ns = map->l_ns;
-#endif
- _dl_close (map);
-
- /* Make sure the namespace has been cleared entirely. */
- assert (GL(dl_ns)[ns]._ns_loaded == NULL);
- assert (GL(dl_ns)[ns]._ns_nloaded == 0);
-
- GL(dl_tls_max_dtv_idx) = original_tls_idx;
-}
-
-/* Called to print an error message if loading of an audit module
- failed. */
-static void
-report_audit_module_load_error (const char *name, const char *err_str,
- bool malloced)
-{
- _dl_error_printf ("\
-ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
- name, err_str);
- if (malloced)
- free ((char *) err_str);
-}
-
-/* Load one audit module. */
-static void
-load_audit_module (const char *name, struct audit_ifaces **last_audit)
-{
- int original_tls_idx = GL(dl_tls_max_dtv_idx);
-
- struct dlmopen_args dlmargs;
- dlmargs.fname = name;
- dlmargs.map = NULL;
-
- const char *objname;
- const char *err_str = NULL;
- bool malloced;
- _dl_catch_error (&objname, &err_str, &malloced, dlmopen_doit, &dlmargs);
- if (__glibc_unlikely (err_str != NULL))
- {
- report_audit_module_load_error (name, err_str, malloced);
- return;
- }
-
- struct lookup_args largs;
- largs.name = "la_version";
- largs.map = dlmargs.map;
- _dl_catch_error (&objname, &err_str, &malloced, lookup_doit, &largs);
- if (__glibc_likely (err_str != NULL))
- {
- unload_audit_module (dlmargs.map, original_tls_idx);
- report_audit_module_load_error (name, err_str, malloced);
- return;
- }
-
- unsigned int (*laversion) (unsigned int) = largs.result;
-
- /* A null symbol indicates that something is very wrong with the
- loaded object because defined symbols are supposed to have a
- valid, non-null address. */
- assert (laversion != NULL);
-
- unsigned int lav = laversion (LAV_CURRENT);
- if (lav == 0)
- {
- /* Only print an error message if debugging because this can
- happen deliberately. */
- if (GLRO(dl_debug_mask) & DL_DEBUG_FILES)
- _dl_debug_printf ("\
-file=%s [%lu]; audit interface function la_version returned zero; ignored.\n",
- dlmargs.map->l_name, dlmargs.map->l_ns);
- unload_audit_module (dlmargs.map, original_tls_idx);
- return;
- }
-
- if (!_dl_audit_check_version (lav))
- {
- _dl_debug_printf ("\
-ERROR: audit interface '%s' requires version %d (maximum supported version %d); ignored.\n",
- name, lav, LAV_CURRENT);
- unload_audit_module (dlmargs.map, original_tls_idx);
- return;
- }
-
- enum { naudit_ifaces = 8 };
- union
- {
- struct audit_ifaces ifaces;
- void (*fptr[naudit_ifaces]) (void);
- } *newp = malloc (sizeof (*newp));
- if (newp == NULL)
- _dl_fatal_printf ("Out of memory while loading audit modules\n");
-
- /* Names of the auditing interfaces. All in one
- long string. */
- static const char audit_iface_names[] =
- "la_activity\0"
- "la_objsearch\0"
- "la_objopen\0"
- "la_preinit\0"
- LA_SYMBIND "\0"
-#define STRING(s) __STRING (s)
- "la_" STRING (ARCH_LA_PLTENTER) "\0"
- "la_" STRING (ARCH_LA_PLTEXIT) "\0"
- "la_objclose\0";
- unsigned int cnt = 0;
- const char *cp = audit_iface_names;
- do
- {
- largs.name = cp;
- _dl_catch_error (&objname, &err_str, &malloced, lookup_doit, &largs);
-
- /* Store the pointer. */
- if (err_str == NULL && largs.result != NULL)
- newp->fptr[cnt] = largs.result;
- else
- newp->fptr[cnt] = NULL;
- ++cnt;
-
- cp = rawmemchr (cp, '\0') + 1;
- }
- while (*cp != '\0');
- assert (cnt == naudit_ifaces);
-
- /* Now append the new auditing interface to the list. */
- newp->ifaces.next = NULL;
- if (*last_audit == NULL)
- *last_audit = GLRO(dl_audit) = &newp->ifaces;
- else
- *last_audit = (*last_audit)->next = &newp->ifaces;
-
- /* The dynamic linker link map is statically allocated, so the
- cookie in _dl_new_object has not happened. */
- link_map_audit_state (&GL (dl_rtld_map), GLRO (dl_naudit))->cookie
- = (intptr_t) &GL (dl_rtld_map);
-
- ++GLRO(dl_naudit);
-
- /* Mark the DSO as being used for auditing. */
- dlmargs.map->l_auditing = 1;
-}
-
-/* Load all audit modules. */
-static void
-load_audit_modules (struct link_map *main_map, struct audit_list *audit_list)
-{
- struct audit_ifaces *last_audit = NULL;
-
- while (true)
- {
- const char *name = audit_list_next (audit_list);
- if (name == NULL)
- break;
- load_audit_module (name, &last_audit);
- }
-
- /* Notify audit modules of the initially loaded modules (the main
- program and the dynamic linker itself). */
- if (GLRO(dl_naudit) > 0)
- {
- _dl_audit_objopen (main_map, LM_ID_BASE);
- _dl_audit_objopen (&GL(dl_rtld_map), LM_ID_BASE);
- }
-}
-
-/* Check if the executable is not actualy dynamically linked, and
- invoke it directly in that case. */
-static void
-rtld_chain_load (struct link_map *main_map, char *argv0)
-{
- /* The dynamic loader run against itself. */
- const char *rtld_soname
- = ((const char *) D_PTR (&GL(dl_rtld_map), l_info[DT_STRTAB])
- + GL(dl_rtld_map).l_info[DT_SONAME]->d_un.d_val);
- if (main_map->l_info[DT_SONAME] != NULL
- && strcmp (rtld_soname,
- ((const char *) D_PTR (main_map, l_info[DT_STRTAB])
- + main_map->l_info[DT_SONAME]->d_un.d_val)) == 0)
- _dl_fatal_printf ("%s: loader cannot load itself\n", rtld_soname);
-
- /* With DT_NEEDED dependencies, the executable is dynamically
- linked. */
- if (__glibc_unlikely (main_map->l_info[DT_NEEDED] != NULL))
- return;
-
- /* If the executable has program interpreter, it is dynamically
- linked. */
- for (size_t i = 0; i < main_map->l_phnum; ++i)
- if (main_map->l_phdr[i].p_type == PT_INTERP)
- return;
-
- const char *pathname = _dl_argv[0];
- if (argv0 != NULL)
- _dl_argv[0] = argv0;
- int errcode = __rtld_execve (pathname, _dl_argv, _environ);
- const char *errname = strerrorname_np (errcode);
- if (errname != NULL)
- _dl_fatal_printf("%s: cannot execute %s: %s\n",
- rtld_soname, pathname, errname);
- else
- _dl_fatal_printf("%s: cannot execute %s: %d\n",
- rtld_soname, pathname, errcode);
-}
-
-/* Called to complete the initialization of the link map for the main
- executable. Returns true if there is a PT_INTERP segment. */
-static bool
-rtld_setup_main_map (struct link_map *main_map)
-{
- /* This have already been filled in right after _dl_new_object, or
- as part of _dl_map_object. */
- const ElfW(Phdr) *phdr = main_map->l_phdr;
- ElfW(Word) phnum = main_map->l_phnum;
-
- bool has_interp = false;
-
- main_map->l_map_end = 0;
- main_map->l_text_end = 0;
- /* Perhaps the executable has no PT_LOAD header entries at all. */
- main_map->l_map_start = ~0;
- /* And it was opened directly. */
- ++main_map->l_direct_opencount;
- main_map->l_contiguous = 1;
-
- /* A PT_LOAD segment at an unexpected address will clear the
- l_contiguous flag. The ELF specification says that PT_LOAD
- segments need to be sorted in in increasing order, but perhaps
- not all executables follow this requirement. Having l_contiguous
- equal to 1 is just an optimization, so the code below does not
- try to sort the segments in case they are unordered.
-
- There is one corner case in which l_contiguous is not set to 1,
- but where it could be set: If a PIE (ET_DYN) binary is loaded by
- glibc itself (not the kernel), it is always contiguous due to the
- way the glibc loader works. However, the kernel loader may still
- create holes in this case, and the code here still uses 0
- conservatively for the glibc-loaded case, too. */
- ElfW(Addr) expected_load_address = 0;
-
- /* Scan the program header table for the dynamic section. */
- for (const ElfW(Phdr) *ph = phdr; ph < &phdr[phnum]; ++ph)
- switch (ph->p_type)
- {
- case PT_PHDR:
- /* Find out the load address. */
- main_map->l_addr = (ElfW(Addr)) phdr - ph->p_vaddr;
- break;
- case PT_DYNAMIC:
- /* This tells us where to find the dynamic section,
- which tells us everything we need to do. */
- main_map->l_ld = (void *) main_map->l_addr + ph->p_vaddr;
- main_map->l_ld_readonly = (ph->p_flags & PF_W) == 0;
- break;
- case PT_INTERP:
- /* This "interpreter segment" was used by the program loader to
- find the program interpreter, which is this program itself, the
- dynamic linker. We note what name finds us, so that a future
- dlopen call or DT_NEEDED entry, for something that wants to link
- against the dynamic linker as a shared library, will know that
- the shared object is already loaded. */
- _dl_rtld_libname.name = ((const char *) main_map->l_addr
- + ph->p_vaddr);
- /* _dl_rtld_libname.next = NULL; Already zero. */
- GL(dl_rtld_map).l_libname = &_dl_rtld_libname;
-
- /* Ordinarilly, we would get additional names for the loader from
- our DT_SONAME. This can't happen if we were actually linked as
- a static executable (detect this case when we have no DYNAMIC).
- If so, assume the filename component of the interpreter path to
- be our SONAME, and add it to our name list. */
- if (GL(dl_rtld_map).l_ld == NULL)
- {
- const char *p = NULL;
- const char *cp = _dl_rtld_libname.name;
-
- /* Find the filename part of the path. */
- while (*cp != '\0')
- if (*cp++ == '/')
- p = cp;
-
- if (p != NULL)
- {
- _dl_rtld_libname2.name = p;
- /* _dl_rtld_libname2.next = NULL; Already zero. */
- _dl_rtld_libname.next = &_dl_rtld_libname2;
- }
- }
-
- has_interp = true;
- break;
- case PT_LOAD:
- {
- ElfW(Addr) mapstart;
- ElfW(Addr) allocend;
-
- /* Remember where the main program starts in memory. */
- mapstart = (main_map->l_addr
- + (ph->p_vaddr & ~(GLRO(dl_pagesize) - 1)));
- if (main_map->l_map_start > mapstart)
- main_map->l_map_start = mapstart;
-
- if (main_map->l_contiguous && expected_load_address != 0
- && expected_load_address != mapstart)
- main_map->l_contiguous = 0;
-
- /* Also where it ends. */
- allocend = main_map->l_addr + ph->p_vaddr + ph->p_memsz;
- if (main_map->l_map_end < allocend)
- main_map->l_map_end = allocend;
- if ((ph->p_flags & PF_X) && allocend > main_map->l_text_end)
- main_map->l_text_end = allocend;
-
- /* The next expected address is the page following this load
- segment. */
- expected_load_address = ((allocend + GLRO(dl_pagesize) - 1)
- & ~(GLRO(dl_pagesize) - 1));
- }
- break;
-
- case PT_TLS:
- if (ph->p_memsz > 0)
- {
- /* Note that in the case the dynamic linker we duplicate work
- here since we read the PT_TLS entry already in
- _dl_start_final. But the result is repeatable so do not
- check for this special but unimportant case. */
- main_map->l_tls_blocksize = ph->p_memsz;
- main_map->l_tls_align = ph->p_align;
- if (ph->p_align == 0)
- main_map->l_tls_firstbyte_offset = 0;
- else
- main_map->l_tls_firstbyte_offset = (ph->p_vaddr
- & (ph->p_align - 1));
- main_map->l_tls_initimage_size = ph->p_filesz;
- main_map->l_tls_initimage = (void *) ph->p_vaddr;
-
- /* This image gets the ID one. */
- GL(dl_tls_max_dtv_idx) = main_map->l_tls_modid = 1;
- }
- break;
-
- case PT_GNU_STACK:
- GL(dl_stack_flags) = ph->p_flags;
- break;
-
- case PT_GNU_RELRO:
- main_map->l_relro_addr = ph->p_vaddr;
- main_map->l_relro_size = ph->p_memsz;
- break;
- }
- /* Process program headers again, but scan them backwards so
- that PT_NOTE can be skipped if PT_GNU_PROPERTY exits. */
- for (const ElfW(Phdr) *ph = &phdr[phnum]; ph != phdr; --ph)
- switch (ph[-1].p_type)
- {
- case PT_NOTE:
- _dl_process_pt_note (main_map, -1, &ph[-1]);
- break;
- case PT_GNU_PROPERTY:
- _dl_process_pt_gnu_property (main_map, -1, &ph[-1]);
- break;
- }
-
- /* Adjust the address of the TLS initialization image in case
- the executable is actually an ET_DYN object. */
- if (main_map->l_tls_initimage != NULL)
- main_map->l_tls_initimage
- = (char *) main_map->l_tls_initimage + main_map->l_addr;
- if (! main_map->l_map_end)
- main_map->l_map_end = ~0;
- if (! main_map->l_text_end)
- main_map->l_text_end = ~0;
- if (! GL(dl_rtld_map).l_libname && GL(dl_rtld_map).l_name)
- {
- /* We were invoked directly, so the program might not have a
- PT_INTERP. */
- _dl_rtld_libname.name = GL(dl_rtld_map).l_name;
- /* _dl_rtld_libname.next = NULL; Already zero. */
- GL(dl_rtld_map).l_libname = &_dl_rtld_libname;
- }
- else
- assert (GL(dl_rtld_map).l_libname); /* How else did we get here? */
-
- return has_interp;
-}
-
-/* Adjusts the contents of the stack and related globals for the user
- entry point. The ld.so processed skip_args arguments and bumped
- _dl_argv and _dl_argc accordingly. Those arguments are removed from
- argv here. */
-static void
-_dl_start_args_adjust (int skip_args)
-{
- void **sp = (void **) (_dl_argv - skip_args - 1);
- void **p = sp + skip_args;
-
- if (skip_args == 0)
- return;
-
- /* Sanity check. */
- intptr_t argc __attribute__ ((unused)) = (intptr_t) sp[0] - skip_args;
- assert (argc == _dl_argc);
-
- /* Adjust argc on stack. */
- sp[0] = (void *) (intptr_t) _dl_argc;
-
- /* Update globals in rtld. */
- _dl_argv -= skip_args;
- _environ -= skip_args;
-
- /* Shuffle argv down. */
- do
- *++sp = *++p;
- while (*p != NULL);
-
- assert (_environ == (char **) (sp + 1));
-
- /* Shuffle envp down. */
- do
- *++sp = *++p;
- while (*p != NULL);
-
-#ifdef HAVE_AUX_VECTOR
- void **auxv = (void **) GLRO(dl_auxv) - skip_args;
- GLRO(dl_auxv) = (ElfW(auxv_t) *) auxv; /* Aliasing violation. */
- assert (auxv == sp + 1);
-
- /* Shuffle auxv down. */
- ElfW(auxv_t) ax;
- char *oldp = (char *) (p + 1);
- char *newp = (char *) (sp + 1);
- do
- {
- memcpy (&ax, oldp, sizeof (ax));
- memcpy (newp, &ax, sizeof (ax));
- oldp += sizeof (ax);
- newp += sizeof (ax);
- }
- while (ax.a_type != AT_NULL);
-#endif
-}
-
-static void
-dl_main (const ElfW(Phdr) *phdr,
- ElfW(Word) phnum,
- ElfW(Addr) *user_entry,
- ElfW(auxv_t) *auxv)
-{
- struct link_map *main_map;
- size_t file_size;
- char *file;
- unsigned int i;
- bool rtld_is_main = false;
- void *tcbp = NULL;
-
- struct dl_main_state state;
- dl_main_state_init (&state);
-
- __tls_pre_init_tp ();
-
-#if !PTHREAD_IN_LIBC
- /* The explicit initialization here is cheaper than processing the reloc
- in the _rtld_local definition's initializer. */
- GL(dl_make_stack_executable_hook) = &_dl_make_stack_executable;
-#endif
-
- /* Process the environment variable which control the behaviour. */
- process_envvars (&state);
-
-#ifndef HAVE_INLINED_SYSCALLS
- /* Set up a flag which tells we are just starting. */
- _dl_starting_up = 1;
-#endif
-
- const char *ld_so_name = _dl_argv[0];
- if (*user_entry == (ElfW(Addr)) ENTRY_POINT)
- {
- /* Ho ho. We are not the program interpreter! We are the program
- itself! This means someone ran ld.so as a command. Well, that
- might be convenient to do sometimes. We support it by
- interpreting the args like this:
-
- ld.so PROGRAM ARGS...
-
- The first argument is the name of a file containing an ELF
- executable we will load and run with the following arguments.
- To simplify life here, PROGRAM is searched for using the
- normal rules for shared objects, rather than $PATH or anything
- like that. We just load it and use its entry point; we don't
- pay attention to its PT_INTERP command (we are the interpreter
- ourselves). This is an easy way to test a new ld.so before
- installing it. */
- rtld_is_main = true;
-
- char *argv0 = NULL;
- char **orig_argv = _dl_argv;
-
- /* Note the place where the dynamic linker actually came from. */
- GL(dl_rtld_map).l_name = rtld_progname;
-
- while (_dl_argc > 1)
- if (! strcmp (_dl_argv[1], "--list"))
- {
- if (state.mode != rtld_mode_help)
- {
- state.mode = rtld_mode_list;
- /* This means do no dependency analysis. */
- GLRO(dl_lazy) = -1;
- }
-
- --_dl_argc;
- ++_dl_argv;
- }
- else if (! strcmp (_dl_argv[1], "--verify"))
- {
- if (state.mode != rtld_mode_help)
- state.mode = rtld_mode_verify;
-
- --_dl_argc;
- ++_dl_argv;
- }
- else if (! strcmp (_dl_argv[1], "--inhibit-cache"))
- {
- GLRO(dl_inhibit_cache) = 1;
- --_dl_argc;
- ++_dl_argv;
- }
- else if (! strcmp (_dl_argv[1], "--library-path")
- && _dl_argc > 2)
- {
- state.library_path = _dl_argv[2];
- state.library_path_source = "--library-path";
-
- _dl_argc -= 2;
- _dl_argv += 2;
- }
- else if (! strcmp (_dl_argv[1], "--inhibit-rpath")
- && _dl_argc > 2)
- {
- GLRO(dl_inhibit_rpath) = _dl_argv[2];
-
- _dl_argc -= 2;
- _dl_argv += 2;
- }
- else if (! strcmp (_dl_argv[1], "--audit") && _dl_argc > 2)
- {
- audit_list_add_string (&state.audit_list, _dl_argv[2]);
-
- _dl_argc -= 2;
- _dl_argv += 2;
- }
- else if (! strcmp (_dl_argv[1], "--preload") && _dl_argc > 2)
- {
- state.preloadarg = _dl_argv[2];
- _dl_argc -= 2;
- _dl_argv += 2;
- }
- else if (! strcmp (_dl_argv[1], "--argv0") && _dl_argc > 2)
- {
- argv0 = _dl_argv[2];
-
- _dl_argc -= 2;
- _dl_argv += 2;
- }
- else if (strcmp (_dl_argv[1], "--glibc-hwcaps-prepend") == 0
- && _dl_argc > 2)
- {
- state.glibc_hwcaps_prepend = _dl_argv[2];
- _dl_argc -= 2;
- _dl_argv += 2;
- }
- else if (strcmp (_dl_argv[1], "--glibc-hwcaps-mask") == 0
- && _dl_argc > 2)
- {
- state.glibc_hwcaps_mask = _dl_argv[2];
- _dl_argc -= 2;
- _dl_argv += 2;
- }
-#if HAVE_TUNABLES
- else if (! strcmp (_dl_argv[1], "--list-tunables"))
- {
- state.mode = rtld_mode_list_tunables;
-
- --_dl_argc;
- ++_dl_argv;
- }
-#endif
- else if (! strcmp (_dl_argv[1], "--list-diagnostics"))
- {
- state.mode = rtld_mode_list_diagnostics;
-
- --_dl_argc;
- ++_dl_argv;
- }
- else if (strcmp (_dl_argv[1], "--help") == 0)
- {
- state.mode = rtld_mode_help;
- --_dl_argc;
- ++_dl_argv;
- }
- else if (strcmp (_dl_argv[1], "--version") == 0)
- _dl_version ();
- else if (_dl_argv[1][0] == '-' && _dl_argv[1][1] == '-')
- {
- if (_dl_argv[1][1] == '\0')
- /* End of option list. */
- break;
- else
- /* Unrecognized option. */
- _dl_usage (ld_so_name, _dl_argv[1]);
- }
- else
- break;
-
-#if HAVE_TUNABLES
- if (__glibc_unlikely (state.mode == rtld_mode_list_tunables))
- {
- __tunables_print ();
- _exit (0);
- }
-#endif
-
- if (state.mode == rtld_mode_list_diagnostics)
- _dl_print_diagnostics (_environ);
-
- /* If we have no further argument the program was called incorrectly.
- Grant the user some education. */
- if (_dl_argc < 2)
- {
- if (state.mode == rtld_mode_help)
- /* --help without an executable is not an error. */
- _dl_help (ld_so_name, &state);
- else
- _dl_usage (ld_so_name, NULL);
- }
-
- --_dl_argc;
- ++_dl_argv;
-
- /* The initialization of _dl_stack_flags done below assumes the
- executable's PT_GNU_STACK may have been honored by the kernel, and
- so a PT_GNU_STACK with PF_X set means the stack started out with
- execute permission. However, this is not really true if the
- dynamic linker is the executable the kernel loaded. For this
- case, we must reinitialize _dl_stack_flags to match the dynamic
- linker itself. If the dynamic linker was built with a
- PT_GNU_STACK, then the kernel may have loaded us with a
- nonexecutable stack that we will have to make executable when we
- load the program below unless it has a PT_GNU_STACK indicating
- nonexecutable stack is ok. */
-
- for (const ElfW(Phdr) *ph = phdr; ph < &phdr[phnum]; ++ph)
- if (ph->p_type == PT_GNU_STACK)
- {
- GL(dl_stack_flags) = ph->p_flags;
- break;
- }
-
- if (__glibc_unlikely (state.mode == rtld_mode_verify
- || state.mode == rtld_mode_help))
- {
- const char *objname;
- const char *err_str = NULL;
- struct map_args args;
- bool malloced;
-
- args.str = rtld_progname;
- args.loader = NULL;
- args.mode = __RTLD_OPENEXEC;
- (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit,
- &args);
- if (__glibc_unlikely (err_str != NULL))
- {
- /* We don't free the returned string, the programs stops
- anyway. */
- if (state.mode == rtld_mode_help)
- /* Mask the failure to load the main object. The help
- message contains less information in this case. */
- _dl_help (ld_so_name, &state);
- else
- _exit (EXIT_FAILURE);
- }
- }
- else
- {
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
- _dl_map_object (NULL, rtld_progname, lt_executable, 0,
- __RTLD_OPENEXEC, LM_ID_BASE);
- rtld_timer_stop (&load_time, start);
- }
-
- /* Now the map for the main executable is available. */
- main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
-
- if (__glibc_likely (state.mode == rtld_mode_normal))
- rtld_chain_load (main_map, argv0);
-
- phdr = main_map->l_phdr;
- phnum = main_map->l_phnum;
- /* We overwrite here a pointer to a malloc()ed string. But since
- the malloc() implementation used at this point is the dummy
- implementations which has no real free() function it does not
- makes sense to free the old string first. */
- main_map->l_name = (char *) "";
- *user_entry = main_map->l_entry;
-
- /* Set bit indicating this is the main program map. */
- main_map->l_main_map = 1;
-
-#ifdef HAVE_AUX_VECTOR
- /* Adjust the on-stack auxiliary vector so that it looks like the
- binary was executed directly. */
- for (ElfW(auxv_t) *av = auxv; av->a_type != AT_NULL; av++)
- switch (av->a_type)
- {
- case AT_PHDR:
- av->a_un.a_val = (uintptr_t) phdr;
- break;
- case AT_PHNUM:
- av->a_un.a_val = phnum;
- break;
- case AT_ENTRY:
- av->a_un.a_val = *user_entry;
- break;
- case AT_EXECFN:
- av->a_un.a_val = (uintptr_t) _dl_argv[0];
- break;
- }
-#endif
-
- /* Set the argv[0] string now that we've processed the executable. */
- if (argv0 != NULL)
- _dl_argv[0] = argv0;
-
- /* Adjust arguments for the application entry point. */
- _dl_start_args_adjust (_dl_argv - orig_argv);
- }
- else
- {
- /* Create a link_map for the executable itself.
- This will be what dlopen on "" returns. */
- main_map = _dl_new_object ((char *) "", "", lt_executable, NULL,
- __RTLD_OPENEXEC, LM_ID_BASE);
- assert (main_map != NULL);
- main_map->l_phdr = phdr;
- main_map->l_phnum = phnum;
- main_map->l_entry = *user_entry;
-
- /* Even though the link map is not yet fully initialized we can add
- it to the map list since there are no possible users running yet. */
- _dl_add_to_namespace_list (main_map, LM_ID_BASE);
- assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded);
-
- /* At this point we are in a bit of trouble. We would have to
- fill in the values for l_dev and l_ino. But in general we
- do not know where the file is. We also do not handle AT_EXECFD
- even if it would be passed up.
-
- We leave the values here defined to 0. This is normally no
- problem as the program code itself is normally no shared
- object and therefore cannot be loaded dynamically. Nothing
- prevent the use of dynamic binaries and in these situations
- we might get problems. We might not be able to find out
- whether the object is already loaded. But since there is no
- easy way out and because the dynamic binary must also not
- have an SONAME we ignore this program for now. If it becomes
- a problem we can force people using SONAMEs. */
-
- /* We delay initializing the path structure until we got the dynamic
- information for the program. */
- }
-
- bool has_interp = rtld_setup_main_map (main_map);
-
- /* If the current libname is different from the SONAME, add the
- latter as well. */
- if (GL(dl_rtld_map).l_info[DT_SONAME] != NULL
- && strcmp (GL(dl_rtld_map).l_libname->name,
- (const char *) D_PTR (&GL(dl_rtld_map), l_info[DT_STRTAB])
- + GL(dl_rtld_map).l_info[DT_SONAME]->d_un.d_val) != 0)
- {
- static struct libname_list newname;
- newname.name = ((char *) D_PTR (&GL(dl_rtld_map), l_info[DT_STRTAB])
- + GL(dl_rtld_map).l_info[DT_SONAME]->d_un.d_ptr);
- newname.next = NULL;
- newname.dont_free = 1;
-
- assert (GL(dl_rtld_map).l_libname->next == NULL);
- GL(dl_rtld_map).l_libname->next = &newname;
- }
- /* The ld.so must be relocated since otherwise loading audit modules
- will fail since they reuse the very same ld.so. */
- assert (GL(dl_rtld_map).l_relocated);
-
- if (! rtld_is_main)
- {
- /* Extract the contents of the dynamic section for easy access. */
- elf_get_dynamic_info (main_map, false, false);
-
- /* If the main map is libc.so, update the base namespace to
- refer to this map. If libc.so is loaded later, this happens
- in _dl_map_object_from_fd. */
- if (main_map->l_info[DT_SONAME] != NULL
- && (strcmp (((const char *) D_PTR (main_map, l_info[DT_STRTAB])
- + main_map->l_info[DT_SONAME]->d_un.d_val), LIBC_SO)
- == 0))
- GL(dl_ns)[LM_ID_BASE].libc_map = main_map;
-
- /* Set up our cache of pointers into the hash table. */
- _dl_setup_hash (main_map);
- }
-
- if (__glibc_unlikely (state.mode == rtld_mode_verify))
- {
- /* We were called just to verify that this is a dynamic
- executable using us as the program interpreter. Exit with an
- error if we were not able to load the binary or no interpreter
- is specified (i.e., this is no dynamically linked binary. */
- if (main_map->l_ld == NULL)
- _exit (1);
-
- _exit (has_interp ? 0 : 2);
- }
-
- struct link_map **first_preload = &GL(dl_rtld_map).l_next;
- /* Set up the data structures for the system-supplied DSO early,
- so they can influence _dl_init_paths. */
- setup_vdso (main_map, &first_preload);
-
- /* With vDSO setup we can initialize the function pointers. */
- setup_vdso_pointers ();
-
- /* Initialize the data structures for the search paths for shared
- objects. */
- call_init_paths (&state);
-
- /* Initialize _r_debug_extended. */
- struct r_debug *r = _dl_debug_initialize (GL(dl_rtld_map).l_addr,
- LM_ID_BASE);
- r->r_state = RT_CONSISTENT;
-
- /* Put the link_map for ourselves on the chain so it can be found by
- name. Note that at this point the global chain of link maps contains
- exactly one element, which is pointed to by dl_loaded. */
- if (! GL(dl_rtld_map).l_name)
- /* If not invoked directly, the dynamic linker shared object file was
- found by the PT_INTERP name. */
- GL(dl_rtld_map).l_name = (char *) GL(dl_rtld_map).l_libname->name;
- GL(dl_rtld_map).l_type = lt_library;
- main_map->l_next = &GL(dl_rtld_map);
- GL(dl_rtld_map).l_prev = main_map;
- ++GL(dl_ns)[LM_ID_BASE]._ns_nloaded;
- ++GL(dl_load_adds);
-
- /* Starting from binutils-2.23, the linker will define the magic symbol
- __ehdr_start to point to our own ELF header if it is visible in a
- segment that also includes the phdrs. If that's not available, we use
- the old method that assumes the beginning of the file is part of the
- lowest-addressed PT_LOAD segment. */
-
- /* Set up the program header information for the dynamic linker
- itself. It is needed in the dl_iterate_phdr callbacks. */
- const ElfW(Ehdr) *rtld_ehdr = &__ehdr_start;
- assert (rtld_ehdr->e_ehsize == sizeof *rtld_ehdr);
- assert (rtld_ehdr->e_phentsize == sizeof (ElfW(Phdr)));
-
- const ElfW(Phdr) *rtld_phdr = (const void *) rtld_ehdr + rtld_ehdr->e_phoff;
-
- GL(dl_rtld_map).l_phdr = rtld_phdr;
- GL(dl_rtld_map).l_phnum = rtld_ehdr->e_phnum;
-
-
- /* PT_GNU_RELRO is usually the last phdr. */
- size_t cnt = rtld_ehdr->e_phnum;
- while (cnt-- > 0)
- if (rtld_phdr[cnt].p_type == PT_GNU_RELRO)
- {
- GL(dl_rtld_map).l_relro_addr = rtld_phdr[cnt].p_vaddr;
- GL(dl_rtld_map).l_relro_size = rtld_phdr[cnt].p_memsz;
- break;
- }
-
- /* Add the dynamic linker to the TLS list if it also uses TLS. */
- if (GL(dl_rtld_map).l_tls_blocksize != 0)
- /* Assign a module ID. Do this before loading any audit modules. */
- _dl_assign_tls_modid (&GL(dl_rtld_map));
-
- audit_list_add_dynamic_tag (&state.audit_list, main_map, DT_AUDIT);
- audit_list_add_dynamic_tag (&state.audit_list, main_map, DT_DEPAUDIT);
-
- /* At this point, all data has been obtained that is included in the
- --help output. */
- if (__glibc_unlikely (state.mode == rtld_mode_help))
- _dl_help (ld_so_name, &state);
-
- /* If we have auditing DSOs to load, do it now. */
- bool need_security_init = true;
- if (state.audit_list.length > 0)
- {
- size_t naudit = audit_list_count (&state.audit_list);
-
- /* Since we start using the auditing DSOs right away we need to
- initialize the data structures now. */
- tcbp = init_tls (naudit);
-
- /* Initialize security features. We need to do it this early
- since otherwise the constructors of the audit libraries will
- use different values (especially the pointer guard) and will
- fail later on. */
- security_init ();
- need_security_init = false;
-
- load_audit_modules (main_map, &state.audit_list);
-
- /* The count based on audit strings may overestimate the number
- of audit modules that got loaded, but not underestimate. */
- assert (GLRO(dl_naudit) <= naudit);
- }
-
- /* Keep track of the currently loaded modules to count how many
- non-audit modules which use TLS are loaded. */
- size_t count_modids = _dl_count_modids ();
-
- /* Set up debugging before the debugger is notified for the first time. */
- elf_setup_debug_entry (main_map, r);
-
- /* We start adding objects. */
- r->r_state = RT_ADD;
- _dl_debug_state ();
- LIBC_PROBE (init_start, 2, LM_ID_BASE, r);
-
- /* Auditing checkpoint: we are ready to signal that the initial map
- is being constructed. */
- _dl_audit_activity_map (main_map, LA_ACT_ADD);
-
- /* We have two ways to specify objects to preload: via environment
- variable and via the file /etc/ld.so.preload. The latter can also
- be used when security is enabled. */
- assert (*first_preload == NULL);
- struct link_map **preloads = NULL;
- unsigned int npreloads = 0;
-
- if (__glibc_unlikely (state.preloadlist != NULL))
- {
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
- npreloads += handle_preload_list (state.preloadlist, main_map,
- "LD_PRELOAD");
- rtld_timer_accum (&load_time, start);
- }
-
- if (__glibc_unlikely (state.preloadarg != NULL))
- {
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
- npreloads += handle_preload_list (state.preloadarg, main_map,
- "--preload");
- rtld_timer_accum (&load_time, start);
- }
-
- /* There usually is no ld.so.preload file, it should only be used
- for emergencies and testing. So the open call etc should usually
- fail. Using access() on a non-existing file is faster than using
- open(). So we do this first. If it succeeds we do almost twice
- the work but this does not matter, since it is not for production
- use. */
- static const char preload_file[] = "/etc/ld.so.preload";
- if (__glibc_unlikely (__access (preload_file, R_OK) == 0))
- {
- /* Read the contents of the file. */
- file = _dl_sysdep_read_whole_file (preload_file, &file_size,
- PROT_READ | PROT_WRITE);
- if (__glibc_unlikely (file != MAP_FAILED))
- {
- /* Parse the file. It contains names of libraries to be loaded,
- separated by white spaces or `:'. It may also contain
- comments introduced by `#'. */
- char *problem;
- char *runp;
- size_t rest;
-
- /* Eliminate comments. */
- runp = file;
- rest = file_size;
- while (rest > 0)
- {
- char *comment = memchr (runp, '#', rest);
- if (comment == NULL)
- break;
-
- rest -= comment - runp;
- do
- *comment = ' ';
- while (--rest > 0 && *++comment != '\n');
- }
-
- /* We have one problematic case: if we have a name at the end of
- the file without a trailing terminating characters, we cannot
- place the \0. Handle the case separately. */
- if (file[file_size - 1] != ' ' && file[file_size - 1] != '\t'
- && file[file_size - 1] != '\n' && file[file_size - 1] != ':')
- {
- problem = &file[file_size];
- while (problem > file && problem[-1] != ' '
- && problem[-1] != '\t'
- && problem[-1] != '\n' && problem[-1] != ':')
- --problem;
-
- if (problem > file)
- problem[-1] = '\0';
- }
- else
- {
- problem = NULL;
- file[file_size - 1] = '\0';
- }
-
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
-
- if (file != problem)
- {
- char *p;
- runp = file;
- while ((p = strsep (&runp, ": \t\n")) != NULL)
- if (p[0] != '\0')
- npreloads += do_preload (p, main_map, preload_file);
- }
-
- if (problem != NULL)
- {
- char *p = strndupa (problem, file_size - (problem - file));
-
- npreloads += do_preload (p, main_map, preload_file);
- }
-
- rtld_timer_accum (&load_time, start);
-
- /* We don't need the file anymore. */
- __munmap (file, file_size);
- }
- }
-
- if (__glibc_unlikely (*first_preload != NULL))
- {
- /* Set up PRELOADS with a vector of the preloaded libraries. */
- struct link_map *l = *first_preload;
- preloads = __alloca (npreloads * sizeof preloads[0]);
- i = 0;
- do
- {
- preloads[i++] = l;
- l = l->l_next;
- } while (l);
- assert (i == npreloads);
- }
-
-#ifdef NEED_DL_SYSINFO_DSO
- /* Now that the audit modules are opened, call la_objopen for the vDSO. */
- if (GLRO(dl_sysinfo_map) != NULL)
- _dl_audit_objopen (GLRO(dl_sysinfo_map), LM_ID_BASE);
-#endif
-
- /* Load all the libraries specified by DT_NEEDED entries. If LD_PRELOAD
- specified some libraries to load, these are inserted before the actual
- dependencies in the executable's searchlist for symbol resolution. */
- {
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
- _dl_map_object_deps (main_map, preloads, npreloads,
- state.mode == rtld_mode_trace, 0);
- rtld_timer_accum (&load_time, start);
- }
-
- /* Mark all objects as being in the global scope. */
- for (i = main_map->l_searchlist.r_nlist; i > 0; )
- main_map->l_searchlist.r_list[--i]->l_global = 1;
-
- /* Remove _dl_rtld_map from the chain. */
- GL(dl_rtld_map).l_prev->l_next = GL(dl_rtld_map).l_next;
- if (GL(dl_rtld_map).l_next != NULL)
- GL(dl_rtld_map).l_next->l_prev = GL(dl_rtld_map).l_prev;
-
- for (i = 1; i < main_map->l_searchlist.r_nlist; ++i)
- if (main_map->l_searchlist.r_list[i] == &GL(dl_rtld_map))
- break;
-
- bool rtld_multiple_ref = false;
- if (__glibc_likely (i < main_map->l_searchlist.r_nlist))
- {
- /* Some DT_NEEDED entry referred to the interpreter object itself, so
- put it back in the list of visible objects. We insert it into the
- chain in symbol search order because gdb uses the chain's order as
- its symbol search order. */
- rtld_multiple_ref = true;
-
- GL(dl_rtld_map).l_prev = main_map->l_searchlist.r_list[i - 1];
- if (__glibc_likely (state.mode == rtld_mode_normal))
- {
- GL(dl_rtld_map).l_next = (i + 1 < main_map->l_searchlist.r_nlist
- ? main_map->l_searchlist.r_list[i + 1]
- : NULL);
-#ifdef NEED_DL_SYSINFO_DSO
- if (GLRO(dl_sysinfo_map) != NULL
- && GL(dl_rtld_map).l_prev->l_next == GLRO(dl_sysinfo_map)
- && GL(dl_rtld_map).l_next != GLRO(dl_sysinfo_map))
- GL(dl_rtld_map).l_prev = GLRO(dl_sysinfo_map);
-#endif
- }
- else
- /* In trace mode there might be an invisible object (which we
- could not find) after the previous one in the search list.
- In this case it doesn't matter much where we put the
- interpreter object, so we just initialize the list pointer so
- that the assertion below holds. */
- GL(dl_rtld_map).l_next = GL(dl_rtld_map).l_prev->l_next;
-
- assert (GL(dl_rtld_map).l_prev->l_next == GL(dl_rtld_map).l_next);
- GL(dl_rtld_map).l_prev->l_next = &GL(dl_rtld_map);
- if (GL(dl_rtld_map).l_next != NULL)
- {
- assert (GL(dl_rtld_map).l_next->l_prev == GL(dl_rtld_map).l_prev);
- GL(dl_rtld_map).l_next->l_prev = &GL(dl_rtld_map);
- }
- }
-
- /* Now let us see whether all libraries are available in the
- versions we need. */
- {
- struct version_check_args args;
- args.doexit = state.mode == rtld_mode_normal;
- args.dotrace = state.mode == rtld_mode_trace;
- _dl_receive_error (print_missing_version, version_check_doit, &args);
- }
-
- /* We do not initialize any of the TLS functionality unless any of the
- initial modules uses TLS. This makes dynamic loading of modules with
- TLS impossible, but to support it requires either eagerly doing setup
- now or lazily doing it later. Doing it now makes us incompatible with
- an old kernel that can't perform TLS_INIT_TP, even if no TLS is ever
- used. Trying to do it lazily is too hairy to try when there could be
- multiple threads (from a non-TLS-using libpthread). */
- bool was_tls_init_tp_called = tls_init_tp_called;
- if (tcbp == NULL)
- tcbp = init_tls (0);
-
- if (__glibc_likely (need_security_init))
- /* Initialize security features. But only if we have not done it
- earlier. */
- security_init ();
-
- if (__glibc_unlikely (state.mode != rtld_mode_normal))
- {
- /* We were run just to list the shared libraries. It is
- important that we do this before real relocation, because the
- functions we call below for output may no longer work properly
- after relocation. */
- struct link_map *l;
-
- if (GLRO(dl_debug_mask) & DL_DEBUG_UNUSED)
- {
- /* Look through the dependencies of the main executable
- and determine which of them is not actually
- required. */
- struct link_map *l = main_map;
-
- /* Relocate the main executable. */
- struct relocate_args args = { .l = l,
- .reloc_mode = ((GLRO(dl_lazy)
- ? RTLD_LAZY : 0)
- | __RTLD_NOIFUNC) };
- _dl_receive_error (print_unresolved, relocate_doit, &args);
-
- /* This loop depends on the dependencies of the executable to
- correspond in number and order to the DT_NEEDED entries. */
- ElfW(Dyn) *dyn = main_map->l_ld;
- bool first = true;
- while (dyn->d_tag != DT_NULL)
- {
- if (dyn->d_tag == DT_NEEDED)
- {
- l = l->l_next;
-#ifdef NEED_DL_SYSINFO_DSO
- /* Skip the VDSO since it's not part of the list
- of objects we brought in via DT_NEEDED entries. */
- if (l == GLRO(dl_sysinfo_map))
- l = l->l_next;
-#endif
- if (!l->l_used)
- {
- if (first)
- {
- _dl_printf ("Unused direct dependencies:\n");
- first = false;
- }
-
- _dl_printf ("\t%s\n", l->l_name);
- }
- }
-
- ++dyn;
- }
-
- _exit (first != true);
- }
- else if (! main_map->l_info[DT_NEEDED])
- _dl_printf ("\tstatically linked\n");
- else
- {
- for (l = state.mode_trace_program ? main_map : main_map->l_next;
- l; l = l->l_next) {
- if (l->l_faked)
- /* The library was not found. */
- _dl_printf ("\t%s => not found\n", l->l_libname->name);
- else if (strcmp (l->l_libname->name, l->l_name) == 0)
- /* Print vDSO like libraries without duplicate name. Some
- consumers depend of this format. */
- _dl_printf ("\t%s (0x%0*Zx)\n", l->l_libname->name,
- (int) sizeof l->l_map_start * 2,
- (size_t) l->l_map_start);
- else
- _dl_printf ("\t%s => %s (0x%0*Zx)\n",
- DSO_FILENAME (l->l_libname->name),
- DSO_FILENAME (l->l_name),
- (int) sizeof l->l_map_start * 2,
- (size_t) l->l_map_start);
- }
- }
-
- if (__glibc_unlikely (state.mode != rtld_mode_trace))
- for (i = 1; i < (unsigned int) _dl_argc; ++i)
- {
- const ElfW(Sym) *ref = NULL;
- ElfW(Addr) loadbase;
- lookup_t result;
-
- result = _dl_lookup_symbol_x (_dl_argv[i], main_map,
- &ref, main_map->l_scope,
- NULL, ELF_RTYPE_CLASS_PLT,
- DL_LOOKUP_ADD_DEPENDENCY, NULL);
-
- loadbase = LOOKUP_VALUE_ADDRESS (result, false);
-
- _dl_printf ("%s found at 0x%0*Zd in object at 0x%0*Zd\n",
- _dl_argv[i],
- (int) sizeof ref->st_value * 2,
- (size_t) ref->st_value,
- (int) sizeof loadbase * 2, (size_t) loadbase);
- }
- else
- {
- /* If LD_WARN is set, warn about undefined symbols. */
- if (GLRO(dl_lazy) >= 0 && GLRO(dl_verbose))
- {
- /* We have to do symbol dependency testing. */
- struct relocate_args args;
- unsigned int i;
-
- args.reloc_mode = ((GLRO(dl_lazy) ? RTLD_LAZY : 0)
- | __RTLD_NOIFUNC);
-
- i = main_map->l_searchlist.r_nlist;
- while (i-- > 0)
- {
- struct link_map *l = main_map->l_initfini[i];
- if (l != &GL(dl_rtld_map) && ! l->l_faked)
- {
- args.l = l;
- _dl_receive_error (print_unresolved, relocate_doit,
- &args);
- }
- }
-
- }
-#define VERNEEDTAG (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (DT_VERNEED))
- if (state.version_info)
- {
- /* Print more information. This means here, print information
- about the versions needed. */
- int first = 1;
- struct link_map *map;
-
- for (map = main_map; map != NULL; map = map->l_next)
- {
- const char *strtab;
- ElfW(Dyn) *dyn = map->l_info[VERNEEDTAG];
- ElfW(Verneed) *ent;
-
- if (dyn == NULL)
- continue;
-
- strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- ent = (ElfW(Verneed) *) (map->l_addr + dyn->d_un.d_ptr);
-
- if (first)
- {
- _dl_printf ("\n\tVersion information:\n");
- first = 0;
- }
-
- _dl_printf ("\t%s:\n", DSO_FILENAME (map->l_name));
-
- while (1)
- {
- ElfW(Vernaux) *aux;
- struct link_map *needed;
-
- needed = find_needed (strtab + ent->vn_file);
- aux = (ElfW(Vernaux) *) ((char *) ent + ent->vn_aux);
-
- while (1)
- {
- const char *fname = NULL;
-
- if (needed != NULL
- && match_version (strtab + aux->vna_name,
- needed))
- fname = needed->l_name;
-
- _dl_printf ("\t\t%s (%s) %s=> %s\n",
- strtab + ent->vn_file,
- strtab + aux->vna_name,
- aux->vna_flags & VER_FLG_WEAK
- ? "[WEAK] " : "",
- fname ?: "not found");
-
- if (aux->vna_next == 0)
- /* No more symbols. */
- break;
-
- /* Next symbol. */
- aux = (ElfW(Vernaux) *) ((char *) aux
- + aux->vna_next);
- }
-
- if (ent->vn_next == 0)
- /* No more dependencies. */
- break;
-
- /* Next dependency. */
- ent = (ElfW(Verneed) *) ((char *) ent + ent->vn_next);
- }
- }
- }
- }
-
- _exit (0);
- }
-
- /* Now set up the variable which helps the assembler startup code. */
- GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist = &main_map->l_searchlist;
-
- /* Save the information about the original global scope list since
- we need it in the memory handling later. */
- GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist;
-
- /* Remember the last search directory added at startup, now that
- malloc will no longer be the one from dl-minimal.c. As a side
- effect, this marks ld.so as initialized, so that the rtld_active
- function returns true from now on. */
- GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
-
- /* Print scope information. */
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
- {
- _dl_debug_printf ("\nInitial object scopes\n");
-
- for (struct link_map *l = main_map; l != NULL; l = l->l_next)
- _dl_show_scope (l, 0);
- }
-
- _rtld_main_check (main_map, _dl_argv[0]);
-
- /* Now we have all the objects loaded. Relocate them all except for
- the dynamic linker itself. We do this in reverse order so that copy
- relocs of earlier objects overwrite the data written by later
- objects. We do not re-relocate the dynamic linker itself in this
- loop because that could result in the GOT entries for functions we
- call being changed, and that would break us. It is safe to relocate
- the dynamic linker out of order because it has no copy relocs (we
- know that because it is self-contained). */
-
- int consider_profiling = GLRO(dl_profile) != NULL;
-
- /* If we are profiling we also must do lazy reloaction. */
- GLRO(dl_lazy) |= consider_profiling;
-
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
- {
- unsigned i = main_map->l_searchlist.r_nlist;
- while (i-- > 0)
- {
- struct link_map *l = main_map->l_initfini[i];
-
- /* While we are at it, help the memory handling a bit. We have to
- mark some data structures as allocated with the fake malloc()
- implementation in ld.so. */
- struct libname_list *lnp = l->l_libname->next;
-
- while (__builtin_expect (lnp != NULL, 0))
- {
- lnp->dont_free = 1;
- lnp = lnp->next;
- }
- /* Also allocated with the fake malloc(). */
- l->l_free_initfini = 0;
-
- if (l != &GL(dl_rtld_map))
- _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
- consider_profiling);
-
- /* Add object to slot information data if necessasy. */
- if (l->l_tls_blocksize != 0 && tls_init_tp_called)
- _dl_add_to_slotinfo (l, true);
- }
- }
- rtld_timer_stop (&relocate_time, start);
-
- /* Now enable profiling if needed. Like the previous call,
- this has to go here because the calls it makes should use the
- rtld versions of the functions (particularly calloc()), but it
- needs to have _dl_profile_map set up by the relocator. */
- if (__glibc_unlikely (GL(dl_profile_map) != NULL))
- /* We must prepare the profiling. */
- _dl_start_profile ();
-
- if ((!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0)
- || count_modids != _dl_count_modids ())
- ++GL(dl_tls_generation);
-
- /* Now that we have completed relocation, the initializer data
- for the TLS blocks has its final values and we can copy them
- into the main thread's TLS area, which we allocated above.
- Note: thread-local variables must only be accessed after completing
- the next step. */
- _dl_allocate_tls_init (tcbp, false);
-
- /* And finally install it for the main thread. */
- if (! tls_init_tp_called)
- {
- const char *lossage = TLS_INIT_TP (tcbp);
- if (__glibc_unlikely (lossage != NULL))
- _dl_fatal_printf ("cannot set up thread-local storage: %s\n",
- lossage);
- __tls_init_tp ();
- }
-
- /* Make sure no new search directories have been added. */
- assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs));
-
- if (rtld_multiple_ref)
- {
- /* There was an explicit ref to the dynamic linker as a shared lib.
- Re-relocate ourselves with user-controlled symbol definitions.
-
- We must do this after TLS initialization in case after this
- re-relocation, we might call a user-supplied function
- (e.g. calloc from _dl_relocate_object) that uses TLS data. */
-
- /* Set up the object lookup structures. */
- _dl_find_object_init ();
-
- /* The malloc implementation has been relocated, so resolving
- its symbols (and potentially calling IFUNC resolvers) is safe
- at this point. */
- __rtld_malloc_init_real (main_map);
-
- /* Likewise for the locking implementation. */
- __rtld_mutex_init ();
-
- RTLD_TIMING_VAR (start);
- rtld_timer_start (&start);
-
- /* Mark the link map as not yet relocated again. */
- GL(dl_rtld_map).l_relocated = 0;
- _dl_relocate_object (&GL(dl_rtld_map), main_map->l_scope, 0, 0);
-
- rtld_timer_accum (&relocate_time, start);
- }
-
- /* Relocation is complete. Perform early libc initialization. This
- is the initial libc, even if audit modules have been loaded with
- other libcs. */
- _dl_call_libc_early_init (GL(dl_ns)[LM_ID_BASE].libc_map, true);
-
- /* Do any necessary cleanups for the startup OS interface code.
- We do these now so that no calls are made after rtld re-relocation
- which might be resolved to different functions than we expect.
- We cannot do this before relocating the other objects because
- _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
- _dl_sysdep_start_cleanup ();
-
-#ifdef SHARED
- /* Auditing checkpoint: we have added all objects. */
- _dl_audit_activity_nsid (LM_ID_BASE, LA_ACT_CONSISTENT);
-#endif
-
- /* Notify the debugger all new objects are now ready to go. We must re-get
- the address since by now the variable might be in another object. */
- r = _dl_debug_update (LM_ID_BASE);
- r->r_state = RT_CONSISTENT;
- _dl_debug_state ();
- LIBC_PROBE (init_complete, 2, LM_ID_BASE, r);
-
-#if defined USE_LDCONFIG && !defined MAP_COPY
- /* We must munmap() the cache file. */
- _dl_unload_cache ();
-#endif
-
- /* Once we return, _dl_sysdep_start will invoke
- the DT_INIT functions and then *USER_ENTRY. */
-}
-
-/* This is a little helper function for resolving symbols while
- tracing the binary. */
-static void
-print_unresolved (int errcode __attribute__ ((unused)), const char *objname,
- const char *errstring)
-{
- if (objname[0] == '\0')
- objname = RTLD_PROGNAME;
- _dl_error_printf ("%s (%s)\n", errstring, objname);
-}
-
-/* This is a little helper function for resolving symbols while
- tracing the binary. */
-static void
-print_missing_version (int errcode __attribute__ ((unused)),
- const char *objname, const char *errstring)
-{
- _dl_error_printf ("%s: %s: %s\n", RTLD_PROGNAME,
- objname, errstring);
-}
-
-/* Process the string given as the parameter which explains which debugging
- options are enabled. */
-static void
-process_dl_debug (struct dl_main_state *state, const char *dl_debug)
-{
- /* When adding new entries make sure that the maximal length of a name
- is correctly handled in the LD_DEBUG_HELP code below. */
- static const struct
- {
- unsigned char len;
- const char name[10];
- const char helptext[41];
- unsigned short int mask;
- } debopts[] =
- {
-#define LEN_AND_STR(str) sizeof (str) - 1, str
- { LEN_AND_STR ("libs"), "display library search paths",
- DL_DEBUG_LIBS | DL_DEBUG_IMPCALLS },
- { LEN_AND_STR ("reloc"), "display relocation processing",
- DL_DEBUG_RELOC | DL_DEBUG_IMPCALLS },
- { LEN_AND_STR ("files"), "display progress for input file",
- DL_DEBUG_FILES | DL_DEBUG_IMPCALLS },
- { LEN_AND_STR ("symbols"), "display symbol table processing",
- DL_DEBUG_SYMBOLS | DL_DEBUG_IMPCALLS },
- { LEN_AND_STR ("bindings"), "display information about symbol binding",
- DL_DEBUG_BINDINGS | DL_DEBUG_IMPCALLS },
- { LEN_AND_STR ("versions"), "display version dependencies",
- DL_DEBUG_VERSIONS | DL_DEBUG_IMPCALLS },
- { LEN_AND_STR ("scopes"), "display scope information",
- DL_DEBUG_SCOPES },
- { LEN_AND_STR ("all"), "all previous options combined",
- DL_DEBUG_LIBS | DL_DEBUG_RELOC | DL_DEBUG_FILES | DL_DEBUG_SYMBOLS
- | DL_DEBUG_BINDINGS | DL_DEBUG_VERSIONS | DL_DEBUG_IMPCALLS
- | DL_DEBUG_SCOPES },
- { LEN_AND_STR ("statistics"), "display relocation statistics",
- DL_DEBUG_STATISTICS },
- { LEN_AND_STR ("unused"), "determined unused DSOs",
- DL_DEBUG_UNUSED },
- { LEN_AND_STR ("help"), "display this help message and exit",
- DL_DEBUG_HELP },
- };
-#define ndebopts (sizeof (debopts) / sizeof (debopts[0]))
-
- /* Skip separating white spaces and commas. */
- while (*dl_debug != '\0')
- {
- if (*dl_debug != ' ' && *dl_debug != ',' && *dl_debug != ':')
- {
- size_t cnt;
- size_t len = 1;
-
- while (dl_debug[len] != '\0' && dl_debug[len] != ' '
- && dl_debug[len] != ',' && dl_debug[len] != ':')
- ++len;
-
- for (cnt = 0; cnt < ndebopts; ++cnt)
- if (debopts[cnt].len == len
- && memcmp (dl_debug, debopts[cnt].name, len) == 0)
- {
- GLRO(dl_debug_mask) |= debopts[cnt].mask;
- state->any_debug = true;
- break;
- }
-
- if (cnt == ndebopts)
- {
- /* Display a warning and skip everything until next
- separator. */
- char *copy = strndupa (dl_debug, len);
- _dl_error_printf ("\
-warning: debug option `%s' unknown; try LD_DEBUG=help\n", copy);
- }
-
- dl_debug += len;
- continue;
- }
-
- ++dl_debug;
- }
-
- if (GLRO(dl_debug_mask) & DL_DEBUG_UNUSED)
- {
- /* In order to get an accurate picture of whether a particular
- DT_NEEDED entry is actually used we have to process both
- the PLT and non-PLT relocation entries. */
- GLRO(dl_lazy) = 0;
- }
-
- if (GLRO(dl_debug_mask) & DL_DEBUG_HELP)
- {
- size_t cnt;
-
- _dl_printf ("\
-Valid options for the LD_DEBUG environment variable are:\n\n");
-
- for (cnt = 0; cnt < ndebopts; ++cnt)
- _dl_printf (" %.*s%s%s\n", debopts[cnt].len, debopts[cnt].name,
- " " + debopts[cnt].len - 3,
- debopts[cnt].helptext);
-
- _dl_printf ("\n\
-To direct the debugging output into a file instead of standard output\n\
-a filename can be specified using the LD_DEBUG_OUTPUT environment variable.\n");
- _exit (0);
- }
-}
-
-static void
-process_envvars (struct dl_main_state *state)
-{
- char **runp = _environ;
- char *envline;
- char *debug_output = NULL;
-
- /* This is the default place for profiling data file. */
- GLRO(dl_profile_output)
- = &"/var/tmp\0/var/profile"[__libc_enable_secure ? 9 : 0];
-
- while ((envline = _dl_next_ld_env_entry (&runp)) != NULL)
- {
- size_t len = 0;
-
- while (envline[len] != '\0' && envline[len] != '=')
- ++len;
-
- if (envline[len] != '=')
- /* This is a "LD_" variable at the end of the string without
- a '=' character. Ignore it since otherwise we will access
- invalid memory below. */
- continue;
-
- switch (len)
- {
- case 4:
- /* Warning level, verbose or not. */
- if (memcmp (envline, "WARN", 4) == 0)
- GLRO(dl_verbose) = envline[5] != '\0';
- break;
-
- case 5:
- /* Debugging of the dynamic linker? */
- if (memcmp (envline, "DEBUG", 5) == 0)
- {
- process_dl_debug (state, &envline[6]);
- break;
- }
- if (memcmp (envline, "AUDIT", 5) == 0)
- audit_list_add_string (&state->audit_list, &envline[6]);
- break;
-
- case 7:
- /* Print information about versions. */
- if (memcmp (envline, "VERBOSE", 7) == 0)
- {
- state->version_info = envline[8] != '\0';
- break;
- }
-
- /* List of objects to be preloaded. */
- if (memcmp (envline, "PRELOAD", 7) == 0)
- {
- state->preloadlist = &envline[8];
- break;
- }
-
- /* Which shared object shall be profiled. */
- if (memcmp (envline, "PROFILE", 7) == 0 && envline[8] != '\0')
- GLRO(dl_profile) = &envline[8];
- break;
-
- case 8:
- /* Do we bind early? */
- if (memcmp (envline, "BIND_NOW", 8) == 0)
- {
- GLRO(dl_lazy) = envline[9] == '\0';
- break;
- }
- if (memcmp (envline, "BIND_NOT", 8) == 0)
- GLRO(dl_bind_not) = envline[9] != '\0';
- break;
-
- case 9:
- /* Test whether we want to see the content of the auxiliary
- array passed up from the kernel. */
- if (!__libc_enable_secure
- && memcmp (envline, "SHOW_AUXV", 9) == 0)
- _dl_show_auxv ();
- break;
-
-#if !HAVE_TUNABLES
- case 10:
- /* Mask for the important hardware capabilities. */
- if (!__libc_enable_secure
- && memcmp (envline, "HWCAP_MASK", 10) == 0)
- GLRO(dl_hwcap_mask) = _dl_strtoul (&envline[11], NULL);
- break;
-#endif
-
- case 11:
- /* Path where the binary is found. */
- if (!__libc_enable_secure
- && memcmp (envline, "ORIGIN_PATH", 11) == 0)
- GLRO(dl_origin_path) = &envline[12];
- break;
-
- case 12:
- /* The library search path. */
- if (!__libc_enable_secure
- && memcmp (envline, "LIBRARY_PATH", 12) == 0)
- {
- state->library_path = &envline[13];
- state->library_path_source = "LD_LIBRARY_PATH";
- break;
- }
-
- /* Where to place the profiling data file. */
- if (memcmp (envline, "DEBUG_OUTPUT", 12) == 0)
- {
- debug_output = &envline[13];
- break;
- }
-
- if (!__libc_enable_secure
- && memcmp (envline, "DYNAMIC_WEAK", 12) == 0)
- GLRO(dl_dynamic_weak) = 1;
- break;
-
- case 14:
- /* Where to place the profiling data file. */
- if (!__libc_enable_secure
- && memcmp (envline, "PROFILE_OUTPUT", 14) == 0
- && envline[15] != '\0')
- GLRO(dl_profile_output) = &envline[15];
- break;
-
- case 20:
- /* The mode of the dynamic linker can be set. */
- if (memcmp (envline, "TRACE_LOADED_OBJECTS", 20) == 0)
- {
- state->mode = rtld_mode_trace;
- state->mode_trace_program
- = _dl_strtoul (&envline[21], NULL) > 1;
- }
- break;
- }
- }
-
- /* Extra security for SUID binaries. Remove all dangerous environment
- variables. */
- if (__glibc_unlikely (__libc_enable_secure))
- {
- const char *nextp = UNSECURE_ENVVARS;
- do
- {
- unsetenv (nextp);
- /* We could use rawmemchr but this need not be fast. */
- nextp = (char *) (strchr) (nextp, '\0') + 1;
- }
- while (*nextp != '\0');
-
- if (__access ("/etc/suid-debug", F_OK) != 0)
- {
-#if !HAVE_TUNABLES
- unsetenv ("MALLOC_CHECK_");
-#endif
- GLRO(dl_debug_mask) = 0;
- }
-
- if (state->mode != rtld_mode_normal)
- _exit (5);
- }
- /* If we have to run the dynamic linker in debugging mode and the
- LD_DEBUG_OUTPUT environment variable is given, we write the debug
- messages to this file. */
- else if (state->any_debug && debug_output != NULL)
- {
- const int flags = O_WRONLY | O_APPEND | O_CREAT | O_NOFOLLOW;
- size_t name_len = strlen (debug_output);
- char buf[name_len + 12];
- char *startp;
-
- buf[name_len + 11] = '\0';
- startp = _itoa (__getpid (), &buf[name_len + 11], 10, 0);
- *--startp = '.';
- startp = memcpy (startp - name_len, debug_output, name_len);
-
- GLRO(dl_debug_fd) = __open64_nocancel (startp, flags, DEFFILEMODE);
- if (GLRO(dl_debug_fd) == -1)
- /* We use standard output if opening the file failed. */
- GLRO(dl_debug_fd) = STDOUT_FILENO;
- }
-}
-
-#if HP_TIMING_INLINE
-static void
-print_statistics_item (const char *title, hp_timing_t time,
- hp_timing_t total)
-{
- char cycles[HP_TIMING_PRINT_SIZE];
- HP_TIMING_PRINT (cycles, sizeof (cycles), time);
-
- char relative[3 * sizeof (hp_timing_t) + 2];
- char *cp = _itoa ((1000ULL * time) / total, relative + sizeof (relative),
- 10, 0);
- /* Sets the decimal point. */
- char *wp = relative;
- switch (relative + sizeof (relative) - cp)
- {
- case 3:
- *wp++ = *cp++;
- /* Fall through. */
- case 2:
- *wp++ = *cp++;
- /* Fall through. */
- case 1:
- *wp++ = '.';
- *wp++ = *cp++;
- }
- *wp = '\0';
- _dl_debug_printf ("%s: %s cycles (%s%%)\n", title, cycles, relative);
-}
-#endif
-
-/* Print the various times we collected. */
-static void
-__attribute ((noinline))
-print_statistics (const hp_timing_t *rtld_total_timep)
-{
-#if HP_TIMING_INLINE
- {
- char cycles[HP_TIMING_PRINT_SIZE];
- HP_TIMING_PRINT (cycles, sizeof (cycles), *rtld_total_timep);
- _dl_debug_printf ("\nruntime linker statistics:\n"
- " total startup time in dynamic loader: %s cycles\n",
- cycles);
- print_statistics_item (" time needed for relocation",
- relocate_time, *rtld_total_timep);
- }
-#endif
-
- unsigned long int num_relative_relocations = 0;
- for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
- {
- if (GL(dl_ns)[ns]._ns_loaded == NULL)
- continue;
-
- struct r_scope_elem *scope = &GL(dl_ns)[ns]._ns_loaded->l_searchlist;
-
- for (unsigned int i = 0; i < scope->r_nlist; i++)
- {
- struct link_map *l = scope->r_list [i];
-
- if (l->l_addr != 0 && l->l_info[VERSYMIDX (DT_RELCOUNT)])
- num_relative_relocations
- += l->l_info[VERSYMIDX (DT_RELCOUNT)]->d_un.d_val;
-#ifndef ELF_MACHINE_REL_RELATIVE
- /* Relative relocations are processed on these architectures if
- library is loaded to different address than p_vaddr. */
- if ((l->l_addr != 0)
- && l->l_info[VERSYMIDX (DT_RELACOUNT)])
-#else
- /* On e.g. IA-64 or Alpha, relative relocations are processed
- only if library is loaded to different address than p_vaddr. */
- if (l->l_addr != 0 && l->l_info[VERSYMIDX (DT_RELACOUNT)])
-#endif
- num_relative_relocations
- += l->l_info[VERSYMIDX (DT_RELACOUNT)]->d_un.d_val;
- }
- }
-
- _dl_debug_printf (" number of relocations: %lu\n"
- " number of relocations from cache: %lu\n"
- " number of relative relocations: %lu\n",
- GL(dl_num_relocations),
- GL(dl_num_cache_relocations),
- num_relative_relocations);
-
-#if HP_TIMING_INLINE
- print_statistics_item (" time needed to load objects",
- load_time, *rtld_total_timep);
-#endif
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice-mod1.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice-mod1.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice-mod1.c (nonexistent)
@@ -1,37 +0,0 @@
-/* Initialization of libc after dlmopen/dlclose/dlmopen (bug 29528). Module 1.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <stdio.h>
-
-static void __attribute__ ((constructor))
-init (void)
-{
- puts ("info: tst-dlmopen-twice-mod1.so loaded");
- fflush (stdout);
-}
-
-static void __attribute__ ((destructor))
-fini (void)
-{
- puts ("info: tst-dlmopen-twice-mod1.so about to be unloaded");
- fflush (stdout);
-}
-
-/* Large allocation. The second module does not have this, so it
- should load libc at a different address. */
-char large_allocate[16 * 1024 * 1024];
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice-mod2.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice-mod2.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice-mod2.c (nonexistent)
@@ -1,50 +0,0 @@
-/* Initialization of libc after dlmopen/dlclose/dlmopen (bug 29528). Module 2.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <ctype.h>
-#include <stdio.h>
-
-static void __attribute__ ((constructor))
-init (void)
-{
- puts ("info: tst-dlmopen-twice-mod2.so loaded");
- fflush (stdout);
-}
-
-static void __attribute__ ((destructor))
-fini (void)
-{
- puts ("info: tst-dlmopen-twice-mod2.so about to be unloaded");
- fflush (stdout);
-}
-
-int
-run_check (void)
-{
- puts ("info: about to call isalpha");
- fflush (stdout);
-
- volatile char ch = 'a';
- if (!isalpha (ch))
- {
- puts ("error: isalpha ('a') is not true");
- fflush (stdout);
- return 1;
- }
- return 0;
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/tst-dlmopen-twice.c (nonexistent)
@@ -1,34 +0,0 @@
-/* Initialization of libc after dlmopen/dlclose/dlmopen (bug 29528). Main.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <support/xdlfcn.h>
-#include <support/check.h>
-
-static int
-do_test (void)
-{
- void *handle = xdlmopen (LM_ID_NEWLM, "tst-dlmopen-twice-mod1.so", RTLD_NOW);
- xdlclose (handle);
- handle = xdlmopen (LM_ID_NEWLM, "tst-dlmopen-twice-mod2.so", RTLD_NOW);
- int (*run_check) (void) = xdlsym (handle, "run_check");
- TEST_COMPARE (run_check (), 0);
- xdlclose (handle);
- return 0;
-}
-
-#include <support/test-driver.c>
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf/Makefile (nonexistent)
@@ -1,2994 +0,0 @@
-# Copyright (C) 1995-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-# Makefile for elf subdirectory of GNU C Library.
-
-subdir := elf
-
-include ../Makeconfig
-
-headers = \
- bits/elfclass.h \
- bits/link.h \
- bits/link_lavcurrent.h \
- elf.h \
- link.h \
- # headers
-
-routines = \
- $(all-dl-routines) \
- dl-addr \
- dl-addr-obj \
- dl-early_allocate \
- dl-error \
- dl-iteratephdr \
- dl-libc \
- dl-origin \
- dl-profstub \
- dl-reloc-static-pie \
- dl-support \
- dl-sym \
- dl-sysdep \
- enbl-secure \
- libc-dl_find_object \
- libc_early_init \
- rtld_static_init \
- # routines
-
-# The core dynamic linking functions are in libc for the static and
-# profiled libraries.
-dl-routines = \
- dl-call-libc-early-init \
- dl-close \
- dl-debug \
- dl-debug-symbols \
- dl-deps \
- dl-exception \
- dl-execstack \
- dl-find_object \
- dl-fini \
- dl-init \
- dl-load \
- dl-lookup \
- dl-lookup-direct \
- dl-minimal-malloc \
- dl-misc \
- dl-object \
- dl-open \
- dl-origin \
- dl-printf \
- dl-profile \
- dl-reloc \
- dl-runtime \
- dl-scope \
- dl-setup_hash \
- dl-sort-maps \
- dl-thread_gscope_wait \
- dl-tls \
- dl-tls_init_tp \
- dl-trampoline \
- dl-version \
- dl-write \
- # dl-routines
-
-ifeq (yes,$(use-ldconfig))
-dl-routines += dl-cache
-endif
-
-ifneq (no,$(have-tunables))
-dl-routines += dl-tunables
-tunables-type = $(addprefix TUNABLES_FRONTEND_,$(have-tunables))
-CPPFLAGS-dl-tunables.c += -DTUNABLES_FRONTEND=$(tunables-type)
-
-ifeq (yesyes,$(build-shared)$(run-built-tests))
-tests-special += $(objpfx)list-tunables.out
-endif
-
-# Make sure that the compiler does not insert any library calls in tunables
-# code paths.
-ifeq (yes,$(have-loop-to-function))
-CFLAGS-dl-tunables.c += -fno-tree-loop-distribute-patterns
-endif
-endif
-
-all-dl-routines = $(dl-routines) $(sysdep-dl-routines)
-# But they are absent from the shared libc, because that code is in ld.so.
-elide-routines.os = \
- $(all-dl-routines) \
- dl-early_allocate \
- dl-exception \
- dl-origin \
- dl-reloc-static-pie \
- dl-support \
- dl-sysdep \
- enbl-secure \
- rtld_static_init \
- thread_gscope_wait \
- # elide-routines.os
-
-# These object files are only included in the dynamically-linked libc.
-shared-only-routines = libc-dl_find_object
-
-# ld.so uses those routines, plus some special stuff for being the program
-# interpreter and operating independent of libc.
-rtld-routines = \
- $(all-dl-routines) \
- dl-audit \
- dl-compat \
- dl-diagnostics \
- dl-diagnostics-cpu \
- dl-diagnostics-kernel \
- dl-environ \
- dl-error-minimal \
- dl-hwcaps \
- dl-hwcaps-subdirs \
- dl-hwcaps_split \
- dl-libc_freeres \
- dl-minimal \
- dl-mutex \
- dl-sysdep \
- dl-usage \
- rtld \
- # rtld-routines
-
-all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines)
-
-CFLAGS-dl-runtime.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-dl-lookup.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-dl-iteratephdr.c += $(uses-callbacks)
-
-# Called during static library initialization, so turn stack-protection
-# off for non-shared builds.
-CFLAGS-dl-minimal-malloc.o = $(no-stack-protector)
-CFLAGS-dl-minimal-malloc.op = $(no-stack-protector)
-
-# On targets without __builtin_memset, rtld.c uses a hand-coded loop
-# in _dl_start. Make sure this isn't turned into a call to regular memset.
-ifeq (yes,$(have-loop-to-function))
-CFLAGS-rtld.c += -fno-tree-loop-distribute-patterns
-endif
-
-ifeq (yes,$(have-loop-to-function))
-# Likewise, during static library startup, memset is not yet available.
-CFLAGS-dl-support.c = -fno-tree-loop-distribute-patterns
-endif
-
-# Compile rtld itself without stack protection.
-# Also compile all routines in the static library that are elided from
-# the shared libc because they are in libc.a in the same way.
-
-CFLAGS-.o += $(call elide-stack-protector,.o,$(elide-routines.os))
-CFLAGS-.op += $(call elide-stack-protector,.op,$(elide-routines.os))
-CFLAGS-.os += $(call elide-stack-protector,.os,$(all-rtld-routines))
-
-# Add the requested compiler flags to the early startup code.
-CFLAGS-dl-printf.os += $(rtld-early-cflags)
-CFLAGS-dl-setup_hash.os += $(rtld-early-cflags)
-CFLAGS-dl-sysdep.os += $(rtld-early-cflags)
-CFLAGS-dl-tunables.os += $(rtld-early-cflags)
-CFLAGS-dl-write.os += $(rtld-early-cflags)
-CFLAGS-dl-writev.os += $(rtld-early-cflags)
-CFLAGS-rtld.os += $(rtld-early-cflags)
-
-ifeq ($(unwind-find-fde),yes)
-routines += unwind-dw2-fde-glibc
-shared-only-routines += unwind-dw2-fde-glibc
-endif
-
-before-compile += $(objpfx)trusted-dirs.h
-generated += trusted-dirs.h trusted-dirs.st for-renamed/renamed.so
-generated-dirs += for-renamed
-
-ifeq ($(build-shared),yes)
-ld-map = $(common-objpfx)ld.map
-endif
-
-ifeq (yes,$(build-shared))
-extra-objs = \
- $(all-rtld-routines:%=%.os) \
- sofini.os \
- interp.os \
- # extra-objs
-generated += \
- dl-allobjs.os \
- ld.so ldd \
- librtld.os \
- # generated
-install-others = $(inst_rtlddir)/$(rtld-installed-name) $(inst_bindir)/ld.so
-install-bin-script = ldd
-endif
-
-others = sprof sln
-install-bin = sprof
-others-static = sln
-install-rootsbin = sln
-sln-modules := static-stubs
-extra-objs += $(sln-modules:=.o)
-
-ifeq (yes,$(use-ldconfig))
-ifeq (yes,$(build-shared))
-others-static += ldconfig
-others += ldconfig
-install-rootsbin += ldconfig
-
-ldconfig-modules := \
- cache \
- chroot_canon \
- readlib \
- static-stubs \
- stringtable \
- xmalloc \
- xstrdup \
- # ldconfig-modules
-extra-objs += $(ldconfig-modules:=.o)
-others-extras = $(ldconfig-modules)
-endif
-endif
-
-# To find xmalloc.c and xstrdup.c
-vpath %.c ../locale/programs
-
-ifeq ($(build-shared),yes)
-extra-objs += sotruss-lib.os sotruss-lib.so
-install-others += $(inst_auditdir)/sotruss-lib.so
-install-bin-script += sotruss
-generated += sotruss
-libof-sotruss-lib = extramodules
-LDFLAGS-sotruss-lib.so += $(z-now-$(bind-now))
-$(objpfx)sotruss-lib.so: $(objpfx)sotruss-lib.os
- $(build-module-asneeded)
-$(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \
- $(common-objpfx)libc_nonshared.a
-
-$(objpfx)sotruss: sotruss.sh $(common-objpfx)config.make
- sed -e 's%@VERSION@%$(version)%g' \
- -e 's%@TEXTDOMAINDIR@%$(localedir)%g' \
- -e 's%@PREFIX@%$(prefix)%g' \
- -e 's|@PKGVERSION@|$(PKGVERSION)|g' \
- -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' \
- < $< > $@.new
- chmod 555 $@.new
- mv -f $@.new $@
-$(inst_auditdir)/sotruss-lib.so: $(objpfx)sotruss-lib.so $(+force)
- $(do-install-program)
-endif
-
-tests-static-normal := \
- tst-array1-static \
- tst-array5-static \
- tst-dl-iter-static \
- tst-dst-static \
- tst-env-setuid \
- tst-env-setuid-tunables \
- tst-getauxval-static \
- tst-linkall-static \
- tst-single_threaded-pthread-static \
- tst-single_threaded-static \
- tst-tls-allocation-failure-static \
- tst-tlsalign-extern-static \
- tst-tlsalign-static \
- # tests-static-normal
-
-tests-static-internal := \
- tst-dl_find_object-static \
- tst-ptrguard1-static \
- tst-stackguard1-static \
- tst-tls1-static \
- tst-tls1-static-non-pie \
- # tests-static-internal
-
-CRT-tst-tls1-static-non-pie := $(csu-objpfx)crt1.o
-tst-tls1-static-non-pie-no-pie = yes
-
-tests-container := \
- tst-ldconfig-bad-aux-cache \
- tst-ldconfig-ld_so_conf-update \
- # tests-container
-
-ifeq (no,$(build-hardcoded-path-in-tests))
-# This is an ld.so.cache test, and RPATH/RUNPATH in the executable
-# interferes with its test objectives.
-tests-container += tst-glibc-hwcaps-prepend-cache
-endif
-
-tests := \
- tst-array1 \
- tst-array2 \
- tst-array3 \
- tst-array4 \
- tst-array5 \
- tst-auxv \
- tst-dl-hash \
- tst-leaks1 \
- tst-stringtable \
- tst-tls9 \
- # tests
-
-tests-internal := \
- $(tests-static-internal) \
- tst-tls1 \
- # tests-internal
-
-tests-static := $(tests-static-normal) $(tests-static-internal)
-
-ifeq (yes,$(build-shared))
-tests-static += \
- tst-single_threaded-static-dlopen \
- tst-tls9-static \
- # tests-static
-
-static-dlopen-environment = \
- LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)dlfcn
-tst-tls9-static-ENV = $(static-dlopen-environment)
-tst-single_threaded-static-dlopen-ENV = $(static-dlopen-environment)
-
-tests += \
- argv0test \
- constload1 \
- dblload \
- dblunload \
- filter \
- global \
- initfirst \
- lateglobal \
- loadfail \
- multiload \
- next \
- nodelete \
- nodelete2 \
- nodlopen \
- nodlopen2 \
- noload \
- order \
- order2 \
- origtest \
- preloadtest \
- reldep \
- reldep2 \
- reldep3 \
- reldep4 \
- reldep5 \
- reldep6 \
- reldep7 \
- reldep8 \
- resolvfail \
- restest1 \
- restest2 \
- tst-absolute-sym \
- tst-absolute-zero \
- tst-addr1 \
- tst-align \
- tst-align2 \
- tst-align3 \
- tst-audit1 \
- tst-audit2 \
- tst-audit8 \
- tst-audit9 \
- tst-audit11 \
- tst-audit12 \
- tst-audit13 \
- tst-audit17 \
- tst-audit18 \
- tst-audit19b \
- tst-audit20 \
- tst-audit21 \
- tst-audit22 \
- tst-audit23 \
- tst-audit24a \
- tst-audit24b \
- tst-audit24c \
- tst-audit24d \
- tst-audit25a \
- tst-audit25b \
- tst-audit28 \
- tst-auditmany \
- tst-auxobj \
- tst-auxobj-dlopen \
- tst-big-note \
- tst-debug1 \
- tst-deep1 \
- tst-dl-is_dso \
- tst-dlmodcount \
- tst-dlmopen1 \
- tst-dlmopen3 \
- tst-dlmopen4 \
- tst-dlmopen-dlerror \
- tst-dlmopen-gethostbyname \
- tst-dlmopen-twice \
- tst-dlopenfail \
- tst-dlopenfail-2 \
- tst-dlopenrpath \
- tst-dlopen-self \
- tst-dlopen-tlsmodid \
- tst-dlsym-error \
- tst-filterobj \
- tst-filterobj-dlopen \
- tst-glibc-hwcaps \
- tst-glibc-hwcaps-mask \
- tst-glibc-hwcaps-prepend \
- tst-global1 \
- tst-global2 \
- tst-initfinilazyfail \
- tst-initorder \
- tst-initorder2 \
- tst-latepthread \
- tst-main1 \
- tst-next-ver \
- tst-nodelete2 \
- tst-nodelete-dlclose \
- tst-nodelete-opened \
- tst-noload \
- tst-null-argv \
- tst-p_align1 \
- tst-p_align2 \
- tst-p_align3 \
- tst-relsort1 \
- tst-ro-dynamic \
- tst-rtld-run-static \
- tst-single_threaded \
- tst-single_threaded-pthread \
- tst-sonamemove-dlopen \
- tst-sonamemove-link \
- tst-thrlock \
- tst-tls10 \
- tst-tls11 \
- tst-tls12 \
- tst-tls13 \
- tst-tls14 \
- tst-tls15 \
- tst-tls16 \
- tst-tls17 \
- tst-tls18 \
- tst-tls19 \
- tst-tls20 \
- tst-tls21 \
- tst-tls4 \
- tst-tls5 \
- tst-tlsalign \
- tst-tlsalign-extern \
- tst-tls-dlinfo \
- tst-tls-ie \
- tst-tls-ie-dlmopen \
- tst-tls-manydynamic \
- tst-unique1 \
- tst-unique2 \
- tst-unwind-ctor \
- tst-unwind-main \
- unload3 \
- unload4 \
- unload5 \
- unload6 \
- unload7 \
- unload8 \
- valgrind-test \
- # tests
-tests-cxx = \
- tst-dlopen-nodelete-reloc \
- tst-nodelete \
- tst-unique3 \
- tst-unique4 \
- # tests-cxx
-
-tests += $(if $(CXX),$(tests-cxx))
-
-tests-internal += \
- circleload1 \
- loadtest \
- neededtest \
- neededtest2 \
- neededtest3 \
- neededtest4 \
- tst-audit19a \
- tst-create_format1 \
- tst-dl-hwcaps_split \
- tst-dl_find_object \
- tst-dl_find_object-threads \
- tst-dlmopen2 \
- tst-ptrguard1 \
- tst-stackguard1 \
- tst-tls-surplus \
- tst-tls3 \
- tst-tls6 \
- tst-tls7 \
- tst-tls8 \
- unload \
- unload2 \
- # tests-internal
-
-tests-container += \
- tst-dlopen-self-container \
- tst-dlopen-tlsmodid-container \
- tst-pldd \
- tst-preload-pthread-libc \
- # tests-container
-
-test-srcs = \
- tst-pathopt \
- # tests-srcs
-
-ifeq (yes,$(have-fpie))
-tests-pie += tst-align3
-endif
-selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null)
-
-ifneq ($(selinux-enabled),1)
-tests-execstack-yes = \
- tst-execstack \
- tst-execstack-needed \
- tst-execstack-prog \
- # tests-execstack-yes
-endif
-ifeq ($(have-depaudit),yes)
-tests += \
- tst-audit14 \
- tst-audit14a \
- tst-audit15 \
- tst-audit16 \
- # tests
-ifeq ($(run-built-tests),yes)
-tests-special += \
- $(objpfx)tst-audit14-cmp.out \
- $(objpfx)tst-audit14a-cmp.out \
- $(objpfx)tst-audit15-cmp.out \
- $(objpfx)tst-audit16-cmp.out \
- # tests-special
-endif
-endif
-ifeq ($(have-dt-relr),yes)
-tests += \
- tst-relr \
- tst-relr2 \
- tst-relr3 \
- tst-relr4 \
-# tests
-modules-names-dt-relr = \
- tst-relr-mod2 \
- tst-relr-mod3a \
- tst-relr-mod3b \
- tst-relr-mod4a \
- tst-relr-mod4b \
-# modules-names-dt-relr
-modules-names += $(modules-names-dt-relr)
-# These shared libraries have special build rules.
-modules-names-nobuild += $(modules-names-dt-relr)
-ifeq ($(have-fpie),yes)
-tests += \
- tst-relr-pie \
-# tests
-tests-pie += \
- tst-relr-pie \
-# tests-pie
-tests-special += \
- $(objpfx)check-tst-relr-pie.out \
-# tests-special
-endif
-CFLAGS-tst-relr-pie.c += $(pie-ccflag)
-LDFLAGS-tst-relr += -Wl,-z,pack-relative-relocs
-LDFLAGS-tst-relr-pie += -Wl,-z,pack-relative-relocs
-CFLAGS-tst-relr-mod2.c += $(no-stack-protector)
-CFLAGS-tst-relr-mod3a.c += $(no-stack-protector)
-CFLAGS-tst-relr-mod3b.c += $(no-stack-protector)
-CFLAGS-tst-relr-mod4a.c += $(no-stack-protector)
-CFLAGS-tst-relr-mod4b.c += $(no-stack-protector)
-endif
-endif
-
-tests-special += $(objpfx)tst-relro-ldso.out $(objpfx)tst-relro-libc.out
-$(objpfx)tst-relro-ldso.out: tst-relro-symbols.py $(..)/scripts/glibcelf.py \
- $(objpfx)ld.so
- $(PYTHON) tst-relro-symbols.py $(objpfx)ld.so \
- --required=_rtld_global_ro \
- > $@ 2>&1; $(evaluate-test)
-# The optional symbols are present in libc only if the architecture has
-# the GLIBC_2.0 symbol set in libc.
-$(objpfx)tst-relro-libc.out: tst-relro-symbols.py $(..)/scripts/glibcelf.py \
- $(common-objpfx)libc.so
- $(PYTHON) tst-relro-symbols.py $(common-objpfx)libc.so \
- --required=_IO_cookie_jumps \
- --required=_IO_file_jumps \
- --required=_IO_file_jumps_maybe_mmap \
- --required=_IO_file_jumps_mmap \
- --required=_IO_helper_jumps \
- --required=_IO_mem_jumps \
- --required=_IO_obstack_jumps \
- --required=_IO_proc_jumps \
- --required=_IO_str_chk_jumps \
- --required=_IO_str_jumps \
- --required=_IO_strn_jumps \
- --required=_IO_wfile_jumps \
- --required=_IO_wfile_jumps_maybe_mmap \
- --required=_IO_wfile_jumps_mmap \
- --required=_IO_wmem_jumps \
- --required=_IO_wstr_jumps \
- --required=_IO_wstrn_jumps \
- --optional=_IO_old_cookie_jumps \
- --optional=_IO_old_file_jumps \
- --optional=_IO_old_proc_jumps \
- > $@ 2>&1; $(evaluate-test)
-
-ifeq ($(run-built-tests),yes)
-tests-special += $(objpfx)tst-valgrind-smoke.out
-endif
-$(objpfx)tst-valgrind-smoke.out: tst-valgrind-smoke.sh $(objpfx)ld.so $(objpfx)valgrind-test
- $(SHELL) $< $(objpfx)ld.so $(rtlddir)/$(rtld-installed-name) '$(test-wrapper-env)' \
- '$(run-program-env)' '$(rpath-link)' $(objpfx)valgrind-test > $@; $(evaluate-test)
-
-tests += $(tests-execstack-$(have-z-execstack))
-ifeq ($(run-built-tests),yes)
-tests-special += \
- $(objpfx)noload-mem.out \
- $(objpfx)tst-ldconfig-X.out \
- $(objpfx)tst-leaks1-mem.out \
- $(objpfx)tst-rtld-help.out \
- # tests-special
-endif
-tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-tlsmod17a-modules = $(addprefix tst-tlsmod17a, $(tlsmod17a-suffixes))
-tlsmod18a-modules = $(addprefix tst-tlsmod18a, $(tlsmod17a-suffixes))
-one-hundred = $(foreach x,0 1 2 3 4 5 6 7 8 9, \
- 0$x 1$x 2$x 3$x 4$x 5$x 6$x 7$x 8$x 9$x)
-tst-tls-many-dynamic-modules := \
- $(foreach n,$(one-hundred),tst-tls-manydynamic$(n)mod)
-tst-tls-many-dynamic-modules-dep-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 \
- 14 15 16 17 18 19
-tst-tls-many-dynamic-modules-dep = \
- $(foreach n,$(tst-tls-many-dynamic-modules-dep-suffixes),tst-tls-manydynamic$(n)mod-dep)
-tst-tls-many-dynamic-modules-dep-bad-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
-tst-tls-many-dynamic-modules-dep-bad = \
- $(foreach n,$(tst-tls-many-dynamic-modules-dep-bad-suffixes),tst-tls-manydynamic$(n)mod-dep-bad)
-extra-test-objs += \
- $(tlsmod17a-modules:=.os) \
- $(tlsmod18a-modules:=.os) \
- tst-tlsalign-vars.o \
- # extra-test-objs
-test-extras += \
- tst-tlsalign-vars \
- tst-tlsmod17a \
- tst-tlsmod18a \
- # test-extras
-modules-names += \
- circlemod1 \
- circlemod1a \
- circlemod2 \
- circlemod2a \
- circlemod3 \
- circlemod3a \
- constload2 \
- constload3 \
- dblloadmod1 \
- dblloadmod2 \
- dblloadmod3 \
- dep1 \
- dep2 \
- dep3 \
- dep4 \
- failobj \
- filtmod1 \
- filtmod2 \
- firstobj \
- globalmod1 \
- libmarkermod1-1 \
- libmarkermod1-2 \
- libmarkermod1-3 \
- libmarkermod2-1 \
- libmarkermod2-2 \
- libmarkermod3-1 \
- libmarkermod3-2 \
- libmarkermod3-3 \
- libmarkermod4-1 \
- libmarkermod4-2 \
- libmarkermod4-3 \
- libmarkermod4-4 \
- libmarkermod5-1 \
- libmarkermod5-2 \
- libmarkermod5-3 \
- libmarkermod5-4 \
- libmarkermod5-5 \
- libtracemod1-1 \
- libtracemod2-1 \
- libtracemod3-1 \
- libtracemod4-1 \
- libtracemod5-1 \
- ltglobmod1 \
- ltglobmod2 \
- neededobj1 \
- neededobj2 \
- neededobj3 \
- neededobj4 \
- neededobj5 \
- neededobj6 \
- nextmod1 \
- nextmod2 \
- nextmod3 \
- nodel2mod1 \
- nodel2mod2 \
- nodel2mod3 \
- nodelmod1 \
- nodelmod2 \
- nodelmod3 \
- nodelmod4 \
- nodlopenmod \
- nodlopenmod2 \
- order2mod1 \
- order2mod2 \
- order2mod3 \
- order2mod4 \
- pathoptobj \
- reldep4mod1 \
- reldep4mod2 \
- reldep4mod3 \
- reldep4mod4 \
- reldep6mod0 \
- reldep6mod1 \
- reldep6mod2 \
- reldep6mod3 \
- reldep6mod4 \
- reldep7mod1 \
- reldep7mod2 \
- reldep8mod1 \
- reldep8mod2 \
- reldep8mod3 \
- reldep9mod1 \
- reldep9mod2 \
- reldep9mod3 \
- reldepmod1 \
- reldepmod2 \
- reldepmod3 \
- reldepmod4 \
- reldepmod5 \
- reldepmod6 \
- testobj1 \
- testobj1_1 \
- testobj2 \
- testobj3 \
- testobj4 \
- testobj5 \
- testobj6 \
- tst-absolute-sym-lib \
- tst-absolute-zero-lib \
- tst-alignmod \
- tst-alignmod2 \
- tst-alignmod3 \
- tst-array2dep \
- tst-array5dep \
- tst-audit11mod1 \
- tst-audit11mod2 \
- tst-audit12mod1 \
- tst-audit12mod2 \
- tst-audit12mod3 \
- tst-audit13mod1 \
- tst-audit18mod \
- tst-audit19bmod \
- tst-audit23mod \
- tst-audit24amod1 \
- tst-audit24amod2 \
- tst-audit24bmod1 \
- tst-audit24bmod2 \
- tst-audit24dmod1 \
- tst-audit24dmod2 \
- tst-audit24dmod3 \
- tst-audit24dmod4 \
- tst-audit25mod1 \
- tst-audit25mod2 \
- tst-audit25mod3 \
- tst-audit25mod4 \
- tst-auditlogmod-1 \
- tst-auditlogmod-2 \
- tst-auditlogmod-3 \
- tst-auditmanymod1 \
- tst-auditmanymod2 \
- tst-auditmanymod3 \
- tst-auditmanymod4 \
- tst-auditmanymod5 \
- tst-auditmanymod6 \
- tst-auditmanymod7 \
- tst-auditmanymod8 \
- tst-auditmanymod9 \
- tst-auditmod1 \
- tst-auditmod9a \
- tst-auditmod9b \
- tst-auditmod11 \
- tst-auditmod12 \
- tst-auditmod18 \
- tst-auditmod19a \
- tst-auditmod19b \
- tst-auditmod20 \
- tst-auditmod21a \
- tst-auditmod21b \
- tst-auditmod22 \
- tst-auditmod23 \
- tst-auditmod24a \
- tst-auditmod24b \
- tst-auditmod24c \
- tst-auditmod24d \
- tst-auditmod25 \
- tst-auditmod28 \
- tst-auxvalmod \
- tst-big-note-lib \
- tst-deep1mod1 \
- tst-deep1mod2 \
- tst-deep1mod3 \
- tst-dl_find_object-mod1 \
- tst-dl_find_object-mod2 \
- tst-dl_find_object-mod3 \
- tst-dl_find_object-mod4 \
- tst-dl_find_object-mod5 \
- tst-dl_find_object-mod6 \
- tst-dl_find_object-mod7 \
- tst-dl_find_object-mod8 \
- tst-dl_find_object-mod9 \
- tst-dlmopen1mod \
- tst-dlmopen-dlerror-mod \
- tst-dlmopen-gethostbyname-mod \
- tst-dlmopen-twice-mod1 \
- tst-dlmopen-twice-mod2 \
- tst-dlopenfaillinkmod \
- tst-dlopenfailmod1 \
- tst-dlopenfailmod2 \
- tst-dlopenfailmod3 \
- tst-dlopenfailnodelmod \
- tst-dlopenrpathmod \
- tst-filterobj-aux \
- tst-filterobj-filtee \
- tst-filterobj-flt \
- tst-finilazyfailmod \
- tst-globalmod2 \
- tst-initlazyfailmod \
- tst-initorder2a \
- tst-initorder2b \
- tst-initorder2c \
- tst-initorder2d \
- tst-initordera1 \
- tst-initordera2 \
- tst-initordera3 \
- tst-initordera4 \
- tst-initorderb1 \
- tst-initorderb2 \
- tst-latepthreadmod \
- tst-ldconfig-ld-mod \
- tst-main1mod \
- tst-nodelete2mod \
- tst-nodelete-dlclose-dso \
- tst-nodelete-dlclose-plugin \
- tst-nodelete-opened-lib \
- tst-null-argv-lib \
- tst-p_alignmod-base \
- tst-p_alignmod3 \
- tst-relsort1mod1 \
- tst-relsort1mod2 \
- tst-ro-dynamic-mod \
- tst-single_threaded-mod1 \
- tst-single_threaded-mod2 \
- tst-single_threaded-mod3 \
- tst-single_threaded-mod4 \
- tst-sonamemove-linkmod1 \
- tst-sonamemove-runmod1 \
- tst-sonamemove-runmod2 \
- tst-tls19mod1 \
- tst-tls19mod2 \
- tst-tls19mod3 \
- tst-tls20mod-bad \
- tst-tls21mod \
- tst-tlsalign-lib \
- tst-tls-ie-mod0 \
- tst-tls-ie-mod1 \
- tst-tls-ie-mod2 \
- tst-tls-ie-mod3 \
- tst-tls-ie-mod4 \
- tst-tls-ie-mod5 \
- tst-tls-ie-mod6 \
- tst-tlsmod1 \
- tst-tlsmod10 \
- tst-tlsmod11 \
- tst-tlsmod12 \
- tst-tlsmod13 \
- tst-tlsmod13a \
- tst-tlsmod14a \
- tst-tlsmod14b \
- tst-tlsmod15a \
- tst-tlsmod15b \
- tst-tlsmod16a \
- tst-tlsmod16b \
- tst-tlsmod17b \
- tst-tlsmod2 \
- tst-tlsmod3 \
- tst-tlsmod4 \
- tst-tlsmod5 \
- tst-tlsmod6 \
- tst-tlsmod7 \
- tst-tlsmod8 \
- tst-tlsmod9 \
- tst-unique1mod1 \
- tst-unique1mod2 \
- tst-unique2mod1 \
- tst-unique2mod2 \
- tst-unwind-ctor-lib \
- unload2dep \
- unload2mod \
- unload3mod1 \
- unload3mod2 \
- unload3mod3 \
- unload3mod4 \
- unload4mod1 \
- unload4mod2 \
- unload4mod3 \
- unload4mod4 \
- unload6mod1 \
- unload6mod2 \
- unload6mod3 \
- unload7mod1 \
- unload7mod2 \
- unload8mod1 \
- unload8mod1x \
- unload8mod2 \
- unload8mod3 \
- unloadmod \
- vismod1 \
- vismod2 \
- vismod3 \
-# modules-names
-
-modules-names-cxx = \
- tst-dlopen-nodelete-reloc-mod1 \
- tst-dlopen-nodelete-reloc-mod10 \
- tst-dlopen-nodelete-reloc-mod11 \
- tst-dlopen-nodelete-reloc-mod12 \
- tst-dlopen-nodelete-reloc-mod13 \
- tst-dlopen-nodelete-reloc-mod14 \
- tst-dlopen-nodelete-reloc-mod15 \
- tst-dlopen-nodelete-reloc-mod16 \
- tst-dlopen-nodelete-reloc-mod17 \
- tst-dlopen-nodelete-reloc-mod2 \
- tst-dlopen-nodelete-reloc-mod3 \
- tst-dlopen-nodelete-reloc-mod4 \
- tst-dlopen-nodelete-reloc-mod5 \
- tst-dlopen-nodelete-reloc-mod6 \
- tst-dlopen-nodelete-reloc-mod7 \
- tst-dlopen-nodelete-reloc-mod8 \
- tst-dlopen-nodelete-reloc-mod9 \
- tst-nodelete-rtldmod \
- tst-nodelete-uniquemod \
- tst-nodelete-zmod \
- tst-unique3lib \
- tst-unique3lib2 \
- tst-unique4lib \
- # modules-names-cxx
-
-modules-names += \
- $(if $(CXX),$(modules-names-cxx)) \
- $(modules-execstack-$(have-z-execstack)) \
- $(tlsmod17a-modules) \
- $(tlsmod18a-modules) \
- $(tst-tls-many-dynamic-modules) \
- $(tst-tls-many-dynamic-modules-dep) \
- $(tst-tls-many-dynamic-modules-dep-bad) \
- # modules-names
-
-# Most modules build with _ISOMAC defined, but those filtered out
-# depend on internal headers.
-modules-names-tests = $(filter-out ifuncmod% tst-tlsmod%,\
- $(modules-names))
-
-# For +depfiles in Makerules.
-extra-test-objs += tst-auditmod17.os
-
-ifeq (yes,$(have-mtls-dialect-gnu2))
-tests += tst-gnu2-tls1
-modules-names += tst-gnu2-tls1mod
-$(objpfx)tst-gnu2-tls1: $(objpfx)tst-gnu2-tls1mod.so
-tst-gnu2-tls1mod.so-no-z-defs = yes
-CFLAGS-tst-gnu2-tls1mod.c += -mtls-dialect=gnu2
-
-tests += tst-audit-tlsdesc tst-audit-tlsdesc-dlopen
-modules-names += tst-audit-tlsdesc-mod1 tst-audit-tlsdesc-mod2 tst-auditmod-tlsdesc
-$(objpfx)tst-audit-tlsdesc: $(objpfx)tst-audit-tlsdesc-mod1.so \
- $(objpfx)tst-audit-tlsdesc-mod2.so \
- $(shared-thread-library)
-CFLAGS-tst-audit-tlsdesc-mod1.c += -mtls-dialect=gnu2
-CFLAGS-tst-audit-tlsdesc-mod2.c += -mtls-dialect=gnu2
-$(objpfx)tst-audit-tlsdesc-dlopen: $(shared-thread-library)
-$(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-audit-tlsdesc-mod1.so \
- $(objpfx)tst-audit-tlsdesc-mod2.so
-$(objpfx)tst-audit-tlsdesc-mod1.so: $(objpfx)tst-audit-tlsdesc-mod2.so
-$(objpfx)tst-audit-tlsdesc.out: $(objpfx)tst-auditmod-tlsdesc.so
-tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so
-$(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so
-tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so
-endif
-ifeq (yes,$(have-protected-data))
-modules-names += tst-protected1moda tst-protected1modb
-tests += tst-protected1a tst-protected1b
-$(objpfx)tst-protected1a: $(addprefix $(objpfx),tst-protected1moda.so tst-protected1modb.so)
-$(objpfx)tst-protected1b: $(addprefix $(objpfx),tst-protected1modb.so tst-protected1moda.so)
-tst-protected1modb.so-no-z-defs = yes
-# These tests fail with GCC versions prior to 5.1 and with some versions
-# of binutils. See https://sourceware.org/bugzilla/show_bug.cgi?id=17709
-# and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248 for details.
-# Perhaps in future we can make these XFAILs conditional on some detection
-# of compiler/linker behavior/version.
-test-xfail-tst-protected1a = yes
-test-xfail-tst-protected1b = yes
-endif
-ifeq (yesyes,$(have-fpie)$(build-shared))
-modules-names += tst-piemod1
-tests += tst-pie1 tst-pie2 tst-dlopen-pie tst-dlopen-tlsmodid-pie \
- tst-dlopen-self-pie
-tests-pie += tst-pie1 tst-pie2 tst-dlopen-tlsmodid-pie tst-dlopen-self-pie
-ifeq (yes,$(have-protected-data))
-tests += vismain
-tests-pie += vismain
-CFLAGS-vismain.c += $(PIE-ccflag)
-endif
-endif
-modules-execstack-yes = tst-execstack-mod
-extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
-
-# filtmod1.so, tst-big-note-lib.so, tst-ro-dynamic-mod.so have special
-# rules.
-modules-names-nobuild += \
- filtmod1 \
- tst-audit24bmod1 \
- tst-audit24bmod2 \
- tst-big-note-lib \
- tst-ro-dynamic-mod \
-# modules-names-nobuild
-
-tests += $(tests-static)
-
-ifeq (yes,$(have-ifunc))
-tests-ifuncstatic := \
- ifuncmain1static \
- ifuncmain1picstatic \
- ifuncmain2static \
- ifuncmain2picstatic \
- ifuncmain4static \
- ifuncmain4picstatic \
- ifuncmain5static \
- ifuncmain5picstatic \
- ifuncmain7static \
- ifuncmain7picstatic \
- # tests-ifuncstatic
-ifeq (yes,$(have-gcc-ifunc))
-tests-ifuncstatic += ifuncmain9static ifuncmain9picstatic
-endif
-tests-static += $(tests-ifuncstatic)
-tests-internal += $(tests-ifuncstatic)
-ifeq (yes,$(build-shared))
-tests += \
- tst-ifunc-fault-bindnow \
- tst-ifunc-fault-lazy \
- # tests
-# Note: sysdeps/x86_64/ifuncmain8.c uses ifuncmain8.
-tests-internal += \
- ifuncmain1pic \
- ifuncmain1staticpic \
- ifuncmain1vis \
- ifuncmain1vispic \
- ifuncmain2 \
- ifuncmain2pic \
- ifuncmain3 \
- ifuncmain4 \
- ifuncmain5staticpic \
- ifuncmain7 \
- ifuncmain7pic \
- # tests-internal
-ifeq (no,$(with-lld))
-tests-internal += \
- ifuncmain1 \
- ifuncmain5 \
- ifuncmain5pic \
- # tests-internal
-endif
-ifeq (yes,$(have-gcc-ifunc))
-tests-internal += \
- ifuncmain9 \
- ifuncmain9pic \
- # tests-internal
-endif
-ifunc-test-modules = \
- ifuncdep1 \
- ifuncdep1pic \
- ifuncdep2 \
- ifuncdep2pic \
- ifuncdep5 \
- ifuncdep5pic \
- # ifunc-test-modules
-extra-test-objs += $(ifunc-test-modules:=.o)
-test-internal-extras += $(ifunc-test-modules)
-ifeq (yes,$(have-fpie))
-ifunc-pie-tests = \
- ifuncmain1pie \
- ifuncmain1staticpie \
- ifuncmain1vispie \
- ifuncmain6pie \
- ifuncmain7pie \
- # ifunc-pie-tests
-ifeq (yes,$(have-gcc-ifunc))
-ifunc-pie-tests += ifuncmain9pie
-endif
-ifeq (no,$(with-lld))
-ifunc-pie-tests += ifuncmain5pie
-endif
-ifeq (yes,$(have-textrel_ifunc))
-ifunc-pie-tests += tst-ifunc-textrel
-endif
-tests-internal += $(ifunc-pie-tests)
-tests-pie += $(ifunc-pie-tests)
-endif
-modules-names += \
- ifuncmod1 \
- ifuncmod3 \
- ifuncmod6 \
- # module-names
-ifeq (no,$(with-lld))
-modules-names += ifuncmod5
-endif
-endif
-endif
-
-ifeq (yes,$(build-shared))
-ifeq ($(run-built-tests),yes)
-tests-special += \
- $(objpfx)argv0test.out \
- $(objpfx)tst-pathopt.out \
- $(objpfx)tst-rtld-help.out \
- $(objpfx)tst-rtld-load-self.out \
- $(objpfx)tst-rtld-preload.out \
- # tests-special
-endif
-tests-special += \
- $(objpfx)check-execstack.out \
- $(objpfx)check-initfini.out \
- $(objpfx)check-localplt.out \
- $(objpfx)check-textrel.out \
- $(objpfx)check-wx-segment.out \
- # tests-special
-endif
-
-ifeq ($(run-built-tests),yes)
-tests-special += \
- $(objpfx)order-cmp.out \
- $(objpfx)order2-cmp.out \
- $(objpfx)tst-array1-cmp.out \
- $(objpfx)tst-array1-static-cmp.out \
- $(objpfx)tst-array2-cmp.out \
- $(objpfx)tst-array3-cmp.out \
- $(objpfx)tst-array4-cmp.out \
- $(objpfx)tst-array5-cmp.out \
- $(objpfx)tst-array5-static-cmp.out \
- $(objpfx)tst-initorder-cmp.out \
- $(objpfx)tst-initorder2-cmp.out \
- $(objpfx)tst-unused-dep-cmp.out \
- $(objpfx)tst-unused-dep.out \
- $(objpfx)tst-trace1.out \
- $(objpfx)tst-trace2.out \
- $(objpfx)tst-trace3.out \
- $(objpfx)tst-trace4.out \
- $(objpfx)tst-trace5.out \
- # tests-special
-endif
-
-ifndef avoid-generated
-# DSO sorting tests:
-# The dso-ordering-test.py script generates testcase source files in $(objpfx),
-# creating a $(objpfx)<testcase-name>-dir for each testcase, and creates a
-# Makefile fragment to be included.
-define include_dsosort_tests
-$(objpfx)$(1).generated-makefile: $(1)
- $(PYTHON) $(..)scripts/dso-ordering-test.py \
- --description-file $$< --objpfx $(objpfx) --output-makefile $$@T
- mv $$@T $$@
--include $(objpfx)$(1).generated-makefile
-endef
-endif
-
-postclean-generated += $(objpfx)/dso-sort-tests-2.generated-makefile \
- $(objpfx)/dso-sort-tests-2.generated-makefile
-
-# Generate from each testcase description file
-ifeq (yes,$(have-tunables))
-$(eval $(call include_dsosort_tests,dso-sort-tests-1.def))
-$(eval $(call include_dsosort_tests,dso-sort-tests-2.def))
-endif
-
-check-abi: $(objpfx)check-abi-ld.out \
- $(objpfx)check-abi-version-libc.out
-tests-special += \
- $(objpfx)check-abi-ld.out \
- $(objpfx)check-abi-version-libc.out \
-# tests-special
-update-abi: update-abi-ld
-update-all-abi: update-all-abi-ld
-
-tests-special += $(objpfx)tst-glibcelf.out
-$(objpfx)tst-glibcelf.out: tst-glibcelf.py elf.h $(..)/scripts/glibcelf.py \
- $(..)/scripts/glibcextract.py
- PYTHONPATH=$(..)scripts $(PYTHON) tst-glibcelf.py \
- --cc="$(CC) $(patsubst -DMODULE_NAME=%,-DMODULE_NAME=testsuite,$(CPPFLAGS))" \
- < /dev/null > $@ 2>&1; $(evaluate-test)
-
-ifeq ($(run-built-tests),yes)
-tests-special += $(objpfx)tst-tls-allocation-failure-static-patched.out
-endif
-
-# The test requires shared _and_ PIE because the executable
-# unit test driver must be able to link with the shared object
-# that is going to eventually go into an installed DSO.
-ifeq (yesyes,$(have-fpie)$(build-shared))
-tests-internal += tst-_dl_addr_inside_object
-tests-pie += tst-_dl_addr_inside_object
-$(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
-CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
-endif
-
-# We can only test static libcrypt use if libcrypt has been built,
-# and either NSS crypto is not in use, or static NSS libraries are
-# available.
-ifeq ($(build-crypt),no)
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=0
-else
-ifeq ($(nss-crypt),no)
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
-else
-ifeq ($(static-nss-crypt),no)
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=0
-else
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
-endif
-endif
-endif
-
-include ../Rules
-
-ifeq (yes,$(build-shared))
-# Make sure these things are built in the `make lib' pass so they can be used
-# to run programs during the `make others' pass.
-lib-noranlib: $(objpfx)$(rtld-installed-name) \
- $(addprefix $(objpfx),$(extra-objs))
-endif
-
-# Command to link into a larger single relocatable object.
-reloc-link = $(LINK.o) -nostdlib -nostartfiles -r
-
-$(objpfx)sotruss-lib.so: $(shlib-lds)
-
-$(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os)
- $(reloc-link) -o $@ $^
-
-# Link together the dynamic linker into a single relocatable object.
-# First we do a link against libc_pic.a just to get a link map,
-# and discard the object produced by that link. From the link map
-# we can glean all the libc modules that need to go into the dynamic
-# linker. Then we do a recursive make that goes into all the subdirs
-# those modules come from and builds special rtld-foo.os versions that
-# are compiled with special flags, and puts these modules into rtld-libc.a
-# for us. Then we do the real link using rtld-libc.a instead of libc_pic.a.
-
-# These symbols need to be stubbed out during symbol discovery because
-# their implementation is provided differently in rtld, and the symbol
-# discovery mechanism is not compatible with the libc implementation
-# when compiled for libc.
-rtld-stubbed-symbols = \
- __GI___pthread_disable_asynccancel \
- __GI___pthread_enable_asynccancel \
- __pthread_disable_asynccancel \
- __pthread_enable_asynccancel \
- calloc \
- free \
- malloc \
- realloc \
- # rtld-stubbed-symbols
-
-ifeq ($(have-ssp),yes)
-# rtld is not built with the stack protector, so these references will
-# go away in the rebuilds.
-rtld-stubbed-symbols += __stack_chk_fail __stack_chk_fail_local
-endif
-
-$(objpfx)librtld.map: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a
- @-rm -f $@T
- for symbol in $(rtld-stubbed-symbols); do \
- echo ".globl $$symbol"; \
- echo "$$symbol:"; \
- done | $(CC) -o $@T.o $(ASFLAGS) -c -x assembler -
- $(reloc-link) -o $@.o $@T.o '-Wl,-(' $^ -lgcc '-Wl,-)' -Wl,-Map,$@T
- rm -f %@T.o $@.o
- mv -f $@T $@
-
-# For lld, skip preceding addresses and values before matching the archive and the member.
-$(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
- LC_ALL=C \
- sed -n 's@^[0-9a-f ]*$(common-objpfx)\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \
- $< | \
- while read lib file; do \
- case $$lib in \
- libc_pic.a) \
- LC_ALL=C grep -F -l /$$file \
- $(common-objpfx)stamp.os $(common-objpfx)*/stamp.os | \
- LC_ALL=C \
- sed 's@^$(common-objpfx)\([^/]*\)/stamp\.os$$@rtld-\1'" +=$$file@"\
- ;; \
- */*.a) \
- echo rtld-$${lib%%/*} += $$file ;; \
- *) echo "Wasn't expecting $$lib($$file)" >&2; exit 1 ;; \
- esac; \
- done > $@T
- echo rtld-subdirs = `LC_ALL=C sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \
- | LC_ALL=C sort -u` >> $@T
- mv -f $@T $@
-
-$(objpfx)rtld-libc.a: $(objpfx)librtld.mk FORCE
- $(MAKE) -f $< -f rtld-Rules
-
-$(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a
- $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \
- -Wl,-Map,$@.map
-
-generated += librtld.map librtld.mk rtld-libc.a librtld.os.map
-
-z-now-yes = -Wl,-z,now
-
-$(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
-# Link into a temporary file so that we don't touch $@ at all
-# if the sanity check below fails.
- $(LINK.o) -nostdlib -nostartfiles -shared -o $@.new \
- $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \
- $(dt-relr-ldflag) \
- $(filter-out $(map-file),$^) $(load-map-file) \
- -Wl,-soname=$(rtld-installed-name)
- $(call after-link,$@.new)
- $(READELF) -s $@.new \
- | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
- mv -f $@.new $@
-
-ifeq (yes,$(build-shared))
-# interp.c exists just to get the runtime linker path into libc.so.
-$(objpfx)interp.os: $(common-objpfx)runtime-linker.h
-endif
-
-ifneq (ld.so,$(rtld-installed-name))
-# Make sure ld.so.1 exists in the build directory so we can link
-# against it.
-$(objpfx)$(rtld-installed-name): $(objpfx)ld.so
- $(make-link)
-generated += $(rtld-installed-name)
-endif
-
-# Build a file mentioning all trustworthy directories to look for shared
-# libraries when using LD_LIBRARY_PATH in a setuid program. The user can
-# add directories to the list by defining $(user-defined-trusted-dirs)
-# before starting make.
-$(objpfx)trusted-dirs.h: $(objpfx)trusted-dirs.st; @:
-$(objpfx)trusted-dirs.st: Makefile $(..)Makeconfig
- $(make-target-directory)
- echo "$(subst :, ,$(default-rpath) $(user-defined-trusted-dirs))" \
- | $(AWK) -f gen-trusted-dirs.awk > ${@:st=T};
- echo '#define DL_DST_LIB "$(notdir $(slibdir))"' >> ${@:st=T}
- $(move-if-change) ${@:st=T} ${@:st=h}
- touch $@
-CPPFLAGS-dl-load.c += -I$(objpfx). -I$(csu-objpfx).
-
-ifeq (yes,$(build-shared))
-$(inst_rtlddir)/$(rtld-installed-name): $(objpfx)ld.so $(+force)
- $(make-target-directory)
- $(do-install-program)
-
-# Creates the relative /usr/bin/ld.so symbolic link.
-$(inst_bindir)/ld.so: $(inst_rtlddir)/$(rtld-installed-name)
- $(make-target-directory)
- $(make-link)
-
-# Special target called by parent to install just the dynamic linker.
-.PHONY: ldso_install
-ldso_install: $(inst_rtlddir)/$(rtld-installed-name)
-endif # $(build-shared)
-
-
-# Workarounds for ${exec_prefix} expansion in configure variables.
-# config.status cannot be used directly for processing ldd.bash.in or
-# expanding variables such as sysconfdir because the expansion
-# contains the literal string ${exec_prefix}, which is not valid in C
-# headers or installed shell scripts.
-
-ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \
- -e 's%@VERSION@%$(version)%g' \
- -e 's|@PKGVERSION@|$(PKGVERSION)|g' \
- -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' \
- -e 's%@TEXTDOMAINDIR@%$(localedir)%g'
-
-ifeq ($(ldd-rewrite-script),no)
-define gen-ldd
-LC_ALL=C sed $(ldd-rewrite) < $< > $@.new
-endef
-else
-define gen-ldd
-LC_ALL=C sed $(ldd-rewrite) < $< \
-| LC_ALL=C sed -f $(patsubst $(..)/%,/%,$(..)$(ldd-rewrite-script)) > $@.new
-endef
-endif
-
-$(objpfx)ldd: ldd.bash.in $(common-objpfx)soversions.mk \
- $(common-objpfx)config.make
- $(gen-ldd)
- chmod 555 $@.new
- mv -f $@.new $@
-
-$(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
-
-$(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
-
-SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
-CFLAGS-ldconfig.c += $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
- -D'SLIBDIR="$(slibdir)"'
-libof-ldconfig = ldconfig
-CFLAGS-dl-cache.c += $(SYSCONF-FLAGS)
-CFLAGS-cache.c += $(SYSCONF-FLAGS)
-CFLAGS-rtld.c += $(SYSCONF-FLAGS)
-CFLAGS-dl-usage.c += $(SYSCONF-FLAGS) \
- -D'RTLD="$(rtlddir)/$(rtld-installed-name)"'
-CFLAGS-dl-diagnostics.c += $(SYSCONF-FLAGS) \
- -D'PREFIX="$(prefix)"' \
- -D'RTLD="$(rtlddir)/$(rtld-installed-name)"'
-
-cpp-srcs-left := $(all-rtld-routines:=.os)
-lib := rtld
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-
-test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
-generated += $(addsuffix .so,$(strip $(modules-names)))
-
-$(objpfx)testobj1_1.so: $(objpfx)testobj1.so
-$(objpfx)testobj2.so: $(objpfx)testobj1.so
-$(objpfx)testobj6.so: $(objpfx)testobj1.so $(objpfx)testobj2.so
-$(objpfx)failobj.so: $(objpfx)testobj6.so
-$(objpfx)dep1.so: $(objpfx)dep2.so $(objpfx)dep4.so
-$(objpfx)dep2.so: $(objpfx)dep3.so $(objpfx)dep4.so
-$(objpfx)dep4.so: $(objpfx)dep3.so
-$(objpfx)nodelmod3.so: $(objpfx)nodelmod4.so
-$(objpfx)neededobj2.so: $(objpfx)neededobj1.so
-$(objpfx)neededobj3.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so
-$(objpfx)neededobj4.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
- $(objpfx)neededobj3.so
-$(objpfx)neededobj6.so: $(objpfx)neededobj5.so
-$(objpfx)unload2mod.so: $(objpfx)unload2dep.so
-$(objpfx)firstobj.so: $(shared-thread-library)
-$(objpfx)reldep4mod1.so: $(objpfx)reldep4mod3.so
-$(objpfx)reldep4mod2.so: $(objpfx)reldep4mod4.so
-$(objpfx)dblloadmod1.so: $(objpfx)dblloadmod3.so
-$(objpfx)dblloadmod2.so: $(objpfx)dblloadmod3.so
-$(objpfx)reldepmod5.so: $(objpfx)reldepmod2.so
-$(objpfx)reldepmod6.so: $(objpfx)reldepmod2.so
-$(objpfx)reldep6mod1.so: $(objpfx)reldep6mod0.so
-$(objpfx)reldep6mod2.so: $(objpfx)reldep6mod1.so
-$(objpfx)reldep6mod3.so: $(objpfx)reldep6mod2.so
-$(objpfx)reldep6mod4.so: $(objpfx)reldep6mod1.so
-$(objpfx)tst-tlsmod3.so: $(objpfx)tst-tlsmod2.so
-$(objpfx)tst-tlsmod8.so: $(objpfx)tst-tlsmod7.so
-$(objpfx)tst-tlsmod10.so: $(objpfx)tst-tlsmod9.so
-$(objpfx)tst-tlsmod12.so: $(objpfx)tst-tlsmod11.so
-$(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so
-# For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED
-$(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so
-$(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so
-$(objpfx)tst-tls19mod1.so: $(objpfx)tst-tls19mod2.so $(objpfx)tst-tls19mod3.so
-$(objpfx)tst-tls19mod3.so: $(objpfx)ld.so
-$(objpfx)reldep8mod3.so: $(objpfx)reldep8mod1.so $(objpfx)reldep8mod2.so
-$(objpfx)nodel2mod3.so: $(objpfx)nodel2mod1.so $(objpfx)nodel2mod2.so
-$(objpfx)reldep9mod2.so: $(objpfx)reldep9mod1.so
-$(objpfx)reldep9mod3.so: $(objpfx)reldep9mod1.so $(objpfx)reldep9mod2.so
-$(objpfx)unload3mod1.so: $(objpfx)unload3mod3.so
-$(objpfx)unload3mod2.so: $(objpfx)unload3mod3.so
-$(objpfx)unload3mod3.so: $(objpfx)unload3mod4.so
-$(objpfx)unload4mod1.so: $(objpfx)unload4mod2.so $(objpfx)unload4mod3.so
-$(objpfx)unload4mod2.so: $(objpfx)unload4mod4.so $(objpfx)unload4mod3.so
-$(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so
-$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so
-$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so
-$(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so
-$(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so
-$(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so
-$(objpfx)tst-initordera4.so: $(objpfx)tst-initordera3.so
-$(objpfx)tst-initorder: $(objpfx)tst-initordera4.so $(objpfx)tst-initordera1.so $(objpfx)tst-initorderb2.so
-$(objpfx)tst-null-argv: $(objpfx)tst-null-argv-lib.so
-$(objpfx)tst-tlsalign: $(objpfx)tst-tlsalign-lib.so
-$(objpfx)tst-nodelete-opened.out: $(objpfx)tst-nodelete-opened-lib.so
-
-$(objpfx)tst-tlsalign-extern: $(objpfx)tst-tlsalign-vars.o
-$(objpfx)tst-tlsalign-extern-static: $(objpfx)tst-tlsalign-vars.o
-
-tst-null-argv-ENV = LD_DEBUG=all LD_DEBUG_OUTPUT=$(objpfx)tst-null-argv.debug.out
-LDFLAGS-nodel2mod3.so = -Wl,--no-as-needed
-LDFLAGS-reldepmod5.so = -Wl,--no-as-needed
-LDFLAGS-reldep6mod1.so = -Wl,--no-as-needed
-LDFLAGS-reldep6mod4.so = -Wl,--no-as-needed
-LDFLAGS-reldep8mod3.so = -Wl,--no-as-needed
-LDFLAGS-unload4mod1.so = -Wl,--no-as-needed
-LDFLAGS-unload4mod2.so = -Wl,--no-as-needed
-LDFLAGS-tst-initorder = -Wl,--no-as-needed
-LDFLAGS-tst-initordera2.so = -Wl,--no-as-needed
-LDFLAGS-tst-initordera3.so = -Wl,--no-as-needed
-LDFLAGS-tst-initordera4.so = -Wl,--no-as-needed
-LDFLAGS-tst-initorderb2.so = -Wl,--no-as-needed
-LDFLAGS-tst-tlsmod5.so = -nostdlib -Wl,--no-as-needed
-LDFLAGS-tst-tlsmod6.so = -nostdlib -Wl,--no-as-needed
-
-testobj1.so-no-z-defs = yes
-testobj3.so-no-z-defs = yes
-testobj4.so-no-z-defs = yes
-testobj5.so-no-z-defs = yes
-testobj6.so-no-z-defs = yes
-failobj.so-no-z-defs = yes
-constload2.so-no-z-defs = yes
-constload3.so-no-z-defs = yes
-nodelmod1.so-no-z-defs = yes
-nodelmod2.so-no-z-defs = yes
-nodelmod4.so-no-z-defs = yes
-nodel2mod2.so-no-z-defs = yes
-reldepmod2.so-no-z-defs = yes
-reldepmod3.so-no-z-defs = yes
-reldepmod4.so-no-z-defs = yes
-reldep4mod4.so-no-z-defs = yes
-reldep4mod2.so-no-z-defs = yes
-ltglobmod2.so-no-z-defs = yes
-dblloadmod3.so-no-z-defs = yes
-tst-tlsmod1.so-no-z-defs = yes
-tst-tlsmod2.so-no-z-defs = yes
-tst-tlsmod3.so-no-z-defs = yes
-tst-tlsmod4.so-no-z-defs = yes
-tst-tlsmod7.so-no-z-defs = yes
-tst-tlsmod8.so-no-z-defs = yes
-tst-tlsmod9.so-no-z-defs = yes
-tst-tlsmod10.so-no-z-defs = yes
-tst-tlsmod12.so-no-z-defs = yes
-tst-tlsmod14a.so-no-z-defs = yes
-tst-tlsmod14b.so-no-z-defs = yes
-tst-tlsmod15a.so-no-z-defs = yes
-tst-tlsmod16b.so-no-z-defs = yes
-circlemod2.so-no-z-defs = yes
-circlemod3.so-no-z-defs = yes
-circlemod3a.so-no-z-defs = yes
-reldep8mod2.so-no-z-defs = yes
-reldep9mod1.so-no-z-defs = yes
-unload3mod4.so-no-z-defs = yes
-unload4mod1.so-no-z-defs = yes
-ifuncmod1.so-no-z-defs = yes
-ifuncmod5.so-no-z-defs = yes
-ifuncmod6.so-no-z-defs = yes
-tst-auditmod9a.so-no-z-defs = yes
-tst-auditmod9b.so-no-z-defs = yes
-tst-nodelete-uniquemod.so-no-z-defs = yes
-tst-nodelete-rtldmod.so-no-z-defs = yes
-tst-nodelete-zmod.so-no-z-defs = yes
-tst-nodelete2mod.so-no-z-defs = yes
-
-ifeq ($(build-shared),yes)
-# Build all the modules even when not actually running test programs.
-tests: $(test-modules)
-endif
-
-LDFLAGS-loadtest = -rdynamic
-
-$(objpfx)loadtest.out: $(test-modules)
-
-$(objpfx)neededtest.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
- $(objpfx)neededobj3.so
-
-$(objpfx)neededtest2.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
- $(objpfx)neededobj3.so
-
-$(objpfx)neededtest3.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
- $(objpfx)neededobj3.so $(objpfx)neededobj4.so
-
-$(objpfx)neededtest4: $(objpfx)neededobj1.so
-$(objpfx)neededtest4.out: $(objpfx)neededobj5.so $(objpfx)neededobj6.so
-
-$(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so
-LDFLAGS-restest1 = -rdynamic
-
-LDFLAGS-restest2 = -rdynamic
-
-$(objpfx)restest1.out: $(test-modules)
-
-preloadtest-preloads = testobj1 testobj2 testobj3 testobj4 testobj5
-$(objpfx)preloadtest: $(objpfx)testobj6.so
-LDFLAGS-preloadtest = -rdynamic
-$(objpfx)preloadtest.out: $(preloadtest-preloads:%=$(objpfx)%.so)
-preloadtest-ENV = \
- LD_PRELOAD=$(subst $(empty) ,:,$(strip $(preloadtest-preloads:=.so)))
-
-LDFLAGS-loadfail = -rdynamic
-
-$(objpfx)loadfail.out: $(objpfx)failobj.so $(objpfx)testobj1.so \
- $(objpfx)testobj2.so $(objpfx)testobj3.so \
- $(objpfx)testobj4.so $(objpfx)testobj5.so
-
-LDFLAGS-multiload = -rdynamic
-CFLAGS-multiload.c += -DOBJDIR=\"$(elf-objpfx)\"
-
-$(objpfx)multiload.out: $(objpfx)testobj1.so
-
-LDFLAGS-origtest = -rdynamic
-$(objpfx)origtest.out: $(objpfx)testobj1.so
-
-ifeq ($(have-thread-library),yes)
-$(objpfx)resolvfail: $(shared-thread-library)
-endif
-
-$(objpfx)constload1.out: $(objpfx)constload2.so $(objpfx)constload3.so
-
-$(objpfx)circleload1.out: $(objpfx)circlemod1.so \
- $(objpfx)circlemod1a.so
-
-$(objpfx)circlemod1.so: $(objpfx)circlemod2.so
-$(objpfx)circlemod2.so: $(objpfx)circlemod3.so
-$(objpfx)circlemod1a.so: $(objpfx)circlemod2a.so
-$(objpfx)circlemod2a.so: $(objpfx)circlemod3a.so
-
-$(objpfx)order: $(addprefix $(objpfx),dep4.so dep3.so dep2.so dep1.so)
-
-$(objpfx)order-cmp.out: $(objpfx)order.out
- (echo "0123456789" | cmp $< -) > $@; \
- $(evaluate-test)
-
-$(objpfx)vismain: $(addprefix $(objpfx),vismod1.so vismod2.so)
-$(objpfx)vismain.out: $(addprefix $(objpfx),vismod3.so)
-vismain-ENV = LD_PRELOAD=$(addprefix $(objpfx),vismod3.so)
-
-$(objpfx)noload: $(objpfx)testobj1.so
-LDFLAGS-noload = -rdynamic -Wl,--no-as-needed
-$(objpfx)noload.out: $(objpfx)testobj5.so
-
-$(objpfx)noload-mem.out: $(objpfx)noload.out
- $(common-objpfx)malloc/mtrace $(objpfx)noload.mtrace > $@; \
- $(evaluate-test)
-noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace \
- LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
-
-LDFLAGS-nodelete = -rdynamic
-LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete
-LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete
-$(objpfx)nodelete.out: $(objpfx)nodelmod1.so $(objpfx)nodelmod2.so \
- $(objpfx)nodelmod3.so
-
-LDFLAGS-nodlopenmod.so = -Wl,--enable-new-dtags,-z,nodlopen
-$(objpfx)nodlopen.out: $(objpfx)nodlopenmod.so
-
-$(objpfx)nodlopenmod2.so: $(objpfx)nodlopenmod.so
-$(objpfx)nodlopen2.out: $(objpfx)nodlopenmod2.so
-
-$(objpfx)filtmod1.so: $(objpfx)filtmod1.os $(objpfx)filtmod2.so
- $(LINK.o) -shared -o $@ -B$(csu-objpfx) $(LDFLAGS.so) \
- $(dt-relr-ldflag) \
- -L$(subst :, -L,$(rpath-link)) \
- -Wl,-rpath-link=$(rpath-link) \
- $< -Wl,-F,$(objpfx)filtmod2.so
-$(objpfx)filter: $(objpfx)filtmod1.so
-
-# This does not link against libc.
-CFLAGS-filtmod1.c += $(no-stack-protector)
-
-$(objpfx)unload.out: $(objpfx)unloadmod.so
-
-$(objpfx)reldep.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod2.so
-
-$(objpfx)reldep2.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod3.so
-
-$(objpfx)reldep3.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so
-
-$(objpfx)reldep4.out: $(objpfx)reldep4mod1.so $(objpfx)reldep4mod2.so
-
-$(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so
-LDFLAGS-next = -Wl,--no-as-needed
-
-$(objpfx)tst-next-ver: $(objpfx)nextmod3.so
-LDFLAGS-tst-next-ver = -Wl,--no-as-needed
-
-$(objpfx)unload2.out: $(objpfx)unload2mod.so $(objpfx)unload2dep.so
-
-$(objpfx)lateglobal.out: $(objpfx)ltglobmod1.so $(objpfx)ltglobmod2.so
-
-$(objpfx)tst-pathopt.out: tst-pathopt.sh $(objpfx)tst-pathopt \
- $(objpfx)pathoptobj.so
- $(SHELL) $< $(common-objpfx) '$(test-wrapper-env)' \
- '$(run-program-env)'; \
- $(evaluate-test)
-
-$(objpfx)tst-rtld-load-self.out: tst-rtld-load-self.sh $(objpfx)ld.so
- $(SHELL) $^ '$(test-wrapper)' '$(test-wrapper-env)' > $@; \
- $(evaluate-test)
-
-tst-rtld-preload-OBJS = $(subst $(empty) ,:,$(strip $(preloadtest-preloads:=.so)))
-$(objpfx)tst-rtld-preload.out: tst-rtld-preload.sh $(objpfx)ld.so \
- $(objpfx)preloadtest \
- $(preloadtest-preloads:%=$(objpfx)%.so)
- $(SHELL) $< $(objpfx)ld.so $(objpfx)preloadtest \
- '$(test-wrapper-env)' '$(run_program_env)' \
- '$(rpath-link)' '$(tst-rtld-preload-OBJS)' > $@; \
- $(evaluate-test)
-
-$(objpfx)initfirst.out: $(objpfx)firstobj.so
-
-$(objpfx)global: $(objpfx)globalmod1.so
-$(objpfx)global.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so
-
-$(objpfx)dblload.out: $(objpfx)dblloadmod1.so $(objpfx)dblloadmod2.so
-
-$(objpfx)dblunload.out: $(objpfx)dblloadmod1.so $(objpfx)dblloadmod2.so
-
-$(objpfx)reldep5.out: $(objpfx)reldepmod5.so $(objpfx)reldepmod6.so
-
-$(objpfx)reldep6.out: $(objpfx)reldep6mod3.so $(objpfx)reldep6mod4.so
-
-$(objpfx)reldep7.out: $(objpfx)reldep7mod1.so $(objpfx)reldep7mod2.so
-
-$(objpfx)reldep8.out: $(objpfx)reldep8mod3.so
-
-LDFLAGS-nodel2mod2.so = -Wl,--enable-new-dtags,-z,nodelete
-$(objpfx)nodelete2.out: $(objpfx)nodel2mod3.so
-
-$(objpfx)reldep9.out: $(objpfx)reldep9mod3.so
-
-$(objpfx)tst-tls3: $(objpfx)tst-tlsmod1.so
-
-$(objpfx)tst-tls4.out: $(objpfx)tst-tlsmod2.so
-
-$(objpfx)tst-tls5.out: $(objpfx)tst-tlsmod2.so
-
-$(objpfx)tst-tls6.out: $(objpfx)tst-tlsmod2.so
-
-$(objpfx)tst-tls7.out: $(objpfx)tst-tlsmod3.so
-
-$(objpfx)tst-tls8.out: $(objpfx)tst-tlsmod3.so $(objpfx)tst-tlsmod4.so
-
-$(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
-
-$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so $(objpfx)tst-tlsmod7.so
-
-$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so $(objpfx)tst-tlsmod9.so
-
-$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so $(objpfx)tst-tlsmod11.so
-
-$(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
-
-$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so
-$(objpfx)tst-tls14.out: $(objpfx)tst-tlsmod14b.so
-
-$(objpfx)tst-tls15.out: $(objpfx)tst-tlsmod15a.so $(objpfx)tst-tlsmod15b.so
-
-$(objpfx)tst-tls-dlinfo.out: $(objpfx)tst-tlsmod2.so
-
-
-
-$(objpfx)tst-tls16.out: $(objpfx)tst-tlsmod16a.so $(objpfx)tst-tlsmod16b.so
-
-$(objpfx)tst-tls17.out: $(objpfx)tst-tlsmod17b.so
-$(patsubst %,$(objpfx)%.os,$(tlsmod17a-modules)): $(objpfx)tst-tlsmod17a%.os: tst-tlsmod17a.c
- $(compile-command.c) -DN=$*
-$(patsubst %,$(objpfx)%.so,$(tlsmod17a-modules)): $(objpfx)tst-tlsmod17a%.so: $(objpfx)ld.so
-$(objpfx)tst-tlsmod17b.so: $(patsubst %,$(objpfx)%.so,$(tlsmod17a-modules))
-
-$(objpfx)tst-tls18.out: $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules))
-$(patsubst %,$(objpfx)%.os,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.os : tst-tlsmod18a.c
- $(compile-command.c) -DN=$*
-$(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.so: $(objpfx)ld.so
-
-$(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so
-
-CFLAGS-tst-align.c += $(stack-align-test-flags)
-CFLAGS-tst-align2.c += $(stack-align-test-flags)
-CFLAGS-tst-alignmod.c += $(stack-align-test-flags)
-CFLAGS-tst-alignmod2.c += $(stack-align-test-flags)
-$(objpfx)tst-align.out: $(objpfx)tst-alignmod.so
-$(objpfx)tst-align2: $(objpfx)tst-alignmod2.so
-$(objpfx)tst-align3: $(objpfx)tst-alignmod3.so
-ifeq (yes,$(have-fpie))
-CFLAGS-tst-align3.c += $(PIE-ccflag)
-endif
-LDFLAGS-tst-align3 += -Wl,-z,max-page-size=0x200000
-LDFLAGS-tst-alignmod3.so += -Wl,-z,max-page-size=0x200000
-$(objpfx)tst-alignmod3.so: $(libsupport)
-
-$(objpfx)unload3.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \
- $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so
-
-$(objpfx)unload4.out: $(objpfx)unload4mod1.so $(objpfx)unload4mod3.so
-
-$(objpfx)unload5.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \
- $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so
-
-$(objpfx)unload6.out: $(objpfx)unload6mod1.so $(objpfx)unload6mod2.so \
- $(objpfx)unload6mod3.so
-
-$(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so
-unload7-ENV = MALLOC_PERTURB_=85
-
-$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so
-
-$(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
-
-ifeq ($(have-z-execstack),yes)
-$(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
-CPPFLAGS-tst-execstack.c += -DUSE_PTHREADS=0
-LDFLAGS-tst-execstack = -Wl,-z,noexecstack
-LDFLAGS-tst-execstack-mod.so = -Wl,-z,execstack
-
-$(objpfx)tst-execstack-needed: $(objpfx)tst-execstack-mod.so
-LDFLAGS-tst-execstack-needed = -Wl,-z,noexecstack
-
-LDFLAGS-tst-execstack-prog = -Wl,-z,execstack
-CFLAGS-tst-execstack-prog.c += -Wno-trampolines
-CFLAGS-tst-execstack-mod.c += -Wno-trampolines
-endif
-
-LDFLAGS-tst-array2 = -Wl,--no-as-needed
-LDFLAGS-tst-array5 = -Wl,--no-as-needed
-
-$(objpfx)tst-array1-cmp.out: tst-array1.exp $(objpfx)tst-array1.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-array1-static-cmp.out: tst-array1.exp \
- $(objpfx)tst-array1-static.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-array2: $(objpfx)tst-array2dep.so
-$(objpfx)tst-array2-cmp.out: tst-array2.exp $(objpfx)tst-array2.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-array3-cmp.out: tst-array1.exp $(objpfx)tst-array3.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-array4.out: $(objpfx)tst-array2dep.so
-$(objpfx)tst-array4-cmp.out: tst-array4.exp $(objpfx)tst-array4.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-array5: $(objpfx)tst-array5dep.so
-$(objpfx)tst-array5-cmp.out: tst-array5.exp $(objpfx)tst-array5.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-array5-static-cmp.out: tst-array5-static.exp \
- $(objpfx)tst-array5-static.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-CFLAGS-tst-pie1.c += $(pie-ccflag)
-CFLAGS-tst-pie2.c += $(pie-ccflag)
-
-$(objpfx)tst-piemod1.so: $(libsupport)
-$(objpfx)tst-pie1: $(objpfx)tst-piemod1.so
-$(objpfx)tst-dlopen-pie.out: $(objpfx)tst-pie1
-
-ifeq (yes,$(build-shared))
-# NB: Please keep cet-built-dso in sysdeps/x86/Makefile in sync with
-# all-built-dso here.
-all-built-dso := $(common-objpfx)elf/ld.so $(common-objpfx)libc.so \
- $(filter-out $(common-objpfx)linkobj/libc.so, \
- $(sort $(wildcard $(addprefix $(common-objpfx), \
- */lib*.so \
- iconvdata/*.so))))
-
-$(all-built-dso:=.dyn): %.dyn: %
- @rm -f $@T
- LC_ALL=C $(READELF) -W -d $< > $@T
- test -s $@T
- mv -f $@T $@
-common-generated += $(all-built-dso:$(common-objpfx)%=%.dyn)
-
-$(objpfx)check-textrel.out: $(..)scripts/check-textrel.awk \
- $(all-built-dso:=.dyn)
- LC_ALL=C $(AWK) -f $^ > $@; \
- $(evaluate-test)
-generated += check-textrel.out
-
-$(objpfx)execstack-default: $(first-word $(wildcard $(sysdirs:%=%/stackinfo.h)))
- $(make-target-directory)
- { echo '#include <elf.h>'; \
- echo '#include <stackinfo.h>'; \
- echo '#if (DEFAULT_STACK_PERMS & PF_X) == 0'; \
- echo '@@@execstack-no@@@'; \
- echo '#else'; \
- echo '@@@execstack-yes@@@'; \
- echo '#endif'; } | \
- $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - | \
- sed -n -e 's/^@@@\(.*\)@@@/\1/p' > $@T
- mv -f $@T $@
-generated += execstack-default
-
-$(all-built-dso:=.phdr): %.phdr: %
- @rm -f $@T
- LC_ALL=C $(READELF) -W -l $< > $@T
- test -s $@T
- mv -f $@T $@
-common-generated += $(all-built-dso:$(common-objpfx)%=%.phdr)
-
-$(objpfx)check-execstack.out: $(..)scripts/check-execstack.awk \
- $(objpfx)execstack-default \
- $(all-built-dso:=.phdr)
- LC_ALL=C $(AWK) -v "xfail=$(check-execstack-xfail)" -f $^ > $@; \
- $(evaluate-test)
-generated += check-execstack.out
-
-$(objpfx)check-wx-segment.out: $(..)scripts/check-wx-segment.py \
- $(all-built-dso:=.phdr)
- $(PYTHON) $^ --xfail="$(check-wx-segment-xfail)" > $@; \
- $(evaluate-test)
-generated += check-wx-segment.out
-
-$(objpfx)tst-dlmodcount.out: $(test-modules)
-
-$(all-built-dso:=.jmprel): %.jmprel: % Makefile
- @rm -f $@T
- LC_ALL=C $(READELF) -W -S -d -r $< > $@T
- test -s $@T
- mv -f $@T $@
-common-generated += $(all-built-dso:$(common-objpfx)%=%.jmprel)
-
-localplt-built-dso := $(addprefix $(common-objpfx),\
- libc.so \
- elf/ld.so \
- math/libm.so \
- dlfcn/libdl.so \
- resolv/libresolv.so \
- )
-ifeq ($(build-mathvec),yes)
-localplt-built-dso += $(addprefix $(common-objpfx), mathvec/libmvec.so)
-endif
-ifeq ($(have-thread-library),yes)
-localplt-built-dso += $(filter-out %_nonshared.a, $(shared-thread-library))
-endif
-ifeq ($(build-crypt),yes)
-localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
-endif
-ifneq ($(pthread-in-libc),yes)
-localplt-built-dso += $(addprefix $(common-objpfx), rt/librt.so)
-endif
-
-vpath localplt.data $(+sysdep_dirs)
-
-$(objpfx)check-localplt.out: $(..)scripts/check-localplt.awk \
- $(..)scripts/localplt.awk \
- $(localplt-built-dso:=.jmprel) \
- localplt.data
- LC_ALL=C $(AWK) -f $(filter-out $< %localplt.data,$^) | \
- LC_ALL=C $(AWK) -f $< $(filter %localplt.data,$^) - \
- > $@; \
- $(evaluate-test)
-endif
-
-$(all-built-dso:=.dynsym): %.dynsym: %
- @rm -f $@T
- LC_ALL=C $(READELF) -W --dyn-syms $< > $@T
- test -s $@T
- mv -f $@T $@
-common-generated += $(all-built-dso:$(common-objpfx)%=%.dynsym)
-
-$(objpfx)check-initfini.out: $(..)scripts/check-initfini.awk \
- $(all-built-dso:=.dynsym)
- LC_ALL=C $(AWK) -f $^ > $@; \
- $(evaluate-test)
-generated += check-initfini.out
-
-$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so
-CFLAGS-tst-dlopenrpath.c += -DPFX=\"$(objpfx)\"
-LDFLAGS-tst-dlopenrpathmod.so += -Wl,-rpath,\$$ORIGIN/test-subdir
-$(objpfx)tst-dlopenrpath.out: $(objpfx)firstobj.so
-
-$(objpfx)tst-deep1mod2.so: $(objpfx)tst-deep1mod3.so
-$(objpfx)tst-deep1: $(objpfx)tst-deep1mod1.so
-$(objpfx)tst-deep1.out: $(objpfx)tst-deep1mod2.so
-LDFLAGS-tst-deep1 += -rdynamic
-tst-deep1mod3.so-no-z-defs = yes
-
-$(objpfx)tst-dlmopen1.out: $(objpfx)tst-dlmopen1mod.so
-
-$(objpfx)tst-dlmopen2.out: $(objpfx)tst-dlmopen1mod.so
-
-$(objpfx)tst-dlmopen3.out: $(objpfx)tst-dlmopen1mod.so
-
-$(objpfx)tst-dlmopen4.out: $(objpfx)tst-dlmopen1mod.so
-
-$(objpfx)tst-audit1.out: $(objpfx)tst-auditmod1.so
-tst-audit1-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
-
-$(objpfx)tst-audit2.out: $(objpfx)tst-auditmod1.so $(objpfx)tst-auditmod9b.so
-# Prevent GCC-5 from translating a malloc/memset pair into calloc
-CFLAGS-tst-audit2.c += -fno-builtin
-tst-audit2-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
-
-$(objpfx)tst-audit9.out: $(objpfx)tst-auditmod9a.so $(objpfx)tst-auditmod9b.so
-tst-audit9-ENV = LD_AUDIT=$(objpfx)tst-auditmod9a.so
-
-$(objpfx)tst-audit8: $(libm)
-$(objpfx)tst-audit8.out: $(objpfx)tst-auditmod1.so
-tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
-
-$(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
-
-$(objpfx)tst-global2: $(objpfx)tst-globalmod2.so
-$(objpfx)tst-global2.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so
-LDFLAGS-tst-global2 = -Wl,--enable-new-dtags
-LDFLAGS-tst-globalmod2.so = -Wl,--enable-new-dtags
-
-$(objpfx)order2.out: $(objpfx)order2mod1.so $(objpfx)order2mod2.so
-$(objpfx)order2-cmp.out: $(objpfx)order2.out
- (echo "12345" | cmp $< -) > $@; \
- $(evaluate-test)
-$(objpfx)order2mod1.so: $(objpfx)order2mod4.so
-$(objpfx)order2mod4.so: $(objpfx)order2mod3.so
-$(objpfx)order2mod2.so: $(objpfx)order2mod3.so
-order2mod2.so-no-z-defs = yes
-LDFLAGS-order2mod1.so = -Wl,--no-as-needed
-LDFLAGS-order2mod2.so = -Wl,--no-as-needed
-
-tst-stackguard1-ARGS = --command "$(host-test-program-cmd) --child"
-tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child"
-
-tst-ptrguard1-ARGS = --command "$(host-test-program-cmd) --child"
-# When built statically, the pointer guard interface uses
-# __pointer_chk_guard_local.
-CFLAGS-tst-ptrguard1-static.c += -DPTRGUARD_LOCAL
-tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child"
-
-$(objpfx)tst-leaks1-mem.out: $(objpfx)tst-leaks1.out
- $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks1.mtrace > $@; \
- $(evaluate-test)
-
-tst-leaks1-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1.mtrace \
- LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
-
-$(objpfx)tst-thrlock: $(shared-thread-library)
-$(objpfx)tst-thrlock.out: $(libm)
-$(objpfx)tst-noload.out: $(libm)
-
-tst-tst-dlopen-tlsmodid-no-pie = yes
-$(objpfx)tst-dlopen-tlsmodid: $(shared-thread-library)
-$(objpfx)tst-dlopen-tlsmodid.out: $(objpfx)tst-dlopen-self
-CFLAGS-tst-dlopen-tlsmodid-pie.c += $(pie-ccflag)
-$(objpfx)tst-dlopen-tlsmodid-pie: $(shared-thread-library)
-$(objpfx)tst-dlopen-tlsmodid-pie.out: $(objpfx)tst-dlopen-self-pie
-$(objpfx)tst-dlopen-tlsmodid-container: $(shared-thread-library)
-LDFLAGS-tst-dlopen-tlsmodid-container += -Wl,-rpath,\$$ORIGIN
-
-tst-tst-dlopen-self-no-pie = yes
-CFLAGS-tst-dlopen-self-pie.c += $(pie-ccflag)
-LDFLAGS-tst-dlopen-self-container += -Wl,-rpath,\$$ORIGIN
-
-CFLAGS-ifuncmain1pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain1picstatic.c += $(pic-ccflag)
-CFLAGS-ifuncmain1staticpic.c += $(pic-ccflag)
-CFLAGS-ifuncdep1pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain1vispic.c += $(pic-ccflag)
-CFLAGS-ifuncmain2pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain2picstatic.c += $(pic-ccflag)
-CFLAGS-ifuncdep2pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain4picstatic.c += $(pic-ccflag)
-CFLAGS-ifuncmain5pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain5picstatic.c += $(pic-ccflag)
-CFLAGS-ifuncmain5staticpic.c += $(pic-ccflag)
-CFLAGS-ifuncdep5pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain7pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain7picstatic.c += $(pic-ccflag)
-CFLAGS-ifuncmain9pic.c += $(pic-ccflag)
-CFLAGS-ifuncmain9picstatic.c += $(pic-ccflag)
-
-LDFLAGS-ifuncmain3 = -Wl,-export-dynamic
-
-CFLAGS-ifuncmain1pie.c += $(pie-ccflag)
-CFLAGS-ifuncmain1vispie.c += $(pie-ccflag)
-CFLAGS-ifuncmain1staticpie.c += $(pie-ccflag)
-CFLAGS-ifuncmain5pie.c += $(pie-ccflag)
-CFLAGS-ifuncmain6pie.c += $(pie-ccflag)
-CFLAGS-ifuncmain7pie.c += $(pie-ccflag)
-CFLAGS-ifuncmain9pie.c += $(pie-ccflag)
-CFLAGS-tst-ifunc-textrel.c += $(pic-ccflag)
-
-LDFLAGS-ifuncmain6pie = -Wl,-z,lazy
-
-$(objpfx)ifuncmain1pie: $(objpfx)ifuncmod1.so
-$(objpfx)ifuncmain1staticpie: $(objpfx)ifuncdep1pic.o
-$(objpfx)ifuncmain1vispie: $(objpfx)ifuncmod1.so
-$(objpfx)ifuncmain5pie: $(objpfx)ifuncmod5.so
-$(objpfx)ifuncmain6pie: $(objpfx)ifuncmod6.so
-
-$(objpfx)ifuncmain1: $(addprefix $(objpfx),ifuncmod1.so)
-$(objpfx)ifuncmain1pic: $(addprefix $(objpfx),ifuncmod1.so)
-$(objpfx)ifuncmain1staticpic: $(addprefix $(objpfx),ifuncdep1pic.o)
-$(objpfx)ifuncmain1static: $(addprefix $(objpfx),ifuncdep1.o)
-$(objpfx)ifuncmain1picstatic: $(addprefix $(objpfx),ifuncdep1pic.o)
-$(objpfx)ifuncmain1vis: $(addprefix $(objpfx),ifuncmod1.so)
-$(objpfx)ifuncmain1vispic: $(addprefix $(objpfx),ifuncmod1.so)
-$(objpfx)ifuncmain2: $(addprefix $(objpfx),ifuncdep2.o)
-$(objpfx)ifuncmain2pic: $(addprefix $(objpfx),ifuncdep2pic.o)
-$(objpfx)ifuncmain2static: $(addprefix $(objpfx),ifuncdep2.o)
-$(objpfx)ifuncmain2picstatic: $(addprefix $(objpfx),ifuncdep2pic.o)
-
-$(objpfx)ifuncmain3.out: $(objpfx)ifuncmod3.so
-
-$(objpfx)ifuncmain5: $(addprefix $(objpfx),ifuncmod5.so)
-$(objpfx)ifuncmain5pic: $(addprefix $(objpfx),ifuncmod5.so)
-$(objpfx)ifuncmain5static: $(addprefix $(objpfx),ifuncdep5.o)
-$(objpfx)ifuncmain5staticpic: $(addprefix $(objpfx),ifuncdep5pic.o)
-$(objpfx)ifuncmain5picstatic: $(addprefix $(objpfx),ifuncdep5pic.o)
-
-LDFLAGS-tst-ifunc-fault-lazy = -Wl,-z,lazy
-LDFLAGS-tst-ifunc-fault-bindnow = -Wl,-z,now
-define tst-ifunc-fault-script
-( $(test-wrapper) $(rtld-prefix) --verify $^ \
- && $(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 $(rtld-prefix) $^ \
- && $(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 LD_DEBUG=unused \
- $(rtld-prefix) $^ \
-) > $@; $(evaluate-test)
-endef
-$(objpfx)tst-ifunc-fault-lazy.out: $(objpfx)tst-ifunc-fault-lazy $(objpfx)ld.so
- $(tst-ifunc-fault-script)
-$(objpfx)tst-ifunc-fault-bindnow.out: $(objpfx)tst-ifunc-fault-bindnow \
- $(objpfx)ld.so
- $(tst-ifunc-fault-script)
-
-$(objpfx)tst-unique1.out: $(objpfx)tst-unique1mod1.so \
- $(objpfx)tst-unique1mod2.so
-
-$(objpfx)tst-unique2: $(objpfx)tst-unique2mod1.so
-$(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so
-
-$(objpfx)tst-unique3: $(objpfx)tst-unique3lib.so
-$(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so
-
-$(objpfx)tst-unique4: $(objpfx)tst-unique4lib.so
-
-$(objpfx)tst-nodelete.out: $(objpfx)tst-nodelete-uniquemod.so \
- $(objpfx)tst-nodelete-rtldmod.so \
- $(objpfx)tst-nodelete-zmod.so
-
-LDFLAGS-tst-nodelete = -rdynamic
-LDFLAGS-tst-nodelete-zmod.so = -Wl,--enable-new-dtags,-z,nodelete
-
-$(objpfx)tst-nodelete2.out: $(objpfx)tst-nodelete2mod.so
-
-LDFLAGS-tst-nodelete2 = -rdynamic
-
-$(objpfx)tst-initorder-cmp.out: tst-initorder.exp $(objpfx)tst-initorder.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-initorder2: $(objpfx)tst-initorder2a.so $(objpfx)tst-initorder2d.so $(objpfx)tst-initorder2c.so
-$(objpfx)tst-initorder2a.so: $(objpfx)tst-initorder2b.so
-$(objpfx)tst-initorder2b.so: $(objpfx)tst-initorder2c.so
-$(objpfx)tst-initorder2c.so: $(objpfx)tst-initorder2d.so
-LDFLAGS-tst-initorder2 = -Wl,--no-as-needed
-LDFLAGS-tst-initorder2a.so = -Wl,--no-as-needed
-LDFLAGS-tst-initorder2b.so = -Wl,--no-as-needed
-LDFLAGS-tst-initorder2c.so = -Wl,--no-as-needed
-define o-iterator-doit
-$(objpfx)tst-initorder2$o.os: tst-initorder2.c; \
-$$(compile-command.c) -DNAME=\"$o\"
-endef
-object-suffixes-left := a b c d
-include $(o-iterator)
-
-$(objpfx)tst-initorder2-cmp.out: tst-initorder2.exp $(objpfx)tst-initorder2.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
-$(objpfx)tst-relsort1mod2.so: $(libm)
-$(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
- $(objpfx)tst-relsort1mod2.so
-
-$(objpfx)tst-unused-dep.out: $(objpfx)testobj1.so
- $(test-wrapper-env) \
- LD_TRACE_LOADED_OBJECTS=1 \
- LD_DEBUG=unused \
- LD_PRELOAD= \
- $(rtld-prefix) \
- $< > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-unused-dep-cmp.out: $(objpfx)tst-unused-dep.out
- cmp $< /dev/null > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-audit11.out: $(objpfx)tst-auditmod11.so $(objpfx)tst-audit11mod1.so
-tst-audit11-ENV = LD_AUDIT=$(objpfx)tst-auditmod11.so
-$(objpfx)tst-audit11mod1.so: $(objpfx)tst-audit11mod2.so
-LDFLAGS-tst-audit11mod2.so = -Wl,--version-script=tst-audit11mod2.map,-soname,tst-audit11mod2.so
-
-$(objpfx)tst-audit12.out: $(objpfx)tst-auditmod12.so $(objpfx)tst-audit12mod1.so $(objpfx)tst-audit12mod3.so
-tst-audit12-ENV = LD_AUDIT=$(objpfx)tst-auditmod12.so
-$(objpfx)tst-audit12mod1.so: $(objpfx)tst-audit12mod2.so
-LDFLAGS-tst-audit12mod2.so = -Wl,--version-script=tst-audit12mod2.map
-
-$(objpfx)tst-audit13.out: $(objpfx)tst-audit13mod1.so
-LDFLAGS-tst-audit13mod1.so = -Wl,-z,lazy
-tst-audit13-ENV = LD_AUDIT=$(objpfx)tst-audit13mod1.so
-
-$(objpfx)tst-auditmany.out: $(objpfx)tst-auditmanymod1.so \
- $(objpfx)tst-auditmanymod2.so $(objpfx)tst-auditmanymod3.so \
- $(objpfx)tst-auditmanymod4.so $(objpfx)tst-auditmanymod5.so \
- $(objpfx)tst-auditmanymod6.so $(objpfx)tst-auditmanymod7.so \
- $(objpfx)tst-auditmanymod8.so $(objpfx)tst-auditmanymod9.so
-tst-auditmany-ENV = \
- LD_AUDIT=tst-auditmanymod1.so:tst-auditmanymod2.so:tst-auditmanymod3.so:tst-auditmanymod4.so:tst-auditmanymod5.so:tst-auditmanymod6.so:tst-auditmanymod7.so:tst-auditmanymod8.so:tst-auditmanymod9.so
-
-LDFLAGS-tst-audit14 = -Wl,--audit=tst-auditlogmod-1.so,--disable-new-dtags
-$(objpfx)tst-auditlogmod-1.so: $(libsupport)
-$(objpfx)tst-audit14.out: $(objpfx)tst-auditlogmod-1.so
-LDFLAGS-tst-audit14a = -Wl,--audit=tst-auditlogmod-1.so,--enable-new-dtags
-$(objpfx)tst-audit14a.out: $(objpfx)tst-auditlogmod-1.so
-LDFLAGS-tst-audit15 = \
- -Wl,--audit=tst-auditlogmod-1.so,--depaudit=tst-auditlogmod-2.so
-$(objpfx)tst-auditlogmod-2.so: $(libsupport)
-$(objpfx)tst-audit15.out: \
- $(objpfx)tst-auditlogmod-1.so $(objpfx)tst-auditlogmod-2.so
-LDFLAGS-tst-audit16 = \
- -Wl,--audit=tst-auditlogmod-1.so:tst-auditlogmod-2.so \
- -Wl,--depaudit=tst-auditlogmod-3.so
-$(objpfx)tst-auditlogmod-3.so: $(libsupport)
-$(objpfx)tst-audit16.out: \
- $(objpfx)tst-auditlogmod-1.so $(objpfx)tst-auditlogmod-2.so \
- $(objpfx)tst-auditlogmod-3.so
-$(objpfx)tst-audit17.out: $(objpfx)tst-auditmod17.so
-# The test check if a audit library without libc.so on DT_NEEDED works as
-# intended, so it uses an explicit link rule.
-$(objpfx)tst-auditmod17.so: $(objpfx)tst-auditmod17.os
- $(CC) -nostdlib -nostartfiles -shared -o $@.new \
- $(filter-out $(map-file),$^)
- $(call after-link,$@.new)
- mv -f $@.new $@
-CFLAGS-.os += $(call elide-stack-protector,.os,tst-auditmod17)
-tst-audit17-ENV = LD_AUDIT=$(objpfx)tst-auditmod17.so
-
-$(objpfx)tst-audit14-cmp.out: tst-audit14.exp $(objpfx)tst-audit14.out
- cmp $^ > $@; \
- $(evaluate-test)
-$(objpfx)tst-audit14a-cmp.out: tst-audit14.exp $(objpfx)tst-audit14a.out
- cmp $^ > $@; \
- $(evaluate-test)
-$(objpfx)tst-audit15-cmp.out: tst-audit15.exp $(objpfx)tst-audit15.out
- cmp $^ > $@; \
- $(evaluate-test)
-$(objpfx)tst-audit16-cmp.out: tst-audit16.exp $(objpfx)tst-audit16.out
- cmp $^ > $@; \
- $(evaluate-test)
-
-$(objpfx)tst-audit18.out: $(objpfx)tst-auditmod18.so \
- $(objpfx)tst-audit18mod.so
-tst-audit18-ARGS = -- $(host-test-program-cmd)
-
-$(objpfx)tst-audit19a.out: $(objpfx)tst-auditmod19a.so
-tst-audit19a-ENV = LD_AUDIT=$(objpfx)tst-auditmod19a.so
-
-$(objpfx)tst-audit19b.out: $(objpfx)tst-auditmod19b.so
-$(objpfx)tst-audit19b: $(objpfx)tst-audit19bmod.so
-tst-audit19b-ARGS = -- $(host-test-program-cmd)
-
-$(objpfx)tst-audit20.out: $(objpfx)tst-auditmod20.so
-tst-audit20-ENV = LD_AUDIT=$(objpfx)tst-auditmod20.so
-
-$(objpfx)tst-audit21: $(shared-thread-library)
-$(objpfx)tst-audit21.out: $(objpfx)tst-auditmod21a.so
-$(objpfx)tst-auditmod21a.so: $(objpfx)tst-auditmod21b.so
-tst-audit21-ENV = LD_AUDIT=$(objpfx)tst-auditmod21a.so
-
-$(objpfx)tst-audit22.out: $(objpfx)tst-auditmod22.so
-tst-audit22-ARGS = -- $(host-test-program-cmd)
-
-$(objpfx)tst-audit23.out: $(objpfx)tst-auditmod23.so \
- $(objpfx)tst-audit23mod.so
-tst-audit23-ARGS = -- $(host-test-program-cmd)
-
-$(objpfx)tst-audit24a.out: $(objpfx)tst-auditmod24a.so
-$(objpfx)tst-audit24a: $(objpfx)tst-audit24amod1.so \
- $(objpfx)tst-audit24amod2.so
-tst-audit24a-ENV = LD_AUDIT=$(objpfx)tst-auditmod24a.so
-LDFLAGS-tst-audit24a = -Wl,-z,now
-
-$(objpfx)tst-audit24b.out: $(objpfx)tst-auditmod24b.so
-$(objpfx)tst-audit24b: $(objpfx)tst-audit24bmod1.so \
- $(objpfx)tst-audit24bmod2.so
-$(objpfx)tst-audit24bmod1: $(objpfx)tst-audit24bmod2.so
-# The test checks if a library without .gnu.version correctly calls the
-# audit callbacks. So it uses an explicit link rule to avoid linking
-# against libc.so.
-$(objpfx)tst-audit24bmod1.so: $(objpfx)tst-audit24bmod1.os
- $(CC) -nostdlib -nostartfiles -shared -o $@.new $(objpfx)tst-audit24bmod1.os \
- -Wl,-z,now
- $(call after-link,$@.new)
- mv -f $@.new $@
-CFLAGS-.os += $(call elide-stack-protector,.os,tst-audit24bmod1)
-$(objpfx)tst-audit24bmod2.so: $(objpfx)tst-audit24bmod2.os
- $(CC) -nostdlib -nostartfiles -shared -o $@.new $(objpfx)tst-audit24bmod2.os
- $(call after-link,$@.new)
- mv -f $@.new $@
-CFLAGS-.os += $(call elide-stack-protector,.os,tst-audit24bmod2)
-tst-audit24b-ENV = LD_AUDIT=$(objpfx)tst-auditmod24b.so
-LDFLAGS-tst-audit24b = -Wl,-z,now
-
-# Same as tst-audit24a, but tests LD_BIND_NOW
-$(objpfx)tst-audit24c.out: $(objpfx)tst-auditmod24c.so
-$(objpfx)tst-audit24c: $(objpfx)tst-audit24amod1.so \
- $(objpfx)tst-audit24amod2.so
-tst-audit24c-ENV = LD_BIND_NOW=1 LD_AUDIT=$(objpfx)tst-auditmod24c.so
-LDFLAGS-tst-audit24c = -Wl,-z,lazy
-
-$(objpfx)tst-audit24d.out: $(objpfx)tst-auditmod24d.so
-$(objpfx)tst-audit24d: $(objpfx)tst-audit24dmod1.so \
- $(objpfx)tst-audit24dmod2.so
-$(objpfx)tst-audit24dmod1.so: $(objpfx)tst-audit24dmod3.so
-LDFLAGS-tst-audit24dmod1.so = -Wl,-z,now
-$(objpfx)tst-audit24dmod2.so: $(objpfx)tst-audit24dmod4.so
-LDFLAGS-tst-audit24dmod2.so = -Wl,-z,lazy
-tst-audit24d-ENV = LD_AUDIT=$(objpfx)tst-auditmod24d.so
-LDFLAGS-tst-audit24d = -Wl,-z,lazy
-
-$(objpfx)tst-audit25a.out: $(objpfx)tst-auditmod25.so
-$(objpfx)tst-audit25a: $(objpfx)tst-audit25mod1.so \
- $(objpfx)tst-audit25mod2.so \
- $(objpfx)tst-audit25mod3.so \
- $(objpfx)tst-audit25mod4.so
-LDFLAGS-tst-audit25a = -Wl,-z,lazy
-$(objpfx)tst-audit25mod1.so: $(objpfx)tst-audit25mod3.so
-LDFLAGS-tst-audit25mod1.so = -Wl,-z,now
-$(objpfx)tst-audit25mod2.so: $(objpfx)tst-audit25mod4.so
-LDFLAGS-tst-audit25mod2.so = -Wl,-z,lazy
-tst-audit25a-ARGS = -- $(host-test-program-cmd)
-
-$(objpfx)tst-audit25b.out: $(objpfx)tst-auditmod25.so
-$(objpfx)tst-audit25b: $(objpfx)tst-audit25mod1.so \
- $(objpfx)tst-audit25mod2.so \
- $(objpfx)tst-audit25mod3.so \
- $(objpfx)tst-audit25mod4.so
-LDFLAGS-tst-audit25b = -Wl,-z,now
-tst-audit25b-ARGS = -- $(host-test-program-cmd)
-
-$(objpfx)tst-audit28.out: $(objpfx)tst-auditmod28.so
-$(objpfx)tst-auditmod28.so: $(libsupport)
-tst-audit28-ENV = LD_AUDIT=$(objpfx)tst-auditmod28.so
-
-# tst-sonamemove links against an older implementation of the library.
-LDFLAGS-tst-sonamemove-linkmod1.so = \
- -Wl,--version-script=tst-sonamemove-linkmod1.map \
- -Wl,-soname,tst-sonamemove-runmod1.so
-LDFLAGS-tst-sonamemove-runmod1.so = -Wl,--no-as-needed \
- -Wl,--version-script=tst-sonamemove-runmod1.map \
- -Wl,-soname,tst-sonamemove-runmod1.so
-LDFLAGS-tst-sonamemove-runmod2.so = \
- -Wl,--version-script=tst-sonamemove-runmod2.map \
- -Wl,-soname,tst-sonamemove-runmod2.so
-$(objpfx)tst-sonamemove-runmod1.so: $(objpfx)tst-sonamemove-runmod2.so
-# Link against the link module, but depend on the run-time modules
-# for execution.
-$(objpfx)tst-sonamemove-link: $(objpfx)tst-sonamemove-linkmod1.so
-$(objpfx)tst-sonamemove-link.out: \
- $(objpfx)tst-sonamemove-runmod1.so \
- $(objpfx)tst-sonamemove-runmod2.so
-$(objpfx)tst-sonamemove-dlopen.out: \
- $(objpfx)tst-sonamemove-runmod1.so \
- $(objpfx)tst-sonamemove-runmod2.so
-
-$(objpfx)tst-dlmopen-dlerror-mod.so: $(libsupport)
-$(objpfx)tst-dlmopen-dlerror.out: $(objpfx)tst-dlmopen-dlerror-mod.so
-
-# Override -z defs, so that we can reference an undefined symbol.
-# Force lazy binding for the same reason.
-LDFLAGS-tst-latepthreadmod.so = \
- -Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
-# Do not optimize sibling calls as the test relies on a JMP_SLOT relocation for
-# function this_function_is_not_defined.
-CFLAGS-tst-latepthreadmod.c += -fno-optimize-sibling-calls
-$(objpfx)tst-latepthreadmod.so: $(shared-thread-library)
-$(objpfx)tst-latepthread.out: $(objpfx)tst-latepthreadmod.so
-
-# The test modules are parameterized by preprocessor macros.
-$(patsubst %,$(objpfx)%.os,$(tst-tls-many-dynamic-modules)): \
- $(objpfx)tst-tls-manydynamic%mod.os : tst-tls-manydynamicmod.c
- $(compile-command.c) \
- -DNAME=tls_global_$* -DSETTER=set_value_$* -DGETTER=get_value_$*
-$(objpfx)tst-tls-manydynamic: $(shared-thread-library)
-$(objpfx)tst-tls-manydynamic.out: \
- $(patsubst %,$(objpfx)%.so,$(tst-tls-many-dynamic-modules))
-
-$(objpfx)tst-ldconfig-X.out : tst-ldconfig-X.sh $(objpfx)ldconfig
- $(SHELL) $< '$(common-objpfx)' '$(test-wrapper-env)' \
- '$(run-program-env)' > $@; \
- $(evaluate-test)
-
-# Test static linking of all the libraries we can possibly link
-# together. Note that in some configurations this may be less than the
-# complete list of libraries we build but we try to maxmimize this list.
-ifeq ($(pthread-in-libc),no)
-$(objpfx)tst-linkall-static: \
- $(common-objpfx)resolv/libanl.a
-endif
-$(objpfx)tst-linkall-static: \
- $(common-objpfx)math/libm.a \
- $(common-objpfx)resolv/libresolv.a \
- $(common-objpfx)login/libutil.a \
- $(common-objpfx)rt/librt.a \
- $(static-thread-library)
-
-ifeq ($(build-crypt),yes)
-# If we are using NSS crypto and we have the ability to link statically
-# then we include libcrypt.a, otherwise we leave out libcrypt.a and
-# link as much as we can into the tst-linkall-static test. This assumes
-# that linking with libcrypt.a does everything required to include the
-# static NSS crypto library.
-ifeq (yesyes,$(nss-crypt)$(static-nss-crypt))
-$(objpfx)tst-linkall-static: \
- $(common-objpfx)crypt/libcrypt.a
-endif
-# If we are not using NSS crypto then we always have the ability to link
-# with libcrypt.a.
-ifeq (no,$(nss-crypt))
-$(objpfx)tst-linkall-static: \
- $(common-objpfx)crypt/libcrypt.a
-endif
-endif
-
-LDFLAGS-nextmod3.so = -Wl,--version-script=nextmod3.map
-
-# The application depends on the DSO, and the DSO loads the plugin.
-# The plugin also depends on the DSO. This creates the circular
-# dependency via dlopen that we're testing to make sure works.
-$(objpfx)tst-nodelete-dlclose-plugin.so: $(objpfx)tst-nodelete-dlclose-dso.so
-$(objpfx)tst-nodelete-dlclose: $(objpfx)tst-nodelete-dlclose-dso.so
-$(objpfx)tst-nodelete-dlclose.out: $(objpfx)tst-nodelete-dlclose-dso.so \
- $(objpfx)tst-nodelete-dlclose-plugin.so
-
-tst-env-setuid-ENV = MALLOC_CHECK_=2 MALLOC_MMAP_THRESHOLD_=4096 \
- LD_HWCAP_MASK=0x1
-
-$(objpfx)tst-debug1.out: $(objpfx)tst-debug1mod1.so
-
-$(objpfx)tst-debug1mod1.so: $(objpfx)testobj1.so
- $(OBJCOPY) --only-keep-debug $< $@
-
-$(objpfx)tst-main1: $(objpfx)tst-main1mod.so
-CRT-tst-main1 := $(csu-objpfx)crt1.o
-tst-main1-no-pie = yes
-LDLIBS-tst-main1 = $(libsupport)
-tst-main1mod.so-no-z-defs = yes
-
-LDLIBS-tst-absolute-sym-lib.so = tst-absolute-sym-lib.lds
-$(objpfx)tst-absolute-sym-lib.so: $(LDLIBS-tst-absolute-sym-lib.so)
-$(objpfx)tst-absolute-sym: $(objpfx)tst-absolute-sym-lib.so
-
-LDLIBS-tst-absolute-zero-lib.so = tst-absolute-zero-lib.lds
-$(objpfx)tst-absolute-zero-lib.so: $(LDLIBS-tst-absolute-zero-lib.so)
-$(objpfx)tst-absolute-zero: $(objpfx)tst-absolute-zero-lib.so
-
-$(objpfx)tst-big-note: $(objpfx)tst-big-note-lib.so
-# Avoid creating an ABI tag note, which may come before the
-# artificial, large note in tst-big-note-lib.o and invalidate the
-# test.
-$(objpfx)tst-big-note-lib.so: $(objpfx)tst-big-note-lib.o
- $(LINK.o) -shared -o $@ $(LDFLAGS.so) $(dt-relr-ldflag) $<
-
-$(objpfx)tst-unwind-ctor: $(objpfx)tst-unwind-ctor-lib.so
-
-CFLAGS-tst-unwind-main.c += -funwind-tables -DUSE_PTHREADS=0
-
-$(objpfx)tst-initfinilazyfail.out: \
- $(objpfx)tst-initlazyfailmod.so $(objpfx)tst-finilazyfailmod.so
-# Override -z defs, so that we can reference an undefined symbol.
-# Force lazy binding for the same reason.
-LDFLAGS-tst-initlazyfailmod.so = \
- -Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
-LDFLAGS-tst-finilazyfailmod.so = \
- -Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
-
-$(objpfx)tst-dlopenfail.out: \
- $(objpfx)tst-dlopenfailmod1.so $(objpfx)tst-dlopenfailmod2.so
-# Order matters here. tst-dlopenfaillinkmod.so's soname ensures a
-# run-time loader failure. --as-needed breaks this test because
-# nothing actually references tst-dlopenfailmod2.so (with its soname
-# tst-dlopenfail-missingmod.so).
-LDFLAGS-tst-dlopenfailmod1.so = -Wl,--no-as-needed
-$(objpfx)tst-dlopenfailmod1.so: \
- $(shared-thread-library) $(objpfx)tst-dlopenfaillinkmod.so
-LDFLAGS-tst-dlopenfaillinkmod.so = -Wl,-soname,tst-dlopenfail-missingmod.so
-$(objpfx)tst-dlopenfailmod2.so: $(objpfx)tst-dlopenfailnodelmod.so
-$(objpfx)tst-dlopenfail-2.out: \
- $(objpfx)tst-dlopenfailmod1.so $(objpfx)tst-dlopenfailmod2.so \
- $(objpfx)tst-dlopenfailmod3.so
-# tst-dlopenfailnodelmod.so emulates how libpthread was linked.
-$(objpfx)tst-dlopenfailnodelmod.so: $(libsupport)
-LDFLAGS-tst-dlopenfailnodelmod.so = \
- -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst
-# tst-dlopenfail should export the libsupport symbols, so that
-# tst-dlopenfailnodelmod.so uses them for error reporting.
-LDFLAGS-tst-dlopenfail = -Wl,-E
-
-$(objpfx)tst-dlopen-nodelete-reloc.out: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod1.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod2.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod3.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod4.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod5.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod6.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod7.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod8.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod9.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod10.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod11.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod12.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod13.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod14.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod15.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod16.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod17.so
-tst-dlopen-nodelete-reloc-mod2.so-no-z-defs = yes
-LDFLAGS-tst-dlopen-nodelete-reloc-mod2.so = -Wl,-z,nodelete
-$(objpfx)tst-dlopen-nodelete-reloc-mod4.so: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod3.so
-LDFLAGS-tst-dlopen-nodelete-reloc-mod4.so = -Wl,--no-as-needed
-$(objpfx)tst-dlopen-nodelete-reloc-mod5.so: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod4.so
-LDFLAGS-tst-dlopen-nodelete-reloc-mod5.so = -Wl,-z,nodelete,--no-as-needed
-tst-dlopen-nodelete-reloc-mod5.so-no-z-defs = yes
-tst-dlopen-nodelete-reloc-mod7.so-no-z-defs = yes
-tst-dlopen-nodelete-reloc-mod11.so-no-z-defs = yes
-$(objpfx)tst-dlopen-nodelete-reloc-mod13.so: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod12.so
-$(objpfx)tst-dlopen-nodelete-reloc-mod15.so: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod14.so
-tst-dlopen-nodelete-reloc-mod16.so-no-z-defs = yes
-$(objpfx)tst-dlopen-nodelete-reloc-mod16.so: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod15.so
-LDFLAGS-tst-dlopen-nodelete-reloc-mod16.so = -Wl,--no-as-needed
-$(objpfx)tst-dlopen-nodelete-reloc-mod17.so: \
- $(objpfx)tst-dlopen-nodelete-reloc-mod15.so \
- $(objpfx)tst-dlopen-nodelete-reloc-mod16.so
-LDFLAGS-tst-dlopen-nodelete-reloc-mod17.so = -Wl,--no-as-needed
-
-$(objpfx)tst-ldconfig-ld_so_conf-update.out: $(objpfx)tst-ldconfig-ld-mod.so
-
-LDFLAGS-tst-filterobj-flt.so = -Wl,--filter=$(objpfx)tst-filterobj-filtee.so
-$(objpfx)tst-filterobj: $(objpfx)tst-filterobj-flt.so
-$(objpfx)tst-filterobj.out: $(objpfx)tst-filterobj-filtee.so
-$(objpfx)tst-filterobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so
-
-LDFLAGS-tst-filterobj-aux.so = -Wl,--auxiliary=$(objpfx)tst-filterobj-filtee.so
-$(objpfx)tst-auxobj: $(objpfx)tst-filterobj-aux.so
-$(objpfx)tst-auxobj.out: $(objpfx)tst-filterobj-filtee.so
-$(objpfx)tst-auxobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so
-
-$(objpfx)tst-single_threaded: $(objpfx)tst-single_threaded-mod1.so
-$(objpfx)tst-single_threaded.out: \
- $(objpfx)tst-single_threaded-mod2.so $(objpfx)tst-single_threaded-mod3.so
-$(objpfx)tst-single_threaded-static-dlopen: \
- $(objpfx)tst-single_threaded-mod1.o
-$(objpfx)tst-single_threaded-static-dlopen.out: \
- $(objpfx)tst-single_threaded-mod2.so
-$(objpfx)tst-single_threaded-pthread: \
- $(objpfx)tst-single_threaded-mod1.so $(shared-thread-library)
-$(objpfx)tst-single_threaded-pthread.out: \
- $(objpfx)tst-single_threaded-mod2.so $(objpfx)tst-single_threaded-mod3.so \
- $(objpfx)tst-single_threaded-mod4.so
-$(objpfx)tst-single_threaded-pthread-static: $(static-thread-library)
-
-$(objpfx)tst-tls-ie: $(shared-thread-library)
-$(objpfx)tst-tls-ie.out: \
- $(objpfx)tst-tls-ie-mod0.so \
- $(objpfx)tst-tls-ie-mod1.so \
- $(objpfx)tst-tls-ie-mod2.so \
- $(objpfx)tst-tls-ie-mod3.so \
- $(objpfx)tst-tls-ie-mod4.so \
- $(objpfx)tst-tls-ie-mod5.so \
- $(objpfx)tst-tls-ie-mod6.so
-
-$(objpfx)tst-tls-ie-dlmopen: $(shared-thread-library)
-$(objpfx)tst-tls-ie-dlmopen.out: \
- $(objpfx)tst-tls-ie-mod0.so \
- $(objpfx)tst-tls-ie-mod1.so \
- $(objpfx)tst-tls-ie-mod2.so \
- $(objpfx)tst-tls-ie-mod3.so \
- $(objpfx)tst-tls-ie-mod4.so \
- $(objpfx)tst-tls-ie-mod5.so \
- $(objpfx)tst-tls-ie-mod6.so
-
-$(objpfx)argv0test.out: tst-rtld-argv0.sh $(objpfx)ld.so \
- $(objpfx)argv0test
- $(SHELL) $< $(objpfx)ld.so $(objpfx)argv0test \
- '$(test-wrapper-env)' '$(run_program_env)' \
- '$(rpath-link)' 'test-argv0' > $@; \
- $(evaluate-test)
-
-# A list containing the name of the most likely searched subdirectory
-# of the glibc-hwcaps directory, for each supported architecture (in
-# other words, the oldest hardware level recognized by the
-# glibc-hwcaps mechanism for this architecture). Used to obtain test
-# coverage for some glibc-hwcaps tests for the widest possible range
-# of systems.
-glibc-hwcaps-first-subdirs-for-tests = power9 x86-64-v2 z13
-
-# The test modules are parameterized by preprocessor macros.
-LDFLAGS-libmarkermod1-1.so += -Wl,-soname,libmarkermod1.so
-LDFLAGS-libmarkermod2-1.so += -Wl,-soname,libmarkermod2.so
-LDFLAGS-libmarkermod3-1.so += -Wl,-soname,libmarkermod3.so
-LDFLAGS-libmarkermod4-1.so += -Wl,-soname,libmarkermod4.so
-LDFLAGS-libmarkermod5-1.so += -Wl,-soname,libmarkermod5.so
-$(objpfx)libmarkermod%.os : markermodMARKER-VALUE.c
- $(compile-command.c) \
- -DMARKER=marker$(firstword $(subst -, ,$*)) \
- -DVALUE=$(lastword $(subst -, ,$*))
-$(objpfx)libmarkermod1.so: $(objpfx)libmarkermod1-1.so
- cp $< $@
-$(objpfx)libmarkermod2.so: $(objpfx)libmarkermod2-1.so
- cp $< $@
-$(objpfx)libmarkermod3.so: $(objpfx)libmarkermod3-1.so
- cp $< $@
-$(objpfx)libmarkermod4.so: $(objpfx)libmarkermod4-1.so
- cp $< $@
-$(objpfx)libmarkermod5.so: $(objpfx)libmarkermod5-1.so
- cp $< $@
-
-# tst-glibc-hwcaps-prepend checks that --glibc-hwcaps-prepend is
-# preferred over auto-detected subdirectories.
-$(objpfx)tst-glibc-hwcaps-prepend: $(objpfx)libmarkermod1-1.so
-$(objpfx)glibc-hwcaps/prepend-markermod1/libmarkermod1.so: \
- $(objpfx)libmarkermod1-2.so
- $(make-target-directory)
- cp $< $@
-$(objpfx)glibc-hwcaps/%/libmarkermod1.so: $(objpfx)libmarkermod1-3.so
- $(make-target-directory)
- cp $< $@
-$(objpfx)tst-glibc-hwcaps-prepend.out: \
- $(objpfx)tst-glibc-hwcaps-prepend $(objpfx)libmarkermod1.so \
- $(patsubst %,$(objpfx)glibc-hwcaps/%/libmarkermod1.so,prepend-markermod1 \
- $(glibc-hwcaps-first-subdirs-for-tests))
- $(test-wrapper) $(rtld-prefix) \
- --glibc-hwcaps-prepend prepend-markermod1 \
- $< > $@; \
- $(evaluate-test)
-
-# Like tst-glibc-hwcaps-prepend, but uses a container and loads the
-# library via ld.so.cache. Test setup is contained in the test
-# itself.
-$(objpfx)tst-glibc-hwcaps-prepend-cache.out: \
- $(objpfx)tst-glibc-hwcaps-prepend-cache $(objpfx)libmarkermod1-1.so \
- $(objpfx)libmarkermod1-2.so $(objpfx)libmarkermod1-3.so
-
-# tst-glibc-hwcaps-mask checks that --glibc-hwcaps-mask can be used to
-# suppress all auto-detected subdirectories.
-$(objpfx)tst-glibc-hwcaps-mask: $(objpfx)libmarkermod1-1.so
-$(objpfx)tst-glibc-hwcaps-mask.out: \
- $(objpfx)tst-glibc-hwcaps-mask $(objpfx)libmarkermod1.so \
- $(patsubst %,$(objpfx)glibc-hwcaps/%/libmarkermod1.so,\
- $(glibc-hwcaps-first-subdirs-for-tests))
- $(test-wrapper) $(rtld-prefix) \
- --glibc-hwcaps-mask does-not-exist \
- $< > $@; \
- $(evaluate-test)
-
-# Generic dependency for sysdeps implementation of
-# tst-glibc-hwcaps-cache.
-$(objpfx)tst-glibc-hwcaps-cache.out: $(objpfx)tst-glibc-hwcaps
-
-$(objpfx)list-tunables.out: tst-rtld-list-tunables.sh $(objpfx)ld.so
- $(SHELL) $< $(objpfx)ld.so '$(test-wrapper-env)' \
- '$(run_program_env)' > $(objpfx)/tst-rtld-list-tunables.out
- cmp tst-rtld-list-tunables.exp \
- $(objpfx)/tst-rtld-list-tunables.out > $@; \
- $(evaluate-test)
-
-tst-dst-static-ENV = LD_LIBRARY_PATH='$$ORIGIN'
-
-$(objpfx)tst-rtld-help.out: $(objpfx)ld.so
- $(test-wrapper) $(rtld-prefix) --help > $@; \
- status=$$?; \
- echo "info: ld.so exit status: $$status" >> $@; \
- if ! grep -q 'Legacy HWCAP subdirectories under library search path directories' $@; then \
- echo "error: missing subdirectory pattern" >> $@; \
- if test $$status -eq 0; then \
- status=1; \
- fi; \
- fi; \
- (exit $$status); \
- $(evaluate-test)
-
-# Reuses tst-tls-many-dynamic-modules
-$(patsubst %,$(objpfx)%.os,$(tst-tls-many-dynamic-modules-dep)): \
- $(objpfx)tst-tls-manydynamic%mod-dep.os : tst-tls-manydynamicmod.c
- $(compile-command.c) \
- -DNAME=tls_global_$* -DSETTER=set_value_$* -DGETTER=get_value_$*
-$(patsubst %,$(objpfx)%.os,$(tst-tls-many-dynamic-modules-dep-bad)): \
- $(objpfx)tst-tls-manydynamic%mod-dep-bad.os : tst-tls-manydynamicmod.c
- $(compile-command.c) \
- -DNAME=tls_global_$* -DSETTER=set_value_$* -DGETTER=get_value_$*
-tst-tls20mod-bad.so-no-z-defs = yes
-# Single dependency.
-$(objpfx)tst-tls-manydynamic0mod-dep.so: $(objpfx)tst-tls-manydynamic1mod-dep.so
-# Double dependencies.
-$(objpfx)tst-tls-manydynamic2mod-dep.so: $(objpfx)tst-tls-manydynamic3mod-dep.so \
- $(objpfx)tst-tls-manydynamic4mod-dep.so
-# Double dependencies with each dependency depent of another module.
-$(objpfx)tst-tls-manydynamic5mod-dep.so: $(objpfx)tst-tls-manydynamic6mod-dep.so \
- $(objpfx)tst-tls-manydynamic7mod-dep.so
-$(objpfx)tst-tls-manydynamic6mod-dep.so: $(objpfx)tst-tls-manydynamic8mod-dep.so
-$(objpfx)tst-tls-manydynamic7mod-dep.so: $(objpfx)tst-tls-manydynamic8mod-dep.so
-# Long chain with one double dependency in the middle
-$(objpfx)tst-tls-manydynamic9mod-dep.so: $(objpfx)tst-tls-manydynamic10mod-dep.so \
- $(objpfx)tst-tls-manydynamic11mod-dep.so
-$(objpfx)tst-tls-manydynamic10mod-dep.so: $(objpfx)tst-tls-manydynamic12mod-dep.so
-$(objpfx)tst-tls-manydynamic12mod-dep.so: $(objpfx)tst-tls-manydynamic13mod-dep.so
-# Long chain with two double depedencies in the middle
-$(objpfx)tst-tls-manydynamic14mod-dep.so: $(objpfx)tst-tls-manydynamic15mod-dep.so
-$(objpfx)tst-tls-manydynamic15mod-dep.so: $(objpfx)tst-tls-manydynamic16mod-dep.so \
- $(objpfx)tst-tls-manydynamic17mod-dep.so
-$(objpfx)tst-tls-manydynamic16mod-dep.so: $(objpfx)tst-tls-manydynamic18mod-dep.so \
- $(objpfx)tst-tls-manydynamic19mod-dep.so
-# Same but with an invalid module.
-# Single dependency.
-$(objpfx)tst-tls-manydynamic0mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
-LDFLAGS-tst-tls-manydynamic0mod-dep-bad.so = -Wl,--no-as-needed
-# Double dependencies.
-$(objpfx)tst-tls-manydynamic1mod-dep-bad.so: $(objpfx)tst-tls-manydynamic2mod-dep-bad.so \
- $(objpfx)tst-tls20mod-bad.so
-LDFLAGS-tst-tls-manydynamic1mod-dep-bad.so = -Wl,--no-as-needed
-# Double dependencies with each dependency depent of another module.
-$(objpfx)tst-tls-manydynamic3mod-dep-bad.so: $(objpfx)tst-tls-manydynamic4mod-dep-bad.so \
- $(objpfx)tst-tls-manydynamic5mod-dep-bad.so
-LDFLAGS-tst-tls-manydynamic3mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls-manydynamic4mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
-LDFLAGS-tst-tls-manydynamic4mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls-manydynamic5mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
-LDFLAGS-tst-tls-manydynamic5mod-dep-bad.so = -Wl,--no-as-needed
-# Long chain with one double dependency in the middle
-$(objpfx)tst-tls-manydynamic6mod-dep-bad.so: $(objpfx)tst-tls-manydynamic7mod-dep-bad.so \
- $(objpfx)tst-tls-manydynamic8mod-dep-bad.so
-LDFLAGS-tst-tls-manydynamic6mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls-manydynamic7mod-dep-bad.so: $(objpfx)tst-tls-manydynamic9mod-dep-bad.so
-LDFLAGS-tst-tls-manydynamic7mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls-manydynamic9mod-dep-bad.so: $(objpfx)tst-tls20mod-bad.so
-LDFLAGS-tst-tls-manydynamic9mod-dep-bad.so = -Wl,--no-as-needed
-# Long chain with two double depedencies in the middle
-$(objpfx)tst-tls-manydynamic10mod-dep-bad.so: $(objpfx)tst-tls-manydynamic11mod-dep-bad.so
-LDFLAGS-tst-tls-manydynamic10mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls-manydynamic11mod-dep-bad.so: $(objpfx)tst-tls-manydynamic12mod-dep-bad.so \
- $(objpfx)tst-tls-manydynamic13mod-dep-bad.so
-LDFLAGS-tst-tls-manydynamic11mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls-manydynamic12mod-dep-bad.so: $(objpfx)tst-tls-manydynamic14mod-dep-bad.so \
- $(objpfx)tst-tls20mod-bad.so
-LDFLAGS-tst-tls-manydynamic12mod-dep-bad.so = -Wl,--no-as-needed
-$(objpfx)tst-tls20: $(shared-thread-library)
-$(objpfx)tst-tls20.out: $(objpfx)tst-tls20mod-bad.so \
- $(tst-tls-many-dynamic-modules:%=$(objpfx)%.so) \
- $(tst-tls-many-dynamic-modules-dep:%=$(objpfx)%.so) \
- $(tst-tls-many-dynamic-modules-dep-bad:%=$(objpfx)%.so) \
-
-# Reuses tst-tls-many-dynamic-modules
-$(objpfx)tst-tls21: $(shared-thread-library)
-$(objpfx)tst-tls21.out: $(objpfx)tst-tls21mod.so
-$(objpfx)tst-tls21mod.so: $(tst-tls-many-dynamic-modules:%=$(objpfx)%.so)
-
-$(objpfx)tst-getauxval-static.out: $(objpfx)tst-auxvalmod.so
-tst-getauxval-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx)
-
-$(objpfx)tst-dlmopen-gethostbyname.out: $(objpfx)tst-dlmopen-gethostbyname-mod.so
-
-$(objpfx)tst-ro-dynamic: $(objpfx)tst-ro-dynamic-mod.so
-$(objpfx)tst-ro-dynamic-mod.so: $(objpfx)tst-ro-dynamic-mod.os \
- tst-ro-dynamic-mod.map
- $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
- $(dt-relr-ldflag) \
- -Wl,--script=tst-ro-dynamic-mod.map \
- $(objpfx)tst-ro-dynamic-mod.os
-
-$(objpfx)tst-rtld-run-static.out: $(objpfx)/ldconfig
-
-$(objpfx)tst-dl_find_object.out: \
- $(objpfx)tst-dl_find_object-mod1.so $(objpfx)tst-dl_find_object-mod2.so
-$(objpfx)tst-dl_find_object-static.out: \
- $(objpfx)tst-dl_find_object-mod1.so $(objpfx)tst-dl_find_object-mod2.so
-tst-dl_find_object-static-ENV = $(static-dlopen-environment)
-CFLAGS-tst-dl_find_object.c += -funwind-tables
-CFLAGS-tst-dl_find_object-static.c += -funwind-tables
-LDFLAGS-tst-dl_find_object-static += -Wl,--eh-frame-hdr
-CFLAGS-tst-dl_find_object-mod1.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod2.c += -funwind-tables
-LDFLAGS-tst-dl_find_object-mod2.so += -Wl,--enable-new-dtags,-z,nodelete
-$(objpfx)tst-dl_find_object-threads: $(shared-thread-library)
-CFLAGS-tst-dl_find_object-threads.c += -funwind-tables
-$(objpfx)tst-dl_find_object-threads.out: \
- $(objpfx)tst-dl_find_object-mod1.so \
- $(objpfx)tst-dl_find_object-mod2.so \
- $(objpfx)tst-dl_find_object-mod3.so \
- $(objpfx)tst-dl_find_object-mod4.so \
- $(objpfx)tst-dl_find_object-mod5.so \
- $(objpfx)tst-dl_find_object-mod6.so \
- $(objpfx)tst-dl_find_object-mod7.so \
- $(objpfx)tst-dl_find_object-mod8.so \
- $(objpfx)tst-dl_find_object-mod9.so
-CFLAGS-tst-dl_find_object-mod3.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod4.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod5.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod6.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod7.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod8.c += -funwind-tables
-CFLAGS-tst-dl_find_object-mod9.c += -funwind-tables
-
-$(objpfx)tst-p_alignmod-base.so: $(libsupport)
-LDFLAGS-tst-p_alignmod-base.so += -Wl,-z,max-page-size=0x200000
-
-$(objpfx)tst-p_align1: $(objpfx)tst-p_alignmod1.so
-
-# Make a copy of tst-p_alignmod-base.so and lower p_align of the first
-# PT_LOAD segment.
-$(objpfx)tst-p_alignmod1.so: $(objpfx)tst-p_alignmod-base.so
- rm -f $@
- cp $(objpfx)tst-p_alignmod-base.so $@
- $(PYTHON) $(..)scripts/tst-elf-edit.py -a half $@
-
-$(objpfx)tst-p_align2: $(objpfx)tst-p_alignmod2.so
-
-# Make a copy of tst-p_alignmod-base.so and update p_align of the first
-# PT_LOAD segment.
-$(objpfx)tst-p_alignmod2.so: $(objpfx)tst-p_alignmod-base.so
- rm -f $@
- cp $(objpfx)tst-p_alignmod-base.so $@
- $(PYTHON) $(..)scripts/tst-elf-edit.py -a 1 $@
-
-LDFLAGS-tst-p_alignmod3.so += -Wl,-z,max-page-size=0x100,-z,common-page-size=0x100
-
-$(objpfx)tst-p_align3: $(objpfx)tst-p_alignmod3.so
-$(objpfx)tst-p_align3.out: tst-p_align3.sh $(objpfx)tst-p_align3
- $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
- $(evaluate-test)
-
-$(objpfx)check-abi-version-libc.out: $(common-objpfx)libc.so
- LC_ALL=C $(READELF) -V -W $< \
- | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \
- | grep GLIBC_ABI_DT_RELR > $@; \
- $(evaluate-test)
-
-$(objpfx)check-tst-relr-pie.out: $(objpfx)tst-relr-pie
- LC_ALL=C $(OBJDUMP) -p $< \
- | sed -ne '/required from libc.so/,$$ p' \
- | grep GLIBC_ABI_DT_RELR > $@; \
- $(evaluate-test)
-
-# The test checks if a DT_RELR shared library without DT_NEEDED works as
-# intended, so it uses an explicit link rule.
-$(objpfx)tst-relr2: $(objpfx)tst-relr-mod2.so
-$(objpfx)tst-relr-mod2.so: $(objpfx)tst-relr-mod2.os
- $(LINK.o) -nostdlib -nostartfiles -Wl,-z,pack-relative-relocs \
- $(LDFLAGS-soname-fname) \
- -shared -o $@.new $(filter-out $(map-file),$^)
- $(call after-link,$@.new)
- mv -f $@.new $@
-
-# The test checks if a DT_RELR shared library without DT_VERNEED works as
-# intended, so it uses an explicit link rule.
-$(objpfx)tst-relr3: $(objpfx)tst-relr-mod3a.so
-$(objpfx)tst-relr-mod3b.so: $(objpfx)tst-relr-mod3b.os
- $(LINK.o) -nostdlib -nostartfiles -Wl,-z,pack-relative-relocs \
- $(LDFLAGS-soname-fname) \
- -shared -o $@.new $(filter-out $(map-file),$^)
- $(call after-link,$@.new)
- mv -f $@.new $@
-
-$(objpfx)tst-relr-mod3a.so: $(objpfx)tst-relr-mod3a.os \
- $(objpfx)tst-relr-mod3b.so
- $(LINK.o) -nostdlib -nostartfiles -Wl,-z,pack-relative-relocs \
- $(LDFLAGS-soname-fname) \
- -shared -o $@.new $(filter-out $(map-file),$^)
- $(call after-link,$@.new)
- mv -f $@.new $@
-
-# The test checks if a DT_RELR shared library without libc.so on DT_NEEDED
-# works as intended, so it uses an explicit link rule.
-$(objpfx)tst-relr4: $(objpfx)tst-relr-mod4a.so
-$(objpfx)tst-relr-mod4b.so: $(objpfx)tst-relr-mod4b.os
- $(LINK.o) -nostdlib -nostartfiles -Wl,-z,pack-relative-relocs \
- $(LDFLAGS-soname-fname) \
- -Wl,--version-script=tst-relr-mod4b.map \
- -shared -o $@.new $(filter-out $(map-file),$^)
- $(call after-link,$@.new)
- mv -f $@.new $@
-
-$(objpfx)tst-relr-mod4a.so: $(objpfx)tst-relr-mod4a.os \
- $(objpfx)tst-relr-mod4b.so
- $(LINK.o) -nostdlib -nostartfiles -Wl,-z,pack-relative-relocs \
- $(LDFLAGS-soname-fname) \
- -shared -o $@.new $(filter-out $(map-file),$^)
- $(call after-link,$@.new)
- mv -f $@.new $@
-
-LDFLAGS-libtracemod1-1.so += -Wl,-soname,libtracemod1.so
-LDFLAGS-libtracemod2-1.so += -Wl,-soname,libtracemod2.so
-LDFLAGS-libtracemod3-1.so += -Wl,-soname,libtracemod3.so
-LDFLAGS-libtracemod4-1.so += -Wl,-soname,libtracemod4.so
-LDFLAGS-libtracemod5-1.so += -Wl,-soname,libtracemod5.so
-
-$(objpfx)libtracemod1-1.so: $(objpfx)libtracemod2-1.so \
- $(objpfx)libtracemod3-1.so
-$(objpfx)libtracemod2-1.so: $(objpfx)libtracemod4-1.so \
- $(objpfx)libtracemod5-1.so
-
-define libtracemod-x
-$(objpfx)libtracemod$(1)/libtracemod$(1).so: $(objpfx)libtracemod$(1)-1.so
- $$(make-target-directory)
- cp $$< $$@
-endef
-libtracemod-suffixes = 1 2 3 4 5
-$(foreach i,$(libtracemod-suffixes), $(eval $(call libtracemod-x,$(i))))
-
-define tst-trace-skeleton
-$(objpfx)tst-trace$(1).out: $(objpfx)libtracemod1/libtracemod1.so \
- $(objpfx)libtracemod2/libtracemod2.so \
- $(objpfx)libtracemod3/libtracemod3.so \
- $(objpfx)libtracemod4/libtracemod4.so \
- $(objpfx)libtracemod5/libtracemod5.so \
- $(..)scripts/tst-ld-trace.py \
- tst-trace$(1).exp
- ${ $(PYTHON) $(..)scripts/tst-ld-trace.py \
- "$(test-wrapper-env) $(elf-objpfx)$(rtld-installed-name) \
- --library-path $(common-objpfx):$(strip $(2)) \
- $(objpfx)libtracemod1/libtracemod1.so" tst-trace$(1).exp \
- } > $$@; $$(evaluate-test)
-endef
-
-$(eval $(call tst-trace-skeleton,1,))
-$(eval $(call tst-trace-skeleton,2,\
- $(objpfx)libtracemod2))
-$(eval $(call tst-trace-skeleton,3,\
- $(objpfx)libtracemod2:$(objpfx)libtracemod3))
-$(eval $(call tst-trace-skeleton,4,\
- $(objpfx)libtracemod2:$(objpfx)libtracemod3:$(objpfx)libtracemod4))
-$(eval $(call tst-trace-skeleton,5,\
- $(objpfx)libtracemod2:$(objpfx)libtracemod3:$(objpfx)libtracemod4:$(objpfx)libtracemod5))
-
-$(objpfx)tst-tls-allocation-failure-static-patched: \
- $(objpfx)tst-tls-allocation-failure-static $(..)scripts/tst-elf-edit.py
- cp $< $@
- $(PYTHON) $(..)scripts/tst-elf-edit.py --maximize-tls-size $@
-
-$(objpfx)tst-tls-allocation-failure-static-patched.out: \
- $(objpfx)tst-tls-allocation-failure-static-patched
- $< > $@ 2>&1; echo "status: $$?" >> $@
- grep -q '^Fatal glibc error: Cannot allocate TLS block$$' $@ \
- && grep -q '^status: 127$$' $@; \
- $(evaluate-test)
-
-$(objpfx)tst-audit-tlsdesc: $(objpfx)tst-audit-tlsdesc-mod1.so \
- $(objpfx)tst-audit-tlsdesc-mod2.so \
- $(shared-thread-library)
-ifeq (yes,$(have-mtls-dialect-gnu2))
-# The test is valid for all TLS types, but we want to exercise GNU2
-# TLS if possible.
-CFLAGS-tst-audit-tlsdesc-mod1.c += -mtls-dialect=gnu2
-CFLAGS-tst-audit-tlsdesc-mod2.c += -mtls-dialect=gnu2
-endif
-$(objpfx)tst-audit-tlsdesc-dlopen: $(shared-thread-library)
-$(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-audit-tlsdesc-mod1.so \
- $(objpfx)tst-audit-tlsdesc-mod2.so
-$(objpfx)tst-audit-tlsdesc-mod1.so: $(objpfx)tst-audit-tlsdesc-mod2.so
-$(objpfx)tst-audit-tlsdesc.out: $(objpfx)tst-auditmod-tlsdesc.so
-tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so
-$(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so
-tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so
-
-$(objpfx)tst-dlmopen-twice.out: \
- $(objpfx)tst-dlmopen-twice-mod1.so \
- $(objpfx)tst-dlmopen-twice-mod2.so
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/elf
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits/wchar2-decl.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits/wchar2-decl.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits/wchar2-decl.h (nonexistent)
@@ -1 +0,0 @@
-#include <wcsmbs/bits/wchar2-decl.h>
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include/bits
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/include
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/NEWS
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/NEWS (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/NEWS (nonexistent)
@@ -1,7274 +0,0 @@
-GNU C Library NEWS -- history of user-visible changes.
-Copyright (C) 1992-2022 Free Software Foundation, Inc.
-See the end for copying conditions.
-
-Please send GNU C library bug reports via <https://sourceware.org/bugzilla/>
-using `glibc' in the "product" field.
-
-Version 2.36.1
-
-The following bugs are resolved with this release:
-
- [28846] CMSG_NXTHDR may trigger -Wstrict-overflow warning
- [29446] _dlopen now ignores dl_caller argument in static mode
- [29485] Linux: Terminate subprocess on late failure in tst-pidfd
- [29490] alpha: New __brk_call implementation is broken
- [29528] elf: Call __libc_early_init for reused namespaces
- [29539] libc: LD_TRACE_LOADED_OBJECTS changed how vDSO library are
-
-Version 2.36
-
-Major new features:
-
-* Support for DT_RELR relative relocation format has been added to
- glibc. This is a new ELF dynamic tag that improves the size of
- relative relocations in shared object files and position independent
- executables (PIE). DT_RELR generation requires linker support for
- -z pack-relative-relocs option, which is supported for some targets
- in recent binutils versions. Lazy binding doesn't apply to DT_RELR.
-
-* On Linux, the pidfd_open, pidfd_getfd, and pidfd_send_signal functions
- have been added. The pidfd functionality provides access to a process
- while avoiding the issue of PID reuse on tranditional Unix systems.
-
-* On Linux, the process_madvise function has been added. It has the
- same functionality as madvise but alters the target process identified
- by the pidfd.
-
-* On Linux, the process_mrelease function has been added. It allows a
- caller to release the memory of a dying process. The release of the
- memory is carried out in the context of the caller, using the caller's
- CPU affinity, and priority with CPU usage accounted to the caller.
-
-* The “no-aaaa” DNS stub resolver option has been added. System
- administrators can use it to suppress AAAA queries made by the stub
- resolver, including AAAA lookups triggered by NSS-based interfaces
- such as getaddrinfo. Only DNS lookups are affected: IPv6 data in
- /etc/hosts is still used, getaddrinfo with AI_PASSIVE will still
- produce IPv6 addresses, and configured IPv6 name servers are still
- used. To produce correct Name Error (NXDOMAIN) results, AAAA queries
- are translated to A queries. The new resolver option is intended
- primarily for diagnostic purposes, to rule out that AAAA DNS queries
- have adverse impact. It is incompatible with EDNS0 usage and DNSSEC
- validation by applications.
-
-* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, open_tree,
- and mount_setattr have been added. They are part of the new Linux kernel
- mount APIs that allow applications to more flexibly configure and operate
- on filesystem mounts. The new mount APIs are specifically designed to work
- with namespaces.
-
-* localedef now accepts locale definition files encoded in UTF-8.
- Previously, input bytes not within the ASCII range resulted in
- unpredictable output.
-
-* Support for the mbrtoc8 and c8rtomb multibyte/UTF-8 character conversion
- functions has been added per the ISO C2X N2653 and C++20 P0482R6 proposals.
- Support for the char8_t typedef has been added per the ISO C2X N2653
- proposal. The functions are declared in uchar.h in C2X mode or when the
- _GNU_SOURCE macro or C++20 __cpp_char8_t feature test macro is defined.
- The char8_t typedef is declared in uchar.h in C2X mode or when the
- _GNU_SOURCE macro is defined and the C++20 __cpp_char8_t feature test macro
- is not defined (if __cpp_char8_t is defined, then char8_t is a builtin type).
-
-* The functions arc4random, arc4random_buf, and arc4random_uniform have been
- added. The functions wrap getrandom and/or /dev/urandom to return high-
- quality randomness from the kernel.
-
-* Support for LoongArch running on Linux has been added. This port requires
- as least binutils 2.38, GCC 12, and Linux 5.19. Currently only hard-float
- ABI is supported:
-
- - loongarch64-linux-gnu
-
- The LoongArch ABI is 64-bit little-endian.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* Support for prelink will be removed in the next release; this includes
- removal of the LD_TRACE_PRELINKING, and LD_USE_LOAD_BIAS, environment
- variables and their functionality in the dynamic loader.
-
-* The Linux kernel version check has been removed along with the
- LD_ASSUME_KERNEL environment variable. The minimum kernel used to built
- glibc is still provided through NT_GNU_ABI_TAG ELF note and also printed
- when libc.so is issued directly.
-
-* On Linux, The LD_LIBRARY_VERSION environment variable has been removed.
-
-The following bugs are resolved with this release:
-
- [14932] dynamic-link: dlsym(handle, "foo") and dlsym(RTLD_NEXT, "foo")
- return different result with versioned "foo"
- [16355] libc: syslog.h's SYSLOG_NAMES namespace violation and utter
- mess
- [23293] dynamic-link: aarch64: getauxval is broken when run as ld.so
- ./exe and ld.so adjusts argv on the stack
- [24595] nptl: [2.28 Regression]: Deadlock in atfork handler which
- calls dlclose
- [25744] locale: mbrtowc with Big5-HKSCS returns 2 instead of 1 when
- consuming the second byte of certain double byte characters
- [25812] stdio: Libio vtable protection is sometimes only partially
- enforced
- [27054] libc: pthread_atfork handlers that call pthread_atfork
- deadlock
- [27924] dynamic-link: ld.so: Support DT_RELR relative relocation
- format
- [28128] build: declare_symbol_alias doesn't work for assembly codes
- [28566] network: getnameinfo with NI_NOFQDN is not thread safe
- [28752] nss: Segfault in getpwuid when stat fails
- [28815] libc: realpath should not copy to resolved buffer on error
- [28828] stdio: fputwc crashes
- [28838] libc: FAIL: elf/tst-p_align3
- [28845] locale: ld-monetary.c should be updated to match ISO C and
- other standards.
- [28850] libc: linux: __get_nprocs_sched reads uninitialized memory
- from the stack
- [28852] libc: getaddrinfo leaks memory with AI_ALL
- [28853] libc: tst-spawn6 changes current foreground process group
- (breaks test isolation)
- [28857] libc: FAIL: elf/tst-audit24a
- [28860] build: --enable-kernel=5.1.0 build fails because of missing
- __convert_scm_timestamps
- [28865] libc: linux: _SC_NPROCESSORS_CONF and _SC_NPROCESSORS_ONLN are
- inaccurate without /sys and /proc
- [28868] dynamic-link: Dynamic loader DFS algorithm segfaults on
- missing libraries
- [28880] libc: Program crashes if date beyone 2038
- [28883] libc: sysdeps/unix/sysv/linux/select.c: __select64
- !__ASSUME_TIME64_SYSCALLS && !__ASSUME_PSELECT fails on Microblaze
- [28896] string: strncmp-avx2-rtm and wcsncmp-avx2-rtm fallback on non-
- rtm variants when avoiding overflow
- [28922] build: The .d dependency files aren't always generated
- [28931] libc: hosts lookup broken for SUCCESS=CONTINUE and
- SUCCESS=MERGE
- [28936] build: nm: No such file
- [28950] localedata: Add locale for ISO code "tok" (Toki Pona)
- [28953] nss: NSS lookup result can be incorrect if function lookup
- clobbers errno
- [28970] math: benchtest: libmvec benchmark doesn't build with make
- bench.
- [28991] libc: sysconf(_SC_NPROCESSORS_CONF) should read
- /sys/devices/system/cpu/possible
- [28993] libc: closefrom() iterates until max int if no access to
- /proc/self/fd/
- [28996] libc: realpath fails to copy partial result to resolved buffer
- on ENOENT and EACCES
- [29027] math: [ia64] fabs fails with sNAN input
- [29029] nptl: poll() spuriously returns EINTR during thread
- cancellation and with cancellation disabled
- [29030] string: GLIBC 2.35 regression - Fortify crash on certain valid
- uses of mbsrtowcs (*** buffer overflow detected ***: terminated)
- [29062] dynamic-link: Memory leak in _dl_find_object_update if object
- is promoted to global scope
- [29069] libc: fstatat64_time64_statx wrapper broken on MIPS N32 with
- -D_FILE_OFFSET_BITS=64 and -D_TIME_BITS=64
- [29071] dynamic-link: m68k: Removal of ELF_DURING_STARTUP optimization
- broke ld.so
- [29097] time: fchmodat does not handle 64 bit time_t for
- AT_SYMLINK_NOFOLLOW
- [29109] libc: posix_spawn() always returns 1 (EPERM) on clone()
- failure
- [29141] libc: _FORTIFY_SOURCE=3 fail for gcc 12/glibc 2.35
- [29162] string: [PATCH] string.h syntactic error:
- include/bits/string_fortified.h:110: error: expected ',' or ';'
- before '__fortified_attr_access'
- [29165] libc: [Regression] broken argv adjustment
- [29187] dynamic-link: [regression] broken argv adjustment for nios2
- [29193] math: sincos produces a different output than sin/cos
- [29197] string: __strncpy_power9() uses uninitialised register vs18
- value for filling after \0
- [29203] libc: daemon is not y2038 aware
- [29204] libc: getusershell is not 2038 aware
- [29207] libc: posix_fallocate fallback implementation is not y2038
- aware
- [29208] libc: fpathconf(_PC_ASYNC_IO) is not y2038 aware
- [29209] libc: isfdtype is not y2038 aware
- [29210] network: ruserpass is not y2038 aware
- [29211] libc: __open_catalog is not y2038 aware
- [29213] libc: gconv_parseconfdir is not y2038 aware
- [29214] nptl: pthread_setcanceltype fails to set type
- [29225] network: Mistyped define statement in socket/sys/socket.h in
- line 184
- [29274] nptl: __read_chk is not a cancellation point
- [29279] libc: undefined reference to `mbstowcs_chk' after
- 464d189b9622932a75302290625de84931656ec0
- [29304] libc: mq_timedreceive does not handle 64 bit syscall return
- correct for !__ASSUME_TIME64_SYSCALLS
- [29403] libc: st_atim, st_mtim, st_ctim stat struct members are
- missing on microblaze with largefile
-
-Version 2.35
-
-Major new features:
-
-* Unicode 14.0.0 Support: Character encoding, character type info, and
- transliteration tables are all updated to Unicode 14.0.0, using
- generator scripts contributed by Mike FABIAN (Red Hat).
-
-* Bump r_version in the debugger interface to 2 and add a new field,
- r_next, support multiple namespaces.
-
-* Support for the C.UTF-8 locale has been added to glibc. The locale
- supports full code-point sorting for all valid Unicode code points. A
- limitation in the framework for fnmatch, regexec, and regcomp requires
- a compromise to save space and only ASCII-based range expressions are
- supported for now (see bug 28255). The full size of the locale is
- only ~400KiB, with 346KiB coming from LC_CTYPE information for
- Unicode. This locale harmonizes downstream C.UTF-8 already shipping
- in various downstream distributions. The locale is not built into
- glibc, and must be installed.
-
-* <math.h> functions that round their results to a narrower type, and
- corresponding <tgmath.h> macros, are added from TS 18661-1:2014, TS
- 18661-3:2015 and draft ISO C2X:
-
- - fsqrt, fsqrtl, dsqrtl and corresponding fMsqrtfN, fMsqrtfNx,
- fMxsqrtfN and fMxsqrtfNx functions.
-
- - ffma, ffmal, dfmal and corresponding fMfmafN, fMfmafNx, fMxfmafN and
- fMxfmafNx functions.
-
-* <math.h> functions for floating-point maximum and minimum,
- corresponding to new operations in IEEE 754-2019, and corresponding
- <tgmath.h> macros, are added from draft ISO C2X: fmaximum,
- fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num,
- fminimum_mag, fminimum_mag_num and corresponding functions for float,
- long double, _FloatN and _FloatNx.
-
-* <math.h> macros for single-precision float constants are added as a
- GNU extension: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf,
- M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f and
- M_SQRT1_2f.
-
-* The __STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__ macros are
- predefined as specified in TS 18661-1:2014.
-
-* The exp10 functions in <math.h> now have a corresponding type-generic
- macro in <tgmath.h>.
-
-* The ISO C2X macro _PRINTF_NAN_LEN_MAX has been added to <stdio.h>.
-
-* printf-family functions now support the %b format for output of
- integers in binary, as specified in draft ISO C2X, and the %B variant
- of that format recommended by draft ISO C2X.
-
-* A new DSO sorting algorithm has been added in the dynamic linker that uses
- topological sorting by depth-first search (DFS), solving performance issues
- of the existing sorting algorithm when encountering particular circular
- object dependency cases.
-
-* A new tunable, glibc.rtld.dynamic_sort, can be used to select between
- the two DSO sorting algorithms. The default setting of '2' uses the
- new DFS-based algorithm. The setting '1' switches to the old
- algorithm used in glibc 2.33 and earlier.
-
-* ABI support for a new function '__memcmpeq'. '__memcmpeq' is meant
- to be used by compilers for optimizing usage of 'memcmp' when its
- return value is only used for its boolean status.
-
-* Support for automatically registering threads with the Linux rseq
- system call has been added. This system call is implemented starting
- from Linux 4.18. The Restartable Sequences ABI accelerates user-space
- operations on per-cpu data. It allows user-space to perform updates
- on per-cpu data without requiring heavy-weight atomic operations.
- Automatically registering threads allows all libraries, including
- libc, to make immediate use of the rseq support by using the
- documented ABI, via the __rseq_flags, __rseq_offset, and __rseq_size
- variables. The GNU C Library manual has details on integration of
- Restartable Sequences.
-
-* A symbolic link to the dynamic linker is now installed under
- /usr/bin/ld.so (or more precisely, '${bindir}/ld.so').
-
-* All programs and the testsuite in glibc are now built as position independent
- executables (PIE) by default on toolchains and architectures that support it.
- Further, if the toolchain and architecture supports it, even static programs
- are built as PIE and the resultant glibc can be used to build static PIE
- executables. A new option --disable-default-pie has been added to disable
- this behavior and get a non-PIE build. This option replaces
- --enable-static-pie, which no longer has any effect on the build
- configuration.
-
-* On Linux, a new tunable, glibc.malloc.hugetlb, can be used to
- either make malloc issue madvise plus MADV_HUGEPAGE on mmap and sbrk
- or to use huge pages directly with mmap calls with the MAP_HUGETLB
- flags). The former can improve performance when Transparent Huge Pages
- is set to 'madvise' mode while the latter uses the system reserved
- huge pages.
-
-* The printf family of functions now handles the flagged %#m conversion
- specifier, printing errno as an error constant (similar to strerrorname_np).
-
-* The function _dl_find_object has been added. In-process unwinders
- can use it to efficiently locate unwinding information for a code
- address.
-
-* Support for OpenRISC running on Linux has been added. This port requires
- as least binutils 2.35, GCC 11, and Linux 5.4. Currently only soft-float
- ABI is supported:
-
- - or1k-linux-gnu
-
- The OpenRISC ABI is 32-bit big-endian and uses 64-bit time (y2038 safe) and
- 64-bit file offsets (LFS default).
-
-* A new configure option, --with-rtld-early-cflags, can be used to
- specify additional compiler flags for building the early startup code
- of the dynamic linker. On targets which have CPU compatibility
- checks, this can help to ensure that proper diagnostics are printed if
- the dynamic loader runs on an incompatible CPU.
-
-* On Linux, the epoll_pwait2 function has been added. It is similar to
- epoll_wait with the difference the timeout has nanoseconds resolution.
-
-* The function posix_spawn_file_actions_addtcsetpgrp_np has been added,
- enabling posix_spawn and posix_spawnp to set the controlling terminal in
- the new process in a race free manner. This function is a GNU extension.
-
-* Source fortification (_FORTIFY_SOURCE) level 3 is now available for
- applications compiling with glibc and gcc 12 and later. Level 3 leverages
- the __builtin_dynamic_object_size function to deliver additional
- fortification balanced against additional runtime cost (checking non-constant
- bounds).
-
-* The audit libraries will avoid unnecessary slowdown if it is not required
- PLT tracking (by not implementing the la_pltenter or la_pltexit callbacks).
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* On x86-64, the LD_PREFER_MAP_32BIT_EXEC environment variable support
- has been removed since the first PT_LOAD segment is no longer executable
- due to defaulting to -z separate-code.
-
-* The r_version update in the debugger interface makes the glibc binary
- incompatible with GDB binaries built without the following commits:
-
- c0154a4a21a gdb: Don't assume r_ldsomap when r_version > 1 on Linux
- 4eb629d50d4 gdbserver: Check r_version < 1 for Linux debugger interface
-
- when audit modules or dlmopen are used.
-
-* Intel MPX support (lazy PLT, ld.so profile, and LD_AUDIT) has been removed.
-
-* The --enable-static-pie option is no longer available. The glibc build
- configuration script now automatically detects static-pie support in the
- toolchain and architecture and enables it if available.
-
-* The catchsegv script and associated libSegFault.so shared object have
- been removed. There are widely-deployed out-of-process alternatives for
- catching coredumps and backtraces.
-
-* Support for prelink will be removed in the next release; this includes
- removal of the LD_TRACE_PRELINKING, and LD_USE_LOAD_BIAS, environment
- variables and their functionality in the dynamic loader.
-
-* The LD_TRACE_PRELINKING environment variable has been removed. Similar
- functionality to obtain the program mapping address can be achieved by
- using LD_TRACE_LOADED_OBJECTS to value of 2.
-
-* The LD_USE_LOAD_BIAS has been removed. The variable was mainly used to
- support prelink PIE binaries.
-
-Changes to build and runtime requirements:
-
-* The audit module interface version LAV_CURRENT is increased to enable
- proper bind-now support. The loader now advertises via the la_symbind
- flags that PLT trace is not possible. New audit modules require the
- new dynamic loader supporing the latest LAV_CURRENT version. Old audit
- modules are still loaded for all targets except aarch64.
-
-* The audit interface on aarch64 is extended to support both the indirect
- result location register (x8) and NEON Q register. Old audit modules are
- rejected by the loader. Audit modules must be rebuilt to use the newer
- structure sizes and the latest module interface version for LAV_CURRENT.
-
-Security related changes:
-
- CVE-2022-23219: Passing an overlong file name to the clnt_create
- legacy function could result in a stack-based buffer overflow when
- using the "unix" protocol. Reported by Martin Sebor.
-
- CVE-2022-23218: Passing an overlong file name to the svcunix_create
- legacy function could result in a stack-based buffer overflow.
-
- CVE-2021-3998: Passing a path longer than PATH_MAX to the realpath
- function could result in a memory leak and potential access of
- uninitialized memory. Reported by Qualys.
-
- CVE-2021-3999: Passing a buffer of size exactly 1 byte to the getcwd
- function may result in an off-by-one buffer underflow and overflow
- when the current working directory is longer than PATH_MAX and also
- corresponds to the / directory through an unprivileged mount
- namespace. Reported by Qualys.
-
-The following bugs are resolved with this release:
-
- [12889] nptl: Race condition in pthread_kill
- [14232] nptl: tst-cancel7 and tst-cancelx7 race condition
- [14913] libc: [mips] Clean up MIPS 64-bit register-dump.h output
- [15310] dynamic-link: _dl_sort_fini is O(n^3) causing slow exit when
- many dsos
- [15333] libc: Use 64-bit stat functions in installed programs
- [15533] dynamic-link: LD_AUDIT introduces an avoidable performance
- degradation
- [15971] dynamic-link: No interface for debugger access to libraries
- loaded with dlmopen
- [17318] locale: [RFE] Provide a C.UTF-8 locale by default
- [17645] dynamic-link: RFE: Improve performance of dynamic loader for
- deeply nested DSO dependencies.
- [19193] nptl: pthread_kill, pthread_cancel return ESRCH for a thread
- ID whose lifetime has not ended
- [22542] network: buffer overflow in sunrpc clnt_create
- (CVE-2022-23219)
- [22716] malloc: [PATCH] mtrace.pl: use TRACE_PRELINKING instead of
- TRACE_LOADED_OBJECTS
- [25947] malloc: memory leak in muntrace
- [26045] math: fmaxf(inf, nan) does not always work
- [26108] math: exp10() has problems with <tgmath.h>
- [26779] build: benign use after realloc at localealias.c:329
- [27609] dynamic-link: [2.32/2.33/2.34 Regression] In elf/dl-open.c
- (_dl_open) we might use __LM_ID_CALLER to index GL(dl_ns)[]
- [27945] build: build-many-glibcs.py doesn't configure GCC with
- --enable-initfini-array
- [27991] build: x86: sysdeps/x86/configure.ac breaks when
- libc_cv_include_x86_isa_level is loaded from cache
- [28036] nptl: Incorrect types for pthread_mutexattr_set/getrobust_np
- in __REDIRECT_NTH macro
- [28061] dynamic-link: A failing dlmopen called by an auditor crashed
- [28062] dynamic-link: Suppress audit calls when a (new) namespace is
- empty
- [28126] libc: nftw aborts for paths longer than PATH_MAX
- [28129] dynamic-link: Unnecessary check DT_DEBUG in ld.so
- [28153] libc: [test] gmon/tst-gmon-gprof* may have a f3 line when
- built with ld.lld
- [28182] libc: _TIME_BITS=64 in C++ has issues with fcntl, ioctl, prctl
- [28185] math: Inaccurate j0f function (again)
- [28199] locale: iconvconfig prefix flag behaves differently in glibc
- 2.34
- [28203] dynamic-link: aarch64: elf_machine_{load_address,dynamic}
- should drop _GLOBAL_OFFSET_TABLE_[0] in favor of __ehdr_start for
- robustness
- [28213] librt: NULL pointer dereference in mq_notify (CVE-2021-38604)
- [28223] libc: mips: clone does not align stack
- [28253] dynamic-link: Missing colon in LD_SHOW_AUXV output after
- AT_MINSIGSTKSZ
- [28256] malloc: Conditional jump or move depends on uninitialised
- value(s) in __GI___tunables_init
- [28260] build: io/tst-closefrom, misc/tst-close_range, posix/tst-
- spawn5 fail if stray fds are open
- [28310] libc: Do not use affinity mask for sysconf
- (_SC_NPROCESSORS_CONF)
- [28338] time: undefined behavior in __tzfile_compute with oddball TZif
- file
- [28340] dynamic-link: ld.so crashes while loading a DSO with a read-
- only dynamic section
- [28349] libc: Segfault for ping -R on qemux86 caused by recvmsg()
- [28350] libc: ping receives SIGABRT on lib32-qemux86-64 caused by
- recvmsg()
- [28353] network: Race condition on __opensock
- [28357] dynamic-link: deadlock between pthread_create and ctors
- [28358] math: f64xdivf128 and f64xmulf128 spurious underflows
- [28361] nptl: Fix for bug 12889 causes setxid deadlock
- [28368] build: -Waddress instances in stdio-common/vfprintf-internal.c
- [28390] localedata: Update locale data to Unicode 14.0.0
- [28397] math: tgmath.h should not define fmaxmag, fminmag macros for
- C2X
- [28400] libc: [2.35 Regression] string/test-strncasecmp: cannot set
- locale "en_US.UTF-8"
- [28407] nptl: pthread_kill assumes that kill (getpid ()) is equivalent
- to tgkill (getpid (), gettid())
- [28455] dynamic-link: -Wl,--enable-new-dtags doesn't work
- [28457] dynamic-link: Missing reldepmod4.so dependency for
- globalmod1.so
- [28469] time: linux: struct timex is not correctly set for 32-bit
- systems with TIMESIZE=64
- [28470] regex: Buffer read overrun in regular expression searching
- [28475] string: Incorrect access attribute on memfrob
- [28524] libc: Conversion from ISO-2022-JP-3 with iconv may emit
- spurious NUL character on state reset
- [28532] libc: powerpc64[le]: CFI for assembly templated syscalls is
- incorrect
- [28550] dynamic-link: FAIL: tst-dso-
- ordering9_112-ecbda(GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1)
- execution test
- [28554] build: Undefined generate-md5
- [28572] libc: Misaligned accesses in test-memcpy and test-mempcpy on
- hppa
- [28607] nptl: Masked signals are delivered on thread exit
- [28624] libc: openjdk 8/9 assume uni processor and gets stuck due to
- lack of cpu counting /proc fallback with glibc 2.34
- [28646] string: [2.35 Regression] mock -r fedora-36-x86_64
- /tmp/java-1.8.0-openjdk-1.8.0.312.b07-2.fc36.src.rpm& fails to build
- [28648] dynamic-link: Running ld.so on statically linked binaries
- crashes
- [28656] dynamic-link: LD_PREFER_MAP_32BIT_EXEC no longer works due to
- binutils changes
- [28676] dynamic-link: p_align on PT_LOAD segment in DSO isn't honored
- [28678] nptl: nptl/tst-create1 hangs sporadically
- [28688] dynamic-link: PT_LOAD p_align check is too strict
- [28700] nss: "dns [!UNAVAIL=return] files" default for hosts database
- is not useful
- [28707] time: assert in tzfile.c __tzfile_read striking with truncated
- timezones generated by tzcode-2021d and later
- [28713] math: GCC 12 miscompiles libm
- [28732] dynamic-link: FAIL: elf/tst-dl_find_object
- [28738] build: LIBC_LINKER_FEATURE doesn't work on linker -z option
- [28745] dynamic-link: _dl_find_object miscompilation on powerpc64le
- [28746] libc: _FORTIFY_SOURCE does not work for stpcpy
- [28749] libc: Inconsistency detected by ld.so: rtld.c: 1632: dl_main:
- Assertion `GL(dl_rtld_map).l_libname' failed!
- [28755] string: overflow bug in wcsncmp_avx2 and wcsncmp_evex
- [28757] nptl: GDB printer tests failed with new GDB
- [28765] math: x86_64 libmvec atan2 accuracy
- [28766] manual: Document libmvec accuracy
- [28768] network: Buffer overflow in svcunix_create with long pathnames
- (CVE-2022-23218)
- [28769] libc: Off-by-one buffer overflow/underflow in getcwd()
- (CVE-2021-3999)
- [28770] libc: Unexpected return value from realpath() for too long
- results (CVE-2021-3998)
- [28771] libc: %ebx optimization macros are incompatible with .altmacro
- in Systemtap probes
- [28780] build: --disable-default-pie doesn't work on static programs
- [28782] libc: x86-64 ISA level for glibc itself is always
- x86-64-baseline
- [28792] glob: possible wrong behaviour with patterns with double [
- with no closing ]
- [28837] libc: FAIL: socket/tst-socket-timestamp-compat
- [28847] locale: Empty mon_decimal_point in LC_MONETARY results in non-
- empty mon_decimal_point_wc
-
-
-Version 2.34
-
-Major new features:
-
-* In order to support smoother in-place-upgrades and to simplify
- the implementation of the runtime all functionality formerly
- implemented in the libraries libpthread, libdl, libutil, libanl has
- been integrated into libc. New applications do not need to link with
- -lpthread, -ldl, -lutil, -lanl anymore. For backwards compatibility,
- empty static archives libpthread.a, libdl.a, libutil.a, libanl.a are
- provided, so that the linker options keep working. Applications which
- have been linked against glibc 2.33 or earlier continue to load the
- corresponding shared objects (which are now empty). The integration
- of those libraries into libc means that additional symbols become
- available by default. This can cause applications that contain weak
- references to take unexpected code paths that would only have been
- used in previous glibc versions when e.g. preloading libpthread.so.0,
- potentially exposing application bugs.
-
-* When _DYNAMIC_STACK_SIZE_SOURCE or _GNU_SOURCE are defined,
- PTHREAD_STACK_MIN is no longer constant and is redefined to
- sysconf(_SC_THREAD_STACK_MIN). This supports dynamic sized register
- sets for modern architectural features like Arm SVE.
-
-* Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _DYNAMIC_STACK_SIZE_SOURCE
- or _GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer
- constant on Linux. MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
- and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ). This supports
- dynamic sized register sets for modern architectural features like
- Arm SVE.
-
-* The dynamic linker implements the --list-diagnostics option, printing
- a dump of information related to IFUNC resolver operation and
- glibc-hwcaps subdirectory selection.
-
-* On Linux, the function execveat has been added. It operates similar to
- execve and it is is already used to implement fexecve without requiring
- /proc to be mounted. However, different than fexecve, if the syscall is not
- supported by the kernel an error is returned instead of trying a fallback.
-
-* The ISO C2X function timespec_getres has been added.
-
-* The feature test macro __STDC_WANT_IEC_60559_EXT__, from draft ISO
- C2X, is supported to enable declarations of functions defined in Annex F
- of C2X. Those declarations are also enabled when
- __STDC_WANT_IEC_60559_BFP_EXT__, as specified in TS 18661-1, is
- defined, and when _GNU_SOURCE is defined.
-
-* On powerpc64*, glibc can now be compiled without scv support using the
- --disable-scv configure option.
-
-* Add support for 64-bit time_t on configurations like x86 where time_t
- is traditionally 32-bit. Although time_t still defaults to 32-bit on
- these configurations, this default may change in future versions.
- This is enabled with the _TIME_BITS preprocessor macro set to 64 and is
- only supported when LFS (_FILE_OFFSET_BITS=64) is also enabled. It is
- only enabled for Linux and the full support requires a minimum kernel
- version of 5.1.
-
-* The main gconv-modules file in glibc now contains only a small set of
- essential converter modules and the rest have been moved into a supplementary
- configuration file gconv-modules-extra.conf in the gconv-modules.d directory
- in the same GCONV_PATH. Similarly, external converter modules directories
- may have supplementary configuration files in a gconv-modules.d directory
- with names ending with .conf to logically classify the converter modules in
- that directory.
-
-* On Linux, a new tunable, glibc.pthread.stack_cache_size, can be used
- to configure the size of the thread stack cache.
-
-* The function _Fork has been added as an async-signal-safe fork replacement
- since Austin Group issue 62 droped the async-signal-safe requirement for
- fork (and it will be included in the future POSIX standard). The new _Fork
- function does not run any atfork function neither resets any internal state
- or lock (such as the malloc one), and only sets up a minimal state required
- to call async-signal-safe functions (such as raise or execve). This function
- is currently a GNU extension.
-
-* On Linux, the close_range function has been added. It allows efficiently
- closing a range of file descriptors on recent kernels (version 5.9).
-
-* The function closefrom has been added. It closes all file descriptors
- greater than or equal to a given integer. This function is a GNU extension,
- although it is also present in other systems.
-
-* The posix_spawn_file_actions_addclosefrom_np function has been added,
- enabling posix_spawn and posix_spawnp to close all file descriptors greater
- than or equal to a given integer. This function is a GNU extension,
- although Solaris also provides a similar function.
-
-* When invoked explicitly, the dynamic linker now uses the kernel to
- execute programs that do not have any dynamic dependency (that is,
- they are statically linked). This feature is Linux-specific.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The function pthread_mutex_consistent_np has been deprecated; programs
- should use the equivalent standard function pthread_mutex_consistent
- instead.
-
-* The function pthread_mutexattr_getrobust_np has been deprecated;
- programs should use the equivalent standard function
- pthread_mutexattr_getrobust instead.
-
-* The function pthread_mutexattr_setrobust_np has been deprecated;
- programs should use the equivalent standard function
- pthread_mutexattr_setrobust instead.
-
-* The function pthread_yield has been deprecated; programs should use
- the equivalent standard function sched_yield instead.
-
-* The function inet_neta declared in <arpa/inet.h> has been deprecated.
-
-* Various rarely-used functions declared in <resolv.h> and
- <arpa/nameser.h> have been deprecated. Applications are encouraged to
- use dedicated DNS processing libraries if applicable. For <resolv.h>,
- this affects the functions dn_count_labels, fp_nquery, fp_query,
- fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname,
- p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time,
- p_type, putlong, putshort, res_hostalias, res_isourserver,
- res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos,
- sym_ston. For <arpa/nameser.h>, the functions ns_datetosecs,
- ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename,
- ns_sprintrr, ns_sprintrrf, ns_subdomain have been deprecated.
-
-* Various symbols previously defined in libresolv have been moved to libc
- in order to prepare for libresolv moving entirely into libc (see earlier
- entry for merging libraries into libc). The symbols __dn_comp,
- __dn_expand, __dn_skipname, __res_dnok, __res_hnok, __res_mailok,
- __res_mkquery, __res_nmkquery, __res_nquery, __res_nquerydomain,
- __res_nsearch, __res_nsend, __res_ownok, __res_query, __res_querydomain,
- __res_search, __res_send formerly in libresolv have been renamed and no
- longer have a __ prefix. They are now available in libc.
-
-* The pthread cancellation handler is now installed with SA_RESTART and
- pthread_cancel will always send the internal SIGCANCEL on a cancellation
- request. It should not be visible to applications since the cancellation
- handler should either act upon cancellation (if asynchronous cancellation
- is enabled) or ignore the cancellation internal signal. However there are
- buggy kernel interfaces (for instance some CIFS versions) that could still
- see a spurious EINTR error when cancellation interrupts a blocking syscall.
-
-* Previously, glibc installed its various shared objects under versioned
- file names such as libc-2.33.so. The ABI sonames (e.g., libc.so.6)
- were provided as symbolic links. Starting with glibc 2.34, the shared
- objects are installed under their ABI sonames directly, without
- symbolic links. This increases compatibility with distribution
- package managers that delete removed files late during the package
- upgrade or downgrade process.
-
-* The symbols mallwatch and tr_break are now deprecated and no longer used in
- mtrace. Similar functionality can be achieved by using conditional
- breakpoints within mtrace functions from within gdb.
-
-* The __morecore and __after_morecore_hook malloc hooks and the default
- implementation __default_morecore have been removed from the API. Existing
- applications will continue to link against these symbols but the interfaces
- no longer have any effect on malloc.
-
-* Debugging features in malloc such as the MALLOC_CHECK_ environment variable
- (or the glibc.malloc.check tunable), mtrace() and mcheck() have now been
- disabled by default in the main C library. Users looking to use these
- features now need to preload a new debugging DSO libc_malloc_debug.so to get
- this functionality back.
-
-* The deprecated functions malloc_get_state and malloc_set_state have been
- moved from the core C library into libc_malloc_debug.so. Legacy applications
- that still use these functions will now need to preload libc_malloc_debug.so
- in their environment using the LD_PRELOAD environment variable.
-
-* The deprecated memory allocation hooks __malloc_hook, __realloc_hook,
- __memalign_hook and __free_hook are now removed from the API. Compatibility
- symbols are present to support legacy programs but new applications can no
- longer link to these symbols. These hooks no longer have any effect on glibc
- functionality. The malloc debugging DSO libc_malloc_debug.so currently
- supports hooks and can be preloaded to get this functionality back for older
- programs. However this is a transitional measure and may be removed in a
- future release of the GNU C Library. Users may port away from these hooks by
- writing and preloading their own malloc interposition library.
-
-Changes to build and runtime requirements:
-
-* On Linux, the shm_open, sem_open, and related functions now expect the
- file shared memory file system to be mounted at /dev/shm. These functions
- no longer search among the system's mount points for a suitable
- replacement if /dev/shm is not available.
-
-Security related changes:
-
- CVE-2021-27645: The nameserver caching daemon (nscd), when processing
- a request for netgroup lookup, may crash due to a double-free,
- potentially resulting in degraded service or Denial of Service on the
- local system. Reported by Chris Schanzle.
-
- CVE-2021-33574: The mq_notify function has a potential use-after-free
- issue when using a notification type of SIGEV_THREAD and a thread
- attribute with a non-default affinity mask.
-
- CVE-2021-35942: The wordexp function may overflow the positional
- parameter number when processing the expansion resulting in a crash.
- Reported by Philippe Antoine.
-
-The following bugs are resolved with this release:
-
- [4737] libc: fork is not async-signal-safe
- [5781] math: Slow dbl-64 sin/cos/sincos for special values
- [10353] libc: Methods for deleting all file descriptors greater than
- given integer (closefrom)
- [14185] glob: fnmatch() fails when '*' wildcard is applied on the file
- name containing multi-byte character(s)
- [14469] math: Inaccurate j0f function
- [14470] math: Inaccurate j1f function
- [14471] math: Inaccurate y0f function
- [14472] math: Inaccurate y1f function
- [14744] nptl: kill -32 $pid or kill -33 $pid on a process cancels a
- random thread
- [15271] dynamic-link: dlmopen()ed shared library with LM_ID_NEWLM
- crashes if it fails dlsym() twice
- [15648] nptl: multiple definition of `__lll_lock_wait_private'
- [16063] nptl: Provide a pthread_once variant in libc directly
- [17144] libc: syslog is not thread-safe if NO_SIGPIPE is not defined
- [17145] libc: syslog with LOG_CONS leaks console file descriptor
- [17183] manual: description of ENTRY struct in <search.h> in glibc
- manual is incorrect
- [18435] nptl: pthread_once hangs when init routine throws an exception
- [18524] nptl: Missing calloc error checking in
- __cxa_thread_atexit_impl
- [19329] dynamic-link: dl-tls.c assert failure at concurrent
- pthread_create and dlopen
- [19366] nptl: returning from a thread should disable cancellation
- [19511] nptl: 8MB memory leak in pthread_create in case of failure
- when non-root user changes priority
- [20802] dynamic-link: getauxval NULL pointer dereference after static
- dlopen
- [20813] nptl: pthread_exit is inconsistent between libc and libpthread
- [22057] malloc: malloc_usable_size is broken with mcheck
- [22668] locale: LC_COLLATE: the last character of ellipsis is not
- ordered correctly
- [23323] libc: [RFE] CSU startup hardening.
- [23328] malloc: Remove malloc hooks and ensure related APIs return no
- data.
- [23462] dynamic-link: Static binary with dynamic string tokens ($LIB,
- $PLATFORM, $ORIGIN) crashes
- [23489] libc: "gcc -lmcheck" aborts on free when using posix_memalign
- [23554] nptl: pthread_getattr_np reports wrong stack size with
- MULTI_PAGE_ALIASING
- [24106] libc: Bash interpreter in ldd script is taken from host
- [24773] dynamic-link: dlerror in an secondary namespace does not use
- the right free implementation
- [25036] localedata: Update collation order for Swedish
- [25383] libc: where_is_shmfs/__shm_directory/SHM_GET_NAME may cause
- shm_open to pick wrong directory
- [25680] dynamic-link: ifuncmain9picstatic and ifuncmain9picstatic
- crash in IFUNC resolver due to stack canary (--enable-stack-
- protector=all)
- [26874] build: -Warray-bounds in _IO_wdefault_doallocate
- [26983] math: [x86_64] x86_64 tgamma has too large ULP error
- [27111] dynamic-link: pthread_create and tls access use link_map
- objects that may be concurrently freed by dlclose
- [27132] malloc: memusagestat is linked to system librt, leading to
- undefined symbols on major version upgrade
- [27136] dynamic-link: dtv setup at thread creation may leave an entry
- uninitialized
- [27249] libc: libSegFault.so does not output signal number properly
- [27304] nptl: pthread_cond_destroy does not pass private flag to futex
- system calls
- [27318] dynamic-link: glibc fails to load binaries when built with
- -march=sandybridge: CPU ISA level is lower than required
- [27343] nss: initgroups() SIGSEGVs when called on a system without
- nsswich.conf (in a chroot)
- [27346] dynamic-link: x86: PTWRITE feature check is missing
- [27389] network: NSS chroot hardening causes regressions in chroot
- deployments
- [27403] dynamic-link: aarch64: tlsdesc htab is not freed on dlclose
- [27444] libc: sysconf reports unsupported option (-1) for
- _SC_LEVEL1_ICACHE_LINESIZE on X86 since v2.33
- [27462] nscd: double-free in nscd (CVE-2021-27645)
- [27468] malloc: aarch64: realloc crash with heap tagging: FAIL:
- malloc/tst-malloc-thread-fail
- [27498] dynamic-link: __dl_iterate_phdr lacks unwinding information
- [27511] libc: S390 memmove assumes Vector Facility when MIE Facility 3
- is present
- [27522] glob: glob, glob64 incorrectly marked as __THROW
- [27555] dynamic-link: Static tests fail with --enable-stack-
- protector=all
- [27559] libc: fstat(AT_FDCWD) succeeds (it shouldn't) and returns
- information for the current directory
- [27577] dynamic-link: elf/ld.so --help doesn't work
- [27605] libc: tunables can't control xsave/xsavec selection in
- dl_runtime_resolve_*
- [27623] libc: powerpc: Missing registers in sc[v] clobbers list
- [27645] libc: [linux] sysconf(_SC_NPROCESSOR...) breaks down on
- containers
- [27646] dynamic-link: Linker error for non-existing NSS symbols (e.g.
- _nss_files_getcanonname_r) from within a dlmopen namespace.
- [27648] libc: FAIL: misc/tst-select
- [27650] stdio: vfscanf returns too early if a match is longer than
- INT_MAX
- [27651] libc: Performance regression after updating to 2.33
- [27655] string: Wrong size calculation in string/test-strnlen.c
- [27706] libc: select fails to update timeout on error
- [27709] libc: arm: FAIL: debug/tst-longjmp_chk2
- [27721] dynamic-link: x86: ld_audit ignores bind now for TLSDESC and
- tries resolving them lazily
- [27744] nptl: Support different libpthread/ld.so load orders in
- libthread_db
- [27749] libc: Data race __run_exit_handlers
- [27761] libc: getconf: Segmentation fault when passing '-vq' as
- argument
- [27832] nss: makedb.c:797:7: error: 'writev' specified size 4294967295
- exceeds maximum object size 2147483647
- [27870] malloc: MALLOC_CHECK_ causes realloc(valid_ptr, TOO_LARGE) to
- not set ENOMEM
- [27872] build: Obsolete configure option --enable-stackguard-
- randomization
- [27873] build: tst-cpu-features-cpuinfo fail when building on AMD cpu
- [27882] localedata: Use U+00AF MACRON in more EBCDIC charsets
- [27892] libc: powerpc: scv ABI error handling fails to check
- IS_ERR_VALUE
- [27896] nptl: mq_notify does not handle separately allocated thread
- attributes (CVE-2021-33574)
- [27901] libc: TEST_STACK_ALIGN doesn't work
- [27902] libc: The x86-64 clone wrapper fails to align child stack
- [27914] nptl: Install SIGSETXID handler with SA_ONSTACK
- [27939] libc: aarch64: clone does not align the stack
- [27968] libc: s390x: clone does not align the stack
- [28011] libc: Wild read in wordexp (parse_param) (CVE-2021-35942)
- [28024] string: s390(31bit): Wrong result of memchr (MEMCHR_Z900_G5)
- with n >= 0x80000000
- [28028] malloc: malloc: tcache shutdown sequence does not work if the
- thread never allocated anything
- [28033] libc: Need to check RTM_ALWAYS_ABORT for RTM
- [28064] string: x86_64:wcslen implementation list has wcsnlen
- [28067] libc: FAIL: posix/tst-spawn5
- [28068] malloc: FAIL: malloc/tst-mallocalign1-mcheck
- [28071] time: clock_gettime, gettimeofday, time lost vDSO acceleration
- on older kernels
- [28075] nis: Out-of-bounds static buffer read in nis_local_domain
- [28089] build: tst-tls20 fails when linker defaults to --as-needed
- [28090] build: elf/tst-cpu-features-cpuinfo-static fails on certain
- AMD64 cpus
- [28091] network: ns_name_skip may return 0 for domain names without
- terminator
-
-
-Version 2.33
-
-Major new features:
-
-* The dynamic linker accepts the --list-tunables argument which prints
- all the supported tunables. This option is disable if glibc is
- configured with tunables disabled (--enable-tunables=no).
-
-* The dynamic linker accepts the --argv0 argument and provides opportunity
- to change argv[0] string.
-
-* The dynamic linker loads optimized implementations of shared objects
- from subdirectories under the glibc-hwcaps directory on the library
- search path if the system's capabilities meet the requirements for
- that subdirectory. Initially supported subdirectories include
- "power9" and "power10" for the powerpc64le-linux-gnu architecture,
- "z13", "z14", "z15" for s390x-linux-gnu, and "x86-64-v2", "x86-64-v3",
- "x86-64-v4" for x86_64-linux-gnu. In the x86_64-linux-gnu case, the
- subdirectory names correspond to the vendor-independent x86-64
- microarchitecture levels defined in the x86-64 psABI supplement.
-
-* The new --help option of the dynamic linker provides usage and
- information and library search path diagnostics.
-
-* The mallinfo2 function is added to report statistics as per mallinfo,
- but with larger field widths to accurately report values that are
- larger than fit in an integer.
-
-* Add <sys/platform/x86.h> to provide query macros for x86 CPU features.
-
-* Support for the RISC-V ISA running on Linux has been expanded to run on
- 32-bit hardware. This is supported for the following ISA and ABI pairs:
-
- - rv32imac ilp32
- - rv32imafdc ilp32
- - rv32imafdc ilp32d
-
- The 32-bit RISC-V port requires at least Linux 5.4, GCC 7.1 and binutils
- 2.28.
-
-* A new fortification level _FORTIFY_SOURCE=3 is available. At this level,
- glibc may use additional checks that may have an additional performance
- overhead. At present these checks are available only on LLVM 9 and later.
- The latest GCC available at this time (10.2) does not support this level of
- fortification.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The mallinfo function is marked deprecated. Callers should call
- mallinfo2 instead.
-
-* When dlopen is used in statically linked programs, alternative library
- implementations from HWCAP subdirectories are no longer loaded.
- Instead, the default implementation is used.
-
-* The deprecated <sys/vtimes.h> header and the function vtimes have been
- removed. To support old binaries, the vtimes function continues to exist
- as a compatibility symbol. Applications should use the getrlimit or
- prlimit.
-
-* Following a change in the tzdata 2018a release upstream, the zdump
- program is now installed in the /usr/bin subdirectory. Previously,
- the /usr/sbin subdirectory was used.
-
-* On s390(x), the type float_t is now derived from the macro
- __FLT_EVAL_METHOD__ that is defined by the compiler, instead of being
- hardcoded to double. This does not affect the ABI of any libraries
- that are part of the GNU C Library, but may affect the ABI of other
- libraries that use this type in their interfaces. The new definition
- improves consistency with compiler behavior in many scenarios.
-
-* A future version of glibc will stop loading shared objects from the
- "tls" subdirectories on the library search path, the subdirectory that
- corresponds to the AT_PLATFORM system name, and also stop employing
- the legacy AT_HWCAP search mechanism. Applications should switch to
- the new glibc-hwcaps mechanism instead; if they do not do that, only
- the baseline version (directly from the search path directory) will be
- loaded.
-
-Changes to build and runtime requirements:
-
-* On Linux, the system administrator needs to configure /dev/pts with
- the intended access modes for pseudo-terminals. glibc no longer
- attemps to adjust permissions of terminal devices. The previous glibc
- defaults ("tty" group, user read/write and group write) already
- corresponded to what most systems used, so that grantpt did not
- perform any adjustments.
-
-* On Linux, the posix_openpt and getpt functions no longer attempt to
- use legacy (BSD) pseudo-terminals and assume that if /dev/ptmx exists
- (and pseudo-terminals are supported), a devpts file system is mounted
- on /dev/pts. Current systems already meet these requirements.
-
-* s390x requires GCC 7.1 or newer. See gcc Bug 98269.
-
-Security related changes:
-
- CVE-2021-3326: An assertion failure during conversion from the
- ISO-20220-JP-3 character set using the iconv function has been fixed.
- This assertion was triggered by certain valid inputs in which the
- converted output contains a combined sequence of two wide characters
- crossing a buffer boundary. Reported by Tavis Ormandy.
-
- CVE-2020-27618: An infinite loop has been fixed in the iconv program when
- invoked with input containing redundant shift sequences in the IBM1364,
- IBM1371, IBM1388, IBM1390, or IBM1399 character sets.
-
- CVE-2020-29562: An assertion failure has been fixed in the iconv function
- when invoked with UCS4 input containing an invalid character.
-
- CVE-2019-25013: A buffer overflow has been fixed in the iconv function when
- invoked with EUC-KR input containing invalid multibyte input sequences.
-
-The following bugs are resolved with this release:
-
- [10635] libc: realpath portability patches
- [16124] dynamic-link: ld.so should allow to change argv[0]
- [17924] malloc: 'free' should not set errno
- [18683] libc: Linux faccessat implementation can incorrectly ignore
- AT_EACCESS
- [22899] libc: Use 64-bit readdir() in generic POSIX getcwd()
- [23091] hurd: missing waitid support
- [23249] libc: Epyc and other current AMD CPUs do not select the
- "haswell" platform subdirectory
- [24080] dynamic-link: Definition of "haswell" platform is inconsistent
- with GCC
- [24202] libc: m68k setjmp() saves incorrect 'a5' register in --enable-
- stack-protector=all
- [24941] libc: Make grantpt usable after multi-threaded fork in more
- cases
- [24970] libc: realpath mishandles EOVERFLOW; stat not needed anyway
- [24973] locale: iconv encounters segmentation fault when converting
- 0x00 0xfe in EUC-KR to UTF-8 (CVE-2019-25013)
- [25399] string: undefined reference to `__warn_memset_zero_len' when
- changing gnuc version
- [25859] libc: glibc parser for /sys/devices/system/cpu/online is
- incorrect
- [25938] dynamic-link: ld.so.cache should store meaning of hwcap mask
- bits
- [25971] libc: s390 bits/hwcap.h out of sync with kernel
- [26053] libc: unlockpt fails with ENOTTY for non-ptmx descriptors
- [26100] libc: Race in syslog(3) with regards to tag printing.
- [26124] libc: Export <cpu-features.h>
- [26130] nscd: Inconsistent nscd cache during pruning
- [26203] libc: GLRO(dl_x86_cpu_features) may not be intialized
- [26224] locale: iconv hangs when converting some invalid inputs from
- several IBM character sets (CVE-2020-27618)
- [26341] libc: realpath cyclically call __alloca(path_max) to consume
- too much stack space
- [26343] manual: invalid documented return type for strerrorname_np(),
- strerrordesc_np(), sigdescr_np(), sigabbrev_np()
- [26376] libc: Namespace violation in stdio.h and sys/stat.h if build
- with optimization.
- [26383] locale: bind_textdomain_codeset doesn't accept //TRANSLIT
- anymore
- [26394] time: [2.33 Regression] FAIL: nptl/tst-join14
- [26534] math: libm.so 2.32 SIGILL in pow() due to FMA4 instruction on
- non-FMA4 system
- [26552] dynamic-link: CPU_FEATURE_USABLE_P should be more conservative
- [26553] libc: mtx_init allows type set to "mtx_recursive" only
- [26555] string: strerrorname_np does not return the documented value
- [26592] libc: pointer arithmetic overflows in realpath
- [26600] network: Transaction ID collisions cause slow DNS lookups in
- getaddrinfo
- [26606] libc: [2.33 Regression] pselect is broken on x32
- [26615] libc: powerpc: libc segfaults when LD_PRELOADed with libgcc
- [26620] glob: fnmatch with collating symbols results in segmentation
- fault
- [26625] libc: [2.33 Regression] CET is disabled
- [26636] libc: 32-bit shmctl(IPC_INFO) crashes when shminfo struct is
- at the end of a memory mapping
- [26637] libc: semctl SEM_STAT_ANY fails to pass the buffer specified
- by the caller to the kernel
- [26639] libc: msgctl IPC_INFO and MSG_INFO return garbage
- [26647] build: [-Werror=array-parameter=] due to different
- declarations for __sigsetjmp
- [26648] libc: mkstemp is likely to fail on systems with non-stricly-
- monotonic clocks
- [26649] stdio: printf should handle non-normal x86 long double numbers
- gracefully (CVE-2020-29573)
- [26686] build: -Warray-parameter instances building with GCC 11
- [26687] build: -Warray-bounds instances building with GCC 11
- [26690] stdio: Aliasing violation in __vfscanf_internal
- [26691] nptl: Use a minimum guard size of 64 KiB on aarch64
- [26726] build: GCC warning calling new_composite_name with an array of
- one element
- [26736] libc: FAIL: misc/tst-sysvshm-linux
- [26737] libc: Random FAIL: rt/tst-shm
- [26791] libc: Missing O_CLOEXEC in sysconf.c
- [26798] dynamic-link: aarch64: variant PCS symbols may be incorrectly
- lazy bound
- [26801] nptl: pthread_mutex_clocklock with CLOCK_MONOTONIC can fail on
- PI mutexes
- [26818] string: aarch64: string tests may run ifunc variants that are
- not safe
- [26821] libc: Memory leak test failures on Fedora 33
- [26824] libc: FAIL: elf/tst-cpu-features-supports with recent trunk:
- FSGSBASE/LM/RDRAND check failure
- [26833] time: adjtime() with delta == NULL segfaults on armv7 32bit
- platform
- [26853] libc: aarch64: Missing unwind information in statically linked
- startup code
- [26923] locale: Assertion failure in iconv when converting invalid
- UCS4 (CVE-2020-29562)
- [26926] dynamic-link: aarch64: library dependencies are not bti
- protected
- [26932] libc: sh: Multiple floating point functions defined as stubs
- only since 2.31
- [26964] nptl: pthread_mutex_timedlock returning EAGAIN after futex is
- locked
- [26988] dynamic-link: aarch64: BTI mprotect address is not page
- aligned
- [27002] build: libc_freeres_fn build failure with GCC 11
- [27004] dynamic-link: ld.so is miscompiled by GCC 11
- [27008] dynamic-link: ld.so.cache should have endianness markup
- [27042] libc: [alpha] anonymous union in struct stat confuses
- detection logic
- [27053] libc: Conformance regression in system(3) (and probably also
- pclose(3))
- [27072] dynamic-link: static pie ifunc resolvers run before hwcap is
- setup
- [27077] network: Do not reload /etc/nsswitch.conf from chroot
- [27083] libc: Unsafe unbounded alloca in addmntent
- [27104] dynamic-link: The COMMON_CPUID_INDEX_MAX handshake does not
- work
- [27130] string: "rep movsb" performance issue
- [27150] libc: alpha: wait4() is unavailable in static linking
- [27177] dynamic-link:
- GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on doesn't
- work
- [27222] dynamic-link: Incorrect sysdeps/x86/tst-cpu-features-cpuinfo.c
- [27237] malloc: deadlock in malloc/tst-malloc-stats-cancellation
- [27256] locale: Assertion failure in ISO-2022-JP-3 gconv module
- related to combining characters (CVE-2021-3326)
-
-
-Version 2.32
-
-Major new features:
-
-* Unicode 13.0.0 Support: Character encoding, character type info, and
- transliteration tables are all updated to Unicode 13.0.0, using
- generator scripts contributed by Mike FABIAN (Red Hat).
-
-* New locale added: ckb_IQ (Kurdish/Sorani spoken in Iraq)
-
-* Support for Synopsys ARC HS cores (ARCv2 ISA) running Linux has been
- added. This port requires at least binutils-2.32, gcc-8.3 and Linux-5.1.
- Three ABIs are supported:
-
- - arc-linux-gnu
- - arc-linux-gnuhf
- - arceb-linux-gnu
-
- The arc* ABIs are little-endian while arceb is big-endian. All ABIs use
- 64-bit time (y2038 safe) and 64-bit file offsets (LFS default).
-
-* The GNU C Library now loads audit modules listed in the DT_AUDIT and
- DT_DEPAUDIT dynamic section entries of the main executable.
-
-* powerpc64le supports IEEE128 long double libm/libc redirects when
- using -mabi=ieeelongdouble to compile C code on supported GCC
- toolchains. It is recommended to use GCC 8 or newer when testing
- this option.
-
-* To help detect buffer overflows and other out-of-bounds accesses
- several APIs have been annotated with GCC 'access' attribute. This
- should help GCC 10 issue better warnings.
-
-* On Linux, functions pthread_attr_setsigmask_np and
- pthread_attr_getsigmask_np have been added. They allow applications
- to specify the signal mask of a thread created with pthread_create.
-
-* The GNU C Library now provides the header file <sys/single_threaded.h>
- which declares the variable __libc_single_threaded. Applications are
- encouraged to use this variable for single-thread optimizations,
- instead of weak references to symbols historically defined in
- libpthread.
-
-* The functions sigabbrev_np and sigdescr_np have been added. The
- sigabbrev_np function returns the abbreviated signal name (e.g. "HUP" for
- SIGHUP) while sigdescr_np returns a string describing the signal number
- (e.g "Hangup" for SIGHUP). Different than strsignal, sigdescr_np does not
- attempt to translate the return description, both functions return
- NULL for an invalid signal number.
-
- They should be used instead of sys_siglist or sys_sigabbrev and they
- are both thread and async-signal safe. These functions are GNU extensions.
-
-* The functions strerrorname_np and strerrordesc_np have been added. The
- strerroname_np function returns error number name (e.g. "EINVAL" for EINVAL)
- while strerrordesc_np returns a string describing the error number
- (e.g "Invalid argument" for EINVAL). Different than strerror,
- strerrordesc_np does not attempt to translate the return description, both
- functions return NULL for an invalid error number.
-
- They should be used instead of sys_errlist and sys_nerr, both are
- thread and async-signal safe. These functions are GNU extensions.
-
-* AArch64 now supports standard branch protection security hardening
- in glibc when it is built with a GCC that is configured with
- --enable-standard-branch-protection (or if -mbranch-protection=standard
- flag is passed when building both GCC target libraries and glibc,
- in either case a custom GCC is needed). This includes branch target
- identification (BTI) and pointer authentication for return addresses
- (PAC-RET). They require armv8.5-a and armv8.3-a architecture
- extensions respectively for the protection to be effective,
- otherwise the used instructions are nops. User code can use PAC-RET
- without libc support, but BTI requires a libc that is built with BTI
- support, otherwise runtime objects linked into user code will not be
- BTI compatible.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* Remove configure option --enable-obsolete-rpc. Sun RPC is removed
- from glibc. This includes the rpcgen program, librpcsvc, and the Sun
- RPC header files. Backward compatibility for old programs is kept
- only for architectures and ABIs that have been added in or before
- glibc 2.31. New programs need to use TI-RPC
- <http://git.linux-nfs.org/?p=steved/libtirpc.git;a=summary> and
- rpcsvc-proto <https://github.com/thkukuk/rpcsvc-proto>.
-
-* Remove configure option --enable-obsolete-nsl. libnsl is only built
- as shared library for backward compatibility and the NSS modules "nis"
- and "nisplus" are not built at all and libnsl's headers aren't
- installed. This compatibility is kept only for architectures and ABIs
- that have been added in or before version 2.28. Replacement
- implementations based on TI-RPC, which additionally support IPv6, are
- available from <https://github.com/thkukuk/>. This change does not
- affect the "compat" NSS module, which does not depend on libnsl
- since 2.27 and thus can be used without NIS.
-
-* The deprecated <sys/sysctl.h> header and the sysctl function have been
- removed. To support old binaries, the sysctl function continues to
- exist as a compatibility symbol (on those architectures which had it),
- but always fails with ENOSYS. This reflects the removal of the system
- call from all architectures, starting with Linux 5.5.
-
-* The sstk function is no longer available to newly linked binaries.
- Its implementation always returned with a failure, and the function
- was not declared in any header file.
-
-* The legacy signal handling functions siginterrupt, sigpause, sighold,
- sigrelse, sigignore and sigset, and the sigmask macro have been
- deprecated. Applications should use the sigsuspend, sigprocmask and
- sigaction functions instead.
-
-* ldconfig now defaults to the new format for ld.so.cache. glibc has
- already supported this format for almost 20 years.
-
-* The deprecated arrays sys_siglist, _sys_siglist, and sys_sigabbrev
- are no longer available to newly linked binaries, and their declarations
- have been removed from <string.h>. They are exported solely as
- compatibility symbols to support old binaries. All programs should use
- strsignal instead.
-
-* The deprecated symbols sys_errlist, _sys_errlist, sys_nerr, and _sys_nerr
- are no longer available to newly linked binaries, and their declarations
- have been removed from <stdio.h>. They are exported solely as
- compatibility symbols to support old binaries. All programs should use
- strerror or strerror_r instead.
-
-* Both strerror and strerror_l now share the same internal buffer in the
- calling thread, meaning that the returned string pointer may be invalided
- or contents might be overwritten on subsequent calls in the same thread or
- if the thread is terminated. It makes strerror MT-safe.
-
-* Using weak references to libpthread functions such as pthread_create
- or pthread_key_create to detect the singled-threaded nature of a
- program is an obsolescent feature. Future versions of glibc will
- define pthread_create within libc.so.6 itself, so such checks will
- always flag the program as multi-threaded. Applications should check
- the __libc_single_threaded variable declared in
- <sys/single_threaded.h> instead.
-
-* The "files" NSS module no longer supports the "key" database (used for
- secure RPC). The contents of the /etc/publickey file will be ignored,
- regardless of the settings in /etc/nsswitch.conf. (This method of
- storing RPC keys only supported the obsolete and insecure AUTH_DES
- flavor of secure RPC.)
-
-* The __morecore and __after_morecore_hook malloc hooks and the default
- implementation __default_morecore have been deprecated. Applications
- should use malloc interposition to change malloc behavior, and mmap to
- allocate anonymous memory. A future version of glibc may require that
- applications which use the malloc hooks must preload a special shared
- object, to enable the hooks.
-
-* The hesiod NSS module has been deprecated and will be removed in a
- future version of glibc. System administrators are encouraged to
- switch to other approaches for networked account databases, such as
- LDAP.
-
-Changes to build and runtime requirements:
-
-* powerpc64le requires GCC 7.4 or newer. This is required for supporting
- long double redirects.
-
-Security related changes:
-
- CVE-2016-10228: An infinite loop has been fixed in the iconv program when
- invoked with the -c option and when processing invalid multi-byte input
- sequences. Reported by Jan Engelhardt.
-
- CVE-2020-10029: Trigonometric functions on x86 targets suffered from stack
- corruption when they were passed a pseudo-zero argument. Reported by Guido
- Vranken / ForAllSecure Mayhem.
-
- CVE-2020-1752: A use-after-free vulnerability in the glob function when
- expanding ~user has been fixed.
-
- CVE-2020-6096: A signed comparison vulnerability in the ARMv7 memcpy and
- memmove functions has been fixed. Discovered by Jason Royes and Samual
- Dytrych of the Cisco Security Assessment and Penetration Team (See
- TALOS-2020-1019).
-
-The following bugs are resolved with this release:
-
- [9809] localedata: ckb_IQ: new Kurdish Sorani locale
- [10441] manual: Backtraces code example lacks error checking
- [10815] librt: [timer_create / SIGEV_THREAD] signalmask of
- timer_sigev_thread dangerous
- [14231] stdio: stdio-common tests memory requirements
- [14578] libc: /proc-based emulation for lchmod, fchmodat
- [16272] dynamic-link: dlopen()ing a DT_FILTER library crashes if
- filtee has constructor
- [19519] locale: iconv(1) with -c option hangs on illegal multi-byte
- sequences (CVE-2016-10228)
- [19737] admin: Doc page “20.5.2 Infinity and NaN” has incorrect HTML
- character entities for infinity & pi
- [20338] libc: Parsing of /etc/gshadow can return bad pointers causing
- segfaults in applications
- [20543] libc: Please move from .gnu.linkonce to comdat
- [22489] network: gcc warns about implicit convertion in
- ICMP6_FILTER_SETPASS with -Wsign-conversion
- [22525] localedata: or_IN LC_COLLATE does not use copy "iso14651_t1"
- [23294] math: Complex _FloatN functions are redirected to the wrong
- function with -mlong-double-64
- [23296] libc: Data race in setting function descriptor during lazy
- binding
- [23668] dynamic-link: ldconfig: Default to the new format for
- ld.so.cache
- [23819] hurd: hurd: Add C11 thread support
- [23990] build: test-container error out on failure to exec child.
- [23991] build: shell-container typo in run_command_array
- [24638] manual: Error in example of parsing a template string
- [24654] manual: Wrong declaration of wcschr in libc manual
- [24943] dynamic-link: Support DT_AUDIT, DT_DEPAUDIT in the dynamic
- linker
- [25051] dynamic-link: aarch64, powerpc64 uses surplus static tls for
- dynamically loaded dsos
- [25098] nptl: nptl: ctype classification functions are not AS-Safe
- [25219] libc: improve out-of-bounds checking with GCC 10 attribute
- access
- [25262] libc: getcontext/setcontext/swapcontext unnecessarily save and
- restore EAX, ECX and EDX
- [25397] dynamic-link: Legacy bitmap doesn't cover jitted code
- [25414] glob: 'glob' use-after-free bug (CVE-2020-1752)
- [25420] network: Race condition in resolv_conf.c can result in caching
- stale configuration forever
- [25487] math: sinl() stack corruption from crafted input
- (CVE-2020-10029)
- [25506] build: configure: broken detection of STT_GNU_IFUNC when GCC
- defaults to PIE
- [25523] libc: MIPS/Linux inline syscall template is miscompiled
- [25620] libc: Signed comparison vulnerability in the ARMv7 memcpy()
- (CVE-2020-6096)
- [25623] libc: test-sysvmsg, test-sysvsem, test-sysvshm fail with 2.31
- on 32 bit and old kernel
- [25635] libc: arm: Wrong sysdep order selection for soft-fp
- [25639] localedata: Some names of days and months wrongly spelt in
- Occitan
- [25657] libc: sigprocmask() and sigisemptyset() manipulate different
- amount of sigset_t bytes
- [25691] stdio: printf: memory leak when printing long multibyte
- strings
- [25715] libc: system() returns wrong errors when posix_spawn fails
- [25733] malloc: mallopt(M_MXFAST) can set global_max_fast to 0
- [25734] locale: mbrtowc with Big5-HKSCS fails to reset conversion
- state for conversions that produce two Unicode code points
- [25765] nptl: Incorrect futex syscall in __pthread_disable_asynccancel
- for linux x86_64 leads to livelock
- [25788] dynamic-link: [i386] -fno-omit-frame-pointer in CFLAGS causes
- test failures, invalid instruction in ld.so
- [25790] glob: Typo in tst-fnmatch.input
- [25810] libc: x32: Incorrect syscall entries with pointer, off_t and
- size_t
- [25819] localedata: Update locale data to Unicode 13.0.0
- [25824] libc: Abnormal function of strnlen in aarch64
- [25887] dynamic-link: Wasted space in _dl_x86_feature_1[1]
- [25896] libc: Incorrect prctl
- [25902] libc: Bad LOADARGS_N
- [25905] dynamic-link: VSX registers are corrupted during PLT
- resolution when glibc is built with --disable-multi-arch and --with-
- cpu=power9
- [25933] string: Off by one error in __strncmp_avx2 when
- length=VEC_SIZE*4 and strings are at page boundaries can cause a
- segfault
- [25942] nptl: Deadlock on stack_cache_lock between __nptl_setxid and
- exiting detached thread
- [25966] libc: Incorrect access of __x86_shared_non_temporal_threshold
- for x32
- [25976] nss: internal_end*ent in nss_compat may clobber errno, hiding
- ERANGE
- [25999] nptl: Use-after-free issue in pthread_getaddr_default_np
- [26073] math: getpayload() has wrong return value
- [26076] dynamic-link: dlmopen crashes after failing to load
- dependencies in audit mode
- [26120] localedata: column width of of some Korean
- JUNGSEONG/JONGSEONG characters wrong (should be 0)
- [26128] libc: Incorrect bit_cpu_CLFLUSHOPT
- [26133] libc: Incorrect need_arch_feature_F16C
- [26137] libc: strtod() triggers exception FE_INEXACT on reasonable
- input
- [26149] libc: PKU is usable only if OSPKE is set
- [26173] libc: powerpc64*: Add @notoc to calls to functions that do not
- preserve r2
- [26208] libc: Incorrect bit_cpu_CLFSH
- [26210] network: Incorrect use of hidden symbols for global sunrpc
- variables
- [26211] stdio: printf integer overflow calculating allocation size
- [26214] stdio: printf_fp double free
- [26215] stdio: printf_fp memory leak
- [26232] time: FAIL: support/tst-timespec for 32-bit targets
- [26258] nss: nss_compat should not read input files with mmap
- [26332] string: Incorrect cache line size load causes memory
- corruption in memset
-
-
-Version 2.31
-
-Major new features:
-
-* The GNU C Library now supports a feature test macro _ISOC2X_SOURCE to
- enable features from the draft ISO C2X standard. Only some features from
- this draft standard are supported by the GNU C Library, and as the draft
- is under active development, the set of features enabled by this macro is
- liable to change. Features from C2X are also enabled by _GNU_SOURCE, or
- by compiling with "gcc -std=gnu2x".
-
-* The <math.h> functions that round their results to a narrower type now
- have corresponding type-generic macros in <tgmath.h>, as defined in TS
- 18661-1:2014 and TS 18661-3:2015 as amended by the resolution of
- Clarification Request 13 to TS 18661-3.
-
-* The function pthread_clockjoin_np has been added, enabling join with a
- terminated thread with a specific clock. It allows waiting against
- CLOCK_MONOTONIC and CLOCK_REALTIME. This function is a GNU extension.
-
-* New locale added: mnw_MM (Mon language spoken in Myanmar).
-
-* The DNS stub resolver will optionally send the AD (authenticated data) bit
- in queries if the trust-ad option is set via the options directive in
- /etc/resolv.conf (or if RES_TRUSTAD is set in _res.options). In this
- mode, the AD bit, as provided by the name server, is available to
- applications which call res_search and related functions. In the default
- mode, the AD bit is not set in queries, and it is automatically cleared in
- responses, indicating a lack of DNSSEC validation. (Therefore, the name
- servers and the network path to them are treated as untrusted.)
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The totalorder and totalordermag functions, and the corresponding
- functions for other floating-point types, now take pointer arguments to
- avoid signaling NaNs possibly being converted to quiet NaNs in argument
- passing. This is in accordance with the resolution of Clarification
- Request 25 to TS 18661-1, as applied for C2X. Existing binaries that pass
- floating-point arguments directly will continue to work.
-
-* The obsolete function stime is no longer available to newly linked
- binaries, and its declaration has been removed from <time.h>.
- Programs that set the system time should use clock_settime instead.
-
-* We plan to remove the obsolete function ftime, and the header <sys/timeb.h>,
- in a future version of glibc. In this release, the header still exists
- but calling ftime will cause a compiler warning. All programs should use
- gettimeofday or clock_gettime instead.
-
-* The gettimeofday function no longer reports information about a
- system-wide time zone. This 4.2-BSD-era feature has been deprecated for
- many years, as it cannot handle the full complexity of the world's
- timezones, but hitherto we have supported it on a best-effort basis.
- Changes required to support 64-bit time_t on 32-bit architectures have
- made this no longer practical.
-
- As of this release, callers of gettimeofday with a non-null 'tzp' argument
- should expect to receive a 'struct timezone' whose tz_minuteswest and
- tz_dsttime fields are zero. (For efficiency reasons, this does not always
- happen on a few Linux-based ports. This will be corrected in a future
- release.)
-
- All callers should supply a null pointer for the 'tzp' argument to
- gettimeofday. For accurate information about the time zone associated
- with the current time, use the localtime function.
-
- gettimeofday itself is obsolescent according to POSIX. We have no plans
- to remove access to this function, but portable programs should consider
- using clock_gettime instead.
-
-* The settimeofday function can still be used to set a system-wide time
- zone when the operating system supports it. This is because the Linux
- kernel reused the API, on some architectures, to describe a system-wide
- time-zone-like offset between the software clock maintained by the kernel,
- and the "RTC" clock that keeps time when the system is shut down.
-
- However, to reduce the odds of this offset being set by accident,
- settimeofday can no longer be used to set the time and the offset
- simultaneously. If both of its two arguments are non-null, the call
- will fail (setting errno to EINVAL).
-
- Callers attempting to set this offset should also be prepared for the call
- to fail and set errno to ENOSYS; this already happens on the Hurd and on
- some Linux architectures. The Linux kernel maintainers are discussing a
- more principled replacement for the reused API. After a replacement
- becomes available, we will change settimeofday to fail with ENOSYS on all
- platforms when its 'tzp' argument is not a null pointer.
-
- settimeofday itself is obsolescent according to POSIX. Programs that set
- the system time should use clock_settime and/or the adjtime family of
- functions instead. We may cease to make settimeofday available to newly
- linked binaries after there is a replacement for Linux's time-zone-like
- offset API.
-
-* SPARC ISA v7 is no longer supported. v8 is still supported, but only if
- the optional CAS instruction is implemented (for instance, LEON processors
- are still supported, but SuperSPARC processors are not).
-
- As the oldest 64-bit SPARC ISA is v9, this only affects 32-bit
- configurations.
-
-* If a lazy binding failure happens during dlopen, during the execution of
- an ELF constructor, the process is now terminated. Previously, the
- dynamic loader would return NULL from dlopen, with the lazy binding error
- captured in a dlerror message. In general, this is unsafe because
- resetting the stack in an arbitrary function call is not possible.
-
-* For MIPS hard-float ABIs, the GNU C Library will be configured to need an
- executable stack unless explicitly configured at build time to require
- minimum kernel version 4.8 or newer. This is because executing
- floating-point branches on a non-executable stack on Linux kernels prior to
- 4.8 can lead to application crashes for some MIPS configurations. While
- currently PT_GNU_STACK is not widely used on MIPS, future releases of GCC are
- expected to enable non-executable stack by default with PT_GNU_STACK by
- default and is thus likely to trigger a crash on older kernels.
-
- The GNU C Library can be built with --enable-kernel=4.8.0 in order to keep a
- non-executable stack while dropping support for older kernels.
-
-* System call wrappers for time system calls now use the new time64 system
- calls when available. On 32-bit targets, these wrappers attempt to call
- the new system calls first and fall back to the older 32-bit time system
- calls if they are not present. This may cause issues in environments
- that cannot handle unsupported system calls gracefully by returning
- -ENOSYS. Seccomp sandboxes are affected by this issue.
-
-Changes to build and runtime requirements:
-
-* It is no longer necessary to have recent Linux kernel headers to build
- working (non-stub) system call wrappers on all architectures except 64-bit
- RISC-V. 64-bit RISC-V requires a minimum kernel headers version of 5.0.
-
-* The ChangeLog file is no longer present in the toplevel directory of the
- source tree. ChangeLog files are located in the ChangeLog.old directory as
- ChangeLog.N where the highest N has the latest entries.
-
-Security related changes:
-
- CVE-2020-1751: A defect in the PowerPC backtrace function could cause an
- out-of-bounds write when executed in a signal frame context.
-
- CVE-2019-19126: ld.so failed to ignore the LD_PREFER_MAP_32BIT_EXEC
- environment variable during program execution after a security
- transition, allowing local attackers to restrict the possible mapping
- addresses for loaded libraries and thus bypass ASLR for a setuid
- program. Reported by Marcin Kościelnicki.
-
-The following bugs are resolved with this release:
-
- [12031] localedata: iconv -t ascii//translit with Greek characters
- [15813] libc: Multiple issues in __gen_tempname
- [17726] libc: [arm, sparc] profil_counter should be compat symbol
- [18231] libc: ipc_perm struct's mode member has wrong type in sys/ipc.h
- [19767] libc: vdso is not used with static linking
- [19903] hurd: Shared mappings not being inherited by children processes
- [20358] network: RES_USE_DNSSEC sets DO; should also have a way to set AD
- [20839] dynamic-link: Incomplete rollback of dynamic linker state on
- linking failure
- [23132] localedata: Missing transliterations in Miscellaneous Mathematical
- Symbols-A/B Unicode blocks
- [23518] libc: Eliminate __libc_utmp_jump_table
- [24026] malloc: malloc_info() returns wrong numbers
- [24054] localedata: Many locales are missing date_fmt
- [24214] dynamic-link: user defined ifunc resolvers may run in ldd mode
- [24304] dynamic-link: Lazy binding failure during ELF
- constructors/destructors is not fatal
- [24376] libc: RISC-V symbol size confusion with _start
- [24682] localedata: zh_CN first weekday should be Monday per GB/T
- 7408-2005
- [24824] libc: test-in-container does not install charmap files compatible
- with localedef
- [24844] regex: regex bad pointer / leakage if malloc fails
- [24867] malloc: Unintended malloc_info formatting changes
- [24879] libc: login: utmp alarm timer can arrive after lock acquisition
- [24880] libc: login: utmp implementation uses struct flock with fcntl64
- [24882] libc: login: pututline uses potentially outdated cache
- [24899] libc: Missing nonstring attributes in <utmp.h>, <utmpx.h>
- [24902] libc: login: Repeating pututxline on EINTR/EAGAIN causes stale
- utmp entries
- [24916] dynamic-link: [MIPS] Highest EI_ABIVERSION value not raised to
- ABSOLUTE ABI
- [24930] dynamic-link: dlopen of PIE executable can result in
- _dl_allocate_tls_init assertion failure
- [24950] localedata: Top-of-tree glibc does not build with top-of-tree GCC
- (stringop-overflow error)
- [24959] time: librt IFUNC resolvers for clock_gettime and clock_*
- functions other can lead to crashes
- [24967] libc: jemalloc static linking causes runtime failure
- [24986] libc: alpha: new getegid, geteuid and getppid syscalls used
- unconditionally
- [25035] libc: sbrk() failure handled poorly in tunables_strdup
- [25087] dynamic-link: ldconfig mishandles unusual .dynstr placement
- [25097] libc: new -Warray-bounds with GCC 10
- [25112] dynamic-link: dlopen must not make new objects accessible when it
- still can fail with an error
- [25139] localedata: Please add the new mnw_MM locale
- [25149] regex: Array bounds violation in proceed_next_node
- [25157] dynamic-link: Audit cookie for the dynamic loader is not
- initialized correctly
- [25189] libc: glibc's __glibc_has_include causes issues with clang
- -frewrite-includes
- [25194] malloc: malloc.c: do_set_mxfast incorrectly casts the mallopt
- value to an unsigned
- [25204] dynamic-link: LD_PREFER_MAP_32BIT_EXEC not ignored in setuid
- binaries (CVE-2019-19126)
- [25225] libc: ld.so fails to link on x86 if GCC defaults to -fcf-
- protection
- [25226] string: strstr: Invalid result if needle crosses page on s390-z15
- ifunc variant.
- [25232] string: <string.h> does not enable const correctness for strchr et
- al. for Clang++
- [25233] localedata: Consider "." as the thousands separator for sl_SI
- (Slovenian)
- [25241] nptl: __SIZEOF_PTHREAD_MUTEX_T defined twice for x86
- [25251] build: Failure to run tests when CFLAGS contains -DNDEBUG.
- [25271] libc: undeclared identifier PTHREAD_MUTEX_DEFAULT when compiling
- with -std=c11
- [25323] localedata: km_KH: d_t_fmt contains "m" instead of "%M"
- [25324] localedata: lv_LV: d_t_fmt contains suspicious words in the time
- part
- [25396] dynamic-link: Failing dlopen can leave behind dangling GL
- (dl_initfirst) link map pointer
- [25401] malloc: pvalloc must not have __attribute_alloc_size__
- [25423] libc: Array overflow in backtrace on powerpc
- [25425] network: Missing call to __resolv_context_put in
- getaddrinfo.c:gethosts
-
-
-Version 2.30
-
-Major new features:
-
-* Unicode 12.1.0 Support: Character encoding, character type info, and
- transliteration tables are all updated to Unicode 12.1.0, using
- generator scripts contributed by Mike FABIAN (Red Hat).
-
-* The dynamic linker accepts the --preload argument to preload shared
- objects, in addition to the LD_PRELOAD environment variable.
-
-* The twalk_r function has been added. It is similar to the existing
- twalk function, but it passes an additional caller-supplied argument
- to the callback function.
-
-* On Linux, the getdents64, gettid, and tgkill functions have been added.
-
-* Minguo (Republic of China) calendar support has been added as an
- alternative calendar for the following locales: zh_TW, cmn_TW, hak_TW,
- nan_TW, lzh_TW.
-
-* The entry for the new Japanese era has been added for ja_JP locale.
-
-* Memory allocation functions malloc, calloc, realloc, reallocarray, valloc,
- pvalloc, memalign, and posix_memalign fail now with total object size
- larger than PTRDIFF_MAX. This is to avoid potential undefined behavior with
- pointer subtraction within the allocated object, where results might
- overflow the ptrdiff_t type.
-
-* The dynamic linker no longer refuses to load objects which reference
- versioned symbols whose implementation has moved to a different soname
- since the object has been linked. The old error message, symbol
- FUNCTION-NAME, version SYMBOL-VERSION not defined in file DSO-NAME with
- link time reference, is gone.
-
-* Add new POSIX-proposed pthread_cond_clockwait, pthread_mutex_clocklock,
- pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock and sem_clockwait
- functions. These behave similarly to their "timed" equivalents, but also
- accept a clockid_t parameter to determine which clock their timeout should
- be measured against. All functions allow waiting against CLOCK_MONOTONIC
- and CLOCK_REALTIME. The decision of which clock to be used is made at the
- time of the wait (unlike with pthread_condattr_setclock, which requires
- the clock choice at initialization time).
-
-* On AArch64 the GNU IFUNC resolver call ABI changed: old resolvers still
- work, new resolvers can use a second argument which can be extended in
- the future, currently it contains the AT_HWCAP2 value.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The copy_file_range function fails with ENOSYS if the kernel does not
- support the system call of the same name. Previously, user space
- emulation was performed, but its behavior did not match the kernel
- behavior, which was deemed too confusing. Applications which use the
- copy_file_range function can no longer rely on glibc to provide a fallback
- on kernels that do not support the copy_file_range system call, and if
- this function returns ENOSYS, they will need to use their own fallback.
- Support for copy_file_range for most architectures was added in version
- 4.5 of the mainline Linux kernel.
-
-* The functions clock_gettime, clock_getres, clock_settime,
- clock_getcpuclockid, clock_nanosleep were removed from the librt library
- for new applications (on architectures which had them). Instead, the
- definitions in libc will be used automatically, which have been available
- since glibc 2.17.
-
-* The obsolete and never-implemented XSI STREAMS header files <stropts.h>
- and <sys/stropts.h> have been removed.
-
-* Support for the "inet6" option in /etc/resolv.conf and the RES_USE_INET6
- resolver flag (deprecated in glibc 2.25) have been removed.
-
-* The obsolete RES_INSECURE1 and RES_INSECURE2 option flags for the DNS stub
- resolver have been removed from <resolv.h>.
-
-* With --enable-bind-now, installed programs are now linked with the
- BIND_NOW flag.
-
-* Support for the PowerPC SPE ISA extension (powerpc-*-*gnuspe*
- configurations) has been removed, following the deprecation of this
- subarchitecture in version 8 of GCC, and its removal in version 9.
-
-* On 32-bit Arm, support for the port-based I/O emulation and the <sys/io.h>
- header have been removed.
-
-* The Linux-specific <sys/sysctl.h> header and the sysctl function have been
- deprecated and will be removed from a future version of glibc.
- Application should directly access /proc instead. For obtaining random
- bits, the getentropy function can be used.
-
-Changes to build and runtime requirements:
-
-* GCC 6.2 or later is required to build the GNU C Library.
-
- Older GCC versions and non-GNU compilers are still supported when
- compiling programs that use the GNU C Library.
-
-Security related changes:
-
- CVE-2019-7309: x86-64 memcmp used signed Jcc instructions to check
- size. For x86-64, memcmp on an object size larger than SSIZE_MAX
- has undefined behavior. On x32, the size_t argument may be passed
- in the lower 32 bits of the 64-bit RDX register with non-zero upper
- 32 bits. When it happened with the sign bit of RDX register set,
- memcmp gave the wrong result since it treated the size argument as
- zero. Reported by H.J. Lu.
-
- CVE-2019-9169: Attempted case-insensitive regular-expression match
- via proceed_next_node in posix/regexec.c leads to heap-based buffer
- over-read. Reported by Hongxu Chen.
-
-The following bugs are resolved with this release:
-
- [2872] locale: Transliteration Cyrillic -> ASCII fails
- [6399] libc: gettid() should have a wrapper
- [16573] malloc: mtrace hangs when MALLOC_TRACE is defined
- [16976] glob: fnmatch unbounded stack VLA for collating symbols
- [17396] localedata: globbing for locale by [[.collating-element.]]
- [18035] dynamic-link: pldd does no longer work, enters infinite loop
- [18465] malloc: memusagestat is built using system C library
- [18830] locale: iconv -c -f ascii with >buffer size worth of input before
- invalid input drops valid char
- [20188] nptl: libpthread IFUNC resolver for vfork can lead to crash
- [20568] locale: Segfault with wide characters and setlocale/fgetwc/UTF-8
- [21897] localedata: Afar locales: Fix mon, abmon, and abday
- [22964] localedata: The Japanese Era name will be changed on May 1, 2019
- [23352] malloc: __malloc_check_init still defined in public header
- malloc.h.
- [23403] nptl: Wrong alignment of TLS variables
- [23501] libc: nftw() doesn't return dangling symlink's inode
- [23733] malloc: Check the count before calling tcache_get()
- [23741] malloc: Missing __attribute_alloc_size__ in many allocation
- functions
- [23831] localedata: nl_NL missing LC_NUMERIC thousands_sep
- [23844] nptl: pthread_rwlock_trywrlock results in hang
- [23983] argparse: Missing compat versions of argp_failure and argp_error
- for long double = double
- [23984] libc: Missing compat versions of err.h and error.h functions for
- long double = double
- [23996] localedata: Dutch salutations
- [24040] libc: riscv64: unterminated call chain in __thread_start
- [24047] network: libresolv should use IP_RECVERR/IPV6_RECVERR to avoid
- long timeouts
- [24051] stdio: puts and putchar output to _IO_stdout instead of stdout
- [24059] nss: nss_files: get_next_alias calls fgets_unlocked without
- checking for NULL.
- [24114] regex: regexec buffer read overrun in "grep -i
- '\(\(\)*.\)*\(\)\(\)\1'"
- [24122] libc: Segfaults if 0 returned from la_version
- [24153] stdio: Some input functions do not react to stdin assignment
- [24155] string: x32 memcmp can treat positive length as 0 (if sign bit in
- RDX is set) (CVE-2019-7309)
- [24161] nptl: __run_fork_handlers self-deadlocks in malloc/tst-mallocfork2
- [24164] libc: Systemtap probes need to use "nr" constraint on 32-bit Arm,
- not the default "nor"
- [24166] dynamic-link: Dl_serinfo.dls_serpath[1] in dlfcn.h causes UBSAN
- false positives, change to modern flexible array
- [24180] nptl: pthread_mutex_trylock does not use the correct order of
- instructions while maintaining the robust mutex list due to missing
- compiler barriers.
- [24194] librt: Non-compatibility symbols for clock_gettime etc. cause
- unnecessary librt dependencies
- [24200] localedata: Revert first_weekday removal in en_IE locale
- [24211] nptl: Use-after-free in Systemtap probe in pthread_join
- [24215] nptl: pthread_timedjoin_np should be a cancellation point
- [24216] malloc: Check for large bin list corruption when inserting
- unsorted chunk
- [24228] stdio: old x86 applications that use legacy libio crash on exit
- [24231] dynamic-link: [sparc64] R_SPARC_H34 implementation falls through
- to R_SPARC_H44
- [24293] localedata: Missing Minguo calendar support for TW locales
- [24296] localedata: Orthographic mistakes in 'day' and 'abday' sections in
- tt_RU (Tatar) locale
- [24307] localedata: Update locale data to Unicode 12.0.0
- [24323] dynamic-link: dlopen should not be able open PIE objects
- [24335] build: "Obsolete types detected" with Linux 5.0 headers
- [24369] localedata: Orthographic mistakes in 'mon' and 'abmon' sections in
- tt_RU (Tatar) locale
- [24370] localedata: Add lang_name for tt_RU locale
- [24372] locale: Binary locale files are not architecture independent
- [24394] time: strptime %Ey mis-parses final year of era
- [24476] dynamic-link: __libc_freeres triggers bad free in libdl if dlerror
- was not used
- [24506] dynamic-link: FAIL: elf/tst-pldd with --enable-hardcoded-path-in-
- tests
- [24531] malloc: Malloc tunables give tcache assertion failures
- [24532] libc: conform/arpa/inet.h failures due to linux kernel 64-bit
- time_t changes
- [24535] localedata: Update locale data to Unicode 12.1.0
- [24537] build: nptl/tst-eintr1 test case can hit task limits on some
- kernels and break testing
- [24544] build: elf/tst-pldd doesn't work if you install with a --prefix
- [24556] build: [GCC 9] error: ‘%s’ directive argument is null
- [-Werror=format-overflow=]
- [24570] libc: alpha: compat msgctl uses __IPC_64
- [24584] locale: Data race in __wcsmbs_clone_conv
- [24588] stdio: Remove codecvt vtables from libio
- [24603] math: sysdeps/ieee754/dbl-64/branred.c is slow when compiled with
- -O3 -march=skylake
- [24614] localedata: nl_NL LC_MONETARY doesn't match CLDR 35
- [24632] stdio: Old binaries which use freopen with default stdio handles
- crash
- [24640] libc: __ppc_get_timebase_freq() always return 0 when using static
- linked glibc
- [24652] localedata: szl_PL spelling correction
- [24695] nss: nss_db: calling getpwent after endpwent crashes
- [24696] nss: endgrent() clobbers errno=ERRNO for 'group: db files' entry
- in /etc/nsswitch.conf
- [24699] libc: mmap64 with very large offset broken on MIPS64 n32
- [24740] libc: getdents64 type confusion
- [24741] dynamic-link: ld.so should not require that a versioned symbol is
- always implemented in the same library
- [24744] libc: Remove copy_file_range emulation
- [24757] malloc: memusagestat is linked against system libpthread
- [24794] libc: Partial test suite run builds corrupt test-in-container
- testroot
-
-
-Version 2.29
-
-Major new features:
-
-* The getcpu wrapper function has been added, which returns the currently
- used CPU and NUMA node. This function is Linux-specific.
-
-* A new convenience target has been added for distribution maintainers
- to build and install all locales as directories with files. The new
- target is run by issuing the following command in your build tree:
- 'make localedata/install-locale-files', with an optional DESTDIR
- to set the install root if you wish to install into a non-default
- configured location.
-
-* Optimized generic exp, exp2, log, log2, pow, sinf, cosf, sincosf and tanf.
-
-* The reallocarray function is now declared under _DEFAULT_SOURCE, not just
- for _GNU_SOURCE, to match BSD environments.
-
-* For powercp64le ABI, Transactional Lock Elision is now enabled iff kernel
- indicates that it will abort the transaction prior to entering the kernel
- (PPC_FEATURE2_HTM_NOSC on hwcap2). On older kernels the transaction is
- suspended, and this caused some undefined side-effects issues by aborting
- transactions manually. Glibc avoided it by abort transactions manually on
- each syscall, but it lead to performance issues on newer kernels where the
- HTM state is saved and restore lazily (the state being saved even when the
- process actually does not use HTM).
-
-* The functions posix_spawn_file_actions_addchdir_np and
- posix_spawn_file_actions_addfchdir_np have been added, enabling
- posix_spawn and posix_spawnp to run the new process in a different
- directory. These functions are GNU extensions. The function
- posix_spawn_file_actions_addchdir_np is similar to the Solaris function
- of the same name.
-
-* The popen and system do not run atfork handlers anymore (BZ#17490).
- Although it is a possible POSIX violation, the POSIX rationale in
- pthread_atfork documentation regarding atfork handlers is to handle
- inconsistent mutex state after a fork call in a multi-threaded process.
- In both popen and system there is no direct access to user-defined mutexes.
-
-* Support for the C-SKY ABIV2 running on Linux has been added. This port
- requires at least binutils-2.32, gcc-9.0, and linux-4.20. Two ABIs are
- supported:
- - C-SKY ABIV2 soft-float little-endian
- - C-SKY ABIV2 hard-float little-endian
-
-* strftime's default formatting of a locale's alternative year (%Ey)
- has been changed to zero-pad the year to a minimum of two digits,
- like "%y". This improves the display of Japanese era years during
- the first nine years of a new era, and is expected to be harmless
- for all other locales (only Japanese locales regularly have
- alternative year numbers less than 10). Zero-padding can be
- overridden with the '_' or '-' flags (which are GNU extensions).
-
-* As a GNU extension, the '_' and '-' flags can now be applied to
- "%EY" to control how the year number is formatted; they have the
- same effect that they would on "%Ey".
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The glibc.tune tunable namespace has been renamed to glibc.cpu and the
- tunable glibc.tune.cpu has been renamed to glibc.cpu.name.
-
-* The type of the pr_uid and pr_gid members of struct elf_prpsinfo, defined
- in <sys/procfs.h>, has been corrected to match the type actually used by
- the Linux kernel. This affects the size and layout of that structure on
- MicroBlaze, MIPS (n64 ABI only), Nios II and RISC-V.
-
-* For the MIPS n32 ABI, the type of the pr_sigpend and pr_sighold members of
- struct elf_prstatus, and the pr_flag member of struct elf_prpsinfo,
- defined in <sys/procfs.h>, has been corrected to match the type actually
- used by the Linux kernel. This affects the size and layout of those
- structures.
-
-* An archaic GNU extension to scanf, under which '%as', '%aS', and '%a[...]'
- meant to scan a string and allocate space for it with malloc, is now
- restricted to programs compiled in C89 or C++98 mode with _GNU_SOURCE
- defined. This extension conflicts with C99's use of '%a' to scan a
- hexadecimal floating-point number, which is now available to programs
- compiled as C99 or C++11 or higher, regardless of _GNU_SOURCE.
-
- POSIX.1-2008 includes the feature of allocating a buffer for string input
- with malloc, using the modifier letter 'm' instead. Programs using
- '%as', '%aS', or '%a[...]' with the old GNU meaning should change to
- '%ms', '%mS', or '%m[...]' respectively. Programs that wish to use the
- C99 '%a' no longer need to avoid _GNU_SOURCE.
-
- GCC's -Wformat warnings can detect most uses of this extension, as long
- as all functions that call vscanf, vfscanf, or vsscanf are annotated with
- __attribute__ ((format (scanf, ...))).
-
-Changes to build and runtime requirements:
-
-* Python 3.4 or later is required to build the GNU C Library.
-
-* On most architectures, GCC 5 or later is required to build the GNU C
- Library. (On powerpc64le, GCC 6.2 or later is still required, as before.)
-
- Older GCC versions and non-GNU compilers are still supported when
- compiling programs that use the GNU C Library.
-
-Security related changes:
-
- CVE-2018-19591: A file descriptor leak in if_nametoindex can lead to a
- denial of service due to resource exhaustion when processing getaddrinfo
- calls with crafted host names. Reported by Guido Vranken.
-
- CVE-2019-6488: On x32, the size_t parameter may be passed in the lower
- 32 bits of a 64-bit register with with non-zero upper 32 bit. When it
- happened, accessing the 32-bit size_t value as the full 64-bit register
- in the assembly string/memory functions would cause a buffer overflow.
- Reported by H.J. Lu.
-
- CVE-2016-10739: The getaddrinfo function could successfully parse IPv4
- addresses with arbitrary trailing characters, potentially leading to data
- or command injection issues in applications.
-
-The following bugs are resolved with this release:
-
- [10425] localedata: it_IT/it_CH: LC_TIME format is wrong
- [10496] localedata: 12h time representation in multiple locales faulty
- [10797] localedata: it_IT locale numeric does not have a separator for
- thousands
- [11319] libc: dprintf doesn't handle errors properly
- [16346] time: mktime: potentially unsafe use of localtime_offset
- [17248] build: glibc should not sort CFLAGS (support gcc plugins and
- --param options)
- [17405] libc: Implement posix_spawn_file_actions_addchdir_np,
- posix_spawn_file_actions_addfchdir_np
- [17426] localedata: Indian locales: set the correct date format
- [17490] stdio: popen should not invoke atfork handlers
- [17783] libc: TIOCSER_TEMT conditions inconsistent
- [18040] regex: use-after-free in regexec/get_subexp
- [18093] libc: Corrupted aux-cache causes ldconfig to segfault
- [20018] network: getaddrinfo should reject IP addresses with trailing
- characters (CVE-2016-10739)
- [20209] localedata: Spelling mistake for Sunday in Greenlandic kl_GL
- [20271] libc: Missing "\n" in __libc_fatal calls
- [20480] dynamic-link: Patch: ifunc not executable, crashes sudo qemu
- [20544] libc: RFE: atexit, __cxa_atexit, on_exit should assert function
- pointer argument is non-NULL
- [21037] stdio: open_memstream and freopen
- [21286] libc: bits/siginfo.h is missing enum definition for TRAP_HWBKPT
- [21716] time: Crash in glibc's mktime in low-memory situations
- [22834] stdio: Subprocess forked by popen may crash in Linux when
- multithreads call popen
- [22927] network: crash in vn_gai_enqueue_request if requests_tail was NULL
- and pthread_create fails.
- [23032] hurd: sysdeps/htl/pt-barrier-init.c:39: bad call to memcmp ?
- [23125] libc: riscv64: endless loop when throwing an exception from a
- constructor
- [23275] nptl: Race in pthread_mutex_lock while promoting to
- PTHREAD_MUTEX_ELISION_NP.
- [23400] libc: stdlib/test-bz22786.c creates temporary files in glibc
- source tree
- [23479] math: [mips] bits/fenv.h should not define some macros for soft-
- float
- [23490] libc: sysdeps/unix/sysv/linux/x86/tst-cet-property-2.c:49: off by
- one error
- [23497] libc: readdir64@GLIBC_2.1 cannot parse the kernel directory stream
- [23509] dynamic-link: CET enabled glibc is incompatible with the older
- linker
- [23520] nscd: nscd: Use-after-free in addgetnetgrentX and its callers
- [23521] nss: get_next_alias nss_files file stream leak
- [23538] nptl: Hang in pthread_cond_broadcast
- [23562] libc: Wrong type for si_band in Linux-specific siginfo_t
- [23578] regex: Invalid memory access if regex pattern contains NUL byte
- [23579] libc: Errors misreported in preadv2
- [23597] build: support/test-container.c doesn't work with different
- filesystems
- [23603] time: mktime signed integer overflow on large timestamps
- [23606] libc: Missing ENDBR32 in sysdeps/i386/start.S
- [23614] libc: powerpc: missing CFI register information in __mpn_*
- functions
- [23637] string: Generic strstr/strcasestr fails with huge needles
- [23640] libc: no way to easily clear FD_CLOEXEC in
- posix_spawn_file_actions_adddup2()
- [23649] libc: [microblaze/mips/nios2/riscv] sys/procfs.h pr_uid, pr_gid
- have wrong type
- [23656] libc: [mips n32] sys/procfs.h pr_sigpend, pr_sighold, pr_flag have
- wrong type
- [23679] libc: gethostid: Missing NULL check for gethostbyname_r result
- [23689] libc: Bug in documentation for rusage.ru_ixrss in
- bits/types/struct_rusage.h
- [23690] dynamic-link: Segfault in _dl_profile_fixup with a high number of
- threads
- [23707] dynamic-link: Missing unwind info in sysdeps/powerpc/powerpc32/dl-
- start.S
- [23709] string: glibc 2.25 lacks sse2 optimized strstr()
- [23716] dynamic-link: _dl_runtime_resolve_shstk isn't selected properly
- [23717] libc: glibc: stdlib/tst-setcontext9 test suite failure on
- powerpc64le
- [23724] localedata: Albanian date formats are incorrect
- [23735] math: libnldbl_nonshared.a references internal libm symbols
- [23740] localedata: kl_GL: Month names and date formats need update
- [23744] regex: regex refactorings to remove BE, avoid duplication
- [23745] time: mktime fix for Gnulib + coreutils
- [23758] time: Improve the width of alternate representation for year in
- strftime
- [23783] libc: [mips] Missing CMSPAR bits/termios.h
- [23789] time: mktime does not set errno on failure
- [23791] localedata: Wrong monetary format for ca_ES locale
- [23793] locale: c32rtomb and mbrtoc32 should not alias wcrtomb and mbrtowc
- [23794] locale: c16rtomb does not handle surrogate pairs
- [23821] libc: si_band in siginfo_t has wrong type long int on sparc64
- [23822] math: ia64 static libm.a is missing exp2f, log2f and powf symbols
- [23836] time: time/tst-mktime2 test failure on Arm (32-bit)
- [23848] libc: [sparc] Some socket syscalls wrongly assumed to be present
- [23861] nptl: rdlock stalls indefinitely on an unlocked pthread rwlock
- [23862] libc: [sh] missing kernel-features.h undefines
- [23864] libc: [riscv] missing kernel-features.h undefines
- [23867] libc: [arm/microblaze] __ASSUME_MLOCK2 incorrect
- [23907] malloc: Incorrect double-free malloc tcache check disregards
- tcache size
- [23913] libc: off-by-one in function maybe_script_execute in
- sysdeps/posix/spawni.c
- [23915] libc: [arm] __ASSUME_COPY_FILE_RANGE incorrect
- [23923] locale: Add --no-hard-links option to localedef
- [23927] network: Linux if_nametoindex() does not close descriptor
- (CVE-2018-19591)
- [23961] math: powf can overflow to inf without setting errno in non-
- nearest rounding mode
- [23967] libc: [2.28 Regression]: New sigaction implementation breaks m68k
- [23972] libc: __old_getdents64 uses wrong d_off value on overflow
- [23993] libc: glibc 2.29 doesn't build with gcc 4.9
- [23995] localedata: Remove execution flags from localedata/locales/bi_VU
- [24011] localedata: Fixed small type in comment for locale bs_BA
- [24018] libc: gettext() may return NULL
- [24022] build: riscv build failure with Linux kernel 4.20-rc7
- [24023] build: [2.29 Regression] FAIL: elf/check-localplt
- [24024] string: strerror() might set errno to ENOMEM due to -fno-math-
- error
- [24027] malloc: glibc: realloc() ncopies 32-bit integer overflow
- [24034] libc: tst-cancel21-static fails with SIGBUS on pre-ARMv7 when
- using GCC 8
- [24046] localedata: en_US locale doesn't define date_fmt
- [24063] manual: @var{errno} should be @code{errno}
- [24066] soft-fp: Inconsistent _FP_W_TYPE_SIZE check
- [24088] libc: VSCR field is not being correctly read in ucontext_t on
- ppc64le
- [24096] time: Specifying '_' or '-' flag for "%EY" does not produce the
- expected result
- [24097] string: Can't use 64-bit register for size_t in assembly codes for
- x32 (CVE-2019-6488)
- [24110] hurd: SS_DISABLE never set in stack_t value returned by
- sigaltstack
- [24112] network: Do not send DNS queries for non-host names (where all
- answers will be rejected)
- [24130] libc: alpha __remqu corrupts $f3 register
-
-
-Version 2.28
-
-Major new features:
-
-* The localization data for ISO 14651 is updated to match the 2016
- Edition 4 release of the standard, this matches data provided by
- Unicode 9.0.0. This update introduces significant improvements to the
- collation of Unicode characters. This release deviates slightly from
- the standard in that the collation element ordering for lowercase and
- uppercase LATIN script characters is adjusted to ensure that regular
- expressions with ranges like [a-z] and [A-Z] don't interleave e.g. A
- is not matched by [a-z]. With the update many locales have been
- updated to take advantage of the new collation information. The new
- collation information has increased the size of the compiled locale
- archive or binary locales.
-
-* The GNU C Library can now be compiled with support for Intel CET, AKA
- Intel Control-flow Enforcement Technology. When the library is built
- with --enable-cet, the resulting glibc is protected with indirect
- branch tracking (IBT) and shadow stack (SHSTK). CET-enabled glibc is
- compatible with all existing executables and shared libraries. This
- feature is currently supported on i386, x86_64 and x32 with GCC 8 and
- binutils 2.29 or later. Note that CET-enabled glibc requires CPUs
- capable of multi-byte NOPs, like x86-64 processors as well as Intel
- Pentium Pro or newer. NOTE: --enable-cet has been tested for i686,
- x86_64 and x32 on non-CET processors. --enable-cet has been tested
- for x86_64 and x32 on CET SDVs, but Intel CET support hasn't been
- validated for i686.
-
-* The GNU C Library now has correct support for ABSOLUTE symbols
- (SHN_ABS-relative symbols). Previously such ABSOLUTE symbols were
- relocated incorrectly or in some cases discarded. The GNU linker can
- make use of the newer semantics, but it must communicate it to the
- dynamic loader by setting the ELF file's identification (EI_ABIVERSION
- field) to indicate such support is required.
-
-* Unicode 11.0.0 Support: Character encoding, character type info, and
- transliteration tables are all updated to Unicode 11.0.0, using
- generator scripts contributed by Mike FABIAN (Red Hat).
-
-* <math.h> functions that round their results to a narrower type are added
- from TS 18661-1:2014 and TS 18661-3:2015:
-
- - fadd, faddl, daddl and corresponding fMaddfN, fMaddfNx, fMxaddfN and
- fMxaddfNx functions.
-
- - fsub, fsubl, dsubl and corresponding fMsubfN, fMsubfNx, fMxsubfN and
- fMxsubfNx functions.
-
- - fmul, fmull, dmull and corresponding fMmulfN, fMmulfNx, fMxmulfN and
- fMxmulfNx functions.
-
- - fdiv, fdivl, ddivl and corresponding fMdivfN, fMdivfNx, fMxdivfN and
- fMxdivfNx functions.
-
-* Two grammatical forms of month names are now supported for the following
- languages: Armenian, Asturian, Catalan, Czech, Kashubian, Occitan, Ossetian,
- Scottish Gaelic, Upper Sorbian, and Walloon. The following languages now
- support two grammatical forms in abbreviated month names: Catalan, Greek,
- and Kashubian.
-
-* Newly added locales: Lower Sorbian (dsb_DE) and Yakut (sah_RU) also
- include the support for two grammatical forms of month names.
-
-* Building and running on GNU/Hurd systems now works without out-of-tree
- patches.
-
-* The renameat2 function has been added, a variant of the renameat function
- which has a flags argument. If the flags are zero, the renameat2 function
- acts like renameat. If the flag is not zero and there is no kernel
- support for renameat2, the function will fail with an errno value of
- EINVAL. This is different from the existing gnulib function renameatu,
- which performs a plain rename operation in case of a RENAME_NOREPLACE
- flags and a non-existing destination (and therefore has a race condition
- that can clobber the destination inadvertently).
-
-* The statx function has been added, a variant of the fstatat64
- function with an additional flags argument. If there is no direct
- kernel support for statx, glibc provides basic stat support based on
- the fstatat64 function.
-
-* IDN domain names in getaddrinfo and getnameinfo now use the system libidn2
- library if installed. libidn2 version 2.0.5 or later is recommended. If
- libidn2 is not available, internationalized domain names are not encoded
- or decoded even if the AI_IDN or NI_IDN flags are passed to getaddrinfo or
- getnameinfo. (getaddrinfo calls with non-ASCII names and AI_IDN will fail
- with an encoding error.) Flags which used to change the IDN encoding and
- decoding behavior (AI_IDN_ALLOW_UNASSIGNED, AI_IDN_USE_STD3_ASCII_RULES,
- NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES) have been
- deprecated. They no longer have any effect.
-
-* Parsing of dynamic string tokens in DT_RPATH, DT_RUNPATH, DT_NEEDED,
- DT_AUXILIARY, and DT_FILTER has been expanded to support the full
- range of ELF gABI expressions including such constructs as
- '$ORIGIN$ORIGIN' (if valid). For SUID/GUID applications the rules
- have been further restricted, and where in the past a dynamic string
- token sequence may have been interpreted as a literal string it will
- now cause a load failure. These load failures were always considered
- unspecified behaviour from the perspective of the dynamic loader, and
- for safety are now load errors e.g. /foo/${ORIGIN}.so in DT_NEEDED
- results in a load failure now.
-
-* Support for ISO C threads (ISO/IEC 9899:2011) has been added. The
- implementation includes all the standard functions provided by
- <threads.h>:
-
- - thrd_current, thrd_equal, thrd_sleep, thrd_yield, thrd_create,
- thrd_detach, thrd_exit, and thrd_join for thread management.
-
- - mtx_init, mtx_lock, mtx_timedlock, mtx_trylock, mtx_unlock, and
- mtx_destroy for mutual exclusion.
-
- - call_once for function call synchronization.
-
- - cnd_broadcast, cnd_destroy, cnd_init, cnd_signal, cnd_timedwait, and
- cnd_wait for conditional variables.
-
- - tss_create, tss_delete, tss_get, and tss_set for thread-local storage.
-
- Application developers must link against libpthread to use ISO C threads.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The nonstandard header files <libio.h> and <_G_config.h> are no longer
- installed. Software that was using either header should be updated to
- use standard <stdio.h> interfaces instead.
-
-* The stdio functions 'getc' and 'putc' are no longer defined as macros.
- This was never required by the C standard, and the macros just expanded
- to call alternative names for the same functions. If you hoped getc and
- putc would provide performance improvements over fgetc and fputc, instead
- investigate using (f)getc_unlocked and (f)putc_unlocked, and, if
- necessary, flockfile and funlockfile.
-
-* All stdio functions now treat end-of-file as a sticky condition. If you
- read from a file until EOF, and then the file is enlarged by another
- process, you must call clearerr or another function with the same effect
- (e.g. fseek, rewind) before you can read the additional data. This
- corrects a longstanding C99 conformance bug. It is most likely to affect
- programs that use stdio to read interactive input from a terminal.
- (Bug #1190.)
-
-* The macros 'major', 'minor', and 'makedev' are now only available from
- the header <sys/sysmacros.h>; not from <sys/types.h> or various other
- headers that happen to include <sys/types.h>. These macros are rarely
- used, not part of POSIX nor XSI, and their names frequently collide with
- user code; see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 for
- further explanation.
-
- <sys/sysmacros.h> is a GNU extension. Portable programs that require
- these macros should first include <sys/types.h>, and then include
- <sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
-
-* The tilegx*-*-linux-gnu configurations are no longer supported.
-
-* The obsolete function ustat is no longer available to newly linked
- binaries; the headers <ustat.h> and <sys/ustat.h> have been removed. This
- function has been deprecated in favor of fstatfs and statfs.
-
-* The obsolete function nfsservctl is no longer available to newly linked
- binaries. This function was specific to systems using the Linux kernel
- and could not usefully be used with the GNU C Library on systems with
- version 3.1 or later of the Linux kernel.
-
-* The obsolete function name llseek is no longer available to newly linked
- binaries. This function was specific to systems using the Linux kernel
- and was not declared in a header. Programs should use the lseek64 name
- for this function instead.
-
-* The AI_IDN_ALLOW_UNASSIGNED and NI_IDN_ALLOW_UNASSIGNED flags for the
- getaddrinfo and getnameinfo functions have been deprecated. The behavior
- previously selected by them is now always enabled.
-
-* The AI_IDN_USE_STD3_ASCII_RULES and NI_IDN_USE_STD3_ASCII_RULES flags for
- the getaddrinfo and getnameinfo functions have been deprecated. The STD3
- restriction (rejecting '_' in host names, among other things) has been
- removed, for increased compatibility with non-IDN name resolution.
-
-* The fcntl function now have a Long File Support variant named fcntl64. It
- is added to fix some Linux Open File Description (OFD) locks usage on non
- LFS mode. As for others *64 functions, fcntl64 semantics are analogous with
- fcntl and LFS support is handled transparently. Also for Linux, the OFD
- locks act as a cancellation entrypoint.
-
-* The obsolete functions encrypt, encrypt_r, setkey, setkey_r, cbc_crypt,
- ecb_crypt, and des_setparity are no longer available to newly linked
- binaries, and the headers <rpc/des_crypt.h> and <rpc/rpc_des.h> are no
- longer installed. These functions encrypted and decrypted data with the
- DES block cipher, which is no longer considered secure. Software that
- still uses these functions should switch to a modern cryptography library,
- such as libgcrypt.
-
-* Reflecting the removal of the encrypt and setkey functions above, the
- macro _XOPEN_CRYPT is no longer defined. As a consequence, the crypt
- function is no longer declared unless _DEFAULT_SOURCE or _GNU_SOURCE is
- enabled.
-
-* The obsolete function fcrypt is no longer available to newly linked
- binaries. It was just another name for the standard function crypt,
- and it has not appeared in any header file in many years.
-
-* We have tentative plans to hand off maintenance of the passphrase-hashing
- library, libcrypt, to a separate development project that will, we hope,
- keep up better with new passphrase-hashing algorithms. We will continue
- to declare 'crypt' in <unistd.h>, and programs that use 'crypt' or
- 'crypt_r' should not need to change at all; however, distributions will
- need to install <crypt.h> and libcrypt from a separate project.
-
- In this release, if the configure option --disable-crypt is used, glibc
- will not install <crypt.h> or libcrypt, making room for the separate
- project's versions of these files. The plan is to make this the default
- behavior in a future release.
-
-Changes to build and runtime requirements:
-
- GNU make 4.0 or later is now required to build glibc.
-
-Security related changes:
-
- CVE-2016-6261, CVE-2016-6263, CVE-2017-14062: Various vulnerabilities have
- been fixed by removing the glibc-internal IDNA implementation and using
- the system-provided libidn2 library instead. Originally reported by Hanno
- Böck and Christian Weisgerber.
-
- CVE-2017-18269: An SSE2-based memmove implementation for the i386
- architecture could corrupt memory. Reported by Max Horn.
-
- CVE-2018-11236: Very long pathname arguments to realpath function could
- result in an integer overflow and buffer overflow. Reported by Alexey
- Izbyshev.
-
- CVE-2018-11237: The mempcpy implementation for the Intel Xeon Phi
- architecture could write beyond the target buffer, resulting in a buffer
- overflow. Reported by Andreas Schwab.
-
-The following bugs are resolved with this release:
-
- [1190] stdio: fgetc()/fread() behaviour is not POSIX compliant
- [6889] manual: 'PWD' mentioned but not specified
- [13575] libc: SSIZE_MAX defined as LONG_MAX is inconsistent with ssize_t,
- when __WORDSIZE != 64
- [13762] regex: re_search etc. should return -2 on memory exhaustion
- [13888] build: /tmp usage during testing
- [13932] math: dbl-64 pow unexpectedly slow for some inputs
- [14092] nptl: Support C11 threads
- [14095] localedata: Review / update collation data from Unicode / ISO
- 14651
- [14508] libc: -Wformat warnings
- [14553] libc: Namespace pollution loff_t in sys/types.h
- [14890] libc: Make NT_PRFPREG canonical.
- [15105] libc: Extra PLT references with -Os
- [15512] libc: __bswap_constant_16 not compiled when -Werror -Wsign-
- conversion is given
- [16335] manual: Feature test macro documentation incomplete and out of
- date
- [16552] libc: Unify umount implementations in terms of umount2
- [17082] libc: htons et al.: statement-expressions prevent use on global
- scope with -O1 and higher
- [17343] libc: Signed integer overflow in /stdlib/random_r.c
- [17438] localedata: pt_BR: wrong d_fmt delimiter
- [17662] libc: please implement binding for the new renameat2 syscall
- [17721] libc: __restrict defined as /* Ignore */ even in c11
- [17979] libc: inconsistency between uchar.h and stdint.h
- [18018] dynamic-link: Additional $ORIGIN handling issues (CVE-2011-0536)
- [18023] libc: extend_alloca is broken (questionable pointer comparison,
- horrible machine code)
- [18124] libc: hppa: setcontext erroneously returns -1 as exit code for
- last constant.
- [18471] libc: llseek should be a compat symbol
- [18473] soft-fp: [powerpc-nofpu] __sqrtsf2, __sqrtdf2 should be compat
- symbols
- [18991] nss: nss_files skips large entry in database
- [19239] libc: Including stdlib.h ends up with macros major and minor being
- defined
- [19463] libc: linknamespace failures when compiled with -Os
- [19485] localedata: csb_PL: Update month translations + add yesstr/nostr
- [19527] locale: Normalized charset name not recognized by setlocale
- [19667] string: Missing Sanity Check for malloc calls in file 'testcopy.c'
- [19668] libc: Missing Sanity Check for malloc() in file 'tst-setcontext-
- fpscr.c'
- [19728] network: out of bounds stack read in libidn function
- idna_to_ascii_4i (CVE-2016-6261)
- [19729] network: out of bounds heap read on invalid utf-8 inputs in
- stringprep_utf8_nfkc_normalize (CVE-2016-6263)
- [19818] dynamic-link: Absolute (SHN_ABS) symbols incorrectly relocated by
- the base address
- [20079] libc: Add SHT_X86_64_UNWIND to elf.h
- [20251] libc: 32bit programs pass garbage in struct flock for OFD locks
- [20419] dynamic-link: files with large allocated notes crash in
- open_verify
- [20530] libc: bswap_16 should use __builtin_bswap16() when available
- [20890] dynamic-link: ldconfig: fsync the files before atomic rename
- [20980] manual: CFLAGS environment variable replaces vital options
- [21163] regex: Assertion failure in pop_fail_stack when executing a
- malformed regexp (CVE-2015-8985)
- [21234] manual: use of CFLAGS makes glibc detect no optimization
- [21269] dynamic-link: i386 sigaction sa_restorer handling is wrong
- [21313] build: Compile Error GCC 5.4.0 MIPS with -0S
- [21314] build: Compile Error GCC 5.2.0 MIPS with -0s
- [21508] locale: intl/tst-gettext failure with latest msgfmt
- [21547] localedata: Tibetan script collation broken (Dzongkha and Tibetan)
- [21812] network: getifaddrs() returns entries with ifa_name == NULL
- [21895] libc: ppc64 setjmp/longjmp not fully interoperable with static
- dlopen
- [21942] dynamic-link: _dl_dst_substitute incorrectly handles $ORIGIN: with
- AT_SECURE=1
- [22241] localedata: New locale: Yakut (Sakha) locale for Russia (sah_RU)
- [22247] network: Integer overflow in the decode_digit function in
- puny_decode.c in libidn (CVE-2017-14062)
- [22342] nscd: NSCD not properly caching netgroup
- [22391] nptl: Signal function clear NPTL internal symbols inconsistently
- [22550] localedata: es_ES locale (and other es_* locales): collation
- should treat ñ as a primary different character, sync the collation
- for Spanish with CLDR
- [22638] dynamic-link: sparc: static binaries are broken if glibc is built
- by gcc configured with --enable-default-pie
- [22639] time: year 2039 bug for localtime etc. on 64-bit platforms
- [22644] string: memmove-sse2-unaligned on 32bit x86 produces garbage when
- crossing 2GB threshold (CVE-2017-18269)
- [22646] localedata: redundant data (LC_TIME) for es_CL, es_CU, es_EC and
- es_BO
- [22735] time: Misleading typo in time.h source comment regarding
- CLOCKS_PER_SECOND
- [22753] libc: preadv2/pwritev2 fallback code should handle offset=-1
- [22761] libc: No trailing `%n' conversion specifier in FMT passed from
- `__assert_perror_fail ()' to `__assert_fail_base ()'
- [22766] libc: all glibc internal dlopen should use RTLD_NOW for robust
- dlopen failures
- [22786] libc: Stack buffer overflow in realpath() if input size is close
- to SSIZE_MAX (CVE-2018-11236)
- [22787] dynamic-link: _dl_check_caller returns false when libc is linked
- through an absolute DT_NEEDED path
- [22792] build: tcb-offsets.h dependency dropped
- [22797] libc: pkey_get() uses non-reserved name of argument
- [22807] libc: PTRACE_* constants missing for powerpc
- [22818] glob: posix/tst-glob_lstat_compat failure on alpha
- [22827] dynamic-link: RISC-V ELF64 parser mis-reads flag in ldconfig
- [22830] malloc: malloc_stats doesn't restore cancellation state on stderr
- [22848] localedata: ca_ES: update date definitions from CLDR
- [22862] build: _DEFAULT_SOURCE is defined even when _ISOC11_SOURCE is
- [22884] math: RISCV fmax/fmin handle signalling NANs incorrectly
- [22896] localedata: Update locale data for an_ES
- [22902] math: float128 test failures with GCC 8
- [22918] libc: multiple common of `__nss_shadow_database'
- [22919] libc: sparc32: backtrace yields infinite backtrace with
- makecontext
- [22926] libc: FTBFS on powerpcspe
- [22932] localedata: lt_LT: Update of abbreviated month names from CLDR
- required
- [22937] localedata: Greek (el_GR, el_CY) locales actually need ab_alt_mon
- [22947] libc: FAIL: misc/tst-preadvwritev2
- [22963] localedata: cs_CZ: Add alternative month names
- [22987] math: [powerpc/sparc] fdim inlines errno, exceptions handling
- [22996] localedata: change LC_PAPER to en_US in es_BO locale
- [22998] dynamic-link: execstack tests are disabled when SELinux is
- disabled
- [23005] network: Crash in __res_context_send after memory allocation
- failure
- [23007] math: strtod cannot handle -nan
- [23024] nss: getlogin_r is performing NSS lookups when loginid isn't set
- [23036] regex: regex equivalence class regression
- [23037] libc: initialize msg_flags to zero for sendmmsg() calls
- [23069] libc: sigaction broken on riscv64-linux-gnu
- [23094] localedata: hr_HR: wrong thousands_sep and mon_thousands_sep
- [23102] dynamic-link: Incorrect parsing of multiple consecutive $variable
- patterns in runpath entries (e.g. $ORIGIN$ORIGIN)
- [23137] nptl: s390: pthread_join sometimes block indefinitely (on 31bit
- and libc build with -Os)
- [23140] localedata: More languages need two forms of month names
- [23145] libc: _init/_fini aren't marked as hidden
- [23152] localedata: gd_GB: Fix typo in "May" (abbreviated)
- [23171] math: C++ iseqsig for long double converts arguments to double
- [23178] nscd: sudo will fail when it is run in concurrent with commands
- that changes /etc/passwd
- [23196] string: __mempcpy_avx512_no_vzeroupper mishandles large copies
- (CVE-2018-11237)
- [23206] dynamic-link: static-pie + dlopen breaks debugger interaction
- [23208] localedata: New locale - Lower Sorbian (dsb)
- [23233] regex: Memory leak in build_charclass_op function in file
- posix/regcomp.c
- [23236] stdio: Harden function pointers in _IO_str_fields
- [23250] nptl: Offset of __private_ss differs from GCC
- [23253] math: tgamma test suite failures on i686 with -march=x86-64
- -mtune=generic -mfpmath=sse
- [23259] dynamic-link: Unsubstituted ${ORIGIN} remains in DT_NEEDED for
- AT_SECURE
- [23264] libc: posix_spawnp wrongly executes ENOEXEC in non compat mode
- [23266] nis: stringop-truncation warning with new gcc8.1 in nisplus-
- parser.c
- [23272] math: fma(INFINITY,INFIITY,0.0) should be INFINITY
- [23277] math: nan function should not have const attribute
- [23279] math: scanf and strtod wrong for some hex floating-point
- [23280] math: wscanf rounds wrong; wcstod is ok for negative numbers and
- directed rounding
- [23290] localedata: IBM273 is not equivalent to ISO-8859-1
- [23303] build: undefined reference to symbol
- '__parse_hwcap_and_convert_at_platform@@GLIBC_2.23'
- [23307] dynamic-link: Absolute symbols whose value is zero ignored in
- lookup
- [23313] stdio: libio vtables validation and standard file object
- interposition
- [23329] libc: The __libc_freeres infrastructure is not properly run across
- DSO boundaries.
- [23349] libc: Various glibc headers no longer compatible with
- <linux/time.h>
- [23351] malloc: Remove unused code related to heap dumps and malloc
- checking
- [23363] stdio: stdio-common/tst-printf.c has non-free license
- [23396] regex: Regex equivalence regression in single-byte locales
- [23422] localedata: oc_FR: More updates of locale data
- [23442] build: New warning with GCC 8
- [23448] libc: Out of bounds access in IBM-1390 converter
- [23456] libc: Wrong index_cpu_LZCNT
- [23458] build: tst-get-cpu-features-static isn't added to tests
- [23459] libc: COMMON_CPUID_INDEX_80000001 isn't populated for Intel
- processors
- [23467] dynamic-link: x86/CET: A property note parser bug
-
-
-Version 2.27
-
-Major new features:
-
-* The GNU C Library can now be compiled with support for building static
- PIE executables (See --enable-static-pie in INSTALL). These static PIE
- executables are like static executables but can be loaded at any address
- and provide additional security hardening benefits at the cost of some
- memory and performance. When the library is built with --enable-static-pie
- the resulting libc.a is usable with GCC 8 and above to create static PIE
- executables using the GCC option '-static-pie'. This feature is currently
- supported on i386, x86_64 and x32 with binutils 2.29 or later, and on
- aarch64 with binutils 2.30 or later.
-
-* Optimized x86-64 asin, atan2, exp, expf, log, pow, atan, sin, cosf,
- sinf, sincosf and tan with FMA, contributed by Arjan van de Ven and
- H.J. Lu from Intel.
-
-* Optimized x86-64 trunc and truncf for processors with SSE4.1.
-
-* Optimized generic expf, exp2f, logf, log2f, powf, sinf, cosf and sincosf.
-
-* In order to support faster and safer process termination the malloc API
- family of functions will no longer print a failure address and stack
- backtrace after detecting heap corruption. The goal is to minimize the
- amount of work done after corruption is detected and to avoid potential
- security issues in continued process execution. Reducing shutdown time
- leads to lower overall process restart latency, so there is benefit both
- from a security and performance perspective.
-
-* The abort function terminates the process immediately, without flushing
- stdio streams. Previous glibc versions used to flush streams, resulting
- in deadlocks and further data corruption. This change also affects
- process aborts as the result of assertion failures.
-
-* On platforms where long double has the IEEE binary128 format (aarch64,
- alpha, mips64, riscv, s390 and sparc), the math library now implements
- _Float128 interfaces for that type, as defined by ISO/IEC TS 18661-3:2015.
- These are the same interfaces added in version 2.26 for some platforms where
- this format is supported but is not the format of long double.
-
-* On platforms with support for _Float64x (aarch64, alpha, i386, ia64,
- mips64, powerpc64le, riscv, s390, sparc and x86_64), the math library now
- implements interfaces for that type, as defined by ISO/IEC TS
- 18661-3:2015. These are corresponding interfaces to those supported for
- _Float128.
-
-* The math library now implements interfaces for the _Float32, _Float64 and
- _Float32x types, as defined by ISO/IEC TS 18661-3:2015. These are
- corresponding interfaces to those supported for _Float128.
-
-* glibc now implements the memfd_create and mlock2 functions on Linux.
-
-* Support for memory protection keys was added. The <sys/mman.h> header now
- declares the functions pkey_alloc, pkey_free, pkey_mprotect, pkey_set,
- pkey_get.
-
-* The copy_file_range function was added.
-
-* Optimized memcpy, mempcpy, memmove, and memset for sparc M7.
-
-* The ldconfig utility now processes `include' directives using the C/POSIX
- collation ordering. Previous glibc versions used locale-specific
- ordering, the change might break systems that relied on that.
-
-* Support for two grammatical forms of month names has been added.
- In a call to strftime, the "%B" and "%b" format specifiers will now
- produce the grammatical form required when the month is used as part
- of a complete date. New "%OB" and "%Ob" specifiers produce the form
- required when the month is named by itself. For instance, in Greek
- and in many Slavic and Baltic languages, "%B" will produce the month
- in genitive case, and "%OB" will produce the month in nominative case.
-
- In a call to strptime, "%B", "%b", "%h", "%OB", "%Ob", and "%Oh"
- are all valid and will all accept any known form of month
- name---standalone or complete, abbreviated or full. In a call to
- nl_langinfo, the query constants MON_1..12 and ABMON_1..12 return
- the strings used by "%B" and "%b", respectively. New query
- constants ALTMON_1..12 and _NL_ABALTMON_1..12 return the strings
- used by "%OB" and "%Ob", respectively.
-
- In a locale definition file, use "alt_mon" and "ab_alt_mon" to
- define the strings for %OB and %Ob, respectively; these have the
- same syntax as "mon" and "abmon". These arrays are optional; if they
- are not provided then they have the same content as "mon" and "abmon",
- respectively.
-
- These features are provided for locales which define "alt_mon" and/or
- "ab_alt_mon" in their locale source data. This release includes such
- alternative month name data for the following languages: Belarusian,
- Croatian, Greek, Lithuanian, Polish, Russian, and Ukrainian.
-
- This feature is currently a GNU extension, but it is expected to
- be added to the next revision of POSIX, and it is also already
- available on some BSD-derived operating systems.
-
- This feature will cause existing statically compiled applications
- to fail to load locales and fall back to the builtin C/POSIX locales.
- See notes below for other changes affecting compatibility.
-
-* Support for the RISC-V ISA running on Linux has been added. This port
- requires at least binutils-2.30, gcc-7.3.0, and linux-4.15; and is supported
- for the following ISA and ABI pairs:
-
- - rv64imac lp64
- - rv64imafdc lp64
- - rv64imafdc lp64d
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* Statically compiled applications attempting to load locales compiled for the
- GNU C Library version 2.27 will fail and fall back to the builtin C/POSIX
- locale. The reason for this is that the addition of the new "%OB" and "%Ob",
- support for two grammatical forms of the month names, also extends the locale
- data binary format. Static applications needing locale support must be
- recompiled to match the runtime and data they are deployed with. In some
- distributions there is an upgrade window where dynamically linked applications
- may use a new library but the old locale data and also fall back to the
- builtin C/POSIX locales; restarting the application process is sufficient to
- fix this.
-
-* Support for statically linked applications which call dlopen is deprecated
- and will be removed in a future version of glibc. Applications which call
- dlopen need to be linked dynamically instead.
-
-* Support for old programs which use internal stdio data structures and
- functions is deprecated. This includes programs which use the C++ streams
- provided by libstdc++ in GCC 2.95. Programs which use the internal
- symbols _IO_adjust_wcolumn, _IO_default_doallocate, _IO_default_finish,
- _IO_default_pbackfail, _IO_default_uflow, _IO_default_xsgetn,
- _IO_default_xsputn, _IO_doallocbuf, _IO_do_write, _IO_file_attach,
- _IO_file_close, _IO_file_close_it, _IO_file_doallocate, _IO_file_fopen,
- _IO_file_init, _IO_file_jumps, _IO_fileno, _IO_file_open,
- _IO_file_overflow, _IO_file_read, _IO_file_seek, _IO_file_seekoff,
- _IO_file_setbuf, _IO_file_stat, _IO_file_sync, _IO_file_underflow,
- _IO_file_write, _IO_file_xsputn, _IO_flockfile, _IO_flush_all,
- _IO_flush_all_linebuffered, _IO_free_backup_area, _IO_free_wbackup_area,
- _IO_init, _IO_init_marker, _IO_init_wmarker, _IO_iter_begin, _IO_iter_end,
- _IO_iter_file, _IO_iter_next, _IO_least_wmarker, _IO_link_in,
- _IO_list_all, _IO_list_lock, _IO_list_resetlock, _IO_list_unlock,
- _IO_marker_delta, _IO_marker_difference, _IO_remove_marker, _IO_seekmark,
- _IO_seekwmark, _IO_str_init_readonly, _IO_str_init_static,
- _IO_str_overflow, _IO_str_pbackfail, _IO_str_seekoff, _IO_str_underflow,
- _IO_switch_to_main_wget_area, _IO_switch_to_wget_mode,
- _IO_unsave_wmarkers, _IO_wdefault_doallocate, _IO_wdefault_finish,
- _IO_wdefault_pbackfail, _IO_wdefault_setbuf, _IO_wdefault_uflow,
- _IO_wdefault_xsgetn, _IO_wdefault_xsputn, _IO_wdoallocbuf, _IO_wdo_write,
- _IO_wfile_jumps, _IO_wfile_overflow, _IO_wfile_sync, _IO_wfile_underflow,
- _IO_wfile_xsputn, _IO_wmarker_delta, or _IO_wsetb may stop working with a
- future version of glibc. Unlike other symbol removals, these old
- applications will not be supported using compatibility symbols.
-
-* On GNU/Linux, the obsolete Linux constant PTRACE_SEIZE_DEVEL is no longer
- defined by <sys/ptrace.h>.
-
-* libm no longer supports SVID error handling (calling a user-provided
- matherr function on error) or the _LIB_VERSION variable to control error
- handling. (SVID error handling and the _LIB_VERSION variable still work
- for binaries linked against older versions of the GNU C Library.) The
- libieee.a library is no longer provided. math.h no longer defines struct
- exception, or the macros X_TLOSS, DOMAIN, SING, OVERFLOW, UNDERFLOW,
- TLOSS, PLOSS and HUGE.
-
-* The libm functions pow10, pow10f and pow10l are no longer supported for
- new programs. Programs should use the standard names exp10, exp10f and
- exp10l for these functions instead.
-
-* The mcontext_t type is no longer the same as struct sigcontext. On
- platforms where it was previously the same, this changes the C++ name
- mangling for interfaces involving this type.
-
-* The add-ons mechanism for building additional packages at the same time as
- glibc has been removed. The --enable-add-ons configure option is now
- ignored.
-
-* The --without-fp configure option is now ignored. Whether hardware
- floating-point instructions are used is now configured based on whether
- the compiler used at configure time (without any options implied by a
- --with-cpu= configure option) uses such instructions.
-
-* The res_hnok, res_dnok, res_mailok and res_ownok functions now check that
- the specified string can be parsed as a domain name.
-
-* In the malloc_info output, the <heap> element may contain another <aspace>
- element, "subheaps", which contains the number of sub-heaps.
-
-* The libresolv function p_secstodate is no longer supported for new
- programs.
-
-* The tilepro-*-linux-gnu configuration is no longer supported.
-
-* The nonstandard header files <libio.h> and <_G_config.h> are deprecated
- and will be removed in a future release. Software that is still using
- either header should be updated to use standard <stdio.h> interfaces
- instead.
-
- libio.h was originally the header for a set of supported GNU extensions,
- but they have not been maintained as such in many years, they are now
- standing in the way of improvements to stdio, and we don't think there are
- any remaining external users. _G_config.h was never intended for public
- use, but predates the bits convention.
-
-Changes to build and runtime requirements:
-
-* bison version 2.7 or later is required to generate code in the 'intl'
- subdirectory.
-
-Security related changes:
-
- CVE-2009-5064: The ldd script would sometimes run the program under
- examination directly, without preventing code execution through the
- dynamic linker. (The glibc project disputes that this is a security
- vulnerability; only trusted binaries must be examined using the ldd
- script.)
-
- CVE-2017-15670: The glob function, when invoked with GLOB_TILDE,
- suffered from a one-byte overflow during ~ operator processing (either
- on the stack or the heap, depending on the length of the user name).
- Reported by Tim Rühsen.
-
- CVE-2017-15671: The glob function, when invoked with GLOB_TILDE,
- would sometimes fail to free memory allocated during ~ operator
- processing, leading to a memory leak and, potentially, to a denial
- of service.
-
- CVE-2017-15804: The glob function, when invoked with GLOB_TILDE and
- without GLOB_NOESCAPE, could write past the end of a buffer while
- unescaping user names. Reported by Tim Rühsen.
-
- CVE-2017-17426: The malloc function, when called with an object size near
- the value SIZE_MAX, would return a pointer to a buffer which is too small,
- instead of NULL. This was a regression introduced with the new malloc
- thread cache in glibc 2.26. Reported by Iain Buclaw.
-
- CVE-2017-1000408: Incorrect array size computation in _dl_init_paths leads
- to the allocation of too much memory. (This is not a security bug per se,
- it is mentioned here only because of the CVE assignment.) Reported by
- Qualys.
-
- CVE-2017-1000409: Buffer overflow in _dl_init_paths due to miscomputation
- of the number of search path components. (This is not a security
- vulnerability per se because no trust boundary is crossed if the fix for
- CVE-2017-1000366 has been applied, but it is mentioned here only because
- of the CVE assignment.) Reported by Qualys.
-
- CVE-2017-16997: Incorrect handling of RPATH or RUNPATH containing $ORIGIN
- for AT_SECURE or SUID binaries could be used to load libraries from the
- current directory.
-
- CVE-2018-1000001: Buffer underflow in realpath function when getcwd function
- succeeds without returning an absolute path due to unexpected behaviour
- of the Linux kernel getcwd syscall. Reported by halfdog.
-
- CVE-2018-6485: The posix_memalign and memalign functions, when called with
- an object size near the value of SIZE_MAX, would return a pointer to a
- buffer which is too small, instead of NULL. Reported by Jakub Wilk.
-
- CVE-2018-6551: The malloc function, when called with an object size near
- the value of SIZE_MAX, would return a pointer to a buffer which is too
- small, instead of NULL.
-
-The following bugs are resolved with this release:
-
- [866] glob: glob should match dangling symlinks
- [1062] glob: sysdeps/generic/glob.c merge from gnulib (part 3 of 3)
- [2522] localedata: ca_ES@valencia: new Valencian (meridional Catalan)
- locale
- [5997] math: Very slow execution of sinf function
- [10580] localedata: hr_HR: updated locale
- [10871] locale: 'mon' array should contain both nominative and genitive
- cases
- [12349] localedata: eu_ES: incorrect thousands separator
- [13605] localedata: shn_MM: new Shan locale
- [13805] localedata: ru_RU: currency should use ',' as radix point
- [13953] localedata: km_KH: locale update
- [13994] localedata: mjw_IN: new locale
- [14121] build: make writes .mo files in po directory
- [14333] libc: Fix the race between atexit() and exit()
- [14681] dynamic-link: _dl_get_origin leaks memory via executable link map.
- [14925] localedata: bn_*: LC_IDENTIFICATION.language key should be
- "Bangla"
- [15260] localedata: LC_MESSAGES.{yes,no}{str,expr}: various errors
- [15261] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of full-
- width Latin characters
- [15332] localedata: es_CU: locale update
- [15436] stdio: Don't close or flush stdio streams on abort
- [15537] localedata: lv_LV: invalid collation for Latvian diacritical
- letters
- [16148] localedata: ca_ES: incorrect thousands separator
- [16750] dynamic-link: ldd should not try to execute the binaries
- (CVE-2009-5064)
- [16777] localedata: pl_PL: incorrect thousands separator in locale
- [16905] localedata: hanzi: new collation
- [17563] localedata: cmn_TW: add hanzi collation
- [17750] localedata: wrong collation order of diacritics in most locales
- [17804] libc: scandirat fails with ENOMEM because it checks for errno even
- if malloc succeeded
- [17956] build: Build fails on missing definitions from header file
- nss/nss.h when Mozilla NSS is used for cryptography
- [18203] libc: realpath() does not handle unreachable paths correctly
- [18572] dynamic-link: [arm] Lazy TLSDESC relocation has data race
- [18812] localedata: kab_DZ: new Kabyle Algeria locale
- [18822] libc: Internal functions are called via PLT
- [18858] string: _HAVE_STRING_ARCH_xxx aren't defined for i386 nor x86_64
- [19170] libc: __gmon_start__ defined in hppa in crtn.S
- [19574] libc: glibc should support building static PIE binaries
- [19852] localedata: charmaps/UTF-8: incorrect wcwidth for U+3099 and
- U+309A
- [19971] glob: glob: Do not skip entries with zero d_ino values
- [19982] localedata: fr.po: spelling mistake for error code EXDEV
- [20008] localedata: km_KH: convert to translit_neutral
- [20009] localedata: tr_TR: convert LC_CTYPE to i18n
- [20142] math: [x86_64] Add SSE4.1 trunc, truncf
- [20204] dynamic-link: _dl_open_hook and _dlfcn_hook hardening
- [20482] localedata: de_CH: abbreviated weekdays should be two letters
- [20498] localedata: miq_NI: new Mískitu / Miskito (miq) language locale
- for Nicaragua
- [20532] nss: getaddrinfo uses errno and h_errno without guaranteeing
- they're set, wrong errors returned by gaih_inet when lookup functions
- are not found.
- [20756] localedata: [PATCH] Use Unicode wise thousands separator
- [20826] network: posix/tst-getaddrinfo5 fails on hosts without network
- access
- [20952] localedata: yuw_PG: new locale
- [21084] localedata: charmaps/IBM858: new codepage
- [21161] manual: [PATCH] fix typo in manual/arith.texi on strtoul prototype
- [21242] libc: assert gives pedantic warning in old gcc versions
- [21265] dynamic-link: _dl_runtime_resolve isn't compatible with Intel C++
- __regcall calling convention
- [21309] math: signed integer overflow in sysdeps/ieee754/dbl-64/e_pow.c
- [21326] libc: C99 functions are not declared for C++11 and later if
- _GNU_SOURCE is not predefined by g++
- [21457] libc: sys/ucontext.h namespace
- [21530] libc: tmpfile() should be implemented using O_TMPFILE
- [21660] math: GCC fails to compile a formula with tgmath.h
- [21672] nptl: sys-libs/glibc on ia64 crashes on thread exit: signal
- SIGSEGV, Segmentation fault: pthread_create.c:432: __madvise
- (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
- [21684] math: tgmath.h handling of complex integers
- [21685] math: tgmath.h handling of bit-fields
- [21686] math: tgmath.h handling of __int128
- [21706] localedata: yesstr and nostr are missing for Breton [LC_MESSAGES]
- locale
- [21745] libc: [powerpc64le] Extra PLT reference with --enable-stack-
- protector=all
- [21750] localedata: column width of characters incompatible with classical
- wcwidth
- [21754] malloc: malloc: Perform as little work as possible after heap
- consistency check failures
- [21780] libc: hppa: p{read,write}v2 does not set ENOSUP on invalid flag
- [21790] libc: Missing __memset_zero_constant_len_parameter in libc.so
- [21791] string: Unused XXX_chk_XXX functions in libc.a
- [21815] dynamic-link: FAIL: elf/tst-prelink-cmp with GCC is defaulted to
- PIE
- [21836] localedata: Removed redundant data (LC_MONETARY) in various Indian
- locales
- [21845] localedata: Added new Locale bho_NP
- [21853] localedata: Fix abday Which looks same as day in zh_SG
- [21854] localedata: Added New Locale en_SC
- [21864] libc: xmalloc.o is compiled with -DMODULE_NAME=libc
- [21871] dynamic-link: _dl_runtime_resolve_avx_opt is slower than
- _dl_runtime_resolve_avx_slow
- [21885] network: getaddrinfo: gethosts does not release resolver context
- on memory allocation failure
- [21899] libc: XPG4.2 sigaction namespace
- [21908] dynamic-link: dynamic linker broke on ia64 (mmap2 consolidation is
- the suspect)
- [21913] libc: static binaries SIGSEGV in __brk when host's gcc is pie-by-
- default (i386)
- [21915] nss: nss_files can return with NSS_STATUS_SUCCESS and a clobbered
- errno value, causing getaddrinfo to fail
- [21920] localedata: Fix p_cs_precedes/n_cs_precedes for mt_MT
- [21922] network: getaddrinfo with AF_INET/AF_INET6 returns EAI_NONAME
- instead of EAI_NODATA
- [21928] libc: sys/ptrace.h: remove obsolete temporary development Linux
- constant PTRACE_SEIZE_DEVEL
- [21930] math: C-only gcc builtins used in <math.h> isinf
- [21932] network: Unpaired __resolv_context_get in generic get*_r
- implementation
- [21941] math: powerpc: Wrong register constraint for xssqrtqp in sqrtf128
- [21944] libc: sigval namespace
- [21951] localedata: Update hanzi collation by stroke
- [21955] math: Wrong alignment of L(SP_RANGE)/L(SP_INF_0) in
- sysdeps/x86_64/fpu/e_expf.S
- [21956] libc: Stack allocation in MIPS syscall impl (ubounded stack
- allocation in syscall loops)
- [21959] localedata: Fix Country name for xh_ZA
- [21960] localedata: Fix abmon for bem_ZM
- [21966] math: AVX2 mathvec functions use FMA without checking
- [21967] math: When 512-bit AVX2 wrapper functions in mathvec are used?
- [21971] localedata: Added New Locale for mfe_MU
- [21972] libc: assert macro requires operator== (int) for its argument type
- [21973] math: [sparc] libm missing sqrtl compat symbol
- [21974] libc: Remove __bb_init_func and __bb_exit_func
- [21982] string: stratcliff.c: error: assuming signed overflow does not
- occur with -O3
- [21986] stdio: __guess_grouping is called incorrectly
- [21987] math: [sparc32] wrong bits/long-double.h installed
- [22019] localedata: Wrong placement of monetary symbol in el_GR (negative
- amounts)
- [22022] localedata: Missing country_name for mni_IN
- [22023] localedata: Removed redundant data (LC_TIME and LC_MESSAGES) for
- niu_NZ
- [22025] locale: iconv: Inconsistency between pointer mangling and NULL
- checks
- [22026] locale: iconv_open: heap overflow on gconv_init failure
- [22028] math: bits/math-finite.h _MSUF_ expansion namespace
- [22035] math: [m68k] bits/math-inline.h macro namespace
- [22038] localedata: Fix abbreviated weeks and months for Somali
- [22044] localedata: Remove redundant data for Limburgish Language
- [22050] malloc: Linking with -lmcheck does not hook
- __malloc_initialize_hook correctly
- [22051] libc: zero terminator in the middle of glibc's .eh_frame
- [22052] malloc: malloc failed to compile with GCC 7 and -O3
- [22070] localedata: charmaps/UTF-8: wcwidth for
- Prepended_Concatenation_Mark codepoints set to 0 (should be 1)
- [22074] localedata: charmaps/UTF-8: wcwidth for U+1160-U+11FF (Hangul
- Jungseong and Jongseong) should be 0
- [22078] nss: nss_files performance issue in multi mode
- [22082] math: bits/math-finite.h exp10 condition
- [22086] libc: pcprofiledump incorrect cross-endian condition
- [22093] dynamic-link: ld.so no longer searches in .../x86_64
- [22095] network: Name server address allocation memory leak in resolv.conf
- parsing after OOM
- [22096] network: __resolv_conf_attach can incorrectly free passed conf
- object
- [22100] localedata: om_KE: LC_TIME: copy redundant data from om_ET
- [22101] dynamic-link: Dynamic loader must ignore "debug" shared objects
- e.g. ET_GNU_DEBUG_*
- [22111] malloc: malloc: per thread cache is not returned when thread exits
- [22112] localedata: Fix LC_TELEPHONE/LC_NAME for az_AZ
- [22134] libc: [linux] implement fexecve with execveat
- [22142] libc: [powerpc] printf outputs a wrong value of DBL_MAX on ppc64 and
- ppc64le
- [22145] libc: ttyname() gives up too early in the face of namespaces
- [22146] math: C++ build issue with float128 on x86_64
- [22153] nptl: nptl: save error code before process termination
- [22156] libc: [hppa,ia64,microblaze] Executable stack default
- [22159] malloc: malloc: MALLOC_CHECK_ broken with --enable-tunables=no
- [22161] nscd: nscd cache prune for netgroups hangs after timeout bump
- [22165] libc: [hppa] Text relocations in libc.so
- [22180] libc: destructor registered via __cxa_atexit is called twice
- [22183] glob: commit 5554304f0ddd ("posix: Allow glob to match dangling
- symlinks") cause "make" segfaults
- [22189] math: [powerpc] math_private.h definitions of math_opt_barrier and
- math_force_eval
- [22207] libc: FAIL: stdlib/test-atexit-race
- [22225] math: nearbyint arithmetic moved before feholdexcept
- [22229] math: [sparc32] missing copysignl, fabsl, fmal compat symbols
- [22235] math: iscanonical in C++ and float128
- [22243] math: log2(0) and log10(0) are wrong in downward rounding without
- the svid compat wrapper
- [22244] math: ynf and yn are wrong without the svid compat wrapper
- [22273] libc: Improper assert in Linux posix_spawn implementation
- [22284] libc: -pg -pie doesn't work
- [22292] locale: localedef exits with error 4 when it should be error 1
- [22294] locale: Allow "" for int_currency_symbol definition in locales.
- [22295] locale: Don't warn on non-symbolic characters in locale sources in
- --verbose.
- [22296] math: glibc 2.26: signbit build issue with Gcc 5.5.0 on x86_64
- [22298] nptl: x32: lockups on recursive pthread_mutex_lock after upgrade
- to 2.26
- [22299] dynamic-link: Problem with $PLATFORM on x86_64 platform
- [22320] glob: Buffer overflow in glob with GLOB_TILDE (CVE-2017-15670)
- [22321] libc: sysconf(_SC_IOV_MAX) returns -1 on Linux
- [22322] libc: [mips64] wrong bits/long-double.h installed
- [22325] glob: Memory leak in glob with GLOB_TILDE (CVE-2017-15671)
- [22332] glob: Buffer overflow in glob with GLOB_TILDE in unescaping
- (CVE-2017-15804)
- [22336] localedata: cs_CZ LC_COLLATE does not use i18n
- [22343] malloc: Integer overflow in posix_memalign
- [22347] libc: getrandom() returns the number of bytes that were copied to
- the buffer even though the comments say "Return 0 on success and -1 on
- failure."
- [22353] string: sysdeps/i386/i586/strcpy.S isn't maintainable
- [22362] libc: Installed crt1.o, crti,.o and crtn.o files are used with
- -m32
- [22370] dynamic-link: Incorrect note padding check
- [22375] libc: malloc returns pointer from tcache_get when should return
- NULL (CVE-2017-17426)
- [22377] math: iseqsig, float128 and C++
- [22382] localedata: Error in tpi_PG locale
- [22387] localedata: Replace unicode sequences <Uxxxx> for characters
- inside the ASCII printable range
- [22402] math: [powerpc64le] __MATH_TG does not support _Float128 for
- -mlong-double-64
- [22403] localedata: Slash needs escaping in some locales
- [22408] malloc: malloc_info access heaps without arena lock, ignores heaps
- [22409] network: res_hnok does not accept some host names used on the
- Internet
- [22412] network: res_dnok, res_hnok should perform syntax checks
- [22413] network: ns_name_pton ignores syntactically invalid trailing
- backslash
- [22415] stdio: setvbuf can lead to invalid free/segfault
- [22432] build: Non-deterministic build
- [22439] malloc: malloc_info should compute summary statistics for all sub-
- heaps in an arena
- [22442] network: if_nametoindex could report index for the wrong
- networking interface
- [22446] build: aliasing violation calling readlink in handle_request
- [22447] build: unsafe call to strlen with a non-string in getlogin_r.c
- [22457] libc: Generic preadv/pwritev incorrectly calls __posix_memalign
- [22459] libc: FAIL: elf/check-localplt with __stack_chk_fail related to
- __nscd_hash/__nss_hash
- [22463] network: p_secstodate overflow handling
- [22469] localedata: pl_PL LC_COLLATE does not use i18n
- [22478] libc: sigwait can fail with EINTR
- [22505] libc: ldconfig processes include directive in locale-specific
- order
- [22515] localedata: hsb_DE LC_COLLATE does not use copy "iso14651_t1"
- [22517] localedata: et_EE LC_COLLATE does not use copy "iso14651_t1"
- [22519] localedata: is_IS LC_COLLATE does not use copy "iso14651_t1"
- [22524] localedata: lt_LT LC_COLLATE does not use copy "iso14651_t1"
- [22527] localedata: tr_TR LC_COLLATE does not use copy "iso14651_t1"
- [22534] localedata: Collation rules for Serbian and Bosnian should be the
- same as for Croatian
- [22561] math: [DR#471] cacosh (0 + iNaN) should return NaN +/- i pi/2
- [22568] math: [DR#471] ctanh (0 + iNaN), ctanh (0 + i Inf)
- [22577] libc: missing newline after "cannot allocate TLS data structures
- for initial thread"
- [22588] manual: manual/conf.texi: missing underscore in front of
- SC_SSIZE_MAX
- [22593] math: nextafter and nexttoward are declared with const attribute
- [22596] manual: manual: finite(nan) wrongly described as returning nonzero
- [22603] string: ia64 memchr overflows internal pointer check
- [22605] libc: SH clone does not set the exit code correctly
- [22606] dynamic-link: Incorrect array size computation in _dl_init_paths
- (CVE-2017-1000408)
- [22607] dynamic-link: Buffer Overflow in _dl_init_paths (CVE-2017-1000409)
- [22611] malloc: malloc/tst-realloc wrongly assumes that errno must not be
- modified in case of success
- [22614] build: gcc: error: unrecognized command line option ‘-no-pie’
- [22615] manual: manual: ambiguous wording about errno value in case of
- success
- [22624] libc: MIPS setjmp() saves incorrect 'o0' register in --enable-
- stack-protector=all
- [22625] dynamic-link: RPATH $ORIGIN replaced by PWD for AT_SECURE/SUID
- binaries or if /proc is not mounted (CVE-2017-16997)
- [22627] dynamic-link: $ORIGIN in $LD_LIBRARY_PATH is substituted twice
- [22630] build: $(no-pie-ldflag) is no longer effective
- [22631] math: [m68k] Bad const attributes in bits/mathinline.h
- [22635] nptl: pthread_self returns NULL before libpthread is loaded
- [22636] nptl: PTHREAD_STACK_MIN is too small on x86-64
- [22637] nptl: guard size is subtracted from thread stack size instead of
- adding it on top
- [22648] libc: getrlimit/setrlimit with RLIM_INFINITY broken on alpha
- [22657] localedata: hu_HU: Avoid double space in date
- [22660] math: fmax, fmin sNaN handling on alpha
- [22664] libc: New warning of GCC8
- [22665] math: alpha: ceil and floor raise inexact exceptions
- [22666] math: alpha: trunc raise inexact exceptions
- [22667] libc: makecontext lacks stack alignment on i386
- [22678] libc: prlimit fails for RLIM_INFINITY values on 32-bit machines
- [22679] libc: getcwd(3) can succeed without returning an absolute path
- (CVE-2018-1000001)
- [22685] libc: PowerPC: Static AT_SECURE binaries segfault with lock-
- elision and tunables
- [22687] math: [powerpc-nofpu] complex long double functions spurious
- "invalid" exception
- [22688] math: [powerpc-nofpu] remainderl wrong sign of zero result
- [22690] math: [ldbl-128ibm] lrintl, lroundl missing "invalid" exceptions
- [22691] math: [powerpc-nofpu] fmaxmagl, fminmagl spurious "invalid"
- exception
- [22693] math: [ldbl-128ibm] log1pl (-qNaN) spurious "invalid" exception
- [22697] math: [powerpc] llround spurious "inexact" exceptions on 32-bit
- power4
- [22701] nis: Incomplete removal of libnsl
- [22702] math: [powerpc-nofpu] nearbyintl traps with trapping "inexact"
- [22707] libc: Missing defines in elf.h for DF_1_STUB and DF_1_PIE.
- [22715] dynamic-link: FAIL: elf/tst-audit10
- [22719] libc: Backtrace tests fail on hppa
- [22742] libc: [aarch64] mcontext_t __reserved field got renamed
- [22743] nptl: __pthread_register_cancel corrupts stack after f81ddabffd
- [22765] crypt: (struct crypt_data *data)->initialized is not set to zero
- before the first call to crypt_r () in crypt/badsalttest.c
-
-
-Version 2.26
-
-Major new features:
-
-* A per-thread cache has been added to malloc. Access to the cache requires
- no locks and therefore significantly accelerates the fast path to allocate
- and free small amounts of memory. Refilling an empty cache requires locking
- the underlying arena. Performance measurements show significant gains in a
- wide variety of user workloads. Workloads were captured using a special
- instrumented malloc and analyzed with a malloc simulator. Contributed by
- DJ Delorie with the help of Florian Weimer, and Carlos O'Donell.
-
-* Unicode 10.0.0 Support: Character encoding, character type info, and
- transliteration tables are all updated to Unicode 10.0.0, using
- generator scripts contributed by Mike FABIAN (Red Hat).
- These updates cause user visible changes, especially the changes in
- wcwidth for many emoji characters cause problems when emoji sequences
- are rendered with pango, see for example:
- https://bugzilla.gnome.org/show_bug.cgi?id=780669#c5
-
-* Collation of Hungarian has been overhauled and is now consistent with "The
- Rules of Hungarian Orthography, 12th edition" (Bug 18934). Contributed by
- Egmont Koblinger.
-
-* Improvements to the DNS stub resolver, contributed by Florian Weimer:
-
- - The GNU C Library will now detect when /etc/resolv.conf has been
- modified and reload the changed configuration. The new resolver option
- “no-reload” (RES_NORELOAD) disables this behavior.
-
- - The GNU C Library now supports an arbitrary number of search domains
- (configured using the “search” directive in /etc/resolv.conf);
- previously, there was a hard limit of six domains. For backward
- compatibility, applications that directly modify the ‘_res’ global
- object are still limited to six search domains.
-
- - When the “rotate” (RES_ROTATE) resolver option is active, the GNU C
- Library will now randomly pick a name server from the configuration as a
- starting point. (Previously, the second name server was always used.)
-
-* The tunables feature is now enabled by default. This allows users to tweak
- behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
-
-* New function reallocarray, which resizes an allocated block (like realloc)
- to the product of two sizes, with a guaranteed clean failure upon integer
- overflow in the multiplication. Originally from OpenBSD, contributed by
- Dennis Wölfing and Rüdiger Sonderfeld.
-
-* New wrappers for the Linux-specific system calls preadv2 and pwritev2.
- These are extended versions of preadv and pwritev, respectively, taking an
- additional flags argument. The set of supported flags depends on the
- running kernel; full support currently requires kernel 4.7 or later.
-
-* posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
- create a new session ID for the spawned process. This feature is
- scheduled to be added to the next major revision of POSIX; for the time
- being, it is available under _GNU_SOURCE.
-
-* errno.h is now safe to use from C-preprocessed assembly language on all
- supported operating systems. In this context, it will only define the
- Exxxx constants, as preprocessor macros expanding to integer literals.
-
-* On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
- 128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE
- 754-2008) and ISO/IEC TS 18661-3:2015. Contributed by Paul E. Murphy,
- Gabriel F. T. Gomes, Tulio Magno Quites Machado Filho, and Joseph Myers.
-
- To compile programs that use this feature, the compiler must support
- 128-bit floating point with the type name _Float128 (as defined by TS
- 18661-3) or __float128 (the nonstandard name used by GCC for C++, and for
- C prior to version 7). _GNU_SOURCE or __STDC_WANT_IEC_60559_TYPES_EXT__
- must be defined to make the new interfaces visible.
-
- The new functions and macros correspond to those present for other
- floating-point types (except for a few obsolescent interfaces not
- supported for the new type), with F128 or f128 suffixes; for example,
- strtof128, HUGE_VAL_F128 and cosf128. Following TS 18661-3, there are no
- printf or scanf formats for the new type; the strfromf128 and strtof128
- interfaces should be used instead.
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The synchronization that pthread_spin_unlock performs has been changed to
- now be equivalent to a C11 atomic store with release memory order to the
- spin lock's memory location. Previously, several (but not all)
- architectures used stronger synchronization (e.g., containing what is
- often called a full barrier). This change can improve performance, but
- may affect odd fringe uses of spin locks that depend on the previous
- behavior (e.g., using spin locks as atomic variables to try to implement
- Dekker's mutual exclusion algorithm).
-
-* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
- removed.
-
-* Sun RPC is deprecated. The rpcgen program, librpcsvc, and Sun RPC headers
- will only be built and installed when the GNU C Library is configured with
- --enable-obsolete-rpc. This allows alternative RPC implementations, such
- as TIRPC or rpcsvc-proto, to be used.
-
-* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
- libnss_compat, are deprecated, and will not be built or installed by
- default.
-
- The NIS(+) support library, libnsl, is also deprecated. By default, a
- compatibility shared library will be built and installed, but not headers
- or development libraries. Only a few NIS-related programs require this
- library. (In particular, the GNU C Library has never required programs
- that use 'gethostbyname' to be linked with libnsl.)
-
- Replacement implementations based on TIRPC, which additionally support
- IPv6, are available from <https://github.com/thkukuk/>. The configure
- option --enable-obsolete-nsl will cause libnsl's headers, and the NIS(+)
- name service modules, to be built and installed.
-
-* The DNS stub resolver no longer performs EDNS fallback. If EDNS or DNSSEC
- support is enabled, the configured recursive resolver must support EDNS.
- (Responding to EDNS-enabled queries with responses which are not
- EDNS-enabled is fine, but FORMERR responses are not.)
-
-* res_mkquery and res_nmkquery no longer support the IQUERY opcode. DNS
- servers have not supported this opcode for a long time.
-
-* The _res_opcodes variable has been removed from libresolv. It had been
- exported by accident.
-
-* <string.h> no longer includes inline versions of any string functions,
- as this kind of optimization is better done by the compiler. The macros
- __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.
-
-* The nonstandard header <xlocale.h> has been removed. Most programs should
- use <locale.h> instead. If you have a specific need for the definition of
- locale_t with no other declarations, please contact
- libc-alpha@sourceware.org and explain.
-
-* The obsolete header <sys/ultrasound.h> has been removed.
-
-* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>.
-
-* The obsolete function cfree has been removed. Applications should use
- free instead.
-
-* The stack_t type no longer has the name struct sigaltstack. This changes
- the C++ name mangling for interfaces involving this type.
-
-* The ucontext_t type no longer has the name struct ucontext. This changes
- the C++ name mangling for interfaces involving this type.
-
-* On M68k GNU/Linux and MIPS GNU/Linux, the fpregset_t type no longer has
- the name struct fpregset. On Nios II GNU/Linux, the mcontext_t type no
- longer has the name struct mcontext. On SPARC GNU/Linux, the struct
- mc_fq, struct rwindow, struct fpq and struct fq types are no longer
- defined in sys/ucontext.h, the mc_fpu_t type no longer has the name struct
- mc_fpu, the gwindows_t type no longer has the name struct gwindows and the
- fpregset_t type no longer has the name struct fpu. This changes the C++
- name mangling for interfaces involving those types.
-
-* On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
- synced with the kernel:
-
- - PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS
- are not supported on this architecture and have been removed.
-
- - PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
- PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
- PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND have been added.
-
- Programs that assume the GET/SETREGS ptrace requests are universally
- available will now fail to build, instead of malfunctioning at runtime.
-
-Changes to build and runtime requirements:
-
-* Linux kernel 3.2 or later is required at runtime, on all architectures
- supported by that kernel. (This is a change from version 2.25 only for
- x86-32 and x86-64.)
-
-* GNU Binutils 2.25 or later is now required to build the GNU C Library.
-
-* On most architectures, GCC 4.9 or later is required to build the GNU C
- Library. On powerpc64le, GCC 6.2 or later is required.
-
- Older GCC versions and non-GNU compilers are still supported when
- compiling programs that use the GNU C Library. (We do not know exactly
- how old, and some GNU extensions to C may be _de facto_ required. If you
- are interested in helping us make this statement less vague, please
- contact libc-alpha@sourceware.org.)
-
-Security related changes:
-
-* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
- to avoid fragmentation-based spoofing attacks (CVE-2017-12132).
-
-* LD_LIBRARY_PATH is now ignored in binaries running in privileged AT_SECURE
- mode to guard against local privilege escalation attacks (CVE-2017-1000366).
-
-* Avoid printing a backtrace from the __stack_chk_fail function since it is
- called on a corrupt stack and a backtrace is unreliable on a corrupt stack
- (CVE-2010-3192).
-
-* A use-after-free vulnerability in clntudp_call in the Sun RPC system has been
- fixed (CVE-2017-12133).
-
-The following bugs are resolved with this release:
-
- [984] network: Respond to changed resolv.conf in gethostbyname
- [5010] network: sunrpc service cleanup causes unwanted port mapper traffic
- [12068] localedata: sc_IT: misspelled yesexpr/day/abday/mon/abmon/date_fmt
- fields
- [12189] libc: __stack_chk_fail should not attempt a backtrace
- (CVE-2010-3192)
- [14096] time: Race condition on timezone/tst-timezone.out
- [14172] localedata: az_IR: new locale
- [14995] build: glibc fails to build if gold is the default linker, even if
- ld.bfd is available
- [15998] build: [powerpc] Set arch_minimum_kernel for powerpc LE
- [16637] network: inet_pton function is accepting IPv6 with bad format
- [16640] string: string/strtok.c: undefined behaviour inconsistent between
- x86 and other generic code
- [16875] localedata: ko_KR: fix lang_name
- [17225] localedata: ar_SY: localized month names for May and June are
- incorrect
- [17297] localedata: da_DK: wrong date_fmt string
- [18907] stdio: Incorrect order of __wur __THROW in <printf.h>
- [18934] localedata: hu_HU: collate: fix multiple bugs and add tests
- [18988] nptl: pthread wastes memory with mlockall(MCL_FUTURE)
- [19066] localedata: ar_SA abbreviated day and month names are in English
- [19569] network: resolv: Support an arbitrary number of search domains
- [19570] network: Implement random DNS server selection in the stub
- resolver
- [19838] locale: localedef fails on PA-RISC
- [19919] localedata: iso14651_t1_common: Correct the Malayalam sorting
- order of 0D36 and 0D37
- [19922] localedata: iso14651_t1_common: Define collation for Malayalam
- chillu characters
- [20098] libc: FAIL: debug/backtrace-tst on hppa
- [20257] network: sunrpc: clntudp_call does not enforce timeout when
- receiving data
- [20275] localedata: locale day/abday/mon/abmon should not have trailing
- whitespace
- [20313] localedata: Update locale data to Unicode 9.0
- [20424] manual: Document how to provide a malloc replacement
- [20496] localedata: agr_PE: new language locale Awajún / Aguaruna (agr)
- for Peru
- [20686] locale: Add el_GR@euro to SUPPORTED.
- [20831] dynamic-link: _dl_map_segments does not test for __mprotect
- failures consistently
- [21015] dynamic-link: Document and fix --enable-bind-now
- [21016] nptl: pthread_cond support is broken on hppa
- [21029] libc: glibc-2.23 (and later) fails to compile with -fno-omit-
- frame-pointer on i386
- [21049] libc: segfault in longjmp_chk() due to clobbered processor
- register
- [21075] libc: unused assigment to %g4 in sparc/sparc{64,32}/clone.S
- [21088] libc: Build fails with --enable-static-nss
- [21094] math: cosf(1.57079697) has 3 ulp error on targets where the
- generic c code is used
- [21109] libc: Tunables broken on big-endian
- [21112] math: powf has large ulp errors with base close to 1 and exponent
- around 4000
- [21115] network: sunrpc: Use-after-free in error path in clntudp_call
- (CVE-2017-12133)
- [21120] malloc: glibc malloc is incompatible with GCC 7
- [21130] math: Incorrect return from y0l (-inf) and y1l (-inf) when linking
- with -lieee
- [21134] math: Exception (divide by zero) not set for y0/y1 (0.0) and y0/y1
- (-0.0) when linking with -lieee
- [21171] math: log10, log2 and lgamma return incorrect results
- [21179] libc: handle R_SPARC_DISP64 and R_SPARC_REGISTER relocs
- [21182] libc: __memchr_sse2: regression in glibc-2.25 on i686
- [21207] localedata: ce_RU: update weekdays from CLDR
- [21209] dynamic-link: LD_HWCAP_MASK read in setuid binaries
- [21217] localedata: Update months from CLDR-31
- [21232] libc: miss posix_fadvise64 on MIPS64 when static linking
- [21243] libc: support_delete_temp_file should issue warning for failed
- remove()
- [21244] libc: support resolv_test_start() socket fd close should be
- checked for errors.
- [21253] libc: localedef randomly segfaults when using -fstack-check due to
- new posix_spawn implementation
- [21258] dynamic-link: Branch predication in _dl_runtime_resolve_avx512_opt
- leads to lower CPU frequency
- [21259] libc: [alpha] termios.h missing IXANY for POSIX
- [21261] libc: [sparc64] bits/setjmp.h namespace
- [21267] network: [mips] bits/socket.h IOC* namespace
- [21268] libc: [alpha] termios.h NL2, NL3 namespace
- [21270] libc: mmap64 silently truncates large offset values
- [21275] libc: posix_spawn always crashes on ia64 now
- [21277] libc: [alpha] termios.h missing IUCLC for UNIX98 and older
- [21280] math: [powerpc] logbl for POWER7 return incorrect results
- [21289] libc: Incorrect declaration for 32-bit platforms with
- _FILE_OFFSET_BITS=64 causes build error
- [21295] network: GETAI(AF_UNSPEC) drops IPv6 addresses if nss module does
- not support gethostbyname4_r
- [21298] nptl: rwlock can deadlock on frequent reader/writer phase
- switching
- [21338] malloc: mallopt M_ARENA_MAX doesn't set the maximum number of
- arenas
- [21340] libc: Support POSIX_SPAWN_SETSID
- [21357] libc: unwind-dw2-fde deadlock when using AddressSanitizer
- [21359] network: ns_name_pack needs additional byte in destination buffer
- [21361] network: resolv: Reduce advertised EDNS0 buffer size to guard
- against fragmentation attacks (CVE-2017-12132)
- [21369] network: resolv: Remove EDNS fallback
- [21371] libc: Missing timespec definition when compiled with _XOPEN_SOURCE
- and _POSIX_C_SOURCE
- [21386] nptl: Assertion in fork for distinct parent PID is incorrect
- [21391] dynamic-link: x86: Set dl_platform and dl_hwcap from CPU features
- [21393] stdio: Missing dup3 error check in freopen, freopen64
- [21396] libc: Use AVX2 memcpy/memset on Skylake server
- [21399] localedata: Bad description for U00EC in
- localedata/charmaps/CP1254
- [21411] malloc: realloc documentation error
- [21426] network: sys/socket.h uio.h namespace
- [21428] libc: [aarch64] tst-backtrace5 testsuite failure
- [21445] libc: signal.h bsd_signal namespace
- [21455] network: Network headers stdint.h namespace
- [21474] network: resolv: res_init does not use RES_DFLRETRY (2) but 4 for
- retry value
- [21475] network: resolv: Overlong search path is truncated mid-label
- [21511] libc: sigstack namespace
- [21512] libc: clone() ends up calling exit_group() through _exit() wrapper
- [21514] libc: sysdeps/unix/sysv/linux/sys/syscall.h:31:27: fatal error:
- bits/syscall.h: No such file or directory
- [21517] libc: struct sigaltstack namespace
- [21528] dynamic-link: Duplicated minimal strtoul implementations in ld.so
- [21533] localedata: Update locale data to Unicode 10.0
- [21537] libc:
- ../sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S:44: Error:
- junk at end of line, first unrecognized character is `@'
- [21538] libc: SIG_HOLD missing for XPG4
- [21539] libc: S390: Mismatch between kernel and glibc ptrace.h with
- request 12: PTRACE_SINGLEBLOCK vs PTRACE_GETREGS.
- [21542] libc: Use conservative default for sysconf (_SC_NPROCESSORS_ONLN)
- [21543] libc: sigevent namespace
- [21548] libc: [mips] get/set/make/swap context for MIPS O32 assume wrong
- size for general purpose registers in mcontext_t structure
- [21550] libc: sigwait namespace
- [21552] libc: XPG4 bsd_signal namespace
- [21554] libc: sigpause namespace
- [21560] libc: sys/wait.h signal.h namespace
- [21561] libc: waitid namespace
- [21573] nptl: GCC 7: /usr/bin/install: cannot remove
- '/usr/include/stdlib.h': Permission denied
- [21575] libc: sys/wait.h missing struct rusage definition
- [21584] libc: sigaltstack etc namespace
- [21597] libc: siginterrupt namespace
- [21607] math: hppa: FAIL: math/test-tgmath
- [21609] dynamic-link: Incomplete workaround for GCC __tls_get_addr ABI
- issue on x86-64
- [21622] libc: [tile] missing SA_* for POSIX.1:2008
- [21624] dynamic-link: ld.so: Unsafe alloca allows local attackers to alias
- stack and heap (CVE-2017-1000366)
- [21625] libc: wait3 namespace
- [21654] nss: Incorrect pointer alignment in NSS group merge result
- construction
- [21657] network: Parse interface zone id for node-local multicast
- [21662] string: memcmp-avx2-movbe.S lacks saturating subtraction for
- between_2_3
- [21666] libc: .symver is used on common symbol
- [21668] network: resolv: res_init cross-thread broadcast introduces race
- conditions
- [21687] math: tgmath.h totalorder, totalordermag return type
- [21694] locale: Current Glibc Locale Does Not Support Tok-Pisin and Fiji
- Hindi Locale
- [21696] libc: Incorrect assumption of of __cpu_mask in
- posix/sched_cpucount.c
- [21697] libc: sysdeps/posix/spawni.c: 2 * suspicious condition ?
- [21706] localedata: yesstr and nostr are missing for Breton [LC_MESSAGES]
- locale
- [21707] math: ppc64le: Invalid IFUNC resolver from libgcc calls getauxval,
- leading to relocation crash
- [21709] libc: resolv_conf.c:552: update_from_conf: Assertion
- `resolv_conf_matches (resp, conf)' failed.
- [21710] localedata: Added Samoan language locale for Samoa
- [21711] localedata: Pashto yesstr/nostr locale are missing
- [21715] nptl: sysdeps/nptl/bits/pthreadtypes.h: typedef guard
- __have_pthread_attr_t can cause redefinition of typedef ‘pthread_attr_t’
- [21721] localedata: Incorrect Full Weekday names for ks_IN@devanagari
- [21723] localedata: yesstr/nostr missing for Chinese language locale
- [21724] localedata: yesstr and nostr are missing for Xhosa [LC_MESSAGES]
- locale
- [21727] localedata: yesstr and nostr are missing for Tsonga [LC_MESSAGES]
- locale
- [21728] localedata: New Locale for Tongan language
- [21729] localedata: incorrect LC_NAME fields for hi_IN
- [21733] localedata: yesstr and nostr are missing for zh_HK
- [21734] localedata: Missing yesstr and nostr are for kw_GB
- [21738] libc: misc/tst-preadvwritev2 and misc/tst-preadvwritev64v2 fail
- [21741] libc: Undefined __memmove_chk_XXX and __memset_chk_XXX in libc.a
- [21742] libc: _dl_num_cache_relocations is undefined in libc.a
- [21743] localedata: ks_IN@devanagari: abday strings mismatch the day
- strings
- [21744] libc: Tests failing on --enable-tunables --enable-stack-
- protector=all
- [21749] localedata: Wrong abbreviated day name (“abday”) for
- ar_JO/ar_LB/ar_SY
- [21756] localedata: missing yesstr, nostr for nds_DE and nds_NL
- [21757] localedata: missing yesstr, nostr for pap_AW and pap_CW
- [21759] localedata: missing yesstr and nostr for Tigrinya
- [21760] localedata: Fix LC_MESSAGES and LC_ADDRESS for anp_IN
- [21766] localedata: Wrong LC_MESSAGES for om_ET Locale
- [21767] localedata: Missing Bislama locales
- [21768] localedata: Missing yesstr and nostr for aa_ET
- [21770] localedata: Missing Field in li_NL
- [21778] nptl: Robust mutex may deadlock
- [21779] libc: MicroBlaze segfaults when loading libpthread
- [21783] localedata: Fix int_select international_call_prefixes
- [21784] localedata: Inconsistency in country_isbn
- [21788] localedata: Missing Country Postal Abbreviations
- [21794] localedata: Added-country_isbn-for-Italy
- [21795] localedata: Add/Fix country_isbn for France
- [21796] localedata: Added country_isbn for Republic of Korea
- [21797] localedata: Fix inconsistency in country_isbn and missing prefixes
- [21799] localedata: Added int_select international_call_prefixes
- [21801] localedata: Added int_select international_call_prefixes
- [21804] nptl: Double semicolon in thread-shared-types.h
- [21807] localedata: LC_ADDRESS fix for pap_CW
- [21808] localedata: Fix LC_ADDRESS for pap_AW
- [21821] localedata: Added country_name in mai_IN
- [21822] localedata: Fix LC_TIME for mai_IN
- [21823] localedata: missing yesstr, nostr for sa_IN
- [21825] localedata: Fix name_mrs for mag_IN
- [21828] localedata: 2.26 changelog should mention user visible changes
- with unicode 9.0
- [21835] localedata: Added Maithili language locale for Nepal
- [21838] localedata: Removed redundant data for the_NP
- [21839] localedata: Fix LC_MONETARY for ta_LK
- [21844] localedata: Fix Latin characters and Months Sequence.
- [21848] localedata: Fix mai_NP Title Name
-
-
-Version 2.25
-
-* The feature test macro __STDC_WANT_LIB_EXT2__, from ISO/IEC TR
- 24731-2:2010, is supported to enable declarations of functions from that
- TR. Note that not all functions from that TR are supported by the GNU C
- Library.
-
-* The feature test macro __STDC_WANT_IEC_60559_BFP_EXT__, from ISO/IEC TS
- 18661-1:2014, is supported to enable declarations of functions and macros
- from that TS. Note that not all features from that TS are supported by
- the GNU C Library.
-
-* The feature test macro __STDC_WANT_IEC_60559_FUNCS_EXT__, from ISO/IEC TS
- 18661-4:2015, is supported to enable declarations of functions and macros
- from that TS. Note that most features from that TS are not supported by
- the GNU C Library.
-
-* The nonstandard feature selection macros _REENTRANT and _THREAD_SAFE are
- now treated as compatibility synonyms for _POSIX_C_SOURCE=199506L.
- Since the GNU C Library defaults to a much newer revision of POSIX, this
- will only affect programs that specifically request an old conformance
- mode. For instance, a program compiled with -std=c89 -D_REENTRANT will
- see a change in the visible declarations, but a program compiled with
- just -D_REENTRANT, or -std=c99 -D_POSIX_C_SOURCE=200809L -D_REENTRANT,
- will not.
-
- Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
- defined by all multithreaded code, but glibc has not required this for
- many years.
-
-* The inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated. This
- means that in a future release, the macros “major”, “minor”, and “makedev”
- will only be available from <sys/sysmacros.h>.
-
- These macros are not part of POSIX nor XSI, and their names frequently
- collide with user code; see for instance glibc bug 19239 and Red Hat bug
- 130601. <stdlib.h> includes <sys/types.h> under _GNU_SOURCE, and C++ code
- presently cannot avoid being compiled under _GNU_SOURCE, exacerbating the
- problem.
-
-* New <fenv.h> features from TS 18661-1:2014 are added to libm: the
- fesetexcept, fetestexceptflag, fegetmode and fesetmode functions, the
- femode_t type and the FE_DFL_MODE and FE_SNANS_ALWAYS_SIGNAL macros.
-
-* Integer width macros from TS 18661-1:2014 are added to <limits.h>:
- CHAR_WIDTH, SCHAR_WIDTH, UCHAR_WIDTH, SHRT_WIDTH, USHRT_WIDTH, INT_WIDTH,
- UINT_WIDTH, LONG_WIDTH, ULONG_WIDTH, LLONG_WIDTH, ULLONG_WIDTH; and to
- <stdint.h>: INT8_WIDTH, UINT8_WIDTH, INT16_WIDTH, UINT16_WIDTH,
- INT32_WIDTH, UINT32_WIDTH, INT64_WIDTH, UINT64_WIDTH, INT_LEAST8_WIDTH,
- UINT_LEAST8_WIDTH, INT_LEAST16_WIDTH, UINT_LEAST16_WIDTH,
- INT_LEAST32_WIDTH, UINT_LEAST32_WIDTH, INT_LEAST64_WIDTH,
- UINT_LEAST64_WIDTH, INT_FAST8_WIDTH, UINT_FAST8_WIDTH, INT_FAST16_WIDTH,
- UINT_FAST16_WIDTH, INT_FAST32_WIDTH, UINT_FAST32_WIDTH, INT_FAST64_WIDTH,
- UINT_FAST64_WIDTH, INTPTR_WIDTH, UINTPTR_WIDTH, INTMAX_WIDTH,
- UINTMAX_WIDTH, PTRDIFF_WIDTH, SIG_ATOMIC_WIDTH, SIZE_WIDTH, WCHAR_WIDTH,
- WINT_WIDTH.
-
-* New <math.h> features are added from TS 18661-1:2014:
-
- - Signaling NaN macros: SNANF, SNAN, SNANL.
-
- - Nearest integer functions: roundeven, roundevenf, roundevenl, fromfp,
- fromfpf, fromfpl, ufromfp, ufromfpf, ufromfpl, fromfpx, fromfpxf,
- fromfpxl, ufromfpx, ufromfpxf, ufromfpxl.
-
- - llogb functions: the llogb, llogbf and llogbl functions, and the
- FP_LLOGB0 and FP_LLOGBNAN macros.
-
- - Max-min magnitude functions: fmaxmag, fmaxmagf, fmaxmagl, fminmag,
- fminmagf, fminmagl.
-
- - Comparison macros: iseqsig.
-
- - Classification macros: iscanonical, issubnormal, iszero.
-
- - Total order functions: totalorder, totalorderf, totalorderl,
- totalordermag, totalordermagf, totalordermagl.
-
- - Canonicalize functions: canonicalize, canonicalizef, canonicalizel.
-
- - NaN functions: getpayload, getpayloadf, getpayloadl, setpayload,
- setpayloadf, setpayloadl, setpayloadsig, setpayloadsigf, setpayloadsigl.
-
-* The functions strfromd, strfromf, and strfroml, from ISO/IEC TS 18661-1:2014,
- are added to libc. They convert a floating-point number into string.
-
-* Most of glibc can now be built with the stack smashing protector enabled.
- It is recommended to build glibc with --enable-stack-protector=strong.
- Implemented by Nick Alcock (Oracle).
-
-* The function explicit_bzero, from OpenBSD, has been added to libc. It is
- intended to be used instead of memset() to erase sensitive data after use;
- the compiler will not optimize out calls to explicit_bzero even if they
- are "unnecessary" (in the sense that no _correct_ program can observe the
- effects of the memory clear).
-
-* On ColdFire, MicroBlaze, Nios II and SH3, the float_t type is now defined
- to float instead of double. This does not affect the ABI of any libraries
- that are part of the GNU C Library, but may affect the ABI of other
- libraries that use this type in their interfaces.
-
-* On x86_64, when compiling with -mfpmath=387 or -mfpmath=sse+387, the
- float_t and double_t types are now defined to long double instead of float
- and double. These options are not the default, and this does not affect
- the ABI of any libraries that are part of the GNU C Library, but it may
- affect the ABI of other libraries that use this type in their interfaces,
- if they are compiled or used with those options.
-
-* The getentropy and getrandom functions, and the <sys/random.h> header file
- have been added.
-
-* The buffer size for byte-oriented stdio streams is now limited to 8192
- bytes by default. Previously, on Linux, the default buffer size on most
- file systems was 4096 bytes (and thus remains unchanged), except on
- network file systems, where the buffer size was unpredictable and could be
- as large as several megabytes.
-
-* The <sys/quota.h> header now includes the <linux/quota.h> header. Support
- for the Linux quota interface which predates kernel version 2.4.22 has
- been removed.
-
-* The malloc_get_state and malloc_set_state functions have been removed.
- Already-existing binaries that dynamically link to these functions will
- get a hidden implementation in which malloc_get_state is a stub. As far
- as we know, these functions are used only by GNU Emacs and this change
- will not adversely affect already-built Emacs executables. Any undumped
- Emacs executables, which normally exist only during an Emacs build, should
- be rebuilt by re-running “./configure; make” in the Emacs build tree.
-
-* The “ip6-dotint” and “no-ip6-dotint” resolver options, and the
- corresponding RES_NOIP6DOTINT flag from <resolv.h> have been removed.
- “no-ip6-dotint” had already been the default, and support for the
- “ip6-dotint” option was removed from the Internet in 2006.
-
-* The "ip6-bytestring" resolver option and the corresponding RES_USEBSTRING
- flag from <resolv.h> have been removed. The option relied on a
- backwards-incompatible DNS extension which was never deployed on the
- Internet.
-
-* The flags RES_AAONLY, RES_PRIMARY, RES_NOCHECKNAME, RES_KEEPTSIG,
- RES_BLAST defined in the <resolv.h> header file have been deprecated.
- They were already unimplemented.
-
-* The "inet6" option in /etc/resolv.conf and the RES_USE_INET6 flag for
- _res.flags are deprecated. The flag was standardized in RFC 2133, but
- removed again from the IETF name lookup interface specification in RFC
- 2553. Applications should use getaddrinfo instead.
-
-* DNSSEC-related declarations and definitions have been removed from the
- <arpa/nameser.h> header file, and libresolv will no longer attempt to
- decode the data part of DNSSEC record types. Previous versions of glibc
- only implemented minimal support for the previous version of DNSSEC, which
- is incompatible with the currently deployed version.
-
-* The resource record type classification macros ns_t_qt_p, ns_t_mrr_p,
- ns_t_rr_p, ns_t_udp_p, ns_t_xfr_p have been removed from the
- <arpa/nameser.h> header file because the distinction between RR types and
- meta-RR types is not officially standardized, subject to revision, and
- thus not suitable for encoding in a macro.
-
-* The types res_sendhookact, res_send_qhook, re_send_rhook, and the qhook
- and rhook members of the res_state type in <resolv.h> have been removed.
- The glibc stub resolver did not support these hooks, but the header file
- did not reflect that.
-
-* For multi-arch support it is recommended to use a GCC which has
- been built with support for GNU indirect functions. This ensures
- that correct debugging information is generated for functions
- selected by IFUNC resolvers. This support can either be enabled by
- configuring GCC with '--enable-gnu-indirect-function', or by
- enabling it by default by setting 'default_gnu_indirect_function'
- variable for a particular architecture in the GCC source file
- 'gcc/config.gcc'.
-
-* GDB pretty printers have been added for mutex and condition variable
- structures in POSIX Threads. When installed and loaded in gdb these pretty
- printers show various pthread variables in human-readable form when read
- using the 'print' or 'display' commands in gdb.
-
-* Tunables feature added to allow tweaking of the runtime for an application
- program. This feature can be enabled with the '--enable-tunables' configure
- flag. The GNU C Library manual has details on usage and README.tunables has
- instructions on adding new tunables to the library.
-
-* A new version of condition variables functions have been implemented in
- the NPTL implementation of POSIX Threads to provide stronger ordering
- guarantees.
-
-* A new version of pthread_rwlock functions have been implemented to use a more
- scalable algorithm primarily through not using a critical section anymore to
- make state changes.
-
-Security related changes:
-
-* On ARM EABI (32-bit), generating a backtrace for execution contexts which
- have been created with makecontext could fail to terminate due to a
- missing .cantunwind annotation. This has been observed to lead to a hang
- (denial of service) in some Go applications compiled with gccgo. Reported
- by Andreas Schwab. (CVE-2016-6323)
-
-* The DNS stub resolver functions would crash due to a NULL pointer
- dereference when processing a query with a valid DNS question type which
- was used internally in the implementation. The stub resolver now uses a
- question type which is outside the range of valid question type values.
- (CVE-2015-5180)
-
-The following bugs are resolved with this release:
-
- [4099] stdio: Overly aggressive caching by stream i/o functions.
- [7065] build: Support building glibc with -fstack-protector or -fstack-
- protector-all
- [9842] localedata: en_CA: incorrect date format
- [13165] nptl: pthread_cond_wait() can consume a signal that was sent
- before it started waiting
- [14139] manual: Do not hardcode platform names in manual/libm-err-tab.pl
- [15765] nptl: sem_open is wrongly a cancellation point
- [16421] network: IN6_IS_ADDR_UNSPECIFIED can use undefined s6_addr32
- [16458] libc: endian.h and netinet/in.h byte order macros return values of
- wrong type
- [16628] dynamic-link: Segfault after a binary without pthread dlopen()s a
- library linked with pthread
- [16630] nptl: Use SYSENTER for pthread_cond_broadcast/signal() (i.e. fix
- "FIXME: Ingo" issue)
- [16907] libc: <argp.h> compiled with --std=cXX disables __attribute__
- [17252] libc: getrandom and getentropy syscall
- [17730] malloc: thread-local storage is sometimes improperly free()'d
- after being __libc_memalign()'d
- [18241] stdio: failed fseek on memstream does not set errno and can fail
- when it shouldnt
- [18243] nptl: sem_wait, sem_timedwait are cancellation points shm_open is
- not
- [18463] nptl: pthread_cond_broadcast issue when surrounded by
- PTHREAD_PRIO_INHERIT mutex on ARM
- [18784] network: res_query and related function crash for special record
- type queries (CVE-2015-5180)
- [19380] math: strtod does not raise "inexact"
- [19387] string: Integer overflow in memchr
- [19390] string: Integer overflow in strncat
- [19398] build: linknamespace tests fail with massively parallel build
- [19402] nptl: Deadlock with robust shared mutex and asynchronous
- termination
- [19469] malloc: M_PERTURB in test-skeleton.c invalidates malloc tests
- [19473] malloc: Turn malloc_get_state etc. in compatibility symbols
- [19514] libc: [PATCH] Fix spelling errors in spelling
- "implement"/"implementation" in several places
- [19582] network: Deprecate RES_USE_INET6
- [19673] manual: clog10 docs appear to be erroneous
- [19810] dynamic-link: dlopen with both RTLD_NOLOAD and RTLD_NODELETE
- causes a segmentation fault
- [19826] libc: invalid pointer returned from __tls_get_addr with static
- linking
- [20016] network: resolv: Remove hooks support from the API
- [20019] dynamic-link: NULL pointer dereference in libc.so.6 IFUNC due to
- uninitialized GOT
- [20033] math: [x86_64] vectorized math function don't call the __finite
- versions
- [20116] nptl: use after free in pthread_create
- [20181] stdio: open_memstream(): writes not at end of stream corrupt data
- [20292] dynamic-link: Comparison in elf/dl-open.c _dl_addr_inside_object
- is always true.
- [20311] nptl: please install proc_service.h
- [20366] libc: Compilation errors in installed headers in strict-compliance
- modes
- [20370] malloc: malloc: Arena free list management is still racy
- (incorrect fix in bug 19243)
- [20386] libc: assert (X = 0) does not result in GCC warning
- [20432] malloc: malloc: Minimize interface required for interposition
- [20435] libc: Missing unwind info in __startcontext causes infinite loop
- in _Unwind_Backtrace (CVE-2016-6323)
- [20444] hurd: recvmsg: PF_LOCAL sockets and msg_name lead to SIGLOST
- [20452] nptl: Addition of sysdep.o to libpthread.a breaks relinking
- libpthread.a
- [20455] math: [powerpc] fesetexceptflag fails to clear FE_INVALID
- [20459] localedata: et_EE: locale has wrong {p,n}_cs_precedes value
- [20477] network: resolv: incorrect double-checked locking related to
- _res_hconf
- [20478] libc: libc_ifunc macro and similar usages leads to false debug-
- information.
- [20495] math: x86_64 performance degradation due to AVX/SSE transition
- penalty
- [20497] localedata: lt_LT: LC_TIME d_fmt used is obsolete
- [20508] dynamic-link: _dl_runtime_resolve_avx/_dl_runtime_profile_avx512
- cause transition penalty
- [20517] math: sparcv9 missing fdiml compat symbol
- [20524] manual: strverscmp is inconsistent
- [20525] libc: <sys/quota.h> should be based on kernel headers
- [20539] math: GCC 7 -static -lm fails to link at -O3
- [20554] libc: ld: bss-plt forced due to /usr/lib/libc_nonshared.a(ppc-
- mcount.oS)
- [20558] string: POSIX bcopy/bzero decls do not implement Object Size
- Checking
- [20591] network: Remove obsolete DNSSEC support
- [20592] network: DNS resource record type classification macros in
- <arpa/nameser.h> are incorrect
- [20593] network: Update DNS RR type definitions
- [20611] network: getaddrinfo accepts invalid numeric scope IDs
- [20615] build: glibc build fails when using --with-cpu=power9 --enable-
- multi-arch
- [20629] network: libresolv: Remove support for bitstring labels
- (RES_USEBSTRING)
- [20647] libc: GLIBC quitting every program - glibc on Pentium-S leads to
- assertion: "maxidx >= 2"
- [20660] math: [arm] Use VSQRT
- [20662] libc: checking whether x86_64-pc-linux-gnu-gcc implicitly enables
- -fstack-protector no (32bit gcc 6.2.0 pie and ssp enable)
- [20689] libc: Test for FMA should also check for AVX.
- [20707] glob: gl_pathv entries not set to NULL with GLOB_DOOFFS
- [20715] math: iszero macro breaks existing code
- [20718] math: [powerpc] copysignl raises "invalid" for sNaN
- [20728] libc: powerpc: Missing TOC stub in clone
- [20729] build: glibc-2.24 fails to build for i486 with -Os
- [20750] build: Build fails with default PIE enabled gcc-6.x
- [20768] math: [alpha] sqrt fegetenv namespace
- [20785] libc: binutils 2.28 fails to assemble power6/memset.S file in
- glibc
- [20787] math: float_t is defined as float incorrectly on x86_64 even if
- __FLT_EVAL_METHOD__ is 2
- [20790] network: rpcgen buffer overrun in get_prog_declaration
- [20822] nptl: race condition in __lll_unlock_elision on powerpc
- [20829] libc: crypt snprintf namespace
- [20847] libc: tst-vfork3 failure
- [20855] math: Default bits/mathdef.h has inappropriate float_t
- [20859] math: [sh4] FP_ILOGB0 invalid
- [20864] localedata: iconv: cp936 missing single-byte euro sign (0x80,
- U+20AC), not same as GBK
- [20915] dynamic-link: global-dynamic TLS broken on aarch64
- [20916] math: pow handling of sNaN arguments
- [20918] build: Building with --enable-nss-crypt fails tst-linkall-static.
- [20919] math: Bad pow (qNaN, 0) result with -lieee
- [20940] math: hypot sNaN handling
- [20947] math: fmax, fmin sNaN handling
- [20956] libc: debug/tst-backtrace3-6 don't work with -O3 anymore
- [20964] network: sunrpc: Stack-based buffer overflow in getrpcport with
- RES_USE_INET6
- [20971] string: powerpc64/power7 memchr overflows internal pointer check
- [20973] nptl: robust mutexes: Lost wake-ups
- [20974] locale: bs_BA: yesexpr/noexpr regexes accept any character
- [20978] nis: strlen on null pointer in nss_nisplus
- [20985] nptl: robust mutexes: lowlevelrobustlock assembly on x86 blocks on
- wrong condition
- [21014] string: i686 memchr overflows internal pointer check
- [21019] libc: [mips] n32 lseek incorrect on overflow
- [21022] libc: [microblaze] __backtrace get_frame_size namespace
- [21026] libc: [MIPS] readahead syscall is broken on n64
- [21028] math: Fallback fesetexceptflag should always succeed
- [21045] libc: [powerpc-nofpu] swapcontext does not restore signal mask
- [21047] math: arm: fpu_control.h: _FPU_GETCW/_FPU_SETCW is rejected by
- clang
- [21053] libc: [SH] Namespace pollution from sys/ucontext.h
- [21061] librt: [microblaze] librt lost clock_* exports
- [21073] libc: tunables: insecure environment variables passed to
- subprocesses with AT_SECURE
- [21081] string: Missing vzeroupper in memset-vec-unaligned-erms.S
-
-Version 2.24
-
-* The minimum Linux kernel version that this version of the GNU C Library
- can be used with is 3.2, except on i[4567]86 and x86_64, where Linux
- kernel version 2.6.32 or later suffices (on architectures that already
- required kernel versions more recent than 3.2, those requirements remain
- unchanged). Linux 3.2 or later kernel headers are required on all
- architectures.
-
-* The pap_AN locale has been deleted. This has been deprecated for a long
- time. It has been replaced by pap_AW & pap_CW, both of which have long
- been included in previous releases.
-
-* The readdir_r and readdir64_r functions have been deprecated. It is
- recommended to use readdir and readdir64 instead.
-
-* The type “union wait” has been removed. It was deprecated in the early
- 1990s and never part of POSIX. Application code should use the int type
- instead of “union wait”.
-
-* A new NSS action is added to facilitate large distributed system
- administration. The action, MERGE, allows remote user stores like LDAP
- to be merged into local user stores like /etc/groups in order to provide
- easy to use, updated, and managed sets of merged credentials. The new
- action can be used by configuring it in /etc/nsswitch.conf:
- group: files [SUCCESS=merge] nis
- Implemented by Stephen Gallagher (Red Hat).
-
-* The deprecated __malloc_initialize_hook variable has been removed from the
- API.
-
-* The long unused localedef --old-style option has been removed. It hasn't
- done anything in over 16 years. Scripts using this option can safely
- drop it.
-
-* nextupl, nextup, nextupf, nextdownl, nextdown and nextdownf are added to
- libm. They are defined by TS 18661 and IEEE754-2008. The nextup functions
- return the next representable value in the direction of positive infinity
- and the nextdown functions return the next representable value in the
- direction of negative infinity. These are currently enabled as GNU
- extensions.
-
-Security related changes:
-
-* An unnecessary stack copy in _nss_dns_getnetbyname_r was removed. It
- could result in a stack overflow when getnetbyname was called with an
- overly long name. (CVE-2016-3075)
-
-* Previously, getaddrinfo copied large amounts of address data to the stack,
- even after the fix for CVE-2013-4458 has been applied, potentially
- resulting in a stack overflow. getaddrinfo now uses a heap allocation
- instead. Reported by Michael Petlan. (CVE-2016-3706)
-
-* The glob function suffered from a stack-based buffer overflow when it was
- called with the GLOB_ALTDIRFUNC flag and encountered a long file name.
- Reported by Alexander Cherepanov. (CVE-2016-1234)
-
-* The Sun RPC UDP client could exhaust all available stack space when
- flooded with crafted ICMP and UDP messages. Reported by Aldy Hernandez'
- alloca plugin for GCC. (CVE-2016-4429)
-
-* The IPv6 name server management code in libresolv could result in a memory
- leak for each thread which is created, performs a failing naming lookup,
- and exits. Over time, this could result in a denial of service due to
- memory exhaustion. Reported by Matthias Schiffer. (CVE-2016-5417)
-
-The following bugs are resolved with this release:
-
- [1170] localedata: ne_NP: update Nepali locale definition file
- [3629] manual: stpcpy description in string.texi refers to MS-DOG instead
- of MS-DOS.
- [6527] malloc: [powerpc] Malloc alignment insufficient for PowerPC
- [6796] math: fdim() does not set errno on overflow
- [10354] libc: posix_spawn should use vfork() in more cases than presently
- [11213] localedata: localedata: add copyright disclaimer to locale files
- [12143] localedata: chr_US: new Cherokee locale
- [12450] localedata: sgs_LT: new locale
- [12676] localedata: ln_CD: new locale
- [13237] localedata: LC_ADDRESS.country_name: update all locales w/latest
- CLDR data
- [13304] math: fma, fmaf, fmal produce wrong results
- [14259] build: --localedir arg to configure is ignored
- [14499] nptl: Does posix_spawn invoke atfork handlers / use vfork?
- [14750] libc: Race condition in posix_spawn vfork usage vs signal handlers
- [14934] localedata: es_CL: wrong first weekday chilean locale
- [15262] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of
- romanisation
- [15263] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of 1/0
- and +/-
- [15264] localedata: LC_MESSAGES.yesstr/nostr: lacking in many locales
- [15368] nptl: raise() is not async-signal-safe
- [15479] math: ceil, floor, round and trunc raise inexact exception
- [15578] localedata: kk_KZ: various updates
- [16003] localedata: pap_AN: punt old locale
- [16137] localedata: iw_IL: punt old locale
- [16190] localedata: eo: new esperanto locale
- [16374] localedata: lv_LV: change currency symbol in LC_MONETARY to euro
- [16742] malloc: race condition: pthread_atfork() called before first
- malloc() results in unexpected locking behaviour/deadlocks
- [16975] localedata: LC_MESSAGES.yesexpr/noexpr: revisit capitalization in
- all locales
- [16983] localedata: postal_fmt does not allow %l and %n modifiers
- [17565] localedata: pt_PT: wrong (work-)week start
- [17899] math: [powerpc] floorl returns negative zero with FE_DOWNWARD
- [17950] build: Build fails with -msse
- [18205] localedata: be_BY*: wrong first_weekday and first_workday
- [18433] libc: posix_spawn does not return correctly upon failure to
- execute
- [18453] localedata: charmaps/IBM875: incorrect codes
- [18712] string: bits/string2.h incompatible with -O2 -Werror=packed
- -Wsystem-headers
- [18896] localedata: he_IL: improvements for currency
- [18911] localedata: ro_RO: Correcting week day name for "Tuesday" in
- Romanian locale data
- [18960] locale: s390: _nl_locale_subfreeres uses larl opcode on misaligned
- symbol
- [19056] libc: Deprecate readdir_r
- [19133] localedata: pt_*: days & months should be lowercase in Portuguese
- language
- [19198] localedata: nl_NL: small improvements for Dutch locales
- [19257] network: Per-thread memory leak in __res_vinit with IPv6
- nameservers (CVE-2016-5417)
- [19269] build: tst-audit4 and tst-audit10 failures with gcc-6 on non avx
- machine
- [19400] locale: Language missing in "iso-639.def", trivial fix in
- description
- [19431] malloc: Deadlock between fflush, getdelim, and fork
- [19505] libc: Incorrect file descriptor validity checks in
- posix_spawn_file_actions_add{open,close,dup2}
- [19509] dynamic-link: dlsym, dlvsym do not report errors through dlerror
- when using RTLD_NEXT
- [19512] locale: Stale `#ifndef HAVE_BUILTIN_EXPECT' in
- `intl/{gettextP,loadinfo}.h'
- [19534] libc: execle, execlp may use malloc
- [19568] localedata: *_CH: Swiss locales have inconsistent start of week
- [19573] network: res_nclose and __res_maybe_init disagree about name
- server initialization, breaking Hesiod
- [19575] localedata: Status of GB18030 tables
- [19581] localedata: sr_* date_fmt string contains additional newline
- [19583] string: SSSE3_Fast_Copy_Backward flag needs to be enabled for AMD
- Excavator core
- [19592] math: [ldbl-128ibm] ceill incorrect in non-default rounding modes
- [19593] math: [ldbl-128ibm] truncl incorrect in non-default rounding modes
- [19594] math: [ldbl-128ibm] roundl incorrect in non-default rounding modes
- [19595] math: [ldbl-128ibm] fmodl incorrect for results in subnormal
- double range
- [19602] math: [ldbl-128ibm] fmodl handling of equal arguments with low
- part zero incorrect
- [19603] math: [ldbl-128ibm] remainderl, remquol incorrect sign handling in
- equality tests
- [19610] dynamic-link: ldconfig -X removes stale symbolic links
- [19613] libc: s390x (64 bit) macro expansion WCOREDUMP and others
- [19633] locale: strfmon_l applies global locale to number formatting
- [19642] network: Memory leak in getnameinfo
- [19648] libc: test-skeleton.c: Do not set RLIMIT_DATA
- [19653] libc: Potential for NULL pointer dereference (CWE-476) in
- glibc-2.22
- [19654] math: [x86_64] Need testcase for BZ #19590 fix
- [19671] localedata: Missing Sanity Check for malloc() in 'tst-fmon.c' &
- 'tst-numeric.c'
- [19674] math: [ldbl-128ibm] powl incorrect overflow handling
- [19677] math: [ldbl-128ibm] remainderl equality test incorrect for zero
- low part
- [19678] math: [ldbl-128ibm] nextafterl, nexttowardl incorrect sign of zero
- result
- [19679] dynamic-link: gcc-4.9.3 C++ exception handling broken due to
- unaligned stack
- [19726] locale: Converting UCS4LE to INTERNAL with iconv() does not update
- pointers and lengths in error-case.
- [19727] locale: Converting from/to UTF-xx with iconv() does not always
- report errors on UTF-16 surrogates values.
- [19755] nscd: nscd assertion failure in gc
- [19758] dynamic-link: Typo in EXTRA_LD_ENVVARS for x86-64
- [19759] libc: mempcpy shouldn't be inlined
- [19762] dynamic-link: HAS_CPU_FEATURE/HAS_ARCH_FEATURE are easy to misuse
- [19765] libc: s390 needs an optimized mempcpy
- [19779] glob: glob: buffer overflow with GLOB_ALTDIRFUNC due to incorrect
- NAME_MAX limit assumption (CVE-2016-1234)
- [19783] build: benchtests don't support --enable-hardcoded-path-in-tests
- [19787] network: Missing and incorrect truncation checks in getnameinfo
- [19790] math: [ldbl-128ibm] nearbyintl incorrect in non-default rounding
- modes
- [19791] network: Assertion failure in res_query.c with un-connectable name
- server addresses
- [19792] libc: MIPS: backtrace yields infinite backtrace with makecontext
- [19822] math: libm.so install clobbers old version
- [19825] network: resolv: send_vc can return uninitialized data in second
- response to getaddrinfo
- [19830] network: nss_dns: should check RDATA length against buffer length
- [19831] network: nss_dns: getaddrinfo returns uninitialized data when
- confronted with A/AAAA records of invalid size
- [19837] nss: nss_db: No retries for some long lines with a larger buffer
- [19848] math: powl(10,n) for n=-4,-5,-6,-7 is off by more than 1 ULP
- [19853] stdio: Printing IBM long double in decimal with high precision is
- sometimes incorrect
- [19860] build: x86_64: compile errors for tst-audit10 and tst-auditmod10b
- [19861] nptl: libpthread IFUNC resolver for fork can lead to crash
- [19862] network: resolv, nss_dns: Remove remaining logging of unexpected
- record types
- [19865] network: Assertion failure or memory leak in
- _nss_dns_getcanonname_r
- [19868] network: nss_dns: netent code does not skip over non-PTR records
- [19879] network: nss_dns: Stack overflow in getnetbyname implementation
- (CVE-2016-3075)
- [19881] string: Improve x86-64 memset
- [19907] string: Incorrect memcpy tests
- [19916] dynamic-link: S390: fprs/vrs are not saved/restored while
- resolving symbols
- [19925] libc: termios.h XCASE namespace
- [19928] string: memmove-vec-unaligned-erms.S is slow with large data size
- [19929] libc: limits.h NL_NMAX namespace
- [19931] stdio: Memory leak in vfprintf
- [19957] libc: clone(CLONE_VM) access invalid parent memory
- [19963] localedata: en_IL: New locale
- [19989] stdio: stdio.h cuserid namespace
- [19994] network: getaddrinfo does not restore RES_USE_INET6 flag in
- gethosts
- [19996] locale: langinfo.h nl_langinfo_l namespace
- [20005] stdio: fflush on a file opened with fmemopen resets position to 0
- [20010] network: getaddrinfo: Stack overflow in hostent translation
- (CVE-2016-3706)
- [20012] stdio: libio: fmemopen append mode failure
- [20014] stdio: stdio.h namespace for pre-threads POSIX
- [20017] network: resolv: Use gmtime_r instead of gmtime in p_secstodate
- [20023] libc: fcntl.h timespec namespace
- [20024] math: [x86_64] vectorized sincos trashes the stack
- [20031] network: nss_hesiod: Heap overflow in get_txt_records
- [20041] time: sys/time.h timespec namespace
- [20043] libc: unistd.h missing cuserid for UNIX98 and before
- [20044] libc: unistd.h missing pthread_atfork for UNIX98
- [20051] libc: ttyslot in wrong header under wrong conditions
- [20054] libc: gethostname not declared for XPG4
- [20055] libc: termios.h missing tcgetsid for XPG4
- [20072] dynamic-link: x86 init_cpu_features is called twice in static
- executable
- [20073] libc: sys/stat.h fchmod namespace
- [20074] libc: stdlib.h rand_r namespace
- [20076] libc: sys/stat.h missing S_IFSOCK, S_ISSOCK for XPG4
- [20094] libc: stdlib.h should not declare grantpt, ptsname, unlockpt for
- XPG3
- [20111] libc: struct sockaddr_storage cannot be aggregate-copied
- [20112] network: sunrpc: stack (frame) overflow in Sun RPC clntudp_call
- (CVE-2016-4429)
- [20115] string: Extra alignment in memset-vec-unaligned-erms.S
- [20119] libc: Wrong mask for processors level type from CPUID
- [20139] dynamic-link: Upper part of zmm is zeroed if Glibc is built with
- AS not supporting AVX512
- [20151] math: [ldbl-128/ldbl-128ibm] j0l, j1l, y0l, y1l return sNaN for
- sNaN argument
- [20153] math: [ldbl-128ibm] sqrtl (sNaN) returns sNaN
- [20156] math: [ldbl-128ibm] ceill, rintl etc. return sNaN for sNaN
- argument
- [20157] math: [powerpc] fabsl (sNaN) wrongly raises "invalid"
- [20160] math: [powerpc] ceil, rint etc. return sNaN for sNaN input
- [20178] libc: posix_spawn{p} should not call exit
- [20191] stdio: libio: vtables hardening
- [20195] string: FMA4 detection requires CPUID execution with register
- eax=0x80000001
- [20198] libc: quick_exit incorrectly destroys C++11 thread objects.
- [20205] math: [i386/x86_64] nextafterl incorrect incrementing negative
- subnormals
- [20212] math: acos (sNaN) returns sNaN
- [20213] math: asin (sNaN) returns sNaN
- [20214] network: Linux header sync with linux/in6.h and ipv6.h again.
- [20218] math: [i386] asinhl (sNaN) returns sNaN
- [20219] math: [i386] atanhl (sNaN) returns sNaN
- [20222] stdio: fopencookie: Mangle function pointers
- [20224] math: [i386] cbrtl (sNaN) returns sNaN
- [20225] math: ldexp, scalbn, scalbln return sNaN for sNaN input
- [20226] math: [i386/x86_64] expl, exp10l, expm1l return sNaN for sNaN
- input
- [20227] math: [i386/x86_64] logl (sNaN) returns sNaN
- [20228] math: [i386/x86_64] log10l (sNaN) returns sNaN
- [20229] math: [i386/x86_64] log1pl (sNaN) returns sNaN
- [20232] math: [ldbl-128] expm1l (sNaN) returns sNaN
- [20233] math: [ldbl-128ibm] expm1l (sNaN) returns sNaN
- [20234] math: [ldbl-128ibm] log1pl (sNaN) returns sNaN
- [20235] math: [i386/x86_64] log2l (sNaN) returns sNaN
- [20237] nss: nss_db: get*ent segfaults without preceding set*ent
- [20240] math: modf (sNaN) returns sNaN
- [20248] libc: debug/tst-longjump_chk2 calls printf from a signal handler
- [20250] math: frexp (sNaN) returns sNaN
- [20252] math: atan2 (sNaN, qNaN) fails to raise "invalid"
- [20255] math: [i386] fdim, fdimf return with excess range and precision /
- double rounding
- [20256] math: [i386/x86_64] fdiml returns sNaN for sNaN input
- [20260] string: ../sysdeps/x86/bits/string.h:1092:3: error: array
- subscript is below array bounds [-Werror=array-bounds]
- [20262] nis: _nss_nis_initgroups_dyn always returns NSS_STATUS_NOTFOUND
- [20263] nptl: robust mutex deadlocks if other thread requests timedlock
- (Only arm/linux)
- [20277] libc: $dp is not initialized correctly in sysdeps/hppa/start.S
- [20284] malloc: malloc: Corrupt arena avoidance causes unnecessary mmap
- fallbacks
- [20296] math: [i386/x86_64] scalbl returns sNaN for sNaN input, missing
- "invalid" exceptions
- [20314] nptl: make[4]: *** [/usr/include/stdlib.h] Error 1
- [20316] localedata: id_ID: Februari instead of Pebruari
- [20327] string: POWER8 strcasecmp returns incorrect result
- [20347] math: Failure: Test: j0_downward (0xap+0)
- [20348] libc: FAIL: misc/tst-preadvwritev64
- [20349] libc: 64-bit value is passed differently in p{readv,writev}{64}
- [20350] libc: There is no test for p{read,write}64
- [20357] math: Incorrect cos result for 1.5174239687223976
- [20384] build: Don't run libmvec-sincos-avx* tests on non avx machines
-
-Version 2.23
-
-* Unicode 8.0.0 Support: Character encoding, character type info, and
- transliteration tables are all updated to Unicode 8.0.0, using new
- and/or improved generator scripts contributed by Mike FABIAN (Red Hat).
- These updates cause user visible changes, such as the fixes for bugs
- 89, 16061, and 18568.
-
-* sched_setaffinity, pthread_setaffinity_np no longer attempt to guess the
- kernel-internal CPU set size. This means that requests that change the
- CPU affinity which failed before (for example, an all-ones CPU mask) will
- now succeed. Applications that need to determine the effective CPU
- affinities need to call sched_getaffinity or pthread_getaffinity_np after
- setting it because the kernel can adjust it (and the previous size check
- would not detect this in the majority of cases).
-
-* The fts.h header can now be used with -D_FILE_OFFSET_BITS=64. With LFS
- the following new symbols are used: fts64_children, fts64_close,
- fts64_open, fts64_read and fts64_set.
-
-* getaddrinfo now detects certain invalid responses on an internal netlink
- socket. If such responses are received, an affected process will
- terminate with an error message of "Unexpected error <number> on netlink
- descriptor <number>" or "Unexpected netlink response of size <number> on
- descriptor <number>". The most likely cause for these errors is a
- multi-threaded application which erroneously closes and reuses the netlink
- file descriptor while it is used by getaddrinfo.
-
-* A defect in the malloc implementation, present since glibc 2.15 (2012) or
- glibc 2.10 via --enable-experimental-malloc (2009), could result in the
- unnecessary serialization of memory allocation requests across threads.
- The defect is now corrected. Users should see a substantial increase in
- the concurent throughput of allocation requests for applications which
- trigger this bug. Affected applications typically create and
- destroy threads frequently. (Bug 19048 was reported and analyzed by
- Ericsson.)
-
-* There is now a --disable-timezone-tools configure option for disabling the
- building and installing of the timezone related utilities (zic, zdump, and
- tzselect). This is useful for people who build the timezone data and code
- independent of the GNU C Library.
-
-* The obsolete header <regexp.h> has been removed. Programs that require
- this header must be updated to use <regex.h> instead.
-
-* The obsolete functions bdflush, create_module, get_kernel_syms,
- query_module and uselib are no longer available to newly linked binaries;
- the header <sys/kdaemon.h> has been removed. These functions and header
- were specific to systems using the Linux kernel and could not usefully be
- used with the GNU C Library on systems with version 2.6 or later of the
- Linux kernel.
-
-* Optimized string, wcsmbs and memory functions for IBM z13.
- Implemented by Stefan Liebler.
-
-* Newly linked programs that define a variable called signgam will no longer
- have it set by the lgamma, lgammaf and lgammal functions. Programs that
- require signgam to be set by those functions must ensure that they use the
- variable provided by the GNU C Library and declared in <math.h>, without
- defining their own copy.
-
-* The minimum GCC version that can be used to build this version of the GNU
- C Library is GCC 4.7. Older GCC versions, and non-GNU compilers, can
- still be used to compile programs using the GNU C Library.
-
-Security related changes:
-
-* An out-of-bounds value in a broken-out struct tm argument to strftime no
- longer causes a crash. Reported by Adam Nielsen. (CVE-2015-8776)
-
-* The LD_POINTER_GUARD environment variable can no longer be used to disable
- the pointer guard feature. It is always enabled. Previously,
- LD_POINTER_GUARD could be used to disable security hardening in binaries
- running in privileged AT_SECURE mode. Reported by Hector Marco-Gisbert.
- (CVE-2015-8777)
-
-* An integer overflow in hcreate and hcreate_r could lead to an
- out-of-bounds memory access. Reported by Szabolcs Nagy. (CVE-2015-8778)
-
-* The catopen function no longer has unbounded stack usage. Reported by
- Max. (CVE-2015-8779)
-
-* The nan, nanf and nanl functions no longer have unbounded stack usage
- depending on the length of the string passed as an argument to the
- functions. Reported by Joseph Myers. (CVE-2014-9761)
-
-* A stack-based buffer overflow was found in libresolv when invoked from
- libnss_dns, allowing specially crafted DNS responses to seize control
- of execution flow in the DNS client. The buffer overflow occurs in
- the functions send_dg (send datagram) and send_vc (send TCP) for the
- NSS module libnss_dns.so.2 when calling getaddrinfo with AF_UNSPEC
- family. The use of AF_UNSPEC triggers the low-level resolver code to
- send out two parallel queries for A and AAAA. A mismanagement of the
- buffers used for those queries could result in the response of a query
- writing beyond the alloca allocated buffer created by
- _nss_dns_gethostbyname4_r. Buffer management is simplified to remove
- the overflow. Thanks to the Google Security Team and Red Hat for
- reporting the security impact of this issue, and Robert Holiday of
- Ciena for reporting the related bug 18665. (CVE-2015-7547)
-
-The following bugs are resolved with this release:
-
- [89] localedata: Locales nb_NO and nn_NO should transliterate æøå
- [887] math: Math library function "logb" and "nextafter" inconsistent
- [2542] math: Incorrect return from float gamma (-0X1.FA471547C2FE5P+1)
- [2543] math: Incorrect return from float gamma (-0X1.9260DCP+1)
- [2558] math: Incorrect return from double gamma (-0X1.FA471547C2FE5P+1)
- [2898] libc: [improve] warning: the use of `mktemp' is dangerous, better
- use `mkstemp'
- [4404] localedata: German translation of "Alarm clock" is misleading
- [6799] math: nextafter() and nexttoward() doen't set errno on
- overflow/underflow errors
- [6803] math: scalb(), scalbln(), scalbn() do not set errno on
- overflow/underflow
- [10432] nis: _nss_nis_setnetgrent assertion failure
- [11460] libc: fts has no LFS support
- [12926] network: getaddrinfo()/make_request() may spin forever
- [13065] nptl: Race condition in pthread barriers
- [13690] nptl: pthread_mutex_unlock potentially cause invalid access
- [14341] dynamic-link: Dynamic linker crash when DT_JMPREL and DT_REL{,A}
- are not contiguous
- [14551] math: [ldbl-128ibm] strtold overflow handling for IBM long double
- [14912] libc: Rename non-installed bits/*.h headers
- [15002] libc: Avoid undefined behavior in posix_fallocate overflow check
- [15367] math: Let gcc use __builtin_isinf
- [15384] math: One constant fewer in ieee754/dbl-64/wordsize-64/s_finite.c
- [15421] math: lgamma wrongly sets signgam for ISO C
- [15470] math: [arm] On ARM llrintl() and llroundl() do not raise
- FE_INVALID with argument out of range
- [15491] math: [i386/x86_64] x86 nearbyint implementations wrongly clear
- all exceptions
- [15786] dynamic-link: ifunc resolver functions can smash function
- arguments
- [15918] math: Unnecessary check for equality in hypotf()
- [16061] localedata: Review / update transliteration data
- [16068] math: [i386/x86_64] x86 and x86_64 fesetenv exclude state they
- should include
- [16141] time: strptime %z offset restriction
- [16171] math: drem should be alias of remainder
- [16296] math: fegetround is pure?
- [16347] math: [ldbl-128ibm] ldbl-128/e_lgammal_r.c may not be suitable.
- [16364] libc: sleep may leave SIGCHLD blocked on sync cancellation on
- GNU/Linux
- [16399] math: [mips] lrint / llrint / lround / llround missing exceptions
- [16415] math: Clean up ldbl-128 / ldbl-128ibm expm1l for large positive
- arguments
- [16422] math: [powerpc] math-float, math-double failing llrint tests with
- "Exception "Inexact" set" on ppc32
- [16495] localedata: nl_NL: date_fmt: shuffle year/month around
- [16517] math: Missing underflow exception from tanf/tan/tanl
- [16519] math: Missing underflow exception from sinhf
- [16520] math: Missing underflow exception from tanhf
- [16521] math: Missing underflow exception from exp2
- [16620] math: [ldbl-128ibm] exp10l spurious overflows / bad directed
- rounding results
- [16734] stdio: fopen calls mmap to allocate its buffer
- [16961] math: nan function incorrect handling of bad sequences
- [16962] math: nan function unbounded stack allocation (CVE-2014-9761)
- [16973] localedata: Fix lang_lib/lang_term as per ISO 639-2
- [16985] locale: localedef: confusing error message when opening output
- fails
- [17118] math: ctanh(INFINITY + 2 * I) returns incorrect value
- [17197] locale: Redundant shift character in iconv conversion output at
- block boundary
- [17243] libc: trunk/posix/execl.c:53: va_args problem ?
- [17244] libc: trunk/sysdeps/unix/sysv/linux/semctl.c:116: va_args muxup ?
- [17250] dynamic-link: static linking breaks nss loading
- (getaddrinfo/getpwnam/etc...)
- [17404] libc: atomic_exchange_rel lacking a barrier on MIPS16, GCC before
- 4.7?
- [17441] math: isnan() should use __builtin_isnan() in GCC
- [17514] nptl: Assert failure unlocking ERRORCHECK mutex after timedlock
- (related to lock elision)
- [17787] manual: Exponent on page 324 of the PDF ends prematurely
- [17886] time: strptime should be able to parse "Z" as a timezone with %z
- [17887] time: strptime should be able to parse "+01:00" style timezones
- [17905] libc: catopen() Multiple unbounded stack allocations
- (CVE-2015-8779)
- [18084] libc: backtrace (..., 0) dumps core on x86
- [18086] libc: nice() sets errno to 0 on success
- [18240] libc: hcreate, hcreate_r should fail with ENOMEM if element count
- is too large (CVE-2015-8778)
- [18251] dynamic-link: SONAME missing when audit modules provides path
- [18265] libc: add attributes for wchar string and memory functions
- [18370] math: csqrt missing underflows
- [18421] libc: [hppa] read-only segment has dynamic relocations
- [18472] libc: Obsolete syscall wrappers should be compat symbols
- [18480] libc: hppa glibc miscompilation in sched_setaffinity()
- [18491] localedata: Update tr_TR LC_CTYPE as part of Unicode updates
- [18525] localedata: Remove locale timezone information
- [18560] libc: [powerpc] spurious bits/ipc.h definitions
- [18568] localedata: Update locale data to Unicode 8.0
- [18589] locale: sort-test.sh fails at random
- [18595] math: ctan, ctanh missing underflows
- [18604] libc: assert macro-expands its argument
- [18610] math: S390: fetestexcept() reports any exception if DXC-code
- contains a vector instruction exception.
- [18611] math: j1, jn missing errno setting on underflow
- [18618] localedata: sync Chechen locale definitions with other *_RU
- locales
- [18647] math: powf(-0x1.000002p0, 0x1p30) returns 0 instead of +inf
- [18661] libc: Some x86-64 assembly codes don't align stack to 16 bytes
- [18665] network: In send_dg, the recvfrom function is NOT always using the
- buffer size of a newly created buffer (CVE-2015-7547)
- [18674] libc: [i386] trunk/sysdeps/i386/tst-auditmod3b.c:84: possible
- missing break ?
- [18675] libc: fpathconf(_PC_NAME_MAX) fails against large filesystems for
- 32bit processes
- [18681] libc: regexp.h is obsolete and buggy, and should be desupported
- [18699] math: tilegx cproj() for various complex infinities does not yield
- infinity
- [18724] libc: Harden put*ent functions against data injection
- [18743] nptl: PowerPC: findutils testcase fails with --enable-lock-elision
- [18755] build: build errors with -DNDEBUG
- [18757] stdio: fmemopen fails to set errno on failure
- [18778] dynamic-link: ld.so crashes if failed dlopen causes libpthread to
- be forced unloaded
- [18781] libc: openat64 lacks O_LARGEFILE
- [18787] libc: [hppa] sysdeps/unix/sysv/linux/hppa/bits/atomic.h:71:6:
- error: can’t find a register in class ‘R1_REGS’ while reloading ‘asm’
- [18789] math: [ldbl-128ibm] sinhl inaccurate near 0
- [18790] math: [ldbl-128ibm] tanhl inaccurate
- [18795] libc: stpncpy fortification misses buffer lengths that are
- statically too large
- [18796] build: build fails for --disable-mathvec
- [18803] math: hypot missing underflows
- [18820] stdio: fmemopen may leak memory on failure
- [18823] math: csqrt spurious underflows
- [18824] math: fma spurious underflows
- [18825] math: pow missing underflows
- [18857] math: [ldbl-128ibm] nearbyintl wrongly uses signaling comparisons
- [18868] nptl: pthread_barrier_init typo has in-theory-undefined behavior
- [18870] build: sem_open.c fails to compile with missing symbol
- FUTEX_SHARED
- [18872] stdio: Fix memory leak in printf_positional
- [18873] libc: posix_fallocate overflow check ineffective
- [18875] math: Excess precision leads incorrect libm
- [18877] libc: arm: mmap offset regression
- [18887] libc: memory corruption when using getmntent on blank lines
- [18918] localedata: hu_HU: change time to HH:MM:SS format
- [18921] libc: Regression: extraneous stat() and fstat() performed by
- opendir()
- [18928] dynamic-link: LD_POINTER_GUARD is not ignored for privileged
- binaries (CVE-2015-8777)
- [18951] math: tgamma missing underflows
- [18952] math: [ldbl-128/ldbl-128ibm] lgammal spurious "invalid", incorrect
- signgam
- [18953] localedata: lt_LT: change currency symbol to the euro
- [18956] math: powf inaccuracy
- [18961] math: [i386] exp missing underflows
- [18966] math: [i386] exp10 missing underflows
- [18967] math: math.h XSI POSIX namespace (gamma, isnan, scalb)
- [18969] build: multiple string test failures due to missing locale
- dependencies
- [18970] libc: Reference of pthread_setcancelstate in libc.a
- [18977] math: float / long double Bessel functions not in XSI POSIX
- [18980] math: i386 libm functions return with excess range and precision
- [18981] math: i386 scalb*, ldexp return with excess range and precision
- [18982] stdio: va_list and vprintf
- [18985] time: Passing out of range data to strftime() causes a segfault
- (CVE-2015-8776)
- [19003] math: [x86_64] fma4 version of pow inappropriate contraction
- [19007] libc: FAIL: elf/check-localplt with -z now and binutils 2.26
- [19012] locale: iconv_open leaks memory on error path
- [19016] math: clog, clog10 inaccuracy
- [19018] nptl: Mangle function pointers in tls_dtor_list
- [19032] math: [i386] acosh (-qNaN) spurious "invalid" exception
- [19046] math: ldbl-128 / ldbl-128ibm lgamma bad overflow handling
- [19048] malloc: malloc: arena free list can become cyclic, increasing
- contention
- [19049] math: [powerpc] erfc incorrect zero sign
- [19050] math: [powerpc] log* incorrect zero sign
- [19058] math: [x86_64] Link fail with -fopenmp and -flto
- [19059] math: nexttoward overflow incorrect in non-default rounding modes
- [19071] math: ldbl-96 lroundl incorrect just below powers of 2
- [19074] network: Data race in _res_hconf_reorder_addrs
- [19076] math: [ldbl-128ibm] log1pl (-1) wrong sign of infinity
- [19077] math: [ldbl-128ibm] logl (1) incorrect sign of zero result
- [19078] math: [ldbl-128ibm] expl overflow incorrect in non-default
- rounding modes
- [19079] math: dbl-64/wordsize-64 lround based on llround incorrect for
- ILP32
- [19085] math: ldbl-128 lrintl, lroundl missing exceptions for 32-bit long
- [19086] manual: posix_fallocate64 documented argument order is wrong.
- [19088] math: lround, llround missing exceptions close to overflow
- threshold
- [19094] math: lrint, llrint missing exceptions close to overflow threshold
- [19095] math: dbl-64 lrint incorrect for 64-bit long
- [19122] dynamic-link: Unnecessary PLT relocations in librtld.os
- [19124] dynamic-link: ld.so failed to build with older assmebler
- [19125] math: [powerpc32] llroundf, llround incorrect exceptions
- [19129] dynamic-link: [arm] Concurrent lazy TLSDESC resolution can crash
- [19134] math: [powerpc32] lround, lroundf spurious exceptions
- [19137] libc: i386/epoll_pwait.S doesn't support cancellation
- [19143] nptl: Remove CPU set size checking from sched_setaffinity,
- pthread_setaffinity_np
- [19156] math: [ldbl-128] j0l spurious underflows
- [19164] nptl: tst-getcpu fails with many possible CPUs
- [19168] math: math/test-ildoubl and math/test-ldouble failure
- [19174] nptl: PowerPC: TLE enabled pthread mutex performs poorly.
- [19178] dynamic-link: ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA confuses
- prelink
- [19181] math: [i386/x86_64] fesetenv (FE_DFL_ENV), fesetenv
- (FE_NOMASK_ENV) do not clear SSE exceptions
- [19182] malloc: malloc deadlock between ptmalloc_lock_all and
- _int_new_arena/reused_arena
- [19189] math: [ldbl-128] log1pl (-qNaN) spurious "invalid" exception
- [19201] math: dbl-64 remainder incorrect sign of zero result
- [19205] math: bits/math-finite.h conditions do not match math.h and
- bits/mathcalls.h
- [19209] math: bits/math-finite.h wrongly maps ldexp to scalbn
- [19211] math: lgamma functions do not set signgam for -ffinite-math-only
- for C99-based standards
- [19212] libc: features.h not -Wundef clean
- [19213] math: [i386/x86_64] log* (1) incorrect zero sign for -ffinite-
- math-only
- [19214] libc: Family and model identification for AMD CPU's are incorrect.
- [19219] libc: GLIBC build fails for ia64 with missing __nearbyintl
- [19228] math: [powerpc] nearbyint wrongly clears "inexact", leaves traps
- disabled
- [19235] math: [powerpc64] lround, lroundf, llround, llroundf spurious
- "inexact" exceptions
- [19238] math: [powerpc] round, roundf spurious "inexact" for integer
- arguments
- [19242] libc: strtol incorrect in Turkish locales
- [19243] malloc: reused_arena can pick an arena on the free list, leading
- to an assertion failure and reference count corruption
- [19253] time: tzset() ineffective when temporary TZ did not include DST
- rules
- [19266] math: strtod ("NAN(I)") incorrect in Turkish locales
- [19270] math: [hppa] Shared libm missing __isnanl
- [19285] libc: [hppa] sysdeps/unix/sysv/linux/hppa/bits/mman.h: missing
- MAP_HUGETLB and MAP_STACK defines
- [19313] nptl: Wrong __cpu_mask for x32
- [19347] libc: grantpt: try to force a specific gid even without pt_chown
- [19349] math: [ldbl-128ibm] tanhl inaccurate for small arguments
- [19350] math: [ldbl-128ibm] sinhl spurious overflows
- [19351] math: [ldbl-128ibm] logl inaccurate near 1
- [19363] time: x32: times() return value wrongly truncates/sign extends
- from 32bit
- [19367] dynamic-link: Improve branch prediction on Silvermont
- [19369] network: Default domain name not reset by res_ninit when "search"
- / "domain" entry is removed from resolv.conf
- [19375] math: powerpc: incorrect results for POWER7 logb with negative
- subnormals
- [19385] localedata: bg_BG: time separator should be colon, not comma
- [19408] libc: linux personality syscall wrapper may erroneously return an
- error on 32-bit architectures
- [19415] libc: dladdr returns wrong names on hppa
- [19432] libc: iconv rejects redundant escape sequences in IBM900, IBM903,
- IBM905, IBM907, and IBM909
- [19439] math: Unix98 isinf and isnan functions conflict with C++11
- [19443] build: build failures with -DDEBUG
- [19451] build: Make check fails on test-double-vlen2
- [19462] libc: Glibc failed to build with -Os
- [19465] math: Wrong code with -Os
- [19466] time: time/tst-mktime2.c is compiled into an infinite loop with
- -Os
- [19467] string: Fast_Unaligned_Load needs to be enabled for Excavator core
- CPU's.
- [19475] libc: Glibc 2.22 doesn't build on sparc [PATCH]
- [19486] math: S390: Math tests fail with "Exception Inexact set".
- [19529] libc: [ARM]: FAIL: stdlib/tst-makecontext
- [19550] libc: [mips] mmap negative offset handling inconsistent with other
- architectures
- [19590] math: Fail to build shared objects that use libmvec.so functions.
-
-Version 2.22
-
-* The following bugs are resolved with this release:
-
- 438, 2981, 4719, 6544, 6792, 11216, 12836, 13028, 13064, 13151, 13152,
- 14094, 14113, 14292, 14841, 14906, 14958, 15319, 15467, 15790, 15969,
- 16159, 16339, 16350, 16351, 16352, 16353, 16361, 16512, 16526, 16538,
- 16559, 16560, 16704, 16783, 16850, 17053, 17090, 17195, 17269, 17293,
- 17322, 17403, 17475, 17523, 17542, 17569, 17581, 17588, 17596, 17620,
- 17621, 17628, 17631, 17692, 17711, 17715, 17776, 17779, 17792, 17833,
- 17836, 17841, 17912, 17916, 17930, 17932, 17944, 17949, 17964, 17965,
- 17967, 17969, 17977, 17978, 17987, 17991, 17996, 17998, 17999, 18007,
- 18019, 18020, 18029, 18030, 18032, 18034, 18036, 18038, 18039, 18042,
- 18043, 18046, 18047, 18049, 18068, 18078, 18080, 18093, 18100, 18104,
- 18110, 18111, 18116, 18125, 18128, 18134, 18138, 18185, 18196, 18197,
- 18206, 18210, 18211, 18217, 18219, 18220, 18221, 18234, 18244, 18245,
- 18247, 18287, 18319, 18324, 18333, 18346, 18371, 18383, 18397, 18400,
- 18409, 18410, 18412, 18418, 18422, 18434, 18444, 18457, 18468, 18469,
- 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18502, 18507, 18508,
- 18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
- 18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547,
- 18549, 18553, 18557, 18558, 18569, 18583, 18585, 18586, 18592, 18593,
- 18594, 18602, 18612, 18613, 18619, 18633, 18635, 18641, 18643, 18648,
- 18657, 18676, 18694, 18696, 18887.
-
-* Cache information can be queried via sysconf() function on s390 e.g. with
- _SC_LEVEL1_ICACHE_SIZE as argument.
-
-* A buffer overflow in gethostbyname_r and related functions performing DNS
- requests has been fixed. If the NSS functions were called with a
- misaligned buffer, the buffer length change due to pointer alignment was
- not taken into account. This could result in application crashes or,
- potentially arbitrary code execution, using crafted, but syntactically
- valid DNS responses. (CVE-2015-1781)
-
-* The time zone file parser has been made more robust against crafted time
- zone files, avoiding heap buffer overflows related to the processing of
- the tzh_ttisstdcnt and tzh_ttisgmtcnt fields, and a stack overflow due to
- large time zone data files. Overly long time zone specifiers in the TZ
- variable no longer result in stack overflows and crashes.
-
-* A powerpc and powerpc64 optimization for TLS, similar to TLS descriptors
- for LD and GD on x86 and x86-64, has been implemented. You will need
- binutils-2.24 or later to enable this optimization.
-
-* Character encoding and ctype tables were updated to Unicode 7.0.0, using
- new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red
- Hat). These updates cause user visible changes, such as the fix for bug
- 17998.
-
-* CVE-2014-8121 The NSS backends shared internal state between the getXXent
- and getXXbyYY NSS calls for the same database, causing a denial-of-service
- condition in some applications.
-
-* Added vector math library named libmvec with the following vectorized x86_64
- implementations: cos, cosf, sin, sinf, sincos, sincosf, log, logf, exp, expf,
- pow, powf.
- The library can be disabled with --disable-mathvec. Use of the functions is
- enabled with -fopenmp -ffast-math starting from -O1 for GCC version >= 4.9.0.
- Shared library libmvec.so is linked in as needed when using -lm (no need to
- specify -lmvec explicitly for not static builds).
- Visit <https://sourceware.org/glibc/wiki/libmvec> for detailed information.
-
-* A new fmemopen implementation has been added with the goal of POSIX
- compliance. The new implementation fixes the following long-standing
- issues: BZ#6544, BZ#11216, BZ#12836, BZ#13151, BZ#13152, and BZ#14292. The
- old implementation is still present for use be by existing binaries.
-
-* The 32-bit sparc sigaction ABI was inadvertently broken in the 2.20 and 2.21
- releases. It has been fixed to match 2.19 and older, but binaries built
- against 2.20 and 2.21 might need to be recompiled. See BZ#18694.
-
-* Port to Native Client running on ARMv7-A (--host=arm-nacl).
- Contributed by Roland McGrath (Google).
-
-* The header <regexp.h> is deprecated, and will be removed in a future
- release. Use of this header will trigger a deprecation warning.
- Application developers should update their code to use <regex.h> instead.
-
- This header was formerly part of SUS, but was deprecated in 1994 and
- removed from the standard in 2001. Also, the glibc implementation
- leaks memory. See BZ#18681 for more details.
-
-Version 2.21
-
-* The following bugs are resolved with this release:
-
- 6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498,
- 15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618,
- 16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370,
- 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555,
- 17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589,
- 17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647,
- 17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719,
- 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747,
- 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797,
- 17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885,
- 17892.
-
-* CVE-2015-1472 CVE-2015-1473 Under certain conditions wscanf can allocate
- too little memory for the to-be-scanned arguments and overflow the
- allocated buffer. The implementation now correctly computes the required
- buffer size when using malloc, and switches to malloc from alloca as
- intended.
-
-* A new semaphore algorithm has been implemented in generic C code for all
- machines. Previous custom assembly implementations of semaphore were
- difficult to reason about or ensure that they were safe. The new version
- of semaphore supports machines with 64-bit or 32-bit atomic operations.
- The new semaphore algorithm is used by sem_init, sem_open, sem_post,
- sem_wait, sem_timedwait, sem_trywait, and sem_getvalue.
-
-* Port to Altera Nios II has been contributed by Mentor Graphics.
-
-* Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
- implementations for powerpc64/powerpc64le.
- Implemented by Adhemerval Zanella (IBM).
-
-* Added support for TSX lock elision of pthread mutexes on powerpc32, powerpc64
- and powerpc64le. This may improve lock scaling of existing programs on
- HTM capable systems. The lock elision code is only enabled with
- --enable-lock-elision=yes. Also, the TSX lock elision implementation for
- powerpc will issue a transaction abort on every syscall to avoid side
- effects being visible outside transactions.
-
-* Optimized strcpy, stpcpy, strchrnul and strrchr implementations for
- AArch64. Contributed by ARM Ltd.
-
-* i386 memcpy functions optimized with SSE2 unaligned load/store.
-
-* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
- under certain input conditions resulting in the execution of a shell for
- command substitution when the application did not request it. The
- implementation now checks WRDE_NOCMD immediately before executing the
- shell and returns the error WRDE_CMDSUB as expected.
-
-* CVE-2012-3406 printf-style functions could run into a stack overflow when
- processing format strings with a large number of format specifiers.
-
-* CVE-2014-9402 The nss_dns implementation of getnetbyname could run into an
- infinite loop if the DNS response contained a PTR record of an unexpected
- format.
-
-* The minimum GCC version that can be used to build this version of the GNU
- C Library is GCC 4.6. Older GCC versions, and non-GNU compilers, can
- still be used to compile programs using the GNU C Library.
-
-* The GNU C Library is now built with -Werror by default. This can be
- disabled by configuring with --disable-werror.
-
-* New locales: tu_IN, bh_IN, raj_IN, ce_RU.
-
-* The obsolete sigvec function has been removed. This was the original
- 4.2BSD interface that inspired the POSIX.1 sigaction interface, which
- programs have been using instead for about 25 years. Of course, ABI
- compatibility for old binaries using sigvec remains intact.
-
-* Merged gettext 0.19.3 into the intl subdirectory. This fixes building
- with newer versions of bison.
-
-* Support for MIPS o32 FPXX, FP64A and FP64 ABI Extensions.
- The original MIPS o32 hard-float ABI requires an FPU where double-precision
- registers overlay two consecutive single-precision registers. MIPS32R2
- introduced a new FPU mode (FR=1) where double-precision registers extend the
- corresponding single-precision registers which is incompatible with the
- o32 hard-float ABI. The MIPS SIMD ASE and the MIPSR6 architecture both
- require the use of FR=1 making a transition necessary. New o32 ABI
- extensions enable users to migrate over time from the original o32 ABI
- through to the updated o32 FP64 ABI. To achieve this the dynamic linker now
- tracks the ABI of any loaded object and verifies that new objects are
- compatible. Mode transitions will also be requested as required and
- unsupportable objects will be rejected. The ABI checks include both soft and
- hard float ABIs for o32, n32 and n64.
-
- GCC 5 with GNU binutils 2.25 onwards:
- It is strongly recommended that all o32 system libraries are built using the
- new o32 FPXX ABI (-mfpxx) to facilitate the transition as this is compatible
- with the original and all new o32 ABI extensions. Configure a MIPS GCC
- compiler using --with-fp-32=xx to set this by default.
-
-Version 2.20
-
-* The following bugs are resolved with this release:
-
- 6804, 9894, 11505, 12994, 13347, 13651, 14308, 14770, 15119, 15132, 15347,
- 15514, 15698, 15804, 15894, 15946, 16002, 16064, 16095, 16194, 16198,
- 16275, 16284, 16287, 16315, 16348, 16349, 16354, 16357, 16362, 16447,
- 16516, 16532, 16539, 16545, 16561, 16562, 16564, 16574, 16599, 16600,
- 16609, 16610, 16611, 16613, 16619, 16623, 16629, 16632, 16634, 16639,
- 16642, 16648, 16649, 16670, 16674, 16677, 16680, 16681, 16683, 16689,
- 16695, 16701, 16706, 16707, 16712, 16713, 16714, 16724, 16731, 16739,
- 16740, 16743, 16754, 16758, 16759, 16760, 16770, 16786, 16789, 16791,
- 16796, 16799, 16800, 16815, 16823, 16824, 16831, 16838, 16839, 16849,
- 16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890, 16892, 16912,
- 16915, 16916, 16917, 16918, 16922, 16927, 16928, 16932, 16943, 16958,
- 16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17022,
- 17031, 17042, 17048, 17050, 17058, 17061, 17062, 17069, 17075, 17078,
- 17079, 17084, 17086, 17088, 17092, 17097, 17125, 17135, 17137, 17150,
- 17153, 17187, 17213, 17259, 17261, 17262, 17263, 17319, 17325, 17354.
-
-* Reverted change of ABI data structures for s390 and s390x:
- On s390 and s390x the size of struct ucontext and jmp_buf was increased in
- 2.19. This change is reverted in 2.20. The introduced 2.19 symbol versions
- of getcontext, setjmp, _setjmp, __sigsetjmp, longjmp, _longjmp, siglongjmp
- are preserved pointing straight to the same implementation as the old ones.
- Given that, new callers will simply provide a too-big buffer to these
- functions. Any applications/libraries out there that embed jmp_buf or
- ucontext_t in an ABI-relevant data structure that have already been rebuilt
- against 2.19 headers will have to rebuilt again. This is necessary in any
- case to revert the breakage in their ABI caused by the glibc change.
-
-* Support for file description locks is added to systems running the
- Linux kernel. The standard file locking interfaces are extended to
- operate on file descriptions, not file descriptors, via the use of
- F_OFD_GETLK, F_OFD_SETLK, and F_OFD_SETLKW. File description locks
- are associated with an open file instead of a process.
-
-* Optimized strchr implementation for AArch64. Contributed by ARM Ltd.
-
-* The minimum Linux kernel version that this version of the GNU C Library
- can be used with is 2.6.32.
-
-* Running the testsuite no longer terminates as soon as a test fails.
- Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
- with PASS or FAIL lines for individual tests. A summary of the results is
- printed, including a list of failing lists, and "make check" exits with
- error status if there were any unexpected failures. "make check
- stop-on-test-failure=y" may be used to keep the old behavior.
-
-* The am33 port, which had not worked for several years, has been removed
- from ports.
-
-* The _BSD_SOURCE and _SVID_SOURCE feature test macros are no longer
- supported; they now act the same as _DEFAULT_SOURCE (but generate a
- warning). Except for cases where _BSD_SOURCE enabled BSD interfaces that
- conflicted with POSIX (support for which was removed in 2.19), the
- interfaces those macros enabled remain available when compiling with
- _GNU_SOURCE defined, with _DEFAULT_SOURCE defined, or without any feature
- test macros defined.
-
-* Optimized strcmp implementation for ARMv7. Contributed by ARM Ltd.
-
-* Added support for TX lock elision of pthread mutexes on s390 and s390x.
- This may improve lock scaling of existing programs on TX capable systems.
- The lock elision code is only built with --enable-lock-elision=yes and
- then requires a GCC version supporting the TX builtins. With lock elision
- default mutexes are elided via __builtin_tbegin, if the cpu supports
- transactions. By default lock elision is not enabled and the elision code
- is not built.
-
-* CVE-2014-4043 The posix_spawn_file_actions_addopen implementation did not
- copy the path argument. This allowed programs to cause posix_spawn to
- deference a dangling pointer, or use an unexpected pathname argument if
- the string was modified after the posix_spawn_file_actions_addopen
- invocation.
-
-* All supported architectures now use the main glibc sysdeps directory
- instead of some being in a separate "ports" directory (which was
- distributed separately before glibc 2.17).
-
-* The NPTL implementation of POSIX pthreads is no longer an "add-on".
- On configurations that support it (all Linux configurations), it's now
- used regardless of the --enable-add-ons switch to configure. It is no
- longer possible to build such configurations without pthreads support.
-
-* Locale names, including those obtained from environment variables (LANG
- and the LC_* variables), are more tightly checked for proper syntax.
- setlocale will now fail (with EINVAL) for locale names that are overly
- long, contain slashes without starting with a slash, or contain ".." path
- components. (CVE-2014-0475) Previously, some valid locale names were
- silently replaced with the "C" locale when running in AT_SECURE mode
- (e.g., in a SUID program). This is no longer necessary because of the
- additional checks.
-
-* On x86-64, the dynamic linker's lazy-binding support is now compatible
- with application code using Intel MPX instructions. (With all previous
- versions, the MPX register state could be clobbered when making calls
- into or out of a shared library.) Note that while the new dynamic
- linker is compatible with all known x86 hardware whether or not it
- supports Intel MPX, some x86 instruction-set emulators might fail to
- handle the new instruction encodings. This is known to affect Valgrind
- versions up through 3.9 (but will be fixed in the forthcoming 3.10
- release), and might affect other tools that do instruction emulation.
-
-* Support for loadable gconv transliteration modules has been removed.
- The support for transliteration modules has been non-functional for
- over a decade, and the removal is prompted by security defects. The
- normal gconv conversion modules are still supported. Transliteration
- with //TRANSLIT is still possible, and the //IGNORE specifier
- continues to be supported. (CVE-2014-5119)
-
-* Decoding a crafted input sequence in the character sets IBM933, IBM935,
- IBM937, IBM939, IBM1364 could result in an out-of-bounds array read,
- resulting a denial-of-service security vulnerability in applications which
- use functions related to iconv. (CVE-2014-6040)
-
-Version 2.19
-
-* The following bugs are resolved with this release:
-
- 156, 387, 431, 762, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 6981,
- 7003, 9721, 9954, 10253, 10278, 11087, 11157, 11214, 12100, 12486, 12751,
- 12986, 13028, 13982, 13985, 14029, 14032, 14120, 14143, 14155, 14286,
- 14547, 14699, 14752, 14782, 14876, 14910, 15004, 15048, 15073, 15089,
- 15128, 15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427,
- 15483, 15522, 15531, 15532, 15593, 15601, 15608, 15609, 15610, 15632,
- 15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748,
- 15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825, 15843, 15844,
- 15846, 15847, 15849, 15850, 15855, 15856, 15857, 15859, 15867, 15886,
- 15887, 15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915,
- 15917, 15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15968,
- 15985, 15988, 15997, 16032, 16034, 16036, 16037, 16038, 16041, 16046,
- 16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144,
- 16146, 16150, 16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245,
- 16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338,
- 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16381, 16384, 16385,
- 16386, 16387, 16390, 16394, 16398, 16400, 16407, 16408, 16414, 16430,
- 16431, 16453, 16474, 16506, 16510, 16529
-
-* Slovenian translations for glibc messages have been contributed by the
- Translation Project's Slovenian team of translators.
-
-* The public headers no longer use __unused nor __block. This change is to
- support compiling programs that are derived from BSD sources and use
- __unused internally, and to support compiling with Clang's -fblock
- extension which uses __block.
-
-* CVE-2012-4412 The strcoll implementation caches indices and rules for
- large collation sequences to optimize multiple passes. This cache
- computation may overflow for large collation sequences and may cause a
- stack or buffer overflow. This is now fixed to use a slower algorithm
- which does not use a cache if there is an integer overflow.
-
-* CVE-2012-4424 The strcoll implementation uses malloc to cache indices and
- rules for large collation sequences to optimize multiple passes and falls
- back to alloca if malloc fails, resulting in a possible stack overflow.
- The implementation now falls back to an uncached collation sequence lookup
- if malloc fails.
-
-* CVE-2013-4788 The pointer guard used for pointer mangling was not
- initialized for static applications resulting in the security feature
- being disabled. The pointer guard is now correctly initialized to a
- random value for static applications. Existing static applications need
- to be recompiled to take advantage of the fix (bug 15754).
-
-* CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
- to the d_name member of struct dirent, or omit the terminating NUL
- character. (Bugzilla #14699).
-
-* CVE-2013-4332 The pvalloc, valloc, memalign, posix_memalign and
- aligned_alloc functions could allocate too few bytes or corrupt the
- heap when passed very large allocation size values (Bugzilla #15855,
- #15856, #15857).
-
-* CVE-2013-4458 Stack overflow in getaddrinfo with large number of results
- for AF_INET6 has been fixed (Bugzilla #16072).
-
-* New locales: ak_GH, anp_IN, ar_SS, cmn_TW, hak_TW, lzh_TW, nan_TW, pap_AW,
- pap_CW, quz_PE, the_NP.
-
-* Substantially revised locales: gd_GB, ht_HT
-
-* The LC_ADDRESS field was updated to support country_car for almost all
- supported locales.
-
-* ISO 1427 definitions were updated.
-
-* ISO 3166 definitions were updated.
-
-* The localedef utility now supports --big-endian and --little-endian
- command-line options to generate locales for a different system from that
- for which the C library was built.
-
-* Binary locale files now only depend on the endianness of the system for
- which they are generated and not on other properties of that system. As a
- consequence, binary files generated with new localedef may be incompatible
- with old versions of the GNU C Library, and binary files generated with
- old localedef may be incompatible with this version of the GNU C Library,
- in the following circumstances:
-
- + Locale files may be incompatible on m68k systems.
-
- + Locale archive files (but not separate files for individual locales) may
- be incompatible on systems where plain "char" is signed.
-
-* The configure option --disable-versioning has been removed. Builds with
- --disable-versioning had not worked for several years.
-
-* ISO 639 definitions were updated for Chiga (cgg) and Chinese (gan, hak, czh,
- cjy, lzh, cmn, mnp, cdo, czo, cpx, wuu, hsn, yue).
-
-* SystemTap probes for malloc have been introduced.
-
-* SystemTap probes for slow multiple precision fallback paths of
- transcendental functions have been introduced.
-
-* Support for powerpc64le has been added.
-
-* The soft-float powerpc port now supports e500 processors.
-
-* Support for STT_GNU_IFUNC symbols added for ppc32/power4+ and ppc64.
-
-* A new feature test macro _DEFAULT_SOURCE is available to enable the same
- set of header declarations that are enabled by default, even when other
- feature test macros or compiler options such as -std=c99 would otherwise
- disable some of those declarations.
-
-* The _BSD_SOURCE feature test macro no longer enables BSD interfaces that
- conflict with POSIX. The libbsd-compat library (which was a dummy library
- that did nothing) has also been removed.
-
-* Preliminary documentation about Multi-Thread, Async-Signal and
- Async-Cancel Safety has been added.
-
-* Change of ABI data structures for s390 and s390x:
- On s390 and s390x the size of struct ucontext and jmp_buf was increased to
- allow for future hardware extensions. All library functions that accept or
- return these structures were versioned in order to provide backwards
- compatibility with existing code. However, not all cases can be handled
- with interface versioning. If an application embeds either structure into
- another structure and that structure is passed to another compilation unit
- which expects the newer larger-sized object then any access to the new
- fields will result in undefined behaviour. Similarly any access to fields
- that were moved by the enlarging of the structures will cause undefined
- behaviour. To fix the undefined behaviour all objects that are part of the
- final in-memory image must agree on the size of structures, and this may
- require recompilation.
-
-Version 2.18
-
-* The following bugs are resolved with this release:
-
- 2546, 2560, 5159, 6809, 7006, 10060, 10062, 10283, 10357, 10686, 11120,
- 11561, 12310, 12387, 12492, 12515, 12723, 13550, 13889, 13951, 13988,
- 14142, 14176, 14200, 14256, 14280, 14293, 14317, 14327, 14478, 14496,
- 14582, 14686, 14812, 14888, 14894, 14907, 14908, 14909, 14920, 14941,
- 14952, 14964, 14981, 14982, 14985, 14991, 14994, 14996, 15000, 15003,
- 15006, 15007, 15014, 15020, 15022, 15023, 15036, 15054, 15055, 15062,
- 15078, 15084, 15085, 15086, 15100, 15160, 15214, 15221, 15232, 15234,
- 15283, 15285, 15287, 15304, 15305, 15307, 15309, 15327, 15330, 15335,
- 15336, 15337, 15339, 15342, 15346, 15359, 15361, 15366, 15380, 15381,
- 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419, 15423, 15424,
- 15426, 15429, 15431, 15432, 15441, 15442, 15448, 15465, 15480, 15485,
- 15488, 15490, 15492, 15493, 15497, 15506, 15529, 15536, 15553, 15577,
- 15583, 15618, 15627, 15631, 15654, 15655, 15666, 15667, 15674, 15711,
- 15755, 15759.
-
-* CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
- has been fixed by disabling the use of pt_chown (Bugzilla #15755).
- Distributions can re-enable building and using pt_chown via the new configure
- option `--enable-pt_chown'. Enabling the use of pt_chown carries with it
- considerable security risks and should only be used if the distribution
- understands and accepts the risks.
-
-* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
- #15078).
-
-* CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
- fixed (Bugzilla #15330).
-
-* Add support for calling C++11 thread_local object destructors on thread
- and program exit. This needs compiler support for offloading C++11
- destructor calls to glibc.
-
-* Improved worst case performance of libm functions with double inputs and
- output.
-
-* Support for priority inherited mutexes in pthread condition variables on
- non-x86 architectures.
-
-* Port to Xilinx MicroBlaze contributed by David Holsgrove.
-
-* Optimized string functions for AArch64. Implemented by Marcus Shawcroft.
-
-* Optimized string functions for ARM. Implemented by Will Newton and
- Richard Henderson.
-
-* Optimized libm functions for SPARC. Implemented by David S. Miller.
-
-* Support for building more of ARM glibc as Thumb-2 code. Implemented by
- Richard Henderson.
-
-* Support for building most of MIPS glibc as MIPS16 code. Implemented by
- Chung-Lin Tang, Maciej W. Rozycki and Maxim Kuvyrkov.
-
-* Added a benchmark framework to track performance of functions in glibc.
-
-* New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
- It is based on draft TS 18661 and currently enabled as a GNU extension.
-
-* On Linux, the clock function now uses the clock_gettime system call
- for improved precision, rather than old times system call.
-
-* Added support for version-3 tz format files. This is needed when using
- the tz database release 2013e or later, and affects a few unusual cases --
- currently only TZ='America/Godthab' for time stamps after 2037.
-
-* Added new API functions pthread_getattr_default_np and
- pthread_setattr_default_np to get and set the default pthread
- attributes of a process.
-
-* Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
- This may improve lock scaling of existing programs on TSX capable systems.
- When the --enable-lock-elision=yes parameter is specified at configure
- time lock elision will be enabled by default for all PTHREAD_MUTEX_DEFAULT
- mutexes.
-
-* Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
- availability). Implemented by Ryan S. Arnold.
-
-* Support added for POWER8 platform. Implemented by Ryan S. Arnold.
-
-Version 2.17
-
-* The following bugs are resolved with this release:
-
- 1349, 3439, 3479, 3665, 5044, 5246, 5298, 5400, 6530, 6677, 6778, 6808,
- 9685, 9914, 10014, 10038, 10114, 10191, 10631, 10873, 11438, 11607, 11638,
- 11741, 12140, 13013, 13412, 13542, 13601, 13603, 13604, 13629, 13679,
- 13696, 13698, 13717, 13741, 13759, 13761, 13763, 13881, 13939, 13950,
- 13952, 13966, 14042, 14047, 14090, 14150, 14151, 14152, 14154, 14157,
- 14166, 14173, 14195, 14197, 14237, 14246, 14251, 14252, 14283, 14298,
- 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14368, 14376,
- 14417, 14447, 14459, 14476, 14477, 14501, 14505, 14510, 14516, 14518,
- 14519, 14530, 14532, 14538, 14543, 14544, 14545, 14557, 14562, 14568,
- 14576, 14579, 14583, 14587, 14595, 14602, 14610, 14621, 14638, 14645,
- 14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694, 14716, 14719,
- 14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14803,
- 14805, 14807, 14811, 14815, 14821, 14822, 14824, 14828, 14831, 14833,
- 14835, 14838, 14856, 14863, 14865, 14866, 14868, 14869, 14871, 14872,
- 14879, 14889, 14893, 14898, 14914.
-
-* Optimization of memcpy for MIPS.
-
-* CVE-2011-4609 svc_run() produces high cpu usage when accept fails with
- EMFILE has been fixed (Bugzilla #14889).
-
-* The add-on ports collection is now distributed in the "ports" subdirectory
- of the main GNU C Library distribution, rather than separately.
-
-* Port to ARM AArch64 contributed by Linaro.
-
-* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
- Optimized versions of memcpy, memset, and memcmp added for System z10 and
- zEnterprise z196.
- Implemented by Andreas Krebbel.
-
-* The new function secure_getenv allows secure access to the environment,
- returning NULL if running in a SUID/SGID process. This function replaces
- the internal function __secure_getenv.
-
-* SystemTap static probes have been added into the dynamic linker.
- Implemented by Gary Benson.
-
-* Optimizations of string functions strstr, strcasestr and memmem.
- Implemented by Maxim Kuvyrkov.
-
-* The minimum Linux kernel version that this version of the GNU C Library
- can be used with is 2.6.16.
-
-* Optimizations of string functions memchr, wcschr, wcscpy, and wcsrchr for
- powerpc POWER7. Implemented by Will Schmidt.
-
-* New configure option --disable-nscd builds the C library such that it
- never attempts to contact the Name Service Caching Daemon (nscd).
- New configure option --disable-build-nscd avoids building nscd itself;
- this is the default if --disable-nscd is used.
-
-* Improved support for cross-compilation, including cross-testing and
- bootstrap builds without a previously built glibc.
-
-* Several testsuite tests are now able to test multiple IFUNC variants of an
- interface, rather than just testing the one that would be chooen by
- default.
-
-* New configure options --with-bugurl and --with-pkgversion, for
- distributors to use to embed their bug-reporting and package version
- information in --help and --version output.
-
-* The ttyname and ttyname_r functions on Linux now fall back to searching for
- the tty file descriptor in /dev/pts or /dev if /proc is not available. This
- allows creation of chroots without the procfs mounted on /proc.
-
-* The `crypt' function now fails if passed salt bytes that violate the
- specification for those values. On Linux, the `crypt' function will
- consult /proc/sys/crypto/fips_enabled to determine if "FIPS mode" is
- enabled, and fail on encrypted strings using the MD5 or DES algorithm
- when the mode is enabled.
-
-* The `clock_*' suite of functions (declared in <time.h>) is now available
- directly in the main C library. Previously it was necessary to link with
- -lrt to use these functions. This change has the effect that a
- single-threaded program that uses a function such as `clock_gettime' (and
- is not linked with -lrt) will no longer implicitly load the pthreads
- library at runtime and so will not suffer the overheads associated with
- multi-thread support in other code such as the C++ runtime library.
-
-* New locales: ayc_PE, doi_IN, ia_FR, mni_IN, nhn_MX, niu_NU, niu_NZ,
- sat_IN, and szl_PL.
-
-Version 2.16
-
-* The following bugs are resolved with this release:
-
- 174, 208, 350, 369, 411, 706, 766, 2074, 2541, 2547, 2548, 2550, 2551,
- 2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678, 3335,
- 3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596, 4822,
- 5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794, 6884,
- 6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110, 10135, 10140,
- 10153, 10210, 10254, 10346, 10375, 10545, 10716, 10846, 10882, 11174,
- 11261, 11322, 11365, 11451, 11494, 11521, 11677, 11837, 11959, 12047,
- 12097, 12193, 12194, 12297, 12298, 12301, 12340, 12354, 12416, 12495,
- 13058, 13223, 13361, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
- 13532, 13533, 13547, 13551, 13552, 13553, 13555, 13556, 13559, 13563,
- 13566, 13576, 13579, 13583, 13592, 13594, 13613, 13618, 13637, 13656,
- 13658, 13673, 13691, 13695, 13704, 13705, 13706, 13718, 13726, 13738,
- 13739, 13743, 13750, 13758, 13760, 13761, 13775, 13786, 13787, 13792,
- 13806, 13824, 13840, 13841, 13844, 13846, 13848, 13851, 13852, 13854,
- 13871, 13872, 13873, 13879, 13882, 13883, 13884, 13885, 13886, 13892,
- 13895, 13908, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917,
- 13918, 13919, 13920, 13921, 13922, 13923, 13924, 13926, 13927, 13928,
- 13938, 13941, 13942, 13954, 13955, 13956, 13963, 13967, 13968, 13970,
- 13973, 13979, 13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036,
- 14040, 14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064,
- 14075, 14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123,
- 14134, 14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273,
- 14277, 14278.
-
-* Support for the x32 ABI on x86-64 added. The x32 target is selected by
- configuring glibc with:
- BUILD_CC='gcc' CC='gcc -mx32' CXX='g++ -mx32'
- Visit <https://sites.google.com/site/x32abi/> for more x32 ABI info.
- Implemented by H.J. Lu.
-
-* ISO C11 support:
-
- + define static_assert
-
- + do not declare gets
-
- + declare at_quick_exit and quick_exit also for ISO C11
-
- + aligned_alloc. NB: The code is deliberately allows the size parameter
- to not be a multiple of the alignment. This is a moronic requirement
- in the standard but it is only a requirement on the caller, not the
- implementation.
-
- + timespec_get added
-
- + uchar.h support added
-
- + CMPLX, CMPLXF, CMPLXL added
-
- Implemented by Ulrich Drepper.
-
-* Support for the IA-64 has been moved to ports.
-
-* Remove support for anything but ELF binary format
-
-* Checking versions of poll, ppoll added.
- Implemented by Ulrich Drepper.
-
-* More generic and 64-bit performance optimizations to math functions.
- Implemented by Ulrich Drepper.
-
-* New configure option --enable-obsolete-rpc makes the deprecated RPC
- headers and functions available at compile time as they were before
- version 2.14. This option will be removed at some time in the future
- after the TI-RPC library becomes fully sufficient for the needs of
- existing applications.
-
-* Compatibility code for Linux kernel versions before 2.4 has been removed.
- Note that glibc is not expected to work with any Linux kernel version
- before 2.6.
-
-* New header <sys/auxv.h> and function getauxval allowing easy access to
- the AT_* key-value pairs passed from the Linux kernel. The header also
- defines the HWCAP_* bits associated with the AT_HWCAP key.
-
-* New locales: mag_IN
-
-* New configure option --enable-systemtap builds SystemTap static probes
- into libc for setjmp and longjmp and into libpthread for various operations.
- So far the setjmp/longjmp probes and some of the libpthread probes are
- provided only for i*86 and x86_64.
- Implemented by Roland McGrath and Rayson Ho.
-
-* Optimized expf for x86-32 and x86-64. Implemented by Liubov Dmitrieva.
-
-* More optimized functions for PowerPC. Implemented by Adhemerval Zanella
- and Will Schmidt.
-
-* More optimized functions for SPARC. Implemented by David S. Miller.
-
-* Improved support for cross-compilation, especially bootstrap builds
- without a previously built glibc.
-
-* Ports for the TILE-Gx and TILEPro families of processors. Contributed by
- Chris Metcalf from Tilera.
-
-* Support for the old ARM ABI has been removed from ports. Only the EABI is
- now supported for ARM processors.
-
-* The hard-float variant of the ARM EABI now uses /lib/ld-linux-armhf.so.3
- as the name of the dynamic linker, to distinguish it from the
- /lib/ld-linux.so.3 dynamic linker used for the base EABI.
-
-* Support for CRIS has been removed from ports.
-
-* A new class of installed header has been documented for low-level
- platform-specific functionality. PowerPC added the first instance with a
- function to provide time base register access. Contributed by Tulio
- Magno Quites Machado Filho.
-
-* ix86 configurations now install header files that are consistent with
- what x86-64 configurations install. These same header files can be used
- for -m32, -m64, or -mx32 builds.
- Contributed by H.J. Lu.
-
-* Math library bug fixes. A thorough audit of all open math library bugs was
- conducted by Joseph Myers. Significant progress was made on many math
- library bugs resulting in more accurate exceptions and function results.
- Many thanks to all those that contributed including Andreas Jaeger for his
- patch review and work on the x87 trigonometric instruction issues.
-
-* Timezone data is no longer installed. Timezone-related binaries and scripts
- will continue to be installed. Users should obtain their timezone data from
- their distribution provider or from the tzdata package at
- <ftp://munnari.oz.au/pub/>.
-
-Version 2.15
-
-* The following bugs are resolved with this release:
-
- 6779, 6783, 9696, 10103, 10709, 11589, 11929, 12403, 12786, 12840, 12847,
- 12868, 12852, 12874, 12885, 12892, 12906, 12907, 12922, 12935, 12962,
- 13007, 13021, 13061, 13062, 13067, 13068, 13085, 13088, 13090, 13092,
- 13096, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13166, 13179,
- 13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335,
- 13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472,
- 13484, 13506, 13515, 13523, 13524, 13538, 13540
-
-* New program pldd to list loaded object of a process
- Implemented by Ulrich Drepper.
-
-* Add nss_db support back to glibc. No more dependency on Berkeley db
- and support for initgroups lookups.
- Implemented by Ulrich Drepper.
-
-* Optimized strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-32.
- Contributed by HJ Lu.
-
-* Improved strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-64.
- Contributed by HJ Lu.
-
-* Optimized strcat, strncat on x86-64 and optimized wcscmp, wcslen, strnlen
- on x86-32 and x86-64.
- Contributed by Liubov Dmitrieva.
-
-* Optimized strchr and strrchr for SSE on x86-32.
- Contributed by Liubov Dmitrieva.
-
-* Optimized memchr, memrchr, rawmemchr, memcmp, wmemcmp, wcschr, wcscpy
- for x86-64 and x86-32.
- Contributed by Liubov Dmitrieva.
-
-* New interfaces: scandirat, scandirat64
- Implemented by Ulrich Drepper.
-
-* Checking versions of FD_SET, FD_CLR, and FD_ISSET added.
- Implemented by Ulrich Drepper.
-
-* nscd now also caches the netgroup database.
- Implemented by Ulrich Drepper.
-
-* Integrate libm with gcc's -ffinite-math-only option.
- Implemented by Ulrich Drepper.
-
-* Lots of generic, 64-bit, and x86-64-specific performance optimizations
- to math functions. Implemented by Ulrich Drepper.
-
-* Optimized strcasecmp and strncasecmp for AVX on x86-64.
- Implemented by Ulrich Drepper.
-
-* New Linux interfaces: process_vm_readv, process_vm_writev
-
-* Optimized strcasecmp and strncasecmp for SSSE3 and SSE4.2 on x86-32.
- Implemented by Ulrich Drepper.
-
-* Optimized nearbyint and strcasecmp for PPC.
- Implemented by Adhemerval Zanella.
-
-* New locales: bho_IN, unm_US, es_CU, ta_LK
-
-Version 2.14
-
-* The following bugs are resolved with this release:
-
- 386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11099, 11257,
- 11258, 11487, 11532, 11558, 11578, 11634, 11653, 11668, 11697, 11724,
- 11781, 11799, 11820, 11837, 11857, 11884, 11892, 11895, 11901, 11945,
- 11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12350,
- 12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
- 12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
- 12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
- 12660, 12671, 12681, 12684, 12685, 12711, 12713, 12714, 12717, 12723,
- 12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
- 12795, 12811, 12813, 12814, 12841
-
-* The RPC implementation in libc is obsoleted. Old programs keep working
- but new programs cannot be linked with the routines in libc anymore.
- Programs in need of RPC functionality must be linked against TI-RPC.
- The TI-RPC implementation is IPv6 enabled and there are other benefits.
-
- Visible changes of this change include (obviously) the inability to link
- programs using RPC functions without referencing the TI-RPC library and the
- removal of the RPC headers from the glibc headers.
- Implemented by Ulrich Drepper.
-
-* New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
- syncfs, setns, sendmmsg
-
-* New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH,
- yue_HK, lij_IT, mhr_RU
-
-* New encodings: CP770, CP771, CP772, CP773, CP774
-
-* New program sotruss to trace calls through PLTs
- Implemented by Ulrich Drepper.
-
-* The malloc hook implementation is marked deprecated and will be removed
- from the default implementation in the next version. The design never
- worked ever since the introduction of threads. Even programs which do
- not create threads themselves can use multiple threads created internally.
-
-Version 2.13
-
-* The following bugs are resolved with this release:
-
- 3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11577, 11611,
- 11640, 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979,
- 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113,
- 12140, 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348,
- 12378, 12394, 12397
-
-* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
-
-* POWER7 optimizations: memset, memcmp, strncmp
-
-* New optimized string functions for x86-64: strnlen (SSE2),
- strcasecmp (SSE2, SSSE3, SSE4.2), strncasecmp (SSE2, SSSE3, SSE4.2)
- Implemented by Ulrich Drepper.
-
-Version 2.12
-
-* The following bugs are resolved with this release:
-
- 3662, 4457, 5553, 10162, 10401, 10414, 10554, 10824, 10864, 10915,
- 10918, 10936, 10939, 10958, 10968, 10969, 10972, 10992, 11000, 11001,
- 11007, 11010, 11027, 11039, 11040, 11041, 11043, 11046, 11056, 11070,
- 11093, 11115, 11125, 11126, 11127, 11134, 11141, 11149, 11183, 11184,
- 11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
- 11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
- 11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
- 11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538, 11571
-
-* New interfaces: pthread_getname_np, pthread_setname_np
-
-* New Linux interface: recvmmsg
-
-* STT_GNU_IFUNC implemented for Sparc by David Miller.
-
-* The dynamic linker now recognizes supported ABI versions from the
- EI_ABIVERSION field in the ELF header.
- Implemented by Ulrich Drepper.
-
-* New NIS mode selector ADJUNCT_AS_SHADOW. The passwd.adjunct.byname table
- will not be used to fill in password fields in the passwd.byname replies.
- Instead it is used to synthesize the shadow.byname table, should it be
- missing. This is a useful mode in some installations involving Solaris.
- Implemented by Ulrich Drepper.
-
-* New locales: kok_IN, sq_MK, cv_RU
-
-Version 2.11
-
-* The following bugs are resolved with this release:
-
- 3270, 7094, 9924, 9986, 10011, 10085, 10107, 10159, 10162, 10166, 10183,
- 10195, 10196, 10200, 10203, 10207, 10211, 10213, 10217, 10221, 10229,
- 10262, 10286, 10312, 10315, 10319, 10349, 10360, 10391, 10402, 10416,
- 10418, 10422, 10425, 10446, 10448, 10452, 10540, 10553, 10560, 10564,
- 10609, 10643, 10692, 10713, 10717, 10730, 10731, 10742, 10780, 10784,
- 10789, 10817, 10823, 10840, 10847
-
-* New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
- mkostemps64
- Implemented by Ulrich Drepper.
-
-* Checking version of longjmp added that fails if an uninitialized stack
- frame would be created. Implemented by Ulrich Drepper.
-
-* STT_GNU_IFUNC is now supported in static executables.
- Implemented by H.J. Lu.
-
-* STT_GNU_IFUNC implemented for PPC by Alan Modra.
-
-* New optimized string functions for x86-64: strstr, strcasestr, memcmp,
- strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (SSE2, SSE4.2),
- strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2).
- Contributed by H.J. Lu.
-
- strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3).
- Implemented by Ulrich Drepper.
-
-* New optimized string functions for x86: strlen, strcspn, strspn, strpbrk,
- strstr, strcasestr.
- Contributed by H.J. Lu.
-
-* Support for fma instruction in AVX on x86-64.
- Implemented by H.J. Lu and Ulrich Drepper.
-
-* AVX support in x86-64 auditing support in ld.so.
- Implemented by H.J. Lu.
-
-* STB_GNU_UNIQUE support added.
- Implemented by Ulrich Drepper.
-
-* Implement second fallback mode for optimized DNS lookup for even more
- broken environments. If two requests from the same port are not
- handled correctly close the socket and open a new one before sending
- the second request. The 'single-request-reopen' option in /etc/resolv.conf
- can be used to select this mode right away, instead of rediscovering the
- necessity is every process again.
- Implemented by Ulrich Drepper.
-
-* New resolver flag RES_USE_DNSSEC to enable use of verified lookup.
- Implemented by Adam Tkac.
-
-* Optimized iconv conversions for S390x.
- Implemented by Andreas Krebbel.
-
-* Using condvars with PI mutexes is now more efficient due to kernel
- support for requeueing to PI futexes. NPTL support added for x86-64.
- Implemented by Ulrich Drepper.
-
-* New locales: ps_AF, my_MM
-
-Version 2.10
-
-* The following bugs are resolved with this release:
-
- 697, 5381, 5807, 6411, 6545, 7040, 7058, 7067, 7080, 7083, 7095, 7098,
- 9677, 9694, 9697, 9701, 9704, 9705, 9706, 9720, 9726, 9730, 9733, 9736,
- 9741, 9750, 9753, 9759, 9781, 9791, 9793, 9823, 9833, 9844, 9880, 9881,
- 9891, 9893, 9895, 9913, 9916, 9920, 9948, 9955, 9957, 9963, 9985, 10052,
- 10069, 10086, 10087, 10090, 10092, 10093, 10100, 10118, 10128
-
-* New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info
- Implemented by Ulrich Drepper.
-
-* New Linux interfaces: accept4, fallocate, fallocate64.
- Implemented by Ulrich Drepper.
-
-* Correct declarations of string function when used in C++ code. This
- could lead to compile errors for invalid C++ code.
-
-* XPG7/POSIX 2008 compilation environment. Many GNU-specific functions are
- now in POSIX.
-
-* New POSIX 2008 interface: psiginfo
- Implemented by Ulrich Drepper.
-
-* New ISO C++1x interfaces: quick_exit, at_quick_exit
- Implemented by Ulrich Drepper.
-
-* Support for selecting between multiple function definitions at runtime
- using STT_GNU_IFUNC symbols. Implemented by Ulrich Drepper.
-
-* The libcrypt library can now use the hash function implementations in
- NSS. Implemented by Ulrich Drepper.
-
-* The malloc implementation can be compiled to be less memory efficient
- but higher performing in multi-threaded programs.
- Implemented by Ulrich Drepper.
-
-* New locales: nan_TW@latin, ks_IN
-
-* Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64.
- Implemented by Ulrich Drepper.
-
-* Extended printf hook support. It is possible to use user-defined types
- and extend existing format specifiers.
- Implemented by Ulrich Drepper.
-
-* Handling for group shadow files has been added.
- Implemented by Ulrich Drepper.
-
-* DNS IPv4-IPv6 parallel lookup now deals better with broken DNS
- servers (the case, e.g., for some people using the built-in DNS
- server in ADSL modems/routers). There is a once-per-process timeout
- in case of a broken server. To avoid it, users can run nscd or put
- 'options single-request' in /etc/resolv.conf.
- Implemented by Ulrich Drepper.
-
-Version 2.9
-
-* The following bugs are resolved with this release:
-
- 2447, 3406, 5209, 5210, 5381, 5794, 5814, 5911, 6428, 6438, 6442, 6447,
- 6461, 6472, 6505, 6544, 6589, 6612, 6634, 6653, 6654, 6657, 6698, 6712,
- 6713, 6719, 6723, 6724, 6740, 6763, 6771, 6790, 6791, 6817, 6824, 6839,
- 6843, 6845, 6856, 6857, 6860, 6867, 6875, 6919, 6920, 6942, 6947, 6955,
- 6966, 6968, 6974, 6980, 6995, 7008, 7009, 7029
-
-* Unified lookup for getaddrinfo: IPv4 and IPv6 addresses are now looked
- up at the same time. Implemented by Ulrich Drepper.
-
-* TLS descriptors for LD and GD on x86 and x86-64.
- Implemented by Alexandre Oliva.
-
-* getaddrinfo now handles DCCP and UDPlite.
- Implemented by Ulrich Drepper.
-
-* New fixed-size conversion macros: htobe16, htole16, be16toh, le16toh,
- htobe32, htole32, be32toh, le32toh, htobe64, htole64, be64toh, le64toh.
- Implemented by Ulrich Drepper.
-
-* New implementation of memmem, strstr, and strcasestr which is O(n).
- Implemented by Eric Blake.
-
-* New Linux interfaces: inotify_init1, dup3, epoll_create1, pipe2
-
-* Implement "e" option for popen to open file descriptor with the
- close-on-exec flag set. Implemented by Ulrich Drepper.
-
-* Implement "b" mode for fmemopen. In this mode writes writes don't
- implicitly add a NUL byte and seeks from the end of the buffer really
- use the buffer end, not the string length as the basis.
- Implemented by Ulrich Drepper.
-
-* Many functions, exported and internal, now atomically set the close-on-exec
- flag when run on a sufficiently new kernel. Implemented by Ulrich Drepper.
-
-* Sorting rules for some Indian languages (Kannada, Gurumukhi, Telugu,
- Sinhala)
- Implemented by Pravin Satpute.
-
-* New locales: sd_IN, sd_IN@devanagari, ks_IN@devanagari, ht_HT, en_AG, nl_AW.
-
-Version 2.8
-
-* The following bugs are resolved with this release:
-
- 2549, 3112, 4314, 4407, 4997, 5012, 5040, 5112, 5204, 5208, 5209, 5220,
- 5222, 5224, 5225, 5237, 5238, 5240, 5245, 5277, 5346, 5375, 5378, 5382,
- 5424, 5427, 5428, 5435, 5436, 5439, 5441, 5442, 5443, 5451, 5452, 5454,
- 5455, 5463, 5464, 5465, 5475, 5477, 5478, 5520, 5541, 5545, 5553, 5600,
- 5602, 5607, 5614, 5627, 5628, 5736, 5737, 5741, 5753, 5760, 5762, 5768,
- 5774, 5777, 5778, 5779, 5786, 5790, 5818, 5854, 5857, 5903, 5939, 5979,
- 5983, 5995, 5998, 6004, 6007, 6020, 6021, 6024, 6040, 6042
-
-* New locales: bo_CN, bo_IN, shs_CA.
-
-* New encoding: HP-ROMAN9, HP-GREEK8, HP-THAI8, HP-TURKISH8.
-
-* Sorting rules for some Indian languages (Devanagari and Gujarati).
- Implemented by Pravin Satpute.
-
-* IPV6 addresses in /etc/resolv.conf can now have a scope ID
-
-* nscd caches now all timeouts for DNS entries
- Implemented by Ulrich Drepper.
-
-* nscd is more efficient and wakes up less often.
- Implemented by Ulrich Drepper.
-
-* More checking functions: asprintf, dprintf, obstack_printf, vasprintf,
- vdprintf, and obstack_vprintf.
- Implemented by Jakub Jelinek.
-
-* Faster memset for x86-64.
- Implemented by Harsha Jagasia and H.J. Lu.
-
-* Faster memcpy on x86.
- Implemented by Ulrich Drepper.
-
-* ARG_MAX is not anymore constant on Linux. Use sysconf(_SC_ARG_MAX).
- Implemented by Ulrich Drepper.
-
-* Faster sqrt and sqrtf implemention for some PPC variants.
- Implemented by Steven Munroe.
-
-Version 2.7
-
-* The following bugs are resolved with this release:
-
- 4125, 4126, 4178, 4359, 4407, 4512, 4514, 4525, 4554, 4556, 4557, 4566,
- 4582, 4586, 4588, 4599, 4610, 4647, 4702, 4705, 4726, 4745, 4772, 4773,
- 4775, 4776, 4792, 4813, 4814, 4816, 4833, 4858, 4860, 4896, 4905, 4925,
- 4936, 4937, 4938, 4941, 4946, 4963, 4972, 5010, 5028, 5043, 5058, 5063,
- 5071, 5103, 5104, 5112, 5113, 5184, 5186
-
-* More checking functions: fread, fread_unlocked, open*, mq_open.
- Implemented by Jakub Jelinek and Ulrich Drepper.
-
-* Extend fortification to C++. Implemented by Jakub Jelinek.
-
-* Implement 'm' modifier for scanf. Add stricter C99/SUS compliance
- by not recognizing 'a' as a modifier when those specs are requested.
- Implemented by Jakub Jelinek.
-
-* PPC optimizations to math and string functions.
- Implemented by Steven Munroe.
-
-* New interfaces: mkostemp, mkostemp64. Like mkstemp* but allow additional
- options to be passed. Implemented by Ulrich Drepper.
-
-* More CPU set manipulation functions. Implemented by Ulrich Drepper.
-
-* New Linux interfaces: signalfd, eventfd, eventfd_read, and eventfd_write.
- Implemented by Ulrich Drepper.
-
-* Handle private futexes in the NPTL implementation.
- Implemented by Jakub Jelinek and Ulrich Drepper.
-
-* Add support for O_CLOEXEC. Implement in Hurd. Use throughout libc.
- Implemented by Roland McGrath and Ulrich Drepper.
-
-* Linux/x86-64 vDSO support. Implemented by Ulrich Drepper.
-
-* SHA-256 and SHA-512 based password encryption.
- Implemented by Ulrich Drepper.
-
-* New locales: ber_DZ, ber_MA, en_NG, fil_PH, fur_IT, fy_DE, ha_NG, ig_NG,
- ik_CA, iu_CA, li_BE, li_NL, nds_DE, nds_NL, pap_AN, sc_IT, tk_TM, ug_CN,
- yo_NG.
-
-+ New iconv modules: MAC-CENTRALEUROPE, ISO-8859-9E, KOI8-RU.
- Implemented by Ulrich Drepper.
-
-Version 2.6
-
-* The following bugs are resolved with this release:
-
- 3156, 3213, 3285, 3291, 3306, 3313, 3320, 3322, 3325, 3326, 3334, 3348,
- 3352, 3363, 3369, 3426, 3427, 3429, 3451, 3458, 3465, 3480, 3483, 3493,
- 3514, 3515, 3559, 3632, 3664, 3673, 3674, 3745, 3747, 3818, 3840, 3842,
- 3851, 3855, 3884, 3885, 3902, 3905, 3919, 3944, 3954, 3955, 3957, 3991,
- 3995, 3996, 4024, 4040, 4069, 4070, 4074, 4076, 4096, 4101, 4102, 4114,
- 4130, 4131, 4181, 4276, 4306, 4342, 4344, 4349, 4364, 4368, 4381, 4392,
- 4403, 4405, 4406, 4411, 4438, 4439, 4455, 4456, 4465, 4512, 4514, 4586,
- 4702, 4858
-
-* New Linux interfaces: epoll_pwait, sched_getcpu.
-
-* New generic interfaces: strerror_l.
-
-* nscd can now cache the services database. Implemented by Ulrich Drepper.
-
-Version 2.5
-
-* The following bugs are resolved with this release:
-
- 39, 68, 192, 352, 388, 531, 935, 1006, 1201, 1203, 1386, 1782, 1783, 1784,
- 1785, 1786, 1787, 1951, 1974, 1996, 2072, 2098, 2125, 2134, 2158, 2182,
- 2349, 2376, 2386, 2389, 2415, 2418, 2420, 2423, 2450, 2451, 2466, 2472,
- 2473, 2477, 2498, 2499, 2501, 2502, 2505, 2507, 2508, 2509, 2517, 2526,
- 2569, 2571, 2592, 2611, 2625, 2632, 2644, 2662, 2680, 2683, 2684, 2693,
- 2695, 2703, 2734, 2751, 2764, 2766, 2775, 2792, 2821, 2823, 2832, 2841,
- 2843, 2883, 2892, 2908, 2914, 2926, 2961, 2978, 2980, 2987, 2997, 2998,
- 3013, 3018, 3034, 3040, 3044, 3123, 3124, 3137, 3138, 3143, 3155, 3189,
- 3225, 3251, 3252, 3253, 3273
-
-* For Linux, the sorting of addresses returned by getaddrinfo now also
- handles rules 3, 4, and 7 from RFC 3484. I.e., all rules are handled.
- Implemented by Ulrich Drepper.
-
-* Allow system admin to configure getaddrinfo with the /etc/gai.conf file.
- Implemented by Ulrich Drepper.
-
-* New Linux interfaces: splice, tee, sync_file_range, vmsplice.
-
-* New iconv module for MIK. Contributed by Alexander Shopov.
-
-* For sites with broken group and/or passwd database, the auto-propagate
- option of nscd can prevent creating ID lookup entries from the results
- of a name lookup and vice versa. This usually is no problem but some
- site might have problems with the default behavior.
- Implemented by Ulrich Drepper.
-
-* Iterating over entire database in NIS can be slow. With the
- SETENT_BATCH_READ option in /etc/default/nss a system admin can decide
- to trade time for memory. The entire database will be read at once.
- Implemented by Ulrich Drepper.
-
-* The interfaces introduced in RFC 3542 have been implemented by
- Ulrich Drepper.
-
-* Support for the new ELF hash table format was added by Ulrich Drepper.
-
-* Support for priority inheritance mutexes added by Jakub Jelinek and
- Ulrich Drepper.
-
-* Support for priority protected mutexes added by Jakub Jelinek.
-
-* New locales: nr_ZA, pa_PK, ca_AD, ca_FR, ca_IT, el_CY, tr_CY, as_IN,
- or_IN, csb_PL, fy_NL, sr_ME.
-
-Version 2.4
-
-* More overflow detection functions.
-
-* New iconv converters for IBM1025, IBM1122, IBM1137, IBM1153,
- IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158 contributed by Jiro Sekiba.
-
- More converters for IBM803, IBM901, IBM902, IBM921, IBM1008, IBM1097,
- IBM1112, IBM1123, IBM1130, IBM1140, IBM1141, IBM1142, IBM1143, IBM1144,
- IBM1145, IBM1146, IBM1147, IBM1148, IBM1149, IBM1166, IBM1167, IBM4517,
- IBM4899, IBM4909, IBM4971, IBM5347, IBM9030, IBM9066, IBM9448, IBM12712,
- IBM16804, IBM1364, IBM1371, IBM1388, IBM1390, and IBM1399 contributed
- by Masahide Washizawa.
-
-* It is now possible to install audit libraries for the dynamic linker using
- LD_AUDIT. Implemented by Ulrich Drepper.
-
-* The LinuxThreads add-on, providing pthreads on Linux 2.4 kernels, is no
- longer supported. The new NPTL implementation requires Linux 2.6 kernels.
- For a libc and libpthread that works well on Linux 2.4 kernels, we
- recommend using the stable 2.3 branch.
-
-* The new function open_wmemstream acts like open_memstream,
- but uses a wchar_t wide character buffer.
-
-* The new function ppoll is an improved version of poll, similar to pselect.
-
-* New interfaces: fdopendir, openat, fstatat, fchmodat, fchownat,
- futimesat, faccessat, mkdirat, mkfifoat, mknodat,
- renameat, unlinkat, linkat, symlinkat, readlinkat.
-
-* New Linux kernel system calls: unshare,
- inotify_init, inotify_add_watch, inotify_rm_watch.
-
-* The euidaccess function is now also known by the alias eaccess,
- for compatibility with some other systems.
-
-* Timezone data updated to 2006b version.
-
-Version 2.3.6
-
-* The following bugs are resolved with this release:
-
- 38, 253, 549, 622, 653, 721, 758, 851, 877, 915, 934, 955, 961,
- 1016, 1037, 1076, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
- 1087, 1088, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
- 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
- 1110, 1111, 1112, 1113, 1125, 1137, 1138, 1249, 1250, 1251, 1252,
- 1253, 1254, 1350, 1358, 1394, 1438, 1498, 1534
-
- Visit <https://sourceware.org/bugzilla/> for the details of each bug.
-
-* As of this release, GCC 4 can be used to compile the C Library.
-
-* Timezone data updated to 2005m version.
-
-Version 2.3.5
-
-* The following bugs are resolved with this release:
-
- 284, 592, 602, 626, 633, 640, 650, 661, 671, 681, 693, 700, 710, 719,
- 722, 723, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 765, 767, 768, 769, 776,
- 777, 787, 821, 822, 823, 825
-
- Visit <https://sourceware.org/bugzilla/> for the details of each bug.
-
-Version 2.3.4
-
-* Support for RFC 3678. Real implementations exist only for Linux so far.
- Implemented by Ulrich Drepper.
-
-* nscd can now cache entries persistently. Expiring entries are reloaded.
- For speedups the cache can be shared in memory with client processes.
- Implemented by Ulrich Drepper.
-
-* nscd can now perform SELinux checks.
- Implemented by Matthew Rickard <mjricka@epoch.ncsc.mil>.
-
-* getaddrinfo queries are now cached. Canonical name lookup is performed
- efficiently.
- Implemented by Ulrich Drepper.
-
-* The nothrow function attribute is used when headers are used by gcc when
- compiling C code. This can avoid significant amounts of exception
- handling data.
-
-* The malloc functions perform more error checking and are stricter when
- it comes to reacting on errors. The default action is to terminate
- the process after showing an error message. Implemented by Ulrich Drepper.
-
-* Reverse lookups of IPv6 addresses does not use bit string or .ip6.int
- lookups anymore unless explicitly requested. Implemented by Ulrich Drepper.
-
-* Namespaces in ld.so are implemented. DSOs can be loaded in separate
- namespaces using the new function dlmopen(). This feature is of course,
- like most other dynamic loading functionality, not available in statically
- linked applications. Implemented by Ulrich Drepper.
-
-* Low-overhead boundary checking variants of string and some stdio functions
- were added. These are to be used in conjunction with a gcc patch by
- Jakub Jelinek which adds calls to these functions if possible.
- Implemented by Jakub Jelinek and Ulrich Drepper.
-
-* Old code for several operating systems and machine architectures that
- have not been in working condition in a long time have been removed from
- the main source tree maintained by the GNU C Library's maintainers.
- These files are now reside in the separate `ports' source module
- that is usable as an add-on when building the library.
-
-Version 2.3.3
-
-* New functions `dladdr1' and `dlinfo' in <dlfcn.h> provide more ways to
- interrogate the dynamic linker, compatible with the Solaris interface.
-
-* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64;
- implemented by Paul Mackerras, Steven Munroe, and Roland McGrath.
-
-* getifaddrs now uses the netlink interface on Linux to get its information.
- Implemented by Thorsten Kukuk.
-
-* getaddrinfo now implements AI_V4MAPPED, AI_ALL, and AI_ADDRCONF.
- Implemented by Ulrich Drepper.
-
-* support for non-executable stacks on x86 has been added. Changes mostly
- by Roland McGrath.
-
-* regex is now much faster for multibyte locales. Changes by Jakub Jelinek
- and Ulrich Drepper.
-
-* getaddrinfo now performs destination address selection according to
- RFC 3484.
-
-Version 2.3.2
-
-* Thread-safe interfaces for many functions that access locale data
- were added in version 2.3, but these features were omitted from NEWS.
- Many functions have variants with an `_l' suffix that take a `locale_t'
- object as a parameter rather than consulting the current locale.
- The new functions `newlocale', `duplocale', and `freelocale' in <locale.h>
- create and maintain `locale_t' objects. Additionally, the new function
- `uselocale' sets "the current locale" (as used by functions not so
- parameterized) set for an individual thread. These features were added
- in version 2.3, implemented by Ulrich Drepper and Roland McGrath.
-
-* The functions getresuid, getresgid, setresuid, and setresgid, which
- have long been available on Linux, are now declared in <unistd.h>
- and are now also available on the Hurd.
-
-* ELF thread-local storage support (TLS) now works on x86-64.
-
-* The new dynamic string token $LIB is expanded in shared library names.
- This normally expands to lib, but on some 64-bit platforms to lib64 instead.
-
-* Aldy Hernandez contributed complete software floating point support for
- PowerPC machines with no FPU.
-
-* fexecve is implemented on Linux.
-
-* The `btowc' function should work at least twice as fast due to
- specialized callbacks in the iconv modules. Implemented by Bruno Haible.
-
-* With approriate thread add-ons cancelable functions are now implemented
- in libc.so as well. No need to call the function in libpthread. This
- change allowed to finally disable the incorrect and expensive handling
- of weak definition in ld.so.
-
-* Yet more PLT entries in libc.so have been removed. We finally arrived
- at the bare minimum. Startup times improved appropriately.
-
-* Support for the new Linux/x86 system call interface was added. The
- AT_SYSINFO auxiliary vector entry is recognized and handled.
-
-Version 2.3
-
-* Masahide Washizawa contributed iconv modules for IBM1163 and IBM1164
- charsets.
-
-* iconv (the program and the interface) now accepts empty names (excluding
- options like //TRANSLIT) to mean "use charset of current locale".
-
-* localedef can now transliterate characters in strings which are not in
- the provided charmap. The information from the input locale is used.
-
-* Prelinking support was added for ELF targets. This requires additional
- tools and recent versions of the GNU binutils. Contributed by Jakub Jelinek.
-
-* Read-only stdio streams now use mmap to speed up operation by eliminating
- copying and buffer underflows. To use add 'm' to the mode string of
- the fopen/fdopen/freopen call. Implemented by Ulrich Drepper.
-
-* The malloc functions were completely rewritten by Wolfram Gloger based
- on Doug Lea's malloc-2.7.0.c.
-
-* Isamu Hasegawa contributed a completely new and POSIX-conformant
- implementation of regex.
-
-* Bruno Haible upgraded the iconv and locale implementation to support
- Unicode 3.2.
-
-* Contents of the LC_* and LANG environment variables in the CEN style are
- not recognized anymore. It never was used. Change by Ulrich Drepper.
-
-* The runtime (ld.so, libc, libpthread for Linux) now can handle the ELF
- thread-local storage (TLS) ABI on some platforms.
- Changes by Ulrich Drepper. SH support by Kaz Kojima.
-
-* Bruno Haible contributed iconv converters for ISO-2022-JP-3, SHIFT JIS-X0213,
- EUC-JISX0213, and TSCII.
-
-* New header <ifaddrs.h> with functions `getifaddrs' and `freeifaddrs':
- BSD-compatible interface for getting all network interface addresses.
- Implementation for IPv4 by Roland McGrath.
-
-* Loading of locale data is faster due to the introduction of a locale
- archive. Implemented by Roland McGrath and Ulrich Drepper.
-
-* Startup times are significantly reduced by not using exported functions
- inside the library itself. Changes by Jakub Jelinek, Roland McGrath,
- and Ulrich Drepper.
-
-* Steven Munroe contributed a port to PowerPC64/Linux.
-
-Version 2.2.6
-
-* The Hurd now uses the GNU libio implementation of stdio rather than the
- old GNU stdio implementation, and uses a new ABI (libc.so.0.3).
-
-* The Hurd on x86 now has the `ioperm' function and <sys/io.h> header file
- with the same behavior as the Linux system call of the same name.
-
-Version 2.2.5
-
-* Stephen Moshier implemented log2, log10, powl and cbrtl for the
- 128-bit long double format.
-
-* Masahide Washizawa contributed iconv modules for IBM1132, IBM1133, IBM1160,
- IBM1161, and IBM1162 charsets.
-
-* Andreas Jaeger contributed a port to x86-64/Linux.
-
-* Peter Bruin contributed a port to PowerPC/Hurd.
-
-* libc functions using I/O streams now can handle wide-oriented streams
- as well.
-
-* optimizations in the dynamic linker. Binaries created by recent binutils
- versions start up quicker due to reduced time spent on relocations.
-
-* Support for use of gcc3 added by Jakub Jelinek and HJ Lu.
-
-Version 2.2.4
-
-* Stephen Moshier implemented cosh, expm1, log1p, acos, sinh, tanh,
- asinh, atanh, j0 for the 128-bit long double format.
-
-* Bruno Haible updated all the code handling Unicode in some form to
- support Unicode 3.1.
-
-* Speed of regex for single-byte locales is back to previous levels.
- Patch by Isamu Hasegawa.
-
-* Alpha, SPARC, and IA-64 now also using floating stacks.
-
-* Startup time of internationalized applications greatly improved through
- iconv cache. Use iconvconfig to generate the cache file.
- Contributed by Ulrich Drepper.
-
-* The IA-64 specific part of ld.so was rewritten to eliminate some pretty
- severe performance problems. Patch by David Mosberger.
-
-* The Hurd port got a lot more functionality like AIO, various stdio
- extensions, etc. Mainly done by Roland McGrath.
-
-* mtrace can now lookup symbols in shared libraries.
-
-Version 2.2.3
-
-* Intel's IA-64 math library is largely integrated. It provides fast and
- accurate implementatations for most basic and standard math functions
- in float, double, and long double format.
-
-* Stephen Moshier implemented j0, j1, jn, y0, y1, yn, lgamma, erf, erfc,
- and asin for the 96-bit long double format and asin, log, tan for the
- 128-bit long double format.
-
-* The beginning of a last-bit accurate math library by IBM Haifa were added.
- The basic double functions exist today. Contributed by Abraham Ziv
- <ziv@il.ibm.com>, Moshe Olshansky <olshansk@il.ibm.com>, Ealan Henis
- <ealan@il.ibm.com>, and Anna Reitman <reitman@il.ibm.com>.
-
-* An asynchronous name lookup library was added. The interface is designed
- after POSIX AIO. The proposal was circulated beforehand to get comments.
- No negative ones came in. Implemented by Ulrich Drepper.
-
-* Port to S390/64bit contributed by Martin Schwidefsky
- <schwidefsky@de.ibm.com>.
-
-* David Mosberger <davidm@hpl.hp.com> implemented the setcontext family
- of functions for Linux/IA-64.
-
-* The RPC code is now thread safe. Threads can now use the same service
- of different services at the same time. Patch by Eric Norum
- <eric.norum@usask.ca> with some help by Ulrich Drepper.
-
-* Martin Schwidefsky <schwidefsky@de.ibm.com> implemented the setcontext
- family of functions for Linux/S390.
-
-* Ulrich Drepper <drepper@redhat.com> implemented the setcontext family
- of functions for Linux/x86.
-
-* Port to Linux/CRIS contributed by Axis Communications.
-
-Version 2.2.2
-
-* Lots of headers were cleaned up. Using the tool in the conform/ subdir
- we can now check for namespace violations and missing declarations. The
- result is that almost all headers are now Unix-compliant (as defined in
- the upcoming XPG6). The negative side is that some programs might need
- corrections, too, if they depend on the incorrect form of the headers in
- previous versions which defined too many symbols and included too many
- other headers.
-
-* regex now handles multibyte character sets correctly.
- Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
-
-* iconv (the program) does now conform to the upcoming XPG6 and handles
- charmaps. Instead of the charset names the path of charmaps can be
- provided and the conversion happens based on this data.
- Contributed by Ulrich Drepper.
-
-* The locale program now provides detailed information about the installed
- locales. While
-
- locale -a
-
- only lists the names of the supported locales
-
- locale -a --verbose
-
- provides details such as country, language, and codeset name.
- Contributed by Ulrich Drepper.
-
-Version 2.2.1
-
-* The gencat program now parses the input file according to the charset
- selected by the LC_CTYPE category. This is important for stateful
- character sets. To make generating catalogs easier there is a way
- to overwrite the charset selected by the locale: before the first
- message or $ quote line the catalog can contain a line like
-
- $ codeset=ISO-8859-2
-
- to select the charset (ISO-8859-2 in this case).
-
- Implemented by Shinya Hanataka and Ulrich Drepper.
-
-* New codeset conversion modules: IBM-922 (Estonia PC codeset),
- IBM-1124 (Ukraine PC codeset), IBM-1129 (Vietnamese PC codeset).
- Contributed by Masahide Washizawa <washi@jp.ibm.com>.
-
-* Optimized string functions for Alpha ev6 and ev67 by Richard Henderson
- <rth@redhat.com> and Rick Gorton <rick.gorton@alpha-processor.com>.
-
-* The LANGUAGE environment variable is now ignored unless the locale is
- changed from the default "C" locale.
-
-* The usual bug fixes.
-
-Version 2.2
-
-* Greg McGary added runtime support for bounds checking using gcc's
- new -fbounded-pointers option. ix86 target is complete. PowerPC
- is in progress.
-
-* Thorsten Kukuk added secure mode support to nscd.
-
-* The Berkeley db libraries have been removed.
-
- Related, the nss_db module is now in a separate package since it
- obviously requires a database library being available.
-
-* Wide character I/O streams implemented by Ulrich Drepper.
-
-* Functions from the extended socket API added by Ulrich Drepper.
-
-* Functions feenableexcept and fedisableexcept to control the
- behaviour of individual exceptions have been added by Andreas Jaeger.
-
-* ldconfig program added by Andreas Jaeger and Jakub Jelinek.
-
-* The resolver code has been updated from bind 8.2.3-T5B which supports
- threads. The integration was done by Andreas Jaeger, Adam D. Bradley,
- and Mark Kettenis.
-
- This change could in some situations effect backward compatibility. Since
- now `_res' is a thread-local instead of a global variable, modifying it
- in one thread does not have any effect in other threads.
-
- The resolver library was also extended to allow IPv6 as the transport
- protocol for the requests. This work was done by Stig Venaas.
-
-* Compatibility code for K&R C compilers has been removed from the
- header files. A ISO C compiler is needed to use the library
- (conforming to either C89 or C99 standard).
-
-* Complete rewrite of the localedef program to support multibyte character
- sets. Implement handling of ISO 14651 and ISO 14652. Rewrite strcoll,
- strxfrm, wcscoll, and wcsxfrm functions. Make isw*() functions work.
- Implemented by Ulrich Drepper.
-
- Bruno Haible significantly improved the generation and use of the data
- structures for the wide character tables.
-
-* Plural handling in gettext implemented by Ulrich Drepper.
-
-* The utmp daemon has been removed.
-
-* The port to MIPS-Linux has been finished by Andreas Jaeger.
-
-* A port to Hitachi SH3 and SH4 has been contributed by Kazumoto Kojima
- and Yutaka Niibe.
-
-* POSIX clocks and timers implemented by Kaz Kylheku and Ulrich Drepper.
-
-* POSIX barriers implemented by Kaz Kylheku.
-
-* POSIX spawn function family implemented by Ulrich Drepper.
-
-* POSIX spinlocks are now available.
-
-* Timed wait functions for mutex, rwlock, and semaphores are implemented.
-
-* the configure option --enable-kernel=X.Y.Z allows to strip out
- compatibility for kernel versions before X.Y.Z. This is currently only
- implemented for Linux.
-
-* the sockaddr_in6 structure changed. The IPv6 working group added a new
- field sin6_scope_id. This means that all programs using IPv6 should be
- recompiled. Don't expect binary compatibility with previous glibc
- versions.
-
-* various conversion modules for IBM character sets contributed by
- Masahide Washizawa.
-
-* IA-64 port by Jes Sorensen and HJ Lu.
-
-Version 2.1.3
-
-* bug fixes
-
-
-Version 2.1.2
-
-* bug fixes
-
-
-Version 2.1.1
-
-* New ISO C 9x function _Exit, imaxabs, and imaxdiv are added.
-
-* New xdr functions are added; some rpc functions are now 64bit clean.
-
-* Fixed a number of bugs and memory leaks (especially in NIS+ code).
-
-* Fixed known incompatibilities with glibc 2.0.
-
-* New functions lock64, strchrnul, rawmemchr, getutmp and getutmpx.
-
-* Optimized a number of functions (especially the ELF dynamic loader).
-
-* Update timezone data files.
-
-* lots of charmaps corrections
-
-* some new locale definitions and charmaps
-
-
-Version 2.1
-
-* Richard Henderson corrected size of struct timeval on Linux/Alpha to
- conform to POSIX member type requirements. Symbol versions have been
- adjusted as needed within the library, and for direct use by applications,
- but there is potential for problems if third-party libraries use
- struct timeval as part of their interface. This does not present
- a problem for X and other "essential" system libraries.
-
-* An additional locale model to support C++ Standard Library locale
- model and probably more was implemented by Ulrich Drepper.
-
-* Eric Youngdale and Ulrich Drepper implemented versioning of objects on
- symbol level.
-
-* Miles Bader provided the `argp' function family to support hierachical
- command line argument parsing, layered on top of getopt.
-
-* strtod accepts new hexadecimal floating-point format from ISO C 9X.
-
-* printf has two new specifiers %a and %A to print hexadecimal flaoting-point
- numbers.
-
-* scanf recognizes the %a and %A format for scanning floating point numbers.
-
-* the new headers <stdint.h> and <inttypes.h> from ISO C 9X provides
- information and interfaces for the available integer types.
-
-* about 130 new math functions were added to implement the ISO C9x math
- library.
-
-* the new header <complex.h> contains definitions of the complex math
- functions from ISO C 9X.
-
-* the new header <tgmath.h> defines generic macros to use complex or
- real valued functions.
-
-* Thorsten Kukuk provided an implementation for NIS+, securelevel 0, 1 and 2.
-
-* Andreas Jaeger provided a test suite for the math library.
-
-* Mark Kettenis implemented the utmpx interface and an utmp daemon.
-
-* Ulrich Drepper added character set conversion functions (iconv).
-
-* Optimized string functions have been added.
-
-* The localedata addon is now part of glibc.
-
-* An implementation of profiling shared libraries was added by Ulrich Drepper.
-
-* Thorsten Kukuk and Ulrich Drepper provided an implementation for a caching
- daemon for NSS (nscd).
-
- Missing a better place here are some numbers on improvements. Under
- Linux 2.1.125 un-tar-ing the kernel sources takes
-
- user system wall
-
- using local files 12.19s 6.88s 22.91s
-
- using NIS 13.92s 8.91s 26.34s
-
- using NIS & nscd 10.37s 7.34s 25.30s
-
- using NIS+ 27.57s 30.37s 640.46s
-
- using NIS+ & nscd 10.25s 7.83s 26.51s
-
- using NIS & old nscd [1] 13.83s 8.32s 29.60s
-
- Keep in mind that non-namelookup related operations dominate above times.
- It was just a common complain that using NIS+ unpacking the kernel is
- horribly slow.
-
- [1] The old nscd implementation is not available anymore since it was
- distributed with glibc up to version 2.0.98 and thus is now replaced.
-
-* Tim Waugh provided an implementation of the POSIX.2 wordexp function family.
-
-* Mark Kettenis provided a Hesiod NSS module.
-
-* The ELF dynamic loader knows how to process dynamic string tokens ($ORIGIN
- and $PLATFORM) in RPATHs and similar strings (Ulrich Drepper).
-
-* rcmd can now handle netgroups (Dick Streefland).
-
-* A port to the ARM was contributed by Phil Blundell, Pat Beirne and Scott
- Bambrough.
-
-* Support for the IPv6 protocol has been added to the socket API, as per the
- latest draft standards.
-
-* Support for Linux 2.2 has been added.
-
-* Interface changes relative to the latest 2.0.x release:
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-addseverity NEW: Unix98
-alphasort64 NEW: LFS
-argp_err_exit_status NEW: argp, GNU ext
-argp_error NEW: argp, GNU ext
-argp_failure NEW: argp, GNU ext
-argp_help NEW: argp, GNU ext
-argp_parse NEW: argp, GNU ext
-argp_program_bug_address NEW: argp, GNU ext
-argp_program_version NEW: argp, GNU ext
-argp_program_version_hook NEW: argp, GNU ext
-argp_state_help NEW: argp, GNU ext
-argp_usage NEW: argp, GNU ext
-authdes_create NEW: Secure RPC
-authdes_getucred NEW: Secure RPC
-authdes_pk_create NEW: Secure RPC
-backtrace NEW: GNU ext.
-backtrace_symbols NEW: GNU ext.
-backtrace_symbols_fd NEW: GNU ext.
-cacos NEW: ISO C 9x
-cacosf NEW: ISO C 9x
-cacosh NEW: ISO C 9x
-cacoshf NEW: ISO C 9x
-cacoshl NEW: ISO C 9x
-cacosl NEW: ISO C 9x
-capget NEW: kernel
-capset NEW: kernel
-carg NEW: ISO C 9x
-cargf NEW: ISO C 9x
-cargl NEW: ISO C 9x
-casin NEW: ISO C 9x
-casinf NEW: ISO C 9x
-casinh NEW: ISO C 9x
-casinhf NEW: ISO C 9x
-casinhl NEW: ISO C 9x
-casinl NEW: ISO C 9x
-catan NEW: ISO C 9x
-catanf NEW: ISO C 9x
-catanh NEW: ISO C 9x
-catanhf NEW: ISO C 9x
-catanhl NEW: ISO C 9x
-catanl NEW: ISO C 9x
-cbc_crypt NEW: Secure RPC
-ccos NEW: ISO C 9x
-ccosf NEW: ISO C 9x
-ccosh NEW: ISO C 9x
-ccoshf NEW: ISO C 9x
-ccoshl NEW: ISO C 9x
-ccosl NEW: ISO C 9x
-cexp NEW: ISO C 9x
-cexpf NEW: ISO C 9x
-cexpl NEW: ISO C 9x
-cimag NEW: ISO C 9x
-cimagf NEW: ISO C 9x
-cimagl NEW: ISO C 9x
-clearerr_locked REMOVED
-clntunix_create NEW: sunrpc ext
-clog NEW: ISO C 9x
-clog10 NEW: ISO C 9x
-clog10f NEW: ISO C 9x
-clog10l NEW: ISO C 9x
-clogf NEW: ISO C 9x
-clogl NEW: ISO C 9x
-conj NEW: ISO C 9x
-conjf NEW: ISO C 9x
-conjl NEW: ISO C 9x
-cpow NEW: ISO C 9x
-cpowf NEW: ISO C 9x
-cpowl NEW: ISO C 9x
-cproj NEW: ISO C 9x
-cprojf NEW: ISO C 9x
-cprojl NEW: ISO C 9x
-creal NEW: ISO C 9x
-crealf NEW: ISO C 9x
-creall NEW: ISO C 9x
-creat64 NEW: LFS
-csin NEW: ISO C 9x
-csinf NEW: ISO C 9x
-csinh NEW: ISO C 9x
-csinhf NEW: ISO C 9x
-csinhl NEW: ISO C 9x
-csinl NEW: ISO C 9x
-csqrt NEW: ISO C 9x
-csqrtf NEW: ISO C 9x
-csqrtl NEW: ISO C 9x
-ctan NEW: ISO C 9x
-ctanf NEW: ISO C 9x
-ctanh NEW: ISO C 9x
-ctanhf NEW: ISO C 9x
-ctanhl NEW: ISO C 9x
-ctanl NEW: ISO C 9x
-des_setparity NEW: Secure RPC
-ecb_crypt NEW: Secure RPC
-endutxent NEW: Unix98
-exp10 NEW: ISO C 9x
-exp10f NEW: ISO C 9x
-exp10l NEW: ISO C 9x
-exp2 NEW: ISO C 9x
-exp2f NEW: ISO C 9x
-exp2l NEW: ISO C 9x
-fattach NEW: STREAMS
-fdetach NEW: STREAMS
-fdim NEW: ISO C 9x
-fdimf NEW: ISO C 9x
-fdiml NEW: ISO C 9x
-feclearexcept NEW: ISO C 9x
-fegetenv NEW: ISO C 9x
-fegetexceptflag NEW: ISO C 9x
-fegetround NEW: ISO C 9x
-feholdexcept NEW: ISO C 9x
-feof_locked REMOVED
-feraiseexcept NEW: ISO C 9x
-ferror_locked REMOVED
-fesetenv NEW: ISO C 9x
-fesetexceptflag NEW: ISO C 9x
-fesetround NEW: ISO C 9x
-fetestexcept NEW: ISO C 9x
-feupdateenv NEW: ISO C 9x
-fflush_locked REMOVED
-ffsl NEW: GNU ext.
-ffsll NEW: GNU ext.
-fgetpos64 NEW: LFS
-fgets_unlocked NEW: GNU ext.
-fileno_locked REMOVED
-fma NEW: ISO C 9x
-fmaf NEW: ISO C 9x
-fmal NEW: ISO C 9x
-fmax NEW: ISO C 9x
-fmaxf NEW: ISO C 9x
-fmaxl NEW: ISO C 9x
-fmin NEW: ISO C 9x
-fminf NEW: ISO C 9x
-fminl NEW: ISO C 9x
-fmtmsg NEW: Unix98
-fopen64 NEW: LFS
-fputc_locked REMOVED
-fputs_unlocked NEW: GNU ext.
-fread_unlocked NEW: GNU ext.
-freopen64 NEW: LFS
-fseeko NEW: Unix98
-fsetpos64 NEW: LFS
-fstatfs64 NEW: LFS
-fstatvfs NEW: Unix98
-fstatvfs64 NEW: LFS
-ftello NEW: Unix98
-ftello64 NEW: LFS
-ftruncate64 NEW: LFS
-ftw64 NEW: LFS
-fwrite_unlocked NEW: GNU ext.
-gai_strerror NEW: IPv6
-gamma_r REMOVED
-gammaf_r REMOVED
-gammal_r REMOVED
-getchar_locked REMOVED
-getdate NEW: Unix98
-getdate_err NEW: Unix98
-getdate_r NEW: GNU ext.
-getmsg NEW: STREAMS
-getnameinfo NEW: IPv6
-getnetname NEW: Secure RPC
-getpmsg NEW: STREAMS
-getpt NEW: Unix98 PTY
-getrlimit64 NEW: LFS
-getutxent NEW: Unix98
-getutxid NEW: Unix98
-getutxline NEW: Unix98
-glob64 NEW: GNU ext.
-globfree64 NEW: GNU ext.
-gnu_get_libc_release NEW: GNU ext.
-gnu_get_libc_version NEW: GNU ext.
-grantpt NEW: Unix98 PTY
-host2netname NEW: Secure RPC
-iconv NEW: iconv
-iconv_close NEW: iconv
-iconv_open NEW: iconv
-if_freenameindex NEW: IPv6
-if_indextoname NEW: IPv6
-if_nameindex NEW: IPv6
-if_nametoindex NEW: IPv6
-in6addr_any NEW: IPv6
-in6addr_loopback NEW: IPv6
-inet6_isipv4mapped NEW: IPv6
-isastream NEW: STREAMS
-iswblank NEW: GNU ext.
-key_decryptsession NEW: Secure RPC
-key_decryptsession_pk NEW: Secure RPC
-key_encryptsession NEW: Secure RPC
-key_encryptsession_pk NEW: Secure RPC
-key_gendes NEW: Secure RPC
-key_get_conv NEW: Secure RPC
-key_secretkey_is_set NEW: Secure RPC
-key_setnet NEW: Secure RPC
-key_setsecret NEW: Secure RPC
-llrint NEW: ISO C 9x
-llrintf NEW: ISO C 9x
-llrintl NEW: ISO C 9x
-llround NEW: ISO C 9x
-llroundf NEW: ISO C 9x
-llroundl NEW: ISO C 9x
-log2 NEW: ISO C 9x
-log2f NEW: ISO C 9x
-log2l NEW: ISO C 9x
-lrint NEW: ISO C 9x
-lrintf NEW: ISO C 9x
-lrintl NEW: ISO C 9x
-lround NEW: ISO C 9x
-lroundf NEW: ISO C 9x
-lroundl NEW: ISO C 9x
-lseek64 NEW: LFS
-makecontext NEW: Unix98
-mempcpy NEW: GNU ext.
-mmap64 NEW: LFS
-moncontrol REMOVED
-modify_ldt NEW: kernel
-nan NEW: ISO C 9x
-nanf NEW: ISO C 9x
-nanl NEW: ISO C 9x
-nearbyint NEW: ISO C 9x
-nearbyintf NEW: ISO C 9x
-nearbyintl NEW: ISO C 9x
-netname2host NEW: Secure RPC
-netname2user NEW: Secure RPC
-nexttoward NEW: ISO C 9x
-nexttowardf NEW: ISO C 9x
-nexttowardl NEW: ISO C 9x
-nftw NEW: Unix98
-nftw64 NEW: LFS
-open64 NEW: LFS
-passwd2des NEW: Secure RPC
-pow10 NEW: GNU ext.
-pow10f NEW: GNU ext.
-pow10l NEW: GNU ext.
-pread NEW: Unix98
-pread64 NEW: LFS
-printf_size NEW: GNU ext.
-printf_size_info NEW: GNU ext.
-profil_counter REMOVED
-pthread_mutexattr_getkind_np REPLACED
-pthread_mutexattr_setkind_np REPLACED
-ptsname NEW: Unix98 PTY
-ptsname_r NEW: Unix98 PTY
-putc_locked REMOVED
-putchar_locked REMOVED
-putgrent NEW: GNU ext.
-putmsg NEW: STREAMS
-putpmsg NEW: STREAMS
-pututxline NEW: Unix98
-pwrite NEW: Unix98
-pwrite64 NEW: LFS
-readdir64 NEW: LFS
-readdir64_r NEW: LFS
-remquo NEW: ISO C 9x
-remquof NEW: ISO C 9x
-remquol NEW: ISO C 9x
-round NEW: ISO C 9x
-roundf NEW: ISO C 9x
-roundl NEW: ISO C 9x
-rtime NEW: GNU ext.
-scalbln NEW: ISO C 9x
-scalblnf NEW: ISO C 9x
-scalblnl NEW: ISO C 9x
-scandir64 NEW: LFS
-sendfile NEW: kernel
-setcontext NEW: Unix98
-setrlimit64 NEW: LFS
-setutxent NEW: Unix98
-sighold NEW: Unix98
-sigignore NEW: Unix98
-sigqueue NEW: POSIX.1b
-sigrelse NEW: Unix98
-sigset NEW: POSIX.1b
-sigtimedwait NEW: POSIX.1b
-sigwaitinfo NEW: POSIX.1b
-sincos NEW: GNU ext.
-sincosf NEW: GNU ext.
-sincosl NEW: GNU ext.
-statfs64 NEW: LFS
-statvfs NEW: Unix98
-statvfs64 NEW: LFS
-strcasestr NEW: GNU ext.
-strtoimax NEW: ISO C 9x
-strtoumax NEW: ISO C 9x
-strverscmp NEW: GNU ext.
-svcauthdes_stats NEW: Secure RPC
-svcunix_create NEW: sunrpc etx
-svcunixfd_create NEW: sunrpc ext
-swapcontext NEW: Unix98
-tcgetsid NEW: Unix98 PTY
-tdestroy NEW: GNU ext.
-tgamma NEW: ISO C 9x
-tgammaf NEW: ISO C 9x
-tgammal NEW: ISO C 9x
-tmpfile64 NEW: LFS
-trunc NEW: ISO C 9x
-truncate64 NEW: LFS
-truncf NEW: ISO C 9x
-truncl NEW: ISO C 9x
-umount2 NEW: kernel
-unlockpt NEW: Unix98 PTY
-updwtmpx NEW: Unix98
-user2netname NEW: Secure RPC
-utmpxname NEW: Unix98
-versionsort NEW: GNU ext.
-versionsort64 NEW: GNU ext.
-waitid NEW: Unix98
-wcscasecmp NEW: GNU ext.
-wcsncasecmp NEW: GNU ext.
-wcsnlen NEW: GNU ext.
-wcstoimax NEW: ISO C 9x
-wcstoll NEW: ISO C 9x
-wcstoull NEW: ISO C 9x
-wcstoumax NEW: ISO C 9x
-wcswcs NEW: Unix98
-wordexp NEW: POSIX.2
-wordfree NEW: POSIX.2
-write_profiling REMOVED
-xdecrypt NEW: Secure RPC
-xdr_authdes_cred NEW: Secure RPC
-xdr_authdes_verf NEW: Secure RPC
-xdr_cryptkeyarg NEW: Secure RPC
-xdr_cryptkeyarg2 NEW: Secure RPC
-xdr_cryptkeyres NEW: Secure RPC
-xdr_getcredres NEW: Secure RPC
-xdr_key_netstarg NEW: Secure RPC
-xdr_key_netstres NEW: Secure RPC
-xdr_keybuf NEW: Secure RPC
-xdr_keystatus NEW: Secure RPC
-xdr_netnamestr NEW: Secure RPC
-xdr_sizeof NEW: Secure RPC
-xdr_unixcred NEW: sunrpc ext
-xencrypt NEW: Secure RPC
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Version 2.0.6
-
-* more bug fixes
-
-
-Version 2.0.5
-
-* more bug fixes
-
-* inet_ntoa is thread-safe
-
-* updwtmp is moved from libutil to libc
-
-* rewrite of cbrt function
-
-* update of timezone data
-
-Version 2.0.4
-
-* more bug fixes
-
-Version 2.0.3
-
-* more bug fixes
-
-Version 2.0.2
-
-* more bug fixes
-
-* add atoll function
-
-* fix complex problems in Berkeley DB code
-
-* fix math functions
-
-Version 2.0.1
-
-* fixed lots of header problems (especially Linux/GNU specific)
-
-* dynamic loader preserves all registers
-
-* Roland McGrath provided support for handling of auxiliary objects in
- the ELF dynamic loader.
-
-* support for parallel builds is improved
-
-Version 2.0
-
-* GNU extensions are no longer declared by default. To enable them you
- must define the macro `_GNU_SOURCE' in your program or compile with
- `-D_GNU_SOURCE'.
-
-* The library has changed from using GNU ld symbol aliases to using weak
- symbols where available. The ELF object file format supports weak
- symbols; GNU ld also supports weak symbols in the a.out format. (There
- is also now support for other GNU ld extensions in ELF. Use the
- `--with-elf' option to configure to indicate you have ELF, and
- `--with-gnu-ld' if using GNU ld.) This change resulted in the deletion
- of many files which contained only symbol aliases, reducing the size of
- the source and the compiled library; many other files were renamed to
- less cryptic names previously occupied by the symbol alias files.
- There is a new header file <elf.h> for programs which operate on
- files in the ELF format.
-
-* Converted to Autoconf version 2, so `configure' has more options.
- Run `configure --help' to see the details.
-
-* The library can now be configured to build profiling, highly-optimized
- (but undebuggable), and/or shared libraries (ELF with GNU ld only). The
- `--enable-profile', `--enable-omitfp', and `--enable-shared' options to
- `configure' enable building these extra libraries. The shared library is
- built by default when using both ELF and GNU ld. When shared libraries
- are enabled, the new library `-ldl' is available for arbitrary run-time
- loading of shared objects; its interface is defined in <dlfcn.h>. The
- new header file <link.h> gives access to the internals of the run-time
- dynamic linker, `ld.so'. The shell script `ldd' is similar to the
- application of same name on other systems and it provides information
- about dynamically linked binaries.
-
-* The C library now provides the run-time support code for profiling
- executables compiled with `-pg'. Programs can control the profiling code
- through the interface in <sys/gmon.h>. The `gmon.out' files written by
- the GNU C library can be read only by GNU `gprof' (from GNU binutils);
- the support for this file format was contributed by David Mosberger-Tang.
-
-* The math code has been replaced with a math library based on fdlibm from
- Sun, and modified by JT Conklin and Ulrich Drepper with i387 support, by
- Ian Taylor with `float' functions and by Ulrich Drepper with `long double'
- functions. The math functions now reside in a separate library, so
- programs using them will need to use `-lm' their linking commands.
-
-* John C. Bowman contributed optimized ix87 assembler inline functions.
-
-* Ulrich Drepper has contributed support for an `/etc/nsswitch.conf'
- mechanism similar to that found in Solaris 2. This is now used for the
- group, passwd, hosts, networks, services, protocols, rpc, ethers,
- shadow, netgroup, publickey, and alias databases. The `nsswitch.conf'
- file controls what services are used for each individual database. This
- works by loading shared libraries with names specified in `nsswitch.conf',
- so service modules can be changed or added at any time without even
- relinking any program. Currently there are the file, db, and NIS based
- NSS services available.
-
-* The new functions `strtoq' and `strtouq' parse integer values from
- strings, like `strtol' and `strtoul', but they return `long long int' and
- `unsigned long long int' values, respectively (64-bit quantities).
-
-* The new functions `strtof' and `strtold' parse floating-point values from
- strings, like `strtod', but they return `float' and `long double' values,
- respectively (on some machines `double' and `long double' are the same).
-
-* Ulrich Drepper has contributed new implementations of the floating-point
- printing and reading code used in the `printf' family of functions and
- `strtod', `strtof', and `strtold'. These new functions are perfectly
- accurate, and much faster than the old ones.
-
-* The implementation of the POSIX locale model was completely rewritten by
- Ulrich Drepper. This includes the new programs `localedef' and `locale'
- to compile the POSIX locale definition.
-
-* The former dummy implementations of the strcoll and strxfrm function are
- now replaced by fully functional code contributed by Ulrich Drepper. The
- collation information comes from the POSIX locale definitions.
-
-* The new header <langinfo.h> defines an interface for accessing
- various locale-dependent data (using the locale chosen with `setlocale').
-
-* Ulrich Drepper has contributed a new suite of functions for operation on
- wide-character and multibyte-character strings, in <wchar.h>;
- and classification and case conversion of wide characters, in <wctype.h>.
- These new functions are conforming to the ISO C, Amendement 1 specification.
-
-* There is now a second implementation of the standard I/O library available.
- It comes from GNU libg++ as was written by Per Bothner, heavily modified
- by Hongjiu Lu and made thread safe by Ulrich Drepper.
-
-* You can now use positional parameter specifications in format strings
- for the `printf' and `scanf' families of functions. For example,
- `printf ("Number %2$d, Mr %1$s\n", "Jones", 6);'' prints
- ``Number 6, Mr Jones''. This is mainly useful when providing different
- format strings for different languages, whose grammars may dictate
- different orderings of the values being printed. To support this
- feature, the interface for `register_printf_handler' has changed; see
- the header file <printf.h> for details.
-
-* The `printf' and `scanf' families of functions now understand a new
- formatting flag for numeric conversions: the ' flag (e.g. %'d or %'f) says
- to group numbers as indicated by the locale; for `scanf' and friends, this
- says to accept as valid only a number with all the proper grouping
- separators in the right places. In the default "C" locale, numbers are
- not grouped; but locales for specific countries will define the usual
- conventions (i.e. separate thousands with `,' in the US locale).
-
-* The pgrp functions have been regularized, slightly incompatibly but much
- less confusingly. The core functions are now `getpgid' and `setpgid',
- which take arguments for the PID to operate on; the POSIX.1 `getpgrp' (no
- argument) and BSD `setpgrp' (identical to `setpgid') functions are
- provided for compatibility. There is no longer an incompatible `getpgrp'
- with an argument declared under _BSD_SOURCE; no BSD code uses it.
-
-* The new header file <fts.h> and suite of functions simplify programs that
- operate on directory trees. This code comes from 4.4 BSD.
-
-* The resolver code has been updated from the BIND 4.9.5-P1 release.
- Parts of the code were heavily modified by Ulrich Drepper to fit in the
- NSS scheme used in glibc.
-
-* There is a new malloc debugging hook `__memalign_hook'.
-
-* There are new typedefs `ushort' for `unsigned short int' and `uint' for
- `unsigned int' in <sys/types.h>. These are for compatibility only and
- their use is discouraged.
-
-* The `-lmcheck' library to enable standard malloc debugging hooks is now
- done differently, so that it works even without GNU ld.
-
-* New function `euidaccess' checks allowed access to a file like `access',
- but using the effective IDs instead of the real IDs.
-
-* The time zone data files have been updated for the latest and greatest
- local time conventions of the countries of the world.
-
-* The new function `dirfd' extracts the file descriptor used by a DIR stream;
- see <dirent.h>.
-
-* The new functions `ecvt', `fcvt', and `gcvt' provide an obsolete interface
- for formatting floating-point numbers. They are provided only for
- compatibility; new programs should use `sprintf' instead. There are
- also equivalent function for the `long double' floating-point type and
- all functions also exist in a reentrant form.
-
-* The new auxiliary library `-lutil' from 4.4 BSD contains various
- functions for maintaining the login-record files (primarily of use to
- system programs such as `login'), and convenient functions for
- allocating and initializing a pseudo-terminal (pty) device.
-
-* Ulrich Drepper has contributed new support for System V style
- shared memory and IPC on systems that support it.
-
-* Ulrich Drepper has contributed several miscellaneous new functions found
- in System V: The `hsearch' family of functions provide an effective
- implementation of hash tables; `a64l' and `l64a' provide a very simple
- binary to ASCII mapping; `drand48' and friends provide a 48-bit random
- number generator.
-
-* Ulrich Drepper has contributed new reentrant counterparts for the
- `random' and `hsearch' families of functions; `random_r', `hsearch_r', etc.
-
-* Ulrich Drepper has contributed new, highly-optimized versions of several
- string functions for the i486/Pentium family of processors.
-
-* Ulrich Drepper has updated the Linux-specific code, based largely
- on work done in Hongjiu Lu's version of GNU libc for Linux.
- The GNU library now supports Linux versions 2.0.10 and later,
- using the ELF object file format (i[3456]86-*-linux).
-
-* Andreas Schwab has ported the C library to Linux/m68k (m68k-*-linux).
-
-* David Mosberger-Tang and Richard Henderson have ported the C library
- to Linux/Alpha (alpha-*-linux). Richard Henderson contributed the
- dynamic linking support for ELF/Alpha.
-
-* Richard Henderson contributed several Alpha optimized assembler function
- for arithmetic and string handling.
-
-* Ulrich Drepper has contributed a new set of message catalog functions to
- support multiple languages using the <libintl.h> interface, for use with
- his new package GNU gettext. Translation volunteers have contributed
- catalogs of the library's messages in Spanish, German, and Korean.
-
-* For compatibility with XPG4, Ulrich Drepper has contributed the `gencat'
- program and the `catgets' function for reading the catalog files it
- creates. (The <libintl.h> interface is preferred; we include the
- <nl_types.h> interface using `catgets' only for source compatibility with
- programs already written to use it.)
-
-* New header file <values.h> gives SVID-compatible names for <limits.h>
- constants.
-
-* Various new macros, declarations, and small header files for compatibility
- with 4.4 BSD.
-
-* New function `group_member' is a convenient way to check if a process has
- a given effective group ID.
-
-* When using GCC 2.7 and later, the socket functions are now declared in a
- special way so that passing an argument of type `struct sockaddr_in *',
- `struct sockaddr_ns *', or `struct sockaddr_un *' instead of the generic
- `struct sockaddr *' type, does not generate a type-clash warning.
-
-* New function `error' declared in header file <error.h> is a convenient
- function for printing error messages and optionally exiting; this is the
- canonical function used in GNU programs. The new functions `err', `warn',
- and friends in header file <err.h> are the canonical 4.4 BSD interface for
- doing the same thing.
-
-* The <glob.h> interface has several new flags from 4.4 BSD that extend the
- POSIX.2 `glob' function to do ~ and {...} expansion.
-
-* New function `unsetenv' complements `setenv' for compatibility with 4.4 BSD.
- `clearenv' which is used in POSIX.9 is also available.
-
-* New function `getsid' returns session ID number on systems that support it.
-
-* We have incorporated the 4.4 BSD `db' library (version 1.85). New header
- files <db.h> and <mpool.h> provide a rich set of functions for several
- types of simple databases stored in memory and in files, and <ndbm.h> is
- an old `ndbm'-compatible interface using the `db' functions. Link with
- `-ldb' to get these functions.
-
-* New macro `strdupa' copies a string like `strdup', but uses local stack
- space from `alloca' instead of dynamic heap space from `malloc'.
-
-* New function `strnlen' is like `strlen' but searches only a given maximum
- number of characters for the null terminator. `stpncpy', `strndup' and
- `strndupa' are similar variants for the `stpcpy', `strdup' and `strdupa'
- function.
-
-* New function `statfs' in header <sys/statfs.h>.
-
-* The new <argz.h> and <envz.h> interfaces contributed by Miles Bader
- provide convenient functions for operating on blocks of null-terminated
- strings.
-
-* A new suite of functions in <utmp.h> handle all the details of reading
- and writing the utmp file.
-
-* An implementation of the NIS/YP(tm) based NSS service was contributed by
- Thorsten Kukuk.
-
-* Paul Eggert and Ulrich Drepper modified the `strftime' function to be
- completely POSIX compliant and also implemented the extended functionality
- to handle alternate digit representation and alternate era date formats.
-
-* Ulrich Drepper provided an implementation of the `strptime' function
- defined in XPG4.2 which transforms a string into a `struct tm' value.
-
-* Paul Eggert provided the tzselect shell script as part of the timezone
- code. The shell script makes it easy to select the correct timezone
- specification.
-
-* The implementation of the malloc family of functions is completely replaced
- by a new implementation by Doug Lea with many improvements by Wolfram Gloger.
- The implementation uses the mmap function (if available) and it is
- optimized for the use in multi threaded programs.
-
-* Ulrich Drepper contributed a MD5 "encryption" for the crypt family of
- functions. This new functionality is usable by specifying a special
- salt string and it is compatible with implementation on *BSD systems.
-
-* Lots of functions from the XPG4.2 standard were added by Ulrich Drepper:
- `getsubopt' to handle second level command line options, `bsd_signal'
- to access BSD style `signal' functionality, the obsolete `regexp' style
- expression matcher.
-
-* the `lchown' function is available on system which support this
- functionality.
-
-* The implementation of the shadow password handling function was contributed
- by Ulrich Drepper.
-
-* David Mosberger-Tang changed the SunRPC implementation to be 64bit safe.
-
-* POSIX.1g support was added. The <sys/select.h> header is available,
- `isfdtype' and `pselect' are implemented. Craig Metz contributed an
- implementation of `getaddrinfo'.
-
-Version 1.09
-
-* For cross-compilation you should now set `BUILD_CC' instead of `HOST_CC'.
-
-* New header file <fstab.h> and new functions `getfsspec', `getfsent' and
- friends, for parsing /etc/fstab. This code comes from 4.4 BSD.
-
-* The new function `daemon' from 4.4 BSD is useful for server programs that
- want to put themselves in the background.
-
-* Joel Sherrill has contributed support for several standalone boards that
- run without an operating system.
-
-* `printf', `scanf' and friends now accept a `q' type modifier for long
- long int as well as `ll'. Formats using these might be `%qu' or `%lld'.
-
-* All of the code taken from BSD (notably most of the math and networking
- routines) has been updated from the BSD 4.4-Lite release.
-
-* The resolver code has been updated from the BIND-4.9.3-BETA9 release.
-
-* The new functions `getdomainname' and `setdomainname' fetch or change the
- YP/NIS domain name. These are system calls which exist on systems which
- have YP (aka NIS).
-
-* The time zone data files have been updated for the latest international
- conventions.
-
-* The SunRPC programs `portmap' and `rpcinfo' are now installed in
- $(sbindir) (usually /usr/local/sbin) instead of $(bindir).
-
-Version 1.08
-
-* The C library now includes support for Sun RPC, from Sun's free
- RPCSRC-4.0 distribution. The `portmap', `rpcinfo', and `rpcgen' programs
- are included. (There is still no support for YP.)
-
-* Tom Quinn has contributed a port of the C library to SGI machines running
- Irix 4 (mips-sgi-irix4).
-
-* The new `lockf' function is a simplified interface to the locking
- facilities of `fcntl', included for compatibility.
-
-* New time functions `timegm', `timelocal', and `dysize' for compatibility.
-
-* New header file <sys/timeb.h> and new function `ftime' for compatibility.
-
-* New header files <poll.h> and <sys/poll.h> and new function `poll' for
- compatibility.
-
-* The error message printed by `assert' for a failed assertion now includes
- the name of the program (if using GNU ld) and the name of the calling
- function (with versions of GCC that support this).
-
-* The `psignal' function is now declared in <signal.h>, not <stdio.h>.
-
-* The library now includes the <sys/mman.h> header file and memory
- management functions `mmap', `munmap', `mprotect', `msync', and
- `madvise', on systems that support those facilities.
-
-* The interface for `mcheck' has changed slightly: the function called to
- abort the program when an allocation inconsistency is detected now takes
- an argument that indicates the type of failure. The new function
- `mprobe' lets you request a consistency check for a particular block at
- any time (checks are normally done only when you call `free' or `realloc'
- on a block).
-
-* It is now possible to easily cross-compile the C library, building on one
- system a library to run on another machine and/or operating system. All
- you need to do is set the variable `HOST_CC' in `configparms' to the
- native compiler for programs to run on the machine you are building on (a
- few generator programs are used on Unix systems); set `CC' to the
- cross-compiler.
-
-* The new function `fexecve' (only implemented on the GNU system) executes
- a program file given a file descriptor already open on the file.
-
-Version 1.07
-
-* Brendan Kehoe has contributed most of a port to the DEC Alpha
- running OSF/1 (alpha-dec-osf1). He says it is 75% complete.
-
-* You can set the variable `libprefix' in `configparms' to specify a prefix
- to be prepended to installed library files; this makes it easy to install
- the GNU C library to be linked as `-lgnuc' or whatever.
-
-* The new `stpncpy' is a cross between `stpcpy' and `strncpy': It
- copies a limited number of characters from a string, and returns the
- address of the last character written.
-
-* You no longer need to check for whether the installed `stddef.h' is
- compatible with the GNU C library. configure now checks for you.
-
-* You can now define a per-stream `fileno' function to convert the
- stream's cookie into an integral file descriptor.
-
-* ``malloc (0)'' no longer returns a null pointer. Instead, it
- allocates zero bytes of storage, and returns a unique pointer which
- you can pass to `realloc' or `free'. The behavior is undefined if
- you dereference this pointer.
-
-* The C library now runs on Sony NEWS m68k machines running either
- NewsOS 3 or NewsOS 4.
-
-* The new `syscall' function is a system-dependent primitive function
- for invoking system calls. It has the canonical behavior on Unix
- systems, including unreliable return values for some calls (such as
- `pipe', `fork' and `getppid').
-
-* The error code `EWOULDBLOCK' is now obsolete; it is always defined
- to `EAGAIN', which is the preferred name. On systems whose kernels
- use two distinct codes, the C library now translates EWOULDBLOCK to
- EAGAIN in every system call function.
-
-Version 1.06
-
-* The GNU C Library Reference Manual is now distributed with the library.
- `make dvi' will produce a DVI file of the printed manual.
- `make info' will produce Info files that you can read on line using C-h i
- in Emacs or the `info' program.
- Please send comments on the manual to bug-glibc-manual@gnu.org.
-
-* The library now supports SVR4 on i386s (i386-unknown-sysv4).
-
-* Brendan Kehoe has contributed a port to Sun SPARCs running Solaris 2.
-
-* Jason Merrill has contributed a port to the Sequent Symmetry running
- Dynix version 3 (i386-sequent-dynix).
-
-* The library has been ported to i386s running SCO 3.2.4 (also known as SCO
- ODT 2.0; i386-unknown-sco3.2.4) or SCO 3.2 (i386-unknown-sco3.2).
-
-* New function `memory_warnings' lets you arrange to get warnings when
- malloc is running out of memory to allocate, like Emacs gives you.
-
-* The C library now contains the relocating allocator used in Emacs 19 for
- its editing buffers. This allocator (ralloc) minimizes allocation
- overhead and fragmentation by moving allocated regions around whenever it
- needs to. You always refer to a ralloc'd region with a "handle" (a
- pointer to a pointer--an object of type `void **').
-
-* There is a new `printf' format: `%m' gives you the string corresponding
- to the error code in `errno'.
-
-* In `scanf' formats, you can now use `%as' or `%a[' to do the normal `%s'
- or `%[' conversion, but instead of filling in a fixed-sized buffer you
- pass, the `a' modifier says to fill in a `char **' you pass with a
- malloc'd string.
-
-* The `fnmatch' function supports the new flag bits `FNM_LEADING_DIR' and
- `FNM_CASEFOLD'. `FNM_LEADING_DIR' lets a pattern like `foo*' match a
- name like `foo/bar'. `FNM_CASEFOLD' says to ignore case in matching.
-
-* `mkstemp' is a traditional Unix function to atomically create and open a
- uniquely-named temporary file.
-
-Version 1.05
-
-* The standard location for the file that says what the local timezone is
- has changed again. It is now `/usr/local/etc/localtime' (or more
- precisely, `${prefix}/etc/localtime') rather than `/etc/localtime'.
-
-* The distribution no longer contains any files with names longer than 14
- characters.
-
-* `struct ttyent' has two new flag bits: TTY_TRUSTED and TTY_CONSOLE.
- These are set by the new `trusted' and `console' keywords in `/etc/ttys'.
-
-* New functions `ttyslot' and `syslog' from 4.4 BSD.
-
-Version 1.04
-
-* The configuration process has changed quite a bit. The `configure'
- script is now used just like the configuration scripts for other GNU
- packages. The `sysdeps' directory hierarchy is much rearranged.
- The file `INSTALL' explains the new scheme in detail.
-
-* The header files no longer need to be processed into ANSI C and
- traditional C versions. There is just one set of files to install, and
- it will work with ANSI or old C compilers (including `gcc -traditional').
-
-* Brendan Kehoe and Ian Lance Taylor have ported the library to the
- MIPS DECStation running Ultrix 4.
-
-* The Sun 4 startup code (crt0) can now properly load SunOS 4 shared libraries.
- Tom Quinn contributed the initial code. The GNU C library can NOT yet be
- made itself into a shared library.
-
-* Yet further improved support for the i386, running 4.3 BSD-like systems
- (such as Mach 3 with the Unix single-server), or System V.
-
-* New function `strncasecmp' to do case-insensitive string comparison
- with limited length.
-
-* New function `strsep' is a reentrant alternative to `strtok'.
-
-* New functions `scandir' and `alphasort' for searching directories.
-
-* New function `setenv' is a better interface to `putenv'.
-
-* Ian Lance Taylor has contributed an implementation of the SVID `ftw'
- function for traversing a directory tree.
-
-* The GNU obstack package is now also part of the C library.
- The new function `open_obstack_stream' creates a stdio stream that
- writes onto an obstack; `obstack_printf' and `obstack_vprintf' do
- formatted output directly to an obstack.
-
-* Miscellaneous new functions: reboot, nice, sigaltstack (4.4 BSD only),
- cfmakeraw, getusershell, getpass, swab, getttyent, seteuid, setegid.
-
-* `FNM_FILE_NAME' is another name for `FNM_PATHNAME', used with `fnmatch'.
-
-* The new functions `strfry' and `memfrob' do mysterious and wonderful
- things to your strings.
-
-* There are some new test programs: test-fseek, testmb, and testrand.
-
-* Some work has been done to begin porting the library to 4.4 BSD and Linux.
- These ports are not finished, but are a good starting place for really
- supporting those systems.
-
-* `/etc/localtime' is now the standard location for the file that says what
- the local timezone is, rather than `/usr/local/lib/zoneinfo/localtime'.
- This follows the general principle that `/etc' is the place for all local
- configuration files.
-
-* The C library header files now use `extern "C"' when used by the C++
- compiler, so the C library should now work with C++ code.
-
-* The header file <bstring.h> is gone. <string.h> now declares bcopy,
- bcmp, bzero, and ffs. (Update: nowadays these functions are declared
- in <strings.h>.)
-
-* Mike Haertel (of GNU e?grep and malloc fame) has written a new sorting
- function which uses the `merge sort' algorithm, and is said to be
- significantly faster than the old GNU `qsort' function. Merge sort is
- now the standard `qsort' function. The new algorithm can require a lot
- of temporary storage; so, the old sorting function is called when the
- required storage is not available.
-
-* The C library now includes Michael Glad's Ultra Fast Crypt, which
- provides the Unix `crypt' function, plus some other entry points.
-
-* The code and header files taken from 4.4 BSD have been updated with the
- latest files released from Berkeley.
-
-----------------------------------------------------------------------
-Copying conditions:
-
- Permission is granted to anyone to make or distribute verbatim copies
- of this document as received, in any medium, provided that the
- copyright notice and this permission notice are preserved,
- thus giving the recipient permission to redistribute in turn.
-
- Permission is granted to distribute modified versions
- of this document, or of portions of it,
- under the above conditions, provided also that they
- carry prominent notices stating who last changed them.
-
-Local variables:
-version-control: never
-fill-column: 72
-End:
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits/socket.h
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits/socket.h (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits/socket.h (nonexistent)
@@ -1,391 +0,0 @@
-/* System-specific socket constants and types. 4.4 BSD version.
- Copyright (C) 1991-2022 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
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; see the file COPYING.LIB. If
- not, see <https://www.gnu.org/licenses/>. */
-
-#ifndef __BITS_SOCKET_H
-#define __BITS_SOCKET_H 1
-
-#ifndef _SYS_SOCKET_H
-# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
-#endif
-
-#define __need_size_t
-#include <stddef.h>
-
-#include <bits/wordsize.h>
-#include <bits/types.h>
-
-/* Type for length arguments in socket calls. */
-#ifndef __socklen_t_defined
-typedef __socklen_t socklen_t;
-# define __socklen_t_defined
-#endif
-
-
-/* Types of sockets. */
-enum __socket_type
-{
- SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
- byte streams. */
-#define SOCK_STREAM SOCK_STREAM
- SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
- of fixed maximum length. */
-#define SOCK_DGRAM SOCK_DGRAM
- SOCK_RAW = 3, /* Raw protocol interface. */
-#define SOCK_RAW SOCK_RAW
- SOCK_RDM = 4, /* Reliably-delivered messages. */
-#define SOCK_RDM SOCK_RDM
- SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
- datagrams of fixed maximum length. */
-#define SOCK_SEQPACKET SOCK_SEQPACKET
-
-#define SOCK_MAX (SOCK_SEQPACKET + 1)
- /* Mask which covers at least up to SOCK_MASK-1.
- The remaining bits are used as flags. */
-#define SOCK_TYPE_MASK 0xf
-
- /* Flags to be ORed into the type parameter of socket and socketpair and
- used for the flags parameter of accept4. */
-
- SOCK_CLOEXEC = 0x10000000, /* Atomically set close-on-exec flag for the
- new descriptor(s). */
-#define SOCK_CLOEXEC SOCK_CLOEXEC
-
- SOCK_NONBLOCK = 0x20000000 /* Atomically mark descriptor(s) as
- non-blocking. */
-#define SOCK_NONBLOCK SOCK_NONBLOCK
-};
-
-/* Protocol families. */
-#define PF_UNSPEC 0 /* Unspecified. */
-#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
-#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
-#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */
-#define PF_INET 2 /* IP protocol family. */
-#define PF_IMPLINK 3 /* ARPAnet IMP protocol. */
-#define PF_PUP 4 /* PUP protocols. */
-#define PF_CHAOS 5 /* MIT Chaos protocols. */
-#define PF_NS 6 /* Xerox NS protocols. */
-#define PF_ISO 7 /* ISO protocols. */
-#define PF_OSI PF_ISO
-#define PF_ECMA 8 /* ECMA protocols. */
-#define PF_DATAKIT 9 /* AT&T Datakit protocols. */
-#define PF_CCITT 10 /* CCITT protocols (X.25 et al). */
-#define PF_SNA 11 /* IBM SNA protocol. */
-#define PF_DECnet 12 /* DECnet protocols. */
-#define PF_DLI 13 /* Direct data link interface. */
-#define PF_LAT 14 /* DEC Local Area Transport protocol. */
-#define PF_HYLINK 15 /* NSC Hyperchannel protocol. */
-#define PF_APPLETALK 16 /* Don't use this. */
-#define PF_ROUTE 17 /* Internal Routing Protocol. */
-#define PF_LINK 18 /* Link layer interface. */
-#define PF_XTP 19 /* eXpress Transfer Protocol (no AF). */
-#define PF_COIP 20 /* Connection-oriented IP, aka ST II. */
-#define PF_CNT 21 /* Computer Network Technology. */
-#define PF_RTIP 22 /* Help Identify RTIP packets. **/
-#define PF_IPX 23 /* Novell Internet Protocol. */
-#define PF_SIP 24 /* Simple Internet Protocol. */
-#define PF_PIP 25 /* Help Identify PIP packets. */
-#define PF_INET6 26 /* IP version 6. */
-#define PF_MAX 27
-
-/* Address families. */
-#define AF_UNSPEC PF_UNSPEC
-#define AF_LOCAL PF_LOCAL
-#define AF_UNIX PF_UNIX
-#define AF_FILE PF_FILE
-#define AF_INET PF_INET
-#define AF_IMPLINK PF_IMPLINK
-#define AF_PUP PF_PUP
-#define AF_CHAOS PF_CHAOS
-#define AF_NS PF_NS
-#define AF_ISO PF_ISO
-#define AF_OSI PF_OSI
-#define AF_ECMA PF_ECMA
-#define AF_DATAKIT PF_DATAKIT
-#define AF_CCITT PF_CCITT
-#define AF_SNA PF_SNA
-#define AF_DECnet PF_DECnet
-#define AF_DLI PF_DLI
-#define AF_LAT PF_LAT
-#define AF_HYLINK PF_HYLINK
-#define AF_APPLETALK PF_APPLETALK
-#define AF_ROUTE PF_ROUTE
-#define AF_LINK PF_LINK
-#ifdef __USE_MISC
-# define pseudo_AF_XTP PF_XTP
-#endif
-#define AF_COIP PF_COIP
-#define AF_CNT PF_CNT
-#ifdef __USE_MISC
-# define pseudo_AF_RTIP PF_RTIP
-#endif
-#define AF_IPX PF_IPX
-#define AF_SIP PF_SIP
-#ifdef __USE_MISC
-# define pseudo_AF_PIP PF_PIP
-#endif
-#define AF_INET6 PF_INET6
-#define AF_MAX PF_MAX
-
-/* Maximum queue length specifiable by listen. */
-#define SOMAXCONN 128 /* 5 on the origional 4.4 BSD. */
-
-/* Get the definition of the macro to define the common sockaddr members. */
-#include <bits/sockaddr.h>
-
-/* Structure describing a generic socket address. */
-struct sockaddr
- {
- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
- char sa_data[14]; /* Address data. */
- };
-
-
-/* Structure large enough to hold any socket address (with the historical
- exception of AF_UNIX). */
-#if __WORDSIZE == 64
-# define __ss_aligntype __uint64_t
-#else
-# define __ss_aligntype __uint32_t
-#endif
-#define _SS_PADSIZE \
- (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
-
-struct sockaddr_storage
- {
- __SOCKADDR_COMMON (ss_); /* Address family, etc. */
- char __ss_padding[_SS_PADSIZE];
- __ss_aligntype __ss_align; /* Force desired alignment. */
- };
-
-
-/* Bits in the FLAGS argument to `send', `recv', et al. */
-enum
- {
- MSG_OOB = 0x01, /* Process out-of-band data. */
-#define MSG_OOB MSG_OOB
- MSG_PEEK = 0x02, /* Peek at incoming messages. */
-#define MSG_PEEK MSG_PEEK
- MSG_DONTROUTE = 0x04, /* Don't use local routing. */
-#define MSG_DONTROUTE MSG_DONTROUTE
- MSG_EOR = 0x08, /* Data completes record. */
-#define MSG_EOR MSG_EOR
- MSG_TRUNC = 0x10, /* Data discarded before delivery. */
-#define MSG_TRUNC MSG_TRUNC
- MSG_CTRUNC = 0x20, /* Control data lost before delivery. */
-#define MSG_CTRUNC MSG_CTRUNC
- MSG_WAITALL = 0x40, /* Wait for full request or error. */
-#define MSG_WAITALL MSG_WAITALL
- MSG_DONTWAIT = 0x80, /* This message should be nonblocking. */
-#define MSG_DONTWAIT MSG_DONTWAIT
- MSG_NOSIGNAL = 0x0400 /* Do not generate SIGPIPE on EPIPE. */
-#define MSG_NOSIGNAL MSG_NOSIGNAL
- };
-
-
-/* Structure describing messages sent by
- `sendmsg' and received by `recvmsg'. */
-struct msghdr
- {
- void *msg_name; /* Address to send to/receive from. */
- socklen_t msg_namelen; /* Length of address data. */
-
- struct iovec *msg_iov; /* Vector of data to send/receive into. */
- int msg_iovlen; /* Number of elements in the vector. */
-
- void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
- socklen_t msg_controllen; /* Ancillary data buffer length. */
-
- int msg_flags; /* Flags in received message. */
- };
-
-/* Structure used for storage of ancillary data object information. */
-struct cmsghdr
- {
- socklen_t cmsg_len; /* Length of data in cmsg_data plus length
- of cmsghdr structure. */
- int cmsg_level; /* Originating protocol. */
- int cmsg_type; /* Protocol specific type. */
-#if __glibc_c99_flexarr_available
- __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
-#endif
- };
-
-/* Ancillary data object manipulation macros. */
-#if __glibc_c99_flexarr_available
-# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
-#else
-# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
-#endif
-
-#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
-
-#define CMSG_FIRSTHDR(mhdr) \
- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
-
-#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
- & (size_t) ~(sizeof (size_t) - 1))
-#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
- + CMSG_ALIGN (sizeof (struct cmsghdr)))
-#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
-
-/* Given a length, return the additional padding necessary such that
- len + __CMSG_PADDING(len) == CMSG_ALIGN (len). */
-#define __CMSG_PADDING(len) ((sizeof (size_t) \
- - ((len) & (sizeof (size_t) - 1))) \
- & (sizeof (size_t) - 1))
-
-extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
- struct cmsghdr *__cmsg) __THROW;
-#ifdef __USE_EXTERN_INLINES
-# ifndef _EXTERN_INLINE
-# define _EXTERN_INLINE __extern_inline
-# endif
-_EXTERN_INLINE struct cmsghdr *
-__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
-{
- /* We may safely assume that __cmsg lies between __mhdr->msg_control and
- __mhdr->msg_controllen because the user is required to obtain the first
- cmsg via CMSG_FIRSTHDR, set its length, then obtain subsequent cmsgs
- via CMSG_NXTHDR, setting lengths along the way. However, we don't yet
- trust the value of __cmsg->cmsg_len and therefore do not use it in any
- pointer arithmetic until we check its value. */
-
- unsigned char * __msg_control_ptr = (unsigned char *) __mhdr->msg_control;
- unsigned char * __cmsg_ptr = (unsigned char *) __cmsg;
-
- size_t __size_needed = sizeof (struct cmsghdr)
- + __CMSG_PADDING (__cmsg->cmsg_len);
-
- /* The current header is malformed, too small to be a full header. */
- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
- return (struct cmsghdr *) 0;
-
- /* There isn't enough space between __cmsg and the end of the buffer to
- hold the current cmsg *and* the next one. */
- if (((size_t)
- (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr)
- < __size_needed)
- || ((size_t)
- (__msg_control_ptr + __mhdr->msg_controllen - __cmsg_ptr
- - __size_needed)
- < __cmsg->cmsg_len))
-
- return (struct cmsghdr *) 0;
-
- /* Now, we trust cmsg_len and can use it to find the next header. */
- __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
- + CMSG_ALIGN (__cmsg->cmsg_len));
- return __cmsg;
-}
-#endif /* Use `extern inline'. */
-
-/* Socket level message types. */
-enum
- {
- SCM_RIGHTS = 0x01, /* Access rights (array of int). */
-#define SCM_RIGHTS SCM_RIGHTS
- SCM_TIMESTAMP = 0x02, /* Timestamp (struct timeval). */
-#define SCM_TIMESTAMP SCM_TIMESTAMP
- SCM_CREDS = 0x03 /* Process creds (struct cmsgcred). */
-#define SCM_CREDS SCM_CREDS
- };
-
-#ifdef __USE_MISC
-/* Unfortunately, BSD practice dictates this structure be of fixed size.
- If there are more than CMGROUP_MAX groups, the list is truncated.
- (On GNU systems, the `cmcred_euid' field is just the first in the
- list of effective UIDs.) */
-#define CMGROUP_MAX 16
-
-/* Structure delivered by SCM_CREDS. This describes the identity of the
- sender of the data simultaneously received on the socket. By BSD
- convention, this is included only when a sender on a AF_LOCAL socket
- sends cmsg data of this type and size; the sender's structure is
- ignored, and the system fills in the various IDs of the sender process. */
-struct cmsgcred
- {
- __pid_t cmcred_pid;
- __uid_t cmcred_uid;
- __uid_t cmcred_euid;
- __gid_t cmcred_gid;
- int cmcred_ngroups;
- __gid_t cmcred_groups[CMGROUP_MAX];
- };
-#endif
-
-/* Protocol number used to manipulate socket-level options
- with `getsockopt' and `setsockopt'. */
-#define SOL_SOCKET 0xffff
-
-/* Socket-level options for `getsockopt' and `setsockopt'. */
-enum
- {
- SO_DEBUG = 0x0001, /* Record debugging information. */
-#define SO_DEBUG SO_DEBUG
- SO_ACCEPTCONN = 0x0002, /* Accept connections on socket. */
-#define SO_ACCEPTCONN SO_ACCEPTCONN
- SO_REUSEADDR = 0x0004, /* Allow reuse of local addresses. */
-#define SO_REUSEADDR SO_REUSEADDR
- SO_KEEPALIVE = 0x0008, /* Keep connections alive and send
- SIGPIPE when they die. */
-#define SO_KEEPALIVE SO_KEEPALIVE
- SO_DONTROUTE = 0x0010, /* Don't do local routing. */
-#define SO_DONTROUTE SO_DONTROUTE
- SO_BROADCAST = 0x0020, /* Allow transmission of
- broadcast messages. */
-#define SO_BROADCAST SO_BROADCAST
- SO_USELOOPBACK = 0x0040, /* Use the software loopback to avoid
- hardware use when possible. */
-#define SO_USELOOPBACK SO_USELOOPBACK
- SO_LINGER = 0x0080, /* Block on close of a reliable
- socket to transmit pending data. */
-#define SO_LINGER SO_LINGER
- SO_OOBINLINE = 0x0100, /* Receive out-of-band data in-band. */
-#define SO_OOBINLINE SO_OOBINLINE
- SO_REUSEPORT = 0x0200, /* Allow local address and port reuse. */
-#define SO_REUSEPORT SO_REUSEPORT
- SO_SNDBUF = 0x1001, /* Send buffer size. */
-#define SO_SNDBUF SO_SNDBUF
- SO_RCVBUF = 0x1002, /* Receive buffer. */
-#define SO_RCVBUF SO_RCVBUF
- SO_SNDLOWAT = 0x1003, /* Send low-water mark. */
-#define SO_SNDLOWAT SO_SNDLOWAT
- SO_RCVLOWAT = 0x1004, /* Receive low-water mark. */
-#define SO_RCVLOWAT SO_RCVLOWAT
- SO_SNDTIMEO = 0x1005, /* Send timeout. */
-#define SO_SNDTIMEO SO_SNDTIMEO
- SO_RCVTIMEO = 0x1006, /* Receive timeout. */
-#define SO_RCVTIMEO SO_RCVTIMEO
- SO_ERROR = 0x1007, /* Get and clear error status. */
-#define SO_ERROR SO_ERROR
- SO_STYLE = 0x1008, /* Get socket connection style. */
-#define SO_STYLE SO_STYLE
- SO_TYPE = SO_STYLE /* Compatible name for SO_STYLE. */
-#define SO_TYPE SO_TYPE
- };
-
-/* Structure used to manipulate the SO_LINGER option. */
-struct linger
- {
- int l_onoff; /* Nonzero to linger on close. */
- int l_linger; /* Time to linger. */
- };
-
-#endif /* bits/socket.h */
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/bits
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/tst-cmsghdr-skeleton.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/tst-cmsghdr-skeleton.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/tst-cmsghdr-skeleton.c (nonexistent)
@@ -1,92 +0,0 @@
-/* Test ancillary data header creation.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-/* We use the preprocessor to generate the function/macro tests instead of
- using indirection because having all the macro expansions alongside
- each other lets the compiler warn us about suspicious pointer
- arithmetic across subsequent CMSG_{FIRST,NXT}HDR expansions. */
-
-#include <stdint.h>
-
-#define RUN_TEST_CONCAT(suffix) run_test_##suffix
-#define RUN_TEST_FUNCNAME(suffix) RUN_TEST_CONCAT (suffix)
-
-static void
-RUN_TEST_FUNCNAME (CMSG_NXTHDR_IMPL) (void)
-{
- struct msghdr m = {0};
- struct cmsghdr *cmsg;
- char cmsgbuf[3 * CMSG_SPACE (sizeof (PAYLOAD))] = {0};
-
- m.msg_control = cmsgbuf;
- m.msg_controllen = sizeof (cmsgbuf);
-
- /* First header should point to the start of the buffer. */
- cmsg = CMSG_FIRSTHDR (&m);
- TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
-
- /* If the first header length consumes the entire buffer, there is no
- space remaining for additional headers. */
- cmsg->cmsg_len = sizeof (cmsgbuf);
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg == NULL);
-
- /* The first header length is so big, using it would cause an overflow. */
- cmsg = CMSG_FIRSTHDR (&m);
- TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
- cmsg->cmsg_len = SIZE_MAX;
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg == NULL);
-
- /* The first header leaves just enough space to hold another header. */
- cmsg = CMSG_FIRSTHDR (&m);
- TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
- cmsg->cmsg_len = sizeof (cmsgbuf) - sizeof (struct cmsghdr);
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg != NULL);
-
- /* The first header leaves space but not enough for another header. */
- cmsg = CMSG_FIRSTHDR (&m);
- TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
- cmsg->cmsg_len ++;
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg == NULL);
-
- /* The second header leaves just enough space to hold another header. */
- cmsg = CMSG_FIRSTHDR (&m);
- TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
- cmsg->cmsg_len = CMSG_LEN (sizeof (PAYLOAD));
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg != NULL);
- cmsg->cmsg_len = sizeof (cmsgbuf)
- - CMSG_SPACE (sizeof (PAYLOAD)) /* First header. */
- - sizeof (struct cmsghdr);
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg != NULL);
-
- /* The second header leaves space but not enough for another header. */
- cmsg = CMSG_FIRSTHDR (&m);
- TEST_VERIFY_EXIT ((char *) cmsg == cmsgbuf);
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg != NULL);
- cmsg->cmsg_len ++;
- cmsg = CMSG_NXTHDR_IMPL (&m, cmsg);
- TEST_VERIFY_EXIT (cmsg == NULL);
-
- return;
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/Makefile (nonexistent)
@@ -1,59 +0,0 @@
-# Copyright (C) 1991-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-#
-# Sub-makefile for socket portion of the library.
-#
-subdir := socket
-
-include ../Makeconfig
-
-headers := sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \
- bits/socket2.h bits/types/struct_osockaddr.h \
- sys/socketvar.h net/if.h
-
-routines := accept bind connect getpeername getsockname getsockopt \
- listen recv recvfrom recvmsg send sendmsg sendto \
- setsockopt shutdown socket socketpair isfdtype opensock \
- sockatmark accept4 recvmmsg sendmmsg sockaddr_un_set
-
-tests := \
- tst-accept4 \
- tst-sockopt \
- tst-cmsghdr \
- # tests
-
-tests-internal := \
- tst-sockaddr_un_set \
- # tests-internal
-
-tests-time64 := \
- tst-sockopt-time64 \
- # tests
-
-aux := sa_len
-
-include ../Rules
-
-CFLAGS-recv.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recvfrom.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendto.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recvmsg.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendmsg.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-send.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-connect.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-accept.c += -fexceptions -fasynchronous-unwind-tables
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/tst-cmsghdr.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/tst-cmsghdr.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket/tst-cmsghdr.c (nonexistent)
@@ -1,56 +0,0 @@
-/* Test ancillary data header creation.
- Copyright (C) 2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <sys/socket.h>
-#include <gnu/lib-names.h>
-#include <support/xdlfcn.h>
-#include <support/check.h>
-
-#define PAYLOAD "Hello, World!"
-
-/* CMSG_NXTHDR is a macro that calls an inline function defined in
- bits/socket.h. In case the function cannot be inlined, libc.so carries
- a copy. Both versions need to be tested. */
-
-#define CMSG_NXTHDR_IMPL CMSG_NXTHDR
-#include "tst-cmsghdr-skeleton.c"
-#undef CMSG_NXTHDR_IMPL
-
-static struct cmsghdr * (* cmsg_nxthdr) (struct msghdr *, struct cmsghdr *);
-
-#define CMSG_NXTHDR_IMPL cmsg_nxthdr
-#include "tst-cmsghdr-skeleton.c"
-#undef CMSG_NXTHDR_IMPL
-
-static int
-do_test (void)
-{
- static void *handle;
-
- run_test_CMSG_NXTHDR ();
-
- handle = xdlopen (LIBC_SO, RTLD_LAZY);
- cmsg_nxthdr = (struct cmsghdr * (*) (struct msghdr *, struct cmsghdr *))
- xdlsym (handle, "__cmsg_nxthdr");
-
- run_test_cmsg_nxthdr ();
-
- return 0;
-}
-
-#include <support/test-driver.c>
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new/socket
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-b3736d1a3c-2.36.1-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-glibc-2.36/time/tzfile.c
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-zonefile.patch
-
-mv glibc-$VERSION-zonefile.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time/tzfile.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time/tzfile.c (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time/tzfile.c (nonexistent)
@@ -1,779 +0,0 @@
-/* Copyright (C) 1991-2022 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <assert.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdio_ext.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <stdint.h>
-#include <alloc_buffer.h>
-
-#include <timezone/tzfile.h>
-
-int __use_tzfile;
-static dev_t tzfile_dev;
-static ino64_t tzfile_ino;
-static time_t tzfile_mtime;
-
-struct ttinfo
- {
- int offset; /* Seconds east of GMT. */
- unsigned char isdst; /* Used to set tm_isdst. */
- unsigned char idx; /* Index into `zone_names'. */
- unsigned char isstd; /* Transition times are in standard time. */
- unsigned char isut; /* Transition times are in UT. */
- };
-
-struct leap
- {
- __time64_t transition; /* Time the transition takes effect. */
- long int change; /* Seconds of correction to apply. */
- };
-
-static size_t num_transitions;
-libc_freeres_ptr (static __time64_t *transitions);
-static unsigned char *type_idxs;
-static size_t num_types;
-static struct ttinfo *types;
-static char *zone_names;
-static long int rule_stdoff;
-static long int rule_dstoff;
-static size_t num_leaps;
-static struct leap *leaps;
-static char *tzspec;
-
-#include <endian.h>
-#include <byteswap.h>
-
-/* Decode the four bytes at PTR as a signed integer in network byte order. */
-static inline int
-__attribute ((always_inline))
-decode (const void *ptr)
-{
- if (BYTE_ORDER == BIG_ENDIAN && sizeof (int) == 4)
- return *(const int *) ptr;
- if (sizeof (int) == 4)
- return bswap_32 (*(const int *) ptr);
-
- const unsigned char *p = ptr;
- int result = *p & (1 << (CHAR_BIT - 1)) ? ~0 : 0;
-
- result = (result << 8) | *p++;
- result = (result << 8) | *p++;
- result = (result << 8) | *p++;
- result = (result << 8) | *p++;
-
- return result;
-}
-
-
-static inline int64_t
-__attribute ((always_inline))
-decode64 (const void *ptr)
-{
- if ((BYTE_ORDER == BIG_ENDIAN))
- return *(const int64_t *) ptr;
-
- return bswap_64 (*(const int64_t *) ptr);
-}
-
-
-void
-__tzfile_read (const char *file, size_t extra, char **extrap)
-{
- static const char default_tzdir[] = TZDIR;
- size_t num_isstd, num_isut;
- FILE *f;
- struct tzhead tzhead;
- size_t chars;
- size_t i;
- int was_using_tzfile = __use_tzfile;
- int trans_width = 4;
- char *new = NULL;
-
- _Static_assert (sizeof (__time64_t) == 8,
- "__time64_t must be eight bytes");
-
- __use_tzfile = 0;
-
- if (file == NULL)
- /* No user specification; use the site-wide default. */
- file = TZDEFAULT;
- else if (*file == '\0')
- /* User specified the empty string; use UTC with no leap seconds. */
- goto ret_free_transitions;
- else
- {
- /* We must not allow to read an arbitrary file in a setuid
- program. So we fail for any file which is not in the
- directory hierachy starting at TZDIR
- and which is not the system wide default TZDEFAULT. */
- if (__libc_enable_secure
- && ((*file == '/'
- && memcmp (file, TZDEFAULT, sizeof TZDEFAULT)
- && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1))
- || strstr (file, "../") != NULL))
- /* This test is certainly a bit too restrictive but it should
- catch all critical cases. */
- goto ret_free_transitions;
- }
-
- if (*file != '/')
- {
- const char *tzdir;
-
- tzdir = getenv ("TZDIR");
- if (tzdir == NULL || *tzdir == '\0')
- tzdir = default_tzdir;
- if (__asprintf (&new, "%s/%s", tzdir, file) == -1)
- goto ret_free_transitions;
- file = new;
- }
-
- /* If we were already using tzfile, check whether the file changed. */
- struct __stat64_t64 st;
- if (was_using_tzfile
- && __stat64_time64 (file, &st) == 0
- && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev
- && tzfile_mtime == st.st_mtime)
- goto done; /* Nothing to do. */
-
- /* Note the file is opened with cancellation in the I/O functions
- disabled and if available FD_CLOEXEC set. */
- f = fopen (file, "rce");
- if (f == NULL)
- goto ret_free_transitions;
-
- /* Get information about the file we are actually using. */
- if (__fstat64_time64 (__fileno (f), &st) != 0)
- goto lose;
-
- free ((void *) transitions);
- transitions = NULL;
-
- /* Remember the inode and device number and modification time. */
- tzfile_dev = st.st_dev;
- tzfile_ino = st.st_ino;
- tzfile_mtime = st.st_mtime;
-
- /* No threads reading this stream. */
- __fsetlocking (f, FSETLOCKING_BYCALLER);
-
- read_again:
- if (__builtin_expect (__fread_unlocked ((void *) &tzhead, sizeof (tzhead),
- 1, f) != 1, 0)
- || memcmp (tzhead.tzh_magic, TZ_MAGIC, sizeof (tzhead.tzh_magic)) != 0)
- goto lose;
-
- num_transitions = (size_t) decode (tzhead.tzh_timecnt);
- num_types = (size_t) decode (tzhead.tzh_typecnt);
- chars = (size_t) decode (tzhead.tzh_charcnt);
- num_leaps = (size_t) decode (tzhead.tzh_leapcnt);
- num_isstd = (size_t) decode (tzhead.tzh_ttisstdcnt);
- num_isut = (size_t) decode (tzhead.tzh_ttisutcnt);
-
- if (__glibc_unlikely (num_isstd > num_types || num_isut > num_types))
- goto lose;
-
- if (trans_width == 4 && tzhead.tzh_version[0] != '\0')
- {
- /* We use the 8-byte format. */
- trans_width = 8;
-
- /* Position the stream before the second header. */
- size_t to_skip = (num_transitions * (4 + 1)
- + num_types * 6
- + chars
- + num_leaps * 8
- + num_isstd
- + num_isut);
- if (fseek (f, to_skip, SEEK_CUR) != 0)
- goto lose;
-
- goto read_again;
- }
-
- /* Compute the size of the POSIX time zone specification in the
- file. */
- size_t tzspec_len;
- if (trans_width == 8)
- {
- off_t rem = st.st_size - __ftello (f);
- if (__builtin_expect (rem < 0
- || (size_t) rem < (num_transitions * (8 + 1)
- + num_types * 6
- + chars), 0))
- goto lose;
- tzspec_len = (size_t) rem - (num_transitions * (8 + 1)
- + num_types * 6
- + chars);
- if (__builtin_expect (num_leaps > SIZE_MAX / 12
- || tzspec_len < num_leaps * 12, 0))
- goto lose;
- tzspec_len -= num_leaps * 12;
- if (__glibc_unlikely (tzspec_len < num_isstd))
- goto lose;
- tzspec_len -= num_isstd;
- if (__glibc_unlikely (tzspec_len == 0 || tzspec_len - 1 < num_isut))
- goto lose;
- tzspec_len -= num_isut + 1;
- if (tzspec_len == 0)
- goto lose;
- }
- else
- tzspec_len = 0;
-
- /* The file is parsed into a single heap allocation, comprising of
- the following arrays:
-
- __time64_t transitions[num_transitions];
- struct leap leaps[num_leaps];
- struct ttinfo types[num_types];
- unsigned char type_idxs[num_types];
- char zone_names[chars];
- char tzspec[tzspec_len];
- char extra_array[extra]; // Stored into *pextras if requested.
-
- The piece-wise allocations from buf below verify that no
- overflow/wraparound occurred in these computations.
-
- The order of the suballocations is important for alignment
- purposes. __time64_t outside a struct may require more alignment
- then inside a struct on some architectures, so it must come
- first. */
- _Static_assert (__alignof (__time64_t) >= __alignof (struct leap),
- "alignment of __time64_t");
- _Static_assert (__alignof (struct leap) >= __alignof (struct ttinfo),
- "alignment of struct leap");
- struct alloc_buffer buf;
- {
- size_t total_size = (num_transitions * sizeof (__time64_t)
- + num_leaps * sizeof (struct leap)
- + num_types * sizeof (struct ttinfo)
- + num_transitions /* type_idxs */
- + chars /* zone_names */
- + tzspec_len + extra);
- transitions = malloc (total_size);
- if (transitions == NULL)
- goto lose;
- buf = alloc_buffer_create (transitions, total_size);
- }
-
- /* The address of the first allocation is already stored in the
- pointer transitions. */
- (void) alloc_buffer_alloc_array (&buf, __time64_t, num_transitions);
- leaps = alloc_buffer_alloc_array (&buf, struct leap, num_leaps);
- types = alloc_buffer_alloc_array (&buf, struct ttinfo, num_types);
- type_idxs = alloc_buffer_alloc_array (&buf, unsigned char, num_transitions);
- zone_names = alloc_buffer_alloc_array (&buf, char, chars);
- if (trans_width == 8)
- tzspec = alloc_buffer_alloc_array (&buf, char, tzspec_len);
- else
- tzspec = NULL;
- if (extra > 0)
- *extrap = alloc_buffer_alloc_array (&buf, char, extra);
- if (alloc_buffer_has_failed (&buf))
- goto lose;
-
- if (__glibc_unlikely (__fread_unlocked (transitions, trans_width,
- num_transitions, f)
- != num_transitions)
- || __glibc_unlikely (__fread_unlocked (type_idxs, 1, num_transitions, f)
- != num_transitions))
- goto lose;
-
- /* Check for bogus indices in the data file, so we can hereafter
- safely use type_idxs[T] as indices into `types' and never crash. */
- for (i = 0; i < num_transitions; ++i)
- if (__glibc_unlikely (type_idxs[i] >= num_types))
- goto lose;
-
- if (trans_width == 4)
- {
- /* Decode the transition times, stored as 4-byte integers in
- network (big-endian) byte order. We work from the end of the
- array so as not to clobber the next element to be
- processed. */
- i = num_transitions;
- while (i-- > 0)
- transitions[i] = decode ((char *) transitions + i * 4);
- }
- else if (BYTE_ORDER != BIG_ENDIAN)
- {
- /* Decode the transition times, stored as 8-byte integers in
- network (big-endian) byte order. */
- for (i = 0; i < num_transitions; ++i)
- transitions[i] = decode64 ((char *) transitions + i * 8);
- }
-
- for (i = 0; i < num_types; ++i)
- {
- unsigned char x[4];
- int c;
- if (__builtin_expect (__fread_unlocked (x, 1,
- sizeof (x), f) != sizeof (x),
- 0))
- goto lose;
- c = __getc_unlocked (f);
- if (__glibc_unlikely ((unsigned int) c > 1u))
- goto lose;
- types[i].isdst = c;
- c = __getc_unlocked (f);
- if (__glibc_unlikely ((size_t) c > chars))
- /* Bogus index in data file. */
- goto lose;
- types[i].idx = c;
- types[i].offset = decode (x);
- }
-
- if (__glibc_unlikely (__fread_unlocked (zone_names, 1, chars, f) != chars))
- goto lose;
-
- for (i = 0; i < num_leaps; ++i)
- {
- unsigned char x[8];
- if (__builtin_expect (__fread_unlocked (x, 1, trans_width, f)
- != trans_width, 0))
- goto lose;
- if (trans_width == 4)
- leaps[i].transition = decode (x);
- else
- leaps[i].transition = decode64 (x);
-
- if (__glibc_unlikely (__fread_unlocked (x, 1, 4, f) != 4))
- goto lose;
- leaps[i].change = (long int) decode (x);
- }
-
- for (i = 0; i < num_isstd; ++i)
- {
- int c = __getc_unlocked (f);
- if (__glibc_unlikely (c == EOF))
- goto lose;
- types[i].isstd = c != 0;
- }
- while (i < num_types)
- types[i++].isstd = 0;
-
- for (i = 0; i < num_isut; ++i)
- {
- int c = __getc_unlocked (f);
- if (__glibc_unlikely (c == EOF))
- goto lose;
- types[i].isut = c != 0;
- }
- while (i < num_types)
- types[i++].isut = 0;
-
- /* Read the POSIX TZ-style information if possible. */
- if (tzspec != NULL)
- {
- assert (tzspec_len > 0);
- /* Skip over the newline first. */
- if (__getc_unlocked (f) != '\n'
- || (__fread_unlocked (tzspec, 1, tzspec_len - 1, f)
- != tzspec_len - 1))
- tzspec = NULL;
- else
- tzspec[tzspec_len - 1] = '\0';
- }
-
- /* Don't use an empty TZ string. */
- if (tzspec != NULL && tzspec[0] == '\0')
- tzspec = NULL;
-
- fclose (f);
-
- /* First "register" all timezone names. */
- for (i = 0; i < num_types; ++i)
- if (__tzstring (&zone_names[types[i].idx]) == NULL)
- goto ret_free_transitions;
-
- /* Find the standard and daylight time offsets used by the rule file.
- We choose the offsets in the types of each flavor that are
- transitioned to earliest in time. */
- __tzname[0] = NULL;
- __tzname[1] = NULL;
- for (i = num_transitions; i > 0; )
- {
- int type = type_idxs[--i];
- int dst = types[type].isdst;
-
- if (__tzname[dst] == NULL)
- {
- int idx = types[type].idx;
-
- __tzname[dst] = __tzstring (&zone_names[idx]);
-
- if (__tzname[1 - dst] != NULL)
- break;
- }
- }
- if (__tzname[0] == NULL)
- {
- /* This should only happen if there are no transition rules.
- In this case there's usually only one single type, unless
- e.g. the data file has a truncated time-range. */
- __tzname[0] = __tzstring (zone_names);
- }
- if (__tzname[1] == NULL)
- __tzname[1] = __tzname[0];
-
- if (num_transitions == 0)
- /* Use the first rule (which should also be the only one). */
- rule_stdoff = rule_dstoff = types[0].offset;
- else
- {
- int stdoff_set = 0, dstoff_set = 0;
- rule_stdoff = rule_dstoff = 0;
- i = num_transitions - 1;
- do
- {
- if (!stdoff_set && !types[type_idxs[i]].isdst)
- {
- stdoff_set = 1;
- rule_stdoff = types[type_idxs[i]].offset;
- }
- else if (!dstoff_set && types[type_idxs[i]].isdst)
- {
- dstoff_set = 1;
- rule_dstoff = types[type_idxs[i]].offset;
- }
- if (stdoff_set && dstoff_set)
- break;
- }
- while (i-- > 0);
-
- if (!dstoff_set)
- rule_dstoff = rule_stdoff;
- }
-
- __daylight = rule_stdoff != rule_dstoff;
- __timezone = -rule_stdoff;
-
- done:
- __use_tzfile = 1;
- free (new);
- return;
-
- lose:
- fclose (f);
- ret_free_transitions:
- free (new);
- free ((void *) transitions);
- transitions = NULL;
-}
-
-/* The user specified a hand-made timezone, but not its DST rules.
- We will use the names and offsets from the user, and the rules
- from the TZDEFRULES file. */
-
-void
-__tzfile_default (const char *std, const char *dst,
- int stdoff, int dstoff)
-{
- size_t stdlen = strlen (std) + 1;
- size_t dstlen = strlen (dst) + 1;
- size_t i;
- int isdst;
- char *cp;
-
- __tzfile_read (TZDEFRULES, stdlen + dstlen, &cp);
- if (!__use_tzfile)
- return;
-
- if (num_types < 2)
- {
- __use_tzfile = 0;
- return;
- }
-
- /* Ignore the zone names read from the file and use the given ones
- instead. */
- __mempcpy (__mempcpy (cp, std, stdlen), dst, dstlen);
- zone_names = cp;
-
- /* Now there are only two zones, regardless of what the file contained. */
- num_types = 2;
-
- /* Now correct the transition times for the user-specified standard and
- daylight offsets from GMT. */
- isdst = 0;
- for (i = 0; i < num_transitions; ++i)
- {
- struct ttinfo *trans_type = &types[type_idxs[i]];
-
- /* We will use only types 0 (standard) and 1 (daylight).
- Fix up this transition to point to whichever matches
- the flavor of its original type. */
- type_idxs[i] = trans_type->isdst;
-
- if (trans_type->isut)
- /* The transition time is in UT. No correction to apply. */ ;
- else if (isdst && !trans_type->isstd)
- /* The type says this transition is in "local wall clock time", and
- wall clock time as of the previous transition was DST. Correct
- for the difference between the rule's DST offset and the user's
- DST offset. */
- transitions[i] += dstoff - rule_dstoff;
- else
- /* This transition is in "local wall clock time", and wall clock
- time as of this iteration is non-DST. Correct for the
- difference between the rule's standard offset and the user's
- standard offset. */
- transitions[i] += stdoff - rule_stdoff;
-
- /* The DST state of "local wall clock time" for the next iteration is
- as specified by this transition. */
- isdst = trans_type->isdst;
- }
-
- /* Now that we adjusted the transitions to the requested offsets,
- reset the rule_stdoff and rule_dstoff values appropriately. They
- are used elsewhere. */
- rule_stdoff = stdoff;
- rule_dstoff = dstoff;
-
- /* Reset types 0 and 1 to describe the user's settings. */
- types[0].idx = 0;
- types[0].offset = stdoff;
- types[0].isdst = 0;
- types[1].idx = stdlen;
- types[1].offset = dstoff;
- types[1].isdst = 1;
-
- /* Reset the zone names to point to the user's names. */
- __tzname[0] = (char *) std;
- __tzname[1] = (char *) dst;
-
- /* Set the timezone. */
- __timezone = -types[0].offset;
-
- /* Invalidate the tzfile attribute cache to force rereading
- TZDEFRULES the next time it is used. */
- tzfile_dev = 0;
- tzfile_ino = 0;
- tzfile_mtime = 0;
-}
-
-void
-__tzfile_compute (__time64_t timer, int use_localtime,
- long int *leap_correct, int *leap_hit,
- struct tm *tp)
-{
- size_t i;
-
- if (use_localtime)
- {
- __tzname[0] = NULL;
- __tzname[1] = NULL;
-
- if (__glibc_unlikely (num_transitions == 0 || timer < transitions[0]))
- {
- /* TIMER is before any transition (or there are no transitions).
- Choose the first non-DST type
- (or the first if they're all DST types). */
- i = 0;
- while (i < num_types && types[i].isdst)
- {
- if (__tzname[1] == NULL)
- __tzname[1] = __tzstring (&zone_names[types[i].idx]);
-
- ++i;
- }
-
- if (i == num_types)
- i = 0;
- __tzname[0] = __tzstring (&zone_names[types[i].idx]);
- if (__tzname[1] == NULL)
- {
- size_t j = i;
- while (j < num_types)
- if (types[j].isdst)
- {
- __tzname[1] = __tzstring (&zone_names[types[j].idx]);
- break;
- }
- else
- ++j;
- }
- }
- else if (__glibc_unlikely (timer >= transitions[num_transitions - 1]))
- {
- if (__glibc_unlikely (tzspec == NULL))
- {
- use_last:
- i = num_transitions;
- goto found;
- }
-
- /* Parse the POSIX TZ-style string. */
- __tzset_parse_tz (tzspec);
-
- /* Convert to broken down structure. If this fails do not
- use the string. */
- if (__glibc_unlikely (! __offtime (timer, 0, tp)))
- goto use_last;
-
- /* Use the rules from the TZ string to compute the change. */
- __tz_compute (timer, tp, 1);
-
- /* If tzspec comes from posixrules loaded by __tzfile_default,
- override the STD and DST zone names with the ones user
- requested in TZ envvar. */
- if (__glibc_unlikely (zone_names == (char *) &leaps[num_leaps]))
- {
- assert (num_types == 2);
- __tzname[0] = __tzstring (zone_names);
- __tzname[1] = __tzstring (&zone_names[strlen (zone_names) + 1]);
- }
-
- goto leap;
- }
- else
- {
- /* Find the first transition after TIMER, and
- then pick the type of the transition before it. */
- size_t lo = 0;
- size_t hi = num_transitions - 1;
- /* Assume that DST is changing twice a year and guess
- initial search spot from it. Half of a gregorian year
- has on average 365.2425 * 86400 / 2 = 15778476 seconds.
- The value i can be truncated if size_t is smaller than
- __time64_t, but this is harmless because it is just
- a guess. */
- i = (transitions[num_transitions - 1] - timer) / 15778476;
- if (i < num_transitions)
- {
- i = num_transitions - 1 - i;
- if (timer < transitions[i])
- {
- if (i < 10 || timer >= transitions[i - 10])
- {
- /* Linear search. */
- while (timer < transitions[i - 1])
- --i;
- goto found;
- }
- hi = i - 10;
- }
- else
- {
- if (i + 10 >= num_transitions || timer < transitions[i + 10])
- {
- /* Linear search. */
- while (timer >= transitions[i])
- ++i;
- goto found;
- }
- lo = i + 10;
- }
- }
-
- /* Binary search. */
- /* assert (timer >= transitions[lo] && timer < transitions[hi]); */
- while (lo + 1 < hi)
- {
- i = (lo + hi) / 2;
- if (timer < transitions[i])
- hi = i;
- else
- lo = i;
- }
- i = hi;
-
- found:
- /* assert (timer >= transitions[i - 1]
- && (i == num_transitions || timer < transitions[i])); */
- __tzname[types[type_idxs[i - 1]].isdst]
- = __tzstring (&zone_names[types[type_idxs[i - 1]].idx]);
- size_t j = i;
- while (j < num_transitions)
- {
- int type = type_idxs[j];
- int dst = types[type].isdst;
- int idx = types[type].idx;
-
- if (__tzname[dst] == NULL)
- {
- __tzname[dst] = __tzstring (&zone_names[idx]);
-
- if (__tzname[1 - dst] != NULL)
- break;
- }
-
- ++j;
- }
-
- if (__glibc_unlikely (__tzname[0] == NULL))
- __tzname[0] = __tzname[1];
-
- i = type_idxs[i - 1];
- }
-
- struct ttinfo *info = &types[i];
- __daylight = rule_stdoff != rule_dstoff;
- __timezone = -rule_stdoff;
-
- if (__tzname[0] == NULL)
- {
- /* This should only happen if there are no transition rules.
- In this case there should be only one single type. */
- assert (num_types == 1);
- __tzname[0] = __tzstring (zone_names);
- }
- if (__tzname[1] == NULL)
- /* There is no daylight saving time. */
- __tzname[1] = __tzname[0];
- tp->tm_isdst = info->isdst;
- assert (strcmp (&zone_names[info->idx], __tzname[tp->tm_isdst]) == 0);
- tp->tm_zone = __tzname[tp->tm_isdst];
- tp->tm_gmtoff = info->offset;
- }
-
- leap:
- *leap_correct = 0L;
- *leap_hit = 0;
-
- /* Find the last leap second correction transition time before TIMER. */
- i = num_leaps;
- do
- if (i-- == 0)
- return;
- while (timer < leaps[i].transition);
-
- /* Apply its correction. */
- *leap_correct = leaps[i].change;
-
- if (timer == leaps[i].transition /* Exactly at the transition time. */
- && (leaps[i].change > (i == 0 ? 0 : leaps[i - 1].change)))
- {
- *leap_hit = 1;
- while (i > 0
- && leaps[i].transition == leaps[i - 1].transition + 1
- && leaps[i].change == leaps[i - 1].change + 1)
- {
- ++*leap_hit;
- --i;
- }
- }
-}
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new/time
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zonefile-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/file.list (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-glibc-2.36/timezone/Makefile
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=2.36
-
-tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
-mv glibc-$VERSION glibc-$VERSION-orig
-
-cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
-
-diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-zoneinfo.patch
-
-mv glibc-$VERSION-zoneinfo.patch ../patches
-
-rm -rf ./glibc-$VERSION
-rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone/Makefile (nonexistent)
@@ -1,139 +0,0 @@
-# Copyright (C) 1998-2022 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
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <https://www.gnu.org/licenses/>.
-
-#
-# Makefile for timezone information
-#
-subdir := timezone
-
-include ../Makeconfig
-
-others := zdump zic
-tests := test-tz tst-timezone tst-tzset tst-bz28707
-
-generated-dirs += testdata
-
-generated += tzselect
-
-testdata = $(objpfx)testdata
-
-ifeq ($(enable-timezone-tools),yes)
-install-sbin := zic
-install-bin := zdump
-install-bin-script = tzselect
-endif
-
-ifeq ($(run-built-tests),yes)
-# List zones generated by separate commands running zic on the host.
-# Each such zic run counts as a separate test.
-test-zones := America/New_York Etc/UTC UTC Europe/Berlin \
- Australia/Melbourne America/Sao_Paulo Asia/Tokyo \
- $(posixrules-file)
-tests-special += $(addprefix $(testdata)/, $(test-zones))
-endif
-
-include ../Rules
-
-
-$(objpfx)zic.o $(objpfx)zdump.o: $(objpfx)version.h
-
-$(objpfx)version.h: $(common-objpfx)config.make
- echo 'static char const TZVERSION[]="$(version)";' \
- > $@.new
- mv -f $@.new $@
-
-tz-cflags = -DTZDIR='"$(zonedir)"' \
- -DTZDEFAULT='"$(localtime-file)"' \
- -DTZDEFRULES='"$(posixrules-file)"' \
- -DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone \
- -DHAVE_GETTEXT -DUSE_LTZ=0 -D_ISOMAC -DTZ_DOMAIN='"libc"' \
- -include $(common-objpfx)config.h -Wno-maybe-uninitialized
-
-# The -Wno-unused-variable flag is used to prevent GCC 6
-# from warning about time_t_min and time_t_max which are
-# defined in private.h but not used.
-CFLAGS-zdump.c += $(tz-cflags)
-CFLAGS-zic.c += $(tz-cflags) -Wno-unused-variable
-
-# We have to make sure the data for testing the tz functions is available.
-# Don't add leapseconds here since test-tz made checks that work only without
-# leapseconds.
-define build-testdata
-$(built-program-cmd) -d $(testdata) -y ./yearistype $<; \
-$(evaluate-test)
-endef
-
-$(objpfx)test-tz.out: $(addprefix $(testdata)/, America/New_York Etc/UTC UTC)
-$(objpfx)tst-timezone.out: $(addprefix $(testdata)/, \
- Europe/Berlin Universal \
- Australia/Melbourne \
- America/New_York \
- America/Sao_Paulo Asia/Tokyo \
- Europe/London)
-$(objpfx)tst-tzset.out: $(addprefix $(testdata)/XT, 1 2 3 4)
-$(objpfx)tst-bz28707.out: $(testdata)/XT5
-
-test-tz-ENV = TZDIR=$(testdata)
-tst-timezone-ENV = TZDIR=$(testdata)
-tst-tzset-ENV = TZDIR=$(testdata)
-tst-bz28707-ENV = TZDIR=$(testdata)
-
-# Note this must come second in the deps list for $(built-program-cmd) to work.
-zic-deps = $(objpfx)zic $(leapseconds) yearistype
-
-$(testdata)/America/New_York: northamerica $(zic-deps)
- $(build-testdata)
-$(testdata)/$(posixrules-file): $(testdata)/America/New_York
- $(make-link); $(evaluate-test)
-$(testdata)/Etc/UTC: etcetera $(zic-deps)
- $(build-testdata)
-# Use a pattern rule to indicate the command produces both targets at once.
-# Two separate targets built separately can collide if in parallel.
-%/UTC %/Universal: simplebackw $(zic-deps) %/Etc/UTC
- $(build-testdata)
- { test -r $(@D)/Universal.test-result \
- && cp $(@D)/Universal.test-result $(@D)/UTC.test-result \
- && sed -i 's/Universal/UTC/' $(@D)/UTC.test-result ; exit 0; }
- { test -r $(@D)/UTC.test-result \
- && cp $(@D)/UTC.test-result $(@D)/Universal.test-result \
- && sed -i 's/UTC/Universal/' $(@D)/Universal.test-result ; exit 0; }
-$(testdata)/%/Berlin $(testdata)/%/London: europe $(zic-deps)
- $(build-testdata)
-$(testdata)/Australia/Melbourne: australasia $(zic-deps)
- $(build-testdata)
-$(testdata)/America/Sao_Paulo: southamerica $(zic-deps)
- $(build-testdata)
-$(testdata)/Asia/Tokyo: asia $(zic-deps)
- $(build-testdata)
-
-$(testdata)/XT%: testdata/XT%
- $(make-target-directory)
- cp $< $@
-
-$(testdata)/XT5: testdata/gen-XT5.sh
- $(make-target-directory)
- $(SHELL) $< > $@.tmp
- mv $@.tmp $@
-
-$(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
- sed -e '/TZDIR=/s|`pwd`|$(zonedir)|' \
- -e '/TZVERSION=/s|see_Makefile|"$(version)"|' \
- -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \
- -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \
- < $< > $@.new
- chmod 555 $@.new
- mv -f $@.new $@
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new/timezone
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36/create-2.36-zoneinfo-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.36/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36/Makefile (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36/Makefile (nonexistent)
@@ -1,73 +0,0 @@
-
-COMPONENT_TARGETS = $(HARDWARE_NOARCH)
-
-
-include ../../../../build-system/constants.mk
-
-
-url = $(DOWNLOAD_SERVER)/sources/GNU/glibc
-
-versions = 2.36
-
-tarballs = $(addsuffix .tar.xz, $(addprefix glibc-, $(versions)))
-
-sha1s = $(addsuffix .sha1sum, $(tarballs))
-
-patches = $(CURDIR)/patches/glibc-2.36-b3736d1a3c-2.36.1.patch
-patches += $(CURDIR)/patches/glibc-2.36-reenable-DT-HASH.patch
-patches += $(CURDIR)/patches/glibc-2.36-en_US-no-am-pm.patch
-patches += $(CURDIR)/patches/glibc-2.36-i18n.patch
-patches += $(CURDIR)/patches/glibc-2.36-locale-no-archive.patch
-patches += $(CURDIR)/patches/glibc-2.36-malloc-hooks.patch
-patches += $(CURDIR)/patches/glibc-2.36-ppc64-interpreter.patch
-patches += $(CURDIR)/patches/glibc-2.36-x86_64-interpreter.patch
-patches += $(CURDIR)/patches/glibc-2.36-zonefile.patch
-patches += $(CURDIR)/patches/glibc-2.36-zoneinfo.patch
-
-.NOTPARALLEL: $(patches)
-
-
-BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
-
-
-include ../../../../build-system/core.mk
-
-
-.PHONY: download_clean
-
-
-$(tarballs):
- @echo -e "\n======= Downloading source tarballs =======" ; \
- for tarball in $(tarballs) ; do \
- echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
- done ; wait
-
-$(sha1s): $(tarballs)
- @for sha in $@ ; do \
- echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
- echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
- touch $$sha ; \
- echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
- sha1sum --check $$sha ; ret="$$?" ; \
- if [ "$$ret" == "1" ]; then \
- echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
- exit 1 ; \
- fi ; \
- done
-
-$(patches): $(sha1s)
- @echo -e "\n======= Create Patches =======\n" ; \
- ( cd create-2.36-b3736d1a3c-2.36.1-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-reenable-DT-HASH-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-en_US-no-am-pm-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-i18n-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-locale-no-archive-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-malloc-hooks-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-ppc64-interpreter-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-x86_64-interpreter-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-zonefile-patch ; ./create.patch.sh ) ; \
- ( cd create-2.36-zoneinfo-patch ; ./create.patch.sh ) ; \
- echo -e "\n"
-
-download_clean:
- @rm -f $(tarballs) $(sha1s) $(patches)
Index: radix-1.9/sources/GNU/glibc/2.36
===================================================================
--- radix-1.9/sources/GNU/glibc/2.36 (revision 34)
+++ radix-1.9/sources/GNU/glibc/2.36 (nonexistent)
Property changes on: radix-1.9/sources/GNU/glibc/2.36
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/GNU/glibc/2.37/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/Makefile (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/Makefile (revision 35)
@@ -0,0 +1,73 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url = $(DOWNLOAD_SERVER)/sources/GNU/glibc
+
+versions = 2.37
+
+tarballs = $(addsuffix .tar.xz, $(addprefix glibc-, $(versions)))
+
+sha1s = $(addsuffix .sha1sum, $(tarballs))
+
+patches = $(CURDIR)/patches/glibc-2.37-CVE-2023-25139.patch
+patches += $(CURDIR)/patches/glibc-2.37-reenable-DT-HASH.patch
+patches += $(CURDIR)/patches/glibc-2.37-en_US-no-am-pm.patch
+patches += $(CURDIR)/patches/glibc-2.37-i18n.patch
+patches += $(CURDIR)/patches/glibc-2.37-locale-no-archive.patch
+patches += $(CURDIR)/patches/glibc-2.37-malloc-hooks.patch
+patches += $(CURDIR)/patches/glibc-2.37-ppc64-interpreter.patch
+patches += $(CURDIR)/patches/glibc-2.37-x86_64-interpreter.patch
+patches += $(CURDIR)/patches/glibc-2.37-zonefile.patch
+patches += $(CURDIR)/patches/glibc-2.37-zoneinfo.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+ @echo -e "\n======= Downloading source tarballs =======" ; \
+ for tarball in $(tarballs) ; do \
+ echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+ done ; wait
+
+$(sha1s): $(tarballs)
+ @for sha in $@ ; do \
+ echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+ echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+ touch $$sha ; \
+ echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+ sha1sum --check $$sha ; ret="$$?" ; \
+ if [ "$$ret" == "1" ]; then \
+ echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+ exit 1 ; \
+ fi ; \
+ done
+
+$(patches): $(sha1s)
+ @echo -e "\n======= Create Patches =======\n" ; \
+ ( cd create-2.37-CVE-2023-25139-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-reenable-DT-HASH-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-en_US-no-am-pm-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-i18n-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-locale-no-archive-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-malloc-hooks-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-ppc64-interpreter-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-x86_64-interpreter-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-zonefile-patch ; ./create.patch.sh ) ; \
+ ( cd create-2.37-zoneinfo-patch ; ./create.patch.sh ) ; \
+ echo -e "\n"
+
+download_clean:
+ @rm -f $(tarballs) $(sha1s) $(patches)
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-CVE-2023-25139.patch
+
+mv glibc-$VERSION-CVE-2023-25139.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/file.list (revision 35)
@@ -0,0 +1,2 @@
+glibc-2.37/stdio-common/Makefile
+glibc-2.37/stdio-common/vfprintf-process-arg.c
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/Makefile (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/Makefile (revision 35)
@@ -0,0 +1,450 @@
+# Copyright (C) 1991-2023 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
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+#
+# Specific makefile for stdio-common.
+#
+subdir := stdio-common
+
+include ../Makeconfig
+
+headers := stdio_ext.h printf.h bits/printf-ldbl.h bits/stdio_lim.h
+
+routines := \
+ _itoa \
+ _itowa \
+ asprintf \
+ ctermid \
+ cuserid \
+ dprintf \
+ flockfile \
+ fprintf \
+ fscanf \
+ ftrylockfile \
+ funlockfile \
+ gentempfd \
+ getline \
+ getw \
+ grouping_iterator \
+ iovfscanf \
+ isoc99_fscanf \
+ isoc99_scanf \
+ isoc99_sscanf \
+ isoc99_vfscanf \
+ isoc99_vscanf \
+ isoc99_vsscanf \
+ itoa-digits \
+ itoa-udigits \
+ itowa-digits \
+ perror \
+ printf \
+ printf-prs \
+ printf_buffer_as_file \
+ printf_buffer_done \
+ printf_buffer_flush \
+ printf_buffer_pad_1 \
+ printf_buffer_putc_1 \
+ printf_buffer_puts_1 \
+ printf_buffer_to_file \
+ printf_buffer_write \
+ printf_fp \
+ printf_fphex \
+ printf_function_invoke \
+ printf_size \
+ psiginfo \
+ psignal \
+ putw \
+ reg-modifier \
+ reg-printf \
+ reg-type \
+ remove \
+ rename \
+ renameat \
+ renameat2 \
+ scanf \
+ snprintf \
+ sprintf \
+ sscanf \
+ tempnam \
+ tempname \
+ tmpfile \
+ tmpfile64 \
+ tmpnam \
+ tmpnam_r \
+ translated_number_width \
+ vfprintf \
+ vfprintf-internal \
+ vfscanf \
+ vfscanf-internal \
+ vfwprintf \
+ vfwprintf-internal \
+ vfwscanf \
+ vfwscanf-internal \
+ vprintf \
+ wprintf_buffer_as_file \
+ wprintf_buffer_done \
+ wprintf_buffer_flush \
+ wprintf_buffer_pad_1 \
+ wprintf_buffer_putc_1 \
+ wprintf_buffer_puts_1 \
+ wprintf_buffer_to_file \
+ wprintf_buffer_write \
+ wprintf_function_invoke \
+ # routines
+
+aux := \
+ errlist \
+ errlist-data \
+ errname \
+ fxprintf \
+ printf-parsemb \
+ printf-parsewc \
+ siglist \
+ # aux
+
+tests := \
+ bug-vfprintf-nargs \
+ bug1 \
+ bug10 \
+ bug11 \
+ bug12 \
+ bug13 \
+ bug14 \
+ bug16 \
+ bug17 \
+ bug18 \
+ bug18a \
+ bug19 \
+ bug19a \
+ bug2 \
+ bug20 \
+ bug21 \
+ bug22 \
+ bug23 \
+ bug23-2 \
+ bug23-3 \
+ bug23-4 \
+ bug24 \
+ bug25 \
+ bug26 \
+ bug3 \
+ bug4 \
+ bug5 \
+ bug6 \
+ bug7 \
+ bug8 \
+ bug9 \
+ errnobug \
+ scanf1 \
+ scanf10 \
+ scanf11 \
+ scanf12 \
+ scanf13 \
+ scanf14 \
+ scanf14a \
+ scanf15 \
+ scanf16 \
+ scanf16a \
+ scanf17 \
+ scanf2 \
+ scanf3 \
+ scanf4 \
+ scanf5 \
+ scanf7 \
+ scanf8 \
+ scanf9 \
+ temptest \
+ test-fseek \
+ test-fwrite \
+ test-popen \
+ test-strerr \
+ test-vfprintf \
+ test_rdwr \
+ tfformat \
+ tiformat \
+ tllformat \
+ tst-bz11319 \
+ tst-bz11319-fortify2 \
+ tst-cookie \
+ tst-dprintf-length \
+ tst-fdopen \
+ tst-ferror \
+ tst-fgets \
+ tst-fileno \
+ tst-fmemopen \
+ tst-fmemopen2 \
+ tst-fmemopen3 \
+ tst-fmemopen4 \
+ tst-fphex \
+ tst-fphex-wide \
+ tst-fseek \
+ tst-fwrite \
+ tst-gets \
+ tst-grouping \
+ tst-grouping2 \
+ tst-grouping3 \
+ tst-long-dbl-fphex \
+ tst-memstream-string \
+ tst-obprintf \
+ tst-perror \
+ tst-popen \
+ tst-popen2 \
+ tst-printf-binary \
+ tst-printf-bz18872 \
+ tst-printf-bz25691 \
+ tst-printf-fp-free \
+ tst-printf-fp-leak \
+ tst-printf-oct \
+ tst-printf-round \
+ tst-printfsz \
+ tst-put-error \
+ tst-renameat2 \
+ tst-rndseek \
+ tst-scanf-round \
+ tst-setvbuf1 \
+ tst-sprintf \
+ tst-sprintf-errno \
+ tst-sprintf2 \
+ tst-sprintf3 \
+ tst-sscanf \
+ tst-swprintf \
+ tst-swscanf \
+ tst-tmpnam \
+ tst-ungetc \
+ tst-unlockedio \
+ tst-vfprintf-mbs-prec \
+ tst-vfprintf-user-type \
+ tst-vfprintf-width-prec \
+ tst-vfprintf-width-prec-alloc \
+ tst-vfprintf-width-i18n \
+ tst-wc-printf \
+ tstdiomisc \
+ tstgetln \
+ tstscanf \
+ xbug \
+ # tests
+
+generated += \
+ errlist-data-aux-shared.S \
+ errlist-data-aux.S \
+ siglist-aux-shared.S \
+ siglist-aux.S \
+ # generated
+
+tests-internal = \
+ tst-grouping_iterator \
+ # tests-internal
+
+test-srcs = tst-unbputc tst-printf tst-printfsz-islongdouble
+
+ifeq ($(run-built-tests),yes)
+tests-special += \
+ $(objpfx)tst-printf-bz18872-mem.out \
+ $(objpfx)tst-printf-bz25691-mem.out \
+ $(objpfx)tst-printf-fp-free-mem.out \
+ $(objpfx)tst-printf-fp-leak-mem.out \
+ $(objpfx)tst-printf.out \
+ $(objpfx)tst-printfsz-islongdouble.out \
+ $(objpfx)tst-setvbuf1-cmp.out \
+ $(objpfx)tst-unbputc.out \
+ $(objpfx)tst-vfprintf-width-prec-mem.out \
+ # tests-special
+
+generated += \
+ tst-printf-bz18872-mem.out \
+ tst-printf-bz18872.c \
+ tst-printf-bz18872.mtrace \
+ tst-printf-bz25691-mem.out \
+ tst-printf-bz25691.mtrace \
+ tst-printf-fp-free-mem.out \
+ tst-printf-fp-free.mtrace \
+ tst-printf-fp-leak-mem.out \
+ tst-printf-fp-leak.mtrace \
+ tst-vfprintf-width-prec-mem.out \
+ tst-vfprintf-width-prec.mtrace \
+ # generated
+endif # $(run-built-tests)
+
+tests-special += $(objpfx)tst-errno-manual.out
+
+include ../Rules
+
+# The errlist.c is built in two phases because compiler might reorder the
+# compat_symbol directive prior the object itself and on binutils older
+# than 2.29 it might generate object sizes different than the expected ones.
+$(objpfx)errlist-data-aux-shared.S: errlist-data-gen.c
+ $(make-target-directory)
+ $(compile-command.c) $(pic-cppflags) $(pic-ccflag) $(no-stack-protector) -S
+
+$(objpfx)errlist-data-aux.S: errlist-data-gen.c
+ $(make-target-directory)
+ $(compile-command.c) $(pie-default) $(no-stack-protector) -S
+
+ifndef no_deps
+-include $(objpfx)errlist-data-aux.S.d $(objpfx)errlist-data-aux-shared.S.d
+endif
+
+$(objpfx)errlist-data.os: $(objpfx)errlist-data-aux-shared.S
+$(addprefix $(objpfx)errlist-data, $(object-suffixes-noshared)): \
+ $(objpfx)errlist-data-aux.S
+
+$(objpfx)siglist-aux-shared.S: siglist-gen.c
+ $(make-target-directory)
+ $(compile-command.c) $(pic-cppflags) $(pic-ccflag) $(no-stack-protector) -S
+
+$(objpfx)siglist-aux.S: siglist-gen.c
+ $(make-target-directory)
+ $(compile-command.c) $(pie-default) $(no-stack-protector) -S
+
+ifndef no_deps
+-include $(objpfx)siglist-aux.S.d $(objpfx)siglist-aux-shared.S.d
+endif
+
+$(objpfx)siglist.os: $(objpfx)siglist-aux-shared.S
+$(addprefix $(objpfx)siglist, $(object-suffixes-noshared)): \
+ $(objpfx)siglist-aux.S
+
+ifeq ($(run-built-tests),yes)
+LOCALES := \
+ de_DE.ISO-8859-1 \
+ de_DE.UTF-8 \
+ en_US.ISO-8859-1 \
+ hi_IN.UTF-8 \
+ ja_JP.EUC-JP \
+ ps_AF.UTF-8 \
+ tg_TJ.UTF-8 \
+ # LOCALES
+include ../gen-locales.mk
+
+$(objpfx)bug14.out: $(gen-locales)
+$(objpfx)scanf13.out: $(gen-locales)
+$(objpfx)test-vfprintf.out: $(gen-locales)
+$(objpfx)tst-grouping.out: $(gen-locales)
+$(objpfx)tst-grouping2.out: $(gen-locales)
+$(objpfx)tst-grouping_iterator.out: $(gen-locales)
+$(objpfx)tst-sprintf.out: $(gen-locales)
+$(objpfx)tst-sscanf.out: $(gen-locales)
+$(objpfx)tst-swprintf.out: $(gen-locales)
+$(objpfx)tst-vfprintf-mbs-prec.out: $(gen-locales)
+$(objpfx)tst-vfprintf-width-i18n.out: $(gen-locales)
+endif
+
+tst-printf-bz18872-ENV = MALLOC_TRACE=$(objpfx)tst-printf-bz18872.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+tst-vfprintf-width-prec-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-vfprintf-width-prec.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+tst-printf-bz25691-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-printf-bz25691.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+tst-printf-fp-free-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-printf-fp-free.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+tst-printf-fp-leak-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+
+$(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
+ $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
+ $(evaluate-test)
+
+$(objpfx)tst-printf.out: tst-printf.sh $(objpfx)tst-printf
+ $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
+ $(evaluate-test)
+
+$(objpfx)tst-printfsz-islongdouble.out: \
+ tst-printfsz-islongdouble.sh $(objpfx)tst-printfsz-islongdouble
+ $(SHELL) $^ '$(test-program-prefix)' $@; \
+ $(evaluate-test)
+
+# We generate this source because it requires a printf invocation with
+# 10K arguments.
+$(objpfx)tst-printf-bz18872.c: tst-printf-bz18872.sh
+ rm -f $@ && $(BASH) $^ > $@.new && mv $@.new $@
+
+$(objpfx)tst-%-mem.out: $(objpfx)tst-%.out
+ $(common-objpfx)malloc/mtrace $(objpfx)tst-$*.mtrace > $@; \
+ $(evaluate-test)
+
+errlist-h = $(firstword $(wildcard $(addsuffix /errlist.h,$(sysdirs) .)))
+
+$(objpfx)tst-errno-manual.out: tst-errno-manual.py \
+ $(errlist-h) \
+ $(..)manual/errno.texi
+ $(PYTHON) tst-errno-manual.py -m $(..)manual/errno.texi \
+ -e $(errlist-h) > $@; \
+ $(evaluate-test)
+
+CFLAGS-vfprintf.c += -Wno-uninitialized
+CFLAGS-vfwprintf.c += -Wno-uninitialized
+
+CFLAGS-tmpfile.c += -fexceptions
+CFLAGS-tmpfile64.c += -fexceptions
+CFLAGS-tempname.c += -fexceptions
+CFLAGS-psignal.c += -fexceptions
+CFLAGS-vprintf.c += -fexceptions
+CFLAGS-cuserid.c += -fexceptions
+
+CFLAGS-vfprintf.c += -fexceptions
+CFLAGS-fprintf.c += -fexceptions
+CFLAGS-printf.c += -fexceptions
+CFLAGS-vfwprintf.c += -fexceptions
+CFLAGS-vfscanf.c += -fexceptions
+CFLAGS-vfwscanf.c += -fexceptions
+CFLAGS-fscanf.c += -fexceptions
+CFLAGS-scanf.c += -fexceptions
+CFLAGS-isoc99_vfscanf.c += -fexceptions
+CFLAGS-isoc99_vscanf.c += -fexceptions
+CFLAGS-isoc99_fscanf.c += -fexceptions
+CFLAGS-isoc99_scanf.c += -fexceptions
+
+CFLAGS-dprintf.c += $(config-cflags-wno-ignored-attributes)
+
+# scanf14a.c and scanf16a.c test a deprecated extension which is no
+# longer visible under most conformance levels; see the source files
+# for more detail.
+CFLAGS-scanf14a.c += -std=gnu89
+CFLAGS-scanf16a.c += -std=gnu89
+
+CFLAGS-bug3.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-bug4.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-bug5.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-test-fseek.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-test-popen.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-test_rdwr.c += -DOBJPFX=\"$(objpfx)\"
+
+# tst-gets.c tests a deprecated function.
+CFLAGS-tst-gets.c += -Wno-deprecated-declarations
+
+# BZ #11319 was first fixed for regular vdprintf, then reopened because
+# the fortified version had the same bug.
+CFLAGS-tst-bz11319-fortify2.c += -D_FORTIFY_SOURCE=2
+
+CFLAGS-tst-memstream-string.c += -fno-builtin-fprintf
+
+CPPFLAGS += $(libio-mtsafe)
+
+$(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
+ $(test-program-cmd) > $@ 2>&1; \
+ $(evaluate-test)
+
+$(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out
+ cmp $^ > $@; \
+ $(evaluate-test)
+
+$(objpfx)tst-printf-round: $(libm)
+$(objpfx)tst-scanf-round: $(libm)
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/tst-grouping3.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/tst-grouping3.c (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/tst-grouping3.c (revision 35)
@@ -0,0 +1,37 @@
+/* Test printf with grouping and padding (bug 23432)
+ Copyright (C) 2023 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <locale.h>
+#include <stdio.h>
+#include <support/check.h>
+#include <support/support.h>
+
+static int
+do_test (void)
+{
+ char buf[80];
+
+ xsetlocale (LC_NUMERIC, "de_DE.UTF-8");
+
+ sprintf (buf, "%+-'13.9d", 1234567);
+ TEST_COMPARE_STRING (buf, "+001.234.567 ");
+
+ return 0;
+}
+
+#include <support/test-driver.c>
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/vfprintf-process-arg.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/vfprintf-process-arg.c (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-CVE-2023-25139-patch/glibc-2.37-new/stdio-common/vfprintf-process-arg.c (revision 35)
@@ -0,0 +1,495 @@
+/* Argument-processing fragment for vfprintf.
+ Copyright (C) 1991-2023 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* This file is included twice from vfprintf-internal.c, for standard
+ and GNU-style positional (%N$) arguments. Before that,
+ process_arg_int etc. macros have to be defined to extract one
+ argument of the appropriate type, in addition to the file-specific
+ macros in vfprintf-internal.c. */
+
+{
+ /* Start real work. We know about all flags and modifiers and
+ now process the wanted format specifier. */
+LABEL (form_percent):
+ /* Write a literal "%". */
+ Xprintf_buffer_putc (buf, L_('%'));
+ break;
+
+LABEL (form_integer):
+ /* Signed decimal integer. */
+ base = 10;
+
+ if (is_longlong)
+ {
+ long long int signed_number = process_arg_long_long_int ();
+ is_negative = signed_number < 0;
+ number.longlong = is_negative ? (- signed_number) : signed_number;
+
+ goto LABEL (longlong_number);
+ }
+ else
+ {
+ long int signed_number;
+ if (is_long_num)
+ signed_number = process_arg_long_int ();
+ else if (is_char)
+ signed_number = (signed char) process_arg_unsigned_int ();
+ else if (!is_short)
+ signed_number = process_arg_int ();
+ else
+ signed_number = (short int) process_arg_unsigned_int ();
+
+ is_negative = signed_number < 0;
+ number.word = is_negative ? (- signed_number) : signed_number;
+
+ goto LABEL (number);
+ }
+ /* NOTREACHED */
+
+LABEL (form_unsigned):
+ /* Unsigned decimal integer. */
+ base = 10;
+ goto LABEL (unsigned_number);
+ /* NOTREACHED */
+
+LABEL (form_octal):
+ /* Unsigned octal integer. */
+ base = 8;
+ goto LABEL (unsigned_number);
+ /* NOTREACHED */
+
+LABEL (form_hexa):
+ /* Unsigned hexadecimal integer. */
+ base = 16;
+ goto LABEL (unsigned_number);
+ /* NOTREACHED */
+
+LABEL (form_binary):
+ /* Unsigned binary integer. */
+ base = 2;
+ goto LABEL (unsigned_number);
+ /* NOTREACHED */
+
+LABEL (unsigned_number): /* Unsigned number of base BASE. */
+
+ /* ISO specifies the `+' and ` ' flags only for signed
+ conversions. */
+ is_negative = 0;
+ showsign = 0;
+ space = 0;
+
+ if (is_longlong)
+ {
+ number.longlong = process_arg_unsigned_long_long_int ();
+
+ LABEL (longlong_number):
+ if (prec < 0)
+ /* Supply a default precision if none was given. */
+ prec = 1;
+ else
+ /* We have to take care for the '0' flag. If a precision
+ is given it must be ignored. */
+ pad = L_(' ');
+
+ /* If the precision is 0 and the number is 0 nothing has to
+ be written for the number, except for the 'o' format in
+ alternate form. */
+ if (prec == 0 && number.longlong == 0)
+ {
+ string = workend;
+ if (base == 8 && alt)
+ *--string = L_('0');
+ }
+ else
+ /* Put the number in WORK. */
+ string = _itoa (number.longlong, workend, base, spec == L_('X'));
+ /* Simplify further test for num != 0. */
+ number.word = number.longlong != 0;
+ }
+ else
+ {
+ if (is_long_num)
+ number.word = process_arg_unsigned_long_int ();
+ else if (is_char)
+ number.word = (unsigned char) process_arg_unsigned_int ();
+ else if (!is_short)
+ number.word = process_arg_unsigned_int ();
+ else
+ number.word = (unsigned short int) process_arg_unsigned_int ();
+
+ LABEL (number):
+ if (prec < 0)
+ /* Supply a default precision if none was given. */
+ prec = 1;
+ else
+ /* We have to take care for the '0' flag. If a precision
+ is given it must be ignored. */
+ pad = L_(' ');
+
+ /* If the precision is 0 and the number is 0 nothing has to
+ be written for the number, except for the 'o' format in
+ alternate form. */
+ if (prec == 0 && number.word == 0)
+ {
+ string = workend;
+ if (base == 8 && alt)
+ *--string = L_('0');
+ }
+ else
+ /* Put the number in WORK. */
+ string = _itoa_word (number.word, workend, base,
+ spec == L_('X'));
+ }
+
+ /* Grouping is also used for outdigits translation. */
+ struct grouping_iterator iter;
+ bool number_slow_path = group || (use_outdigits && base == 10);
+ if (group)
+ __grouping_iterator_init (&iter, LC_NUMERIC, _NL_CURRENT_LOCALE,
+ workend - string);
+ else if (use_outdigits && base == 10)
+ __grouping_iterator_init_none (&iter, workend - string);
+
+ int number_length;
+#ifndef COMPILE_WPRINTF
+ if (use_outdigits && base == 10)
+ number_length = __translated_number_width (_NL_CURRENT_LOCALE,
+ string, workend);
+ else
+ number_length = workend - string;
+ if (group)
+ number_length += iter.separators * strlen (thousands_sep);
+#else
+ number_length = workend - string;
+ /* All wide separators have length 1. */
+ if (group && thousands_sep != L'\0')
+ number_length += iter.separators;
+#endif
+
+ /* The marker comes right before the number, but is not subject
+ to grouping. */
+ bool octal_marker = (prec <= number_length && number.word != 0
+ && alt && base == 8);
+
+ prec = MAX (0, prec - (workend - string));
+
+ if (!left)
+ {
+ width -= number_length + prec;
+
+ if (number.word != 0 && alt && (base == 16 || base == 2))
+ /* Account for 0X, 0x, 0B or 0b hex or binary marker. */
+ width -= 2;
+
+ if (octal_marker)
+ --width;
+
+ if (is_negative || showsign || space)
+ --width;
+
+ if (pad == L_(' '))
+ {
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ width = 0;
+ }
+
+ if (is_negative)
+ Xprintf_buffer_putc (buf, L_('-'));
+ else if (showsign)
+ Xprintf_buffer_putc (buf, L_('+'));
+ else if (space)
+ Xprintf_buffer_putc (buf, L_(' '));
+
+ if (number.word != 0 && alt && (base == 16 || base == 2))
+ {
+ Xprintf_buffer_putc (buf, L_('0'));
+ Xprintf_buffer_putc (buf, spec);
+ }
+
+ width += prec;
+ Xprintf_buffer_pad (buf, L_('0'), width);
+
+ if (octal_marker)
+ Xprintf_buffer_putc (buf, L_('0'));
+
+ if (number_slow_path)
+ group_number (buf, &iter, string, workend, thousands_sep,
+ use_outdigits && base == 10);
+ else
+ Xprintf_buffer_write (buf, string, workend - string);
+
+ break;
+ }
+ else
+ {
+ if (is_negative)
+ {
+ Xprintf_buffer_putc (buf, L_('-'));
+ --width;
+ }
+ else if (showsign)
+ {
+ Xprintf_buffer_putc (buf, L_('+'));
+ --width;
+ }
+ else if (space)
+ {
+ Xprintf_buffer_putc (buf, L_(' '));
+ --width;
+ }
+
+ if (number.word != 0 && alt && (base == 16 || base == 2))
+ {
+ Xprintf_buffer_putc (buf, L_('0'));
+ Xprintf_buffer_putc (buf, spec);
+ width -= 2;
+ }
+
+ if (octal_marker)
+ --width;
+
+ width -= number_length + prec;
+
+ Xprintf_buffer_pad (buf, L_('0'), prec);
+
+ if (octal_marker)
+ Xprintf_buffer_putc (buf, L_('0'));
+
+ if (number_slow_path)
+ group_number (buf, &iter, string, workend, thousands_sep,
+ use_outdigits && base == 10);
+ else
+ Xprintf_buffer_write (buf, string, workend - string);
+
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ break;
+ }
+
+LABEL (form_pointer):
+ /* Generic pointer. */
+ {
+ const void *ptr = process_arg_pointer ();
+ if (ptr != NULL)
+ {
+ /* If the pointer is not NULL, write it as a %#x spec. */
+ base = 16;
+ number.word = (unsigned long int) ptr;
+ is_negative = 0;
+ alt = 1;
+ group = 0;
+ spec = L_('x');
+ goto LABEL (number);
+ }
+ else
+ {
+ /* Write "(nil)" for a nil pointer. */
+ string = (CHAR_T *) L_("(nil)");
+ /* Make sure the full string "(nil)" is printed. */
+ if (prec < 5)
+ prec = 5;
+ /* This is a wide string iff compiling wprintf. */
+ is_long = sizeof (CHAR_T) > 1;
+ goto LABEL (print_string);
+ }
+ }
+ /* NOTREACHED */
+
+LABEL (form_number):
+ if ((mode_flags & PRINTF_FORTIFY) != 0)
+ {
+ if (! readonly_format)
+ {
+ extern int __readonly_area (const void *, size_t)
+ attribute_hidden;
+ readonly_format
+ = __readonly_area (format, ((STR_LEN (format) + 1)
+ * sizeof (CHAR_T)));
+ }
+ if (readonly_format < 0)
+ __libc_fatal ("*** %n in writable segment detected ***\n");
+ }
+ /* Answer the count of characters written. */
+ void *ptrptr = process_arg_pointer ();
+ unsigned int written = Xprintf_buffer_done (buf);
+ if (is_longlong)
+ *(long long int *) ptrptr = written;
+ else if (is_long_num)
+ *(long int *) ptrptr = written;
+ else if (is_char)
+ *(char *) ptrptr = written;
+ else if (!is_short)
+ *(int *) ptrptr = written;
+ else
+ *(short int *) ptrptr = written;
+ break;
+
+LABEL (form_strerror):
+ /* Print description of error ERRNO. */
+ if (alt)
+ string = (CHAR_T *) __get_errname (save_errno);
+ else
+ string = (CHAR_T *) __strerror_r (save_errno, (char *) work_buffer,
+ WORK_BUFFER_SIZE * sizeof (CHAR_T));
+ if (string == NULL)
+ {
+ /* Print as a decimal number. */
+ base = 10;
+ is_negative = save_errno < 0;
+ number.word = save_errno;
+ if (is_negative)
+ number.word = -number.word;
+ goto LABEL (number);
+ }
+ else
+ {
+ is_long = 0; /* This is no wide-char string. */
+ goto LABEL (print_string);
+ }
+
+LABEL (form_character):
+ /* Character. */
+ if (is_long)
+ goto LABEL (form_wcharacter);
+ --width; /* Account for the character itself. */
+ if (!left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+#ifdef COMPILE_WPRINTF
+ __wprintf_buffer_putc (buf, __btowc ((unsigned char) /* Promoted. */
+ process_arg_int ()));
+#else
+ __printf_buffer_putc (buf, (unsigned char) /* Promoted. */
+ process_arg_int ());
+#endif
+ if (left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ break;
+
+LABEL (form_string):
+ {
+ size_t len;
+
+ /* The string argument could in fact be `char *' or `wchar_t *'.
+ But this should not make a difference here. */
+#ifdef COMPILE_WPRINTF
+ string = (CHAR_T *) process_arg_wstring ();
+#else
+ string = (CHAR_T *) process_arg_string ();
+#endif
+ /* Entry point for printing other strings. */
+ LABEL (print_string):
+
+ if (string == NULL)
+ {
+ /* Write "(null)" if there's space. */
+ if (prec == -1 || prec >= (int) array_length (null) - 1)
+ {
+ string = (CHAR_T *) null;
+ len = array_length (null) - 1;
+ }
+ else
+ {
+ string = (CHAR_T *) L"";
+ len = 0;
+ }
+ }
+ else if (!is_long && spec != L_('S'))
+ {
+#ifdef COMPILE_WPRINTF
+ outstring_converted_wide_string (buf, (const char *) string,
+ prec, width, left);
+ /* The padding has already been written. */
+ break;
+#else
+ if (prec != -1)
+ /* Search for the end of the string, but don't search past
+ the length (in bytes) specified by the precision. */
+ len = __strnlen (string, prec);
+ else
+ len = strlen (string);
+#endif
+ }
+ else
+ {
+#ifdef COMPILE_WPRINTF
+ if (prec != -1)
+ /* Search for the end of the string, but don't search past
+ the length specified by the precision. */
+ len = __wcsnlen (string, prec);
+ else
+ len = __wcslen (string);
+#else
+ outstring_converted_wide_string (buf, (const wchar_t *) string,
+ prec, width, left);
+ /* The padding has already been written. */
+ break;
+#endif
+ }
+
+ if ((width -= len) < 0)
+ {
+ Xprintf_buffer_write (buf, string, len);
+ break;
+ }
+
+ if (!left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ Xprintf_buffer_write (buf, string, len);
+ if (left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ }
+ break;
+
+#ifdef COMPILE_WPRINTF
+LABEL (form_wcharacter):
+ {
+ /* Wide character. */
+ --width;
+ if (!left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ Xprintf_buffer_putc (buf, process_arg_wchar_t ());
+ if (left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ }
+ break;
+
+#else /* !COMPILE_WPRINTF */
+LABEL (form_wcharacter):
+ {
+ /* Wide character. */
+ char wcbuf[MB_LEN_MAX];
+ mbstate_t mbstate;
+ size_t len;
+
+ memset (&mbstate, '\0', sizeof (mbstate_t));
+ len = __wcrtomb (wcbuf, process_arg_wchar_t (), &mbstate);
+ if (len == (size_t) -1)
+ {
+ /* Something went wrong during the conversion. Bail out. */
+ __printf_buffer_mark_failed (buf);
+ goto all_done;
+ }
+ width -= len;
+ if (!left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ Xprintf_buffer_write (buf, wcbuf, len);
+ if (left)
+ Xprintf_buffer_pad (buf, L_(' '), width);
+ }
+ break;
+#endif /* !COMPILE_WPRINTF */
+}
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-en_US-no-am-pm.patch
+
+mv glibc-$VERSION-en_US-no-am-pm.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/localedata/locales/en_US
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/glibc-2.37-new/localedata/locales/en_US
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/glibc-2.37-new/localedata/locales/en_US (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-en_US-no-am-pm-patch/glibc-2.37-new/localedata/locales/en_US (revision 35)
@@ -0,0 +1,179 @@
+comment_char %
+escape_char /
+
+% This file is part of the GNU C Library and contains locale data.
+% The Free Software Foundation does not claim any copyright interest
+% in the locale data contained in this file. The foregoing does not
+% affect the license of the GNU C Library as a whole. It does not
+% exempt you from the conditions of the license if your use would
+% otherwise be governed by that license.
+
+% Locale for English locale in the USA
+
+LC_IDENTIFICATION
+title "English locale for the USA"
+source "Free Software Foundation, Inc."
+address "https:////www.gnu.org//software//libc//"
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "American English"
+territory "United States"
+revision "1.0"
+date "2000-06-24"
+
+category "i18n:2012";LC_IDENTIFICATION
+category "i18n:2012";LC_CTYPE
+category "i18n:2012";LC_COLLATE
+category "i18n:2012";LC_TIME
+category "i18n:2012";LC_NUMERIC
+category "i18n:2012";LC_MONETARY
+category "i18n:2012";LC_MESSAGES
+category "i18n:2012";LC_PAPER
+category "i18n:2012";LC_NAME
+category "i18n:2012";LC_ADDRESS
+category "i18n:2012";LC_TELEPHONE
+category "i18n:2012";LC_MEASUREMENT
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "en_GB"
+END LC_CTYPE
+
+LC_COLLATE
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+END LC_COLLATE
+
+LC_MONETARY
+int_curr_symbol "USD "
+currency_symbol "$"
+mon_decimal_point "."
+mon_thousands_sep ","
+mon_grouping 3;3
+positive_sign ""
+negative_sign "-"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 1
+int_p_sep_by_space 1
+p_sep_by_space 0
+n_cs_precedes 1
+int_n_sep_by_space 1
+n_sep_by_space 0
+p_sign_posn 1
+n_sign_posn 1
+%
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "."
+thousands_sep ","
+grouping 3;3
+END LC_NUMERIC
+
+LC_TIME
+abday "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"
+day "Sunday";/
+ "Monday";/
+ "Tuesday";/
+ "Wednesday";/
+ "Thursday";/
+ "Friday";/
+ "Saturday"
+
+week 7;19971130;1
+abmon "Jan";"Feb";/
+ "Mar";"Apr";/
+ "May";"Jun";/
+ "Jul";"Aug";/
+ "Sep";"Oct";/
+ "Nov";"Dec"
+mon "January";/
+ "February";/
+ "March";/
+ "April";/
+ "May";/
+ "June";/
+ "July";/
+ "August";/
+ "September";/
+ "October";/
+ "November";/
+ "December"
+% Appropriate date and time representation (%c)
+d_t_fmt "%a %d %b %Y %r %Z"
+%
+% Appropriate date representation (%x)
+d_fmt "%m//%d//%Y"
+%
+% Appropriate time representation (%X)
+t_fmt "%r"
+%
+% Appropriate AM/PM time representation (%r)
+t_fmt_ampm "%I:%M:%S %p"
+%
+% Appropriate date and time representation for date(1). This is
+% different from d_t_fmt for historical reasons and has been different
+% since 2000 when date_fmt was added as a GNU extension. At the end
+% of 2018 it was adjusted to use 12H time (bug 24046) instead of 24H.
+% [ Slackware editor's note - no thank you, US users
+% of UNIX-like systems expect a 24 hour clock, just
+% like users in the vast majority of other locales. ]
+%date_fmt "%a %d %b %Y %r %Z"
+%
+% Strings for AM/PM
+%
+am_pm "AM";"PM"
+END LC_TIME
+
+LC_MESSAGES
+yesexpr "^[+1yY]"
+noexpr "^[-0nN]"
+yesstr "yes"
+nostr "no"
+END LC_MESSAGES
+
+LC_PAPER
+height 279
+width 216
+END LC_PAPER
+
+LC_NAME
+name_fmt "%d%t%g%t%m%t%f"
+name_miss "Miss."
+name_mr "Mr."
+name_mrs "Mrs."
+name_ms "Ms."
+END LC_NAME
+
+
+LC_ADDRESS
+postal_fmt "%a%N%f%N%d%N%b%N%h %s %e %r%N%T, %S %z%N%c%N"
+country_name "United States"
+country_post "USA"
+country_ab2 "US"
+country_ab3 "USA"
+country_num 840
+country_car "USA"
+country_isbn 0
+lang_name "English"
+lang_ab "en"
+lang_term "eng"
+lang_lib "eng"
+END LC_ADDRESS
+
+LC_TELEPHONE
+tel_int_fmt "+%c (%a) %l"
+tel_dom_fmt "(%a) %l"
+int_select "11"
+int_prefix "1"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+% US customary units.
+measurement 2
+END LC_MEASUREMENT
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-i18n.patch
+
+mv glibc-$VERSION-i18n.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/file.list (revision 35)
@@ -0,0 +1,2 @@
+glibc-2.37/localedata/SUPPORTED
+glibc-2.37/localedata/locales/ru_RU
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/SUPPORTED
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/SUPPORTED (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/SUPPORTED (revision 35)
@@ -0,0 +1,501 @@
+# This file names the currently supported and somewhat tested locales.
+# If you have any additions please file a glibc bug report.
+SUPPORTED-LOCALES=\
+aa_DJ.UTF-8/UTF-8 \
+aa_DJ/ISO-8859-1 \
+aa_ER/UTF-8 \
+aa_ER@saaho/UTF-8 \
+aa_ET/UTF-8 \
+af_ZA.UTF-8/UTF-8 \
+af_ZA/ISO-8859-1 \
+agr_PE/UTF-8 \
+ak_GH/UTF-8 \
+am_ET/UTF-8 \
+an_ES.UTF-8/UTF-8 \
+an_ES/ISO-8859-15 \
+anp_IN/UTF-8 \
+ar_AE.UTF-8/UTF-8 \
+ar_AE/ISO-8859-6 \
+ar_BH.UTF-8/UTF-8 \
+ar_BH/ISO-8859-6 \
+ar_DZ.UTF-8/UTF-8 \
+ar_DZ/ISO-8859-6 \
+ar_EG.UTF-8/UTF-8 \
+ar_EG/ISO-8859-6 \
+ar_IN/UTF-8 \
+ar_IQ.UTF-8/UTF-8 \
+ar_IQ/ISO-8859-6 \
+ar_JO.UTF-8/UTF-8 \
+ar_JO/ISO-8859-6 \
+ar_KW.UTF-8/UTF-8 \
+ar_KW/ISO-8859-6 \
+ar_LB.UTF-8/UTF-8 \
+ar_LB/ISO-8859-6 \
+ar_LY.UTF-8/UTF-8 \
+ar_LY/ISO-8859-6 \
+ar_MA.UTF-8/UTF-8 \
+ar_MA/ISO-8859-6 \
+ar_OM.UTF-8/UTF-8 \
+ar_OM/ISO-8859-6 \
+ar_QA.UTF-8/UTF-8 \
+ar_QA/ISO-8859-6 \
+ar_SA.UTF-8/UTF-8 \
+ar_SA/ISO-8859-6 \
+ar_SD.UTF-8/UTF-8 \
+ar_SD/ISO-8859-6 \
+ar_SS/UTF-8 \
+ar_SY.UTF-8/UTF-8 \
+ar_SY/ISO-8859-6 \
+ar_TN.UTF-8/UTF-8 \
+ar_TN/ISO-8859-6 \
+ar_YE.UTF-8/UTF-8 \
+ar_YE/ISO-8859-6 \
+ayc_PE/UTF-8 \
+az_AZ/UTF-8 \
+az_IR/UTF-8 \
+as_IN/UTF-8 \
+ast_ES.UTF-8/UTF-8 \
+ast_ES/ISO-8859-15 \
+be_BY.UTF-8/UTF-8 \
+be_BY/CP1251 \
+be_BY@latin/UTF-8 \
+bem_ZM/UTF-8 \
+ber_DZ/UTF-8 \
+ber_MA/UTF-8 \
+bg_BG.UTF-8/UTF-8 \
+bg_BG/CP1251 \
+bhb_IN.UTF-8/UTF-8 \
+bho_IN/UTF-8 \
+bho_NP/UTF-8 \
+bi_VU/UTF-8 \
+bn_BD/UTF-8 \
+bn_IN/UTF-8 \
+bo_CN/UTF-8 \
+bo_IN/UTF-8 \
+br_FR.UTF-8/UTF-8 \
+br_FR/ISO-8859-1 \
+br_FR@euro/ISO-8859-15 \
+brx_IN/UTF-8 \
+bs_BA.UTF-8/UTF-8 \
+bs_BA/ISO-8859-2 \
+byn_ER/UTF-8 \
+C.UTF-8/UTF-8 \
+ca_AD.UTF-8/UTF-8 \
+ca_AD/ISO-8859-15 \
+ca_ES.UTF-8/UTF-8 \
+ca_ES/ISO-8859-1 \
+ca_ES@euro/ISO-8859-15 \
+ca_ES@valencia/UTF-8 \
+ca_FR.UTF-8/UTF-8 \
+ca_FR/ISO-8859-15 \
+ca_IT.UTF-8/UTF-8 \
+ca_IT/ISO-8859-15 \
+ce_RU/UTF-8 \
+chr_US/UTF-8 \
+ckb_IQ/UTF-8 \
+cmn_TW/UTF-8 \
+crh_UA/UTF-8 \
+cs_CZ.UTF-8/UTF-8 \
+cs_CZ/ISO-8859-2 \
+csb_PL/UTF-8 \
+cv_RU/UTF-8 \
+cy_GB.UTF-8/UTF-8 \
+cy_GB/ISO-8859-14 \
+da_DK.UTF-8/UTF-8 \
+da_DK/ISO-8859-1 \
+de_AT.UTF-8/UTF-8 \
+de_AT/ISO-8859-1 \
+de_AT@euro/ISO-8859-15 \
+de_BE.UTF-8/UTF-8 \
+de_BE/ISO-8859-1 \
+de_BE@euro/ISO-8859-15 \
+de_CH.UTF-8/UTF-8 \
+de_CH/ISO-8859-1 \
+de_DE.UTF-8/UTF-8 \
+de_DE/ISO-8859-1 \
+de_DE@euro/ISO-8859-15 \
+de_IT.UTF-8/UTF-8 \
+de_IT/ISO-8859-1 \
+de_LI.UTF-8/UTF-8 \
+de_LU.UTF-8/UTF-8 \
+de_LU/ISO-8859-1 \
+de_LU@euro/ISO-8859-15 \
+doi_IN/UTF-8 \
+dsb_DE/UTF-8 \
+dv_MV/UTF-8 \
+dz_BT/UTF-8 \
+el_GR.UTF-8/UTF-8 \
+el_GR/ISO-8859-7 \
+el_GR@euro/ISO-8859-7 \
+el_CY.UTF-8/UTF-8 \
+el_CY/ISO-8859-7 \
+en_AG/UTF-8 \
+en_AU.UTF-8/UTF-8 \
+en_AU/ISO-8859-1 \
+en_BW.UTF-8/UTF-8 \
+en_BW/ISO-8859-1 \
+en_CA.UTF-8/UTF-8 \
+en_CA/ISO-8859-1 \
+en_DK.UTF-8/UTF-8 \
+en_DK/ISO-8859-1 \
+en_GB.UTF-8/UTF-8 \
+en_GB/ISO-8859-1 \
+en_HK.UTF-8/UTF-8 \
+en_HK/ISO-8859-1 \
+en_IE.UTF-8/UTF-8 \
+en_IE/ISO-8859-1 \
+en_IE@euro/ISO-8859-15 \
+en_IL/UTF-8 \
+en_IN/UTF-8 \
+en_NG/UTF-8 \
+en_NZ.UTF-8/UTF-8 \
+en_NZ/ISO-8859-1 \
+en_PH.UTF-8/UTF-8 \
+en_PH/ISO-8859-1 \
+en_RU.KOI8-R/KOI8-R \
+en_RU.UTF-8/UTF-8 \
+en_RU.CP1251/CP1251 \
+en_RU.ISO-8859-5/ISO-8859-5 \
+en_RU/ISO-8859-5 \
+en_SC.UTF-8/UTF-8 \
+en_SG.UTF-8/UTF-8 \
+en_SG/ISO-8859-1 \
+en_US.UTF-8/UTF-8 \
+en_US/ISO-8859-1 \
+en_ZA.UTF-8/UTF-8 \
+en_ZA/ISO-8859-1 \
+en_ZM/UTF-8 \
+en_ZW.UTF-8/UTF-8 \
+en_ZW/ISO-8859-1 \
+eo/UTF-8 \
+es_AR.UTF-8/UTF-8 \
+es_AR/ISO-8859-1 \
+es_BO.UTF-8/UTF-8 \
+es_BO/ISO-8859-1 \
+es_CL.UTF-8/UTF-8 \
+es_CL/ISO-8859-1 \
+es_CO.UTF-8/UTF-8 \
+es_CO/ISO-8859-1 \
+es_CR.UTF-8/UTF-8 \
+es_CR/ISO-8859-1 \
+es_CU/UTF-8 \
+es_DO.UTF-8/UTF-8 \
+es_DO/ISO-8859-1 \
+es_EC.UTF-8/UTF-8 \
+es_EC/ISO-8859-1 \
+es_ES.UTF-8/UTF-8 \
+es_ES/ISO-8859-1 \
+es_ES@euro/ISO-8859-15 \
+es_GT.UTF-8/UTF-8 \
+es_GT/ISO-8859-1 \
+es_HN.UTF-8/UTF-8 \
+es_HN/ISO-8859-1 \
+es_MX.UTF-8/UTF-8 \
+es_MX/ISO-8859-1 \
+es_NI.UTF-8/UTF-8 \
+es_NI/ISO-8859-1 \
+es_PA.UTF-8/UTF-8 \
+es_PA/ISO-8859-1 \
+es_PE.UTF-8/UTF-8 \
+es_PE/ISO-8859-1 \
+es_PR.UTF-8/UTF-8 \
+es_PR/ISO-8859-1 \
+es_PY.UTF-8/UTF-8 \
+es_PY/ISO-8859-1 \
+es_SV.UTF-8/UTF-8 \
+es_SV/ISO-8859-1 \
+es_US.UTF-8/UTF-8 \
+es_US/ISO-8859-1 \
+es_UY.UTF-8/UTF-8 \
+es_UY/ISO-8859-1 \
+es_VE.UTF-8/UTF-8 \
+es_VE/ISO-8859-1 \
+et_EE.UTF-8/UTF-8 \
+et_EE/ISO-8859-1 \
+et_EE.ISO-8859-15/ISO-8859-15 \
+eu_ES.UTF-8/UTF-8 \
+eu_ES/ISO-8859-1 \
+eu_ES@euro/ISO-8859-15 \
+fa_IR/UTF-8 \
+ff_SN/UTF-8 \
+fi_FI.UTF-8/UTF-8 \
+fi_FI/ISO-8859-1 \
+fi_FI@euro/ISO-8859-15 \
+fil_PH/UTF-8 \
+fo_FO.UTF-8/UTF-8 \
+fo_FO/ISO-8859-1 \
+fr_BE.UTF-8/UTF-8 \
+fr_BE/ISO-8859-1 \
+fr_BE@euro/ISO-8859-15 \
+fr_CA.UTF-8/UTF-8 \
+fr_CA/ISO-8859-1 \
+fr_CH.UTF-8/UTF-8 \
+fr_CH/ISO-8859-1 \
+fr_FR.UTF-8/UTF-8 \
+fr_FR/ISO-8859-1 \
+fr_FR@euro/ISO-8859-15 \
+fr_LU.UTF-8/UTF-8 \
+fr_LU/ISO-8859-1 \
+fr_LU@euro/ISO-8859-15 \
+fur_IT/UTF-8 \
+fy_NL/UTF-8 \
+fy_DE/UTF-8 \
+ga_IE.UTF-8/UTF-8 \
+ga_IE/ISO-8859-1 \
+ga_IE@euro/ISO-8859-15 \
+gd_GB.UTF-8/UTF-8 \
+gd_GB/ISO-8859-15 \
+gez_ER/UTF-8 \
+gez_ER@abegede/UTF-8 \
+gez_ET/UTF-8 \
+gez_ET@abegede/UTF-8 \
+gl_ES.UTF-8/UTF-8 \
+gl_ES/ISO-8859-1 \
+gl_ES@euro/ISO-8859-15 \
+gu_IN/UTF-8 \
+gv_GB.UTF-8/UTF-8 \
+gv_GB/ISO-8859-1 \
+ha_NG/UTF-8 \
+hak_TW/UTF-8 \
+he_IL.UTF-8/UTF-8 \
+he_IL/ISO-8859-8 \
+hi_IN/UTF-8 \
+hif_FJ/UTF-8 \
+hne_IN/UTF-8 \
+hr_HR.UTF-8/UTF-8 \
+hr_HR/ISO-8859-2 \
+hsb_DE/ISO-8859-2 \
+hsb_DE.UTF-8/UTF-8 \
+ht_HT/UTF-8 \
+hu_HU.UTF-8/UTF-8 \
+hu_HU/ISO-8859-2 \
+hy_AM/UTF-8 \
+hy_AM.ARMSCII-8/ARMSCII-8 \
+ia_FR/UTF-8 \
+id_ID.UTF-8/UTF-8 \
+id_ID/ISO-8859-1 \
+ig_NG/UTF-8 \
+ik_CA/UTF-8 \
+is_IS.UTF-8/UTF-8 \
+is_IS/ISO-8859-1 \
+it_CH.UTF-8/UTF-8 \
+it_CH/ISO-8859-1 \
+it_IT.UTF-8/UTF-8 \
+it_IT/ISO-8859-1 \
+it_IT@euro/ISO-8859-15 \
+iu_CA/UTF-8 \
+ja_JP.EUC-JP/EUC-JP \
+ja_JP.UTF-8/UTF-8 \
+ka_GE.UTF-8/UTF-8 \
+ka_GE/GEORGIAN-PS \
+kab_DZ/UTF-8 \
+kk_KZ.UTF-8/UTF-8 \
+kk_KZ/PT154 \
+kl_GL.UTF-8/UTF-8 \
+kl_GL/ISO-8859-1 \
+km_KH/UTF-8 \
+kn_IN/UTF-8 \
+ko_KR.EUC-KR/EUC-KR \
+ko_KR.UTF-8/UTF-8 \
+kok_IN/UTF-8 \
+ks_IN/UTF-8 \
+ks_IN@devanagari/UTF-8 \
+ku_TR.UTF-8/UTF-8 \
+ku_TR/ISO-8859-9 \
+kw_GB.UTF-8/UTF-8 \
+kw_GB/ISO-8859-1 \
+ky_KG/UTF-8 \
+lb_LU/UTF-8 \
+lg_UG.UTF-8/UTF-8 \
+lg_UG/ISO-8859-10 \
+li_BE/UTF-8 \
+li_NL/UTF-8 \
+lij_IT/UTF-8 \
+ln_CD/UTF-8 \
+lo_LA/UTF-8 \
+lt_LT.UTF-8/UTF-8 \
+lt_LT/ISO-8859-13 \
+lv_LV.UTF-8/UTF-8 \
+lv_LV/ISO-8859-13 \
+lzh_TW/UTF-8 \
+mag_IN/UTF-8 \
+mai_IN/UTF-8 \
+mai_NP/UTF-8 \
+mfe_MU/UTF-8 \
+mg_MG.UTF-8/UTF-8 \
+mg_MG/ISO-8859-15 \
+mhr_RU/UTF-8 \
+mi_NZ.UTF-8/UTF-8 \
+mi_NZ/ISO-8859-13 \
+miq_NI/UTF-8 \
+mjw_IN/UTF-8 \
+mk_MK.UTF-8/UTF-8 \
+mk_MK/ISO-8859-5 \
+ml_IN/UTF-8 \
+mn_MN/UTF-8 \
+mni_IN/UTF-8 \
+mnw_MM/UTF-8 \
+mr_IN/UTF-8 \
+ms_MY.UTF-8/UTF-8 \
+ms_MY/ISO-8859-1 \
+mt_MT.UTF-8/UTF-8 \
+mt_MT/ISO-8859-3 \
+my_MM/UTF-8 \
+nan_TW/UTF-8 \
+nan_TW@latin/UTF-8 \
+nb_NO.UTF-8/UTF-8 \
+nb_NO/ISO-8859-1 \
+nds_DE/UTF-8 \
+nds_NL/UTF-8 \
+ne_NP/UTF-8 \
+nhn_MX/UTF-8 \
+niu_NU/UTF-8 \
+niu_NZ/UTF-8 \
+nl_AW/UTF-8 \
+nl_BE.UTF-8/UTF-8 \
+nl_BE/ISO-8859-1 \
+nl_BE@euro/ISO-8859-15 \
+nl_NL.UTF-8/UTF-8 \
+nl_NL/ISO-8859-1 \
+nl_NL@euro/ISO-8859-15 \
+nn_NO.UTF-8/UTF-8 \
+nn_NO/ISO-8859-1 \
+nr_ZA/UTF-8 \
+nso_ZA/UTF-8 \
+oc_FR.UTF-8/UTF-8 \
+oc_FR/ISO-8859-1 \
+om_ET/UTF-8 \
+om_KE.UTF-8/UTF-8 \
+om_KE/ISO-8859-1 \
+or_IN/UTF-8 \
+os_RU/UTF-8 \
+pa_IN/UTF-8 \
+pa_PK/UTF-8 \
+pap_AW/UTF-8 \
+pap_CW/UTF-8 \
+pl_PL.UTF-8/UTF-8 \
+pl_PL/ISO-8859-2 \
+ps_AF/UTF-8 \
+pt_BR.UTF-8/UTF-8 \
+pt_BR/ISO-8859-1 \
+pt_PT.UTF-8/UTF-8 \
+pt_PT/ISO-8859-1 \
+pt_PT@euro/ISO-8859-15 \
+quz_PE/UTF-8 \
+raj_IN/UTF-8 \
+rif_MA/UTF-8 \
+ro_RO.UTF-8/UTF-8 \
+ro_RO/ISO-8859-2 \
+ru_RU.KOI8-R/KOI8-R \
+ru_RU.UTF-8/UTF-8 \
+ru_RU.CP1251/CP1251 \
+ru_RU.ISO-8859-5/ISO-8859-5 \
+ru_RU/ISO-8859-5 \
+ru_UA.UTF-8/UTF-8 \
+ru_UA/KOI8-U \
+rw_RW/UTF-8 \
+sa_IN/UTF-8 \
+sah_RU/UTF-8 \
+sat_IN/UTF-8 \
+sc_IT/UTF-8 \
+sd_IN/UTF-8 \
+sd_IN@devanagari/UTF-8 \
+se_NO/UTF-8 \
+sgs_LT/UTF-8 \
+shn_MM/UTF-8 \
+shs_CA/UTF-8 \
+si_LK/UTF-8 \
+sid_ET/UTF-8 \
+sk_SK.UTF-8/UTF-8 \
+sk_SK/ISO-8859-2 \
+sl_SI.UTF-8/UTF-8 \
+sl_SI/ISO-8859-2 \
+sm_WS/UTF-8 \
+so_DJ.UTF-8/UTF-8 \
+so_DJ/ISO-8859-1 \
+so_ET/UTF-8 \
+so_KE.UTF-8/UTF-8 \
+so_KE/ISO-8859-1 \
+so_SO.UTF-8/UTF-8 \
+so_SO/ISO-8859-1 \
+sq_AL.UTF-8/UTF-8 \
+sq_AL/ISO-8859-1 \
+sq_MK/UTF-8 \
+sr_ME/UTF-8 \
+sr_RS/UTF-8 \
+sr_RS@latin/UTF-8 \
+ss_ZA/UTF-8 \
+st_ZA.UTF-8/UTF-8 \
+st_ZA/ISO-8859-1 \
+sv_FI.UTF-8/UTF-8 \
+sv_FI/ISO-8859-1 \
+sv_FI@euro/ISO-8859-15 \
+sv_SE.UTF-8/UTF-8 \
+sv_SE/ISO-8859-1 \
+sw_KE/UTF-8 \
+sw_TZ/UTF-8 \
+syr/UTF-8 \
+szl_PL/UTF-8 \
+ta_IN/UTF-8 \
+ta_LK/UTF-8 \
+tcy_IN.UTF-8/UTF-8 \
+te_IN/UTF-8 \
+tg_TJ.UTF-8/UTF-8 \
+tg_TJ/KOI8-T \
+th_TH.UTF-8/UTF-8 \
+th_TH/TIS-620 \
+the_NP/UTF-8 \
+ti_ER/UTF-8 \
+ti_ET/UTF-8 \
+tig_ER/UTF-8 \
+tk_TM/UTF-8 \
+tl_PH.UTF-8/UTF-8 \
+tl_PH/ISO-8859-1 \
+tn_ZA/UTF-8 \
+to_TO/UTF-8 \
+tpi_PG/UTF-8 \
+tr_CY.UTF-8/UTF-8 \
+tr_CY/ISO-8859-9 \
+tr_TR.UTF-8/UTF-8 \
+tr_TR/ISO-8859-9 \
+ts_ZA/UTF-8 \
+tt_RU/UTF-8 \
+tt_RU@iqtelif/UTF-8 \
+ug_CN/UTF-8 \
+uk_UA.UTF-8/UTF-8 \
+uk_UA/KOI8-U \
+unm_US/UTF-8 \
+ur_IN/UTF-8 \
+ur_PK/UTF-8 \
+uz_UZ.UTF-8/UTF-8 \
+uz_UZ/ISO-8859-1 \
+uz_UZ@cyrillic/UTF-8 \
+ve_ZA/UTF-8 \
+vi_VN/UTF-8 \
+wa_BE/ISO-8859-1 \
+wa_BE@euro/ISO-8859-15 \
+wa_BE.UTF-8/UTF-8 \
+wae_CH/UTF-8 \
+wal_ET/UTF-8 \
+wo_SN/UTF-8 \
+xh_ZA.UTF-8/UTF-8 \
+xh_ZA/ISO-8859-1 \
+yi_US.UTF-8/UTF-8 \
+yi_US/CP1255 \
+yo_NG/UTF-8 \
+yue_HK/UTF-8 \
+yuw_PG/UTF-8 \
+zh_CN.GB18030/GB18030 \
+zh_CN.GBK/GBK \
+zh_CN.UTF-8/UTF-8 \
+zh_CN/GB2312 \
+zh_HK.UTF-8/UTF-8 \
+zh_HK/BIG5-HKSCS \
+zh_SG.UTF-8/UTF-8 \
+zh_SG.GBK/GBK \
+zh_SG/GB2312 \
+zh_TW.EUC-TW/EUC-TW \
+zh_TW.UTF-8/UTF-8 \
+zh_TW/BIG5 \
+zu_ZA.UTF-8/UTF-8 \
+zu_ZA/ISO-8859-1 \
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/locales/en_RU
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/locales/en_RU (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/locales/en_RU (revision 35)
@@ -0,0 +1,167 @@
+comment_char %
+escape_char /
+
+% English Language Locale for Russia
+% Source: RADIX.PRO
+% Address: Russia, 193231, St. Petersburg, Solidarnosty av., 25-1-105
+% Contact: Andrey V.Kosteltsev
+% Email: kosteltsev@gmail.com
+% Tel: +7 (911) 970-91-61
+% Fax: +7 (911) 970-91-61
+% Language: en
+% Territory: RU
+% Revision: 1.0
+% Date: 2012-09-24
+% Application: general
+% Users: general
+% Charset: ISO-8859-5
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+title "English locale for Russia"
+source "RADIX.PRO"
+address "Russia, 193231, St. Petersburg, Solidarnosty av., 25-1-105"
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "English"
+territory "Russia"
+revision "1.0"
+date "2016-07-29"
+%
+category "i18n:2012";LC_IDENTIFICATION
+category "i18n:2012";LC_CTYPE
+category "i18n:2012";LC_COLLATE
+category "i18n:2012";LC_TIME
+category "i18n:2012";LC_NUMERIC
+category "i18n:2012";LC_MONETARY
+category "i18n:2012";LC_MESSAGES
+category "i18n:2012";LC_PAPER
+category "i18n:2012";LC_NAME
+category "i18n:2012";LC_ADDRESS
+category "i18n:2012";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_COLLATE
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+END LC_COLLATE
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+include "translit_combining";""
+translit_end
+END LC_CTYPE
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+yesstr "<U0059><U0065><U0073>"
+nostr "<U004E><U006F>"
+END LC_MESSAGES
+
+LC_MONETARY
+int_curr_symbol "<U0052><U0055><U0042><U0020>"
+currency_symbol "<U0072><U0075><U0062>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U00A0>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 1
+n_cs_precedes 0
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "<U002E>"
+thousands_sep "<U00A0>"
+grouping 3;3
+END LC_NUMERIC
+
+LC_TIME
+abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
+ "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
+ "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
+ "<U0053><U0061><U0074>"
+day "<U0053><U0075><U006E><U0064><U0061><U0079>";/
+ "<U004D><U006F><U006E><U0064><U0061><U0079>";/
+ "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
+ "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
+ "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
+ "<U0046><U0072><U0069><U0064><U0061><U0079>";/
+ "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
+ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
+ "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
+ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
+ "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
+ "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
+mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
+ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
+ "<U004D><U0061><U0072><U0063><U0068>";/
+ "<U0041><U0070><U0072><U0069><U006C>";/
+ "<U004D><U0061><U0079>";/
+ "<U004A><U0075><U006E><U0065>";/
+ "<U004A><U0075><U006C><U0079>";/
+ "<U0041><U0075><U0067><U0075><U0073><U0074>";/
+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
+ "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0054>"
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+t_fmt "<U0025><U0054>"
+am_pm "";""
+t_fmt_ampm ""
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+week 7;19971130;4
+first_weekday 2
+first_workday 2
+END LC_TIME
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0028><U0025><U0061><U0029>/
+<U0020><U0025><U006C>"
+int_prefix "<U0037>"
+int_select "<U0030><U007E><U0031><U0030>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+% 1 for Metric system, 2 for US
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+country_ab2 "<U0052><U0055>"
+country_ab3 "<U0052><U0055><U0053>"
+country_num 643
+END LC_ADDRESS
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/locales/ru_RU
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/locales/ru_RU (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-i18n-patch/glibc-2.37-new/localedata/locales/ru_RU (revision 35)
@@ -0,0 +1,208 @@
+comment_char %
+escape_char /
+
+% This file is part of the GNU C Library and contains locale data.
+% The Free Software Foundation does not claim any copyright interest
+% in the locale data contained in this file. The foregoing does not
+% affect the license of the GNU C Library as a whole. It does not
+% exempt you from the conditions of the license if your use would
+% otherwise be governed by that license.
+
+% Russian Language Locale for Russia
+% Source: RAP
+% Address: Sankt Jo//rgens Alle 8
+% DK-1615 Ko//benhavn V, Danmark
+% Contact: Keld Simonsen
+% Email: Keld.Simonsen@dkuug.dk
+% Tel: +45 - 31226543
+% Fax: +45 - 33256543
+% Language: ru
+% Territory: RU
+% Revision: 4.3
+% Date: 1996-10-15
+% Application: general
+% Users: general
+
+LC_IDENTIFICATION
+title "Russian locale for Russia"
+source "RAP"
+address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark"
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "Russian"
+territory "Russia"
+revision "1.0"
+date "2000-06-29"
+
+category "i18n:2012";LC_IDENTIFICATION
+category "i18n:2012";LC_CTYPE
+category "i18n:2012";LC_COLLATE
+category "i18n:2012";LC_TIME
+category "i18n:2012";LC_NUMERIC
+category "i18n:2012";LC_MONETARY
+category "i18n:2012";LC_MESSAGES
+category "i18n:2012";LC_PAPER
+category "i18n:2012";LC_NAME
+category "i18n:2012";LC_ADDRESS
+category "i18n:2012";LC_TELEPHONE
+category "i18n:2012";LC_MEASUREMENT
+END LC_IDENTIFICATION
+
+LC_COLLATE
+% CLDR collation rules for Russian:
+% (see: https://unicode.org/cldr/trac/browser/trunk/common/collation/ru.xml)
+%
+% <collation type="standard">
+% <cr><![CDATA[
+% [reorder Cyrl]
+% # The root collation already sorts й/Й as a base letter.
+% ]]></cr>
+% </collation>
+%
+copy "iso14651_t1"
+END LC_COLLATE
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+include "translit_combining";""
+translit_end
+END LC_CTYPE
+
+LC_MESSAGES
+yesexpr "^[+1yY<U0414><U0434>]"
+noexpr "^[-0nN<U041D><U043D>]"
+yesstr "<U0434><U0430>"
+nostr "<U043D><U0435><U0442>"
+END LC_MESSAGES
+
+LC_MONETARY
+int_curr_symbol "RUB "
+currency_symbol "<U20BD>"
+mon_decimal_point "."
+mon_thousands_sep "<U202F>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "-"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 1
+n_cs_precedes 0
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point ","
+thousands_sep "<U202F>"
+grouping 3;3
+END LC_NUMERIC
+
+LC_TIME
+day "<U0412><U043E><U0441><U043A><U0440><U0435><U0441><U0435><U043D><U044C><U0435>";/
+ "<U041F><U043E><U043D><U0435><U0434><U0435><U043B><U044C><U043D><U0438><U043A>";/
+ "<U0412><U0442><U043E><U0440><U043D><U0438><U043A>";/
+ "<U0421><U0440><U0435><U0434><U0430>";/
+ "<U0427><U0435><U0442><U0432><U0435><U0440><U0433>";/
+ "<U041F><U044F><U0442><U043D><U0438><U0446><U0430>";/
+ "<U0421><U0443><U0431><U0431><U043E><U0442><U0430>"
+abday "<U0412><U0441>";/
+ "<U041F><U043D>";/
+ "<U0412><U0442>";/
+ "<U0421><U0440>";/
+ "<U0427><U0442>";/
+ "<U041F><U0442>";/
+ "<U0421><U0431>"
+alt_mon "<U042F><U043D><U0432><U0430><U0440><U044C>";/
+ "<U0424><U0435><U0432><U0440><U0430><U043B><U044C>";/
+ "<U041C><U0430><U0440><U0442>";/
+ "<U0410><U043F><U0440><U0435><U043B><U044C>";/
+ "<U041C><U0430><U0439>";/
+ "<U0418><U044E><U043D><U044C>";/
+ "<U0418><U044E><U043B><U044C>";/
+ "<U0410><U0432><U0433><U0443><U0441><U0442>";/
+ "<U0421><U0435><U043D><U0442><U044F><U0431><U0440><U044C>";/
+ "<U041E><U043A><U0442><U044F><U0431><U0440><U044C>";/
+ "<U041D><U043E><U044F><U0431><U0440><U044C>";/
+ "<U0414><U0435><U043A><U0430><U0431><U0440><U044C>"
+mon "<U044F><U043D><U0432><U0430><U0440><U044F>";/
+ "<U0444><U0435><U0432><U0440><U0430><U043B><U044F>";/
+ "<U043C><U0430><U0440><U0442><U0430>";/
+ "<U0430><U043F><U0440><U0435><U043B><U044F>";/
+ "<U043C><U0430><U044F>";/
+ "<U0438><U044E><U043D><U044F>";/
+ "<U0438><U044E><U043B><U044F>";/
+ "<U0430><U0432><U0433><U0443><U0441><U0442><U0430>";/
+ "<U0441><U0435><U043D><U0442><U044F><U0431><U0440><U044F>";/
+ "<U043E><U043A><U0442><U044F><U0431><U0440><U044F>";/
+ "<U043D><U043E><U044F><U0431><U0440><U044F>";/
+ "<U0434><U0435><U043A><U0430><U0431><U0440><U044F>"
+ab_alt_mon "<U044F><U043D><U0432>";/
+ "<U0444><U0435><U0432>";/
+ "<U043C><U0430><U0440>";/
+ "<U0430><U043F><U0440>";/
+ "<U043C><U0430><U0439>";/
+ "<U0438><U044E><U043D>";/
+ "<U0438><U044E><U043B>";/
+ "<U0430><U0432><U0433>";/
+ "<U0441><U0435><U043D>";/
+ "<U043E><U043A><U0442>";/
+ "<U043D><U043E><U044F>";/
+ "<U0434><U0435><U043A>"
+abmon "<U044F><U043D><U0432>";/
+ "<U0444><U0435><U0432>";/
+ "<U043C><U0430><U0440>";/
+ "<U0430><U043F><U0440>";/
+ "<U043C><U0430><U044F>";/
+ "<U0438><U044E><U043D>";/
+ "<U0438><U044E><U043B>";/
+ "<U0430><U0432><U0433>";/
+ "<U0441><U0435><U043D>";/
+ "<U043E><U043A><U0442>";/
+ "<U043D><U043E><U044F>";/
+ "<U0434><U0435><U043A>"
+d_t_fmt "%a %d %b %Y %T"
+date_fmt "%a %d %b %Y %T %Z"
+d_fmt "%d.%m.%Y"
+t_fmt "%T"
+am_pm "";""
+t_fmt_ampm ""
+week 7;19971130;1
+first_weekday 2
+END LC_TIME
+
+LC_PAPER
+copy "i18n"
+END LC_PAPER
+
+LC_TELEPHONE
+tel_int_fmt "+%c %a %l"
+int_prefix "7"
+int_select "0~10"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "i18n"
+END LC_MEASUREMENT
+
+LC_NAME
+name_fmt "%d%t%g%t%m%t%f"
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt "%f%N%a%N%d%N%b%N%s %h %e %r%N%z %T%N%c%N"
+country_name "<U0420><U043E><U0441><U0441><U0438><U044F>"
+country_ab2 "RU"
+country_ab3 "RUS"
+country_num 643
+country_car "RUS"
+lang_name "<U0440><U0443><U0441><U0441><U043A><U0438><U0439>"
+lang_ab "ru"
+lang_term "rus"
+lang_lib "rus"
+END LC_ADDRESS
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-locale-no-archive.patch
+
+mv glibc-$VERSION-locale-no-archive.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/localedata/Makefile
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/glibc-2.37-new/localedata/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/glibc-2.37-new/localedata/Makefile (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-locale-no-archive-patch/glibc-2.37-new/localedata/Makefile (revision 35)
@@ -0,0 +1,496 @@
+# Copyright (C) 1996-2023 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
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+# Makefile for installing locale data source files.
+
+subdir := localedata
+
+include ../Makeconfig
+
+# List with all available character set descriptions.
+charmaps := $(wildcard charmaps/[A-I]*) $(wildcard charmaps/[J-Z]*)
+
+# List with all available character set descriptions.
+locales := $(wildcard locales/*)
+
+
+subdir-dirs = tests-mbwc
+vpath %.c tests-mbwc
+vpath %.h tests-mbwc
+
+
+test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \
+ tst-ctype tst-langinfo-newlocale tst-langinfo-setlocale \
+ tst-langinfo-newlocale-static tst-langinfo-setlocale-static \
+ tst-numeric
+# List of test input files (list sorted alphabetically):
+test-input := \
+ am_ET.UTF-8 \
+ az_AZ.UTF-8 \
+ be_BY.UTF-8 \
+ ber_DZ.UTF-8 \
+ ber_MA.UTF-8 \
+ bg_BG.UTF-8 \
+ br_FR.UTF-8 \
+ bs_BA.UTF-8 \
+ C.UTF-8 \
+ ckb_IQ.UTF-8 \
+ cmn_TW.UTF-8 \
+ crh_UA.UTF-8 \
+ cs_CZ.UTF-8 \
+ csb_PL.UTF-8 \
+ cv_RU.UTF-8 \
+ cy_GB.UTF-8 \
+ da_DK.ISO-8859-1 \
+ de_DE.ISO-8859-1 \
+ dsb_DE.UTF-8 \
+ dz_BT.UTF-8 \
+ en_US.ISO-8859-1 \
+ en_US.UTF-8 \
+ eo.UTF-8 \
+ es_ES.UTF-8 \
+ et_EE.UTF-8 \
+ fa_IR.UTF-8 \
+ fi_FI.UTF-8 \
+ fil_PH.UTF-8 \
+ fr_CA.UTF-8 \
+ fr_FR.UTF-8 \
+ fur_IT.UTF-8 \
+ gez_ER.UTF-8@abegede \
+ ha_NG.UTF-8 \
+ hr_HR.ISO-8859-2 \
+ hr_HR.UTF-8 \
+ hsb_DE.UTF-8 \
+ hu_HU.UTF-8 \
+ ig_NG.UTF-8 \
+ ik_CA.UTF-8 \
+ is_IS.UTF-8 \
+ kk_KZ.UTF-8 \
+ ku_TR.UTF-8 \
+ ky_KG.UTF-8 \
+ ln_CD.UTF-8 \
+ lt_LT.UTF-8 \
+ lv_LV.UTF-8 \
+ mi_NZ.UTF-8 \
+ ml_IN.UTF-8 \
+ mn_MN.UTF-8 \
+ mr_IN.UTF-8 \
+ mt_MT.UTF-8 \
+ nan_TW.UTF-8@latin \
+ nb_NO.UTF-8 \
+ om_KE.UTF-8 \
+ or_IN.UTF-8 \
+ os_RU.UTF-8 \
+ pl_PL.UTF-8 \
+ ps_AF.UTF-8 \
+ rif_MA.UTF-8 \
+ ro_RO.UTF-8 \
+ ru_RU.UTF-8 \
+ sah_RU.UTF-8 \
+ sc_IT.UTF-8 \
+ se_NO.UTF-8 \
+ si_LK.UTF-8 \
+ sq_AL.UTF-8 \
+ sr_RS.UTF-8 \
+ sv_SE.ISO-8859-1 \
+ sv_SE.UTF-8 \
+ syr.UTF-8 \
+ szl_PL.UTF-8 \
+ tg_TJ.UTF-8 \
+ tk_TM.UTF-8 \
+ tr_TR.UTF-8 \
+ tt_RU.UTF-8 \
+ tt_RU.UTF-8@iqtelif \
+ ug_CN.UTF-8 \
+ uk_UA.UTF-8 \
+ uz_UZ.UTF-8 \
+ vi_VN.UTF-8 \
+ yi_US.UTF-8 \
+ yo_NG.UTF-8 \
+ zh_CN.UTF-8 \
+ $(NULL)
+
+test-input-data = $(addsuffix .in, $(test-input))
+test-output := $(foreach s, .out .xout, \
+ $(addsuffix $s, $(basename $(test-input))))
+ld-test-names := test1 test2 test3 test4 test5 test6 test7
+ld-test-srcs := $(addprefix tests/,$(addsuffix .cm,$(ld-test-names)) \
+ $(addsuffix .def,$(ld-test-names)) \
+ $(addsuffix .ds,test5 test6) \
+ test6.c trans.def)
+
+fmon-tests = n01y12 n02n40 n10y31 n11y41 n12y11 n20n32 n30y20 n41n00 \
+ y01y10 y02n22 y22n42 y30y21 y32n31 y40y00 y42n21
+
+generated += $(test-input) $(test-output) sort-test.out tst-locale.out \
+ tst-leaks.mtrace mtrace-tst-leaks.out
+generated-dirs += $(ld-test-names) tt_TT de_DE.437 \
+ $(addprefix tstfmon_,$(fmon-tests)) \
+
+ifeq ($(run-built-tests),yes)
+locale_test_suite := tst_iswalnum tst_iswalpha tst_iswcntrl \
+ tst_iswctype tst_iswdigit tst_iswgraph \
+ tst_iswlower tst_iswprint tst_iswpunct \
+ tst_iswspace tst_iswupper tst_iswxdigit tst_mblen \
+ tst_mbrlen tst_mbrtowc tst_mbsrtowcs tst_mbstowcs \
+ tst_mbtowc tst_strcoll tst_strfmon tst_strxfrm \
+ tst_swscanf tst_towctrans tst_towlower \
+ tst_towupper tst_wcrtomb tst_wcscat tst_wcschr \
+ tst_wcscmp tst_wcscoll tst_wcscpy tst_wcscspn \
+ tst_wcslen tst_wcsncat tst_wcsncmp tst_wcsncpy \
+ tst_wcspbrk tst_wcsrtombs tst_wcsspn tst_wcsstr \
+ tst_wcstod tst_wcstok tst_wcstombs tst_wcswidth \
+ tst_wcsxfrm tst_wctob tst_wctomb tst_wctrans \
+ tst_wctype tst_wcwidth
+
+tests = \
+ $(locale_test_suite) \
+ bug-iconv-trans \
+ bug-setlocale1 \
+ bug-usesetlocale \
+ tst-c-utf8-consistency \
+ tst-digits \
+ tst-iconv-math-trans \
+ tst-leaks \
+ tst-mbswcs1 \
+ tst-mbswcs2 \
+ tst-mbswcs3 \
+ tst-mbswcs4 \
+ tst-mbswcs5 \
+ tst-mbswcs6 \
+ tst-setlocale \
+ tst-setlocale2 \
+ tst-setlocale3 \
+ tst-sscanf \
+ tst-strfmon1 \
+ tst-wctype \
+ tst-xlocale1 \
+ tst-xlocale2 \
+ # tests
+
+tests-static = bug-setlocale1-static
+tests += $(tests-static)
+ifeq (yes,$(build-shared))
+ifneq (no,$(PERL))
+tests-special += $(objpfx)mtrace-tst-leaks.out
+endif
+endif
+endif
+tests-container = \
+ tst-localedef-hardlinks
+
+# Files to install.
+ifeq ($(INSTALL_UNCOMPRESSED),yes)
+# This option is for testing inside the testroot container, as the
+# container does not include a working gunzip program.
+install-others := $(addprefix $(inst_i18ndir)/, \
+ $(charmaps) \
+ $(locales))
+else
+install-others := $(addprefix $(inst_i18ndir)/, \
+ $(addsuffix .gz, $(charmaps)) \
+ $(locales))
+endif
+
+tests: $(objdir)/iconvdata/gconv-modules
+
+tests-static += tst-langinfo-newlocale-static tst-langinfo-setlocale-static
+
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)sort-test.out $(objpfx)tst-fmon.out \
+ $(objpfx)tst-locale.out $(objpfx)tst-rpmatch.out \
+ $(objpfx)tst-trans.out $(objpfx)tst-ctype.out \
+ $(objpfx)tst-langinfo-newlocale.out \
+ $(objpfx)tst-langinfo-setlocale.out \
+ $(objpfx)tst-langinfo-newlocale-static.out \
+ $(objpfx)tst-langinfo-setlocale-static.out \
+ $(objpfx)tst-numeric.out
+# We have to generate locales (list sorted alphabetically)
+LOCALES := \
+ am_ET.UTF-8 \
+ az_AZ.UTF-8 \
+ be_BY.UTF-8 \
+ ber_DZ.UTF-8 \
+ ber_MA.UTF-8 \
+ bg_BG.UTF-8 \
+ br_FR.UTF-8 \
+ bs_BA.UTF-8 \
+ C.UTF-8 \
+ ckb_IQ.UTF-8 \
+ cmn_TW.UTF-8 \
+ crh_UA.UTF-8 \
+ cs_CZ.UTF-8 \
+ csb_PL.UTF-8 \
+ cv_RU.UTF-8 \
+ cy_GB.UTF-8 \
+ da_DK.ISO-8859-1 \
+ de_DE.ISO-8859-1 \
+ de_DE.UTF-8 \
+ dsb_DE.UTF-8 \
+ dz_BT.UTF-8 \
+ en_GB.UTF-8 \
+ en_US.ANSI_X3.4-1968 \
+ en_US.ISO-8859-1\
+ en_US.UTF-8 \
+ eo.UTF-8 \
+ es_ES.UTF-8 \
+ et_EE.UTF-8 \
+ fa_IR.UTF-8 \
+ fi_FI.UTF-8 \
+ fil_PH.UTF-8 \
+ fr_CA.UTF-8 \
+ fr_FR.ISO-8859-1 \
+ fr_FR.UTF-8 \
+ fur_IT.UTF-8 \
+ gez_ER.UTF-8@abegede \
+ ha_NG.UTF-8 \
+ hr_HR.ISO-8859-2 \
+ hr_HR.UTF-8 \
+ hsb_DE.UTF-8 \
+ hu_HU.UTF-8 \
+ ig_NG.UTF-8 \
+ ik_CA.UTF-8 \
+ is_IS.UTF-8 \
+ ja_JP.EUC-JP \
+ ja_JP.SJIS \
+ ja_JP.UTF-8 \
+ kk_KZ.UTF-8 \
+ ku_TR.UTF-8 \
+ ky_KG.UTF-8 \
+ ln_CD.UTF-8 \
+ lt_LT.UTF-8 \
+ lv_LV.UTF-8 \
+ mi_NZ.UTF-8 \
+ ml_IN.UTF-8 \
+ mn_MN.UTF-8 \
+ mr_IN.UTF-8 \
+ mt_MT.UTF-8 \
+ nan_TW.UTF-8@latin \
+ nb_NO.ISO-8859-1 \
+ nb_NO.UTF-8 \
+ nl_NL.UTF-8 \
+ nn_NO.ISO-8859-1 \
+ om_KE.UTF-8 \
+ or_IN.UTF-8 \
+ os_RU.UTF-8 \
+ pl_PL.UTF-8 \
+ ps_AF.UTF-8 \
+ rif_MA.UTF-8 \
+ ro_RO.UTF-8 \
+ ru_RU.UTF-8 \
+ sah_RU.UTF-8 \
+ sc_IT.UTF-8 \
+ se_NO.UTF-8 \
+ si_LK.UTF-8 \
+ sq_AL.UTF-8 \
+ sr_RS.UTF-8 \
+ sv_SE.ISO-8859-1 \
+ sv_SE.UTF-8 \
+ syr.UTF-8 \
+ szl_PL.UTF-8 \
+ tg_TJ.UTF-8 \
+ tk_TM.UTF-8 \
+ tr_TR.ISO-8859-9 \
+ tr_TR.UTF-8 \
+ tt_RU.UTF-8 \
+ tt_RU.UTF-8@iqtelif \
+ ug_CN.UTF-8 \
+ uk_UA.UTF-8 \
+ uz_UZ.UTF-8 \
+ vi_VN.UTF-8 \
+ yi_US.UTF-8 \
+ yo_NG.UTF-8 \
+ zh_CN.UTF-8 \
+ zh_TW.EUC-TW \
+ $(NULL)
+
+include ../gen-locales.mk
+
+$(objpfx)tst-iconv-math-trans.out: $(gen-locales)
+endif
+
+include ../Rules
+
+ifeq ($(INSTALL_UNCOMPRESSED),yes)
+# Install the charmap files as-is. This option is for testing inside
+# the testroot container, as the container does not include a working
+# gunzip program.
+$(inst_i18ndir)/charmaps/%: charmaps/% $(+force)
+ $(make-target-directory)
+ rm -f $@
+ $(INSTALL_DATA) $< $@
+else
+# Install the charmap files in gzipped format.
+$(inst_i18ndir)/charmaps/%.gz: charmaps/% $(+force)
+ $(make-target-directory)
+ rm -f $(@:.gz=) $@
+ $(INSTALL_DATA) $< $(@:.gz=)
+ gzip -9n $(@:.gz=)
+endif
+
+# Install the locale source files in the appropriate directory.
+$(inst_i18ndir)/locales/%: locales/% $(+force); $(do-install)
+
+ifeq ($(run-built-tests),yes)
+generated-dirs += $(LOCALES)
+
+$(addsuffix .out,$(addprefix $(objpfx),$(tests))): %: \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+
+$(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
+ $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
+ '$(run-program-env)' '$(test-program-prefix-after-env)' \
+ $(test-input) \
+ > $@; \
+ $(evaluate-test)
+$(objpfx)tst-fmon.out: tst-fmon.sh $(objpfx)tst-fmon tst-fmon.data \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(run-program-prefix-before-env)' \
+ '$(run-program-env)' '$(run-program-prefix-after-env)' \
+ '$(test-program-prefix)' tst-fmon.data \
+ > $@; \
+ $(evaluate-test)
+$(objpfx)tst-numeric.out: tst-numeric.sh $(objpfx)tst-numeric tst-numeric.data \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' tst-numeric.data \
+ > $@; \
+ $(evaluate-test)
+$(objpfx)tst-locale.out: tst-locale.sh $(common-objpfx)locale/localedef \
+ $(ld-test-srcs) $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(built-program-cmd-before-env)' \
+ '$(run-program-env)' '$(built-program-cmd-after-env)' > $@; \
+ $(evaluate-test)
+$(objpfx)tst-rpmatch.out: tst-rpmatch.sh $(objpfx)tst-rpmatch \
+ $(objpfx)tst-fmon.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
+ $(evaluate-test)
+$(objpfx)tst-trans.out: tst-trans.sh $(objpfx)tst-trans \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(run-program-prefix-before-env)' \
+ '$(run-program-env)' '$(run-program-prefix-after-env)' \
+ '$(test-program-prefix-before-env)' \
+ '$(test-program-prefix-after-env)'; \
+ $(evaluate-test)
+$(objpfx)tst-ctype.out: tst-ctype.sh $(objpfx)tst-ctype \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
+ '$(run-program-env)' '$(test-program-cmd-after-env)'; \
+ $(evaluate-test)
+$(objpfx)tst-langinfo-newlocale.out: tst-langinfo.sh \
+ $(objpfx)tst-langinfo-newlocale \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
+ '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
+ $(evaluate-test)
+$(objpfx)tst-langinfo-newlocale-static.out: tst-langinfo.sh \
+ $(objpfx)tst-langinfo-newlocale-static \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
+ '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
+ $(evaluate-test)
+# Static use of newlocale is known not to work. See Bug 23164.
+test-xfail-tst-langinfo-newlocale-static = yes
+
+$(objpfx)tst-langinfo-setlocale.out: tst-langinfo.sh \
+ $(objpfx)tst-langinfo-setlocale \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
+ '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
+ $(evaluate-test)
+$(objpfx)tst-langinfo-setlocale-static.out: tst-langinfo.sh \
+ $(objpfx)tst-langinfo-setlocale-static \
+ $(objpfx)sort-test.out \
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) $< $(common-objpfx) '$(test-program-cmd-before-env)' \
+ '$(run-program-env)' '$(test-program-cmd-after-env)' > $@; \
+ $(evaluate-test)
+
+$(objpfx)tst-digits.out: $(objpfx)tst-locale.out
+$(objpfx)tst-mbswcs6.out: $(addprefix $(objpfx),$(CTYPE_FILES))
+endif
+
+include SUPPORTED
+
+INSTALL-SUPPORTED-LOCALE-ARCHIVE=$(addprefix install-archive-, $(SUPPORTED-LOCALES))
+INSTALL-SUPPORTED-LOCALE-FILES=$(addprefix install-files-, $(SUPPORTED-LOCALES))
+
+# Sometimes the whole collection of locale files should be installed.
+LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
+$(rtld-prefix) $(common-objpfx)locale/localedef
+install-locales: install-locale-archive
+
+# Create and install the locale-archive file.
+install-locale-archive: $(INSTALL-SUPPORTED-LOCALE-ARCHIVE)
+# Create and install the locales individually (no archive).
+install-locale-files: $(INSTALL-SUPPORTED-LOCALE-FILES)
+
+install-locales-dir:
+ $(..)./scripts/mkinstalldirs $(inst_complocaledir)
+
+# The SHIFT_JIS and SHIFT_JISX0213 character maps are not ASCII compatible,
+# therefore we have to use --no-warnings=ascii to disable the ASCII check.
+# See localedata/gen-locale.sh for the same logic.
+define build-one-locale
+ locale=`echo $@ | sed -e 's/^install-[a-z]*-//'`; \
+ charset=`echo $$locale | sed -e 's,.*/,,'`; \
+ locale=`echo $$locale | sed -e 's,/[^/]*,,'`; \
+ if [ "$$charset" = 'SHIFT_JIS' ] \
+ || [ "$$charset" = 'SHIFT_JISX0213' ]; then \
+ flags="$$flags --no-warnings=ascii"; \
+ fi; \
+ echo -n `echo $$locale | sed 's/\([^.\@]*\).*/\1/'`; \
+ echo -n ".$$charset"; \
+ echo -n `echo $$locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \
+ echo -n '...'; \
+ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
+ $(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \
+ --no-archive \
+ -i locales/$$input -f charmaps/$$charset \
+ $(addprefix --prefix=,$(install_root)) $$locale \
+ && echo ' done';
+endef
+
+$(INSTALL-SUPPORTED-LOCALE-ARCHIVE): install-locales-dir
+ @flags=""; \
+ $(build-one-locale)
+
+$(INSTALL-SUPPORTED-LOCALE-FILES): install-locales-dir
+ @flags="--no-archive --no-hard-links"; \
+ $(build-one-locale)
+
+tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP
+tst-wctype-ENV = LC_ALL=ja_JP.EUC-JP
+
+tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace \
+ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+$(objpfx)mtrace-tst-leaks.out: $(objpfx)tst-leaks.out
+ $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@; \
+ $(evaluate-test)
+
+bug-setlocale1-ENV-only = LOCPATH=$(objpfx) LC_CTYPE=de_DE.UTF-8
+bug-setlocale1-static-ENV-only = $(bug-setlocale1-ENV-only)
+
+$(objdir)/iconvdata/gconv-modules:
+ $(MAKE) -C ../iconvdata subdir=iconvdata $@
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-malloc-hooks.patch
+
+mv glibc-$VERSION-malloc-hooks.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/malloc/malloc-check.c
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/glibc-2.37-new/malloc/malloc-check.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/glibc-2.37-new/malloc/malloc-check.c (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-malloc-hooks-patch/glibc-2.37-new/malloc/malloc-check.c (revision 35)
@@ -0,0 +1,403 @@
+/* glibc.malloc.check implementation.
+ Copyright (C) 2001-2023 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
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, see <https://www.gnu.org/licenses/>. */
+
+#define __mremap mremap
+#include "malloc.c"
+
+/* When memory is tagged, the checking data is stored in the user part
+ of the chunk. We can't rely on the user not having modified the
+ tags, so fetch the tag at each location before dereferencing
+ it. */
+#define SAFE_CHAR_OFFSET(p,offset) \
+ ((unsigned char *) tag_at (((unsigned char *) p) + offset))
+
+/* A simple, standard set of debugging hooks. Overhead is `only' one
+ byte per chunk; still this will catch most cases of double frees or
+ overruns. The goal here is to avoid obscure crashes due to invalid
+ usage, unlike in the MALLOC_DEBUG code. */
+
+static unsigned char
+magicbyte (const void *p)
+{
+ unsigned char magic;
+
+ magic = (((uintptr_t) p >> 3) ^ ((uintptr_t) p >> 11)) & 0xFF;
+ /* Do not return 1. See the comment in mem2mem_check(). */
+ if (magic == 1)
+ ++magic;
+ return magic;
+}
+
+/* Visualize the chunk as being partitioned into blocks of 255 bytes from the
+ highest address of the chunk, downwards. The end of each block tells
+ us the size of that block, up to the actual size of the requested
+ memory. Our magic byte is right at the end of the requested size, so we
+ must reach it with this iteration, otherwise we have witnessed a memory
+ corruption. */
+static size_t
+malloc_check_get_size (void *mem)
+{
+ size_t size;
+ unsigned char c;
+ mchunkptr p = mem2chunk (mem);
+ unsigned char magic = magicbyte (p);
+
+ for (size = CHUNK_HDR_SZ + memsize (p) - 1;
+ (c = *SAFE_CHAR_OFFSET (p, size)) != magic;
+ size -= c)
+ {
+ if (c <= 0 || size < (c + CHUNK_HDR_SZ))
+ malloc_printerr ("malloc_check_get_size: memory corruption");
+ }
+
+ /* chunk2mem size. */
+ return size - CHUNK_HDR_SZ;
+}
+
+/* Instrument a chunk with overrun detector byte(s) and convert it
+ into a user pointer with requested size req_sz. */
+
+static void *
+mem2mem_check (void *ptr, size_t req_sz)
+{
+ mchunkptr p;
+ unsigned char *m_ptr = ptr;
+ size_t max_sz, block_sz, i;
+ unsigned char magic;
+
+ if (!ptr)
+ return ptr;
+
+ p = mem2chunk (ptr);
+ magic = magicbyte (p);
+ max_sz = memsize (p);
+
+ for (i = max_sz - 1; i > req_sz; i -= block_sz)
+ {
+ block_sz = MIN (i - req_sz, 0xff);
+ /* Don't allow the magic byte to appear in the chain of length bytes.
+ For the following to work, magicbyte cannot return 0x01. */
+ if (block_sz == magic)
+ --block_sz;
+
+ *SAFE_CHAR_OFFSET (m_ptr, i) = block_sz;
+ }
+ *SAFE_CHAR_OFFSET (m_ptr, req_sz) = magic;
+ return (void *) m_ptr;
+}
+
+/* Convert a pointer to be free()d or realloc()ed to a valid chunk
+ pointer. If the provided pointer is not valid, return NULL. */
+
+static mchunkptr
+mem2chunk_check (void *mem, unsigned char **magic_p)
+{
+ mchunkptr p;
+ INTERNAL_SIZE_T sz, c;
+ unsigned char magic;
+
+ if (!aligned_OK (mem))
+ return NULL;
+
+ p = mem2chunk (mem);
+ sz = chunksize (p);
+ magic = magicbyte (p);
+ if (!chunk_is_mmapped (p))
+ {
+ /* Must be a chunk in conventional heap memory. */
+ int contig = contiguous (&main_arena);
+ if ((contig &&
+ ((char *) p < mp_.sbrk_base ||
+ ((char *) p + sz) >= (mp_.sbrk_base + main_arena.system_mem))) ||
+ sz < MINSIZE || sz & MALLOC_ALIGN_MASK || !inuse (p) ||
+ (!prev_inuse (p) && ((prev_size (p) & MALLOC_ALIGN_MASK) != 0 ||
+ (contig && (char *) prev_chunk (p) < mp_.sbrk_base) ||
+ next_chunk (prev_chunk (p)) != p)))
+ return NULL;
+
+ for (sz = CHUNK_HDR_SZ + memsize (p) - 1;
+ (c = *SAFE_CHAR_OFFSET (p, sz)) != magic;
+ sz -= c)
+ {
+ if (c == 0 || sz < (c + CHUNK_HDR_SZ))
+ return NULL;
+ }
+ }
+ else
+ {
+ unsigned long offset, page_mask = GLRO (dl_pagesize) - 1;
+
+ /* mmap()ed chunks have MALLOC_ALIGNMENT or higher power-of-two
+ alignment relative to the beginning of a page. Check this
+ first. */
+ offset = (unsigned long) mem & page_mask;
+ if ((offset != MALLOC_ALIGNMENT && offset != 0 && offset != 0x10 &&
+ offset != 0x20 && offset != 0x40 && offset != 0x80 && offset != 0x100 &&
+ offset != 0x200 && offset != 0x400 && offset != 0x800 && offset != 0x1000 &&
+ offset < 0x2000) ||
+ !chunk_is_mmapped (p) || prev_inuse (p) ||
+ ((((unsigned long) p - prev_size (p)) & page_mask) != 0) ||
+ ((prev_size (p) + sz) & page_mask) != 0)
+ return NULL;
+
+ for (sz = CHUNK_HDR_SZ + memsize (p) - 1;
+ (c = *SAFE_CHAR_OFFSET (p, sz)) != magic;
+ sz -= c)
+ {
+ if (c == 0 || sz < (c + CHUNK_HDR_SZ))
+ return NULL;
+ }
+ }
+
+ unsigned char* safe_p = SAFE_CHAR_OFFSET (p, sz);
+ *safe_p ^= 0xFF;
+ if (magic_p)
+ *magic_p = safe_p;
+ return p;
+}
+
+/* Check for corruption of the top chunk. */
+static void
+top_check (void)
+{
+ mchunkptr t = top (&main_arena);
+
+ if (t == initial_top (&main_arena) ||
+ (!chunk_is_mmapped (t) &&
+ chunksize (t) >= MINSIZE &&
+ prev_inuse (t) &&
+ (!contiguous (&main_arena) ||
+ (char *) t + chunksize (t) == mp_.sbrk_base + main_arena.system_mem)))
+ return;
+
+ malloc_printerr ("malloc: top chunk is corrupt");
+}
+
+static void *
+malloc_check (size_t sz)
+{
+ void *victim;
+ size_t nb;
+
+ if (__builtin_add_overflow (sz, 1, &nb))
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+
+ __libc_lock_lock (main_arena.mutex);
+ top_check ();
+ victim = _int_malloc (&main_arena, nb);
+ __libc_lock_unlock (main_arena.mutex);
+ return mem2mem_check (tag_new_usable (victim), sz);
+}
+
+static void
+free_check (void *mem)
+{
+ mchunkptr p;
+
+ if (!mem)
+ return;
+
+ int err = errno;
+
+ /* Quickly check that the freed pointer matches the tag for the memory.
+ This gives a useful double-free detection. */
+ if (__glibc_unlikely (mtag_enabled))
+ *(volatile char *)mem;
+
+ __libc_lock_lock (main_arena.mutex);
+ p = mem2chunk_check (mem, NULL);
+ if (!p)
+ malloc_printerr ("free(): invalid pointer");
+ if (chunk_is_mmapped (p))
+ {
+ __libc_lock_unlock (main_arena.mutex);
+ munmap_chunk (p);
+ }
+ else
+ {
+ /* Mark the chunk as belonging to the library again. */
+ (void)tag_region (chunk2mem (p), memsize (p));
+ _int_free (&main_arena, p, 1);
+ __libc_lock_unlock (main_arena.mutex);
+ }
+ __set_errno (err);
+}
+
+static void *
+realloc_check (void *oldmem, size_t bytes)
+{
+ INTERNAL_SIZE_T chnb;
+ void *newmem = 0;
+ unsigned char *magic_p = NULL;
+ size_t rb;
+
+ if (__builtin_add_overflow (bytes, 1, &rb))
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+ if (oldmem == 0)
+ return malloc_check (bytes);
+
+ if (bytes == 0)
+ {
+ free_check (oldmem);
+ return NULL;
+ }
+
+ /* Quickly check that the freed pointer matches the tag for the memory.
+ This gives a useful double-free detection. */
+ if (__glibc_unlikely (mtag_enabled))
+ *(volatile char *)oldmem;
+
+ __libc_lock_lock (main_arena.mutex);
+ const mchunkptr oldp = mem2chunk_check (oldmem, &magic_p);
+ __libc_lock_unlock (main_arena.mutex);
+ if (!oldp)
+ malloc_printerr ("realloc(): invalid pointer");
+ const INTERNAL_SIZE_T oldsize = chunksize (oldp);
+
+ chnb = checked_request2size (rb);
+ if (chnb == 0)
+ {
+ __set_errno (ENOMEM);
+ goto invert;
+ }
+
+ __libc_lock_lock (main_arena.mutex);
+
+ if (chunk_is_mmapped (oldp))
+ {
+#if HAVE_MREMAP
+ mchunkptr newp = mremap_chunk (oldp, chnb);
+ if (newp)
+ newmem = chunk2mem_tag (newp);
+ else
+#endif
+ {
+ /* Note the extra SIZE_SZ overhead. */
+ if (oldsize - SIZE_SZ >= chnb)
+ newmem = oldmem; /* do nothing */
+ else
+ {
+ /* Must alloc, copy, free. */
+ top_check ();
+ newmem = _int_malloc (&main_arena, rb);
+ if (newmem)
+ {
+ memcpy (newmem, oldmem, oldsize - CHUNK_HDR_SZ);
+ munmap_chunk (oldp);
+ }
+ }
+ }
+ }
+ else
+ {
+ top_check ();
+ newmem = _int_realloc (&main_arena, oldp, oldsize, chnb);
+ }
+
+ DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+ /* GCC 7 warns about magic_p may be used uninitialized. But we never
+ reach here if magic_p is uninitialized. */
+ DIAG_IGNORE_NEEDS_COMMENT (7, "-Wmaybe-uninitialized");
+#endif
+ /* mem2chunk_check changed the magic byte in the old chunk.
+ If newmem is NULL, then the old chunk will still be used though,
+ so we need to invert that change here. */
+invert:
+ if (newmem == NULL)
+ *magic_p ^= 0xFF;
+ DIAG_POP_NEEDS_COMMENT;
+
+ __libc_lock_unlock (main_arena.mutex);
+
+ return mem2mem_check (tag_new_usable (newmem), bytes);
+}
+
+static void *
+memalign_check (size_t alignment, size_t bytes)
+{
+ void *mem;
+
+ if (alignment <= MALLOC_ALIGNMENT)
+ return malloc_check (bytes);
+
+ if (alignment < MINSIZE)
+ alignment = MINSIZE;
+
+ /* If the alignment is greater than SIZE_MAX / 2 + 1 it cannot be a
+ power of 2 and will cause overflow in the check below. */
+ if (alignment > SIZE_MAX / 2 + 1)
+ {
+ __set_errno (EINVAL);
+ return NULL;
+ }
+
+ /* Check for overflow. */
+ if (bytes > SIZE_MAX - alignment - MINSIZE)
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+
+ /* Make sure alignment is power of 2. */
+ if (!powerof2 (alignment))
+ {
+ size_t a = MALLOC_ALIGNMENT * 2;
+ while (a < alignment)
+ a <<= 1;
+ alignment = a;
+ }
+
+ __libc_lock_lock (main_arena.mutex);
+ top_check ();
+ mem = _int_memalign (&main_arena, alignment, bytes + 1);
+ __libc_lock_unlock (main_arena.mutex);
+ return mem2mem_check (tag_new_usable (mem), bytes);
+}
+
+#if HAVE_TUNABLES
+static void
+TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp)
+{
+ int32_t value = (int32_t) valp->numval;
+ if (value != 0)
+ __malloc_debug_enable (MALLOC_CHECK_HOOK);
+}
+#endif
+
+static bool
+initialize_malloc_check (void)
+{
+ /* This is the copy of the malloc initializer that we pulled in along with
+ malloc-check. This does not affect any of the libc malloc structures. */
+ ptmalloc_init ();
+#if HAVE_TUNABLES
+ TUNABLE_GET (check, int32_t, TUNABLE_CALLBACK (set_mallopt_check));
+#else
+ const char *s = secure_getenv ("MALLOC_CHECK_");
+ if (s && s[0] != '\0' && s[0] != '0')
+ __malloc_debug_enable (MALLOC_CHECK_HOOK);
+#endif
+ return __is_malloc_debug_enabled (MALLOC_CHECK_HOOK);
+}
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-ppc64-interpreter.patch
+
+mv glibc-$VERSION-ppc64-interpreter.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/glibc-2.37-new/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/glibc-2.37-new/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-ppc64-interpreter-patch/glibc-2.37-new/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed (revision 35)
@@ -0,0 +1,12 @@
+# ldd is generated from elf/ldd.bash.in with the name
+# of ld.so as generated in Makeconfig
+
+# that name is replaced by a pair referring to both
+# the 32bit and 64bit dynamic linker.
+
+# /lib(64|)/*(64|).so.(1|2) is replaced with /lib64/*64.so.(1|2) and /lib/*.so.1
+# this works for /lib/ld64.so.x and /lib32/ld.so.x as input
+s_lib64_lib_
+s_64\.so_\.so_
+s_^RTLDLIST=\(.*lib\)\(\|64\|32\)\(/[^/]*\)\(\.so\.[0-9.]*\)[[:blank:]]*$_RTLDLIST="\1\364\4 \132\3\.so\.1"_
+
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-reenable-DT-HASH.patch
+
+mv glibc-$VERSION-reenable-DT-HASH.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/file.list (revision 35)
@@ -0,0 +1,5 @@
+glibc-2.37/Makeconfig
+glibc-2.37/Makerules
+glibc-2.37/config.make.in
+glibc-2.37/configure
+glibc-2.37/configure.ac
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/Makeconfig
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/Makeconfig (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/Makeconfig (revision 35)
@@ -0,0 +1,1431 @@
+# Copyright (C) 1991-2023 Free Software Foundation, Inc.
+# Copyright The GNU Toolchain Authors.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+#
+# Makefile configuration options for the GNU C library.
+#
+ifneq (,)
+This makefile requires GNU Make.
+endif
+
+all: # Make this the default goal
+
+ifneq "$(origin +included-Makeconfig)" "file"
+
++included-Makeconfig := yes
+
+ifdef subdir
+.. := ../
+endif
+
+# $(common-objdir) is the place to put objects and
+# such that are not specific to a single subdir.
+ifdef objdir
+objpfx := $(patsubst %//,%/,$(objdir)/$(subdir)/)
+common-objpfx = $(objdir)/
+common-objdir = $(objdir)
+else
+$(error objdir must be defined by the build-directory Makefile)
+endif
+
+# Did we request 'make -s' run? "yes" or "no".
+# Starting from make-4.4 MAKEFLAGS now contains long
+# options like '--shuffle'. To detect presence of 's'
+# we pick first word with short options. Long options
+# are guaranteed to come after whitespace. We use '-'
+# prefix to always have a word before long options
+# even if no short options were passed.
+# Typical MAKEFLAGS values to watch for:
+# "rs --shuffle=42" (silent)
+# " --shuffle" (not silent)
+ifeq ($(findstring s, $(firstword -$(MAKEFLAGS))),)
+silent-make := no
+else
+silent-make := yes
+endif
+
+# Root of the sysdeps tree.
+sysdep_dir := $(..)sysdeps
+export sysdep_dir := $(sysdep_dir)
+
+# Get the values defined by options to `configure'.
+include $(common-objpfx)config.make
+
+# What flags to give to sources which call user provided callbacks
+uses-callbacks = -fexceptions
+
+# What flags to give to tests which test stack alignment
+stack-align-test-flags =
+
+# Complete path to sysdep dirs.
+# `configure' writes a definition of `config-sysdirs' in `config.make'.
+sysdirs := $(foreach D,$(config-sysdirs),$(firstword $(filter /%,$D) $(..)$D))
+
++sysdep_dirs = $(sysdirs)
+ifdef objdir
++sysdep_dirs := $(objdir) $(+sysdep_dirs)
+endif
+
+# Run config.status to update config.make and config.h. We don't show the
+# dependence of config.h to Make, because it is only touched when it
+# changes and so config.status would be run every time; the dependence of
+# config.make should suffice to force regeneration and re-exec, and the new
+# image will notice if config.h changed.
+$(common-objpfx)config.make: $(common-objpfx)config.status \
+ $(..)config.make.in $(..)config.h.in
+ cd $(<D); $(SHELL) $(<F)
+
+# Find all the sysdeps configure fragments, to make sure we re-run
+# configure when any of them changes.
+$(common-objpfx)config.status: $(..)version.h $(..)configure \
+ $(foreach dir,$(sysdirs),\
+ $(wildcard $(dir)/Implies) \
+ $(patsubst %.ac,%,\
+ $(firstword $(wildcard \
+ $(addprefix $(dir)/,configure configure.ac))))) \
+ $(patsubst %.ac,%,\
+ $(wildcard $(..)sysdeps/*/preconfigure $(..)sysdeps/*/preconfigure.ac))
+ @cd $(@D); if test -f $(@F); then exec $(SHELL) $(@F) --recheck; else \
+ echo The GNU C library has not been configured. >&2; \
+ echo Run \`configure\' to configure it before building. >&2; \
+ echo Try \`configure --help\' for more details. >&2; \
+ exit 1; fi
+
+# We don't want CPPFLAGS to be exported to the command running configure.
+unexport CPPFLAGS
+
+# Get the user's configuration parameters.
+ifneq ($(wildcard $(..)configparms),)
+include $(..)configparms
+endif
+ifneq ($(objpfx),)
+ifneq ($(wildcard $(common-objpfx)configparms),)
+include $(common-objpfx)configparms
+endif
+endif
+
+####
+#### These are the configuration variables. You can define values for
+#### the variables below in the file `configparms'.
+#### Do NOT edit this file.
+####
+
+
+# Common prefix for machine-independent installation directories.
+ifeq ($(origin prefix),undefined) # ifndef would override explicit empty value.
+prefix = /usr/local
+endif
+
+# Decide whether we shall build the programs or not. We always do this
+# unless the user tells us (in configparms) or we are building for a
+# standalone target.
+ifndef build-programs
+ifneq ($(config-os),none)
+build-programs=yes
+else
+build-programs=no
+endif
+endif
+
+# Common prefix for machine-dependent installation directories.
+ifeq ($(origin exec_prefix),undefined)
+exec_prefix = $(prefix)
+endif
+
+# Where to install the library and object files.
+ifndef libdir
+libdir = $(exec_prefix)/lib
+endif
+inst_libdir = $(install_root)$(libdir)
+
+# Where to install the shared library.
+ifndef slibdir
+slibdir = $(exec_prefix)/lib
+endif
+inst_slibdir = $(install_root)$(slibdir)
+
+# Where to install the dynamic linker.
+ifndef rtlddir
+rtlddir = $(slibdir)
+endif
+inst_rtlddir = $(install_root)$(rtlddir)
+
+# Prefix to put on files installed in $(libdir). For libraries `libNAME.a',
+# the prefix is spliced between `lib' and the name, so the linker switch
+# `-l$(libprefix)NAME' finds the library; for other files the prefix is
+# just prepended to the whole file name.
+ifeq ($(origin libprefix),undefined)
+libprefix =
+endif
+
+# Where to install the header files.
+ifndef includedir
+includedir = $(prefix)/include
+endif
+inst_includedir = $(install_root)$(includedir)
+
+# Where to install machine-independent data files.
+# These are the timezone database, and the locale database.
+ifndef datadir
+datadir = $(prefix)/share
+endif
+inst_datadir = $(install_root)$(datadir)
+
+# Where to install the timezone data files (which are machine-independent).
+ifndef zonedir
+zonedir = $(datadir)/zoneinfo
+endif
+inst_zonedir = $(install_root)$(zonedir)
+
+# Where to install the compiled binary locale archive and compiled
+# binary locale files.
+ifndef complocaledir
+complocaledir = $(libdir)/locale
+endif
+inst_complocaledir = $(install_root)$(complocaledir)
+
+# Where to install the message catalog data files (which are
+# machine-independent).
+ifndef localedir
+localedir = $(datadir)/locale
+endif
+inst_localedir = $(install_root)$(localedir)
+
+# Where to install the locale charmap source files.
+ifndef i18ndir
+i18ndir = $(datadir)/i18n
+endif
+inst_i18ndir = $(install_root)$(i18ndir)
+
+# Where to install the shared object for charset transformation.
+ifndef gconvdir
+gconvdir = $(libdir)/gconv
+endif
+inst_gconvdir = $(install_root)$(gconvdir)
+
+# Where to install programs.
+ifndef bindir
+bindir = $(exec_prefix)/bin
+endif
+inst_bindir = $(install_root)$(bindir)
+
+# Where to install internal programs.
+ifndef libexecdir
+libexecdir = $(exec_prefix)/libexec
+endif
+inst_libexecdir = $(install_root)$(libexecdir)
+
+# Where to install administrative programs.
+ifndef rootsbindir
+rootsbindir = $(exec_prefix)/sbin
+endif
+inst_rootsbindir = $(install_root)$(rootsbindir)
+
+ifndef sbindir
+sbindir = $(exec_prefix)/sbin
+endif
+inst_sbindir = $(install_root)$(sbindir)
+
+# Where to install the Info files.
+ifndef infodir
+infodir = $(prefix)/info
+endif
+inst_infodir = $(install_root)$(infodir)
+
+# Where to install audit libraries.
+ifndef auditdir
+auditdir = $(libdir)/audit
+endif
+inst_auditdir = $(install_root)$(auditdir)
+
+# Where to install default configuration files. These include the local
+# timezone specification and network data base files.
+ifndef sysconfdir
+sysconfdir = $(prefix)/etc
+endif
+inst_sysconfdir = $(install_root)$(sysconfdir)
+
+# Directory for the database files and Makefile for nss_db.
+ifndef vardbdir
+vardbdir = $(localstatedir)/db
+endif
+inst_vardbdir = $(install_root)$(vardbdir)
+
+# Where to install the "localtime" timezone file; this is the file whose
+# contents $(localtime) specifies. If this is a relative pathname, it is
+# relative to $(zonedir). It is a good idea to put this somewhere
+# other than there, so the zoneinfo directory contains only universal data,
+# localizing the configuration data elsewhere.
+ifndef localtime-file
+localtime-file = $(sysconfdir)/localtime
+endif
+
+# What to use for leap second specifications in compiling the default
+# timezone files. Set this to `/dev/null' for no leap second handling as
+# 1003.1 requires, or to `leapseconds' for proper leap second handling.
+# Both zone flavors are always available as `posix/ZONE' and `right/ZONE'.
+# This variable determines the default: if it's `/dev/null',
+# ZONE==posix/ZONE; if it's `leapseconds', ZONE==right/ZONE.
+ifndef leapseconds
+leapseconds = /dev/null
+endif
+
+# What timezone's DST rules should be used when a POSIX-style TZ
+# environment variable doesn't specify any rules. For 1003.1 compliance
+# this timezone must use rules that are as U.S. federal law defines DST.
+# Run `make -C time echo-zonenames' to see a list of available zone names.
+# This setting can be changed with `zic -p TIMEZONE' at any time.
+# If you want POSIX.1 compatibility, use `America/New_York'.
+ifndef posixrules
+posixrules = America/New_York
+endif
+
+# Where to install the "posixrules" timezone file; this is file
+# whose contents $(posixrules) specifies. If this is a relative
+# pathname, it is relative to $(zonedir).
+ifndef posixrules-file
+posixrules-file = posixrules
+endif
+
+
+# Directory where your system's native header files live.
+# This is used on Unix systems to generate some GNU libc header files.
+ifndef sysincludedir
+sysincludedir = /usr/include
+endif
+
+
+# Commands to install files.
+ifndef INSTALL_DATA
+INSTALL_DATA = $(INSTALL) -m 644
+endif
+ifndef INSTALL_SCRIPT
+INSTALL_SCRIPT = $(INSTALL)
+endif
+ifndef INSTALL_PROGRAM
+INSTALL_PROGRAM = $(INSTALL)
+endif
+ifndef INSTALL
+INSTALL = install
+endif
+
+
+# The name of the C compiler.
+# If you've got GCC, and it works, use it.
+ifeq ($(origin CC),default)
+CC := gcc
+endif
+
+# The name of the C compiler to use for compilations of programs to run on
+# the host that is building the library. If you set CC to a
+# cross-compiler, you must set this to the normal compiler.
+ifndef BUILD_CC
+BUILD_CC = $(CC)
+endif
+
+# Default flags to pass the C compiler.
+ifndef default_cflags
+ifeq ($(release),stable)
+default_cflags := -g -O2
+else
+default_cflags := -g -O
+endif
+endif
+
+# Flags to pass the C compiler when assembling preprocessed assembly code
+# (`.S' files).
+ifndef asm-CPPFLAGS
+asm-CPPFLAGS =
+endif
+
+# Must be supported by the linker.
+no-whole-archive = -Wl,--no-whole-archive
+whole-archive = -Wl,--whole-archive
+
+# Installed name of the startup code.
+# The ELF convention is that the startfile is called crt1.o
+start-installed-name = crt1.o
+# On systems that do not need a special startfile for statically linked
+# binaries, simply set it to the normal name.
+ifndef static-start-installed-name
+static-start-installed-name = $(start-installed-name)
+endif
+
+ifeq (yes,$(enable-static-pie))
+# Link with rcrt1.o, instead of crt1.o, to call _dl_relocate_static_pie
+# to relocate static PIE.
+real-static-start-installed-name = r$(static-start-installed-name)
+else
+real-static-start-installed-name = $(static-start-installed-name)
+endif
+
+relro-LDFLAGS = -Wl,-z,relro
+LDFLAGS.so += $(relro-LDFLAGS)
+LDFLAGS-rtld += $(relro-LDFLAGS)
+
+# Linker options to enable and disable DT_RELR.
+ifeq ($(have-dt-relr),yes)
+dt-relr-ldflag = -Wl,-z,pack-relative-relocs
+no-dt-relr-ldflag = -Wl,-z,nopack-relative-relocs
+else
+dt-relr-ldflag =
+no-dt-relr-ldflag =
+endif
+
+ifeq (yes,$(have-hash-style))
+# For the time being we unconditionally use 'both'. At some time we
+# should declare statically linked code as 'out of luck' and compile
+# with --hash-style=gnu only.
+hashstyle-LDFLAGS = -Wl,--hash-style=both
+LDFLAGS.so += $(hashstyle-LDFLAGS)
+LDFLAGS-rtld += $(hashstyle-LDFLAGS)
+endif
+
+ifeq (no,$(build-pie-default))
+pie-default = $(no-pie-ccflag)
+else # build-pie-default
+pic-default = -DPIC
+# Compile libc.a and libc_p.a with -fPIE/-fpie for static PIE.
+pie-default = $(pie-ccflag)
+
+ifeq (yes,$(enable-static-pie))
+static-pie-dt-relr-ldflag = $(dt-relr-ldflag)
+ifeq (yes,$(have-static-pie))
+static-pie-ldflag = -static-pie
+else
+# Static PIE can't have dynamic relocations in read-only segments since
+# static PIE is mapped into memory by kernel. --eh-frame-hdr is needed
+# for PIE to support exception.
+static-pie-ldflag = -Wl,-pie,--no-dynamic-linker,--eh-frame-hdr,-z,text
+endif # have-static-pie
+endif # enable-static-pie
+endif # build-pie-default
+
+# If lazy relocations are disabled, add the -z now flag. Use
+# LDFLAGS-lib.so instead of LDFLAGS.so, to avoid adding the flag to
+# test modules.
+ifeq ($(bind-now),yes)
+LDFLAGS-lib.so += -Wl,-z,now
+# Extra flags for dynamically linked non-test main programs.
+link-extra-flags += -Wl,-z,now
+endif
+
+# Command to run after every final link (executable or shared object).
+# This is invoked with $(call after-link,...), so it should operate on
+# the file $1. This can be set to do some sort of post-processing on
+# binaries, or to perform some sort of static sanity check.
+ifndef after-link
+after-link =
+endif
+
+# Additional libraries to link into every test.
+link-extra-libs-tests = $(libsupport)
+
+# Command for linking PIE programs with the C library.
+ifndef +link-pie
++link-pie-before-inputs = $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \
+ $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
+ -Wl,-O1 -nostdlib -nostartfiles \
+ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+ $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
+ $(firstword $(CRT-$(@F)) $(csu-objpfx)S$(start-installed-name)) \
+ $(+preinit) $(+prectorS)
++link-pie-before-libc = -o $@ $(+link-pie-before-inputs) \
+ $(filter-out $(addprefix $(csu-objpfx),start.o \
+ S$(start-installed-name))\
+ $(+preinit) $(link-extra-libs) \
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs)
++link-pie-after-libc = $(+postctorS) $(+postinit)
+define +link-pie
+$(CC) $(link-libc-rpath-link) $(+link-pie-before-libc) $(rtld-LDFLAGS) \
+ $(link-extra-flags) $(link-libc) $(+link-pie-after-libc)
+$(call after-link,$@)
+endef
+define +link-pie-tests
+$(CC) $(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
+ $(+link-pie-after-libc)
+$(call after-link,$@)
+endef
+define +link-pie-printers-tests
+$(CC) $(+link-pie-before-libc) $(built-rtld-LDFLAGS) \
+ $(link-libc-printers-tests) $(+link-pie-after-libc)
+$(call after-link,$@)
+endef
+endif
+# Command for statically linking programs with the C library.
+ifndef +link-static
++link-static-before-inputs = -nostdlib -nostartfiles -static \
+ $(if $($(@F)-no-pie),$(no-pie-ldflag),$(static-pie-ldflag)) \
+ $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(static-pie-dt-relr-ldflag)) \
+ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+ $(firstword $(CRT-$(@F)) $(csu-objpfx)$(real-static-start-installed-name)) \
+ $(+preinit) $(+prectorT)
++link-static-before-libc = -o $@ $(+link-static-before-inputs) \
+ $(filter-out $(addprefix $(csu-objpfx),start.o \
+ $(start-installed-name))\
+ $(+preinit) $(link-extra-libs-static) \
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs-static)
++link-static-after-libc = $(+postctorT) $(+postinit)
+define +link-static
+$(CC) $(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) \
+ $(+link-static-after-libc)
+$(call after-link,$@)
+endef
+define +link-static-tests
+$(CC) $(+link-static-before-libc) $(link-libc-static-tests) \
+ $(+link-static-after-libc)
+$(call after-link,$@)
+endef
+endif
+# Commands for linking programs with the C library.
+ifndef +link
+ifeq (yes,$(build-shared))
+ifeq (yes,$(cc-pie-default))
+no-pie-ldflag = -no-pie
+endif
+ifeq (yes,$(build-pie-default))
++link = $(+link-pie)
++link-tests = $(+link-pie-tests)
++link-tests-before-inputs = $(+link-pie-before-inputs) $(rtld-tests-LDFLAGS)
++link-tests-after-inputs = $(link-libc-tests) $(+link-pie-after-libc)
++link-printers-tests = $(+link-pie-printers-tests)
+else # not build-pie-default
++link-before-inputs = -nostdlib -nostartfiles $(no-pie-ldflag) \
+ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+ $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
+ $(firstword $(CRT-$(@F)) $(csu-objpfx)$(start-installed-name)) \
+ $(+preinit) $(+prector)
++link-before-libc = -o $@ $(+link-before-inputs) \
+ $(filter-out $(addprefix $(csu-objpfx),start.o \
+ $(start-installed-name))\
+ $(+preinit) $(link-extra-libs) \
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs)
++link-after-libc = $(+postctor) $(+postinit)
+define +link
+$(CC) $(link-libc-rpath-link) $(+link-before-libc) $(rtld-LDFLAGS) \
+ $(link-extra-flags) $(link-libc) $(+link-after-libc)
+$(call after-link,$@)
+endef
++link-tests-before-inputs = $(+link-before-inputs) $(rtld-tests-LDFLAGS)
++link-tests-after-inputs = $(link-libc-tests) $(+link-after-libc)
+define +link-tests
+$(CC) $(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
+ $(+link-after-libc)
+$(call after-link,$@)
+endef
+define +link-printers-tests
+$(CC) $(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
+ $(+link-after-libc)
+$(call after-link,$@)
+endef
+endif # build-pie-default
+else # build-static
++link = $(+link-static)
++link-tests = $(+link-static-tests)
++link-tests-before-inputs = $(+link-static-before-inputs)
++link-tests-after-inputs = $(link-libc-static-tests) $(+link-static-after-libc)
++link-printers-tests = $(+link-static-tests)
+endif # build-shared
+endif # +link
+
+# The pretty printer test programs need to be compiled without optimizations
+# so they won't confuse gdb. We could use either the 'GCC optimize' pragma
+# or the 'optimize' function attribute to achieve this; however, at least on
+# ARM, gcc always produces different debugging symbols when invoked with
+# a -O greater than 0 than when invoked with -O0, regardless of anything else
+# we're using to suppress optimizations. Therefore, we need to explicitly pass
+# -O0 to it through CFLAGS.
+# Additionally, the build system will try to -include $(common-objpfx)/config.h
+# when compiling the tests, which will throw an error if some special macros
+# (such as __OPTIMIZE__ and IS_IN_build) aren't defined. To avoid this, we
+# tell gcc to define IS_IN_build.
+CFLAGS-printers-tests := -O0 -ggdb3 -DIS_IN_build
+
+ifeq (yes,$(build-shared))
+# These indicate whether to link using the built ld.so or the installed one.
+installed-rtld-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
+built-rtld-LDFLAGS = -Wl,-dynamic-linker=$(elf-objpfx)ld.so
+
+ifndef rtld-LDFLAGS
+rtld-LDFLAGS = $(installed-rtld-LDFLAGS)
+endif
+
+ifndef rtld-tests-LDFLAGS
+ifeq (yes,$(build-hardcoded-path-in-tests))
+rtld-tests-LDFLAGS = $(built-rtld-LDFLAGS)
+else
+rtld-tests-LDFLAGS = $(installed-rtld-LDFLAGS)
+endif # build-hardcoded-path-in-tests
+endif # rtld-tests-LDFLAGS
+
+endif # build-shared
+
+ifndef link-libc
+ifeq (yes,$(build-shared))
+# We need the versioned name of libc.so in the deps of $(others) et al
+# so that the symlink to libc.so is created before anything tries to
+# run the linked programs.
+link-libc-rpath = -Wl,-rpath=$(rpath-link)
+link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
+
+# For programs which are not tests, $(link-libc-rpath-link) is added
+# directly in $(+link), $(+link-pie) above, so that -Wl,-rpath-link
+# comes before the expansion of LDLIBS-* and affects libraries added
+# there. For shared objects, -Wl,-rpath-link is added via
+# $(build-shlib-helper) and $(build-module-helper) in Makerules (also
+# before the expansion of LDLIBS-* variables).
+
+# Tests use -Wl,-rpath instead of -Wl,-rpath-link for
+# build-hardcoded-path-in-tests.
+ifeq (yes,$(build-hardcoded-path-in-tests))
+link-libc-tests-rpath-link = $(link-libc-rpath)
+link-test-modules-rpath-link = $(link-libc-rpath)
+else
+link-libc-tests-rpath-link = $(link-libc-rpath-link)
+link-test-modules-rpath-link =
+endif # build-hardcoded-path-in-tests
+
+link-libc-between-gnulib = $(common-objpfx)libc.so$(libc.so-version) \
+ $(common-objpfx)$(patsubst %,$(libtype.oS),c) \
+ -Wl,--as-needed $(elf-objpfx)ld.so \
+ -Wl,--no-as-needed
+link-libc = $(link-libc-between-gnulib) $(gnulib)
+
+link-libc-tests-after-rpath-link = $(gnulib-tests) $(link-libc-between-gnulib) $(gnulib-tests)
+link-libc-tests = $(link-libc-tests-rpath-link) \
+ $(link-libc-tests-after-rpath-link)
+# Pretty printer test programs always require rpath instead of rpath-link.
+link-libc-printers-tests = $(link-libc-rpath) \
+ $(link-libc-tests-after-rpath-link)
+
+# This is how to find at build-time things that will be installed there.
+rpath-dirs = math elf dlfcn nss nis rt resolv mathvec support
+rpath-link = \
+$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
+else # build-static
+link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
+link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
+endif # build-shared
+endif # link-libc
+
+# Differences in the linkers on the various platforms.
+LDFLAGS-rpath-ORIGIN = -Wl,-rpath,'$$ORIGIN'
+LDFLAGS-soname-fname = -Wl,-soname,$(@F)
+LDFLAGS-rdynamic = -rdynamic
+LDFLAGS-Bsymbolic = -Bsymbolic
+
+# Choose the default search path for the dynamic linker based on
+# where we will install libraries.
+ifneq ($(libdir),$(slibdir))
+default-rpath = $(slibdir):$(libdir)
+else
+default-rpath = $(libdir)
+endif
+
+ifndef link-extra-libs
+link-extra-libs = $(LDLIBS-$(@F))
+link-extra-libs-static = $(link-extra-libs)
+endif
+
+# The static libraries.
+link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
+link-libc-static-tests = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib-tests) -Wl,--end-group
+
+# How to link against libgcc. Some libgcc functions, such as those
+# for "long long" arithmetic or software floating point, can always be
+# built without use of C library headers and do not have any global
+# state so can safely be linked statically into any executable or
+# shared library requiring them; these functions are in libgcc.a.
+# Other functions, relating to exception handling, may require C
+# library headers to build and it may not be safe to have more than
+# one copy of them in a process; these functions are only in
+# libgcc_s.so and libgcc_eh.a.
+#
+# To avoid circular dependencies when bootstrapping, it is desirable
+# to avoid use of libgcc_s and libgcc_eh in building glibc. Where any
+# glibc functionality (in particular, thread cancellation) requires
+# exception handling, this is implemented through dlopen of libgcc_s
+# to avoid unnecessary dependencies on libgcc_s by programs not using
+# that functionality; executables built with glibc do not use
+# exception handling other than through thread cancellation.
+#
+# Undefined references to functions from libgcc_eh or libgcc_s may
+# arise for code built with -fexceptions. In the case of statically
+# linked programs installed by glibc, unwinding will never actually
+# occur at runtime and the use of elf/static-stubs.c to resolve these
+# references is safe. In the case of statically linked test programs
+# and test programs built with -fexceptions, unwinding may occur in
+# some cases and it is preferable to link with libgcc_eh or libgcc_s
+# so that the testing is as similar as possible to how programs will
+# be built with the installed glibc.
+#
+# Some architectures have architecture-specific systems for exception
+# handling that may involve undefined references to
+# architecture-specific functions. On those architectures,
+# gnulib-arch and static-gnulib-arch may be defined in sysdeps
+# makefiles to use additional libraries for linking executables and
+# shared libraries built by glibc.
+ifndef gnulib
+ifneq ($(have-cc-with-libunwind),yes)
+ libunwind =
+else
+ libunwind = -lunwind
+endif
+libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
+gnulib-arch =
+gnulib = -lgcc $(gnulib-arch)
+gnulib-tests := -lgcc $(libgcc_eh)
+static-gnulib-arch =
+# By default, elf/static-stubs.o, instead of -lgcc_eh, is used to
+# statically link programs. When --disable-shared is used, we use
+# -lgcc_eh since elf/static-stubs.o isn't sufficient.
+ifeq (yes,$(build-shared))
+static-gnulib = -lgcc $(static-gnulib-arch)
+else
+static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
+endif
+static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
+libc.so-gnulib := -lgcc
+endif
++preinit = $(addprefix $(csu-objpfx),crti.o)
++postinit = $(addprefix $(csu-objpfx),crtn.o)
++prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o`
++postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
+# Variants of the two previous definitions for linking PIE programs.
++prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o`
++postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o`
+# Variants of the two previous definitions for statically linking programs.
+ifeq (yes,$(enable-static-pie))
+# Static PIE must use PIE variants.
++prectorT = $(+prectorS)
++postctorT = $(+postctorS)
+else
++prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o`
++postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
+endif
+csu-objpfx = $(common-objpfx)csu/
+elf-objpfx = $(common-objpfx)elf/
+
+# A command that, prepended to the name and arguments of a program,
+# and run on the build system, causes that program with those
+# arguments to be run on the host for which the library is built.
+ifndef test-wrapper
+test-wrapper =
+endif
+# Likewise, but the name of the program is preceded by
+# <variable>=<value> assignments for environment variables.
+ifndef test-wrapper-env
+test-wrapper-env = $(test-wrapper) env
+endif
+# Likewise, but the program's environment will be empty except for any
+# explicit <variable>=<value> assignments preceding the program name.
+ifndef test-wrapper-env-only
+test-wrapper-env-only = $(test-wrapper) env -i
+endif
+
+# Whether to run test programs built for the library's host system.
+ifndef run-built-tests
+ifeq (yes|,$(cross-compiling)|$(test-wrapper))
+run-built-tests = no
+else
+run-built-tests = yes
+endif
+endif
+
+# Whether to stop immediately when a test fails. Nonempty means to
+# stop, empty means not to stop.
+ifndef stop-on-test-failure
+stop-on-test-failure =
+endif
+
+# How to run a program we just linked with our library.
+# The program binary is assumed to be $(word 2,$^).
+built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^))
+rtld-prefix = $(elf-objpfx)$(rtld-installed-name) \
+ --library-path \
+ $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))
+ifeq (yes,$(build-shared))
+comma = ,
+sysdep-library-path = \
+$(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
+ $(filter -Wl$(comma)-rpath-link=%,\
+ $(sysdep-LDFLAGS)))))
+# $(run-via-rtld-prefix) is a command that, when prepended to the name
+# of a program built with the newly built library, produces a command
+# that, executed on the host for which the library is built, runs that
+# program. For tests listed in tests-static or xtests-static, it is
+# empty.
+run-via-rtld-prefix = \
+ $(if $(strip $(filter $(notdir $(built-program-file)), \
+ $(tests-static) $(xtests-static))),, $(rtld-prefix))
+else
+run-via-rtld-prefix =
+endif
+# $(run-program-env) is the default environment variable settings to
+# use when running a program built with the newly built library.
+run-program-env = GCONV_PATH=$(common-objpfx)iconvdata \
+ LOCPATH=$(common-objpfx)localedata LC_ALL=C
+# $(run-program-prefix) is a command that, when prepended to the name
+# of a program built with the newly built library, produces a command
+# that, executed on the build system on which "make" is run, runs that
+# program. $(run-program-prefix-before-env) and
+# $(run-program-prefix-after-env) are similar, but separate parts
+# before and after a list of environment variables.
+run-program-prefix-before-env = $(test-wrapper-env)
+run-program-prefix-after-env = $(run-via-rtld-prefix)
+run-program-prefix = $(run-program-prefix-before-env) $(run-program-env) \
+ $(run-program-prefix-after-env)
+# $(built-program-cmd) is a command that, executed on the build system
+# on which "make" is run, runs the newly built program that is the
+# second dependency of the makefile target in which
+# $(built-program-cmd) is used. $(built-program-cmd-before-env) and
+# $(built-program-cmd-after-env) are similar, before and after a list
+# of environment variables.
+built-program-cmd-before-env = $(test-wrapper-env)
+built-program-cmd-after-env = $(run-via-rtld-prefix) $(built-program-file)
+built-program-cmd = $(built-program-cmd-before-env) $(run-program-env) \
+ $(built-program-cmd-after-env)
+# $(host-built-program-cmd) is a command that, executed on the host
+# for which the library is built, runs the newly built program that is
+# the second dependency of the makefile target in which
+# $(host-built-program-cmd) is used.
+host-built-program-cmd = $(run-via-rtld-prefix) $(built-program-file)
+# $(ld-library-path) is the common content to be set in LD_LIBRARY_PATH
+# for running static binaries that may load dynamic objects.
+ld-library-path = $(objpfx):$(common-objpfx)$(addprefix :,$(sysdep-ld-library-path))
+
+ifndef LD
+LD := ld -X
+endif
+
+# $(test-via-rtld-prefix) is a command that, when prepended to the name
+# of a test program built with the newly built library, produces a command
+# that, executed on the host for which the library is built, runs that
+# program. For tests listed in tests-static or xtests-static as well
+# as when test programs are hardcoded to the newly built libraries, it
+# is empty.
+
+# $(test-program-prefix) is a command that, when prepended to the name
+# of a test program built with the newly built library, produces a command
+# that, executed on the build system on which "make" is run, runs that
+# test program. $(test-program-prefix-before-env) and
+# $(test-program-prefix-after-env) are similar, before and after a
+# list of environment variables.
+
+# $(test-program-cmd) is a command that, executed on the build system
+# on which "make" is run, runs the newly built test program that is the
+# second dependency of the makefile target in which
+# $(test-program-cmd) is used. $(test-program-cmd-before-env) and
+# $(test-program-cmd-after-env) are similar, before and after a list
+# of environment variables.
+
+# $(host-test-program-cmd) is a command that, executed on the host
+# for which the library is built, runs the newly built test program that
+# is the second dependency of the makefile target in which
+# $(host-test-program-cmd) is used.
+
+ifeq (yes,$(build-hardcoded-path-in-tests))
+test-via-rtld-prefix =
+test-program-prefix-before-env = $(test-wrapper-env)
+test-program-prefix-after-env =
+test-program-prefix = $(test-program-prefix-before-env) $(run-program-env) \
+ $(test-program-prefix-after-env)
+test-program-cmd-before-env = $(test-wrapper-env)
+test-program-cmd-after-env = $(built-program-file)
+test-program-cmd = $(test-program-cmd-before-env) $(run-program-env) \
+ $(test-program-cmd-after-env)
+host-test-program-cmd = $(built-program-file)
+else
+test-via-rtld-prefix = $(run-via-rtld-prefix)
+test-program-prefix-before-env = $(run-program-prefix-before-env)
+test-program-prefix-after-env = $(run-program-prefix-after-env)
+test-program-prefix = $(run-program-prefix)
+test-program-cmd-before-env = $(built-program-cmd-before-env)
+test-program-cmd-after-env = $(built-program-cmd-after-env)
+test-program-cmd = $(built-program-cmd)
+host-test-program-cmd = $(host-built-program-cmd)
+endif
+
+# Extra flags to pass to GCC.
+ifeq ($(all-warnings),yes)
++gccwarn := -Wall -Wwrite-strings -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar
+else
++gccwarn := -Wall -Wwrite-strings
+endif
++gccwarn += -Wundef
+ifeq ($(enable-werror),yes)
++gccwarn += -Werror
+endif
++gccwarn-c = -Wstrict-prototypes -Wold-style-definition
+
+# We do not depend on the address of constants in different files to be
+# actually different, so allow the compiler to merge them all.
++merge-constants = -fmerge-all-constants
+
+# We have to assume that glibc functions are called in any rounding
+# mode and also change the rounding mode in a few functions. So,
+# disable any optimization that assume default rounding mode.
++math-flags = -frounding-math
+
+# Logically only "libnldbl", "nonlib" and "testsuite" should be using
+# -fno-math-errno. However due to GCC bug #88576, only "libm" can use
+# -fno-math-errno.
++extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno)
+
+# Use 64 bit time_t support for installed programs
+installed-modules = nonlib nscd ldconfig locale_programs \
+ iconvprogs libnss_files libnss_compat libnss_db libnss_hesiod \
+ libutil libpcprofile libnsl
++extra-time-flags = $(if $(filter $(installed-modules),\
+ $(in-module)),-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64)
+
+# We might want to compile with some stack-protection flag.
+ifneq ($(stack-protector),)
++stack-protector=$(stack-protector)
+endif
+
+# Some routines are unsafe to build with stack-protection since they're called
+# before the stack check guard is set up. Provide a way to disable stack
+# protector. The first argument is the extension (.o, .os, .oS) and the second
+# is a list of routines that this path should be applied to.
+define elide-stack-protector
+$(if $(filter $(@F),$(patsubst %,%$(1),$(2))), $(no-stack-protector))
+endef
+
+# The program that makes Emacs-style TAGS files.
+ETAGS := etags
+
+# The `xgettext' program for producing .pot files from sources.
+ifndef XGETTEXT
+XGETTEXT = xgettext
+endif
+
+# The `m4' macro processor; this is used by sysdeps/sparc/Makefile (and
+# perhaps others) to preprocess assembly code in some cases.
+M4 = m4
+
+# To force installation of files even if they are older than the
+# installed files. This variable is included in the dependency list
+# of all installation targets.
+ifeq ($(force-install),yes)
++force = force-install
+else
++force =
+endif
+
+####
+#### End of configuration variables.
+####
+
+# This tells some versions of GNU make before 3.63 not to export all variables.
+.NOEXPORT:
+
+# We want to echo the commands we're running without
+# umpteen zillion filenames along with it (we use `...' instead)
+# but we don't want this echoing done when the user has said
+# he doesn't want to see commands echoed by using -s.
+ifeq ($(silent-make),yes) # if -s
++cmdecho := echo >/dev/null
+else # not -s
++cmdecho := echo
+endif # -s
+
+# These are the flags given to the compiler to tell
+# it what sort of optimization and/or debugging output to do.
+ifndef +cflags
+# If `CFLAGS' was defined, use that.
+ifdef CFLAGS
++cflags := $(filter-out -I%,$(CFLAGS))
+endif # CFLAGS
+endif # +cflags
+
+# If none of the above worked, default to "-g -O".
+ifeq "$(strip $(+cflags))" ""
++cflags := $(default_cflags)
+endif # $(+cflags) == ""
+
+# Force building with -fno-common because hidden_def, compat_symbol
+# and other constructs do not work for common symbols (and would
+# otherwise require specifying __attribute__ ((nocommon)) on a
+# case-by-case basis).
++cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
+ $(+stack-protector) -fno-common
++gcc-nowarn := -w
+
+# Each sysdeps directory can contain header files that both will be
+# used to compile and will be installed. Each can also contain an
+# include/ subdirectory, whose header files will be used to compile
+# but will not be installed, and will take precedence over the
+# installed files. This mirrors the top-level include/ subdirectory.
++sysdep-includes := $(foreach dir,$(+sysdep_dirs),\
+ $(addprefix -I,$(wildcard $(dir)/include) $(dir)))
+
+# These are flags given to the C compiler to tell it to look for
+# include files (including ones given in angle brackets) in the parent
+# library source directory, in the include directory, and in the
+# current directory.
++includes = -I$(..)include $(if $(subdir),$(objpfx:%/=-I%)) \
+ $(+sysdep-includes) $(includes) \
+ $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes)
+
+# Since libio has several internal header files, we use a -I instead
+# of many little headers in the include directory.
+libio-include = -I$(..)libio
+
+# List of non-library modules that we build.
+built-modules = iconvprogs iconvdata ldconfig libmemusage \
+ libpcprofile librpcsvc locale-programs \
+ memusagestat nonlib nscd extramodules libnldbl libsupport \
+ testsuite testsuite-internal
+
+in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
+ $(libof-$(<F)) \
+ $(libof-$(@F)) \
+ libc))
+
+# Build ld.so, libc.so and libpthread.so with -ftls-model=initial-exec
+tls-model = $(if $(filter libpthread rtld \
+ libc,$(in-module)),-ftls-model=initial-exec,)
+
+module-cppflags-real = -include $(common-objpfx)libc-modules.h \
+ -DMODULE_NAME=$(in-module)
+
+# We don't need libc-modules.h and the MODULE_NAME definition for .v.i
+# files. These targets don't (and will likely never need to) use the IS_IN
+# facility. In fact, shlib-versions should not use it because that will
+# create a circular dependency as libc-modules.h is generated from
+# shlib-versions.
+module-cppflags = $(if $(filter %.mk.i %.v.i,$(@F)),,$(module-cppflags-real))
+
+# These are the variables that the implicit compilation rules use.
+# Note that we can't use -std=* in CPPFLAGS, because it overrides
+# the implicit -lang-asm and breaks cpp behavior for .S files--notably
+# it causes cpp to stop predefining __ASSEMBLER__.
+CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \
+ $($(subdir)-CPPFLAGS) \
+ $(+includes) $(defines) $(module-cppflags) \
+ -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
+ $(CPPFLAGS-$(suffix $@)) \
+ $(foreach lib,$(libof-$(basename $(@F))) \
+ $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+ $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
+
+ifneq (no,$(have-tunables))
+CPPFLAGS += -DTOP_NAMESPACE=glibc
+endif
+
+override CFLAGS = -std=gnu11 -fgnu89-inline $(config-extra-cflags) \
+ $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
+ $(+extra-math-flags) $(+extra-time-flags) \
+ $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
+ $(CFLAGS-$(@F)) $(tls-model) \
+ $(foreach lib,$(libof-$(basename $(@F))) \
+ $(libof-$(<F)) $(libof-$(@F)),$(CFLAGS-$(lib)))
+# Use our copies of cstdlib and cmath.
+override CXXFLAGS = -I$(common-objpfx) $(c++-sysincludes) \
+ $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
+ $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
+
+# If everything is compiled with -fPIC (implicitly) we must tell this by
+# defining the PIC symbol.
+ifeq (yes,$(build-pic-default))
+pic-default = -DPIC
+endif
+
+# Enable object files for different versions of the library.
+# Various things use $(object-suffixes) to know what all to make.
+# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
+# to pass different flags for each flavor.
+libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
+# .op may be added to all-object-suffixes below.
+all-object-suffixes := .o .os .oS
+object-suffixes :=
+CPPFLAGS-.o = $(pic-default)
+# libc.a must be compiled with -fPIE/-fpie for static PIE.
+CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) $(pie-default)
+libtype.o := lib%.a
+object-suffixes += .o
+ifeq (yes,$(build-shared))
+# Under --enable-shared, we will build a shared library of PIC objects.
+# The PIC object files are named foo.os.
+object-suffixes += .os
+pic-cppflags = -DPIC -DSHARED
+CPPFLAGS-.os = $(pic-cppflags)
+CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag)
+libtype.os := lib%_pic.a
+# This can be changed by a sysdep makefile
+pic-ccflag = -fPIC
+# This one should always stay like this unless there is a very good reason.
+PIC-ccflag = -fPIC
+endif
+# This can be changed by a sysdep makefile
+pie-ccflag = -fPIE
+no-pie-ccflag = -fno-pie
+# This one should always stay like this unless there is a very good reason.
+PIE-ccflag = -fPIE
+ifeq (yes,$(build-profile))
+# Under --enable-profile, we will build a static library of profiled objects.
+# The profiled object files are named foo.op.
+all-object-suffixes += .op
+object-suffixes += .op
+CPPFLAGS-.op = -DPROF $(pic-default)
+# libc_p.a must be compiled with -fPIE/-fpie for static PIE.
+CFLAGS-.op = -pg $(pie-default)
+libtype.op = lib%_p.a
+endif
+
+# Convenience variable for when we want to treat shared-library cases
+# differently from the rest.
+object-suffixes-noshared := $(filter-out .os,$(object-suffixes))
+
+object-suffixes-for-libc := $(object-suffixes)
+
+ifeq (yes,$(build-shared))
+# Build special library that contains the static-only routines for libc.
+object-suffixes-for-libc += .oS
+
+# Must build the routines as PIC, though, because they can end up in (users')
+# shared objects. We don't want to use CFLAGS-os because users may, for
+# example, make that processor-specific.
+CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags)
+CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
+libtype.oS = lib%_nonshared.a
+endif
+
+# The assembler can generate debug information too.
+ifndef ASFLAGS
+ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS))
+endif
+override ASFLAGS += -Werror=undef $(ASFLAGS-config) $(asflags-cpu)
+
+ifndef BUILD_CC
+BUILD_CC = $(CC)
+endif
+
+move-if-change = $(SHELL) $(..)scripts/move-if-change
+
+-include $(common-objpfx)sysd-sorted
+subdirs = $(sorted-subdirs)
+subdir-srcdirs = $(foreach dir,$(subdirs),\
+ $(firstword $($(dir)-srcdir) $(..)$(dir)))
+
+# This is a pair of implicit rules to preprocess a file with # comments,
+# %ifdef et al, based on config.h settings or other %include'd files.
+# We use chained rules instead of a pipeline here so that we can properly
+# check the exit status of cpp rather than using its bad output when there
+# is a preprocessing error. Another rule should depend on the output file
+# `FOO.v', and along with that `FOO.v.i' should be given dependencies
+# listing both its input files, and any header files that it may reference
+# (but no commands).
+%.v.i: $(common-objpfx)config.h $(..)Makeconfig
+ sed '/^[ ]*%/!s/#.*$$//;/^[ ]*$$/d;s/^[ ]*%/#/' \
+ $(filter-out FORCE %.h $(..)Makeconfig,$^) \
+ | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - \
+ > $@T
+ mv -f $@T $@
+%.v: %.v.i
+ sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T
+ mv -f $@T $@
+
+ifeq (yes, $(build-shared))
+
+# To generate a header to support more than one ABI for different
+# architecture variants, the CPU/Makefile defines abi-variants to be a
+# list of names for those variants (e.g. 32 64), and, for each variant,
+# defines abi-$(variant)-condition to be the condition for those options
+# to use in a C #if condition. abi-includes may be defined to a list of
+# headers to include in the generated header, if the default does not
+# suffice. default-abi is defined to be the ABI for the current glibc
+# build.
+
+ifndef abi-includes
+abi-includes := bits/wordsize.h
+endif
+
+# Process the shlib-versions file, which tells us what shared library
+# version numbers to use when we install shared objects on this system.
+# We need to wait until $(subdirs) is complete.
+ifeq ($(sysd-sorted-done),t)
+-include $(common-objpfx)soversions.mk
+ifndef avoid-generated
+$(common-objpfx)shlib-versions.v.i: \
+ $(wildcard $(+sysdep_dirs:=/shlib-versions) \
+ $(subdir-srcdirs:=/shlib-versions)) \
+ $(..)shlib-versions
+
+$(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
+ $(common-objpfx)shlib-versions.v
+ $(AWK) -f $^ > $@T
+ mv -f $@T $@
+$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
+ (while read which lib number setname; do \
+ eval seen_$$which=1; \
+ test x"$$which" = xDEFAULT || continue; \
+ case $$number in \
+ [0-9]*) echo "$$lib.so-version=.$$number"; \
+ echo "all-sonames+=$$lib=$$lib.so\$$($$lib.so-version)";;\
+ *) echo "$$lib.so-version=$$number"; \
+ echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
+ esac; \
+ done; \
+ echo soversions.mk-done = t;) < $< > $@T; exit 0
+ mv -f $@T $@
+endif
+endif
+
+postclean-generated += soversions.mk soversions.i \
+ shlib-versions.v shlib-versions.v.i
+
+before-compile += $(common-objpfx)libc-modules.h
+common-generated += libc-modules.h libc-modules.stmp
+ifeq ($(soversions.mk-done),t)
+# Generate a header with macro definitions for use with the IS_IN macro.
+# These are the possible values for the MODULE_NAME macro defined when building
+# sources, to identify which module the translation unit is going to be built
+# into.
+$(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
+$(common-objpfx)libc-modules.stmp: $(..)scripts/gen-libc-modules.awk \
+ $(common-objpfx)soversions.i
+ $(AWK) -v buildlist="$(subst -,_,$(built-modules))" -f $^ > ${@:stmp=T}
+ $(move-if-change) ${@:stmp=T} ${@:stmp=h}
+ touch $@
+
+endif
+
+# Build the tunables list header early since it could be used by any module in
+# glibc.
+ifneq (no,$(have-tunables))
+before-compile += $(common-objpfx)dl-tunable-list.h
+common-generated += dl-tunable-list.h dl-tunable-list.stmp
+
+$(common-objpfx)dl-tunable-list.h: $(common-objpfx)dl-tunable-list.stmp; @:
+$(common-objpfx)dl-tunable-list.stmp: \
+ $(..)scripts/gen-tunables.awk \
+ $(..)elf/dl-tunables.list \
+ $(wildcard $(subdirs:%=$(..)%/dl-tunables.list)) \
+ $(wildcard $(sysdirs:%=%/dl-tunables.list))
+ $(AWK) -f $^ > ${@:stmp=T}
+ $(move-if-change) ${@:stmp=T} ${@:stmp=h}
+ touch $@
+endif
+
+# Dump the GCC macros used by the default compiler flags to a header
+# file, so that they can be inspected when using different compiler
+# flags. Add the GCCMACRO prefix to make these macro names unique.
+$(common-objpfx)gcc-macros.h.in: $(common-objpfx)config.status
+ $(CC) $(CFLAGS) $(CPPFLAGS) -E -dM -x c -o $@ /dev/null
+$(common-objpfx)gcc-macros.h: $(common-objpfx)gcc-macros.h.in
+ sed 's/^#define /#define GCCMACRO/' < $< > $@
+before-compile += $(common-objpfx)gcc-macros.h
+
+# Generate version maps, but wait until sysdep-subdirs is known
+ifeq ($(sysd-sorted-done),t)
+ifeq ($(build-shared),yes)
+-include $(common-objpfx)sysd-versions
+-include $(common-objpfx)Versions.mk
+$(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions
+common-generated += $(version-maps)
+postclean-generated += sysd-versions Versions.all abi-versions.h \
+ Versions.def Versions.v.i Versions.v Versions.mk
+
+ifndef avoid-generated
+ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs))
+sysd-versions-force = FORCE
+FORCE:
+endif
+
+$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \
+ $(common-objpfx)Versions.v
+ LC_ALL=C $(AWK) -f $^ > $@T
+ mv -f $@T $@
+
+$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
+ $(common-objpfx)soversions.i \
+ $(common-objpfx)Versions.def
+ { while read which lib version setname; do \
+ test x"$$which" = xDEFAULT || continue; \
+ test -z "$$setname" || echo "$$lib : $$setname"; \
+ done < $(word 2,$^); \
+ cat $(word 3,$^); \
+ } | LC_ALL=C $(AWK) -f $< > $@T
+ mv -f $@T $@
+$(common-objpfx)Versions.mk: $(..)scripts/haveversions.awk \
+ $(common-objpfx)Versions.all
+ $(AWK) -f $^ > $@T
+ mv -f $@T $@
+# See %.v/%.v.i implicit rules in Makeconfig.
+$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \
+ $(wildcard $(sysdirs:%=%/Versions)) \
+ $(sysd-versions-force)
+$(common-objpfx)sysd-versions: $(common-objpfx)versions.stmp
+$(common-objpfx)versions.stmp: $(common-objpfx)Versions.all \
+ $(common-objpfx)Versions.v \
+ $(..)scripts/versions.awk
+ ( echo 'sysd-versions-subdirs = $(subdirs) $(config-sysdirs)' ; \
+ cat $(word 2,$^) \
+ | LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
+ -v move_if_change='$(move-if-change)' \
+ -f $(word 3,$^); \
+ ) > $(common-objpfx)sysd-versionsT
+ mv -f $(common-objpfx)sysd-versionsT $(common-objpfx)sysd-versions
+ touch $@
+endif # avoid-generated
+endif # $(build-shared) = yes
+
+-include $(common-objpfx)time64-compat.mk
+postclean-generated += time64-compat.mk
+
+$(common-objpfx)time64-compat.mk: $(common-objpfx)time64-compat.mk.i \
+ $(sysd-versions-force)
+ sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T
+ mv -f $@T $@
+$(common-objpfx)time64-compat.mk.i: $(..)Makeconfig
+ printf "#include <time64-compat.h>\n#ifdef TIME64_NON_DEFAULT\nhave-time64-compat = yes\n#endif" \
+ | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - > $@T
+ mv -f $@T $@
+
+
+endif # sysd-sorted-done
+
+# The name under which the run-time dynamic linker is installed.
+# We are currently going for the convention that `/lib/ld.so.1'
+# names the SVR4/ELF ABI-compliant dynamic linker.
+ifndef rtld-installed-name
+ifdef ld.so-version
+rtld-installed-name = $(ld.so-version)
+else
+rtld-installed-name = ld.so.1
+endif
+endif
+
+ifndef rtld-version-installed-name
+rtld-version-installed-name = ld-$(version).so
+endif
+
+endif # build-shared
+
+
+ifeq ($(build-shared),yes)
+libm = $(common-objpfx)math/libm.so$(libm.so-version)
+libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
+else
+libm = $(common-objpfx)math/libm.a
+libmvec = $(common-objpfx)mathvec/libmvec.a
+endif
+
+ifeq ($(build-shared),yes)
+libsupport = $(common-objpfx)support/libsupport_nonshared.a
+else
+libsupport = $(common-objpfx)support/libsupport.a
+endif
+
+# This is a partial list of subdirectories containing the library source.
+# The order is more or less arbitrary. The sorting step will take care of the
+# dependencies and generate sorted-subdirs dynamically.
+all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
+ stdlib stdio-common libio malloc string wcsmbs time dirent \
+ grp pwd posix io termios resource misc socket sysvipc gmon \
+ gnulib iconv iconvdata wctype manual shadow gshadow po argp \
+ localedata timezone rt conform debug mathvec support \
+ dlfcn elf
+
+ifeq ($(build-crypt),yes)
+all-subdirs += crypt
+rpath-dirs += crypt
+endif
+
+ifndef avoid-generated
+# sysd-sorted itself will contain rules making the sysd-sorted target
+# depend on Depend files. But if you just added a Depend file to an
+# existing directory not in all-subdirs, then sysd-sorted needs to
+# be regenerated, so it depends on existing $(sorted-subdirs:=/Depend) files.
+all-Depend-files := $(wildcard $(sort \
+ $(foreach dir,$(all-subdirs),\
+ $(firstword $($(dir)-srcdir) \
+ $(..)$(dir))/Depend) \
+ $(sorted-subdirs:=/Depend)))
+$(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk \
+ $(common-objpfx)config.make $(..)Makeconfig \
+ $(wildcard $(sysdirs:=/Subdirs)) \
+ $(all-Depend-files)
+ $(AWK) -f $< \
+ -v subdirs='$(all-subdirs)' \
+ -v srcpfx='$(..)' \
+ $(filter %/Subdirs %/Depend,$^) > $@-tmp
+ mv -f $@-tmp $@
+$(all-Depend-files): ;
+endif
+
+# This gives partial TARGET:SOURCE pattern pairs to have rules
+# emitted into sysd-rules. A sysdeps Makeconfig fragment can
+# add its own special object file prefix to this list with e.g. foo-%:%
+# to have foo-*.? compiled from *.? using $(foo-CPPFLAGS).
+sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_%
+
+# Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here.
+sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig))
+ifneq (,$(sysdep-makeconfigs))
+include $(sysdep-makeconfigs)
+endif
+
+# Compute just the target patterns. Makeconfig has set sysd-rules-patterns.
+sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\
+ $(firstword $(subst :, ,$p))))
+
+# $(libpthread-routines-var) and $(librt-routines-var) are the make
+# variable to which pthread routines need to be added to land in the
+# right library.
+ifeq ($(pthread-in-libc),yes)
+libpthread-routines-var = routines
+librt-routines-var = routines
+libanl-routines-var = routines
+else
+libpthread-routines-var = libpthread-routines
+librt-routines-var = librt-routines
+libanl-routines-var = libanl-routines
+endif
+
+# A sysdeps Makeconfig fragment may set libc-reentrant to yes.
+ifeq (yes,$(libc-reentrant))
+defines += -D_LIBC_REENTRANT
+
+libio-mtsafe = -D_IO_MTSAFE_IO
+endif
+
+# The name to give to a test in test results summaries.
+test-name = $(strip $(patsubst %.out, %, $(patsubst $(common-objpfx)%, %, $@)))
+
+# Likewise, in XFAIL variable names.
+test-xfail-name = $(strip $(patsubst %.out, %, $(patsubst $(objpfx)%, %, $@)))
+
+# Command to output a test status line (such as PASS: test-name). If
+# test-xfail-$(test-xfail-name) has a nonempty value, the status will be
+# XPASS or XFAIL rather than PASS or FAIL.
+evaluate-test = $(..)scripts/evaluate-test.sh $(test-name) $$? \
+ $(if $(test-xfail-$(test-xfail-name)),true,false) \
+ $(if $(stop-on-test-failure),true,false) \
+ > $(common-objpfx)$(test-name).test-result
+
+endif # Makeconfig not yet included
+
+# Local Variables:
+# mode: makefile
+# End:
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/Makerules
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/Makerules (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/Makerules (revision 35)
@@ -0,0 +1,1506 @@
+# Copyright (C) 1991-2023 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
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+#
+# Common rules for making the GNU C library. This file is included
+# by the top-level Makefile and by all subdirectory makefiles
+# (through Rules).
+#
+ifneq (,)
+This makefile requires GNU Make.
+endif
+
+REQUIRED_MAKE_VERSION = 3.74
+REAL_MAKE_VERSION = $(firstword $(MAKE_VERSION))
+
+ifneq ($(REQUIRED_MAKE_VERSION), \
+ $(firstword $(sort $(REAL_MAKE_VERSION) $(REQUIRED_MAKE_VERSION))))
+Wrong GNU Make version. See above for the version needed.
+endif
+
+
+ifdef subdir
+.. := ../
+endif # subdir
+
+# If `sources' was defined by the parent makefile, undefine it so
+# we will later get it from wildcard search in this directory.
+ifneq "$(findstring env,$(origin sources))" ""
+sources :=
+endif
+
+oPATH := $(PATH)
+PATH := this definition should take precedence over $(oPATH)
+ifeq ($(PATH),$(oPATH))
+You must not use the -e flag when building the GNU C library.
+else
+PATH := $(oPATH)
+endif
+
+ifndef +included-Makeconfig
+include $(..)Makeconfig
+endif
+
+# This variable is used in ``include $(o-iterator)'' after defining
+# $(o-iterator-doit) to produce some desired rule using $o for the object
+# suffix, and setting $(object-suffixes-left) to $(object-suffixes); a copy
+# is produced for each object suffix in use.
+o-iterator = $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left))
+
+# Include any system-specific makefiles.
+
+# This is here so things in sysdep Makefiles can easily depend on foo.h as
+# appropriate and not worry about where foo.h comes from, which may be
+# system dependent and not known by that Makefile.
+vpath %.h $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
+ $(+sysdep_dirs) $(..)))
+
+# The same is true for RPC source files.
+vpath %.x $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
+ $(+sysdep_dirs) $(..)))
+
+# Some sysdep makefiles use this to distinguish being included here from
+# being included individually by a subdir makefile (hurd/Makefile needs this).
+in-Makerules := yes
+
+sysdep-makefiles := $(wildcard $(sysdirs:=/Makefile))
+ifneq (,$(sysdep-makefiles))
+include $(sysdep-makefiles)
+endif
+
+
+# Reorder before-compile so that mach things come first, and hurd things
+# second, before all else. The mach and hurd subdirectories have many
+# generated header files which the much of rest of the library depends on,
+# so it is best to build them first (and mach before hurd, at that).
+before-compile := $(filter $(common-objpfx)mach% $(common-objpfx)hurd%,\
+ $(before-compile)) \
+ $(filter-out $(common-objpfx)mach% $(common-objpfx)hurd%,\
+ $(before-compile))
+
+# Even before that, we need abi-versions.h which is generated right here.
+ifeq ($(build-shared),yes)
+ifndef avoid-generated
+before-compile := $(common-objpfx)abi-versions.h $(before-compile)
+$(common-objpfx)abi-versions.h: $(..)scripts/abi-versions.awk \
+ $(common-objpfx)Versions.all
+ LC_ALL=C $(AWK) -f $^ > $@T
+ mv -f $@T $@
+
+$(common-objpfx)%.latest: $(common-objpfx)abi-versions.h
+ sed -n '/ VERSION_$*_/{s/^.*_\([A-Z0-9_]*\).*$$/\1/;h;};$${g;p;}' \
+ $(common-objpfx)abi-versions.h > $@T
+ mv -f $@T $@
+
+# first-versions.h and ldbl-compat-choose.h provide macros used in
+# various symbol versioning macro calls.
+before-compile := $(common-objpfx)first-versions.h \
+ $(common-objpfx)ldbl-compat-choose.h $(before-compile)
+$(common-objpfx)first-versions.h: $(common-objpfx)versions.stmp
+$(common-objpfx)ldbl-compat-choose.h: $(common-objpfx)versions.stmp
+endif # avoid-generated
+endif # $(build-shared) = yes
+
+ifndef avoid-generated
+ifneq (,$(CXX))
+# If C++ headers <cstdlib> or <cmath> are used, GCC 6 will include
+# /usr/include/stdlib.h or /usr/include/math.h from "#include_next"
+# (instead of stdlib/stdlib.h or math/math.h in the glibc source
+# directory), and this turns up as a make dependency. An implicit
+# rule will kick in and make will try to install stdlib/stdlib.h or
+# math/math.h as /usr/include/stdlib.h or /usr/include/math.h because
+# the target is out of date. We make a copy of <cstdlib> and <cmath>
+# in the glibc build directory so that stdlib/stdlib.h and math/math.h
+# will be used instead of /usr/include/stdlib.h and /usr/include/math.h.
+before-compile := $(common-objpfx)cstdlib $(common-objpfx)cmath \
+ $(before-compile)
+$(common-objpfx)cstdlib: $(c++-cstdlib-header)
+ $(INSTALL_DATA) $< $@T
+ $(move-if-change) $@T $@
+$(common-objpfx)cmath: $(c++-cmath-header)
+ $(INSTALL_DATA) $< $@T
+ $(move-if-change) $@T $@
+ifneq (,$(c++-bits-std_abs-h))
+# Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
+# including /usr/include/stdlib.h.
+before-compile := $(common-objpfx)bits/std_abs.h $(before-compile)
+$(common-objpfx)bits/std_abs.h: $(c++-bits-std_abs-h)
+ $(INSTALL_DATA) $< $@T
+ $(move-if-change) $@T $@
+endif
+endif
+
+before-compile := $(common-objpfx)libc-abis.h $(before-compile)
+$(common-objpfx)libc-abis.h: $(common-objpfx)libc-abis.stamp; @:
+$(common-objpfx)libc-abis.stamp: $(..)scripts/gen-libc-abis \
+ $(firstword $(wildcard $(sysdirs:=/libc-abis)) \
+ $(..)libc-abis) \
+ $(..)Makerules
+ $(SHELL) $< \
+ $(base-machine)-$(config-vendor)-$(config-os) \
+ < $(word 2,$^) > $(@:.stamp=.h)T
+ $(move-if-change) $(@:.stamp=.h)T $(@:.stamp=.h)
+ touch $@
+common-generated += $(common-objpfx)libc-abis.h
+endif # avoid-generated
+
+ifeq (yes,$(build-shared))
+$(common-objpfx)runtime-linker.h: $(common-objpfx)runtime-linker.stamp; @:
+$(common-objpfx)runtime-linker.stamp: $(common-objpfx)config.make
+ $(make-target-directory)
+ echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
+ > ${@:stamp=T}
+ $(move-if-change) ${@:stamp=T} ${@:stamp=h}
+ touch $@
+endif
+
+# Make sure the subdirectory for object files gets created.
+ifdef objpfx
+ifeq (,$(wildcard $(objpfx).))
+before-compile += $(objpfx).
+$(objpfx).:
+ $(make-target-directory)
+endif
+endif
+
+# Remove existing files from `before-compile'. Things are added there when
+# they must exist for dependency generation to work right, but once they
+# exist there is no further need for every single file to depend on them,
+# and those gratuitous dependencies result in many gratuitous
+# recompilations.
+before-compile := $(filter-out $(wildcard $(before-compile)),$(before-compile))
+
+# Don't let any before-compile file be an intermediate and get removed.
+ifdef before-compile
+$(before-compile):
+endif
+
+# We don't want $(common-objpfx) files to depend on miscellaneous stuff
+# in subdirs.
+ifdef subdir
+common-before-compile := $(filter-out $(objpfx)%,$(before-compile))
+else
+common-before-compile = $(before-compile)
+endif
+
+ifndef subdir
+# If a makefile needs to do something conditional on something that
+# can only be figured out from headers, write a FOO.make.c input
+# file that uses cpp contructs and contains @@@ LINE @@@ for each LINE
+# to emit in the generated makefile, and use -include $(common-objpfx)FOO.make.
+#
+# We only generate these in the top-level makefile, to avoid any weirdness
+# from subdir-specific makefile tweaks creeping in on an update.
+$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
+ rm -f $@T $@.dT
+ (echo '# Generated from $*.make.c by Makerules.'; \
+ $(CC) $(CFLAGS) $(CPPFLAGS) -E -DASSEMBLER $< \
+ -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
+ | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
+ echo 'common-generated += $(@F)'; \
+ sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \
+ rm -f $@.dT) > $@T
+ mv -f $@T $@
+endif
+
+ifdef subdir
+sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \
+ -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g'
+else
+sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \
+ -e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g'
+endif
+
+ifdef gen-py-const-headers
+# We'll use a static pattern rule to match .pysym files with their
+# corresponding generated .py files.
+# The generated .py files go in the submodule's dir in the glibc build dir.
+py-const-files := $(patsubst %.pysym,%.py,$(gen-py-const-headers))
+py-const-dir := $(objpfx)
+py-const := $(addprefix $(py-const-dir),$(py-const-files))
+py-const-script := $(..)scripts/gen-as-const.py
+
+# This is a hack we use to generate .py files with constants for
+# Python code.
+#
+# $@.tmp is a temporary file we use to store the partial contents of
+# the target file. We do this instead of just writing on $@ because,
+# if the build process terminates prematurely, re-running Make
+# wouldn't run this rule since Make would see that the target file
+# already exists (despite it being incomplete).
+#
+# The output is redirected to a .py file; we'll import it in the main
+# Python code to read the constants generated by gen-as-const.py.
+$(py-const): $(py-const-dir)%.py: %.pysym $(py-const-script) \
+ $(common-before-compile)
+ $(make-target-directory)
+ $(PYTHON) $(py-const-script) --python \
+ --cc="$(CC) $(CFLAGS) $(CPPFLAGS)" $< \
+ > $@.tmp
+ mv -f $@.tmp $@
+
+generated += $(py-const)
+endif # gen-py-const-headers
+
+ifdef gen-as-const-headers
+# Generating headers for assembly constants.
+# We need this defined early to get into before-compile before
+# it's used in sysd-rules, below.
+# Define GEN_AS_CONST_HEADERS to avoid circular dependency [BZ #22792].
+# NB: <tcb-offsets.h> is generated from tcb-offsets.sym to define
+# offsets and sizes of types in <tls.h> and maybe <pthread.h> which
+# may include <tcb-offsets.h>. Target header files can check if
+# GEN_AS_CONST_HEADERS is defined to avoid circular dependency which
+# may lead to build hang on a many-core machine.
+$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.py \
+ %.sym $(common-before-compile)
+ $(PYTHON) $< --cc="$(CC) $(CFLAGS) $(CPPFLAGS) -DGEN_AS_CONST_HEADERS \
+ -MD -MP -MF $(@:.h=.h.d)T \
+ -MT '$(@:.h=.h.d) $(@:.h.d=.h)'" \
+ $(filter %.sym,$^) > $(@:.h.d=.h)T
+ sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
+ $(@:.h=.h.d)T > $(@:.h=.h.d)T2
+ rm -f $(@:.h=.h.d)T
+ mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d)
+ mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
+vpath %.sym $(sysdirs)
+before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
+
+tests-internal += $(gen-as-const-headers:%.sym=test-as-const-%)
+generated += $(gen-as-const-headers:%.sym=test-as-const-%.c)
+$(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.py $(..)Makerules \
+ %.sym $(common-objpfx)%.h
+ ($(AWK) '{ sub(/^/, "asconst_", $$2); print; }' $(filter %.h,$^); \
+ $(PYTHON) $< --test $(filter %.sym,$^)) > $@T
+ mv -f $@T $@
+endif
+
+ifeq (yes,$(build-shared))
+# Generate the header containing the names of all shared libraries.
+# We use a stamp file to avoid unnecessary recompilations.
+before-compile += $(common-objpfx)gnu/lib-names.h
+ifeq ($(soversions.mk-done),t)
+ifndef abi-variants
+lib-names-h-abi = gnu/lib-names.h
+lib-names-stmp-abi = gnu/lib-names.stmp
+else
+lib-names-h-abi = gnu/lib-names-$(default-abi).h
+lib-names-stmp-abi = gnu/lib-names-$(default-abi).stmp
+before-compile += $(common-objpfx)$(lib-names-h-abi)
+common-generated += gnu/lib-names.h
+install-others-nosubdir: $(inst_includedir)/$(lib-names-h-abi)
+$(common-objpfx)gnu/lib-names.h:
+ $(make-target-directory)
+ { \
+ echo '/* This file is automatically generated.';\
+ echo ' It defines macros to allow user program to find the shared'; \
+ echo ' library files which come as part of GNU libc. */'; \
+ echo '#ifndef __GNU_LIB_NAMES_H'; \
+ echo '#define __GNU_LIB_NAMES_H 1'; \
+ echo ''; \
+ $(if $(abi-includes), \
+ $(foreach h,$(abi-includes), echo '#include <$(h)>';) \
+ echo '';) \
+ $(foreach v,$(abi-variants),\
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)'; \
+ echo '# include <gnu/lib-names-$(v).h>'); \
+ $(if $(abi-$(v)-condition),echo '#endif';)) \
+ echo ''; \
+ echo '#endif /* gnu/lib-names.h */'; \
+ } > $@
+endif
+$(common-objpfx)$(lib-names-h-abi): $(common-objpfx)$(lib-names-stmp-abi); @:
+$(common-objpfx)$(lib-names-stmp-abi): $(..)scripts/lib-names.awk \
+ $(common-objpfx)soversions.i
+ $(make-target-directory)
+ { \
+ $(if $(abi-variants), \
+ echo '/* This file is automatically generated. */';\
+ echo '#ifndef __GNU_LIB_NAMES_H'; \
+ echo '# error "Never use <$(lib-names-h-abi)> directly; include <gnu/lib-names.h> instead."'; \
+ echo '#endif';, \
+ echo '/* This file is automatically generated.';\
+ echo ' It defines macros to allow user program to find the shared'; \
+ echo ' library files which come as part of GNU libc. */'; \
+ echo '#ifndef __GNU_LIB_NAMES_H'; \
+ echo '#define __GNU_LIB_NAMES_H 1';) \
+ echo ''; \
+ ($(foreach s,$(all-sonames), echo $(s);)) \
+ | LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort; \
+ $(if $(abi-variants),, \
+ echo ''; \
+ echo '#endif /* gnu/lib-names.h */';) \
+ } > ${@:stmp=T}
+ $(move-if-change) ${@:stmp=T} ${@:stmp=h}
+ touch $@
+endif
+common-generated += $(lib-names-h-abi) $(lib-names-stmp-abi)
+endif
+
+###############################################################################
+# NOTE! Everything adding to before-compile needs to come before this point! #
+###############################################################################
+
+# Generate an ordered list of implicit rules which find the source files in
+# each sysdep directory. The old method was to use vpath to search all the
+# sysdep directories. However, that had the problem that a .S file in a
+# later directory would be chosen over a .c file in an earlier directory,
+# which does not preserve the desired sysdeps ordering behavior.
+
+# System-dependent makefiles can put in `inhibit-sysdep-asm' regexps
+# matching sysdep directories whose assembly source files should be
+# suppressed.
+
+-include $(common-objpfx)sysd-rules
+ifneq ($(sysd-rules-sysdirs),$(config-sysdirs))
+# The value of $(+sysdep_dirs) the sysd-rules was computed for
+# differs from the one we are using now. So force a rebuild of sysd-rules.
+sysd-rules-force = FORCE
+FORCE:
+endif
+$(common-objpfx)sysd-rules: $(..)scripts/sysd-rules.awk \
+ $(common-objpfx)config.make $(..)Makerules \
+ $(sysdep-makefiles) $(sysdep-makeconfigs) \
+ $(sysd-rules-force)
+ -@rm -f $@T
+ LC_ALL=C $(AWK) -f $< > $@T \
+ -v all_object_suffixes='$(all-object-suffixes)' \
+ -v inhibit_sysdep_asm='$(inhibit-sysdep-asm)' \
+ -v sysd_rules_patterns='$(sysd-rules-patterns)' \
+ -v config_sysdirs='$(config-sysdirs)'
+ mv -f $@T $@
+
+ifndef sysd-rules-done
+# Don't do deps until this exists, because it provides rules to make the deps.
+no_deps=t
+endif
+
+define o-iterator-doit
+$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.cc $(before-compile); $$(compile-command.cc)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+# Omit the objpfx rules when building in the source tree, because
+# objpfx is empty and so these rules just override the ones above.
+ifdef objpfx
+# Define first rules to find the source files in $(objpfx).
+# Generated source files will end up there.
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.cc $(before-compile); $$(compile-command.cc)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+endif
+
+# Generate .dT files as we compile.
+compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@
+compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)
+compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
+compile-command.cc = $(compile.cc) $(OUTPUT_OPTION) $(compile-mkdep-flags)
+
+# Like compile-mkdep-flags, but for use with $(BUILD_CC). We don't want to
+# track system includes here, they may spuriously trigger an install rule,
+# and would cause the check-local-headers test to fail.
+native-compile-mkdep-flags = -MMD -MP -MF $@.dt -MT $@
+
+# GCC can grok options after the file name, and it looks nicer that way.
+compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
+compile.cc = $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS)
+compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
+COMPILE.c = $(CC) -c $(CFLAGS) $(CPPFLAGS)
+COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
+
+# We need this for the output to go in the right place. It will default to
+# empty if make was configured to work with a cc that can't grok -c and -o
+# together. You can't compile the C library with such a compiler.
+OUTPUT_OPTION = -o $@
+
+# This is the end of the pipeline for compiling generated C code.
+compile-stdin.c = $(COMPILE.c) -o $@ -x c - $(compile-mkdep-flags)
+
+# We need the $(CFLAGS) to be in there to have the right predefines during
+# the dependency run for C sources. But having it for assembly sources can
+# get the wrong predefines.
+S-CPPFLAGS = -DASSEMBLER $(asm-CPPFLAGS)
+
+ifneq (,$(objpfx))
+# Continuation lines here are dangerous because they introduce spaces!
+define sed-remove-objpfx
+-e 's@ $(subst .,\.,$(subst @,\@,$(common-objpfx)))@ $$(common-objpfx)@g' \
+-e 's@^$(subst .,\.,$(subst @,\@,$(common-objpfx)))@$$(common-objpfx)@g'
+endef
+endif
+
+# Modify the list of routines we build for different targets
+
+ifeq (yes,$(build-shared))
+ifndef libc.so-version
+# Undefine this because it can't work when we libc.so is unversioned.
+static-only-routines =
+endif
+endif
+
+elide-routines.oS += $(filter-out $(static-only-routines),\
+ $(routines) $(aux) $(sysdep_routines))
+elide-routines.os += $(static-only-routines)
+
+# If we have versioned code we don't need the old versions in any of the
+# static libraries.
+elide-routines.o += $(shared-only-routines)
+elide-routines.op += $(shared-only-routines)
+
+# Shared library building.
+
+ifeq (yes,$(build-shared))
+
+# Reference map file only when shared libraries are built and a map file name
+# is given.
+ifeq ($(build-shared),yes)
+map-file = $(firstword $($(@F:.so=-map)) \
+ $(addprefix $(common-objpfx), \
+ $(filter $(@F:.so=.map),$(version-maps))))
+load-map-file = $(map-file:%=-Wl,--version-script=%)
+endif
+
+# Compiler arguments to use to link a shared object with libc and
+# ld.so. This is intended to be as similar as possible to a default
+# link with an installed libc.
+link-libc-args = -Wl,--start-group \
+ $(libc-for-link) \
+ $(common-objpfx)libc_nonshared.a \
+ -Wl,--as-needed $(elf-objpfx)ld.so -Wl,--no-as-needed \
+ -Wl,--end-group
+
+# The corresponding shared libc to use. This may be modified for a
+# particular target.
+libc-for-link = $(common-objpfx)libc.so
+
+# The corresponding dependencies. As these are used in dependencies,
+# not just commands, they cannot use target-specific variables so need
+# to name both possible libc.so objects.
+link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \
+ $(common-objpfx)libc_nonshared.a $(elf-objpfx)ld.so
+
+# Pattern rule to build a shared object from an archive of PIC objects.
+# This must come after the installation rules so Make doesn't try to
+# build shared libraries in place from the installed *_pic.a files.
+# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
+# on other shared objects. The linking with libc and ld.so is intended
+# to be as similar as possible to a default link with an installed libc.
+lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(link-libc-deps)
+ $(build-shlib) $(link-libc-args)
+ $(call after-link,$@)
+
+define build-shlib-helper
+$(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) \
+ $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) $(rtld-LDFLAGS) \
+ $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
+ $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
+ $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
+ -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
+ $(LDFLAGS.so) $(LDFLAGS-lib.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
+ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
+endef
+
+ifeq (yes,$(use-default-link))
+# If the linker is good enough, we can let it use its default linker script.
+# In the long term the custom linker script will be removed.
+shlib-lds =
+shlib-lds-flags =
+else
+# binutils only position loadable notes into the first page for binaries,
+# not for shared objects
+# lld --verbose does not dump a linker script. Use -fuse-ld=bfd.
+$(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
+ $(LINK.o) -shared -Wl,-O1 \
+ -nostdlib -nostartfiles -fuse-ld=bfd \
+ $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \
+ -Wl,--verbose 2>/dev/null | \
+ sed > $@T \
+ -e '/^=========/,/^=========/!d;/^=========/d' \
+ $(if $(filter yes,$(have-hash-style)), \
+ -e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+ -e '/^[ ]*\.hash[ ]*:.*$$/{h;d;}' \
+ -e '/DATA_SEGMENT_ALIGN/{H;g}' \
+ , \
+ -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+ ) \
+ -e 's/^.*\*(\.dynbss).*$$/& \
+ PROVIDE(__start___libc_freeres_ptrs = .); \
+ *(__libc_freeres_ptrs) \
+ PROVIDE(__stop___libc_freeres_ptrs = .);/'\
+ -e 's@^.*\*(\.jcr).*$$@& \
+ PROVIDE(__start___libc_subfreeres = .);\
+ __libc_subfreeres : { *(__libc_subfreeres) }\
+ PROVIDE(__stop___libc_subfreeres = .);\
+ PROVIDE(__start___libc_IO_vtables = .);\
+ __libc_IO_vtables : { *(__libc_IO_vtables) }\
+ PROVIDE(__stop___libc_IO_vtables = .);\
+ /DISCARD/ : { *(.gnu.glibc-stub.*) }@'
+ test -s $@T
+ mv -f $@T $@
+common-generated += shlib.lds
+
+shlib-lds = $(common-objpfx)shlib.lds
+shlib-lds-flags = -T $(shlib-lds)
+endif
+
+define build-shlib
+$(build-shlib-helper) -o $@ $(shlib-lds-flags) \
+ $(csu-objpfx)abi-note.o $(build-shlib-objlist)
+endef
+
+define build-module-helper
+$(LINK.o) -shared -static-libgcc $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \
+ $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \
+ $(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
+ -B$(csu-objpfx) $(load-map-file) \
+ $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \
+ $(link-test-modules-rpath-link) \
+ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
+endef
+
+# This macro is similar to build-shlib but it does not define a soname
+# and it does not depend on the destination name to start with `lib'.
+# binutils only position loadable notes into the first page for binaries,
+# not for shared objects
+define build-module
+$(build-module-helper) -o $@ $(shlib-lds-flags) \
+ $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args)
+$(call after-link,$@)
+endef
+define build-module-asneeded
+$(build-module-helper) -o $@ $(shlib-lds-flags) \
+ $(csu-objpfx)abi-note.o \
+ -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \
+ $(link-libc-args)
+$(call after-link,$@)
+endef
+
+# sofini.os must be placed last since it terminates .eh_frame section.
+build-module-helper-objlist = \
+ $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
+ $(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \
+ $(elf-objpfx)sofini.os \
+ $(link-libc-deps),$^))
+
+build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
+build-shlib-objlist = $(build-module-helper-objlist) \
+ $(LDLIBS-$(@F:lib%.so=%).so) \
+ $(filter $(elf-objpfx)sofini.os,$^)
+
+# Don't try to use -lc when making libc.so itself.
+# Also omits crti.o and crtn.o, which we do not want
+# since we define our own `.init' section specially.
+LDFLAGS-c.so = -nostdlib -nostartfiles
+# But we still want to link libc.so against $(libc.so-gnulib).
+LDLIBS-c.so += $(libc.so-gnulib)
+# Give libc.so an entry point and make it directly runnable itself.
+LDFLAGS-c.so += -e __libc_main
+# Pre-link the objects of libc_pic.a for .gnu.glibc-stub.* processing.
+$(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
+ $(LINK.o) -nostdlib -nostartfiles -r -o $@ \
+ $(LDFLAGS-c_pic.os) $(whole-archive) $^ -o $@
+
+ifeq (,$(strip $(shlib-lds-flags)))
+# Generate a list of -R options to excise .gnu.glibc-stub.* sections.
+$(common-objpfx)libc_pic.opts: $(common-objpfx)libc_pic.os
+ $(OBJDUMP) -h $< | \
+ $(AWK) '$$2 ~ /\.gnu\.glibc-stub\./ { print "-R", $$2 }' \
+ > $@T
+ mv -f $@T $@
+# Apply those -R options.
+$(common-objpfx)libc_pic.os.clean: $(common-objpfx)libc_pic.opts \
+ $(common-objpfx)libc_pic.os
+ $(OBJCOPY) @$^ $@
+generated += libc_pic.opts libc_pic.os.clean
+
+libc_pic_clean := .clean
+endif
+
+# Build a possibly-modified version of libc_pic.a for use in building
+# linkobj/libc.so.
+ifeq (,$(filter sunrpc,$(subdirs)))
+$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a
+ $(make-target-directory)
+ ln -f $< $@
+else
+$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \
+ $(common-objpfx)sunrpc/librpc_compat_pic.a
+ $(make-target-directory)
+ (cd $(common-objpfx)linkobj; \
+ $(AR) x ../libc_pic.a; \
+ rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \
+ $(AR) x ../sunrpc/librpc_compat_pic.a; \
+ $(AR) cr libc_pic.a *.os; \
+ rm *.os)
+endif # $(subdirs) contains sunrpc
+
+# Clear link-libc-deps for the libc.so libraries so build-shlibs does not
+# filter ld.so out of the list of linked objects.
+$(common-objpfx)libc.so: link-libc-deps = # empty
+$(common-objpfx)linkobj/libc.so: link-libc-deps = # empty
+
+# Use our own special initializer and finalizer files for the libc.so
+# libraries.
+$(common-objpfx)libc.so: $(common-objpfx)libc_pic.os$(libc_pic_clean) \
+ $(elf-objpfx)sofini.os \
+ $(elf-objpfx)interp.os \
+ $(elf-objpfx)ld.so \
+ $(shlib-lds)
+ $(build-shlib)
+ $(call after-link,$@)
+
+$(common-objpfx)linkobj/libc.so: $(common-objpfx)linkobj/libc_pic.a \
+ $(elf-objpfx)sofini.os \
+ $(elf-objpfx)interp.os \
+ $(elf-objpfx)ld.so \
+ $(shlib-lds)
+ $(build-shlib)
+ $(call after-link,$@)
+
+ifeq ($(build-shared),yes)
+$(common-objpfx)libc.so: $(common-objpfx)libc.map
+endif
+common-generated += libc.so libc_pic.os
+ifdef libc.so-version
+$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
+ $(make-link)
+common-generated += libc.so$(libc.so-version)
+endif
+endif
+
+# Figure out the source filenames in this directory.
+
+override sources := $(addsuffix .c,\
+ $(filter-out $(elided-routines),\
+ $(routines) $(aux) \
+ $(sysdep_routines)))
+sysdep_routines := $(sysdep_routines)
+
+headers := $(headers) $(sysdep_headers)
+
+# This is the list of all object files, gotten by
+# replacing every ".c" in `sources' with a ".o".
+override objects := $(addprefix $(objpfx),$(sources:.c=.o))
+
+
+# The makefile may define $(extra-libs) with `libfoo libbar'
+# to build libfoo.a et al from the modules listed in $(libfoo-routines).
+ifdef extra-libs
+# extra-lib.mk is included once for each extra lib to define rules
+# to build it, and to add its objects to the various variables.
+# During its evaluation, $(lib) is set to the name of the library.
+extra-libs-left := $(extra-libs)
+include $(patsubst %,$(..)extra-lib.mk,$(extra-libs))
+endif
+
+
+# The makefile may define $(modules-names) to build additional modules.
+# These are built with $(build-module), except any in $(modules-names-nobuild).
+# MODULE_NAME=extramodules, except any in $(modules-names-tests).
+ifdef modules-names
+cpp-srcs-left := $(filter-out $(modules-names-tests),$(modules-names))
+ifneq (,$(cpp-srcs-left))
+lib := extramodules
+include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+endif
+
+ifdef modules-names-tests
+cpp-srcs-left := $(filter $(modules-names-tests),$(modules-names))
+ifneq (,$(cpp-srcs-left))
+lib := testsuite
+include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+endif
+endif
+
+extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
+$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
+ $(objpfx)%.os $(shlib-lds) $(link-libs-deps)
+ $(build-module)
+endif
+
++depfiles := $(sources:.c=.d) \
+ $(patsubst %.o,%.d,$(filter %.o,$(extra-objs:.os=.o))) \
+ $(patsubst %.oS,%.d,$(filter %.oS,$(extra-objs))) \
+ $(patsubst %.o,%.d,$(filter %.o,$(extra-test-objs:.os=.o))) \
+ $(addsuffix .d,$(tests) $(tests-internal) $(xtests) \
+ $(tests-container) $(tests-printers) \
+ $(test-srcs) $(tests-time64) $(xtests-time64))
+ifeq ($(build-programs),yes)
++depfiles += $(addsuffix .d,$(others) $(sysdep-others))
+endif
++depfiles := $(addprefix $(objpfx),\
+ $(filter-out $(addsuffix .d,$(omit-deps)),\
+ $(+depfiles)))
+all-dt-files := $(foreach o,$(object-suffixes-for-libc),$(+depfiles:.d=$o.dt))
++depfiles := $(patsubst %.dt,%.d,$(wildcard $(all-dt-files))) \
+ $(wildcard $(all-dt-files:.dt=.d))
+
+# This is a funny rule in that it removes its input file.
+%.d: %.dt
+ @sed $(sed-remove-objpfx) $< > $(@:.d=.T) && \
+ mv -f $(@:.d=.T) $@ && \
+ rm -f $<
+
+# Avoid the .h.d files for any .sym files whose .h files don't exist yet.
+# They will be generated when they're needed, and trying too early won't work.
++gen-as-const := $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
++depfiles += $(addsuffix .d,$(filter $(wildcard $(+gen-as-const)),\
+ $(+gen-as-const)))
+
+ifdef +depfiles
+ifneq ($(no_deps),t)
+-include $(+depfiles)
+endif
+endif
+
+# Maximize efficiency by minimizing the number of rules.
+.SUFFIXES: # Clear the suffix list. We don't use suffix rules.
+# Don't define any builtin rules.
+MAKEFLAGS := $(MAKEFLAGS) -r
+
+# Generic rule for making directories.
+%/:
+# mkdir isn't smart enough to strip a trailing /.
+# We always require a mkdir which supports the -p option to avoid error
+# messages in case of races.
+ mkdir -p $(@:%/=%)
+
+# Make sure that object files are not removed
+# when they are intermediates between sources and library members.
+.PRECIOUS: $(addprefix $(objpfx)%,$(all-object-suffixes))
+
+# Make sure that the parent library archive is never removed.
+.PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
+
+# Use the verbose option of ar and tar when not running silently.
+ifeq ($(silent-make),no) # if not -s
+verbose := v
+else # -s
+verbose :=
+endif # not -s
+
+ARFLAGS := r$(verbose)
+CREATE_ARFLAGS := cru$(verbose)
+
+# This makes all the object files in the parent library archive.
+
+.PHONY: lib lib-noranlib
+lib: lib-noranlib $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
+lib-noranlib: libobjs
+
+# For object-suffix $o, the list of objects with that suffix.
+# Makefiles can define `elide-routines.so = foo' to leave foo.so out.
+o-objects = $(patsubst %.o,%$o,$(filter-out $(patsubst %,$(objpfx)%.o,\
+ $(elide-routines$o)),\
+ $(objects))) \
+ $(addprefix $(objpfx),$(o-objects$o))
+
+others: $(addprefix $(objpfx),$(install-lib))
+
+ifndef objects
+
+# Create the stamp$o files to keep the parent makefile happy.
+subdir_lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
+$(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o):
+ $(make-target-directory)
+ rm -f $@; > $@
+else
+
+# Define explicit rules to update each $(objpfx)stamp.SUFFIX
+# timestamp file; these rules (one explicit rule is generated for each
+# object suffix) write a list of objects to update in the stamp file.
+# The parent will then actually add them all to the archive in the
+# archive rule, below.
+define o-iterator-doit
+$(objpfx)stamp$o: $(o-objects); $$(do-stamp)
+endef
+define do-stamp
+$(make-target-directory)
+echo '$(patsubst $(objpfx)%,$(addsuffix /,$(subdir))%,$^)' > $@T
+mv -f $@T $@
+endef
+object-suffixes-left := $(object-suffixes-for-libc)
+include $(o-iterator)
+
+endif
+
+# Now define explicit rules to build the library archives; these depend
+# on the stamp files built above.
+define o-iterator-doit
+$(common-objpfx)$(patsubst %,$(libtype$o),c): \
+ $(subdirs-stamp-o) $(common-objpfx)stamp$o; $$(do-makelib)
+endef
+define do-makelib
+cd $(common-objdir) && \
+$(AR) $(CREATE_ARFLAGS) $(@F) `cat $(patsubst $(common-objpfx)%,%,$^)`
+endef
+subdirs-stamps := $(foreach d,$(subdirs),$(common-objpfx)$d/stamp%)
+subdirs-stamp-o = $(subst %,$o,$(subdirs-stamps))
+ifndef subdir
+$(subdirs-stamps): subdir_lib;
+endif
+object-suffixes-left = $(object-suffixes-for-libc)
+include $(o-iterator)
+
+
+# This makes all the object files.
+.PHONY: objects objs libobjs extra-objs
+objects objs: libobjs extra-objs
+libobjs: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
+extra-objs: $(addprefix $(objpfx),$(extra-objs))
+
+# Canned sequence for building an extra library archive.
+define build-extra-lib
+$(patsubst %/,cd % &&,$(objpfx)) \
+$(AR) $(CREATE_ARFLAGS) $(@:$(objpfx)%=%) \
+ $(patsubst $(objpfx)%,%,$^)
+endef
+
+# Installation.
+
+.PHONY: force-install
+force-install:
+
+# $(install-lib) are installed from the object directory into $(libdir);
+# files in $(install-lib) matching `lib%.a' are ranlib'd after installation
+# unless they also appear in $(non-lib.a). $(install-data) are installed as
+# they are into $(datadir). $(headers) are installed as they are in
+# $(includedir). $(install-bin), $(install-bin-script) and $(install-sbin)
+# are installed from the object directory into $(bindir), $(bindir) and
+# $(sbindir), respectively. $(install-others) and $(install-others-programs)
+# are absolute path names of files to install; rules to install them are
+# defined elsewhere.
+
+# The simple library name to install libc.a under.
+# This could be defined by a sysdep Makefile.
+ifndef libc-name
+libc-name := c
+endif
+
+define do-install
+$(make-target-directory)
+$(INSTALL_DATA) $< $@
+endef
+
+# Make the target directory if it doesn't exist, using the `mkinstalldirs'
+# script that does `mkdir -p' even if `mkdir' doesn't support that flag.
+define make-target-directory
+$(addprefix $(..)./scripts/mkinstalldirs ,\
+ $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%)))
+endef
+
+# Any directory (parent or subdir) should install libc.a; this way
+# "make install" in a subdir is guaranteed to install everything it changes.
+installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
+ $(inst_libdir)/$(patsubst %,$(libtype$o),\
+ $(libprefix)$(libc-name)))
+
+.PHONY: check-install-supported
+check-install-supported:
+
+# Check to see if the prefix or exec_prefix GNU standard variable
+# has been overridden on the command line and, if so, fail with
+# an error message since doing so is not supported (set DESTDIR
+# instead).
+ifeq ($(origin prefix),command line)
+check-install-supported:
+ $(error Overriding prefix is not supported. Set DESTDIR instead.)
+endif
+
+ifeq ($(origin exec_prefix),command line)
+check-install-supported:
+ $(error Overriding exec_prefix is not supported. Set DESTDIR instead.)
+endif
+
+install: check-install-supported
+
+install: $(installed-libcs)
+$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
+ $(make-target-directory)
+ $(INSTALL_DATA) $(common-objpfx)lib$(*:$(libc-name)%=c%) $@
+
+define do-install-program
+$(make-target-directory)
+$(INSTALL_PROGRAM) $< $@.new
+mv -f $@.new $@
+endef
+
+define do-install-script
+$(make-target-directory)
+$(INSTALL_SCRIPT) $< $@.new
+mv -f $@.new $@
+endef
+
+install-lib.so := $(filter %.so,$(install-lib:%_pic.a=%.so))
+install-lib := $(filter-out %.so %_pic.a,$(install-lib))
+
+ifeq (yes,$(build-shared))
+# Find which .so's have a version number in their soname.
+versioned := $(strip $(foreach so,$(install-lib.so),\
+ $(patsubst %,$(so),$($(so)-version))))
+
+install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
+install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
+
+# For libraries whose soname have version numbers, we install two files:
+# $(inst_libdir)/libfoo.so -- for linking, symlink or ld script
+# $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME
+install-lib-nosubdir: $(install-lib.so-unversioned:%=$(inst_slibdir)/%) \
+ $(foreach L,$(install-lib.so-versioned),\
+ $(inst_libdir)/$L \
+ $(inst_slibdir)/$L$($L-version))
+
+# Install all the unversioned shared libraries.
+$(install-lib.so-unversioned:%=$(inst_slibdir)/%): $(inst_slibdir)/%.so: \
+ $(objpfx)%.so $(+force)
+ $(do-install-program)
+
+ifneq ($(findstring -s,$(LN_S)),)
+define make-link
+rm -f $@.new
+$(SHELL) $(..)scripts/rellns-sh $< $@.new
+mv -f $@.new $@
+endef
+define make-link-multidir
+$(patsubst %/,cd %,$(objpfx)); \
+ $(addprefix $(abspath $(..)scripts/mkinstalldirs) ,$(dir $(multidir))); \
+ $(LN_S) . $(multidir) 2> /dev/null; \
+ test -L $(multidir)
+endef
+else
+# If we have no symbolic links don't bother with rellns-sh.
+define make-link
+rm -f $@.new
+$(LN_S) $< $@.new
+mv -f $@.new $@
+endef
+define make-link-multidir
+$(make-target-directory)
+ln -f $(objpfx)/$(@F) $@
+endef
+endif
+
+ifdef libc.so-version
+$(inst_slibdir)/libc.so$(libc.so-version): $(common-objpfx)libc.so $(+force)
+ $(do-install-program)
+
+install: $(inst_slibdir)/libc.so$(libc.so-version)
+
+# This fragment of linker script gives the OUTPUT_FORMAT statement
+# for the configuration we are building. We put this statement into
+# the linker scripts we install for -lc et al so that they will not be
+# used by a link for a different format on a multi-architecture system.
+$(common-objpfx)format.lds: $(common-objpfx)config.make \
+ $(common-objpfx)config.h $(..)Makerules
+ $(LINK.o) -shared -nostdlib -nostartfiles \
+ -x assembler /dev/null -o $@.so
+ $(OBJDUMP) -f $@.so | sed -n 's/.*file format \(.*\)/OUTPUT_FORMAT(\1)/;T;p' > $@
+ rm -f $@.so
+common-generated += format.lds
+
+ifndef subdir
+# What we install as libc.so for programs to link against is in fact a
+# link script. It contains references for the various libraries we need.
+# The libc.so object is not complete since some functions are only defined
+# in libc_nonshared.a.
+# We need to use absolute paths since otherwise local copies (if they exist)
+# of the files are taken by the linker.
+install: $(inst_libdir)/libc.so
+$(inst_libdir)/libc.so: $(common-objpfx)format.lds \
+ $(common-objpfx)libc.so$(libc.so-version) \
+ $(inst_libdir)/$(patsubst %,$(libtype.oS),\
+ $(libprefix)$(libc-name)) \
+ $(+force)
+ (echo '/* GNU ld script';\
+ echo ' Use the shared library, but some functions are only in';\
+ echo ' the static library, so try that secondarily. */';\
+ cat $<; \
+ echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
+ '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
+ ' AS_NEEDED (' $(rtlddir)/$(rtld-installed-name) ') )' \
+ ) > $@.new
+ mv -f $@.new $@
+
+endif
+
+else
+install: $(inst_slibdir)/libc.so
+$(inst_slibdir)/libc.so: $(common-objpfx)libc.so $(+force)
+ $(do-install-program)
+endif
+
+ifneq (,$(versioned))
+# Produce three sets of rules as above for all the smaller versioned libraries.
+
+define o-iterator-doit
+$(inst_libdir)/$o: $(inst_slibdir)/$o$($o-version) $(+force); $$(make-link)
+endef
+object-suffixes-left := $(filter-out $(install-lib-ldscripts),$(versioned))
+ifneq (,$(object-suffixes-left))
+include $(o-iterator)
+endif
+
+# Make symlinks in the build directory, because the versioned names might
+# be referenced by a DT_NEEDED in another library.
+define o-iterator-doit
+$(objpfx)$o$($o-version): $(objpfx)$o; $$(make-link)
+endef
+object-suffixes-left := $(versioned)
+include $(o-iterator)
+
+generated += $(foreach o,$(versioned),$o$($o-version))
+
+define o-iterator-doit
+$(inst_slibdir)/$o$($o-version): $(objpfx)$o $(+force);
+ $$(do-install-program)
+endef
+object-suffixes-left := $(versioned)
+include $(o-iterator)
+endif # ifneq (,$(versioned))
+
+define do-install-so
+$(do-install-program)
+$(patsubst %,$(LN_S) -f $(@F) \
+ $(@D)/$(patsubst %$*.so,%,$(<F))$(libprefix)$*.so,\
+ $(filter-out %.so,$@))
+endef
+
+so-versions := $(sort $(foreach so,$(install-lib.so),.so$($(so)-version)))
+$(foreach v,$(so-versions),\
+ $(inst_slibdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so \
+ $(+force)
+ $(do-install-so)
+$(foreach v,$(so-versions),\
+ $(inst_slibdir)/$(libprefix)%$v): $(common-objpfx)%.so $(+force)
+ $(do-install-so)
+endif
+
+ifdef install-bin
+$(addprefix $(inst_bindir)/,$(install-bin)): \
+ $(inst_bindir)/%: $(objpfx)% $(+force)
+ $(do-install-program)
+endif
+ifdef install-bin-script
+$(addprefix $(inst_bindir)/,$(install-bin-script)): \
+ $(inst_bindir)/%: $(objpfx)% $(+force)
+ $(do-install-script)
+endif
+ifdef install-rootsbin
+$(addprefix $(inst_rootsbindir)/,$(install-rootsbin)): \
+ $(inst_rootsbindir)/%: $(objpfx)% $(+force)
+ $(do-install-program)
+endif
+ifdef install-sbin
+$(addprefix $(inst_sbindir)/,$(install-sbin)): \
+ $(inst_sbindir)/%: $(objpfx)% $(+force)
+ $(do-install-program)
+endif
+ifdef install-lib
+install-lib.a := $(filter lib%.a,$(install-lib))
+install-lib.a := $(filter-out $(install-lib-ldscripts),$(install-lib.a))
+install-lib-non.a := $(filter-out lib%.a,$(install-lib))
+ifdef install-lib-non.a
+$(addprefix $(inst_libdir)/$(libprefix),$(install-lib-non.a)): \
+ $(inst_libdir)/$(libprefix)%: $(objpfx)% $(+force)
+ $(do-install)
+endif
+ifdef install-lib.a
+$(install-lib.a:lib%.a=$(inst_libdir)/lib$(libprefix)%.a): \
+ $(inst_libdir)/lib$(libprefix)%.a: $(objpfx)lib%.a $(+force)
+ $(do-install)
+endif
+endif
+ifdef install-data
+$(addprefix $(inst_datadir)/,$(install-data)): $(inst_datadir)/%: % $(+force)
+ $(do-install)
+endif
+headers := $(strip $(headers))
+ifdef headers
+# This implicit rule installs headers from the source directory.
+# It may be ignored in preference to rules from sysd-rules to find
+# headers in the sysdeps tree.
+$(inst_includedir)/%.h: $(objpfx)%.h $(+force)
+ $(do-install)
+$(inst_includedir)/%.h: $(common-objpfx)%.h $(+force)
+ $(do-install)
+$(inst_includedir)/%.h: %.h $(+force)
+ $(do-install)
+$(inst_includedir)/%.h: $(..)include/%.h $(+force)
+ $(do-install)
+headers-nonh := $(filter-out %.h,$(headers))
+ifdef headers-nonh
+$(addprefix $(inst_includedir)/,$(headers-nonh)): $(inst_includedir)/%: \
+ % $(+force)
+ $(do-install)
+endif # headers-nonh
+endif # headers
+
+.PHONY: install-bin-nosubdir install-bin-script-nosubdir \
+ install-rootsbin-nosubdir install-sbin-nosubdir install-lib-nosubdir \
+ install-data-nosubdir install-headers-nosubdir
+install-bin-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin))
+install-bin-script-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin-script))
+install-rootsbin-nosubdir: \
+ $(addprefix $(inst_rootsbindir)/,$(install-rootsbin))
+install-sbin-nosubdir: $(addprefix $(inst_sbindir)/,$(install-sbin))
+install-lib-nosubdir: $(addprefix $(inst_libdir)/,\
+ $(patsubst lib%.a,lib$(libprefix)%.a,$(install-lib.a)) \
+ $(addprefix $(libprefix),$(install-lib-non.a)))
+install-data-nosubdir: $(addprefix $(inst_datadir)/,$(install-data))
+install-headers-nosubdir: $(addprefix $(inst_includedir)/,$(headers))
+install-others-nosubdir: $(install-others)
+install-others-programs-nosubdir: $(install-others-programs)
+
+# We need all the `-nosubdir' targets so that `install' in the parent
+# doesn't depend on several things which each iterate over the subdirs.
+# This rule makes `install-FOO' always use `install-FOO-nosubdir' as a
+# subroutine. Then in the parent `install-FOO' also causes subdir makes.
+install-%:: install-%-nosubdir ;
+
+.PHONY: install install-no-libc.a-nosubdir
+install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir \
+ install-lib-nosubdir install-others-nosubdir
+ifeq ($(build-programs),yes)
+install-no-libc.a-nosubdir: install-bin-nosubdir install-bin-script-nosubdir \
+ install-rootsbin-nosubdir install-sbin-nosubdir \
+ install-others-programs-nosubdir
+endif
+install: install-no-libc.a-nosubdir
+
+# Command to compile $< using the native libraries.
+define native-compile
+$(make-target-directory)
+$(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) \
+ $< $(OUTPUT_OPTION) $(BUILD_LDFLAGS)
+endef
+
+# We always want to use configuration definitions.
+ALL_BUILD_CFLAGS = $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -D_GNU_SOURCE \
+ -DIS_IN_build -include $(common-objpfx)config.h
+
+# Support the GNU standard name for this target.
+.PHONY: check
+check: tests
+# Special target to run tests which cannot be run unconditionally.
+# Maintainers should use this target.
+.PHONY: xcheck
+xcheck: xtests
+
+# Handle tests-time64 and xtests-time64 that should built with LFS
+# and 64-bit time support.
+include $(o-iterator)
+define o-iterator-doit
+$(foreach f,$(tests-time64) $(xtests-time64),\
+ $(objpfx)$(f)$(o)): CFLAGS += -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+ifeq ($(have-time64-compat),yes)
+tests += $(foreach t,$(tests-time64),$(t))
+xtests += $(foreach t,$(xtests-time64),$(t))
+endif
+
+# The only difference between MODULE_NAME=testsuite and MODULE_NAME=nonlib is
+# that almost all internal declarations from config.h, libc-symbols.h, and
+# include/*.h are not available to 'testsuite' code, but are to 'nonlib' code.
+all-testsuite := $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) \
+ $(tests-container))
+ifneq (,$(all-testsuite))
+cpp-srcs-left = $(all-testsuite)
+lib := testsuite
+include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+endif
+
+all-nonlib := $(strip $(others) $(others-extras))
+ifneq (,$(all-nonlib))
+cpp-srcs-left = $(all-nonlib)
+lib := nonlib
+include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+endif
+
+# All internal tests use testsuite-internal module since for 64 bit time
+# support is set as default for MODULE_NAME=nonlib (which include some
+# installed programs).
+all-testsuite-internal := $(strip $(tests-internal) $(test-internal-extras))
+ifneq (,$(all-testsuite-internal))
+cpp-srcs-left = $(all-testsuite-internal)
+lib := testsuite-internal
+include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+endif
+
+ifeq ($(build-shared),yes)
+# Generate normalized lists of symbols, versions, and data sizes.
+# This is handy for checking against existing library binaries.
+
+%.symlist: $(..)scripts/abilist.awk %.dynsym
+ LC_ALL=C $(AWK) -f $^ > $@T
+ mv -f $@T $@
+
+%.dynsym: %.so
+ LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T
+ mv -f $@T $@
+
+vpath %.abilist $(+sysdep_dirs)
+
+# The .PRECIOUS rule prevents the files built by an implicit rule whose
+# target pattern is %.symlist from being considered "intermediate files"
+# and automatically removed. We only want these files to be removed by
+# 'make clean', which is handled by the 'generated' variable.
+.PRECIOUS: %.symlist
+generated += $(extra-libs:=.symlist)
+
+$(objpfx)check-abi-%.out: $(common-objpfx)config.make %.abilist \
+ $(objpfx)%.symlist
+ $(check-abi); \
+ $(evaluate-test)
+$(objpfx)check-abi-%.out: $(common-objpfx)config.make %.abilist \
+ $(common-objpfx)%.symlist
+ $(check-abi); \
+ $(evaluate-test)
+define check-abi
+ diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^) > $@
+endef
+
+update-abi-%: $(objpfx)%.symlist %.abilist
+ $(update-abi)
+update-abi-%: $(common-objpfx)%.symlist %.abilist
+ $(update-abi)
+define update-abi
+@if cmp -s $^ 2> /dev/null; \
+ then \
+ echo '+++ $(filter %.abilist,$^) is unchanged'; \
+ else cp -f $^; \
+ echo '*** Now check $(filter %.abilist,$^) changes for correctness ***'; \
+ fi
+endef
+
+# Patch all .abilist files for one DSO. The find command locates abilist
+# files for all architectures. The abilist files in /generic/ are
+# filtered out because these are expected to remain empty.
+define update-all-abi
+$(SHELL) $(..)scripts/update-abilist.sh $^ \
+ $$(find $(..)sysdeps -name '$*.abilist' \! -path '*/generic/*')
+endef
+update-all-abi-%: %.abilist $(objpfx)%.symlist
+ $(update-all-abi)
+update-all-abi-%: %.abilist $(common-objpfx)%.symlist
+ $(update-all-abi)
+
+.PHONY: update-abi update-all-abi check-abi
+update-abi: $(patsubst %.so,update-abi-%,$(install-lib.so-versioned))
+update-all-abi: $(patsubst %.so,update-all-abi-%,$(install-lib.so-versioned))
+check-abi-list = $(patsubst %.so,$(objpfx)check-abi-%.out, \
+ $(install-lib.so-versioned))
+check-abi: $(check-abi-list)
+ifdef subdir
+subdir_check-abi: check-abi
+subdir_update-abi: update-abi
+subdir_update-all-abi: update-all-abi
+else
+check-abi: subdir_check-abi
+ if grep -q '^FAIL:' $(objpfx)*/check-abi*.test-result; then \
+ cat $(objpfx)*/check-abi*.out && exit 1; fi
+update-abi: subdir_update-abi
+update-all-abi: subdir_update-all-abi
+endif
+
+ifeq ($(subdir),elf)
+check-abi: $(objpfx)check-abi-libc.out
+tests-special += $(objpfx)check-abi-libc.out
+update-abi: update-abi-libc
+update-all-abi: update-all-abi-libc
+common-generated += libc.symlist
+endif
+
+ifeq ($(build-shared),yes)
+ifdef subdir
+tests-special += $(check-abi-list)
+endif
+endif
+
+endif
+
+# These will have been set by sysdeps/posix/Makefile.
+L_tmpnam ?= 1
+TMP_MAX ?= 0
+L_ctermid ?= 1
+L_cuserid ?= 1
+
+stdio_lim = $(common-objpfx)bits/stdio_lim.h
+
+$(stdio_lim:lim.h=%.h) $(stdio_lim:lim.h=%.d): $(stdio_lim:lim.h=%.st); @:
+$(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \
+ $(common-objpfx)config.make
+ $(make-target-directory)
+ { echo '#include "$(..)posix/bits/posix1_lim.h"'; \
+ } | \
+ $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \
+ $(CPPUNDEFS) $(+includes) -xc - -o $(@:st=hT)
+ sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
+ $(@:st=dT) > $(@:st=dt)
+ mv -f $(@:st=dt) $(@:st=d)
+ fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \
+ filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \
+ fopen_max=$${fopen_max:-16}; \
+ filename_max=$${filename_max:-1024}; \
+ sed -e "s/@FOPEN_MAX@/$$fopen_max/" \
+ -e "s/@FILENAME_MAX@/$$filename_max/" \
+ -e "s/@L_tmpnam@/$(L_tmpnam)/" \
+ -e "s/@TMP_MAX@/$(TMP_MAX)/" \
+ -e "s/@L_ctermid@/$(L_ctermid)/" \
+ -e "s/@L_cuserid@/$(L_cuserid)/" \
+ $< > $(@:st=h.new)
+ $(move-if-change) $(@:st=h.new) $(@:st=h)
+# Remove these last so that they can be examined if something went wrong.
+ rm -f $(@:st=hT) $(@:st=dT) $(@:st=dt)
+ touch $@
+# Get dependencies.
+ifndef no_deps
+-include $(stdio_lim:h=d)
+endif
+common-generated += bits/stdio_lim.h bits/stdio_lim.d bits/stdio_lim.st
+
+FORCE:
+
+.PHONY: echo-headers
+echo-headers:
+ @echo $(headers)
+
+%.bz2: %; bzip2 -9vk $<
+%.gz: %; gzip -9vnc $< > $@.new && mv -f $@.new $@
+%.xz: %; xz -9evk $<
+
+# Common cleaning targets.
+
+.PHONY: common-mostlyclean common-clean mostlyclean clean do-tests-clean
+clean: common-clean
+mostlyclean: common-mostlyclean
+
+do-tests-clean:
+ -rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) \
+ $(tests-internal) \
+ $(xtests) \
+ $(test-srcs)) \
+ $(addsuffix .test-result,$(tests) \
+ $(tests-internal) \
+ $(xtests) \
+ $(test-srcs)))
+
+# Remove the object files.
+common-mostlyclean:
+ -rm -f $(addprefix $(objpfx),$(tests) $(tests-internal) $(xtests) \
+ $(test-srcs) \
+ $(others) $(sysdep-others) stubs \
+ $(addsuffix .o,$(tests) \
+ $(tests-internal) \
+ $(xtests) \
+ $(test-srcs) \
+ $(others) \
+ $(sysdep-others)) \
+ $(addsuffix .out,$(tests) \
+ $(tests-internal) \
+ $(xtests) \
+ $(test-srcs)) \
+ $(addsuffix .test-result,$(tests) \
+ $(tests-internal) \
+ $(xtests) \
+ $(test-srcs)))
+ -rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \
+ $(install-lib) $(install-lib.so) \
+ $(install-lib.so:%.so=%_pic.a))
+ -rm -f core
+ -rm -f $(objpfx)rtld-*.os
+ $(rmobjs)
+define rmobjs
+$(foreach o,$(object-suffixes-for-libc),
+-rm -f $(objpfx)stamp$o $(o-objects))
+endef
+
+# Also remove the dependencies and generated source files.
+common-clean: common-mostlyclean
+ -rm -f $(addprefix $(objpfx),$(generated))
+ -rm -f $(objpfx)*.d $(objpfx)*.dt
+ -rm -fr $(addprefix $(objpfx),$(generated-dirs))
+ -rm -f $(addprefix $(common-objpfx),$(common-generated))
+ -rm -f $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
+
+# Produce a file `stubs' which contains `#define __stub_FUNCTION'
+# for each function which is a stub.
+
+ifdef objpfx
+.PHONY: stubs # The parent Makefile calls this target.
+stubs: $(objpfx)stubs
+endif
+objs-for-stubs := $(foreach o,$(object-suffixes-for-libc),$(o-objects)) \
+ $(addprefix $(objpfx),$(extra-objs))
+$(objpfx)stubs: $(objs-for-stubs)
+ifneq (,$(strip $(objs-for-stubs)))
+ (cd $(objpfx).; $(OBJDUMP) -h $(patsubst $(objpfx)%,%,$^)) | \
+ $(AWK) '/\.gnu\.glibc-stub\./ { \
+ sub(/\.gnu\.glibc-stub\./, "", $$2); \
+ stubs[$$2] = 1; } \
+ END { for (s in stubs) print "#define __stub_" s }' > $@T
+ mv -f $@T $@
+else
+ > $@
+endif
+
+ifneq (,$(strip $(gpl2lgpl)))
+ifneq (,$(wildcard $(..)gpl2lgpl.sed))
+# Snarf from the master source and frob the copying notice.
+$(gpl2lgpl): %: $(..)gpl2lgpl.sed /home/gd/gnu/lib/%
+ sed -f $^ > $@-tmp
+# So I don't edit them by mistake.
+ chmod a-w $@-tmp
+ mv -f $@-tmp $@
+endif
+endif
+
+# Local Variables:
+# mode: makefile
+# End:
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/config.make.in
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/config.make.in (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/config.make.in (revision 35)
@@ -0,0 +1,148 @@
+# @configure_input@
+# Don't edit this file. Put configuration parameters in configparms instead.
+
+version = @VERSION@
+release = @RELEASE@
+
+# Installation prefixes.
+install_root = $(DESTDIR)
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+libdir = @libdir@
+bindir = @bindir@
+slibdir = @libc_cv_slibdir@
+rtlddir = @libc_cv_rtlddir@
+complocaledir = @libc_cv_complocaledir@
+sysconfdir = @libc_cv_sysconfdir@
+libexecdir = @libexecdir@
+rootsbindir = @libc_cv_rootsbindir@
+infodir = @infodir@
+includedir = @includedir@
+datarootdir = @datarootdir@
+localstatedir = @libc_cv_localstatedir@
+localedir = @localedir@
+multidir= @libc_cv_multidir@
+
+# Should we use and build ldconfig?
+use-ldconfig = @use_ldconfig@
+
+# Maybe the `ldd' script must be rewritten.
+ldd-rewrite-script = @ldd_rewrite_script@
+
+# System configuration.
+config-machine = @host_cpu@
+base-machine = @base_machine@
+config-vendor = @host_vendor@
+config-os = @host_os@
+config-sysdirs = @sysnames@
+cflags-cpu = @libc_cv_cc_submachine@
+asflags-cpu = @libc_cv_cc_submachine@
+
+config-extra-cflags = @libc_extra_cflags@
+config-extra-cppflags = @libc_extra_cppflags@
+config-cflags-nofma = @libc_cv_cc_nofma@
+
+defines = @DEFINES@
+sysheaders = @sysheaders@
+sysincludes = @SYSINCLUDES@
+c++-sysincludes = @CXX_SYSINCLUDES@
+c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
+c++-cmath-header = @CXX_CMATH_HEADER@
+c++-bits-std_abs-h = @CXX_BITS_STD_ABS_H@
+all-warnings = @all_warnings@
+enable-werror = @enable_werror@
+
+have-z-execstack = @libc_cv_z_execstack@
+have-protected-data = @libc_cv_protected_data@
+have-insert = @libc_cv_insert@
+have-glob-dat-reloc = @libc_cv_has_glob_dat@
+with-fp = @libc_cv_with_fp@
+enable-timezone-tools = @enable_timezone_tools@
+unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
+have-fpie = @libc_cv_fpie@
+have-ssp = @libc_cv_ssp@
+stack-protector = @stack_protector@
+no-stack-protector = @no_stack_protector@
+have-selinux = @have_selinux@
+have-libaudit = @have_libaudit@
+have-libcap = @have_libcap@
+have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
+bind-now = @bindnow@
+have-hash-style = @libc_cv_hashstyle@
+use-default-link = @use_default_link@
+have-cxx-thread_local = @libc_cv_cxx_thread_local@
+have-loop-to-function = @libc_cv_cc_loop_to_function@
+have-textrel_ifunc = @libc_cv_textrel_ifunc@
+
+multi-arch = @multi_arch@
+
+mach-interface-list = @mach_interface_list@
+
+experimental-malloc = @experimental_malloc@
+
+memory-tagging = @memory_tagging@
+
+nss-crypt = @libc_cv_nss_crypt@
+static-nss-crypt = @libc_cv_static_nss_crypt@
+
+# Configuration options.
+build-shared = @shared@
+build-profile = @profile@
+build-static-nss = @static_nss@
+cross-compiling = @cross_compiling@
+force-install = @force_install@
+build-crypt = @build_crypt@
+build-nscd = @build_nscd@
+use-nscd = @use_nscd@
+build-hardcoded-path-in-tests= @hardcoded_path_in_tests@
+build-pt-chown = @build_pt_chown@
+have-tunables = @have_tunables@
+pthread-in-libc = @pthread_in_libc@
+
+# Build tools.
+CC = @CC@
+CXX = @CXX@
+BUILD_CC = @BUILD_CC@
+CFLAGS = @CFLAGS@
+CPPFLAGS-config = @CPPFLAGS@
+CPPUNDEFS = @CPPUNDEFS@
+extra-nonshared-cflags = @extra_nonshared_cflags@
+rtld-early-cflags = @rtld_early_cflags@
+ASFLAGS-config = @ASFLAGS_config@
+AR = @AR@
+NM = @NM@
+MAKEINFO = @MAKEINFO@
+AS = $(CC) -c
+BISON = @BISON@
+AUTOCONF = @AUTOCONF@
+OBJDUMP = @OBJDUMP@
+OBJCOPY = @OBJCOPY@
+GPROF = @GPROF@
+READELF = @READELF@
+
+# Installation tools.
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_INFO = @INSTALL_INFO@
+LN_S = @LN_S@
+MSGFMT = @MSGFMT@
+
+# Script execution tools.
+BASH = @BASH_SHELL@
+AWK = @AWK@
+PERL = @PERL@
+PYTHON = @PYTHON@
+
+# Additional libraries.
+LIBGD = @LIBGD@
+
+# Package versions and bug reporting configuration.
+PKGVERSION = @PKGVERSION@
+PKGVERSION_TEXI = @PKGVERSION_TEXI@
+REPORT_BUGS_TO = @REPORT_BUGS_TO@
+REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@
+
+# More variables may be inserted below by configure.
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure (revision 35)
@@ -0,0 +1,8244 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for GNU C Library (see version.h).
+#
+# Report bugs to <https://sourceware.org/bugzilla/>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: https://sourceware.org/bugzilla/ about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='GNU C Library'
+PACKAGE_TARNAME='glibc'
+PACKAGE_VERSION='(see version.h)'
+PACKAGE_STRING='GNU C Library (see version.h)'
+PACKAGE_BUGREPORT='https://sourceware.org/bugzilla/'
+PACKAGE_URL='https://www.gnu.org/software/glibc/'
+
+ac_unique_file="include/features.h"
+enable_option_checking=no
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+pthread_in_libc
+RELEASE
+VERSION
+mach_interface_list
+DEFINES
+static_nss
+profile
+libc_cv_multidir
+shared
+static
+ldd_rewrite_script
+use_ldconfig
+libc_cv_rootsbindir
+libc_cv_localstatedir
+libc_cv_sysconfdir
+libc_cv_complocaledir
+libc_cv_rtlddir
+libc_cv_slibdir
+use_nscd
+libc_cv_gcc_unwind_find_fde
+libc_extra_cppflags
+libc_extra_cflags
+libc_cv_cxx_thread_local
+CPPUNDEFS
+have_selinux
+have_libcap
+have_libaudit
+LIBGD
+libc_cv_cc_loop_to_function
+libc_cv_cc_submachine
+libc_cv_cc_nofma
+libc_cv_mtls_dialect_gnu2
+libc_cv_has_glob_dat
+libc_cv_hashstyle
+libc_cv_fpie
+libc_cv_z_execstack
+ASFLAGS_config
+libc_cv_cc_with_libunwind
+libc_cv_insert
+libc_cv_protected_data
+INSTALL_INFO
+PERL
+BASH_SHELL
+CXX_BITS_STD_ABS_H
+CXX_CMATH_HEADER
+CXX_CSTDLIB_HEADER
+CXX_SYSINCLUDES
+SYSINCLUDES
+sysnames
+submachine
+multi_arch
+libc_cv_textrel_ifunc
+no_stack_protector
+stack_protector
+libc_cv_ssp
+libc_cv_with_fp
+PYTHON
+PYTHON_PROG
+AUTOCONF
+BISON
+AWK
+SED
+MAKEINFO
+MSGFMT
+MAKE
+LD
+NM
+OBJDUMP
+READELF
+GPROF
+OBJCOPY
+AR
+LN_S
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+base_machine
+have_tunables
+build_pt_chown
+build_nscd
+libc_cv_static_nss_crypt
+libc_cv_nss_crypt
+build_crypt
+memory_tagging
+experimental_malloc
+enable_werror
+all_warnings
+force_install
+bindnow
+hardcoded_path_in_tests
+enable_timezone_tools
+rtld_early_cflags
+extra_nonshared_cflags
+use_default_link
+sysheaders
+ac_ct_CXX
+CXXFLAGS
+CXX
+CPP
+cross_compiling
+BUILD_CC
+OBJEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+subdirs
+REPORT_BUGS_TEXI
+REPORT_BUGS_TO
+PKGVERSION_TEXI
+PKGVERSION
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_pkgversion
+with_bugurl
+with_gd
+with_gd_include
+with_gd_lib
+with_binutils
+with_selinux
+with_headers
+with_default_link
+with_nonshared_cflags
+with_rtld_early_cflags
+with_timeoutfactor
+enable_sanity_checks
+enable_shared
+enable_profile
+enable_default_pie
+enable_timezone_tools
+enable_hardcoded_path_in_tests
+enable_hidden_plt
+enable_bind_now
+enable_stack_protector
+enable_static_nss
+enable_force_install
+enable_maintainer_mode
+enable_kernel
+enable_all_warnings
+enable_werror
+enable_multi_arch
+enable_experimental_malloc
+enable_memory_tagging
+enable_crypt
+enable_nss_crypt
+enable_systemtap
+enable_build_nscd
+enable_nscd
+enable_pt_chown
+enable_tunables
+enable_mathvec
+enable_cet
+enable_scv
+with_cpu
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+CXX
+CXXFLAGS
+CCC'
+ac_subdirs_all=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures GNU C Library (see version.h) to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/glibc]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of GNU C Library (see version.h):";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-sanity-checks really do not use threads (should not be used except
+ in special situations) [default=yes]
+ --enable-shared build shared library [default=yes if GNU ld]
+ --enable-profile build profiled library [default=no]
+ --disable-default-pie Do not build glibc programs and the testsuite as PIE
+ [default=no]
+ --disable-timezone-tools
+ do not install timezone tools [default=install]
+ --enable-hardcoded-path-in-tests
+ hardcode newly built glibc path in tests
+ [default=no]
+ --disable-hidden-plt do not hide internal function calls to avoid PLT
+ --enable-bind-now disable lazy relocations in DSOs
+ --enable-stack-protector=[yes|no|all|strong]
+ Use -fstack-protector[-all|-strong] to detect glibc
+ buffer overflows
+ --enable-static-nss build static NSS modules [default=no]
+ --disable-force-install don't force installation of files from this package,
+ even if they are older than the installed files
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
+ --enable-kernel=VERSION compile for compatibility with kernel not older than
+ VERSION
+ --enable-all-warnings enable all useful warnings gcc can issue
+ --disable-werror do not build with -Werror
+ --enable-multi-arch enable single DSO with optimizations for multiple
+ architectures
+ --disable-experimental-malloc
+ disable experimental malloc features
+ --enable-memory-tagging enable memory tagging if supported by the
+ architecture [default=no]
+ --disable-crypt do not build nor install the passphrase hashing
+ library, libcrypt
+ --enable-nss-crypt enable libcrypt to use nss
+ --enable-systemtap enable systemtap static probe points [default=no]
+ --disable-build-nscd disable building and installing the nscd daemon
+ --disable-nscd library functions will not contact the nscd daemon
+ --enable-pt_chown Enable building and installing pt_chown
+ --enable-tunables Enable tunables support. Known values are 'yes',
+ 'no' and 'valstring'
+ --enable-mathvec Enable building and installing mathvec [default
+ depends on architecture]
+ --enable-cet enable Intel Control-flow Enforcement Technology
+ (CET), x86 only
+ --disable-scv syscalls will not use scv instruction, even if the
+ kernel supports it, powerpc only
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pkgversion=PKG Use PKG in the version string in place of "GNU libc"
+ --with-bugurl=URL Direct users to URL to report a bug
+ --with-gd=DIR find libgd include dir and library with prefix DIR
+ --with-gd-include=DIR find libgd include files in DIR
+ --with-gd-lib=DIR find libgd library files in DIR
+ --with-binutils=PATH specify location of binutils (as and ld)
+ --with-selinux if building with SELinux support
+ --with-headers=PATH location of system headers to use (for example
+ /usr/src/linux/include) [default=compiler default]
+ --with-default-link do not use explicit linker scripts
+ --with-nonshared-cflags=CFLAGS
+ build nonshared libraries with additional CFLAGS
+ --with-rtld-early-cflags=CFLAGS
+ build early initialization with additional CFLAGS
+ --with-timeoutfactor=NUM
+ specify an integer to scale the timeout
+ --with-cpu=CPU select code for CPU variant
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <https://sourceware.org/bugzilla/>.
+GNU C Library home page: <https://www.gnu.org/software/glibc/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+GNU C Library configure (see version.h)
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GNU C Library $as_me (see version.h), which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+ac_aux_dir=
+for ac_dir in scripts "$srcdir"/scripts; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in scripts \"$srcdir\"/scripts" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+
+
+# Check whether --with-pkgversion was given.
+if test "${with_pkgversion+set}" = set; then :
+ withval=$with_pkgversion; case "$withval" in
+ yes) as_fn_error $? "package version not specified" "$LINENO" 5 ;;
+ no) PKGVERSION= ;;
+ *) PKGVERSION="($withval) " ;;
+ esac
+else
+ PKGVERSION="(GNU libc) "
+
+fi
+
+ PKGVERSION_TEXI=`echo "$PKGVERSION" | sed 's/@/@@/g'`
+
+
+
+
+
+# Check whether --with-bugurl was given.
+if test "${with_bugurl+set}" = set; then :
+ withval=$with_bugurl; case "$withval" in
+ yes) as_fn_error $? "bug URL not specified" "$LINENO" 5 ;;
+ no) BUGURL=
+ ;;
+ *) BUGURL="$withval"
+ ;;
+ esac
+else
+ BUGURL="https://www.gnu.org/software/libc/bugs.html"
+
+fi
+
+ case ${BUGURL} in
+ "")
+ REPORT_BUGS_TO=
+ REPORT_BUGS_TEXI=
+ ;;
+ *)
+ REPORT_BUGS_TO="<$BUGURL>"
+ REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
+ ;;
+ esac;
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define PKGVERSION "$PKGVERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPORT_BUGS_TO "$REPORT_BUGS_TO"
+_ACEOF
+
+
+# Glibc should not depend on any header files
+
+
+# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
+# here to work around the Autoconf issue discussed in
+# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
+# AC_PROG_CPP
+
+# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
+# issue discussed in
+# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
+
+
+
+
+subdirs="$subdirs "
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+EXEEXT=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test $host != $build; then
+ for ac_prog in gcc cc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_BUILD_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$BUILD_CC"; then
+ ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_BUILD_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+BUILD_CC=$ac_cv_prog_BUILD_CC
+if test -n "$BUILD_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5
+$as_echo "$BUILD_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_CC" && break
+done
+
+fi
+
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ CPP="$CC -E"
+fi
+
+
+# We need the C++ compiler only for testing.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+else
+ CXXFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+# It's useless to us if it can't link programs (e.g. missing -lstdc++).
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX can link programs" >&5
+$as_echo_n "checking whether $CXX can link programs... " >&6; }
+if ${libc_cv_cxx_link_ok+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+# Default, dynamic case.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ libc_cv_cxx_link_ok=yes
+else
+ libc_cv_cxx_link_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+# Static case.
+old_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -static"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <iostream>
+
+int
+main()
+{
+ std::cout << "Hello, world!";
+ return 0;
+}
+
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+else
+ libc_cv_cxx_link_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LDFLAGS="$old_LDFLAGS"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cxx_link_ok" >&5
+$as_echo "$libc_cv_cxx_link_ok" >&6; }
+if test $libc_cv_cxx_link_ok != yes; then :
+ CXX=
+fi
+
+if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
+ as_fn_error $? "you must configure in a separate build directory" "$LINENO" 5
+fi
+
+# This will get text that should go into config.make.
+config_vars=
+
+# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
+
+# Check whether --with-gd was given.
+if test "${with_gd+set}" = set; then :
+ withval=$with_gd; case "$with_gd" in
+yes|''|no) ;;
+*) libgd_include="-I$withval/include"
+ libgd_ldflags="-L$withval/lib" ;;
+esac
+
+fi
+
+
+# Check whether --with-gd-include was given.
+if test "${with_gd_include+set}" = set; then :
+ withval=$with_gd_include; case "$with_gd_include" in
+''|no) ;;
+*) libgd_include="-I$withval" ;;
+esac
+
+fi
+
+
+# Check whether --with-gd-lib was given.
+if test "${with_gd_lib+set}" = set; then :
+ withval=$with_gd_lib; case "$with_gd_lib" in
+''|no) ;;
+*) libgd_ldflags="-L$withval" ;;
+esac
+
+fi
+
+
+if test -n "$libgd_include"; then
+ config_vars="$config_vars
+CFLAGS-memusagestat.c = $libgd_include"
+fi
+if test -n "$libgd_ldflags"; then
+ config_vars="$config_vars
+libgd-LDFLAGS = $libgd_ldflags"
+fi
+
+
+# Check whether --with-binutils was given.
+if test "${with_binutils+set}" = set; then :
+ withval=$with_binutils; path_binutils=$withval
+else
+ path_binutils=''
+fi
+
+
+# Check whether --with-selinux was given.
+if test "${with_selinux+set}" = set; then :
+ withval=$with_selinux; with_selinux=$withval
+else
+ with_selinux=auto
+fi
+
+
+
+# Check whether --with-headers was given.
+if test "${with_headers+set}" = set; then :
+ withval=$with_headers; sysheaders=$withval
+else
+ sysheaders=''
+fi
+
+
+
+
+
+# Check whether --with-default-link was given.
+if test "${with_default_link+set}" = set; then :
+ withval=$with_default_link; use_default_link=$withval
+else
+ use_default_link=no
+fi
+
+
+
+# Check whether --with-nonshared-cflags was given.
+if test "${with_nonshared_cflags+set}" = set; then :
+ withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval
+else
+ extra_nonshared_cflags=
+fi
+
+
+
+# Check whether --with-rtld-early-cflags was given.
+if test "${with_rtld_early_cflags+set}" = set; then :
+ withval=$with_rtld_early_cflags; rtld_early_cflags=$withval
+else
+ rtld_early_cflags=
+fi
+
+
+
+
+# Check whether --with-timeoutfactor was given.
+if test "${with_timeoutfactor+set}" = set; then :
+ withval=$with_timeoutfactor; timeoutfactor=$withval
+else
+ timeoutfactor=1
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define TIMEOUTFACTOR $timeoutfactor
+_ACEOF
+
+
+# Check whether --enable-sanity-checks was given.
+if test "${enable_sanity_checks+set}" = set; then :
+ enableval=$enable_sanity_checks; enable_sanity=$enableval
+else
+ enable_sanity=yes
+fi
+
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; shared=$enableval
+else
+ shared=yes
+fi
+
+# Check whether --enable-profile was given.
+if test "${enable_profile+set}" = set; then :
+ enableval=$enable_profile; profile=$enableval
+else
+ profile=no
+fi
+
+# Check whether --enable-default-pie was given.
+if test "${enable_default_pie+set}" = set; then :
+ enableval=$enable_default_pie; default_pie=$enableval
+else
+ default_pie=yes
+fi
+
+# Check whether --enable-timezone-tools was given.
+if test "${enable_timezone_tools+set}" = set; then :
+ enableval=$enable_timezone_tools; enable_timezone_tools=$enableval
+else
+ enable_timezone_tools=yes
+fi
+
+
+
+# Check whether --enable-hardcoded-path-in-tests was given.
+if test "${enable_hardcoded_path_in_tests+set}" = set; then :
+ enableval=$enable_hardcoded_path_in_tests; hardcoded_path_in_tests=$enableval
+else
+ hardcoded_path_in_tests=no
+fi
+
+
+
+# Check whether --enable-hidden-plt was given.
+if test "${enable_hidden_plt+set}" = set; then :
+ enableval=$enable_hidden_plt; hidden=$enableval
+else
+ hidden=yes
+fi
+
+if test "x$hidden" = xno; then
+ $as_echo "#define NO_HIDDEN 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-bind-now was given.
+if test "${enable_bind_now+set}" = set; then :
+ enableval=$enable_bind_now; bindnow=$enableval
+else
+ bindnow=no
+fi
+
+
+if test "x$bindnow" = xyes; then
+ $as_echo "#define BIND_NOW 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-stack-protector was given.
+if test "${enable_stack_protector+set}" = set; then :
+ enableval=$enable_stack_protector; enable_stack_protector=$enableval
+else
+ enable_stack_protector=no
+fi
+
+case "$enable_stack_protector" in
+all|yes|no|strong) ;;
+*) as_fn_error $? "Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"" "$LINENO" 5;;
+esac
+
+# Check whether --enable-static-nss was given.
+if test "${enable_static_nss+set}" = set; then :
+ enableval=$enable_static_nss; static_nss=$enableval
+else
+ static_nss=no
+fi
+
+if test x"$static_nss" = xyes || test x"$shared" = xno; then
+ static_nss=yes
+ $as_echo "#define DO_STATIC_NSS 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-force-install was given.
+if test "${enable_force_install+set}" = set; then :
+ enableval=$enable_force_install; force_install=$enableval
+else
+ force_install=yes
+fi
+
+
+
+# Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; maintainer=$enableval
+else
+ maintainer=no
+fi
+
+
+# Check whether --enable-kernel was given.
+if test "${enable_kernel+set}" = set; then :
+ enableval=$enable_kernel; minimum_kernel=$enableval
+fi
+
+if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
+ # Better nothing than this.
+ minimum_kernel=""
+else
+ if test "$minimum_kernel" = current; then
+ minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
+ fi
+fi
+
+# Check whether --enable-all-warnings was given.
+if test "${enable_all_warnings+set}" = set; then :
+ enableval=$enable_all_warnings; all_warnings=$enableval
+fi
+
+
+
+# Check whether --enable-werror was given.
+if test "${enable_werror+set}" = set; then :
+ enableval=$enable_werror; enable_werror=$enableval
+else
+ enable_werror=yes
+fi
+
+
+
+# Check whether --enable-multi-arch was given.
+if test "${enable_multi_arch+set}" = set; then :
+ enableval=$enable_multi_arch; multi_arch=$enableval
+else
+ multi_arch=default
+fi
+
+
+# Check whether --enable-experimental-malloc was given.
+if test "${enable_experimental_malloc+set}" = set; then :
+ enableval=$enable_experimental_malloc; experimental_malloc=$enableval
+else
+ experimental_malloc=yes
+fi
+
+
+
+# Check whether --enable-memory-tagging was given.
+if test "${enable_memory_tagging+set}" = set; then :
+ enableval=$enable_memory_tagging; memory_tagging=$enableval
+else
+ memory_tagging=no
+fi
+
+if test "$memory_tagging" = yes; then
+ # Only enable this on architectures that support it.
+ case $host_cpu in
+ aarch64)
+ $as_echo "#define USE_MTAG 1" >>confdefs.h
+
+ ;;
+ esac
+fi
+
+
+# Check whether --enable-crypt was given.
+if test "${enable_crypt+set}" = set; then :
+ enableval=$enable_crypt; build_crypt=$enableval
+else
+ build_crypt=yes
+fi
+
+
+
+# Check whether --enable-nss-crypt was given.
+if test "${enable_nss_crypt+set}" = set; then :
+ enableval=$enable_nss_crypt; nss_crypt=$enableval
+else
+ nss_crypt=no
+fi
+
+if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-nss-crypt has no effect when libcrypt is disabled" >&5
+$as_echo "$as_me: WARNING: --enable-nss-crypt has no effect when libcrypt is disabled" >&2;}
+ nss_crypt=no
+fi
+if test x$nss_crypt = xyes; then
+ nss_includes=-I$(nss-config --includedir 2>/dev/null)
+ if test $? -ne 0; then
+ as_fn_error $? "cannot find include directory with nss-config" "$LINENO" 5
+ fi
+ nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
+ if test $? -ne 0; then
+ as_fn_error $? "cannot find include directory with nspr-config" "$LINENO" 5
+ fi
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $nss_includes $nspr_includes"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+void f (void) { NSSLOW_Init (); }
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_nss_crypt=yes
+else
+ as_fn_error $? "
+cannot find NSS headers with lowlevel hash function interfaces" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ old_LIBS="$LIBS"
+ old_LDFLAGS="$LDFLAGS"
+ LIBS="$LIBS -lfreebl3"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+int
+main ()
+{
+NSSLOW_Init();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ libc_cv_nss_crypt=yes
+else
+ as_fn_error $? "
+cannot link program using lowlevel NSS hash functions" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ # Check to see if there is a static NSS cryptographic library.
+ # If there isn't then we can't link anything with libcrypt.a,
+ # and that might mean disabling some static tests.
+ LDFLAGS="$LDFLAGS -static"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+int
+main ()
+{
+NSSLOW_Init();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ libc_cv_static_nss_crypt=yes
+else
+ libc_cv_static_nss_crypt=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$old_LDFLAGS"
+ CFLAGS="$old_CFLAGS"
+ LIBS="$old_LIBS"
+else
+ libc_cv_nss_crypt=no
+ libc_cv_static_nss_crypt=no
+fi
+
+
+
+
+# Check whether --enable-systemtap was given.
+if test "${enable_systemtap+set}" = set; then :
+ enableval=$enable_systemtap; systemtap=$enableval
+else
+ systemtap=no
+fi
+
+if test "x$systemtap" != xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemtap static probe support" >&5
+$as_echo_n "checking for systemtap static probe support... " >&6; }
+if ${libc_cv_sdt+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="-std=gnu11 $CFLAGS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/sdt.h>
+void foo (int i, void *p)
+{
+ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
+ :: STAP_PROBE_ASM_OPERANDS (2, i, p));
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_sdt=yes
+else
+ libc_cv_sdt=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$old_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sdt" >&5
+$as_echo "$libc_cv_sdt" >&6; }
+ if test $libc_cv_sdt = yes; then
+ $as_echo "#define USE_STAP_PROBE 1" >>confdefs.h
+
+ elif test "x$systemtap" != xauto; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "systemtap support needs sys/sdt.h with asm support
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+fi
+
+# Check whether --enable-build-nscd was given.
+if test "${enable_build_nscd+set}" = set; then :
+ enableval=$enable_build_nscd; build_nscd=$enableval
+else
+ build_nscd=default
+fi
+
+
+
+# Note the use of $use_nscd is near the bottom of the file.
+# Check whether --enable-nscd was given.
+if test "${enable_nscd+set}" = set; then :
+ enableval=$enable_nscd; use_nscd=$enableval
+else
+ use_nscd=yes
+fi
+
+
+# Check whether --enable-pt_chown was given.
+if test "${enable_pt_chown+set}" = set; then :
+ enableval=$enable_pt_chown; build_pt_chown=$enableval
+else
+ build_pt_chown=no
+fi
+
+
+if test "$build_pt_chown" = yes; then
+ $as_echo "#define HAVE_PT_CHOWN 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-tunables was given.
+if test "${enable_tunables+set}" = set; then :
+ enableval=$enable_tunables; have_tunables=$enableval
+else
+ have_tunables=yes
+fi
+
+
+if test "$have_tunables" = yes; then
+ $as_echo "#define HAVE_TUNABLES 1" >>confdefs.h
+
+fi
+
+# The abi-tags file uses a fairly simplistic model for name recognition that
+# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
+# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
+# This doesn't get used much beyond that, so it's fairly safe.
+case "$host_os" in
+linux*)
+ ;;
+gnu*)
+ host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
+ ;;
+esac
+
+# Check whether --enable-mathvec was given.
+if test "${enable_mathvec+set}" = set; then :
+ enableval=$enable_mathvec; build_mathvec=$enableval
+else
+ build_mathvec=notset
+fi
+
+
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifndef __CET__
+# error no CET compiler support
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ libc_cv_compiler_default_cet=yes
+else
+ libc_cv_compiler_default_cet=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+# Check whether --enable-cet was given.
+if test "${enable_cet+set}" = set; then :
+ enableval=$enable_cet; enable_cet=$enableval
+else
+ enable_cet=$libc_cv_compiler_default_cet
+fi
+
+
+# Check whether --enable-scv was given.
+if test "${enable_scv+set}" = set; then :
+ enableval=$enable_scv; use_scv=$enableval
+else
+ use_scv=yes
+fi
+
+
+if test "$use_scv" != "no"; then :
+ $as_echo "#define USE_PPC_SCV 1" >>confdefs.h
+
+fi
+
+# We keep the original values in `$config_*' and never modify them, so we
+# can write them unchanged into config.make. Everything else uses
+# $machine, $vendor, and $os, and changes them whenever convenient.
+config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
+
+# Don't allow vendor == "unknown"
+test "$config_vendor" = unknown && config_vendor=
+config_os="`echo $config_os | sed 's/^unknown-//'`"
+
+# Some configurations imply other options.
+elf=yes
+
+# The configure fragment of a port can modify these to supplement
+# or override the table in the case statement below. No fragment should
+# ever change the config_* variables, however.
+machine=$config_machine
+vendor=$config_vendor
+os=$config_os
+base_os=''
+
+submachine=
+
+# Check whether --with-cpu was given.
+if test "${with_cpu+set}" = set; then :
+ withval=$with_cpu; case "$withval" in
+ yes|'') as_fn_error $? "--with-cpu requires an argument" "$LINENO" 5 ;;
+ no) ;;
+ *) submachine="$withval" ;;
+ esac
+
+fi
+
+
+# An preconfigure script can set this when it wants to disable the sanity
+# check below.
+libc_config_ok=no
+
+# A preconfigure script for a system that may or may not use fpu
+# sysdeps directories sets this to a preprocessor conditional for
+# whether to use such directories.
+with_fp_cond=1
+
+if frags=`ls -d $srcdir/sysdeps/*/preconfigure 2> /dev/null`
+then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysdeps preconfigure fragments" >&5
+$as_echo_n "checking for sysdeps preconfigure fragments... " >&6; }
+ for frag in $frags; do
+ name=`echo "$frag" | sed 's@/[^/]*$@@;s@^.*/@@'`
+ echo $ECHO_N "$name $ECHO_C" >&6
+ . "$frag"
+ done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+fi
+
+
+###
+### By using the undocumented --enable-hacker-mode option for configure
+### one can skip this test to make the configuration not fail for unsupported
+### platforms.
+###
+if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
+ case "$machine-$host_os" in
+ *-linux* | *-gnu*)
+ ;;
+ *)
+ as_fn_error $? "
+*** The GNU C library is currently unavailable for this platform.
+*** If you are interested in seeing glibc on this platform visit
+*** the \"How to submit a new port\" in the wiki:
+*** https://sourceware.org/glibc/wiki/#Development
+*** and join the community!" "$LINENO" 5
+ ;;
+ esac
+fi
+
+# Set base_machine if not set by a preconfigure fragment.
+test -n "$base_machine" || base_machine=$machine
+
+
+### Locate tools.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
+ # The makefiles need to use a different form to find it in $srcdir.
+ INSTALL='\$(..)./scripts/install-sh -c'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+# Was a --with-binutils option given?
+if test -n "$path_binutils"; then
+ # Make absolute; ensure a single trailing slash.
+ path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
+ CC="$CC -B$path_binutils"
+fi
+case "$CC" in
+ *fuse-ld=lld*) LDNAME=ld.lld;;
+ *) LDNAME=ld;;
+esac
+if test -z "$LD"; then
+ LD=`$CC -print-prog-name=$LDNAME`
+fi
+if test -z "$AR"; then
+ AR=`$CC -print-prog-name=ar`
+fi
+
+if test -z "$OBJCOPY"; then
+ OBJCOPY=`$CC -print-prog-name=objcopy`
+fi
+
+if test -z "$GPROF"; then
+ GPROF=`$CC -print-prog-name=gprof`
+fi
+
+if test -z "$READELF"; then
+ READELF=`$CC -print-prog-name=readelf`
+fi
+
+if test -z "$OBJDUMP"; then
+ OBJDUMP=`$CC -print-prog-name=objdump`
+fi
+
+if test -z "$NM"; then
+ NM=`$CC -print-prog-name=nm`
+fi
+
+
+
+# Accept binutils 2.25 or newer.
+libc_cv_with_lld=no
+case $($LD --version) in
+ "GNU gold"*)
+ # Accept gold 1.14 or higher
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU gold.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing GNU gold"
+fi
+
+ ;;
+ "LLD"*)
+ # Accept LLD 13.0.0 or higher
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*LLD.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1[3-9].*|[2-9][0-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing LLD"
+fi
+
+ libc_cv_with_lld=yes
+ ;;
+ *)
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing GNU ld"
+fi
+
+ ;;
+esac
+config_vars="$config_vars
+with-lld = $libc_cv_with_lld"
+
+# These programs are version sensitive.
+for ac_prog in gnumake gmake make
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MAKE"; then
+ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MAKE="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKE=$ac_cv_prog_MAKE
+if test -n "$MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5
+$as_echo "$MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MAKE" && break
+done
+
+if test -z "$MAKE"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $MAKE" >&5
+$as_echo_n "checking version of $MAKE... " >&6; }
+ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ [4-9].* | [1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ critic_missing="$critic_missing make"
+fi
+
+
+for ac_prog in gnumsgfmt gmsgfmt msgfmt
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MSGFMT"; then
+ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MSGFMT="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MSGFMT=$ac_cv_prog_MSGFMT
+if test -n "$MSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MSGFMT" && break
+done
+
+if test -z "$MSGFMT"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $MSGFMT" >&5
+$as_echo_n "checking version of $MSGFMT... " >&6; }
+ ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ MSGFMT=: aux_missing="$aux_missing msgfmt"
+fi
+
+for ac_prog in makeinfo
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MAKEINFO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MAKEINFO"; then
+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MAKEINFO="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKEINFO=$ac_cv_prog_MAKEINFO
+if test -n "$MAKEINFO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5
+$as_echo "$MAKEINFO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MAKEINFO" && break
+done
+
+if test -z "$MAKEINFO"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $MAKEINFO" >&5
+$as_echo_n "checking version of $MAKEINFO... " >&6; }
+ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 4.[7-9]*|4.[1-9][0-9]*|[5-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ MAKEINFO=: aux_missing="$aux_missing makeinfo"
+fi
+
+for ac_prog in sed
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$SED"; then
+ ac_cv_prog_SED="$SED" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_SED="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+SED=$ac_cv_prog_SED
+if test -n "$SED"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5
+$as_echo "$SED" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SED" && break
+done
+
+if test -z "$SED"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $SED" >&5
+$as_echo_n "checking version of $SED... " >&6; }
+ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed[^0-9]* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 3.0[2-9]*|3.[1-9]*|[4-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ SED=: aux_missing="$aux_missing sed"
+fi
+
+for ac_prog in gawk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+if test -z "$AWK"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $AWK" >&5
+$as_echo_n "checking version of $AWK... " >&6; }
+ ac_prog_version=`$AWK --version 2>&1 | sed -n 's/^.*GNU Awk[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 3.1.[2-9]*|3.[2-9]*|[4-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ critic_missing="$critic_missing gawk"
+fi
+
+for ac_prog in bison
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_BISON+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$BISON"; then
+ ac_cv_prog_BISON="$BISON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_BISON="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+BISON=$ac_cv_prog_BISON
+if test -n "$BISON"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5
+$as_echo "$BISON" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BISON" && break
+done
+
+if test -z "$BISON"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $BISON" >&5
+$as_echo_n "checking version of $BISON... " >&6; }
+ ac_prog_version=`$BISON --version 2>&1 | sed -n 's/^.*bison (GNU Bison) \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 2.7*|[3-9].*|[1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ critic_missing="$critic_missing bison"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC is sufficient to build libc" >&5
+$as_echo_n "checking if $CC is sufficient to build libc... " >&6; }
+if ${libc_cv_compiler_ok+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)
+#error insufficient compiler
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ libc_cv_compiler_ok=yes
+else
+ libc_cv_compiler_ok=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_ok" >&5
+$as_echo "$libc_cv_compiler_ok" >&6; }
+if test $libc_cv_compiler_ok != yes; then :
+ critic_missing="$critic_missing compiler"
+fi
+
+if test "x$maintainer" = "xyes"; then
+ for ac_prog in autoconf
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AUTOCONF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AUTOCONF"; then
+ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AUTOCONF="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AUTOCONF=$ac_cv_prog_AUTOCONF
+if test -n "$AUTOCONF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOCONF" >&5
+$as_echo "$AUTOCONF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AUTOCONF" && break
+done
+test -n "$AUTOCONF" || AUTOCONF="no"
+
+ case "x$AUTOCONF" in
+ xno|x|x:) AUTOCONF=no ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
+$as_echo_n "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... " >&6; }
+if ${libc_cv_autoconf_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
+ libc_cv_autoconf_works=yes
+ else
+ libc_cv_autoconf_works=no
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_autoconf_works" >&5
+$as_echo "$libc_cv_autoconf_works" >&6; }
+ test $libc_cv_autoconf_works = yes || AUTOCONF=no
+ ;;
+ esac
+ if test "x$AUTOCONF" = xno; then
+ aux_missing="$aux_missing autoconf"
+ fi
+else
+ AUTOCONF=no
+fi
+
+# Check for python3 if available, or else python.
+for ac_prog in python3 python
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PYTHON_PROG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PYTHON_PROG"; then
+ ac_cv_prog_PYTHON_PROG="$PYTHON_PROG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PYTHON_PROG="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+PYTHON_PROG=$ac_cv_prog_PYTHON_PROG
+if test -n "$PYTHON_PROG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_PROG" >&5
+$as_echo "$PYTHON_PROG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PYTHON_PROG" && break
+done
+
+if test -z "$PYTHON_PROG"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $PYTHON_PROG" >&5
+$as_echo_n "checking version of $PYTHON_PROG... " >&6; }
+ ac_prog_version=`$PYTHON_PROG --version 2>&1 | sed -n 's/^.*Python \([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ critic_missing="$critic_missing python"
+fi
+
+PYTHON="$PYTHON_PROG -B"
+
+
+test -n "$critic_missing" && as_fn_error $? "
+*** These critical programs are missing or too old:$critic_missing
+*** Check the INSTALL file for required versions." "$LINENO" 5
+
+test -n "$aux_missing" && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+*** These auxiliary programs are missing or incompatible versions:$aux_missing
+*** some features or tests will be disabled.
+*** Check the INSTALL file for required versions." >&5
+$as_echo "$as_me: WARNING:
+*** These auxiliary programs are missing or incompatible versions:$aux_missing
+*** some features or tests will be disabled.
+*** Check the INSTALL file for required versions." >&2;}
+
+
+# Determine whether to use fpu or nofpu sysdeps directories.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for use of fpu sysdeps directories" >&5
+$as_echo_n "checking for use of fpu sysdeps directories... " >&6; }
+if ${libc_cv_with_fp+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+#if $with_fp_cond
+int dummy;
+#else
+# error "no hardware floating point"
+#endif
+EOF
+libc_cv_with_fp=no
+if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
+ 1>&5 2>&5 ; then
+ libc_cv_with_fp=yes
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_with_fp" >&5
+$as_echo "$libc_cv_with_fp" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fstack-protector" >&5
+$as_echo_n "checking for -fstack-protector... " >&6; }
+if ${libc_cv_ssp+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -fstack-protector -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_ssp=yes
+else
+ libc_cv_ssp=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ssp" >&5
+$as_echo "$libc_cv_ssp" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fstack-protector-strong" >&5
+$as_echo_n "checking for -fstack-protector-strong... " >&6; }
+if ${libc_cv_ssp_strong+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -fstack-protector-strong -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_ssp_strong=yes
+else
+ libc_cv_ssp_strong=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ssp_strong" >&5
+$as_echo "$libc_cv_ssp_strong" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fstack-protector-all" >&5
+$as_echo_n "checking for -fstack-protector-all... " >&6; }
+if ${libc_cv_ssp_all+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -fstack-protector-all -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_ssp_all=yes
+else
+ libc_cv_ssp_all=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ssp_all" >&5
+$as_echo "$libc_cv_ssp_all" >&6; }
+
+stack_protector=
+no_stack_protector=
+if test "$libc_cv_ssp" = yes; then
+ no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
+ $as_echo "#define HAVE_CC_NO_STACK_PROTECTOR 1" >>confdefs.h
+
+fi
+
+if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
+ stack_protector="-fstack-protector"
+ $as_echo "#define STACK_PROTECTOR_LEVEL 1" >>confdefs.h
+
+elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
+ stack_protector="-fstack-protector-all"
+ $as_echo "#define STACK_PROTECTOR_LEVEL 2" >>confdefs.h
+
+elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
+ stack_protector="-fstack-protector-strong"
+ $as_echo "#define STACK_PROTECTOR_LEVEL 3" >>confdefs.h
+
+else
+ stack_protector="-fno-stack-protector"
+ $as_echo "#define STACK_PROTECTOR_LEVEL 0" >>confdefs.h
+
+fi
+
+
+
+
+if test -n "$stack_protector"; then
+ no_ssp=-fno-stack-protector
+else
+ no_ssp=
+
+ if test "$enable_stack_protector" != no; then
+ as_fn_error $? "--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler." "$LINENO" 5
+ fi
+fi
+
+# For the multi-arch option we need support in the assembler & linker.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler and linker STT_GNU_IFUNC support" >&5
+$as_echo_n "checking for assembler and linker STT_GNU_IFUNC support... " >&6; }
+if ${libc_cv_ld_gnu_indirect_function+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.S <<EOF
+.type foo,%gnu_indirect_function
+foo:
+.globl _start
+_start:
+.globl __start
+__start:
+.data
+#ifdef _LP64
+.quad foo
+#else
+.long foo
+#endif
+EOF
+libc_cv_ld_gnu_indirect_function=no
+if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+ -nostartfiles -nostdlib $no_ssp \
+ -o conftest conftest.S 1>&5 2>&5; then
+ # Do a link to see if the backend supports IFUNC relocs.
+ $READELF -r conftest 1>&5
+ LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && {
+ libc_cv_ld_gnu_indirect_function=yes
+ }
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ld_gnu_indirect_function" >&5
+$as_echo "$libc_cv_ld_gnu_indirect_function" >&6; }
+
+# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc attribute ifunc support" >&5
+$as_echo_n "checking for gcc attribute ifunc support... " >&6; }
+if ${libc_cv_gcc_indirect_function+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+extern int func (int);
+int used_func (int a)
+{
+ return a;
+}
+static void *resolver ()
+{
+ return &used_func;
+}
+extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
+EOF
+libc_cv_gcc_indirect_function=no
+if ${CC-cc} -c conftest.c -o conftest.o 1>&5 \
+ 2>&5 ; then
+ if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&5; then
+ libc_cv_gcc_indirect_function=yes
+ fi
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_indirect_function" >&5
+$as_echo "$libc_cv_gcc_indirect_function" >&6; }
+
+# Check if linker supports textrel relocation with ifunc (used on elf/tests).
+# Note that it relies on libc_cv_ld_gnu_indirect_function test above.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker supports textrels along with ifunc" >&5
+$as_echo_n "checking whether the linker supports textrels along with ifunc... " >&6; }
+if ${libc_cv_textrel_ifunc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.S <<EOF
+.type foo,%gnu_indirect_function
+foo:
+.globl _start
+_start:
+.globl __start
+__start:
+.data
+#ifdef _LP64
+.quad foo
+#else
+.long foo
+#endif
+.text
+.globl address
+address:
+#ifdef _LP64
+.quad address
+#else
+.long address
+#endif
+EOF
+libc_cv_textrel_ifunc=no
+if test $libc_cv_ld_gnu_indirect_function = yes; then
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ libc_cv_textrel_ifunc=yes
+ fi
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_textrel_ifunc" >&5
+$as_echo "$libc_cv_textrel_ifunc" >&6; }
+
+
+# Check if CC supports attribute retain as it is used in attribute_used_retain macro.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU attribute retain support" >&5
+$as_echo_n "checking for GNU attribute retain support... " >&6; }
+if ${libc_cv_gnu_retain+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+static int var __attribute__ ((used, retain, section ("__libc_atexit")));
+EOF
+libc_cv_gnu_retain=no
+if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&5 \
+ 2>&5 ; then
+ libc_cv_gnu_retain=yes
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gnu_retain" >&5
+$as_echo "$libc_cv_gnu_retain" >&6; }
+if test $libc_cv_gnu_retain = yes; then
+ $as_echo "#define HAVE_GNU_RETAIN 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+have-gnu-retain = $libc_cv_gnu_retain"
+
+# Check if gcc warns about alias for function with incompatible types.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler warns about alias for function with incompatible types" >&5
+$as_echo_n "checking if compiler warns about alias for function with incompatible types... " >&6; }
+if ${libc_cv_gcc_incompatible_alias+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+int __redirect_foo (const void *s, int c);
+
+__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
+__typeof (__redirect_foo) *foo_impl (void)
+{
+ return 0;
+}
+
+extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
+EOF
+libc_cv_gcc_incompatible_alias=yes
+if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&5 2>&5 ; then
+ libc_cv_gcc_incompatible_alias=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_incompatible_alias" >&5
+$as_echo "$libc_cv_gcc_incompatible_alias" >&6; }
+
+if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
+ if test x"$multi_arch" = xyes; then
+ as_fn_error $? "--enable-multi-arch support requires assembler and linker support" "$LINENO" 5
+ else
+ multi_arch=no
+ fi
+fi
+if test x"$libc_cv_gcc_indirect_function" != xyes; then
+ # GCC 8+ emits a warning for alias with incompatible types and it might
+ # fail to build ifunc resolvers aliases to either weak or internal
+ # symbols. Disables multiarch build in this case.
+ if test x"$libc_cv_gcc_incompatible_alias" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: gcc emits a warning for alias between functions of incompatible types" >&5
+$as_echo "$as_me: WARNING: gcc emits a warning for alias between functions of incompatible types" >&2;}
+ if test x"$multi_arch" = xyes; then
+ as_fn_error $? "--enable-multi-arch support requires a gcc with gnu-indirect-function support" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Multi-arch is disabled." >&5
+$as_echo "$as_me: WARNING: Multi-arch is disabled." >&2;}
+ multi_arch=no
+ elif test x"$multi_arch" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-multi-arch support recommends a gcc with gnu-indirect-function support.
+Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function" >&5
+$as_echo "$as_me: WARNING: --enable-multi-arch support recommends a gcc with gnu-indirect-function support.
+Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function" >&2;}
+ fi
+fi
+multi_arch_d=
+if test x"$multi_arch" != xno; then
+ multi_arch_d=/multiarch
+fi
+
+# Compute the list of sysdep directories for this configuration.
+# This can take a while to compute.
+sysdep_dir=$srcdir/sysdeps
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sysdep dirs" >&5
+$as_echo_n "checking sysdep dirs... " >&6; }
+# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
+os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
+
+test "x$base_os" != x || case "$os" in
+gnu*)
+ base_os=mach/hurd ;;
+linux*)
+ base_os=unix/sysv ;;
+esac
+
+# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
+tail=$os
+ostry=$os
+while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
+ ostry="$ostry /$o"
+ tail=$o
+done
+o=`echo $tail | sed 's/[0-9]*$//'`
+if test $o != $tail; then
+ ostry="$ostry /$o"
+fi
+# For linux-gnu, try linux-gnu, then linux.
+o=`echo $tail | sed 's/-.*$//'`
+if test $o != $tail; then
+ ostry="$ostry /$o"
+fi
+
+# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
+base=
+tail=$base_os
+while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
+ set $b
+ base="$base /$1"
+ tail="$2"
+done
+
+# For sparc/sparc32, try sparc/sparc32 and then sparc.
+mach=
+tail=$machine${submachine:+/$submachine}
+while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
+ set $m
+ # Prepend the machine's FPU directory unless the architecture specific
+ # preconfigure disables it.
+ if test "$libc_cv_with_fp" = yes; then
+ maybe_fpu=/fpu
+ else
+ maybe_fpu=/nofpu
+ fi
+ # For each machine term, try it with and then without /multiarch.
+ for try_fpu in $maybe_fpu ''; do
+ for try_multi in $multi_arch_d ''; do
+ mach="$mach /$1$try_fpu$try_multi"
+ done
+ done
+ tail="$2"
+done
+
+
+# Find what sysdep directories exist.
+sysnames=
+for b in $base ''; do
+ for m0 in $mach ''; do
+ for v in /$vendor ''; do
+ test "$v" = / && continue
+ for o in /$ostry ''; do
+ test "$o" = / && continue
+ for m in $mach ''; do
+ try_suffix="$m0$b$v$o$m"
+ if test -n "$try_suffix"; then
+ try_srcdir="${srcdir}/"
+ try="sysdeps$try_suffix"
+ test -n "$enable_debug_configure" &&
+ echo "$0 DEBUG: try $try" >&2
+ if test -d "$try_srcdir$try"; then
+ sysnames="$sysnames $try"
+ { test -n "$o" || test -n "$b"; } && os_used=t
+ { test -n "$m" || test -n "$m0"; } && machine_used=t
+ case x${m0:-$m} in
+ x*/$submachine) submachine_used=t ;;
+ esac
+ fi
+ fi
+ done
+ done
+ done
+ done
+done
+
+# If the assembler supports gnu_indirect_function symbol type and the
+# architecture supports multi-arch, we enable multi-arch by default.
+case $sysnames in
+*"$multi_arch_d"*)
+ ;;
+*)
+ test x"$multi_arch" = xdefault && multi_arch=no
+ ;;
+esac
+if test x"$multi_arch" != xno; then
+ $as_echo "#define USE_MULTIARCH 1" >>confdefs.h
+
+fi
+
+
+if test -z "$os_used" && test "$os" != none; then
+ as_fn_error $? "Operating system $os is not supported." "$LINENO" 5
+fi
+if test -z "$machine_used" && test "$machine" != none; then
+ as_fn_error $? "The $machine is not supported." "$LINENO" 5
+fi
+if test -z "$submachine_used" && test -n "$submachine"; then
+ as_fn_error $? "The $submachine subspecies of $host_cpu is not supported." "$LINENO" 5
+fi
+
+
+# We have now validated the configuration.
+
+# Expand the list of system names into a full list of directories
+# from each element's parent name and Implies file (if present).
+set $sysnames
+names=
+while test $# -gt 0; do
+ name=$1
+ shift
+
+ case " $names " in *" $name "*)
+ # Already in the list.
+ continue
+ esac
+
+ # Report each name as we discover it, so there is no long pause in output.
+ echo $ECHO_N "$name $ECHO_C" >&6
+
+ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
+
+ case $name in
+ /*) xsrcdir= ;;
+ *) xsrcdir=$srcdir/ ;;
+ esac
+ test -n "$enable_debug_configure" &&
+ echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
+
+ for implies_file in Implies Implies-before Implies-after; do
+ implies_type=`echo $implies_file | sed s/-/_/`
+ eval ${implies_type}=
+ if test -f $xsrcdir$name/$implies_file; then
+ # Collect more names from the `Implies' file (removing comments).
+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
+ for x in $implied_candidate; do
+ found=no
+ if test -d $xsrcdir$name_base/$x; then
+ eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
+ found=yes
+ fi
+ try="sysdeps/$x"
+ try_srcdir=$srcdir/
+ test -n "$enable_debug_configure" &&
+ echo "DEBUG: $name $implies_file $x try() {$try_srcdir}$try" >&2
+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
+ then
+ eval "${implies_type}=\"\$${implies_type} \$try\""
+ found=yes
+ fi
+ if test $found = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $name/$implies_file specifies nonexistent $x" >&5
+$as_echo "$as_me: WARNING: $name/$implies_file specifies nonexistent $x" >&2;}
+ fi
+ done
+ fi
+ done
+
+ # Add NAME to the list of names.
+ names="$names $name"
+
+ # Find the parent of NAME, using the empty string if it has none.
+ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
+
+ test -n "$enable_debug_configure" &&
+ echo "DEBUG: $name Implies='$Implies' rest='$*' parent='$parent' \
+Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
+
+ # Add the names implied by NAME, and NAME's parent (if it has one), to
+ # the list of names to be processed (the argument list). We prepend the
+ # implied names to the list and append the parent. We want implied
+ # directories to come before further directories inferred from the
+ # configuration components; this ensures that for sysv4, unix/common
+ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
+ # after sysv4).
+ sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
+ test -n "$sysnames" && set $sysnames
+done
+
+# Add the default directories.
+default_sysnames="sysdeps/generic"
+sysnames="$names $default_sysnames"
+
+# The other names were emitted during the scan.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $default_sysnames" >&5
+$as_echo "$default_sysnames" >&6; }
+
+# if using special system headers, find out the compiler's sekrit
+# header directory and add that to the list. NOTE: Only does the right
+# thing on a system that doesn't need fixincludes. (Not presently a problem.)
+if test -n "$sysheaders"; then
+ SYSINCLUDES=-nostdinc
+ for d in include include-fixed; do
+ i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
+ SYSINCLUDES="$SYSINCLUDES -isystem $i"
+ done
+ SYSINCLUDES="$SYSINCLUDES \
+-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
+ if test -n "$CXX"; then
+ CXX_SYSINCLUDES=
+ for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
+ | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
+ test "x$cxxheaders" != x &&
+ CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
+ done
+ fi
+fi
+
+
+
+# Obtain some C++ header file paths. This is used to make a local
+# copy of those headers in Makerules.
+if test -n "$CXX"; then
+ find_cxx_header () {
+ echo "#include <$1>" | $CXX -H -fsyntax-only -x c++ - 2>&1 \
+ | $AWK '$1 == "."{print $2}'
+ }
+ CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
+ CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+ CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
+fi
+
+
+
+
+# Test if LD_LIBRARY_PATH contains the notation for the current directory
+# since this would lead to problems installing/building glibc.
+# LD_LIBRARY_PATH contains the current directory if one of the following
+# is true:
+# - one of the terminals (":" and ";") is the first or last sign
+# - two terminals occur directly after each other
+# - the path contains an element with a dot in it
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LD_LIBRARY_PATH variable" >&5
+$as_echo_n "checking LD_LIBRARY_PATH variable... " >&6; }
+case ${LD_LIBRARY_PATH} in
+ [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
+ ld_library_path_setting="contains current directory"
+ ;;
+ *)
+ ld_library_path_setting="ok"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_library_path_setting" >&5
+$as_echo "$ld_library_path_setting" >&6; }
+if test "$ld_library_path_setting" != "ok"; then
+as_fn_error $? "
+*** LD_LIBRARY_PATH shouldn't contain the current directory when
+*** building glibc. Please change the environment variable
+*** and run configure again." "$LINENO" 5
+fi
+
+# Extract the first word of "bash", so it can be a program name with args.
+set dummy bash; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASH_SHELL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASH_SHELL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASH_SHELL="$BASH_SHELL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASH_SHELL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_BASH_SHELL" && ac_cv_path_BASH_SHELL="no"
+ ;;
+esac
+fi
+BASH_SHELL=$ac_cv_path_BASH_SHELL
+if test -n "$BASH_SHELL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH_SHELL" >&5
+$as_echo "$BASH_SHELL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PERL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
+ ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "$PERL" != no &&
+ (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
+ PERL=no
+fi
+# Extract the first word of "install-info", so it can be a program name with args.
+set dummy install-info; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_INSTALL_INFO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INSTALL_INFO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="no"
+ ;;
+esac
+fi
+INSTALL_INFO=$ac_cv_path_INSTALL_INFO
+if test -n "$INSTALL_INFO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_INFO" >&5
+$as_echo "$INSTALL_INFO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .set assembler directive" >&5
+$as_echo_n "checking for .set assembler directive... " >&6; }
+if ${libc_cv_asm_set_directive+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<EOF
+.text
+foo:
+.set glibc_conftest_frobozz,foo
+.globl glibc_conftest_frobozz
+EOF
+# The alpha-dec-osf1 assembler gives only a warning for `.set'
+# (but it doesn't work), so we must do a linking check to be sure.
+cat > conftest1.c <<\EOF
+extern int glibc_conftest_frobozz;
+void _start() { glibc_conftest_frobozz = 1; }
+EOF
+if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+ -nostartfiles -nostdlib $no_ssp \
+ -o conftest conftest.s conftest1.c 1>&5 2>&5; then
+ libc_cv_asm_set_directive=yes
+else
+ libc_cv_asm_set_directive=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_set_directive" >&5
+$as_echo "$libc_cv_asm_set_directive" >&6; }
+if test $libc_cv_asm_set_directive = yes; then
+ $as_echo "#define HAVE_ASM_SET_DIRECTIVE 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker support for protected data symbol" >&5
+$as_echo_n "checking linker support for protected data symbol... " >&6; }
+if ${libc_cv_protected_data+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+ int bar __attribute__ ((visibility ("protected"))) = 1;
+EOF
+ libc_cv_protected_data=no
+ if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cat > conftest.c <<EOF
+ extern int bar;
+ int main (void) { return bar; }
+EOF
+ if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ libc_cv_protected_data=yes
+ fi
+ fi
+ rm -f conftest.*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_protected_data" >&5
+$as_echo "$libc_cv_protected_data" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker support for INSERT in linker script" >&5
+$as_echo_n "checking linker support for INSERT in linker script... " >&6; }
+if ${libc_cv_insert+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+ int __attribute__ ((section(".bar"))) bar = 0x12345678;
+ int test (void) { return bar; }
+EOF
+ cat > conftest.t <<EOF
+ SECTIONS
+ {
+ .bar : { *(.bar) }
+ }
+ INSERT AFTER .rela.dyn;
+EOF
+ libc_cv_insert=no
+ if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ libc_cv_insert=yes
+ fi
+ rm -f conftest.*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_insert" >&5
+$as_echo "$libc_cv_insert" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((alias()))" >&5
+$as_echo_n "checking for broken __attribute__((alias()))... " >&6; }
+if ${libc_cv_broken_alias_attribute+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+ extern int foo (int x) __asm ("xyzzy");
+ int bar (int x) { return x; }
+ extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
+ extern int dfoo;
+ extern __typeof (dfoo) dfoo __asm ("abccb");
+ int dfoo = 1;
+EOF
+ libc_cv_broken_alias_attribute=yes
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ if grep 'xyzzy' conftest.s >/dev/null &&
+ grep 'abccb' conftest.s >/dev/null; then
+ libc_cv_broken_alias_attribute=no
+ fi
+ fi
+ rm -f conftest.c conftest.s
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_broken_alias_attribute" >&5
+$as_echo "$libc_cv_broken_alias_attribute" >&6; }
+if test $libc_cv_broken_alias_attribute = yes; then
+ as_fn_error $? "working alias attribute support required" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to put _rtld_local into .sdata section" >&5
+$as_echo_n "checking whether to put _rtld_local into .sdata section... " >&6; }
+if ${libc_cv_have_sdata_section+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ echo "int i;" > conftest.c
+ libc_cv_have_sdata_section=no
+ if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
+ | grep '\.sdata' >/dev/null; then
+ libc_cv_have_sdata_section=yes
+ fi
+ rm -f conftest.c conftest.so
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_sdata_section" >&5
+$as_echo "$libc_cv_have_sdata_section" >&6; }
+if test $libc_cv_have_sdata_section = yes; then
+ $as_echo "#define HAVE_SDATA_SECTION 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind-support in compiler" >&5
+$as_echo_n "checking for libunwind-support in compiler... " >&6; }
+if ${libc_cv_cc_with_libunwind+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
+ conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
+ libc_cv_cc_with_libunwind=yes
+ else
+ libc_cv_cc_with_libunwind=no
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_with_libunwind" >&5
+$as_echo "$libc_cv_cc_with_libunwind" >&6; }
+
+if test $libc_cv_cc_with_libunwind = yes; then
+ $as_echo "#define HAVE_CC_WITH_LIBUNWIND 1" >>confdefs.h
+
+fi
+
+ASFLAGS_config=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --noexecstack is desirable for .S files" >&5
+$as_echo_n "checking whether --noexecstack is desirable for .S files... " >&6; }
+if ${libc_cv_as_noexecstack+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+void foo (void) { }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS
+ -S -o conftest.s conftest.c 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; } \
+ && grep .note.GNU-stack conftest.s >/dev/null \
+ && { ac_try='${CC-cc} $ASFLAGS -Wa,--noexecstack
+ -c -o conftest.o conftest.s 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_as_noexecstack=yes
+else
+ libc_cv_as_noexecstack=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_as_noexecstack" >&5
+$as_echo "$libc_cv_as_noexecstack" >&6; }
+if test $libc_cv_as_noexecstack = yes; then
+ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z execstack" >&5
+$as_echo_n "checking for linker that supports -z execstack... " >&6; }
+libc_linker_feature=no
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -Wl,-z,execstack -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,execstack -nostdlib \
+ -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
+ | grep "warning: -z execstack ignored" > /dev/null 2>&1; then
+ true
+ else
+ libc_linker_feature=yes
+ fi
+fi
+rm -f conftest*
+if test $libc_linker_feature = yes; then
+ libc_cv_z_execstack=yes
+else
+ libc_cv_z_execstack=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z start-stop-gc" >&5
+$as_echo_n "checking for linker that supports -z start-stop-gc... " >&6; }
+libc_linker_feature=no
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -Wl,-z,start-stop-gc -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,start-stop-gc -nostdlib \
+ -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
+ | grep "warning: -z start-stop-gc ignored" > /dev/null 2>&1; then
+ true
+ else
+ libc_linker_feature=yes
+ fi
+fi
+rm -f conftest*
+if test $libc_linker_feature = yes; then
+ libc_cv_z_start_stop_gc=yes
+else
+ libc_cv_z_start_stop_gc=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
+config_vars="$config_vars
+have-z-start-stop-gc = $libc_cv_z_start_stop_gc"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports --depaudit" >&5
+$as_echo_n "checking for linker that supports --depaudit... " >&6; }
+libc_linker_feature=no
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -Wl,--depaudit,x -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,--depaudit,x -nostdlib \
+ -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
+ | grep "warning: --depaudit ignored" > /dev/null 2>&1; then
+ true
+ else
+ libc_linker_feature=yes
+ fi
+fi
+rm -f conftest*
+if test $libc_linker_feature = yes; then
+ libc_cv_depaudit=yes
+else
+ libc_cv_depaudit=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
+config_vars="$config_vars
+have-depaudit = $libc_cv_depaudit"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z pack-relative-relocs" >&5
+$as_echo_n "checking for linker that supports -z pack-relative-relocs... " >&6; }
+libc_linker_feature=no
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -Wl,-z,pack-relative-relocs -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,pack-relative-relocs -nostdlib \
+ -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
+ | grep "warning: -z pack-relative-relocs ignored" > /dev/null 2>&1; then
+ true
+ else
+ libc_linker_feature=yes
+ fi
+fi
+rm -f conftest*
+if test $libc_linker_feature = yes; then
+ libc_cv_dt_relr=yes
+else
+ libc_cv_dt_relr=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
+config_vars="$config_vars
+have-dt-relr = $libc_cv_dt_relr"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports --no-dynamic-linker" >&5
+$as_echo_n "checking for linker that supports --no-dynamic-linker... " >&6; }
+libc_linker_feature=no
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -Wl,--no-dynamic-linker -nostdlib -nostartfiles
+ -fPIC -shared -o conftest.so conftest.c
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,--no-dynamic-linker -nostdlib \
+ -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
+ | grep "warning: --no-dynamic-linker ignored" > /dev/null 2>&1; then
+ true
+ else
+ libc_linker_feature=yes
+ fi
+fi
+rm -f conftest*
+if test $libc_linker_feature = yes; then
+ libc_cv_no_dynamic_linker=yes
+else
+ libc_cv_no_dynamic_linker=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
+$as_echo "$libc_linker_feature" >&6; }
+config_vars="$config_vars
+have-no-dynamic-linker = $libc_cv_no_dynamic_linker"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -static-pie" >&5
+$as_echo_n "checking for -static-pie... " >&6; }
+if ${libc_cv_static_pie+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -static-pie -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_static_pie=yes
+else
+ libc_cv_static_pie=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_static_pie" >&5
+$as_echo "$libc_cv_static_pie" >&6; }
+config_vars="$config_vars
+have-static-pie = $libc_cv_static_pie"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie" >&5
+$as_echo_n "checking for -fpie... " >&6; }
+if ${libc_cv_fpie+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -fpie -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_fpie=yes
+else
+ libc_cv_fpie=no
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fpie" >&5
+$as_echo "$libc_cv_fpie" >&6; }
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --hash-style option" >&5
+$as_echo_n "checking for --hash-style option... " >&6; }
+if ${libc_cv_hashstyle+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -fPIC -shared -o conftest.so conftest.c
+ -Wl,--hash-style=both -nostdlib 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_hashstyle=yes
+else
+ libc_cv_hashstyle=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hashstyle" >&5
+$as_echo "$libc_cv_hashstyle" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOB_DAT reloc" >&5
+$as_echo_n "checking for GLOB_DAT reloc... " >&6; }
+if ${libc_cv_has_glob_dat+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+extern int mumble;
+int foo (void) { return mumble; }
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -fPIC -shared -o conftest.so conftest.c
+ -nostdlib -nostartfiles $no_ssp
+ 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
+ libc_cv_has_glob_dat=yes
+ else
+ libc_cv_has_glob_dat=no
+ fi
+else
+ libc_cv_has_glob_dat=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_has_glob_dat" >&5
+$as_echo "$libc_cv_has_glob_dat" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mtls-dialect=gnu2" >&5
+$as_echo_n "checking for -mtls-dialect=gnu2... " >&6; }
+if ${libc_cv_mtls_dialect_gnu2+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+__thread int i;
+void foo (void)
+{
+ i = 10;
+}
+EOF
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
+ conftest.c -o conftest 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_mtls_dialect_gnu2=yes
+else
+ libc_cv_mtls_dialect_gnu2=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mtls_dialect_gnu2" >&5
+$as_echo "$libc_cv_mtls_dialect_gnu2" >&6; }
+
+config_vars="$config_vars
+have-mtls-dialect-gnu2 = $libc_cv_mtls_dialect_gnu2"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if -Wno-ignored-attributes is required for aliases" >&5
+$as_echo_n "checking if -Wno-ignored-attributes is required for aliases... " >&6; }
+if ${libc_cv_wno_ignored_attributes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+void __foo (void)
+{
+}
+extern __typeof (__foo) foo __attribute__ ((weak, alias ("__foo")));
+extern __typeof (__foo) bar __attribute__ ((weak, alias ("foo")));
+EOF
+libc_cv_wno_ignored_attributes=""
+if ! { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_wno_ignored_attributes="-Wno-ignored-attributes"
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_wno_ignored_attributes" >&5
+$as_echo "$libc_cv_wno_ignored_attributes" >&6; }
+config_vars="$config_vars
+config-cflags-wno-ignored-attributes = $libc_cv_wno_ignored_attributes"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc puts quotes around section names" >&5
+$as_echo_n "checking whether cc puts quotes around section names... " >&6; }
+if ${libc_cv_have_section_quotes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+ static const int foo
+ __attribute__ ((section ("bar"))) = 1;
+EOF
+ if ${CC-cc} -S conftest.c -o conftest.s; then
+ if grep '\.section.*"bar"' conftest.s >/dev/null; then
+ libc_cv_have_section_quotes=yes
+ else
+ libc_cv_have_section_quotes=no
+ fi
+ else
+ libc_cv_have_section_quotes=unknown
+ fi
+ rm -f conftest.{c,s}
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_section_quotes" >&5
+$as_echo "$libc_cv_have_section_quotes" >&6; }
+if test $libc_cv_have_section_quotes = yes; then
+ $as_echo "#define HAVE_SECTION_QUOTES 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_memset" >&5
+$as_echo_n "checking for __builtin_memset... " >&6; }
+if ${libc_cv_gcc_builtin_memset+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<\EOF
+void zero (void *x)
+{
+ __builtin_memset (x, 0, 1000);
+}
+EOF
+if { ac_try='${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; };
+then
+ libc_cv_gcc_builtin_memset=no
+else
+ libc_cv_gcc_builtin_memset=yes
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_builtin_memset" >&5
+$as_echo "$libc_cv_gcc_builtin_memset" >&6; }
+if test "$libc_cv_gcc_builtin_memset" = yes ; then
+ $as_echo "#define HAVE_BUILTIN_MEMSET 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for redirection of built-in functions" >&5
+$as_echo_n "checking for redirection of built-in functions... " >&6; }
+if ${libc_cv_gcc_builtin_redirection+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<\EOF
+extern char *strstr (const char *, const char *) __asm ("my_strstr");
+char *foo (const char *a, const char *b)
+{
+ return __builtin_strstr (a, b);
+}
+EOF
+if { ac_try='${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; };
+then
+ libc_cv_gcc_builtin_redirection=yes
+else
+ libc_cv_gcc_builtin_redirection=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_builtin_redirection" >&5
+$as_echo "$libc_cv_gcc_builtin_redirection" >&6; }
+if test "$libc_cv_gcc_builtin_redirection" = no; then
+ as_fn_error $? "support for the symbol redirection needed" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option to disable generation of FMA instructions" >&5
+$as_echo_n "checking for compiler option to disable generation of FMA instructions... " >&6; }
+if ${libc_cv_cc_nofma+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ libc_cv_cc_nofma=
+for opt in -ffp-contract=off -mno-fused-madd; do
+ if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_cc_nofma=$opt; break
+fi
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_nofma" >&5
+$as_echo "$libc_cv_cc_nofma" >&6; }
+
+
+if test -n "$submachine"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option for CPU variant" >&5
+$as_echo_n "checking for compiler option for CPU variant... " >&6; }
+if ${libc_cv_cc_submachine+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ libc_cv_cc_submachine=no
+ for opt in "-march=$submachine" "-mcpu=$submachine"; do
+ if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+
+ libc_cv_cc_submachine="$opt"
+ break
+fi
+ done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_submachine" >&5
+$as_echo "$libc_cv_cc_submachine" >&6; }
+ if test "x$libc_cv_cc_submachine" = xno; then
+ as_fn_error $? "${CC-cc} does not support $submachine" "$LINENO" 5
+ fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option that -fsignaling-nans" >&5
+$as_echo_n "checking for compiler option that -fsignaling-nans... " >&6; }
+if ${libc_cv_cc_signaling_nans+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -Werror -fsignaling-nans -xc /dev/null -S -o /dev/null'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ libc_cv_cc_signaling_nans=-fsignaling-nans
+else
+ libc_cv_cc_signaling_nans=
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_signaling_nans" >&5
+$as_echo "$libc_cv_cc_signaling_nans" >&6; }
+config_vars="$config_vars
+config-cflags-signaling-nans = $libc_cv_cc_signaling_nans"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-tree-loop-distribute-patterns with \
+__attribute__ ((__optimize__))" >&5
+$as_echo_n "checking if $CC accepts -fno-tree-loop-distribute-patterns with \
+__attribute__ ((__optimize__))... " >&6; }
+if ${libc_cv_cc_loop_to_function+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+void
+__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
+foo (void) {}
+EOF
+libc_cv_cc_loop_to_function=no
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_cc_loop_to_function=yes
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_loop_to_function" >&5
+$as_echo "$libc_cv_cc_loop_to_function" >&6; }
+if test $libc_cv_cc_loop_to_function = yes; then
+ $as_echo "#define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" >>confdefs.h
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5
+$as_echo_n "checking for libgd... " >&6; }
+if test "$with_gd" != "no"; then
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $libgd_include"
+ old_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $libgd_ldflags"
+ old_LIBS="$LIBS"
+ LIBS="$LIBS -lgd -lpng -lz -lm"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <gd.h>
+int
+main ()
+{
+gdImagePng (0, 0)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ LIBGD=yes
+else
+ LIBGD=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$old_CFLAGS"
+ LDFLAGS="$old_LDFLAGS"
+ LIBS="$old_LIBS"
+else
+ LIBGD=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGD" >&5
+$as_echo "$LIBGD" >&6; }
+
+
+# SELinux detection
+if test x$with_selinux = xno ; then
+ have_selinux=no;
+else
+ # See if we have the SELinux library
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5
+$as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; }
+if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lselinux $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char is_selinux_enabled ();
+int
+main ()
+{
+return is_selinux_enabled ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_selinux_is_selinux_enabled=yes
+else
+ ac_cv_lib_selinux_is_selinux_enabled=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
+$as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
+if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then :
+ have_selinux=yes
+else
+ have_selinux=no
+fi
+
+ if test x$with_selinux = xyes ; then
+ if test x$have_selinux = xno ; then
+ as_fn_error $? "SELinux explicitly required, but SELinux library not found" "$LINENO" 5
+ fi
+ fi
+fi
+# Check if we're building with SELinux support.
+if test "x$have_selinux" = xyes; then
+
+$as_echo "#define HAVE_SELINUX 1" >>confdefs.h
+
+
+ # See if we have the libaudit library
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for audit_log_user_avc_message in -laudit" >&5
+$as_echo_n "checking for audit_log_user_avc_message in -laudit... " >&6; }
+if ${ac_cv_lib_audit_audit_log_user_avc_message+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-laudit $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char audit_log_user_avc_message ();
+int
+main ()
+{
+return audit_log_user_avc_message ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_audit_audit_log_user_avc_message=yes
+else
+ ac_cv_lib_audit_audit_log_user_avc_message=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audit_audit_log_user_avc_message" >&5
+$as_echo "$ac_cv_lib_audit_audit_log_user_avc_message" >&6; }
+if test "x$ac_cv_lib_audit_audit_log_user_avc_message" = xyes; then :
+ have_libaudit=yes
+else
+ have_libaudit=no
+fi
+
+ if test "x$have_libaudit" = xyes; then
+
+$as_echo "#define HAVE_LIBAUDIT 1" >>confdefs.h
+
+ fi
+
+
+ # See if we have the libcap library
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cap_init in -lcap" >&5
+$as_echo_n "checking for cap_init in -lcap... " >&6; }
+if ${ac_cv_lib_cap_cap_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcap $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cap_init ();
+int
+main ()
+{
+return cap_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_cap_cap_init=yes
+else
+ ac_cv_lib_cap_cap_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cap_cap_init" >&5
+$as_echo "$ac_cv_lib_cap_cap_init" >&6; }
+if test "x$ac_cv_lib_cap_cap_init" = xyes; then :
+ have_libcap=yes
+else
+ have_libcap=no
+fi
+
+ if test "x$have_libcap" = xyes; then
+
+$as_echo "#define HAVE_LIBCAP 1" >>confdefs.h
+
+ fi
+
+fi
+
+
+CPPUNDEFS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FORTIFY_SOURCE predefine" >&5
+$as_echo_n "checking for _FORTIFY_SOURCE predefine... " >&6; }
+if ${libc_cv_predef_fortify_source+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifdef _FORTIFY_SOURCE
+# error bogon
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_predef_fortify_source=no
+else
+ libc_cv_predef_fortify_source=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_predef_fortify_source" >&5
+$as_echo "$libc_cv_predef_fortify_source" >&6; }
+if test $libc_cv_predef_fortify_source = yes; then
+ CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the assembler requires one version per symbol" >&5
+$as_echo_n "checking whether the assembler requires one version per symbol... " >&6; }
+if ${libc_cv_symver_needs_alias+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<EOF
+ .text
+testfunc:
+ .globl testfunc
+ .symver testfunc, testfunc1@VERSION1
+ .symver testfunc, testfunc1@VERSION2
+EOF
+ libc_cv_symver_needs_alias=no
+ if ${CC-cc} $ASFLAGS -c conftest.s 2>&5; then
+ libc_cv_symver_needs_alias=no
+ else
+ libc_cv_symver_needs_alias=yes
+ fi
+ rm conftest.*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_symver_needs_alias" >&5
+$as_echo "$libc_cv_symver_needs_alias" >&6; }
+if test "$libc_cv_symver_needs_alias" = yes; then
+ $as_echo "#define SYMVER_NEEDS_ALIAS 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_trap with no external dependencies" >&5
+$as_echo_n "checking for __builtin_trap with no external dependencies... " >&6; }
+if ${libc_cv_builtin_trap+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ libc_cv_builtin_trap=no
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+__builtin_trap ()
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+libc_undefs=`$NM -u conftest.o |
+ LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
+ 2>&5` || {
+ as_fn_error $? "confusing output from $NM -u" "$LINENO" 5
+}
+echo >&5 "libc_undefs='$libc_undefs'"
+if test -z "$libc_undefs"; then
+ libc_cv_builtin_trap=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_builtin_trap" >&5
+$as_echo "$libc_cv_builtin_trap" >&6; }
+if test $libc_cv_builtin_trap = yes; then
+ $as_echo "#define HAVE_BUILTIN_TRAP 1" >>confdefs.h
+
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler supports thread_local" >&5
+$as_echo_n "checking whether the C++ compiler supports thread_local... " >&6; }
+if ${libc_cv_cxx_thread_local+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+old_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS -std=gnu++11"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <thread>
+
+// Compiler support.
+struct S
+{
+ S ();
+ ~S ();
+};
+thread_local S s;
+S * get () { return &s; }
+
+// libstdc++ support.
+#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
+#error __cxa_thread_atexit_impl not supported
+#endif
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ libc_cv_cxx_thread_local=yes
+else
+ libc_cv_cxx_thread_local=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CXXFLAGS="$old_CXXFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cxx_thread_local" >&5
+$as_echo "$libc_cv_cxx_thread_local" >&6; }
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+### End of automated tests.
+### Now run sysdeps configure fragments.
+
+# They also can set these variables.
+use_ldconfig=no
+ldd_rewrite_script=no
+libc_cv_sysconfdir=$sysconfdir
+libc_cv_localstatedir=$localstatedir
+libc_cv_gcc_unwind_find_fde=no
+libc_cv_idn=no
+pthread_in_libc=yes
+
+# Iterate over all the sysdep directories we will use, running their
+# configure fragments.
+for dir in $sysnames; do
+ case $dir in
+ /*) dest=$dir ;;
+ *) dest=$srcdir/$dir ;;
+ esac
+ if test -r $dest/configure; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: running configure fragment for $dir" >&5
+$as_echo "running configure fragment for $dir" >&6; }
+ . $dest/configure
+ fi
+done
+
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+config_vars="$config_vars
+build-mathvec = $build_mathvec"
+
+
+
+
+if test x$libc_cv_gcc_unwind_find_fde = xyes; then
+ $as_echo "#define EXPORT_UNWIND_FIND_FDE 1" >>confdefs.h
+
+fi
+
+
+# A sysdeps configure fragment can reset this if IFUNC is not actually
+# usable even though the assembler knows how to generate the symbol type.
+if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
+ $as_echo "#define HAVE_IFUNC 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+have-ifunc = $libc_cv_ld_gnu_indirect_function"
+
+if test x"$libc_cv_gcc_indirect_function" = xyes; then
+ $as_echo "#define HAVE_GCC_IFUNC 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+have-gcc-ifunc = $libc_cv_gcc_indirect_function"
+
+# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
+# configure fragment can override the value to prevent this AC_DEFINE.
+
+if test "x$use_nscd" != xno; then
+ $as_echo "#define USE_NSCD 1" >>confdefs.h
+
+fi
+if test "x$build_nscd" = xdefault; then
+ build_nscd=$use_nscd
+fi
+
+
+
+
+
+
+
+
+if test x$use_ldconfig = xyes; then
+ $as_echo "#define USE_LDCONFIG 1" >>confdefs.h
+
+fi
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIC is default" >&5
+$as_echo_n "checking whether -fPIC is default... " >&6; }
+if ${libc_cv_pic_default+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ libc_cv_pic_default=yes
+cat > conftest.c <<EOF
+#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
+# error PIC is default.
+#endif
+EOF
+if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
+ libc_cv_pic_default=no
+fi
+rm -f conftest.*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_pic_default" >&5
+$as_echo "$libc_cv_pic_default" >&6; }
+config_vars="$config_vars
+build-pic-default = $libc_cv_pic_default"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIE is default" >&5
+$as_echo_n "checking whether -fPIE is default... " >&6; }
+if ${libc_cv_cc_pie_default+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ libc_cv_cc_pie_default=yes
+cat > conftest.c <<EOF
+#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
+# error PIE is default.
+#endif
+EOF
+if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
+ libc_cv_cc_pie_default=no
+fi
+rm -f conftest.*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_pie_default" >&5
+$as_echo "$libc_cv_cc_pie_default" >&6; }
+config_vars="$config_vars
+cc-pie-default = $libc_cv_cc_pie_default"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can build programs as PIE" >&5
+$as_echo_n "checking if we can build programs as PIE... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef PIE_UNSUPPORTED
+# error PIE is not supported
+#endif
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_pie_supported=yes
+else
+ libc_cv_pie_supported=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_pie_supported" >&5
+$as_echo "$libc_cv_pie_supported" >&6; }
+# Disable build-pie-default if target does not support it or glibc is
+# configured with --disable-default-pie.
+if test "x$default_pie" = xno; then
+ build_pie_default=no
+else
+ build_pie_default=$libc_cv_pie_supported
+fi
+config_vars="$config_vars
+build-pie-default = $build_pie_default"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can build static PIE programs" >&5
+$as_echo_n "checking if we can build static PIE programs... " >&6; }
+libc_cv_static_pie_supported=$libc_cv_pie_supported
+if test "x$libc_cv_pie_supported" != xno \
+ -a "$libc_cv_no_dynamic_linker" = yes; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef SUPPORT_STATIC_PIE
+# error static PIE is not supported
+#endif
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_static_pie_supported=yes
+else
+ libc_cv_static_pie_supported=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_static_pie_supported" >&5
+$as_echo "$libc_cv_static_pie_supported" >&6; }
+
+# Enable static-pie only if it is available and glibc isn't configured
+# with --disable-default-pie.
+if test "x$default_pie" = xno; then
+ libc_cv_static_pie=no
+else
+ libc_cv_static_pie=$libc_cv_static_pie_supported
+fi
+if test "$libc_cv_static_pie" = "yes"; then
+ $as_echo "#define ENABLE_STATIC_PIE 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+enable-static-pie = $libc_cv_static_pie"
+
+# Set the `multidir' variable by grabbing the variable from the compiler.
+# We do it once and save the result in a generated makefile.
+libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
+
+
+
+
+
+
+
+
+
+VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
+RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
+
+
+
+if test "$pthread_in_libc" = yes; then
+ $as_echo "#define PTHREAD_IN_LIBC 1" >>confdefs.h
+
+fi
+
+
+ac_config_files="$ac_config_files config.make Makefile"
+
+ac_config_commands="$ac_config_commands default"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by GNU C Library $as_me (see version.h), which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <https://sourceware.org/bugzilla/>.
+GNU C Library home page: <https://www.gnu.org/software/glibc/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+GNU C Library config.status (see version.h)
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+config_vars='$config_vars'
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "config.make") CONFIG_FILES="$CONFIG_FILES config.make" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
+ fi
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "default":C)
+case $CONFIG_FILES in *config.make*)
+echo "$config_vars" >> config.make;;
+esac
+test -d bits || mkdir bits ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+
+#
+# CONFIG_SUBDIRS section.
+#
+if test "$no_recursion" != yes; then
+
+ # Remove --cache-file, --srcdir, and --disable-option-checking arguments
+ # so they do not pile up.
+ ac_sub_configure_args=
+ ac_prev=
+ eval "set x $ac_configure_args"
+ shift
+ for ac_arg
+ do
+ if test -n "$ac_prev"; then
+ ac_prev=
+ continue
+ fi
+ case $ac_arg in
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
+ | --c=*)
+ ;;
+ --config-cache | -C)
+ ;;
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ ;;
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ ;;
+ --disable-option-checking)
+ ;;
+ *)
+ case $ac_arg in
+ *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
+ esac
+ done
+
+ # Always prepend --prefix to ensure using the same prefix
+ # in subdir configurations.
+ ac_arg="--prefix=$prefix"
+ case $ac_arg in
+ *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
+
+ # Pass --silent
+ if test "$silent" = yes; then
+ ac_sub_configure_args="--silent $ac_sub_configure_args"
+ fi
+
+ # Always prepend --disable-option-checking to silence warnings, since
+ # different subdirs can have different --enable and --with options.
+ ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
+
+ ac_popdir=`pwd`
+ for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
+
+ # Do not complain, so a configure script can configure whichever
+ # parts of a large source tree are present.
+ test -d "$srcdir/$ac_dir" || continue
+
+ ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
+ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
+ $as_echo "$ac_msg" >&6
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ cd "$ac_dir"
+
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ ac_sub_configure=$ac_srcdir/configure.gnu
+ elif test -f "$ac_srcdir/configure"; then
+ ac_sub_configure=$ac_srcdir/configure
+ elif test -f "$ac_srcdir/configure.in"; then
+ # This should be Cygnus configure.
+ ac_sub_configure=$ac_aux_dir/configure
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
+$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
+ ac_sub_configure=
+ fi
+
+ # The recursion is here.
+ if test -n "$ac_sub_configure"; then
+ # Make the cache file name correct relative to the subdirectory.
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
+ *) # Relative name.
+ ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
+$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
+ # The eval makes quoting arguments work.
+ eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
+ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
+ as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
+ fi
+
+ cd "$ac_popdir"
+ done
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure.ac
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure.ac (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-reenable-DT-HASH-patch/glibc-2.37-new/configure.ac (revision 35)
@@ -0,0 +1,1862 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl Note we do not use AC_PREREQ here! See aclocal.m4 for what we use instead.
+AC_INIT([GNU C Library], [(see version.h)], [https://sourceware.org/bugzilla/],
+ [glibc], [https://www.gnu.org/software/glibc/])
+AC_CONFIG_SRCDIR([include/features.h])
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_AUX_DIR([scripts])
+
+ACX_PKGVERSION([GNU libc])
+ACX_BUGURL([https://www.gnu.org/software/libc/bugs.html])
+AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
+ [Package description])
+AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
+ [Bug reporting address])
+
+# Glibc should not depend on any header files
+AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
+ [m4_divert_text([DEFAULTS],
+ [ac_includes_default='/* none */'])])
+
+# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
+# here to work around the Autoconf issue discussed in
+# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
+AC_DEFUN([AC_PROG_CPP],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_ARG_VAR([CPP], [C preprocessor])dnl
+_AC_ARG_VAR_CPPFLAGS()dnl
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ CPP="$CC -E"
+fi
+AC_SUBST(CPP)dnl
+])# AC_PROG_CPP
+
+# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
+# issue discussed in
+# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
+AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
+
+dnl This is here so we can set $subdirs directly based on configure fragments.
+AC_CONFIG_SUBDIRS()
+
+AC_CANONICAL_HOST
+
+AC_PROG_CC
+if test $host != $build; then
+ AC_CHECK_PROGS(BUILD_CC, gcc cc)
+fi
+AC_SUBST(cross_compiling)
+AC_PROG_CPP
+
+# We need the C++ compiler only for testing.
+AC_PROG_CXX
+# It's useless to us if it can't link programs (e.g. missing -lstdc++).
+AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl
+AC_LANG_PUSH([C++])
+# Default, dynamic case.
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+ [libc_cv_cxx_link_ok=yes],
+ [libc_cv_cxx_link_ok=no])
+# Static case.
+old_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -static"
+AC_LINK_IFELSE([AC_LANG_SOURCE([
+#include <iostream>
+
+int
+main()
+{
+ std::cout << "Hello, world!";
+ return 0;
+}
+])],
+ [],
+ [libc_cv_cxx_link_ok=no])
+LDFLAGS="$old_LDFLAGS"
+AC_LANG_POP([C++])])
+AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])
+
+if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
+ AC_MSG_ERROR([you must configure in a separate build directory])
+fi
+
+# This will get text that should go into config.make.
+config_vars=
+
+# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
+AC_ARG_WITH([gd],
+ AS_HELP_STRING([--with-gd=DIR],
+ [find libgd include dir and library with prefix DIR]),
+ [dnl
+case "$with_gd" in
+yes|''|no) ;;
+*) libgd_include="-I$withval/include"
+ libgd_ldflags="-L$withval/lib" ;;
+esac
+])
+AC_ARG_WITH([gd-include],
+ AS_HELP_STRING([--with-gd-include=DIR],
+ [find libgd include files in DIR]),
+ [dnl
+case "$with_gd_include" in
+''|no) ;;
+*) libgd_include="-I$withval" ;;
+esac
+])
+AC_ARG_WITH([gd-lib],
+ AS_HELP_STRING([--with-gd-lib=DIR],
+ [find libgd library files in DIR]),
+ [dnl
+case "$with_gd_lib" in
+''|no) ;;
+*) libgd_ldflags="-L$withval" ;;
+esac
+])
+
+if test -n "$libgd_include"; then
+ config_vars="$config_vars
+CFLAGS-memusagestat.c = $libgd_include"
+fi
+if test -n "$libgd_ldflags"; then
+ config_vars="$config_vars
+libgd-LDFLAGS = $libgd_ldflags"
+fi
+
+dnl Arguments to specify presence of other packages/features.
+AC_ARG_WITH([binutils],
+ AS_HELP_STRING([--with-binutils=PATH],
+ [specify location of binutils (as and ld)]),
+ [path_binutils=$withval],
+ [path_binutils=''])
+AC_ARG_WITH([selinux],
+ AS_HELP_STRING([--with-selinux],
+ [if building with SELinux support]),
+ [with_selinux=$withval],
+ [with_selinux=auto])
+
+AC_ARG_WITH([headers],
+ AS_HELP_STRING([--with-headers=PATH],
+ [location of system headers to use
+ (for example /usr/src/linux/include)
+ @<:@default=compiler default@:>@]),
+ [sysheaders=$withval],
+ [sysheaders=''])
+AC_SUBST(sysheaders)
+
+AC_SUBST(use_default_link)
+AC_ARG_WITH([default-link],
+ AS_HELP_STRING([--with-default-link],
+ [do not use explicit linker scripts]),
+ [use_default_link=$withval],
+ [use_default_link=no])
+
+dnl Additional build flags injection.
+AC_ARG_WITH([nonshared-cflags],
+ AS_HELP_STRING([--with-nonshared-cflags=CFLAGS],
+ [build nonshared libraries with additional CFLAGS]),
+ [extra_nonshared_cflags=$withval],
+ [extra_nonshared_cflags=])
+AC_SUBST(extra_nonshared_cflags)
+AC_ARG_WITH([rtld-early-cflags],
+ AS_HELP_STRING([--with-rtld-early-cflags=CFLAGS],
+ [build early initialization with additional CFLAGS]),
+ [rtld_early_cflags=$withval],
+ [rtld_early_cflags=])
+AC_SUBST(rtld_early_cflags)
+
+AC_ARG_WITH([timeoutfactor],
+ AS_HELP_STRING([--with-timeoutfactor=NUM],
+ [specify an integer to scale the timeout]),
+ [timeoutfactor=$withval],
+ [timeoutfactor=1])
+AC_DEFINE_UNQUOTED(TIMEOUTFACTOR, $timeoutfactor)
+
+AC_ARG_ENABLE([sanity-checks],
+ AS_HELP_STRING([--disable-sanity-checks],
+ [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
+ [enable_sanity=$enableval],
+ [enable_sanity=yes])
+
+AC_ARG_ENABLE([shared],
+ AS_HELP_STRING([--enable-shared],
+ [build shared library @<:@default=yes if GNU ld@:>@]),
+ [shared=$enableval],
+ [shared=yes])
+AC_ARG_ENABLE([profile],
+ AS_HELP_STRING([--enable-profile],
+ [build profiled library @<:@default=no@:>@]),
+ [profile=$enableval],
+ [profile=no])
+AC_ARG_ENABLE([default-pie],
+ AS_HELP_STRING([--disable-default-pie],
+ [Do not build glibc programs and the testsuite as PIE @<:@default=no@:>@]),
+ [default_pie=$enableval],
+ [default_pie=yes])
+AC_ARG_ENABLE([timezone-tools],
+ AS_HELP_STRING([--disable-timezone-tools],
+ [do not install timezone tools @<:@default=install@:>@]),
+ [enable_timezone_tools=$enableval],
+ [enable_timezone_tools=yes])
+AC_SUBST(enable_timezone_tools)
+
+AC_ARG_ENABLE([hardcoded-path-in-tests],
+ AS_HELP_STRING([--enable-hardcoded-path-in-tests],
+ [hardcode newly built glibc path in tests @<:@default=no@:>@]),
+ [hardcoded_path_in_tests=$enableval],
+ [hardcoded_path_in_tests=no])
+AC_SUBST(hardcoded_path_in_tests)
+
+AC_ARG_ENABLE([hidden-plt],
+ AS_HELP_STRING([--disable-hidden-plt],
+ [do not hide internal function calls to avoid PLT]),
+ [hidden=$enableval],
+ [hidden=yes])
+if test "x$hidden" = xno; then
+ AC_DEFINE(NO_HIDDEN)
+fi
+
+AC_ARG_ENABLE([bind-now],
+ AS_HELP_STRING([--enable-bind-now],
+ [disable lazy relocations in DSOs]),
+ [bindnow=$enableval],
+ [bindnow=no])
+AC_SUBST(bindnow)
+if test "x$bindnow" = xyes; then
+ AC_DEFINE(BIND_NOW)
+fi
+
+dnl Build glibc with -fstack-protector, -fstack-protector-all, or
+dnl -fstack-protector-strong.
+AC_ARG_ENABLE([stack-protector],
+ AS_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
+ [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
+ [enable_stack_protector=$enableval],
+ [enable_stack_protector=no])
+case "$enable_stack_protector" in
+all|yes|no|strong) ;;
+*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
+esac
+
+dnl On some platforms we cannot use dynamic loading. We must provide
+dnl static NSS modules.
+AC_ARG_ENABLE([static-nss],
+ AS_HELP_STRING([--enable-static-nss],
+ [build static NSS modules @<:@default=no@:>@]),
+ [static_nss=$enableval],
+ [static_nss=no])
+dnl Enable static NSS also if we build no shared objects.
+if test x"$static_nss" = xyes || test x"$shared" = xno; then
+ static_nss=yes
+ AC_DEFINE(DO_STATIC_NSS)
+fi
+
+AC_ARG_ENABLE([force-install],
+ AS_HELP_STRING([--disable-force-install],
+ [don't force installation of files from this package, even if they are older than the installed files]),
+ [force_install=$enableval],
+ [force_install=yes])
+AC_SUBST(force_install)
+
+AC_ARG_ENABLE([maintainer-mode],
+ AS_HELP_STRING([--enable-maintainer-mode],
+ [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
+ [maintainer=$enableval],
+ [maintainer=no])
+
+dnl On some platforms we allow dropping compatibility with all kernel
+dnl versions.
+AC_ARG_ENABLE([kernel],
+ AS_HELP_STRING([--enable-kernel=VERSION],
+ [compile for compatibility with kernel not older than VERSION]),
+ [minimum_kernel=$enableval],
+ [])
+dnl Prevent unreasonable values.
+if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
+ # Better nothing than this.
+ minimum_kernel=""
+else
+ if test "$minimum_kernel" = current; then
+ minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
+ fi
+fi
+
+dnl For the development we sometimes want gcc to issue even more warnings.
+dnl This is not the default since many of the extra warnings are not
+dnl appropriate.
+AC_ARG_ENABLE([all-warnings],
+ AS_HELP_STRING([--enable-all-warnings],
+ [enable all useful warnings gcc can issue]),
+ [all_warnings=$enableval],
+ [])
+AC_SUBST(all_warnings)
+
+AC_ARG_ENABLE([werror],
+ AS_HELP_STRING([--disable-werror],
+ [do not build with -Werror]),
+ [enable_werror=$enableval],
+ [enable_werror=yes])
+AC_SUBST(enable_werror)
+
+AC_ARG_ENABLE([multi-arch],
+ AS_HELP_STRING([--enable-multi-arch],
+ [enable single DSO with optimizations for multiple architectures]),
+ [multi_arch=$enableval],
+ [multi_arch=default])
+
+AC_ARG_ENABLE([experimental-malloc],
+ AS_HELP_STRING([--disable-experimental-malloc],
+ [disable experimental malloc features]),
+ [experimental_malloc=$enableval],
+ [experimental_malloc=yes])
+AC_SUBST(experimental_malloc)
+
+AC_ARG_ENABLE([memory-tagging],
+ AS_HELP_STRING([--enable-memory-tagging],
+ [enable memory tagging if supported by the architecture @<:@default=no@:>@]),
+ [memory_tagging=$enableval],
+ [memory_tagging=no])
+if test "$memory_tagging" = yes; then
+ # Only enable this on architectures that support it.
+ case $host_cpu in
+ aarch64)
+ AC_DEFINE(USE_MTAG)
+ ;;
+ esac
+fi
+AC_SUBST(memory_tagging)
+
+AC_ARG_ENABLE([crypt],
+ AS_HELP_STRING([--disable-crypt],
+ [do not build nor install the passphrase hashing library, libcrypt]),
+ [build_crypt=$enableval],
+ [build_crypt=yes])
+AC_SUBST(build_crypt)
+
+AC_ARG_ENABLE([nss-crypt],
+ AS_HELP_STRING([--enable-nss-crypt],
+ [enable libcrypt to use nss]),
+ [nss_crypt=$enableval],
+ [nss_crypt=no])
+if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
+ AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
+ nss_crypt=no
+fi
+if test x$nss_crypt = xyes; then
+ nss_includes=-I$(nss-config --includedir 2>/dev/null)
+ if test $? -ne 0; then
+ AC_MSG_ERROR([cannot find include directory with nss-config])
+ fi
+ nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
+ if test $? -ne 0; then
+ AC_MSG_ERROR([cannot find include directory with nspr-config])
+ fi
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $nss_includes $nspr_includes"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+void f (void) { NSSLOW_Init (); }])],
+ libc_cv_nss_crypt=yes,
+ AC_MSG_ERROR([
+cannot find NSS headers with lowlevel hash function interfaces]))
+ old_LIBS="$LIBS"
+ old_LDFLAGS="$LDFLAGS"
+ LIBS="$LIBS -lfreebl3"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>],
+ [NSSLOW_Init();])],
+ libc_cv_nss_crypt=yes,
+ AC_MSG_ERROR([
+cannot link program using lowlevel NSS hash functions]))
+ # Check to see if there is a static NSS cryptographic library.
+ # If there isn't then we can't link anything with libcrypt.a,
+ # and that might mean disabling some static tests.
+ LDFLAGS="$LDFLAGS -static"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>],
+ [NSSLOW_Init();])],
+ libc_cv_static_nss_crypt=yes,
+ libc_cv_static_nss_crypt=no)
+ LDFLAGS="$old_LDFLAGS"
+ CFLAGS="$old_CFLAGS"
+ LIBS="$old_LIBS"
+else
+ libc_cv_nss_crypt=no
+ libc_cv_static_nss_crypt=no
+fi
+AC_SUBST(libc_cv_nss_crypt)
+AC_SUBST(libc_cv_static_nss_crypt)
+
+
+AC_ARG_ENABLE([systemtap],
+ [AS_HELP_STRING([--enable-systemtap],
+ [enable systemtap static probe points @<:@default=no@:>@])],
+ [systemtap=$enableval],
+ [systemtap=no])
+if test "x$systemtap" != xno; then
+ AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="-std=gnu11 $CFLAGS"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
+void foo (int i, void *p)
+{
+ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
+ :: STAP_PROBE_ASM_OPERANDS (2, i, p));
+}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
+ CFLAGS="$old_CFLAGS"])
+ if test $libc_cv_sdt = yes; then
+ AC_DEFINE([USE_STAP_PROBE])
+ elif test "x$systemtap" != xauto; then
+ AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
+ fi
+fi
+
+AC_ARG_ENABLE([build-nscd],
+ [AS_HELP_STRING([--disable-build-nscd],
+ [disable building and installing the nscd daemon])],
+ [build_nscd=$enableval],
+ [build_nscd=default])
+AC_SUBST(build_nscd)
+
+# Note the use of $use_nscd is near the bottom of the file.
+AC_ARG_ENABLE([nscd],
+ [AS_HELP_STRING([--disable-nscd],
+ [library functions will not contact the nscd daemon])],
+ [use_nscd=$enableval],
+ [use_nscd=yes])
+
+AC_ARG_ENABLE([pt_chown],
+ [AS_HELP_STRING([--enable-pt_chown],
+ [Enable building and installing pt_chown])],
+ [build_pt_chown=$enableval],
+ [build_pt_chown=no])
+AC_SUBST(build_pt_chown)
+if test "$build_pt_chown" = yes; then
+ AC_DEFINE(HAVE_PT_CHOWN)
+fi
+
+AC_ARG_ENABLE([tunables],
+ [AS_HELP_STRING([--enable-tunables],
+ [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
+ [have_tunables=$enableval],
+ [have_tunables=yes])
+AC_SUBST(have_tunables)
+if test "$have_tunables" = yes; then
+ AC_DEFINE(HAVE_TUNABLES)
+fi
+
+# The abi-tags file uses a fairly simplistic model for name recognition that
+# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
+# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
+# This doesn't get used much beyond that, so it's fairly safe.
+case "$host_os" in
+linux*)
+ ;;
+gnu*)
+ host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
+ ;;
+esac
+
+AC_ARG_ENABLE([mathvec],
+ [AS_HELP_STRING([--enable-mathvec],
+ [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
+#ifndef __CET__
+# error no CET compiler support
+#endif]])],
+ [libc_cv_compiler_default_cet=yes],
+ [libc_cv_compiler_default_cet=no])
+
+AC_ARG_ENABLE([cet],
+ AS_HELP_STRING([--enable-cet],
+ [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
+ [enable_cet=$enableval],
+ [enable_cet=$libc_cv_compiler_default_cet])
+
+AC_ARG_ENABLE([scv],
+ AC_HELP_STRING([--disable-scv],
+ [syscalls will not use scv instruction, even if the kernel supports it, powerpc only]),
+ [use_scv=$enableval],
+ [use_scv=yes])
+
+AS_IF([[test "$use_scv" != "no"]],[AC_DEFINE(USE_PPC_SCV)])
+
+# We keep the original values in `$config_*' and never modify them, so we
+# can write them unchanged into config.make. Everything else uses
+# $machine, $vendor, and $os, and changes them whenever convenient.
+config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
+
+# Don't allow vendor == "unknown"
+test "$config_vendor" = unknown && config_vendor=
+config_os="`echo $config_os | sed 's/^unknown-//'`"
+
+# Some configurations imply other options.
+elf=yes
+
+# The configure fragment of a port can modify these to supplement
+# or override the table in the case statement below. No fragment should
+# ever change the config_* variables, however.
+machine=$config_machine
+vendor=$config_vendor
+os=$config_os
+base_os=''
+
+submachine=
+AC_ARG_WITH([cpu],
+ AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
+ [dnl
+ case "$withval" in
+ yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
+ no) ;;
+ *) submachine="$withval" ;;
+ esac
+])
+
+# An preconfigure script can set this when it wants to disable the sanity
+# check below.
+libc_config_ok=no
+
+# A preconfigure script for a system that may or may not use fpu
+# sysdeps directories sets this to a preprocessor conditional for
+# whether to use such directories.
+with_fp_cond=1
+
+dnl Let sysdeps/*/preconfigure act here.
+LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
+
+
+###
+### By using the undocumented --enable-hacker-mode option for configure
+### one can skip this test to make the configuration not fail for unsupported
+### platforms.
+###
+if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
+ case "$machine-$host_os" in
+ *-linux* | *-gnu*)
+ ;;
+ *)
+ AC_MSG_ERROR([
+*** The GNU C library is currently unavailable for this platform.
+*** If you are interested in seeing glibc on this platform visit
+*** the "How to submit a new port" in the wiki:
+*** https://sourceware.org/glibc/wiki/#Development
+*** and join the community!])
+ ;;
+ esac
+fi
+
+# Set base_machine if not set by a preconfigure fragment.
+test -n "$base_machine" || base_machine=$machine
+AC_SUBST(base_machine)
+
+### Locate tools.
+
+AC_PROG_INSTALL
+if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
+ # The makefiles need to use a different form to find it in $srcdir.
+ INSTALL='\$(..)./scripts/install-sh -c'
+fi
+AC_PROG_LN_S
+
+LIBC_PROG_BINUTILS
+
+# Accept binutils 2.25 or newer.
+libc_cv_with_lld=no
+case $($LD --version) in
+ "GNU gold"*)
+ # Accept gold 1.14 or higher
+ AC_CHECK_PROG_VER(LD, $LD, --version,
+ [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
+ [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
+ LD=: critic_missing="$critic_missing GNU gold")
+ ;;
+ "LLD"*)
+ # Accept LLD 13.0.0 or higher
+ AC_CHECK_PROG_VER(LD, $LD, --version,
+ [LLD.* \([0-9][0-9]*\.[0-9.]*\)],
+ [1[3-9].*|[2-9][0-9].*],
+ LD=: critic_missing="$critic_missing LLD")
+ libc_cv_with_lld=yes
+ ;;
+ *)
+ AC_CHECK_PROG_VER(LD, $LD, --version,
+ [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
+ [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
+ LD=: critic_missing="$critic_missing GNU ld")
+ ;;
+esac
+LIBC_CONFIG_VAR([with-lld], [$libc_cv_with_lld])
+
+# These programs are version sensitive.
+AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
+ [GNU Make[^0-9]*\([0-9][0-9.]*\)],
+ [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
+
+AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
+ [GNU gettext.* \([0-9]*\.[0-9.]*\)],
+ [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
+ MSGFMT=: aux_missing="$aux_missing msgfmt")
+AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
+ [GNU texinfo.* \([0-9][0-9.]*\)],
+ [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
+ MAKEINFO=: aux_missing="$aux_missing makeinfo")
+AC_CHECK_PROG_VER(SED, sed, --version,
+ [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
+ [3.0[2-9]*|3.[1-9]*|[4-9]*],
+ SED=: aux_missing="$aux_missing sed")
+AC_CHECK_PROG_VER(AWK, gawk, --version,
+ [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
+ [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
+AC_CHECK_PROG_VER(BISON, bison, --version,
+ [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
+ [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison")
+
+AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
+#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)
+#error insufficient compiler
+#endif]])],
+ [libc_cv_compiler_ok=yes],
+ [libc_cv_compiler_ok=no])])
+AS_IF([test $libc_cv_compiler_ok != yes],
+ [critic_missing="$critic_missing compiler"])
+
+if test "x$maintainer" = "xyes"; then
+ AC_CHECK_PROGS(AUTOCONF, autoconf, no)
+ case "x$AUTOCONF" in
+ xno|x|x:) AUTOCONF=no ;;
+ *)
+ AC_CACHE_CHECK(dnl
+ whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
+ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
+ libc_cv_autoconf_works=yes
+ else
+ libc_cv_autoconf_works=no
+ fi])
+ test $libc_cv_autoconf_works = yes || AUTOCONF=no
+ ;;
+ esac
+ if test "x$AUTOCONF" = xno; then
+ aux_missing="$aux_missing autoconf"
+ fi
+else
+ AUTOCONF=no
+fi
+
+# Check for python3 if available, or else python.
+AC_CHECK_PROG_VER(PYTHON_PROG, python3 python, --version,
+ [Python \([0-9][0-9.]*\)],
+ [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*],
+ critic_missing="$critic_missing python")
+PYTHON="$PYTHON_PROG -B"
+AC_SUBST(PYTHON)
+
+test -n "$critic_missing" && AC_MSG_ERROR([
+*** These critical programs are missing or too old:$critic_missing
+*** Check the INSTALL file for required versions.])
+
+test -n "$aux_missing" && AC_MSG_WARN([
+*** These auxiliary programs are missing or incompatible versions:$aux_missing
+*** some features or tests will be disabled.
+*** Check the INSTALL file for required versions.])
+
+
+# Determine whether to use fpu or nofpu sysdeps directories.
+AC_CACHE_CHECK([for use of fpu sysdeps directories],
+ libc_cv_with_fp, [dnl
+cat > conftest.c <<EOF
+#if $with_fp_cond
+int dummy;
+#else
+# error "no hardware floating point"
+#endif
+EOF
+libc_cv_with_fp=no
+if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
+ 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
+ libc_cv_with_fp=yes
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_with_fp)
+
+AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
+LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
+ [libc_cv_ssp=yes],
+ [libc_cv_ssp=no])
+])
+
+AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
+LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
+ [libc_cv_ssp_strong=yes],
+ [libc_cv_ssp_strong=no])
+])
+
+AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
+LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
+ [libc_cv_ssp_all=yes],
+ [libc_cv_ssp_all=no])
+])
+
+stack_protector=
+no_stack_protector=
+if test "$libc_cv_ssp" = yes; then
+ no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
+ AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
+fi
+
+if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
+ stack_protector="-fstack-protector"
+ AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
+elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
+ stack_protector="-fstack-protector-all"
+ AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
+elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
+ stack_protector="-fstack-protector-strong"
+ AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
+else
+ stack_protector="-fno-stack-protector"
+ AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
+fi
+AC_SUBST(libc_cv_ssp)
+AC_SUBST(stack_protector)
+AC_SUBST(no_stack_protector)
+
+if test -n "$stack_protector"; then
+ dnl Don't run configure tests with stack-protection on, to avoid problems with
+ dnl bootstrapping.
+ no_ssp=-fno-stack-protector
+else
+ no_ssp=
+
+ if test "$enable_stack_protector" != no; then
+ AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
+ fi
+fi
+
+# For the multi-arch option we need support in the assembler & linker.
+AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
+ libc_cv_ld_gnu_indirect_function, [dnl
+cat > conftest.S <<EOF
+.type foo,%gnu_indirect_function
+foo:
+.globl _start
+_start:
+.globl __start
+__start:
+.data
+#ifdef _LP64
+.quad foo
+#else
+.long foo
+#endif
+EOF
+libc_cv_ld_gnu_indirect_function=no
+if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+ -nostartfiles -nostdlib $no_ssp \
+ -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ # Do a link to see if the backend supports IFUNC relocs.
+ $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
+ LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && {
+ libc_cv_ld_gnu_indirect_function=yes
+ }
+fi
+rm -f conftest*])
+
+# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
+AC_CACHE_CHECK([for gcc attribute ifunc support],
+ libc_cv_gcc_indirect_function, [dnl
+cat > conftest.c <<EOF
+extern int func (int);
+int used_func (int a)
+{
+ return a;
+}
+static void *resolver ()
+{
+ return &used_func;
+}
+extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
+EOF
+libc_cv_gcc_indirect_function=no
+if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
+ 2>&AS_MESSAGE_LOG_FD ; then
+ if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_gcc_indirect_function=yes
+ fi
+fi
+rm -f conftest*])
+
+# Check if linker supports textrel relocation with ifunc (used on elf/tests).
+# Note that it relies on libc_cv_ld_gnu_indirect_function test above.
+AC_CACHE_CHECK([whether the linker supports textrels along with ifunc],
+ libc_cv_textrel_ifunc, [dnl
+cat > conftest.S <<EOF
+.type foo,%gnu_indirect_function
+foo:
+.globl _start
+_start:
+.globl __start
+__start:
+.data
+#ifdef _LP64
+.quad foo
+#else
+.long foo
+#endif
+.text
+.globl address
+address:
+#ifdef _LP64
+.quad address
+#else
+.long address
+#endif
+EOF
+libc_cv_textrel_ifunc=no
+if test $libc_cv_ld_gnu_indirect_function = yes; then
+ if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S); then
+ libc_cv_textrel_ifunc=yes
+ fi
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_textrel_ifunc)
+
+# Check if CC supports attribute retain as it is used in attribute_used_retain macro.
+AC_CACHE_CHECK([for GNU attribute retain support],
+ libc_cv_gnu_retain, [dnl
+cat > conftest.c <<EOF
+static int var __attribute__ ((used, retain, section ("__libc_atexit")));
+EOF
+libc_cv_gnu_retain=no
+if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&AS_MESSAGE_LOG_FD \
+ 2>&AS_MESSAGE_LOG_FD ; then
+ libc_cv_gnu_retain=yes
+fi
+rm -f conftest*])
+if test $libc_cv_gnu_retain = yes; then
+ AC_DEFINE(HAVE_GNU_RETAIN)
+fi
+LIBC_CONFIG_VAR([have-gnu-retain], [$libc_cv_gnu_retain])
+
+# Check if gcc warns about alias for function with incompatible types.
+AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types],
+ libc_cv_gcc_incompatible_alias, [dnl
+cat > conftest.c <<EOF
+int __redirect_foo (const void *s, int c);
+
+__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
+__typeof (__redirect_foo) *foo_impl (void)
+{
+ return 0;
+}
+
+extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
+EOF
+libc_cv_gcc_incompatible_alias=yes
+if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
+ libc_cv_gcc_incompatible_alias=no
+fi
+rm -f conftest*])
+
+if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
+ if test x"$multi_arch" = xyes; then
+ AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
+ else
+ multi_arch=no
+ fi
+fi
+if test x"$libc_cv_gcc_indirect_function" != xyes; then
+ # GCC 8+ emits a warning for alias with incompatible types and it might
+ # fail to build ifunc resolvers aliases to either weak or internal
+ # symbols. Disables multiarch build in this case.
+ if test x"$libc_cv_gcc_incompatible_alias" = xyes; then
+ AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types])
+ if test x"$multi_arch" = xyes; then
+ AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support])
+ fi
+ AC_MSG_WARN([Multi-arch is disabled.])
+ multi_arch=no
+ elif test x"$multi_arch" = xyes; then
+ AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
+Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
+ fi
+fi
+multi_arch_d=
+if test x"$multi_arch" != xno; then
+ multi_arch_d=/multiarch
+fi
+
+# Compute the list of sysdep directories for this configuration.
+# This can take a while to compute.
+sysdep_dir=$srcdir/sysdeps
+AC_MSG_CHECKING(sysdep dirs)
+dnl We need to use [ and ] for other purposes for a while now.
+changequote(,)dnl
+# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
+os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
+
+test "x$base_os" != x || case "$os" in
+gnu*)
+ base_os=mach/hurd ;;
+linux*)
+ base_os=unix/sysv ;;
+esac
+
+# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
+tail=$os
+ostry=$os
+while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
+ ostry="$ostry /$o"
+ tail=$o
+done
+o=`echo $tail | sed 's/[0-9]*$//'`
+if test $o != $tail; then
+ ostry="$ostry /$o"
+fi
+# For linux-gnu, try linux-gnu, then linux.
+o=`echo $tail | sed 's/-.*$//'`
+if test $o != $tail; then
+ ostry="$ostry /$o"
+fi
+
+# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
+base=
+tail=$base_os
+while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
+ set $b
+ base="$base /$1"
+ tail="$2"
+done
+
+# For sparc/sparc32, try sparc/sparc32 and then sparc.
+mach=
+tail=$machine${submachine:+/$submachine}
+while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
+ set $m
+ # Prepend the machine's FPU directory unless the architecture specific
+ # preconfigure disables it.
+ if test "$libc_cv_with_fp" = yes; then
+ maybe_fpu=/fpu
+ else
+ maybe_fpu=/nofpu
+ fi
+ # For each machine term, try it with and then without /multiarch.
+ for try_fpu in $maybe_fpu ''; do
+ for try_multi in $multi_arch_d ''; do
+ mach="$mach /$1$try_fpu$try_multi"
+ done
+ done
+ tail="$2"
+done
+
+dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
+changequote([,])dnl
+
+# Find what sysdep directories exist.
+sysnames=
+for b in $base ''; do
+ for m0 in $mach ''; do
+ for v in /$vendor ''; do
+ test "$v" = / && continue
+ for o in /$ostry ''; do
+ test "$o" = / && continue
+ for m in $mach ''; do
+ try_suffix="$m0$b$v$o$m"
+ if test -n "$try_suffix"; then
+ try_srcdir="${srcdir}/"
+ try="sysdeps$try_suffix"
+ test -n "$enable_debug_configure" &&
+ echo "$0 [DEBUG]: try $try" >&2
+ if test -d "$try_srcdir$try"; then
+ sysnames="$sysnames $try"
+ { test -n "$o" || test -n "$b"; } && os_used=t
+ { test -n "$m" || test -n "$m0"; } && machine_used=t
+ case x${m0:-$m} in
+ x*/$submachine) submachine_used=t ;;
+ esac
+ fi
+ fi
+ done
+ done
+ done
+ done
+done
+
+# If the assembler supports gnu_indirect_function symbol type and the
+# architecture supports multi-arch, we enable multi-arch by default.
+case $sysnames in
+*"$multi_arch_d"*)
+ ;;
+*)
+ test x"$multi_arch" = xdefault && multi_arch=no
+ ;;
+esac
+if test x"$multi_arch" != xno; then
+ AC_DEFINE(USE_MULTIARCH)
+fi
+AC_SUBST(multi_arch)
+
+if test -z "$os_used" && test "$os" != none; then
+ AC_MSG_ERROR(Operating system $os is not supported.)
+fi
+if test -z "$machine_used" && test "$machine" != none; then
+ AC_MSG_ERROR(The $machine is not supported.)
+fi
+if test -z "$submachine_used" && test -n "$submachine"; then
+ AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
+fi
+AC_SUBST(submachine)
+
+# We have now validated the configuration.
+
+# Expand the list of system names into a full list of directories
+# from each element's parent name and Implies file (if present).
+set $sysnames
+names=
+while test $# -gt 0; do
+ name=$1
+ shift
+
+ case " $names " in *" $name "*)
+ # Already in the list.
+ continue
+ esac
+
+ # Report each name as we discover it, so there is no long pause in output.
+ echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
+
+ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
+
+ case $name in
+ /*) xsrcdir= ;;
+ *) xsrcdir=$srcdir/ ;;
+ esac
+ test -n "$enable_debug_configure" &&
+ echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
+
+ for implies_file in Implies Implies-before Implies-after; do
+ implies_type=`echo $implies_file | sed s/-/_/`
+ eval ${implies_type}=
+ if test -f $xsrcdir$name/$implies_file; then
+ # Collect more names from the `Implies' file (removing comments).
+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
+ for x in $implied_candidate; do
+ found=no
+ if test -d $xsrcdir$name_base/$x; then
+ eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
+ found=yes
+ fi
+ try="sysdeps/$x"
+ try_srcdir=$srcdir/
+ test -n "$enable_debug_configure" &&
+ echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
+ then
+ eval "${implies_type}=\"\$${implies_type} \$try\""
+ found=yes
+ fi
+ if test $found = no; then
+ AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
+ fi
+ done
+ fi
+ done
+
+ # Add NAME to the list of names.
+ names="$names $name"
+
+ # Find the parent of NAME, using the empty string if it has none.
+changequote(,)dnl
+ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
+changequote([,])dnl
+
+ test -n "$enable_debug_configure" &&
+ echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
+Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
+
+ # Add the names implied by NAME, and NAME's parent (if it has one), to
+ # the list of names to be processed (the argument list). We prepend the
+ # implied names to the list and append the parent. We want implied
+ # directories to come before further directories inferred from the
+ # configuration components; this ensures that for sysv4, unix/common
+ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
+ # after sysv4).
+ sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
+ test -n "$sysnames" && set $sysnames
+done
+
+# Add the default directories.
+default_sysnames="sysdeps/generic"
+sysnames="$names $default_sysnames"
+AC_SUBST(sysnames)
+# The other names were emitted during the scan.
+AC_MSG_RESULT($default_sysnames)
+
+# if using special system headers, find out the compiler's sekrit
+# header directory and add that to the list. NOTE: Only does the right
+# thing on a system that doesn't need fixincludes. (Not presently a problem.)
+if test -n "$sysheaders"; then
+ SYSINCLUDES=-nostdinc
+ for d in include include-fixed; do
+ i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
+ SYSINCLUDES="$SYSINCLUDES -isystem $i"
+ done
+ SYSINCLUDES="$SYSINCLUDES \
+-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
+ if test -n "$CXX"; then
+ CXX_SYSINCLUDES=
+ for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
+ | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
+ test "x$cxxheaders" != x &&
+ CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
+ done
+ fi
+fi
+AC_SUBST(SYSINCLUDES)
+AC_SUBST(CXX_SYSINCLUDES)
+
+# Obtain some C++ header file paths. This is used to make a local
+# copy of those headers in Makerules.
+if test -n "$CXX"; then
+ find_cxx_header () {
+ echo "#include <$1>" | $CXX -H -fsyntax-only -x c++ - 2>&1 \
+ | $AWK '$1 == "."{print $2}'
+ }
+ CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
+ CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+ CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
+fi
+AC_SUBST(CXX_CSTDLIB_HEADER)
+AC_SUBST(CXX_CMATH_HEADER)
+AC_SUBST(CXX_BITS_STD_ABS_H)
+
+# Test if LD_LIBRARY_PATH contains the notation for the current directory
+# since this would lead to problems installing/building glibc.
+# LD_LIBRARY_PATH contains the current directory if one of the following
+# is true:
+# - one of the terminals (":" and ";") is the first or last sign
+# - two terminals occur directly after each other
+# - the path contains an element with a dot in it
+AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
+changequote(,)dnl
+case ${LD_LIBRARY_PATH} in
+ [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
+ ld_library_path_setting="contains current directory"
+ ;;
+ *)
+ ld_library_path_setting="ok"
+ ;;
+esac
+changequote([,])dnl
+AC_MSG_RESULT($ld_library_path_setting)
+if test "$ld_library_path_setting" != "ok"; then
+AC_MSG_ERROR([
+*** LD_LIBRARY_PATH shouldn't contain the current directory when
+*** building glibc. Please change the environment variable
+*** and run configure again.])
+fi
+
+AC_PATH_PROG(BASH_SHELL, bash, no)
+
+AC_PATH_PROG(PERL, perl, no)
+if test "$PERL" != no &&
+ (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
+ PERL=no
+fi
+AC_PATH_PROG(INSTALL_INFO, install-info, no,
+ $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
+
+AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
+cat > conftest.s <<EOF
+.text
+foo:
+.set glibc_conftest_frobozz,foo
+.globl glibc_conftest_frobozz
+EOF
+# The alpha-dec-osf1 assembler gives only a warning for `.set'
+# (but it doesn't work), so we must do a linking check to be sure.
+cat > conftest1.c <<\EOF
+extern int glibc_conftest_frobozz;
+void _start() { glibc_conftest_frobozz = 1; }
+EOF
+if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+ -nostartfiles -nostdlib $no_ssp \
+ -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_asm_set_directive=yes
+else
+ libc_cv_asm_set_directive=no
+fi
+rm -f conftest*])
+if test $libc_cv_asm_set_directive = yes; then
+ AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
+fi
+
+AC_CACHE_CHECK(linker support for protected data symbol,
+ libc_cv_protected_data,
+ [cat > conftest.c <<EOF
+ int bar __attribute__ ((visibility ("protected"))) = 1;
+EOF
+ libc_cv_protected_data=no
+ if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
+ cat > conftest.c <<EOF
+ extern int bar;
+ int main (void) { return bar; }
+EOF
+ if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
+ libc_cv_protected_data=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+AC_SUBST(libc_cv_protected_data)
+
+AC_CACHE_CHECK(linker support for INSERT in linker script,
+ libc_cv_insert,
+ [cat > conftest.c <<EOF
+ int __attribute__ ((section(".bar"))) bar = 0x12345678;
+ int test (void) { return bar; }
+EOF
+ cat > conftest.t <<EOF
+ SECTIONS
+ {
+ .bar : { *(.bar) }
+ }
+ INSERT AFTER .rela.dyn;
+EOF
+ libc_cv_insert=no
+ if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
+ libc_cv_insert=yes
+ fi
+ rm -f conftest.*
+ ])
+AC_SUBST(libc_cv_insert)
+
+AC_CACHE_CHECK(for broken __attribute__((alias())),
+ libc_cv_broken_alias_attribute,
+ [cat > conftest.c <<EOF
+ extern int foo (int x) __asm ("xyzzy");
+ int bar (int x) { return x; }
+ extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
+ extern int dfoo;
+ extern __typeof (dfoo) dfoo __asm ("abccb");
+ int dfoo = 1;
+EOF
+ libc_cv_broken_alias_attribute=yes
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep 'xyzzy' conftest.s >/dev/null &&
+ grep 'abccb' conftest.s >/dev/null; then
+ libc_cv_broken_alias_attribute=no
+ fi
+ fi
+ rm -f conftest.c conftest.s
+ ])
+if test $libc_cv_broken_alias_attribute = yes; then
+ AC_MSG_ERROR(working alias attribute support required)
+fi
+
+AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
+ libc_cv_have_sdata_section,
+ [echo "int i;" > conftest.c
+ libc_cv_have_sdata_section=no
+ if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
+ | grep '\.sdata' >/dev/null; then
+ libc_cv_have_sdata_section=yes
+ fi
+ rm -f conftest.c conftest.so
+ ])
+if test $libc_cv_have_sdata_section = yes; then
+ AC_DEFINE(HAVE_SDATA_SECTION)
+fi
+
+AC_CACHE_CHECK(for libunwind-support in compiler,
+ libc_cv_cc_with_libunwind, [
+ cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
+ conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
+ libc_cv_cc_with_libunwind=yes
+ else
+ libc_cv_cc_with_libunwind=no
+ fi
+ rm -f conftest*])
+AC_SUBST(libc_cv_cc_with_libunwind)
+if test $libc_cv_cc_with_libunwind = yes; then
+ AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
+fi
+
+ASFLAGS_config=
+AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
+ libc_cv_as_noexecstack, [dnl
+cat > conftest.c <<EOF
+void foo (void) { }
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
+ -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
+ && grep .note.GNU-stack conftest.s >/dev/null \
+ && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
+ -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
+then
+ libc_cv_as_noexecstack=yes
+else
+ libc_cv_as_noexecstack=no
+fi
+rm -f conftest*])
+if test $libc_cv_as_noexecstack = yes; then
+ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
+fi
+AC_SUBST(ASFLAGS_config)
+
+LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
+ [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
+AC_SUBST(libc_cv_z_execstack)
+
+LIBC_LINKER_FEATURE([-z start-stop-gc], [-Wl,-z,start-stop-gc],
+ [libc_cv_z_start_stop_gc=yes], [libc_cv_z_start_stop_gc=no])
+LIBC_CONFIG_VAR([have-z-start-stop-gc], [$libc_cv_z_start_stop_gc])
+
+LIBC_LINKER_FEATURE([--depaudit], [-Wl,--depaudit,x],
+ [libc_cv_depaudit=yes], [libc_cv_depaudit=no])
+LIBC_CONFIG_VAR([have-depaudit], [$libc_cv_depaudit])
+
+LIBC_LINKER_FEATURE([-z pack-relative-relocs],
+ [-Wl,-z,pack-relative-relocs],
+ [libc_cv_dt_relr=yes], [libc_cv_dt_relr=no])
+LIBC_CONFIG_VAR([have-dt-relr], [$libc_cv_dt_relr])
+
+LIBC_LINKER_FEATURE([--no-dynamic-linker],
+ [-Wl,--no-dynamic-linker],
+ [libc_cv_no_dynamic_linker=yes],
+ [libc_cv_no_dynamic_linker=no])
+LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker])
+
+AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl
+LIBC_TRY_CC_OPTION([-static-pie],
+ [libc_cv_static_pie=yes],
+ [libc_cv_static_pie=no])
+])
+LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie])
+
+AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
+LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
+])
+
+AC_SUBST(libc_cv_fpie)
+
+AC_CACHE_CHECK(for --hash-style option,
+ libc_cv_hashstyle, [dnl
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
+ -fPIC -shared -o conftest.so conftest.c
+ -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
+then
+ libc_cv_hashstyle=yes
+else
+ libc_cv_hashstyle=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_hashstyle)
+
+AC_CACHE_CHECK(for GLOB_DAT reloc,
+ libc_cv_has_glob_dat, [dnl
+cat > conftest.c <<EOF
+extern int mumble;
+int foo (void) { return mumble; }
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -fPIC -shared -o conftest.so conftest.c
+ -nostdlib -nostartfiles $no_ssp
+ 1>&AS_MESSAGE_LOG_FD])
+then
+dnl look for GLOB_DAT relocation.
+ if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
+ libc_cv_has_glob_dat=yes
+ else
+ libc_cv_has_glob_dat=no
+ fi
+else
+ libc_cv_has_glob_dat=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_has_glob_dat)
+
+AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
+[dnl
+cat > conftest.c <<EOF
+__thread int i;
+void foo (void)
+{
+ i = 10;
+}
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
+ conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD])
+then
+ libc_cv_mtls_dialect_gnu2=yes
+else
+ libc_cv_mtls_dialect_gnu2=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_mtls_dialect_gnu2)
+LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
+
+dnl clang emits an warning for a double alias redirection, to warn the
+dnl original symbol is sed even when weak definition overriddes it.
+dnl It is a usual pattern for weak_alias, where multiple alias point to
+dnl same symbol.
+AC_CACHE_CHECK([if -Wno-ignored-attributes is required for aliases],
+ libc_cv_wno_ignored_attributes, [dnl
+cat > conftest.c <<EOF
+void __foo (void)
+{
+}
+extern __typeof (__foo) foo __attribute__ ((weak, alias ("__foo")));
+extern __typeof (__foo) bar __attribute__ ((weak, alias ("foo")));
+EOF
+libc_cv_wno_ignored_attributes=""
+if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c])
+then
+ libc_cv_wno_ignored_attributes="-Wno-ignored-attributes"
+fi
+rm -f conftest*])
+LIBC_CONFIG_VAR([config-cflags-wno-ignored-attributes],
+ [$libc_cv_wno_ignored_attributes])
+
+AC_CACHE_CHECK(whether cc puts quotes around section names,
+ libc_cv_have_section_quotes,
+ [cat > conftest.c <<EOF
+ static const int foo
+ __attribute__ ((section ("bar"))) = 1;
+EOF
+ if ${CC-cc} -S conftest.c -o conftest.s; then
+ if grep '\.section.*"bar"' conftest.s >/dev/null; then
+ libc_cv_have_section_quotes=yes
+ else
+ libc_cv_have_section_quotes=no
+ fi
+ else
+ libc_cv_have_section_quotes=unknown
+ fi
+ rm -f conftest.{c,s}
+ ])
+if test $libc_cv_have_section_quotes = yes; then
+ AC_DEFINE(HAVE_SECTION_QUOTES)
+fi
+
+AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
+cat > conftest.c <<\EOF
+void zero (void *x)
+{
+ __builtin_memset (x, 0, 1000);
+}
+EOF
+dnl
+if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
+then
+ libc_cv_gcc_builtin_memset=no
+else
+ libc_cv_gcc_builtin_memset=yes
+fi
+rm -f conftest* ])
+if test "$libc_cv_gcc_builtin_memset" = yes ; then
+ AC_DEFINE(HAVE_BUILTIN_MEMSET)
+fi
+
+AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
+cat > conftest.c <<\EOF
+extern char *strstr (const char *, const char *) __asm ("my_strstr");
+char *foo (const char *a, const char *b)
+{
+ return __builtin_strstr (a, b);
+}
+EOF
+dnl
+if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
+then
+ libc_cv_gcc_builtin_redirection=yes
+else
+ libc_cv_gcc_builtin_redirection=no
+fi
+rm -f conftest* ])
+if test "$libc_cv_gcc_builtin_redirection" = no; then
+ AC_MSG_ERROR([support for the symbol redirection needed])
+fi
+
+dnl Determine how to disable generation of FMA instructions.
+AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
+ libc_cv_cc_nofma, [dnl
+libc_cv_cc_nofma=
+for opt in -ffp-contract=off -mno-fused-madd; do
+ LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
+done])
+AC_SUBST(libc_cv_cc_nofma)
+
+if test -n "$submachine"; then
+ AC_CACHE_CHECK([for compiler option for CPU variant],
+ libc_cv_cc_submachine, [dnl
+ libc_cv_cc_submachine=no
+ for opt in "-march=$submachine" "-mcpu=$submachine"; do
+ LIBC_TRY_CC_OPTION([$opt], [
+ libc_cv_cc_submachine="$opt"
+ break], [])
+ done])
+ if test "x$libc_cv_cc_submachine" = xno; then
+ AC_MSG_ERROR([${CC-cc} does not support $submachine])
+ fi
+fi
+AC_SUBST(libc_cv_cc_submachine)
+
+dnl Determine if compiler supports -fsignaling-nans
+AC_CACHE_CHECK([for compiler option that -fsignaling-nans],
+ libc_cv_cc_signaling_nans, [dnl
+LIBC_TRY_CC_OPTION([-Werror -fsignaling-nans],
+ [libc_cv_cc_signaling_nans=-fsignaling-nans],
+ [libc_cv_cc_signaling_nans=])
+])
+LIBC_CONFIG_VAR([config-cflags-signaling-nans],
+ [$libc_cv_cc_signaling_nans])
+
+AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
+__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
+cat > conftest.c <<EOF
+void
+__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
+foo (void) {}
+EOF
+libc_cv_cc_loop_to_function=no
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
+then
+ libc_cv_cc_loop_to_function=yes
+fi
+rm -f conftest*])
+if test $libc_cv_cc_loop_to_function = yes; then
+ AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
+fi
+AC_SUBST(libc_cv_cc_loop_to_function)
+
+dnl Check whether we have the gd library available.
+AC_MSG_CHECKING(for libgd)
+if test "$with_gd" != "no"; then
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $libgd_include"
+ old_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $libgd_ldflags"
+ old_LIBS="$LIBS"
+ LIBS="$LIBS -lgd -lpng -lz -lm"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gd.h>]], [[gdImagePng (0, 0)]])],
+ [LIBGD=yes], [LIBGD=no])
+ CFLAGS="$old_CFLAGS"
+ LDFLAGS="$old_LDFLAGS"
+ LIBS="$old_LIBS"
+else
+ LIBGD=no
+fi
+AC_MSG_RESULT($LIBGD)
+AC_SUBST(LIBGD)
+
+# SELinux detection
+if test x$with_selinux = xno ; then
+ have_selinux=no;
+else
+ # See if we have the SELinux library
+ AC_CHECK_LIB(selinux, is_selinux_enabled,
+ have_selinux=yes, have_selinux=no)
+ if test x$with_selinux = xyes ; then
+ if test x$have_selinux = xno ; then
+ AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
+ fi
+ fi
+fi
+# Check if we're building with SELinux support.
+if test "x$have_selinux" = xyes; then
+ AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
+
+ # See if we have the libaudit library
+ AC_CHECK_LIB(audit, audit_log_user_avc_message,
+ have_libaudit=yes, have_libaudit=no)
+ if test "x$have_libaudit" = xyes; then
+ AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
+ fi
+ AC_SUBST(have_libaudit)
+
+ # See if we have the libcap library
+ AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
+ if test "x$have_libcap" = xyes; then
+ AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
+ fi
+ AC_SUBST(have_libcap)
+fi
+AC_SUBST(have_selinux)
+
+CPPUNDEFS=
+dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
+dnl Since we are building the implementations of the fortified functions here,
+dnl having the macro defined interacts very badly.
+dnl _FORTIFY_SOURCE requires compiler optimization level 1 (gcc -O1)
+dnl and above (see "man FEATURE_TEST_MACROS").
+dnl So do NOT replace AC_COMPILE_IFELSE with AC_PREPROC_IFELSE.
+AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+#ifdef _FORTIFY_SOURCE
+# error bogon
+#endif]])],
+ [libc_cv_predef_fortify_source=no],
+ [libc_cv_predef_fortify_source=yes])])
+if test $libc_cv_predef_fortify_source = yes; then
+ CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
+fi
+AC_SUBST(CPPUNDEFS)
+
+dnl Starting with binutils 2.35, GAS can attach multiple symbol versions
+dnl to one symbol (PR 23840).
+AC_CACHE_CHECK(whether the assembler requires one version per symbol,
+ libc_cv_symver_needs_alias, [dnl
+ cat > conftest.s <<EOF
+ .text
+testfunc:
+ .globl testfunc
+ .symver testfunc, testfunc1@VERSION1
+ .symver testfunc, testfunc1@VERSION2
+EOF
+ libc_cv_symver_needs_alias=no
+ if ${CC-cc} $ASFLAGS -c conftest.s 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_symver_needs_alias=no
+ else
+ libc_cv_symver_needs_alias=yes
+ fi
+ rm conftest.*
+])
+if test "$libc_cv_symver_needs_alias" = yes; then
+ AC_DEFINE(SYMVER_NEEDS_ALIAS)
+fi
+
+AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
+ libc_cv_builtin_trap, [dnl
+libc_cv_builtin_trap=no
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_trap ()]])],[
+libc_undefs=`$NM -u conftest.o |
+ LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
+ 2>&AS_MESSAGE_LOG_FD` || {
+ AC_MSG_ERROR([confusing output from $NM -u])
+}
+echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
+if test -z "$libc_undefs"; then
+ libc_cv_builtin_trap=yes
+fi],[])])
+if test $libc_cv_builtin_trap = yes; then
+ AC_DEFINE([HAVE_BUILTIN_TRAP])
+fi
+
+dnl C++ feature tests.
+AC_LANG_PUSH([C++])
+
+AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
+ libc_cv_cxx_thread_local, [
+old_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS -std=gnu++11"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+#include <thread>
+
+// Compiler support.
+struct S
+{
+ S ();
+ ~S ();
+};
+thread_local S s;
+S * get () { return &s; }
+
+// libstdc++ support.
+#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
+#error __cxa_thread_atexit_impl not supported
+#endif
+])],
+ [libc_cv_cxx_thread_local=yes],
+ [libc_cv_cxx_thread_local=no])
+CXXFLAGS="$old_CXXFLAGS"
+])
+AC_SUBST(libc_cv_cxx_thread_local)
+
+AC_LANG_POP([C++])
+dnl End of C++ feature tests.
+
+### End of automated tests.
+### Now run sysdeps configure fragments.
+
+# They also can set these variables.
+use_ldconfig=no
+ldd_rewrite_script=no
+libc_cv_sysconfdir=$sysconfdir
+libc_cv_localstatedir=$localstatedir
+libc_cv_gcc_unwind_find_fde=no
+libc_cv_idn=no
+pthread_in_libc=yes
+
+# Iterate over all the sysdep directories we will use, running their
+# configure fragments.
+for dir in $sysnames; do
+ case $dir in
+ /*) dest=$dir ;;
+ *) dest=$srcdir/$dir ;;
+ esac
+ if test -r $dest/configure; then
+ AC_MSG_RESULT(running configure fragment for $dir)
+ . $dest/configure
+ fi
+done
+
+if test x"$build_mathvec" = xnotset; then
+ build_mathvec=no
+fi
+LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
+
+AC_SUBST(libc_extra_cflags)
+AC_SUBST(libc_extra_cppflags)
+
+if test x$libc_cv_gcc_unwind_find_fde = xyes; then
+ AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
+fi
+AC_SUBST(libc_cv_gcc_unwind_find_fde)
+
+# A sysdeps configure fragment can reset this if IFUNC is not actually
+# usable even though the assembler knows how to generate the symbol type.
+if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
+ AC_DEFINE(HAVE_IFUNC)
+fi
+LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function])
+
+if test x"$libc_cv_gcc_indirect_function" = xyes; then
+ AC_DEFINE(HAVE_GCC_IFUNC)
+fi
+LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function])
+
+# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
+# configure fragment can override the value to prevent this AC_DEFINE.
+AC_SUBST(use_nscd)
+if test "x$use_nscd" != xno; then
+ AC_DEFINE([USE_NSCD])
+fi
+if test "x$build_nscd" = xdefault; then
+ build_nscd=$use_nscd
+fi
+
+AC_SUBST(libc_cv_slibdir)
+AC_SUBST(libc_cv_rtlddir)
+AC_SUBST(libc_cv_complocaledir)
+AC_SUBST(libc_cv_sysconfdir)
+AC_SUBST(libc_cv_localstatedir)
+AC_SUBST(libc_cv_rootsbindir)
+
+if test x$use_ldconfig = xyes; then
+ AC_DEFINE(USE_LDCONFIG)
+fi
+AC_SUBST(use_ldconfig)
+AC_SUBST(ldd_rewrite_script)
+
+AC_SUBST(static)
+AC_SUBST(shared)
+
+AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
+[libc_cv_pic_default=yes
+cat > conftest.c <<EOF
+#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
+# error PIC is default.
+#endif
+EOF
+if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
+ libc_cv_pic_default=no
+fi
+rm -f conftest.*])
+LIBC_CONFIG_VAR([build-pic-default], [$libc_cv_pic_default])
+
+AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default,
+[libc_cv_cc_pie_default=yes
+cat > conftest.c <<EOF
+#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
+# error PIE is default.
+#endif
+EOF
+if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
+ libc_cv_cc_pie_default=no
+fi
+rm -f conftest.*])
+LIBC_CONFIG_VAR([cc-pie-default], [$libc_cv_cc_pie_default])
+
+AC_MSG_CHECKING(if we can build programs as PIE)
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifdef PIE_UNSUPPORTED
+# error PIE is not supported
+#endif]])], [libc_cv_pie_supported=yes], [libc_cv_pie_supported=no])
+AC_MSG_RESULT($libc_cv_pie_supported)
+# Disable build-pie-default if target does not support it or glibc is
+# configured with --disable-default-pie.
+if test "x$default_pie" = xno; then
+ build_pie_default=no
+else
+ build_pie_default=$libc_cv_pie_supported
+fi
+LIBC_CONFIG_VAR([build-pie-default], [$build_pie_default])
+
+AC_MSG_CHECKING(if we can build static PIE programs)
+libc_cv_static_pie_supported=$libc_cv_pie_supported
+if test "x$libc_cv_pie_supported" != xno \
+ -a "$libc_cv_no_dynamic_linker" = yes; then
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifndef SUPPORT_STATIC_PIE
+# error static PIE is not supported
+#endif]])], [libc_cv_static_pie_supported=yes],
+ [libc_cv_static_pie_supported=no])
+fi
+AC_MSG_RESULT($libc_cv_static_pie_supported)
+
+# Enable static-pie only if it is available and glibc isn't configured
+# with --disable-default-pie.
+if test "x$default_pie" = xno; then
+ libc_cv_static_pie=no
+else
+ libc_cv_static_pie=$libc_cv_static_pie_supported
+fi
+if test "$libc_cv_static_pie" = "yes"; then
+ AC_DEFINE(ENABLE_STATIC_PIE)
+fi
+LIBC_CONFIG_VAR([enable-static-pie], [$libc_cv_static_pie])
+
+# Set the `multidir' variable by grabbing the variable from the compiler.
+# We do it once and save the result in a generated makefile.
+libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
+AC_SUBST(libc_cv_multidir)
+
+AC_SUBST(profile)
+AC_SUBST(static_nss)
+
+AC_SUBST(DEFINES)
+
+dnl See sysdeps/mach/configure.ac for this variable.
+AC_SUBST(mach_interface_list)
+
+VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
+RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
+AC_SUBST(VERSION)
+AC_SUBST(RELEASE)
+
+if test "$pthread_in_libc" = yes; then
+ AC_DEFINE(PTHREAD_IN_LIBC)
+fi
+AC_SUBST(pthread_in_libc)
+
+AC_CONFIG_FILES([config.make Makefile])
+AC_CONFIG_COMMANDS([default],[[
+case $CONFIG_FILES in *config.make*)
+echo "$config_vars" >> config.make;;
+esac
+test -d bits || mkdir bits]],[[config_vars='$config_vars']])
+AC_OUTPUT
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-x86_64-interpreter.patch
+
+mv glibc-$VERSION-x86_64-interpreter.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/glibc-2.37-new/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/glibc-2.37-new/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-x86_64-interpreter-patch/glibc-2.37-new/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed (revision 35)
@@ -0,0 +1 @@
+s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|32\|x32\)\(/ld-linux\)\(\|-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4-x86-64\6 \232\4\6 \2x32\4-x32\6"_
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-zonefile.patch
+
+mv glibc-$VERSION-zonefile.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/time/tzfile.c
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/glibc-2.37-new/time/tzfile.c
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/glibc-2.37-new/time/tzfile.c (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-zonefile-patch/glibc-2.37-new/time/tzfile.c (revision 35)
@@ -0,0 +1,782 @@
+/* Copyright (C) 1991-2023 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <stdint.h>
+#include <alloc_buffer.h>
+
+#include <timezone/tzfile.h>
+
+int __use_tzfile;
+static dev_t tzfile_dev;
+static ino64_t tzfile_ino;
+static __time64_t tzfile_mtime;
+
+struct ttinfo
+ {
+ int offset; /* Seconds east of GMT. */
+ unsigned char isdst; /* Used to set tm_isdst. */
+ unsigned char idx; /* Index into `zone_names'. */
+ unsigned char isstd; /* Transition times are in standard time. */
+ unsigned char isut; /* Transition times are in UT. */
+ };
+
+struct leap
+ {
+ __time64_t transition; /* Time the transition takes effect. */
+ long int change; /* Seconds of correction to apply. */
+ };
+
+static size_t num_transitions;
+libc_freeres_ptr (static __time64_t *transitions);
+static unsigned char *type_idxs;
+static size_t num_types;
+static struct ttinfo *types;
+static char *zone_names;
+static long int rule_stdoff;
+static long int rule_dstoff;
+static size_t num_leaps;
+static struct leap *leaps;
+static char *tzspec;
+
+/* Used to restore the daylight variable during time conversion, as if
+ tzset had been called. */
+static int daylight_saved;
+
+#include <endian.h>
+#include <byteswap.h>
+
+/* Decode the four bytes at PTR as a signed integer in network byte order. */
+static inline int
+__attribute ((always_inline))
+decode (const void *ptr)
+{
+ if (BYTE_ORDER == BIG_ENDIAN && sizeof (int) == 4)
+ return *(const int *) ptr;
+ if (sizeof (int) == 4)
+ return bswap_32 (*(const int *) ptr);
+
+ const unsigned char *p = ptr;
+ int result = *p & (1 << (CHAR_BIT - 1)) ? ~0 : 0;
+
+ result = (result << 8) | *p++;
+ result = (result << 8) | *p++;
+ result = (result << 8) | *p++;
+ result = (result << 8) | *p++;
+
+ return result;
+}
+
+
+static inline int64_t
+__attribute ((always_inline))
+decode64 (const void *ptr)
+{
+ if ((BYTE_ORDER == BIG_ENDIAN))
+ return *(const int64_t *) ptr;
+
+ return bswap_64 (*(const int64_t *) ptr);
+}
+
+
+void
+__tzfile_read (const char *file, size_t extra, char **extrap)
+{
+ static const char default_tzdir[] = TZDIR;
+ size_t num_isstd, num_isut;
+ FILE *f;
+ struct tzhead tzhead;
+ size_t chars;
+ size_t i;
+ int was_using_tzfile = __use_tzfile;
+ int trans_width = 4;
+ char *new = NULL;
+
+ _Static_assert (sizeof (__time64_t) == 8,
+ "__time64_t must be eight bytes");
+
+ __use_tzfile = 0;
+
+ if (file == NULL)
+ /* No user specification; use the site-wide default. */
+ file = TZDEFAULT;
+ else if (*file == '\0')
+ /* User specified the empty string; use UTC with no leap seconds. */
+ goto ret_free_transitions;
+ else
+ {
+ /* We must not allow to read an arbitrary file in a setuid
+ program. So we fail for any file which is not in the
+ directory hierachy starting at TZDIR
+ and which is not the system wide default TZDEFAULT. */
+ if (__libc_enable_secure
+ && ((*file == '/'
+ && memcmp (file, TZDEFAULT, sizeof TZDEFAULT)
+ && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1))
+ || strstr (file, "../") != NULL))
+ /* This test is certainly a bit too restrictive but it should
+ catch all critical cases. */
+ goto ret_free_transitions;
+ }
+
+ if (*file != '/')
+ {
+ const char *tzdir;
+
+ tzdir = getenv ("TZDIR");
+ if (tzdir == NULL || *tzdir == '\0')
+ tzdir = default_tzdir;
+ if (__asprintf (&new, "%s/%s", tzdir, file) == -1)
+ goto ret_free_transitions;
+ file = new;
+ }
+
+ /* If we were already using tzfile, check whether the file changed. */
+ struct __stat64_t64 st;
+ if (was_using_tzfile
+ && __stat64_time64 (file, &st) == 0
+ && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev
+ && tzfile_mtime == st.st_mtime)
+ goto done; /* Nothing to do. */
+
+ /* Note the file is opened with cancellation in the I/O functions
+ disabled and if available FD_CLOEXEC set. */
+ f = fopen (file, "rce");
+ if (f == NULL)
+ goto ret_free_transitions;
+
+ /* Get information about the file we are actually using. */
+ if (__fstat64_time64 (__fileno (f), &st) != 0)
+ goto lose;
+
+ free ((void *) transitions);
+ transitions = NULL;
+
+ /* Remember the inode and device number and modification time. */
+ tzfile_dev = st.st_dev;
+ tzfile_ino = st.st_ino;
+ tzfile_mtime = st.st_mtime;
+
+ /* No threads reading this stream. */
+ __fsetlocking (f, FSETLOCKING_BYCALLER);
+
+ read_again:
+ if (__builtin_expect (__fread_unlocked ((void *) &tzhead, sizeof (tzhead),
+ 1, f) != 1, 0)
+ || memcmp (tzhead.tzh_magic, TZ_MAGIC, sizeof (tzhead.tzh_magic)) != 0)
+ goto lose;
+
+ num_transitions = (size_t) decode (tzhead.tzh_timecnt);
+ num_types = (size_t) decode (tzhead.tzh_typecnt);
+ chars = (size_t) decode (tzhead.tzh_charcnt);
+ num_leaps = (size_t) decode (tzhead.tzh_leapcnt);
+ num_isstd = (size_t) decode (tzhead.tzh_ttisstdcnt);
+ num_isut = (size_t) decode (tzhead.tzh_ttisutcnt);
+
+ if (__glibc_unlikely (num_isstd > num_types || num_isut > num_types))
+ goto lose;
+
+ if (trans_width == 4 && tzhead.tzh_version[0] != '\0')
+ {
+ /* We use the 8-byte format. */
+ trans_width = 8;
+
+ /* Position the stream before the second header. */
+ size_t to_skip = (num_transitions * (4 + 1)
+ + num_types * 6
+ + chars
+ + num_leaps * 8
+ + num_isstd
+ + num_isut);
+ if (fseek (f, to_skip, SEEK_CUR) != 0)
+ goto lose;
+
+ goto read_again;
+ }
+
+ /* Compute the size of the POSIX time zone specification in the
+ file. */
+ size_t tzspec_len;
+ if (trans_width == 8)
+ {
+ off_t rem = st.st_size - __ftello (f);
+ if (__builtin_expect (rem < 0
+ || (size_t) rem < (num_transitions * (8 + 1)
+ + num_types * 6
+ + chars), 0))
+ goto lose;
+ tzspec_len = (size_t) rem - (num_transitions * (8 + 1)
+ + num_types * 6
+ + chars);
+ if (__builtin_expect (num_leaps > SIZE_MAX / 12
+ || tzspec_len < num_leaps * 12, 0))
+ goto lose;
+ tzspec_len -= num_leaps * 12;
+ if (__glibc_unlikely (tzspec_len < num_isstd))
+ goto lose;
+ tzspec_len -= num_isstd;
+ if (__glibc_unlikely (tzspec_len == 0 || tzspec_len - 1 < num_isut))
+ goto lose;
+ tzspec_len -= num_isut + 1;
+ if (tzspec_len == 0)
+ goto lose;
+ }
+ else
+ tzspec_len = 0;
+
+ /* The file is parsed into a single heap allocation, comprising of
+ the following arrays:
+
+ __time64_t transitions[num_transitions];
+ struct leap leaps[num_leaps];
+ struct ttinfo types[num_types];
+ unsigned char type_idxs[num_types];
+ char zone_names[chars];
+ char tzspec[tzspec_len];
+ char extra_array[extra]; // Stored into *pextras if requested.
+
+ The piece-wise allocations from buf below verify that no
+ overflow/wraparound occurred in these computations.
+
+ The order of the suballocations is important for alignment
+ purposes. __time64_t outside a struct may require more alignment
+ then inside a struct on some architectures, so it must come
+ first. */
+ _Static_assert (__alignof (__time64_t) >= __alignof (struct leap),
+ "alignment of __time64_t");
+ _Static_assert (__alignof (struct leap) >= __alignof (struct ttinfo),
+ "alignment of struct leap");
+ struct alloc_buffer buf;
+ {
+ size_t total_size = (num_transitions * sizeof (__time64_t)
+ + num_leaps * sizeof (struct leap)
+ + num_types * sizeof (struct ttinfo)
+ + num_transitions /* type_idxs */
+ + chars /* zone_names */
+ + tzspec_len + extra);
+ transitions = malloc (total_size);
+ if (transitions == NULL)
+ goto lose;
+ buf = alloc_buffer_create (transitions, total_size);
+ }
+
+ /* The address of the first allocation is already stored in the
+ pointer transitions. */
+ (void) alloc_buffer_alloc_array (&buf, __time64_t, num_transitions);
+ leaps = alloc_buffer_alloc_array (&buf, struct leap, num_leaps);
+ types = alloc_buffer_alloc_array (&buf, struct ttinfo, num_types);
+ type_idxs = alloc_buffer_alloc_array (&buf, unsigned char, num_transitions);
+ zone_names = alloc_buffer_alloc_array (&buf, char, chars);
+ if (trans_width == 8)
+ tzspec = alloc_buffer_alloc_array (&buf, char, tzspec_len);
+ else
+ tzspec = NULL;
+ if (extra > 0)
+ *extrap = alloc_buffer_alloc_array (&buf, char, extra);
+ if (alloc_buffer_has_failed (&buf))
+ goto lose;
+
+ if (__glibc_unlikely (__fread_unlocked (transitions, trans_width,
+ num_transitions, f)
+ != num_transitions)
+ || __glibc_unlikely (__fread_unlocked (type_idxs, 1, num_transitions, f)
+ != num_transitions))
+ goto lose;
+
+ /* Check for bogus indices in the data file, so we can hereafter
+ safely use type_idxs[T] as indices into `types' and never crash. */
+ for (i = 0; i < num_transitions; ++i)
+ if (__glibc_unlikely (type_idxs[i] >= num_types))
+ goto lose;
+
+ if (trans_width == 4)
+ {
+ /* Decode the transition times, stored as 4-byte integers in
+ network (big-endian) byte order. We work from the end of the
+ array so as not to clobber the next element to be
+ processed. */
+ i = num_transitions;
+ while (i-- > 0)
+ transitions[i] = decode ((char *) transitions + i * 4);
+ }
+ else if (BYTE_ORDER != BIG_ENDIAN)
+ {
+ /* Decode the transition times, stored as 8-byte integers in
+ network (big-endian) byte order. */
+ for (i = 0; i < num_transitions; ++i)
+ transitions[i] = decode64 ((char *) transitions + i * 8);
+ }
+
+ for (i = 0; i < num_types; ++i)
+ {
+ unsigned char x[4];
+ int c;
+ if (__builtin_expect (__fread_unlocked (x, 1,
+ sizeof (x), f) != sizeof (x),
+ 0))
+ goto lose;
+ c = __getc_unlocked (f);
+ if (__glibc_unlikely ((unsigned int) c > 1u))
+ goto lose;
+ types[i].isdst = c;
+ c = __getc_unlocked (f);
+ if (__glibc_unlikely ((size_t) c > chars))
+ /* Bogus index in data file. */
+ goto lose;
+ types[i].idx = c;
+ types[i].offset = decode (x);
+ }
+
+ if (__glibc_unlikely (__fread_unlocked (zone_names, 1, chars, f) != chars))
+ goto lose;
+
+ for (i = 0; i < num_leaps; ++i)
+ {
+ unsigned char x[8];
+ if (__builtin_expect (__fread_unlocked (x, 1, trans_width, f)
+ != trans_width, 0))
+ goto lose;
+ if (trans_width == 4)
+ leaps[i].transition = decode (x);
+ else
+ leaps[i].transition = decode64 (x);
+
+ if (__glibc_unlikely (__fread_unlocked (x, 1, 4, f) != 4))
+ goto lose;
+ leaps[i].change = (long int) decode (x);
+ }
+
+ for (i = 0; i < num_isstd; ++i)
+ {
+ int c = __getc_unlocked (f);
+ if (__glibc_unlikely (c == EOF))
+ goto lose;
+ types[i].isstd = c != 0;
+ }
+ while (i < num_types)
+ types[i++].isstd = 0;
+
+ for (i = 0; i < num_isut; ++i)
+ {
+ int c = __getc_unlocked (f);
+ if (__glibc_unlikely (c == EOF))
+ goto lose;
+ types[i].isut = c != 0;
+ }
+ while (i < num_types)
+ types[i++].isut = 0;
+
+ /* Read the POSIX TZ-style information if possible. */
+ if (tzspec != NULL)
+ {
+ assert (tzspec_len > 0);
+ /* Skip over the newline first. */
+ if (__getc_unlocked (f) != '\n'
+ || (__fread_unlocked (tzspec, 1, tzspec_len - 1, f)
+ != tzspec_len - 1))
+ tzspec = NULL;
+ else
+ tzspec[tzspec_len - 1] = '\0';
+ }
+
+ /* Don't use an empty TZ string. */
+ if (tzspec != NULL && tzspec[0] == '\0')
+ tzspec = NULL;
+
+ fclose (f);
+
+ /* First "register" all timezone names. */
+ for (i = 0; i < num_types; ++i)
+ if (__tzstring (&zone_names[types[i].idx]) == NULL)
+ goto ret_free_transitions;
+
+ /* Find the standard and daylight time offsets used by the rule file.
+ We choose the offsets in the types of each flavor that are
+ transitioned to earliest in time. */
+ __tzname[0] = NULL;
+ __tzname[1] = NULL;
+ for (i = num_transitions; i > 0; )
+ {
+ int type = type_idxs[--i];
+ int dst = types[type].isdst;
+
+ if (__tzname[dst] == NULL)
+ {
+ int idx = types[type].idx;
+
+ __tzname[dst] = __tzstring (&zone_names[idx]);
+
+ if (__tzname[1 - dst] != NULL)
+ break;
+ }
+ }
+ if (__tzname[0] == NULL)
+ {
+ /* This should only happen if there are no transition rules.
+ In this case there's usually only one single type, unless
+ e.g. the data file has a truncated time-range. */
+ __tzname[0] = __tzstring (zone_names);
+ }
+ if (__tzname[1] == NULL)
+ __tzname[1] = __tzname[0];
+
+ daylight_saved = 0;
+ if (num_transitions == 0)
+ /* Use the first rule (which should also be the only one). */
+ rule_stdoff = rule_dstoff = types[0].offset;
+ else
+ {
+ rule_stdoff = 0;
+
+ /* Search for the last rule with a standard time offset. This
+ will be used for the global timezone variable. */
+ i = num_transitions - 1;
+ do
+ if (!types[type_idxs[i]].isdst)
+ {
+ rule_stdoff = types[type_idxs[i]].offset;
+ break;
+ }
+ else
+ daylight_saved = 1;
+ while (i-- > 0);
+
+ /* Keep searching to see if there is a DST rule. This
+ information will be used to set the global daylight
+ variable. */
+ while (i-- > 0 && !daylight_saved)
+ daylight_saved = types[type_idxs[i]].isdst;
+ }
+
+ __daylight = daylight_saved;
+ __timezone = -rule_stdoff;
+
+ done:
+ __use_tzfile = 1;
+ free (new);
+ return;
+
+ lose:
+ fclose (f);
+ ret_free_transitions:
+ free (new);
+ free ((void *) transitions);
+ transitions = NULL;
+}
+
+/* The user specified a hand-made timezone, but not its DST rules.
+ We will use the names and offsets from the user, and the rules
+ from the TZDEFRULES file. */
+
+void
+__tzfile_default (const char *std, const char *dst,
+ int stdoff, int dstoff)
+{
+ size_t stdlen = strlen (std) + 1;
+ size_t dstlen = strlen (dst) + 1;
+ size_t i;
+ int isdst;
+ char *cp;
+
+ __tzfile_read (TZDEFRULES, stdlen + dstlen, &cp);
+ if (!__use_tzfile)
+ return;
+
+ if (num_types < 2)
+ {
+ __use_tzfile = 0;
+ return;
+ }
+
+ /* Ignore the zone names read from the file and use the given ones
+ instead. */
+ __mempcpy (__mempcpy (cp, std, stdlen), dst, dstlen);
+ zone_names = cp;
+
+ /* Now there are only two zones, regardless of what the file contained. */
+ num_types = 2;
+
+ /* Now correct the transition times for the user-specified standard and
+ daylight offsets from GMT. */
+ isdst = 0;
+ for (i = 0; i < num_transitions; ++i)
+ {
+ struct ttinfo *trans_type = &types[type_idxs[i]];
+
+ /* We will use only types 0 (standard) and 1 (daylight).
+ Fix up this transition to point to whichever matches
+ the flavor of its original type. */
+ type_idxs[i] = trans_type->isdst;
+
+ if (trans_type->isut)
+ /* The transition time is in UT. No correction to apply. */ ;
+ else if (isdst && !trans_type->isstd)
+ /* The type says this transition is in "local wall clock time", and
+ wall clock time as of the previous transition was DST. Correct
+ for the difference between the rule's DST offset and the user's
+ DST offset. */
+ transitions[i] += dstoff - rule_dstoff;
+ else
+ /* This transition is in "local wall clock time", and wall clock
+ time as of this iteration is non-DST. Correct for the
+ difference between the rule's standard offset and the user's
+ standard offset. */
+ transitions[i] += stdoff - rule_stdoff;
+
+ /* The DST state of "local wall clock time" for the next iteration is
+ as specified by this transition. */
+ isdst = trans_type->isdst;
+ }
+
+ /* Now that we adjusted the transitions to the requested offsets,
+ reset the rule_stdoff and rule_dstoff values appropriately. They
+ are used elsewhere. */
+ rule_stdoff = stdoff;
+ rule_dstoff = dstoff;
+
+ /* Reset types 0 and 1 to describe the user's settings. */
+ types[0].idx = 0;
+ types[0].offset = stdoff;
+ types[0].isdst = 0;
+ types[1].idx = stdlen;
+ types[1].offset = dstoff;
+ types[1].isdst = 1;
+
+ /* Reset the zone names to point to the user's names. */
+ __tzname[0] = (char *) std;
+ __tzname[1] = (char *) dst;
+
+ /* Set the timezone. */
+ __timezone = -types[0].offset;
+
+ /* Invalidate the tzfile attribute cache to force rereading
+ TZDEFRULES the next time it is used. */
+ tzfile_dev = 0;
+ tzfile_ino = 0;
+ tzfile_mtime = 0;
+}
+
+void
+__tzfile_compute (__time64_t timer, int use_localtime,
+ long int *leap_correct, int *leap_hit,
+ struct tm *tp)
+{
+ size_t i;
+
+ if (use_localtime)
+ {
+ __tzname[0] = NULL;
+ __tzname[1] = NULL;
+
+ if (__glibc_unlikely (num_transitions == 0 || timer < transitions[0]))
+ {
+ /* TIMER is before any transition (or there are no transitions).
+ Choose the first non-DST type
+ (or the first if they're all DST types). */
+ i = 0;
+ while (i < num_types && types[i].isdst)
+ {
+ if (__tzname[1] == NULL)
+ __tzname[1] = __tzstring (&zone_names[types[i].idx]);
+
+ ++i;
+ }
+
+ if (i == num_types)
+ i = 0;
+ __tzname[0] = __tzstring (&zone_names[types[i].idx]);
+ if (__tzname[1] == NULL)
+ {
+ size_t j = i;
+ while (j < num_types)
+ if (types[j].isdst)
+ {
+ __tzname[1] = __tzstring (&zone_names[types[j].idx]);
+ break;
+ }
+ else
+ ++j;
+ }
+ }
+ else if (__glibc_unlikely (timer >= transitions[num_transitions - 1]))
+ {
+ if (__glibc_unlikely (tzspec == NULL))
+ {
+ use_last:
+ i = num_transitions;
+ goto found;
+ }
+
+ /* Parse the POSIX TZ-style string. */
+ __tzset_parse_tz (tzspec);
+
+ /* Convert to broken down structure. If this fails do not
+ use the string. */
+ if (__glibc_unlikely (! __offtime (timer, 0, tp)))
+ goto use_last;
+
+ /* Use the rules from the TZ string to compute the change. */
+ __tz_compute (timer, tp, 1);
+
+ /* If tzspec comes from posixrules loaded by __tzfile_default,
+ override the STD and DST zone names with the ones user
+ requested in TZ envvar. */
+ if (__glibc_unlikely (zone_names == (char *) &leaps[num_leaps]))
+ {
+ assert (num_types == 2);
+ __tzname[0] = __tzstring (zone_names);
+ __tzname[1] = __tzstring (&zone_names[strlen (zone_names) + 1]);
+ }
+
+ goto leap;
+ }
+ else
+ {
+ /* Find the first transition after TIMER, and
+ then pick the type of the transition before it. */
+ size_t lo = 0;
+ size_t hi = num_transitions - 1;
+ /* Assume that DST is changing twice a year and guess
+ initial search spot from it. Half of a gregorian year
+ has on average 365.2425 * 86400 / 2 = 15778476 seconds.
+ The value i can be truncated if size_t is smaller than
+ __time64_t, but this is harmless because it is just
+ a guess. */
+ i = (transitions[num_transitions - 1] - timer) / 15778476;
+ if (i < num_transitions)
+ {
+ i = num_transitions - 1 - i;
+ if (timer < transitions[i])
+ {
+ if (i < 10 || timer >= transitions[i - 10])
+ {
+ /* Linear search. */
+ while (timer < transitions[i - 1])
+ --i;
+ goto found;
+ }
+ hi = i - 10;
+ }
+ else
+ {
+ if (i + 10 >= num_transitions || timer < transitions[i + 10])
+ {
+ /* Linear search. */
+ while (timer >= transitions[i])
+ ++i;
+ goto found;
+ }
+ lo = i + 10;
+ }
+ }
+
+ /* Binary search. */
+ /* assert (timer >= transitions[lo] && timer < transitions[hi]); */
+ while (lo + 1 < hi)
+ {
+ i = (lo + hi) / 2;
+ if (timer < transitions[i])
+ hi = i;
+ else
+ lo = i;
+ }
+ i = hi;
+
+ found:
+ /* assert (timer >= transitions[i - 1]
+ && (i == num_transitions || timer < transitions[i])); */
+ __tzname[types[type_idxs[i - 1]].isdst]
+ = __tzstring (&zone_names[types[type_idxs[i - 1]].idx]);
+ size_t j = i;
+ while (j < num_transitions)
+ {
+ int type = type_idxs[j];
+ int dst = types[type].isdst;
+ int idx = types[type].idx;
+
+ if (__tzname[dst] == NULL)
+ {
+ __tzname[dst] = __tzstring (&zone_names[idx]);
+
+ if (__tzname[1 - dst] != NULL)
+ break;
+ }
+
+ ++j;
+ }
+
+ if (__glibc_unlikely (__tzname[0] == NULL))
+ __tzname[0] = __tzname[1];
+
+ i = type_idxs[i - 1];
+ }
+
+ struct ttinfo *info = &types[i];
+ __daylight = daylight_saved;
+ __timezone = -rule_stdoff;
+
+ if (__tzname[0] == NULL)
+ {
+ /* This should only happen if there are no transition rules.
+ In this case there should be only one single type. */
+ assert (num_types == 1);
+ __tzname[0] = __tzstring (zone_names);
+ }
+ if (__tzname[1] == NULL)
+ /* There is no daylight saving time. */
+ __tzname[1] = __tzname[0];
+ tp->tm_isdst = info->isdst;
+ assert (strcmp (&zone_names[info->idx], __tzname[tp->tm_isdst]) == 0);
+ tp->tm_zone = __tzname[tp->tm_isdst];
+ tp->tm_gmtoff = info->offset;
+ }
+
+ leap:
+ *leap_correct = 0L;
+ *leap_hit = 0;
+
+ /* Find the last leap second correction transition time before TIMER. */
+ i = num_leaps;
+ do
+ if (i-- == 0)
+ return;
+ while (timer < leaps[i].transition);
+
+ /* Apply its correction. */
+ *leap_correct = leaps[i].change;
+
+ if (timer == leaps[i].transition /* Exactly at the transition time. */
+ && (leaps[i].change > (i == 0 ? 0 : leaps[i - 1].change)))
+ {
+ *leap_hit = 1;
+ while (i > 0
+ && leaps[i].transition == leaps[i - 1].transition + 1
+ && leaps[i].change == leaps[i - 1].change + 1)
+ {
+ ++*leap_hit;
+ --i;
+ }
+ }
+}
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/create.patch.sh (revision 35)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.37
+
+tar --files-from=file.list -xJvf ../glibc-$VERSION.tar.xz
+mv glibc-$VERSION glibc-$VERSION-orig
+
+cp -rf ./glibc-$VERSION-new ./glibc-$VERSION
+
+diff --unified -Nr glibc-$VERSION-orig glibc-$VERSION > glibc-$VERSION-zoneinfo.patch
+
+mv glibc-$VERSION-zoneinfo.patch ../patches
+
+rm -rf ./glibc-$VERSION
+rm -rf ./glibc-$VERSION-orig
Property changes on: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/file.list
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/file.list (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/file.list (revision 35)
@@ -0,0 +1 @@
+glibc-2.37/timezone/Makefile
Index: radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/glibc-2.37-new/timezone/Makefile
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/glibc-2.37-new/timezone/Makefile (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/create-2.37-zoneinfo-patch/glibc-2.37-new/timezone/Makefile (revision 35)
@@ -0,0 +1,141 @@
+# Copyright (C) 1998-2023 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
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+#
+# Makefile for timezone information
+#
+subdir := timezone
+
+include ../Makeconfig
+
+others := zdump zic
+tests := test-tz tst-timezone tst-tzset tst-bz28707 tst-bz29951
+
+generated-dirs += testdata
+
+generated += tzselect
+
+testdata = $(objpfx)testdata
+
+ifeq ($(enable-timezone-tools),yes)
+install-sbin := zic
+install-bin := zdump
+install-bin-script = tzselect
+endif
+
+ifeq ($(run-built-tests),yes)
+# List zones generated by separate commands running zic on the host.
+# Each such zic run counts as a separate test.
+test-zones := America/New_York Etc/UTC UTC Europe/Berlin \
+ Australia/Melbourne America/Sao_Paulo Asia/Tokyo \
+ $(posixrules-file)
+tests-special += $(addprefix $(testdata)/, $(test-zones))
+endif
+
+include ../Rules
+
+
+$(objpfx)zic.o $(objpfx)zdump.o: $(objpfx)version.h
+
+$(objpfx)version.h: $(common-objpfx)config.make
+ echo 'static char const TZVERSION[]="$(version)";' \
+ > $@.new
+ mv -f $@.new $@
+
+tz-cflags = -DTZDIR='"$(zonedir)"' \
+ -DTZDEFAULT='"$(localtime-file)"' \
+ -DTZDEFRULES='"$(posixrules-file)"' \
+ -DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone \
+ -DHAVE_GETTEXT -DUSE_LTZ=0 -D_ISOMAC -DTZ_DOMAIN='"libc"' \
+ -include $(common-objpfx)config.h -Wno-maybe-uninitialized
+
+# The -Wno-unused-variable flag is used to prevent GCC 6
+# from warning about time_t_min and time_t_max which are
+# defined in private.h but not used.
+CFLAGS-zdump.c += $(tz-cflags)
+CFLAGS-zic.c += $(tz-cflags) -Wno-unused-variable
+
+# We have to make sure the data for testing the tz functions is available.
+# Don't add leapseconds here since test-tz made checks that work only without
+# leapseconds.
+define build-testdata
+$(built-program-cmd) -d $(testdata) -y ./yearistype $<; \
+$(evaluate-test)
+endef
+
+$(objpfx)test-tz.out: $(addprefix $(testdata)/, America/New_York Etc/UTC UTC)
+$(objpfx)tst-timezone.out: $(addprefix $(testdata)/, \
+ Europe/Berlin Universal \
+ Australia/Melbourne \
+ America/New_York \
+ America/Sao_Paulo Asia/Tokyo \
+ Europe/London)
+$(objpfx)tst-tzset.out: $(addprefix $(testdata)/XT, 1 2 3 4)
+$(objpfx)tst-bz28707.out: $(testdata)/XT5
+$(objpfx)tst-bz29951.out: $(testdata)/XT6
+
+test-tz-ENV = TZDIR=$(testdata)
+tst-timezone-ENV = TZDIR=$(testdata)
+tst-tzset-ENV = TZDIR=$(testdata)
+tst-bz28707-ENV = TZDIR=$(testdata)
+tst-bz29951-ENV = TZDIR=$(testdata)
+
+# Note this must come second in the deps list for $(built-program-cmd) to work.
+zic-deps = $(objpfx)zic $(leapseconds) yearistype
+
+$(testdata)/America/New_York: northamerica $(zic-deps)
+ $(build-testdata)
+$(testdata)/$(posixrules-file): $(testdata)/America/New_York
+ $(make-link); $(evaluate-test)
+$(testdata)/Etc/UTC: etcetera $(zic-deps)
+ $(build-testdata)
+# Use a pattern rule to indicate the command produces both targets at once.
+# Two separate targets built separately can collide if in parallel.
+%/UTC %/Universal: simplebackw $(zic-deps) %/Etc/UTC
+ $(build-testdata)
+ { test -r $(@D)/Universal.test-result \
+ && cp $(@D)/Universal.test-result $(@D)/UTC.test-result \
+ && sed -i 's/Universal/UTC/' $(@D)/UTC.test-result ; exit 0; }
+ { test -r $(@D)/UTC.test-result \
+ && cp $(@D)/UTC.test-result $(@D)/Universal.test-result \
+ && sed -i 's/UTC/Universal/' $(@D)/Universal.test-result ; exit 0; }
+$(testdata)/%/Berlin $(testdata)/%/London: europe $(zic-deps)
+ $(build-testdata)
+$(testdata)/Australia/Melbourne: australasia $(zic-deps)
+ $(build-testdata)
+$(testdata)/America/Sao_Paulo: southamerica $(zic-deps)
+ $(build-testdata)
+$(testdata)/Asia/Tokyo: asia $(zic-deps)
+ $(build-testdata)
+
+$(testdata)/XT%: testdata/XT%
+ $(make-target-directory)
+ cp $< $@
+
+$(testdata)/XT5: testdata/gen-XT5.sh
+ $(make-target-directory)
+ $(SHELL) $< > $@.tmp
+ mv $@.tmp $@
+
+$(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
+ sed -e '/TZDIR=/s|`pwd`|$(zonedir)|' \
+ -e '/TZVERSION=/s|see_Makefile|"$(version)"|' \
+ -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \
+ -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \
+ < $< > $@.new
+ chmod 555 $@.new
+ mv -f $@.new $@
Index: radix-1.9/sources/GNU/glibc/2.37/patches/README
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/patches/README (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/patches/README (revision 35)
@@ -0,0 +1,21 @@
+
+/* begin *
+
+ NOTE:
+ ====
+ glibc-2.37-reenable-DT-HASH.patch - From e47de5cb2d4dbecb58f569ed241e8e95c568f03c Mon Sep 17 00:00:00 2001
+ From: Florian Weimer <fweimer@redhat.com>
+ Date: Fri, 29 Apr 2022 16:37:51 +0200
+ Subject: [PATCH] Do not use --hash-style=both for building glibc shared
+ objects
+
+ The comment indicates that --hash-style=both was used to maintain
+ compatibility with static dlopen, but we had many internal ABI
+ changes since then, so this compatiblity does not add value anymore.
+
+ Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+
+ glibc-2.37-zonefile.patch - required if IANA timezone version 2022f or later is applyed.
+
+
+ * end */
Index: radix-1.9/sources/GNU/glibc/2.37/patches
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37/patches (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37/patches (revision 35)
Property changes on: radix-1.9/sources/GNU/glibc/2.37/patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/sources/GNU/glibc/2.37
===================================================================
--- radix-1.9/sources/GNU/glibc/2.37 (nonexistent)
+++ radix-1.9/sources/GNU/glibc/2.37 (revision 35)
Property changes on: radix-1.9/sources/GNU/glibc/2.37
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/sources/iana/tz/create-2022f-version-patch/file.list
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-version-patch/file.list (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-version-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-Makefile
Index: radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new/Makefile
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new/Makefile (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new/Makefile (nonexistent)
@@ -1,1237 +0,0 @@
-# Make and install tzdb code and data.
-
-# This file is in the public domain, so clarified as of
-# 2009-05-17 by Arthur David Olson.
-
-# Package name for the code distribution.
-PACKAGE= tzcode
-
-# Version number for the distribution, overridden in the 'tarballs' rule below.
-VERSION= 2022f
-
-# Email address for bug reports.
-BUGEMAIL= tz@iana.org
-
-# DATAFORM selects the data format.
-# Available formats represent essentially the same data, albeit
-# possibly with minor discrepancies that users are not likely to notice.
-# To get new features and the best data right away, use:
-# DATAFORM= vanguard
-# To wait a while before using new features, to give downstream users
-# time to upgrade zic (the default), use:
-# DATAFORM= main
-# To wait even longer for new features, use:
-# DATAFORM= rearguard
-# Rearguard users might also want "ZFLAGS = -b fat"; see below.
-DATAFORM= main
-
-# Change the line below for your timezone (after finding the one you want in
-# one of the $(TDATA) source files, or adding it to a source file).
-# Alternatively, if you discover you've got the wrong timezone, you can just
-# 'zic -l -' to remove it, or 'zic -l rightzone' to change it.
-# Use the command
-# make zonenames
-# to get a list of the values you can use for LOCALTIME.
-
-LOCALTIME= Factory
-
-# The POSIXRULES macro controls interpretation of nonstandard and obsolete
-# POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
-# Such a setting uses the rules in a template file to determine
-# "spring forward" and "fall back" days and times; the environment
-# variable itself specifies UT offsets of standard and daylight saving time.
-#
-# If POSIXRULES is '-', no template is installed; this is the default.
-#
-# Any other value for POSIXRULES is obsolete and should not be relied on, as:
-# * It does not work correctly in popular implementations such as GNU/Linux.
-# * It does not work even in tzcode, except for historical timestamps
-# that precede the last explicit transition in the POSIXRULES file.
-# Hence it typically does not work for current and future timestamps.
-# In short, software should avoid ruleless settings like TZ='EET-2EEST'
-# and so should not depend on the value of POSIXRULES.
-#
-# If, despite the above, you want a template for handling these settings,
-# you can change the line below (after finding the timezone you want in the
-# one of the $(TDATA) source files, or adding it to a source file).
-# Alternatively, if you discover you've got the wrong timezone, you can just
-# 'zic -p -' to remove it, or 'zic -p rightzone' to change it.
-# Use the command
-# make zonenames
-# to get a list of the values you can use for POSIXRULES.
-
-POSIXRULES= -
-
-# Also see TZDEFRULESTRING below, which takes effect only
-# if the time zone files cannot be accessed.
-
-
-# Installation locations.
-#
-# The defaults are suitable for Debian, except that if REDO is
-# posix_right or right_posix then files that Debian puts under
-# /usr/share/zoneinfo/posix and /usr/share/zoneinfo/right are instead
-# put under /usr/share/zoneinfo-posix and /usr/share/zoneinfo-leaps,
-# respectively. Problems with the Debian approach are discussed in
-# the commentary for the right_posix rule (below).
-
-# Destination directory, which can be used for staging.
-# 'make DESTDIR=/stage install' installs under /stage (e.g., to
-# /stage/etc/localtime instead of to /etc/localtime). Files under
-# /stage are not intended to work as-is, but can be copied by hand to
-# the root directory later. If DESTDIR is empty, 'make install' does
-# not stage, but installs directly into production locations.
-DESTDIR =
-
-# Everything is installed into subdirectories of TOPDIR, and used there.
-# TOPDIR should be empty (meaning the root directory),
-# or a directory name that does not end in "/".
-# TOPDIR should be empty or an absolute name unless you're just testing.
-TOPDIR =
-
-# The default local timezone is taken from the file TZDEFAULT.
-TZDEFAULT = $(TOPDIR)/etc/localtime
-
-# The subdirectory containing installed program and data files, and
-# likewise for installed files that can be shared among architectures.
-# These should be relative file names.
-USRDIR = usr
-USRSHAREDIR = $(USRDIR)/share
-
-# "Compiled" timezone information is placed in the "TZDIR" directory
-# (and subdirectories).
-# TZDIR_BASENAME should not contain "/" and should not be ".", ".." or empty.
-TZDIR_BASENAME= zoneinfo
-TZDIR = $(TOPDIR)/$(USRSHAREDIR)/$(TZDIR_BASENAME)
-
-# The "tzselect" and (if you do "make INSTALL") "date" commands go in:
-BINDIR = $(TOPDIR)/$(USRDIR)/bin
-
-# The "zdump" command goes in:
-ZDUMPDIR = $(BINDIR)
-
-# The "zic" command goes in:
-ZICDIR = $(TOPDIR)/$(USRDIR)/sbin
-
-# Manual pages go in subdirectories of. . .
-MANDIR = $(TOPDIR)/$(USRSHAREDIR)/man
-
-# Library functions are put in an archive in LIBDIR.
-LIBDIR = $(TOPDIR)/$(USRDIR)/lib
-
-
-# Types to try, as an alternative to time_t.
-TIME_T_ALTERNATIVES = $(TIME_T_ALTERNATIVES_HEAD) $(TIME_T_ALTERNATIVES_TAIL)
-TIME_T_ALTERNATIVES_HEAD = int_least64_t
-TIME_T_ALTERNATIVES_TAIL = int_least32_t uint_least32_t uint_least64_t
-
-# What kind of TZif data files to generate. (TZif is the binary time
-# zone data format that zic generates; see Internet RFC 8536.)
-# If you want only POSIX time, with time values interpreted as
-# seconds since the epoch (not counting leap seconds), use
-# REDO= posix_only
-# below. If you want only "right" time, with values interpreted
-# as seconds since the epoch (counting leap seconds), use
-# REDO= right_only
-# below. If you want both sets of data available, with leap seconds not
-# counted normally, use
-# REDO= posix_right
-# below. If you want both sets of data available, with leap seconds counted
-# normally, use
-# REDO= right_posix
-# below. POSIX mandates that leap seconds not be counted; for compatibility
-# with it, use "posix_only" or "posix_right". Use POSIX time on systems with
-# leap smearing; this can work better than unsmeared "right" time with
-# applications that are not leap second aware, and is closer to unsmeared
-# "right" time than unsmeared POSIX time is (e.g., 0.5 vs 1.0 s max error).
-
-REDO= posix_right
-
-# Whether to put an "Expires" line in the leapseconds file.
-# Use EXPIRES_LINE=1 to put the line in, 0 to omit it.
-# The EXPIRES_LINE value matters only if REDO's value contains "right".
-# If you change EXPIRES_LINE, remove the leapseconds file before running "make".
-# zic's support for the Expires line was introduced in tzdb 2020a,
-# and was modified in tzdb 2021b to generate version 4 TZif files.
-# EXPIRES_LINE defaults to 0 for now so that the leapseconds file
-# can be given to pre-2020a zic implementations and so that TZif files
-# built by newer zic implementations can be read by pre-2021b libraries.
-EXPIRES_LINE= 0
-
-# To install data in text form that has all the information of the TZif data,
-# (optionally incorporating leap second information), use
-# TZDATA_TEXT= tzdata.zi leapseconds
-# To install text data without leap second information (e.g., because
-# REDO='posix_only'), use
-# TZDATA_TEXT= tzdata.zi
-# To avoid installing text data, use
-# TZDATA_TEXT=
-
-TZDATA_TEXT= leapseconds tzdata.zi
-
-# For backward-compatibility links for old zone names, use
-# BACKWARD= backward
-# To omit these links, use
-# BACKWARD=
-
-BACKWARD= backward
-
-# If you want out-of-scope and often-wrong data from the file 'backzone',
-# but only for entries listed in the backward-compatibility file zone.tab, use
-# PACKRATDATA= backzone
-# PACKRATLIST= zone.tab
-# If you want all the 'backzone' data, use
-# PACKRATDATA= backzone
-# PACKRATLIST=
-# To omit this data, use
-# PACKRATDATA=
-# PACKRATLIST=
-
-PACKRATDATA=
-PACKRATLIST=
-
-# The name of a locale using the UTF-8 encoding, used during self-tests.
-# The tests are skipped if the name does not appear to work on this system.
-
-UTF8_LOCALE= en_US.utf8
-
-# Non-default libraries needed to link.
-LDLIBS=
-
-# Add the following to the end of the "CFLAGS=" line as needed to override
-# defaults specified in the source code. "-DFOO" is equivalent to "-DFOO=1".
-# -DDEPRECATE_TWO_DIGIT_YEARS for optional runtime warnings about strftime
-# formats that generate only the last two digits of year numbers
-# -DEPOCH_LOCAL if the 'time' function returns local time not UT
-# -DEPOCH_OFFSET=N if the 'time' function returns a value N greater
-# than what POSIX specifies, assuming local time is UT.
-# For example, N is 252460800 on AmigaOS.
-# -DHAVE_DECL_ASCTIME_R=0 if <time.h> does not declare asctime_r
-# -DHAVE_DECL_ENVIRON if <unistd.h> declares 'environ'
-# -DHAVE_DIRECT_H if mkdir needs <direct.h> (MS-Windows)
-# -DHAVE_GENERIC=0 if _Generic does not work
-# -DHAVE_GETRANDOM if getgrandom works (e.g., GNU/Linux)*
-# -DHAVE_GETTEXT if 'gettext' works (e.g., GNU/Linux, FreeBSD, Solaris)*
-# -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares
-# ctime_r and asctime_r incompatibly with the POSIX standard
-# (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined).
-# -DHAVE_INTTYPES_H if you have a non-C99 compiler with <inttypes.h>
-# -DHAVE_LINK=0 if your system lacks a link function
-# -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function
-# -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz
-# localtime_rz can make zdump significantly faster, but is nonstandard.
-# -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure.
-# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare
-# functions like 'link' or variables like 'tzname' required by POSIX
-# -DHAVE_SETENV=0 if your system lacks the setenv function
-# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function
-# -DHAVE_STDINT_H if you have a non-C99 compiler with <stdint.h>*
-# -DHAVE_STRFTIME_L if <time.h> declares locale_t and strftime_l
-# -DHAVE_STRDUP=0 if your system lacks the strdup function
-# -DHAVE_STRTOLL=0 if your system lacks the strtoll function
-# -DHAVE_SYMLINK=0 if your system lacks the symlink function
-# -DHAVE_SYS_STAT_H=0 if your compiler lacks a <sys/stat.h>*
-# -DHAVE_TZSET=0 if your system lacks a tzset function
-# -DHAVE_UNISTD_H=0 if your compiler lacks a <unistd.h>*
-# -DHAVE_UTMPX_H=0 if your compiler lacks a <utmpx.h>*
-# -Dlocale_t=XXX if your system uses XXX instead of locale_t
-# -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers
-# with external linkage, e.g., applications cannot define 'localtime'.
-# -Dssize_t=long on hosts like MS-Windows that lack ssize_t
-# -DSUPPRESS_TZDIR to not prepend TZDIR to file names; this has
-# security implications and is not recommended for general use
-# -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires;
-# not needed by the main-program tz code, which is single-threaded.
-# Append other compiler flags as needed, e.g., -pthread on GNU/Linux.
-# -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t
-# This is intended for internal use only; it mangles external names.
-# -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz"
-# -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
-# the default is system-supplied, typically "/usr/lib/locale"
-# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
-# DST transitions if the time zone files cannot be accessed
-# -DUNINIT_TRAP if reading uninitialized storage can cause problems
-# other than simply getting garbage data
-# -DUSE_LTZ=0 to build zdump with the system time zone library
-# Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
-# -DZIC_BLOAT_DEFAULT=\"fat\" to default zic's -b option to "fat", and
-# similarly for "slim". Fat TZif files work around incompatibilities
-# and bugs in some TZif readers, notably older ones that
-# ignore or otherwise mishandle 64-bit data in TZif files;
-# however, fat TZif files may trigger bugs in newer TZif readers.
-# Slim TZif files are more efficient, and are the default.
-# -DZIC_MAX_ABBR_LEN_WO_WARN=3
-# (or some other number) to set the maximum time zone abbreviation length
-# that zic will accept without a warning (the default is 6)
-# $(GCC_DEBUG_FLAGS) if you are using recent GCC and want lots of checking
-#
-# * Options marked "*" can be omitted if your compiler is C23 compatible.
-#
-# Select instrumentation via "make GCC_INSTRUMENT='whatever'".
-GCC_INSTRUMENT = \
- -fsanitize=undefined -fsanitize-address-use-after-scope \
- -fsanitize-undefined-trap-on-error -fstack-protector
-# Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow.
-GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
- $(GCC_INSTRUMENT) \
- -Wall -Wextra \
- -Walloc-size-larger-than=100000 -Warray-bounds=2 \
- -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \
- -Wdeclaration-after-statement -Wdouble-promotion \
- -Wduplicated-branches -Wduplicated-cond \
- -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
- -Winit-self -Wlogical-op \
- -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
- -Wnull-dereference \
- -Wold-style-definition -Woverlength-strings -Wpointer-arith \
- -Wshadow -Wshift-overflow=2 -Wstrict-overflow \
- -Wstrict-prototypes -Wstringop-overflow=4 \
- -Wstringop-truncation -Wsuggest-attribute=cold \
- -Wsuggest-attribute=const -Wsuggest-attribute=format \
- -Wsuggest-attribute=malloc \
- -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
- -Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
- -Wvariadic-macros -Wvla -Wwrite-strings \
- -Wno-address -Wno-format-nonliteral -Wno-sign-compare \
- -Wno-type-limits -Wno-unused-parameter
-#
-# If your system has a "GMT offset" field in its "struct tm"s
-# (or if you decide to add such a field in your system's "time.h" file),
-# add the name to a define such as
-# -DTM_GMTOFF=tm_gmtoff
-# to the end of the "CFLAGS=" line. If not defined, the code attempts to
-# guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
-# Similarly, if your system has a "zone abbreviation" field, define
-# -DTM_ZONE=tm_zone
-# and define NO_TM_ZONE to suppress any guessing. Although these two fields
-# not required by POSIX, a future version of POSIX is planned to require them
-# and they are widely available on GNU/Linux and BSD systems.
-#
-# The next batch of options control support for external variables
-# exported by tzcode. In practice these variables are less useful
-# than TM_GMTOFF and TM_ZONE. However, most of them are standardized.
-# #
-# # To omit or support the external variable "tzname", add one of:
-# # -DHAVE_TZNAME=0 # do not support "tzname"
-# # -DHAVE_TZNAME=1 # support "tzname", which is defined by system library
-# # -DHAVE_TZNAME=2 # support and define "tzname"
-# # to the "CFLAGS=" line. "tzname" is required by POSIX 1988 and later.
-# # If not defined, the code attempts to guess HAVE_TZNAME from other macros.
-# # Warning: unless time_tz is also defined, HAVE_TZNAME=1 can cause
-# # crashes when combined with some platforms' standard libraries,
-# # presumably due to memory allocation issues.
-# #
-# # To omit or support the external variables "timezone" and "daylight", add
-# # -DUSG_COMPAT=0 # do not support
-# # -DUSG_COMPAT=1 # support, and variables are defined by system library
-# # -DUSG_COMPAT=2 # support and define variables
-# # to the "CFLAGS=" line; "timezone" and "daylight" are inspired by
-# # Unix Systems Group code and are required by POSIX 2008 (with XSI) and later.
-# # If not defined, the code attempts to guess USG_COMPAT from other macros.
-# #
-# # To support the external variable "altzone", add
-# # -DALTZONE=0 # do not support
-# # -DALTZONE=1 # support "altzone", which is defined by system library
-# # -DALTZONE=2 # support and define "altzone"
-# # to the end of the "CFLAGS=" line; although "altzone" appeared in
-# # System V Release 3.1 it has not been standardized.
-# # If not defined, the code attempts to guess ALTZONE from other macros.
-#
-# If you want functions that were inspired by early versions of X3J11's work,
-# add
-# -DSTD_INSPIRED
-# to the end of the "CFLAGS=" line. This arranges for the functions
-# "offtime", "timelocal", "timegm", "timeoff",
-# "posix2time", and "time2posix" to be added to the time conversion library.
-# "offtime" is like "gmtime" except that it accepts a second (long) argument
-# that gives an offset to add to the time_t when converting it.
-# "timelocal" is equivalent to "mktime".
-# "timegm" is like "timelocal" except that it turns a struct tm into
-# a time_t using UT (rather than local time as "timelocal" does).
-# "timeoff" is like "timegm" except that it accepts a second (long) argument
-# that gives an offset to use when converting to a time_t.
-# "posix2time" and "time2posix" are described in an included manual page.
-# X3J11's work does not describe any of these functions.
-# These functions may well disappear in future releases of the time
-# conversion package.
-#
-# If you don't want functions that were inspired by NetBSD, add
-# -DNETBSD_INSPIRED=0
-# to the end of the "CFLAGS=" line. Otherwise, the functions
-# "localtime_rz", "mktime_z", "tzalloc", and "tzfree" are added to the
-# time library, and if STD_INSPIRED is also defined the functions
-# "posix2time_z" and "time2posix_z" are added as well.
-# The functions ending in "_z" (or "_rz") are like their unsuffixed
-# (or suffixed-by-"_r") counterparts, except with an extra first
-# argument of opaque type timezone_t that specifies the timezone.
-# "tzalloc" allocates a timezone_t value, and "tzfree" frees it.
-#
-# If you want to allocate state structures in localtime, add
-# -DALL_STATE
-# to the end of the "CFLAGS=" line. Storage is obtained by calling malloc.
-#
-# NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put
-# out by the National Institute of Standards and Technology
-# which claims to test C and Posix conformance. If you want to pass PCTS, add
-# -DPCTS
-# to the end of the "CFLAGS=" line.
-#
-# If you want strict compliance with XPG4 as of 1994-04-09, add
-# -DXPG4_1994_04_09
-# to the end of the "CFLAGS=" line. This causes "strftime" to always return
-# 53 as a week number (rather than 52 or 53) for January days before
-# January's first Monday when a "%V" format is used and January 1
-# falls on a Friday, Saturday, or Sunday.
-
-CFLAGS=
-
-# Linker flags. Default to $(LFLAGS) for backwards compatibility
-# to release 2012h and earlier.
-
-LDFLAGS= $(LFLAGS)
-
-# For leap seconds, this Makefile uses LEAPSECONDS='-L leapseconds' in
-# submake command lines. The default is no leap seconds.
-
-LEAPSECONDS=
-
-# The zic command and its arguments.
-
-zic= ./zic
-ZIC= $(zic) $(ZFLAGS)
-
-# To shrink the size of installed TZif files,
-# append "-r @N" to omit data before N-seconds-after-the-Epoch.
-# To grow the files and work around bugs in older applications,
-# possibly at the expense of introducing bugs in newer ones,
-# append "-b fat"; see ZIC_BLOAT_DEFAULT above.
-# See the zic man page for more about -b and -r.
-ZFLAGS=
-
-# How to use zic to install TZif files.
-
-ZIC_INSTALL= $(ZIC) -d '$(DESTDIR)$(TZDIR)' $(LEAPSECONDS)
-
-# The name of a Posix-compliant 'awk' on your system.
-# mawk 1.3.3 and Solaris 10 /usr/bin/awk do not work.
-# Also, it is better (though not essential) if 'awk' supports UTF-8,
-# and unfortunately mawk and busybox awk do not support UTF-8.
-# Try AWK=gawk or AWK=nawk if your awk has the abovementioned problems.
-AWK= awk
-
-# The full path name of a Posix-compliant shell, preferably one that supports
-# the Korn shell's 'select' statement as an extension.
-# These days, Bash is the most popular.
-# It should be OK to set this to /bin/sh, on platforms where /bin/sh
-# lacks 'select' or doesn't completely conform to Posix, but /bin/bash
-# is typically nicer if it works.
-KSHELL= /bin/bash
-
-# Name of curl <https://curl.haxx.se/>, used for HTML validation.
-CURL= curl
-
-# Name of GNU Privacy Guard <https://gnupg.org/>, used to sign distributions.
-GPG= gpg
-
-# This expensive test requires USE_LTZ.
-# To suppress it, define this macro to be empty.
-CHECK_TIME_T_ALTERNATIVES = check_time_t_alternatives
-
-# SAFE_CHAR is a regular expression that matches a safe character.
-# Some parts of this distribution are limited to safe characters;
-# others can use any UTF-8 character.
-# For now, the safe characters are a safe subset of ASCII.
-# The caller must set the shell variable 'sharp' to the character '#',
-# since Makefile macros cannot contain '#'.
-# TAB_CHAR is a single tab character, in single quotes.
-TAB_CHAR= ' '
-SAFE_CHARSET1= $(TAB_CHAR)' !\"'$$sharp'$$%&'\''()*+,./0123456789:;<=>?@'
-SAFE_CHARSET2= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`'
-SAFE_CHARSET3= 'abcdefghijklmnopqrstuvwxyz{|}~'
-SAFE_CHARSET= $(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3)
-SAFE_CHAR= '[]'$(SAFE_CHARSET)'-]'
-
-# These characters are Latin-1, and so are likely to be displayable
-# even in editors with limited character sets.
-UNUSUAL_OK_LATIN_1 = «°±»½¾×
-# This IPA symbol is represented in Unicode as the composition of
-# U+0075 and U+032F, and U+032F is not considered alphabetic by some
-# grep implementations that do not grok composition.
-UNUSUAL_OK_IPA = u̯
-# Non-ASCII non-letters that OK_CHAR allows, as these characters are
-# useful in commentary.
-UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)$(UNUSUAL_OK_IPA)
-
-# Put this in a bracket expression to match spaces.
-s = [:space:]
-
-# OK_CHAR matches any character allowed in the distributed files.
-# This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and
-# multibyte letters are also allowed so that commentary can contain a
-# few safe symbols and people's names and can quote non-English sources.
-# Other non-letters are limited to ASCII renderings for the
-# convenience of maintainers using XEmacs 21.5.34, which by default
-# mishandles Unicode characters U+0100 and greater.
-OK_CHAR= '[][:alpha:]$(UNUSUAL_OK_CHARSET)'$(SAFE_CHARSET)'-]'
-
-# SAFE_LINE matches a line of safe characters.
-# SAFE_SHARP_LINE is similar, except any OK character can follow '#';
-# this is so that comments can contain non-ASCII characters.
-# OK_LINE matches a line of OK characters.
-SAFE_LINE= '^'$(SAFE_CHAR)'*$$'
-SAFE_SHARP_LINE='^'$(SAFE_CHAR)'*('$$sharp$(OK_CHAR)'*)?$$'
-OK_LINE= '^'$(OK_CHAR)'*$$'
-
-# Flags to give 'tar' when making a distribution.
-# Try to use flags appropriate for GNU tar.
-GNUTARFLAGS= --format=pax --pax-option='delete=atime,delete=ctime' \
- --numeric-owner --owner=0 --group=0 \
- --mode=go+u,go-w --sort=name
-TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \
- then echo $(GNUTARFLAGS); \
- else :; \
- fi`
-
-# Flags to give 'gzip' when making a distribution.
-GZIPFLAGS= -9n
-
-###############################################################################
-
-#MAKE= make
-
-cc= cc
-CC= $(cc) -DTZDIR='"$(TZDIR)"'
-
-AR= ar
-
-# ':' on typical hosts; 'ranlib' on the ancient hosts that still need ranlib.
-RANLIB= :
-
-TZCOBJS= zic.o
-TZDOBJS= zdump.o localtime.o asctime.o strftime.o
-DATEOBJS= date.o localtime.o strftime.o asctime.o
-LIBSRCS= localtime.c asctime.c difftime.c strftime.c
-LIBOBJS= localtime.o asctime.o difftime.o strftime.o
-HEADERS= tzfile.h private.h
-NONLIBSRCS= zic.c zdump.c
-NEWUCBSRCS= date.c
-SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) \
- tzselect.ksh workman.sh
-MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
- tzfile.5 tzselect.8 zic.8 zdump.8
-MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \
- time2posix.3.txt \
- tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \
- date.1.txt
-COMMON= calendars CONTRIBUTING LICENSE Makefile \
- NEWS README SECURITY theory.html version
-WEB_PAGES= tz-art.html tz-how-to.html tz-link.html
-CHECK_WEB_PAGES=check_theory.html check_tz-art.html \
- check_tz-how-to.html check_tz-link.html
-DOCS= $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
-PRIMARY_YDATA= africa antarctica asia australasia \
- europe northamerica southamerica
-YDATA= $(PRIMARY_YDATA) etcetera
-NDATA= factory
-TDATA_TO_CHECK= $(YDATA) $(NDATA) backward
-TDATA= $(YDATA) $(NDATA) $(BACKWARD)
-ZONETABLES= zone1970.tab zone.tab
-TABDATA= iso3166.tab $(TZDATA_TEXT) $(ZONETABLES)
-LEAP_DEPS= leapseconds.awk leap-seconds.list
-TZDATA_ZI_DEPS= ziguard.awk zishrink.awk version $(TDATA) \
- $(PACKRATDATA) $(PACKRATLIST)
-DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA) $(PACKRATLIST)
-DATA= $(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \
- leapseconds $(ZONETABLES)
-AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk \
- ziguard.awk zishrink.awk
-MISC= $(AWK_SCRIPTS)
-TZS_YEAR= 2050
-TZS_CUTOFF_FLAG= -c $(TZS_YEAR)
-TZS= to$(TZS_YEAR).tzs
-TZS_NEW= to$(TZS_YEAR)new.tzs
-TZS_DEPS= $(YDATA) asctime.c localtime.c \
- private.h tzfile.h zdump.c zic.c
-TZDATA_DIST = $(COMMON) $(DATA) $(MISC)
-# EIGHT_YARDS is just a yard short of the whole ENCHILADA.
-EIGHT_YARDS = $(TZDATA_DIST) $(DOCS) $(SOURCES) tzdata.zi
-ENCHILADA = $(EIGHT_YARDS) $(TZS)
-
-# Consult these files when deciding whether to rebuild the 'version' file.
-# This list is not the same as the output of 'git ls-files', since
-# .gitignore is not distributed.
-VERSION_DEPS= \
- calendars CONTRIBUTING LICENSE Makefile NEWS README SECURITY \
- africa antarctica asctime.c asia australasia \
- backward backzone \
- checklinks.awk checktab.awk \
- date.1 date.c difftime.c \
- etcetera europe factory iso3166.tab \
- leap-seconds.list leapseconds.awk localtime.c \
- newctime.3 newstrftime.3 newtzset.3 northamerica \
- private.h southamerica strftime.c theory.html \
- time2posix.3 tz-art.html tz-how-to.html tz-link.html \
- tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
- workman.sh zdump.8 zdump.c zic.8 zic.c \
- ziguard.awk zishrink.awk \
- zone.tab zone1970.tab
-
-# And for the benefit of csh users on systems that assume the user
-# shell should be used to handle commands in Makefiles. . .
-
-SHELL= /bin/sh
-
-all: tzselect zic zdump libtz.a $(TABDATA) \
- vanguard.zi main.zi rearguard.zi
-
-ALL: all date $(ENCHILADA)
-
-install: all $(DATA) $(REDO) $(MANS)
- mkdir -p '$(DESTDIR)$(BINDIR)' \
- '$(DESTDIR)$(ZDUMPDIR)' '$(DESTDIR)$(ZICDIR)' \
- '$(DESTDIR)$(LIBDIR)' \
- '$(DESTDIR)$(MANDIR)/man3' '$(DESTDIR)$(MANDIR)/man5' \
- '$(DESTDIR)$(MANDIR)/man8'
- $(ZIC_INSTALL) -l $(LOCALTIME) \
- `case '$(POSIXRULES)' in ?*) echo '-p';; esac \
- ` $(POSIXRULES) \
- -t '$(DESTDIR)$(TZDEFAULT)'
- cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.'
- cp tzselect '$(DESTDIR)$(BINDIR)/.'
- cp zdump '$(DESTDIR)$(ZDUMPDIR)/.'
- cp zic '$(DESTDIR)$(ZICDIR)/.'
- cp libtz.a '$(DESTDIR)$(LIBDIR)/.'
- $(RANLIB) '$(DESTDIR)$(LIBDIR)/libtz.a'
- cp -f newctime.3 newtzset.3 '$(DESTDIR)$(MANDIR)/man3/.'
- cp -f tzfile.5 '$(DESTDIR)$(MANDIR)/man5/.'
- cp -f tzselect.8 zdump.8 zic.8 '$(DESTDIR)$(MANDIR)/man8/.'
-
-INSTALL: ALL install date.1
- mkdir -p '$(DESTDIR)$(BINDIR)' '$(DESTDIR)$(MANDIR)/man1'
- cp date '$(DESTDIR)$(BINDIR)/.'
- cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.'
-
-# Calculate version number from git, if available.
-# Otherwise, use $(VERSION) unless it is "unknown" and there is already
-# a 'version' file, in which case reuse the existing 'version' contents
-# and append "-dirty" if the contents do not already end in "-dirty".
-version: $(VERSION_DEPS)
- { (type git) >/dev/null 2>&1 && \
- V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \
- --abbrev=7 --dirty` || \
- if test '$(VERSION)' = unknown && V=`cat $@`; then \
- case $$V in *-dirty);; *) V=$$V-dirty;; esac; \
- else \
- V='$(VERSION)'; \
- fi; } && \
- printf '%s\n' "$$V" >$@.out
- mv $@.out $@
-
-# These files can be tailored by setting BACKWARD, PACKRATDATA, PACKRATLIST.
-vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS)
- $(AWK) \
- -v DATAFORM=`expr $@ : '\(.*\).zi'` \
- -v PACKRATDATA='$(PACKRATDATA)' \
- -v PACKRATLIST='$(PACKRATLIST)' \
- -f ziguard.awk \
- $(TDATA) $(PACKRATDATA) >$@.out
- mv $@.out $@
-# This file has a version comment that attempts to capture any tailoring
-# via BACKWARD, DATAFORM, PACKRATDATA, PACKRATLIST, and REDO.
-tzdata.zi: $(DATAFORM).zi version zishrink.awk
- version=`sed 1q version` && \
- LC_ALL=C $(AWK) \
- -v dataform='$(DATAFORM)' \
- -v deps='$(DSTDATA_ZI_DEPS) zishrink.awk' \
- -v redo='$(REDO)' \
- -v version="$$version" \
- -f zishrink.awk \
- $(DATAFORM).zi >$@.out
- mv $@.out $@
-
-version.h: version
- VERSION=`cat version` && printf '%s\n' \
- 'static char const PKGVERSION[]="($(PACKAGE)) ";' \
- "static char const TZVERSION[]=\"$$VERSION\";" \
- 'static char const REPORT_BUGS_TO[]="$(BUGEMAIL)";' \
- >$@.out
- mv $@.out $@
-
-zdump: $(TZDOBJS)
- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZDOBJS) $(LDLIBS)
-
-zic: $(TZCOBJS)
- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS)
-
-leapseconds: $(LEAP_DEPS)
- $(AWK) -v EXPIRES_LINE=$(EXPIRES_LINE) \
- -f leapseconds.awk leap-seconds.list >$@.out
- mv $@.out $@
-
-# Arguments to pass to submakes of install_data.
-# They can be overridden by later submake arguments.
-INSTALLARGS = \
- BACKWARD='$(BACKWARD)' \
- DESTDIR='$(DESTDIR)' \
- LEAPSECONDS='$(LEAPSECONDS)' \
- PACKRATDATA='$(PACKRATDATA)' \
- PACKRATLIST='$(PACKRATLIST)' \
- TZDEFAULT='$(TZDEFAULT)' \
- TZDIR='$(TZDIR)' \
- ZIC='$(ZIC)'
-
-INSTALL_DATA_DEPS = zic leapseconds tzdata.zi
-
-# 'make install_data' installs one set of TZif files.
-install_data: $(INSTALL_DATA_DEPS)
- $(ZIC_INSTALL) tzdata.zi
-
-posix_only: $(INSTALL_DATA_DEPS)
- $(MAKE) $(INSTALLARGS) LEAPSECONDS= install_data
-
-right_only: $(INSTALL_DATA_DEPS)
- $(MAKE) $(INSTALLARGS) LEAPSECONDS='-L leapseconds' \
- install_data
-
-# In earlier versions of this makefile, the other two directories were
-# subdirectories of $(TZDIR). However, this led to configuration errors.
-# For example, with posix_right under the earlier scheme,
-# TZ='right/Australia/Adelaide' got you localtime with leap seconds,
-# but gmtime without leap seconds, which led to problems with applications
-# like sendmail that subtract gmtime from localtime.
-# Therefore, the other two directories are now siblings of $(TZDIR).
-# You must replace all of $(TZDIR) to switch from not using leap seconds
-# to using them, or vice versa.
-right_posix: right_only
- rm -fr '$(DESTDIR)$(TZDIR)-leaps'
- ln -s '$(TZDIR_BASENAME)' '$(DESTDIR)$(TZDIR)-leaps' || \
- $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only
- $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only
-
-posix_right: posix_only
- rm -fr '$(DESTDIR)$(TZDIR)-posix'
- ln -s '$(TZDIR_BASENAME)' '$(DESTDIR)$(TZDIR)-posix' || \
- $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only
- $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only
-
-zones: $(REDO)
-
-# dummy.zd is not a real file; it is mentioned here only so that the
-# top-level 'make' does not have a syntax error.
-ZDS = dummy.zd
-# Rule used only by submakes invoked by the $(TZS_NEW) rule.
-# It is separate so that GNU 'make -j' can run instances in parallel.
-$(ZDS): zdump
- ./zdump -i $(TZS_CUTOFF_FLAG) '$(wd)/'$$(expr $@ : '\(.*\).zd') \
- >$@
-
-TZS_NEW_DEPS = tzdata.zi zdump zic
-$(TZS_NEW): $(TZS_NEW_DEPS)
- rm -fr tzs$(TZS_YEAR).dir
- mkdir tzs$(TZS_YEAR).dir
- $(zic) -d tzs$(TZS_YEAR).dir tzdata.zi
- $(AWK) '/^L/{print "Link\t" $$2 "\t" $$3}' \
- tzdata.zi | LC_ALL=C sort >$@.out
- wd=`pwd` && \
- x=`$(AWK) '/^Z/{print "tzs$(TZS_YEAR).dir/" $$2 ".zd"}' \
- tzdata.zi \
- | LC_ALL=C sort -t . -k 2,2` && \
- set x $$x && \
- shift && \
- ZDS=$$* && \
- $(MAKE) wd="$$wd" TZS_CUTOFF_FLAG="$(TZS_CUTOFF_FLAG)" \
- ZDS="$$ZDS" $$ZDS && \
- sed 's,^TZ=".*\.dir/,TZ=",' $$ZDS >>$@.out
- rm -fr tzs$(TZS_YEAR).dir
- mv $@.out $@
-
-# If $(TZS) exists but 'make check_tzs' fails, a maintainer should inspect the
-# failed output and fix the inconsistency, perhaps by running 'make force_tzs'.
-$(TZS):
- touch $@
-
-force_tzs: $(TZS_NEW)
- cp $(TZS_NEW) $(TZS)
-
-libtz.a: $(LIBOBJS)
- rm -f $@
- $(AR) -rc $@ $(LIBOBJS)
- $(RANLIB) $@
-
-date: $(DATEOBJS)
- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(DATEOBJS) $(LDLIBS)
-
-tzselect: tzselect.ksh version
- VERSION=`cat version` && sed \
- -e 's|#!/bin/bash|#!$(KSHELL)|g' \
- -e 's|AWK=[^}]*|AWK='\''$(AWK)'\''|g' \
- -e 's|\(PKGVERSION\)=.*|\1='\''($(PACKAGE)) '\''|' \
- -e 's|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \
- -e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
- -e 's|\(TZVERSION\)=.*|\1='"$$VERSION"'|' \
- <$@.ksh >$@.out
- chmod +x $@.out
- mv $@.out $@
-
-check: check_character_set check_white_space check_links \
- check_name_lengths check_slashed_abbrs check_sorted \
- check_tables check_web check_ziguard check_zishrink check_tzs
-
-check_character_set: $(ENCHILADA)
- test ! '$(UTF8_LOCALE)' || \
- ! printf 'A\304\200B\n' | \
- LC_ALL='$(UTF8_LOCALE)' grep -q '^A.B$$' >/dev/null 2>&1 || { \
- LC_ALL='$(UTF8_LOCALE)' && export LC_ALL && \
- sharp='#' && \
- ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \
- $(MISC) $(SOURCES) $(WEB_PAGES) \
- CONTRIBUTING LICENSE README SECURITY \
- version tzdata.zi && \
- ! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \
- Makefile && \
- ! grep -Env $(SAFE_SHARP_LINE) $(TDATA_TO_CHECK) backzone \
- leapseconds zone.tab && \
- ! grep -Env $(OK_LINE) $(ENCHILADA); \
- }
- touch $@
-
-check_white_space: $(ENCHILADA)
- patfmt=' \t|[\f\r\v]' && pat=`printf "$$patfmt\\n"` && \
- ! grep -En "$$pat" \
- $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
- ! grep -n '[$s]$$' \
- $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
- touch $@
-
-PRECEDES_FILE_NAME = ^(Zone|Link[$s]+[^$s]+)[$s]+
-FILE_NAME_COMPONENT_TOO_LONG = $(PRECEDES_FILE_NAME)[^$s]*[^/$s]{15}
-
-check_name_lengths: $(TDATA_TO_CHECK) backzone
- ! grep -En '$(FILE_NAME_COMPONENT_TOO_LONG)' \
- $(TDATA_TO_CHECK) backzone
- touch $@
-
-PRECEDES_STDOFF = ^(Zone[$s]+[^$s]+)?[$s]+
-STDOFF = [-+]?[0-9:.]+
-RULELESS_SAVE = (-|$(STDOFF)[sd]?)
-RULELESS_SLASHED_ABBRS = \
- $(PRECEDES_STDOFF)$(STDOFF)[$s]+$(RULELESS_SAVE)[$s]+[^$s]*/
-
-check_slashed_abbrs: $(TDATA_TO_CHECK)
- ! grep -En '$(RULELESS_SLASHED_ABBRS)' $(TDATA_TO_CHECK)
- touch $@
-
-CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
-
-check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
- $(AWK) '/^Link/ {printf "%.5d %s\n", g, $$3} /^$$/ {g++}' \
- backward | LC_ALL=C sort -cu
- $(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
- touch $@
-
-check_links: checklinks.awk $(TDATA_TO_CHECK) tzdata.zi
- $(AWK) \
- -v DATAFORM=$(DATAFORM) \
- -v backcheck=backward \
- -f checklinks.awk $(TDATA_TO_CHECK)
- $(AWK) \
- -v DATAFORM=$(DATAFORM) \
- -f checklinks.awk tzdata.zi
- touch $@
-
-check_tables: checktab.awk $(YDATA) backward $(ZONETABLES)
- for tab in $(ZONETABLES); do \
- test "$$tab" = zone.tab && links='$(BACKWARD)' || links=''; \
- $(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) $$links \
- || exit; \
- done
- touch $@
-
-check_tzs: $(TZS) $(TZS_NEW)
- if test -s $(TZS); then \
- diff -u $(TZS) $(TZS_NEW); \
- else \
- cp $(TZS_NEW) $(TZS); \
- fi
- touch $@
-
-check_web: $(CHECK_WEB_PAGES)
-check_theory.html: theory.html
-check_tz-art.html: tz-art.html
-check_tz-how-to.html: tz-how-to.html
-check_tz-link.html: tz-link.html
-check_theory.html check_tz-art.html check_tz-how-to.html check_tz-link.html:
- $(CURL) -sS --url https://validator.w3.org/nu/ -F out=gnu \
- -F file=@$$(expr $@ : 'check_\(.*\)') -o $@.out && \
- test ! -s $@.out || { cat $@.out; exit 1; }
- mv $@.out $@
-
-check_ziguard: rearguard.zi vanguard.zi ziguard.awk
- $(AWK) -v DATAFORM=rearguard -f ziguard.awk vanguard.zi | \
- diff -u rearguard.zi -
- $(AWK) -v DATAFORM=vanguard -f ziguard.awk rearguard.zi | \
- diff -u vanguard.zi -
- touch $@
-
-# Check that zishrink.awk does not alter the data, and that ziguard.awk
-# preserves main-format data.
-check_zishrink: check_zishrink_posix check_zishrink_right
-check_zishrink_posix check_zishrink_right: \
- zic leapseconds $(PACKRATDATA) $(PACKRATLIST) \
- $(TDATA) $(DATAFORM).zi tzdata.zi
- rm -fr $@.dir $@-t.dir $@-shrunk.dir
- mkdir $@.dir $@-t.dir $@-shrunk.dir
- case $@ in \
- *_right) leap='-L leapseconds';; \
- *) leap=;; \
- esac && \
- $(ZIC) $$leap -d $@.dir $(DATAFORM).zi && \
- $(ZIC) $$leap -d $@-shrunk.dir tzdata.zi && \
- case $(DATAFORM),$(PACKRATLIST) in \
- main,) \
- $(ZIC) $$leap -d $@-t.dir $(TDATA) && \
- $(AWK) '/^Rule/' $(TDATA) | \
- $(ZIC) $$leap -d $@-t.dir - $(PACKRATDATA) && \
- diff -r $@.dir $@-t.dir;; \
- esac
- diff -r $@.dir $@-shrunk.dir
- rm -fr $@.dir $@-t.dir $@-shrunk.dir
- touch $@
-
-clean_misc:
- rm -fr check_*.dir
- rm -f *.o *.out $(TIME_T_ALTERNATIVES) \
- check_* core typecheck_* \
- date tzselect version.h zdump zic libtz.a
-clean: clean_misc
- rm -fr *.dir tzdb-*/
- rm -f *.zi $(TZS_NEW)
-
-maintainer-clean: clean
- @echo 'This command is intended for maintainers to use; it'
- @echo 'deletes files that may need special tools to rebuild.'
- rm -f leapseconds version $(MANTXTS) $(TZS) *.asc *.tar.*
-
-names:
- @echo $(ENCHILADA)
-
-public: check check_public $(CHECK_TIME_T_ALTERNATIVES) \
- tarballs signatures
-
-date.1.txt: date.1
-newctime.3.txt: newctime.3
-newstrftime.3.txt: newstrftime.3
-newtzset.3.txt: newtzset.3
-time2posix.3.txt: time2posix.3
-tzfile.5.txt: tzfile.5
-tzselect.8.txt: tzselect.8
-zdump.8.txt: zdump.8
-zic.8.txt: zic.8
-
-$(MANTXTS): workman.sh
- LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@.out
- mv $@.out $@
-
-# Set file timestamps deterministically if possible,
-# so that tarballs containing the timestamps are reproducible.
-#
-# '$(SET_TIMESTAMP_N) N DEST A B C ...' sets the timestamp of the
-# file DEST to the maximum of the timestamps of the files A B C ...,
-# plus N if GNU ls and touch are available.
-SET_TIMESTAMP_N = sh -c '\
- n=$$0 dest=$$1; shift; \
- touch -cmr `ls -t "$$@" | sed 1q` "$$dest" && \
- if test $$n != 0 && \
- lsout=`ls -n --time-style="+%s" "$$dest" 2>/dev/null`; then \
- set x $$lsout && \
- touch -cmd @`expr $$7 + $$n` "$$dest"; \
- else :; fi'
-# If DEST depends on A B C ... in this Makefile, callers should use
-# $(SET_TIMESTAMP_DEP) DEST A B C ..., for the benefit of any
-# downstream 'make' that considers equal timestamps to be out of date.
-# POSIX allows this 'make' behavior, and HP-UX 'make' does it.
-# If all that matters is that the timestamp be reproducible
-# and plausible, use $(SET_TIMESTAMP).
-SET_TIMESTAMP = $(SET_TIMESTAMP_N) 0
-SET_TIMESTAMP_DEP = $(SET_TIMESTAMP_N) 1
-
-# Set the timestamps to those of the git repository, if available,
-# and if the files have not changed since then.
-# This uses GNU 'ls --time-style=+%s', which outputs the seconds count,
-# and GNU 'touch -d@N FILE', where N is the number of seconds since 1970.
-# If git or GNU is absent, don't bother to sync with git timestamps.
-# Also, set the timestamp of each prebuilt file like 'leapseconds'
-# to be the maximum of the files it depends on.
-set-timestamps.out: $(EIGHT_YARDS)
- rm -f $@
- if (type git) >/dev/null 2>&1 && \
- files=`git ls-files $(EIGHT_YARDS)` && \
- touch -md @1 test.out; then \
- rm -f test.out && \
- for file in $$files; do \
- if git diff --quiet $$file; then \
- time=`git log -1 --format='tformat:%ct' $$file` && \
- touch -cmd @$$time $$file; \
- else \
- echo >&2 "$$file: warning: does not match repository"; \
- fi || exit; \
- done; \
- fi
- $(SET_TIMESTAMP_DEP) leapseconds $(LEAP_DEPS)
- for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \
- $(SET_TIMESTAMP_DEP) $$file.txt $$file workman.sh || \
- exit; \
- done
- $(SET_TIMESTAMP_DEP) version $(VERSION_DEPS)
- $(SET_TIMESTAMP_DEP) tzdata.zi $(TZDATA_ZI_DEPS)
- touch $@
-set-tzs-timestamp.out: $(TZS)
- $(SET_TIMESTAMP_DEP) $(TZS) $(TZS_DEPS)
- touch $@
-
-# The zics below ensure that each data file can stand on its own.
-# We also do an all-files run to catch links to links.
-
-check_public: $(VERSION_DEPS)
- rm -fr public.dir
- mkdir public.dir
- ln $(VERSION_DEPS) public.dir
- cd public.dir && $(MAKE) CFLAGS='$(GCC_DEBUG_FLAGS)' ALL
- for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi \
- public.dir/vanguard.zi public.dir/main.zi \
- public.dir/rearguard.zi; \
- do \
- public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \
- done
- public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK)
- :
- : Also check 'backzone' syntax.
- rm public.dir/main.zi
- cd public.dir && $(MAKE) PACKRATDATA=backzone main.zi
- public.dir/zic -d public.dir/zoneinfo main.zi
- rm public.dir/main.zi
- cd public.dir && \
- $(MAKE) PACKRATDATA=backzone PACKRATLIST=zone.tab main.zi
- public.dir/zic -d public.dir/zoneinfo main.zi
- :
- rm -fr public.dir
- touch $@
-
-# Check that the code works under various alternative
-# implementations of time_t.
-check_time_t_alternatives: $(TIME_T_ALTERNATIVES)
-$(TIME_T_ALTERNATIVES_TAIL): $(TIME_T_ALTERNATIVES_HEAD)
-$(TIME_T_ALTERNATIVES): $(VERSION_DEPS)
- rm -fr $@.dir
- mkdir $@.dir
- ln $(VERSION_DEPS) $@.dir
- case $@ in \
- int*32_t) range=-2147483648,2147483648;; \
- u*) range=0,4294967296;; \
- *) range=-4294967296,4294967296;; \
- esac && \
- wd=`pwd` && \
- zones=`$(AWK) '/^[^#]/ { print $$3 }' <zone1970.tab` && \
- if test $@ = $(TIME_T_ALTERNATIVES_HEAD); then \
- range_target=; \
- else \
- range_target=to$$range.tzs; \
- fi && \
- (cd $@.dir && \
- $(MAKE) TOPDIR="$$wd/$@.dir" \
- CFLAGS='$(CFLAGS) -Dtime_tz='"'$@'" \
- REDO='$(REDO)' \
- D=$$wd/$@.dir \
- TZS_YEAR="$$range" TZS_CUTOFF_FLAG="-t $$range" \
- install $$range_target) && \
- test $@ = $(TIME_T_ALTERNATIVES_HEAD) || { \
- (cd $(TIME_T_ALTERNATIVES_HEAD).dir && \
- $(MAKE) TOPDIR="$$wd/$@.dir" \
- TZS_YEAR="$$range" TZS_CUTOFF_FLAG="-t $$range" \
- D=$$wd/$@.dir \
- to$$range.tzs) && \
- diff -u $(TIME_T_ALTERNATIVES_HEAD).dir/to$$range.tzs \
- $@.dir/to$$range.tzs && \
- if diff -q Makefile Makefile 2>/dev/null; then \
- quiet_option='-q'; \
- else \
- quiet_option=''; \
- fi && \
- diff $$quiet_option -r $(TIME_T_ALTERNATIVES_HEAD).dir/etc \
- $@.dir/etc && \
- diff $$quiet_option -r \
- $(TIME_T_ALTERNATIVES_HEAD).dir/usr/share \
- $@.dir/usr/share; \
- }
- touch $@
-
-TRADITIONAL_ASC = \
- tzcode$(VERSION).tar.gz.asc \
- tzdata$(VERSION).tar.gz.asc
-REARGUARD_ASC = \
- tzdata$(VERSION)-rearguard.tar.gz.asc
-ALL_ASC = $(TRADITIONAL_ASC) $(REARGUARD_ASC) \
- tzdb-$(VERSION).tar.lz.asc
-
-tarballs rearguard_tarballs tailored_tarballs traditional_tarballs \
-signatures rearguard_signatures traditional_signatures: \
- version set-timestamps.out rearguard.zi vanguard.zi
- VERSION=`cat version` && \
- $(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
-
-# These *_version rules are intended for use if VERSION is set by some
-# other means. Ordinarily these rules are used only by the above
-# non-_version rules, which set VERSION on the 'make' command line.
-tarballs_version: traditional_tarballs_version rearguard_tarballs_version \
- tzdb-$(VERSION).tar.lz
-rearguard_tarballs_version: \
- tzdata$(VERSION)-rearguard.tar.gz
-traditional_tarballs_version: \
- tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
-tailored_tarballs_version: \
- tzdata$(VERSION)-tailored.tar.gz
-signatures_version: $(ALL_ASC)
-rearguard_signatures_version: $(REARGUARD_ASC)
-traditional_signatures_version: $(TRADITIONAL_ASC)
-
-tzcode$(VERSION).tar.gz: set-timestamps.out
- LC_ALL=C && export LC_ALL && \
- tar $(TARFLAGS) -cf - \
- $(COMMON) $(DOCS) $(SOURCES) | \
- gzip $(GZIPFLAGS) >$@.out
- mv $@.out $@
-
-tzdata$(VERSION).tar.gz: set-timestamps.out
- LC_ALL=C && export LC_ALL && \
- tar $(TARFLAGS) -cf - $(TZDATA_DIST) | \
- gzip $(GZIPFLAGS) >$@.out
- mv $@.out $@
-
-# Create empty files with a reproducible timestamp.
-CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00
-
-# The obsolescent *rearguard* targets and related macros are present
-# for backwards compatibility with tz releases 2018e through 2022a.
-# They should go away eventually. To build rearguard tarballs you
-# can instead use 'make DATAFORM=rearguard tailored_tarballs'.
-tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
- rm -fr $@.dir
- mkdir $@.dir
- ln $(TZDATA_DIST) $@.dir
- cd $@.dir && rm -f $(TDATA) $(PACKRATDATA) version
- for f in $(TDATA) $(PACKRATDATA); do \
- rearf=$@.dir/$$f; \
- $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
- $(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
- done
- sed '1s/$$/-rearguard/' <version >$@.dir/version
- : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
- $(CREATE_EMPTY) $@.dir/pacificnew
- touch -cmr version $@.dir/version
- LC_ALL=C && export LC_ALL && \
- (cd $@.dir && \
- tar $(TARFLAGS) -cf - \
- $(TZDATA_DIST) pacificnew | \
- gzip $(GZIPFLAGS)) >$@.out
- mv $@.out $@
-
-# Create a tailored tarball suitable for TZUpdater and compatible tools.
-# For example, 'make DATAFORM=vanguard tailored_tarballs' makes a tarball
-# useful for testing whether TZUpdater supports vanguard form.
-# The generated tarball is not byte-for-byte equivalent to a hand-tailored
-# traditional tarball, as data entries are put into 'etcetera' even if they
-# came from some other source file. However, the effect should be the same
-# for ordinary use, which reads all the source files.
-tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out
- rm -fr $@.dir
- mkdir $@.dir
- : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
- cd $@.dir && \
- $(CREATE_EMPTY) $(PRIMARY_YDATA) $(NDATA) backward \
- `test $(DATAFORM) = vanguard || echo pacificnew`
- (grep '^#' tzdata.zi && echo && cat $(DATAFORM).zi) \
- >$@.dir/etcetera
- touch -cmr tzdata.zi $@.dir/etcetera
- sed -n \
- -e '/^# *version *\(.*\)/h' \
- -e '/^# *ddeps */H' \
- -e '$$!d' \
- -e 'g' \
- -e 's/^# *version *//' \
- -e 's/\n# *ddeps */-/' \
- -e 's/ /-/g' \
- -e 'p' \
- <tzdata.zi >$@.dir/version
- touch -cmr version $@.dir/version
- links= && \
- for file in $(TZDATA_DIST); do \
- test -f $@.dir/$$file || links="$$links $$file"; \
- done && \
- ln $$links $@.dir
- LC_ALL=C && export LC_ALL && \
- (cd $@.dir && \
- tar $(TARFLAGS) -cf - * | gzip $(GZIPFLAGS)) >$@.out
- mv $@.out $@
-
-tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out
- rm -fr tzdb-$(VERSION)
- mkdir tzdb-$(VERSION)
- ln $(ENCHILADA) tzdb-$(VERSION)
- $(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/*
- LC_ALL=C && export LC_ALL && \
- tar $(TARFLAGS) -cf - tzdb-$(VERSION) | lzip -9 >$@.out
- mv $@.out $@
-
-tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz
-tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz
-tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz
-tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz
-$(ALL_ASC):
- $(GPG) --armor --detach-sign $?
-
-TYPECHECK_CFLAGS = $(CFLAGS) -DTYPECHECK -D__time_t_defined -D_TIME_T
-typecheck: typecheck_long_long typecheck_unsigned
-typecheck_long_long typecheck_unsigned: $(VERSION_DEPS)
- rm -fr $@.dir
- mkdir $@.dir
- ln $(VERSION_DEPS) $@.dir
- cd $@.dir && \
- case $@ in \
- *_long_long) i="long long";; \
- *_unsigned ) i="unsigned" ;; \
- esac && \
- typecheck_cflags='' && \
- $(MAKE) \
- CFLAGS="$(TYPECHECK_CFLAGS) \"-Dtime_t=$$i\"" \
- TOPDIR="`pwd`" \
- install
- $@.dir/zdump -i -c 1970,1971 Europe/Rome
- touch $@
-
-zonenames: tzdata.zi
- @$(AWK) '/^Z/ { print $$2 } /^L/ { print $$3 }' tzdata.zi
-
-asctime.o: private.h tzfile.h
-date.o: private.h
-difftime.o: private.h
-localtime.o: private.h tzfile.h
-strftime.o: private.h tzfile.h
-zdump.o: version.h
-zic.o: private.h tzfile.h version.h
-
-.PHONY: ALL INSTALL all
-.PHONY: check check_time_t_alternatives
-.PHONY: check_web check_zishrink
-.PHONY: clean clean_misc dummy.zd force_tzs
-.PHONY: install install_data maintainer-clean names
-.PHONY: posix_only posix_right public
-.PHONY: rearguard_signatures rearguard_signatures_version
-.PHONY: rearguard_tarballs rearguard_tarballs_version
-.PHONY: right_only right_posix signatures signatures_version
-.PHONY: tarballs tarballs_version
-.PHONY: traditional_signatures traditional_signatures_version
-.PHONY: traditional_tarballs traditional_tarballs_version
-.PHONY: tailored_tarballs tailored_tarballs_version
-.PHONY: typecheck
-.PHONY: zonenames zones
-.PHONY: $(ZDS)
Index: radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new (nonexistent)
Property changes on: radix-1.9/sources/iana/tz/create-2022f-version-patch/timezone-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/iana/tz/create-2022f-version-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-version-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-version-patch/create.patch.sh (nonexistent)
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-VERSION=2022f
-
-mkdir -p timezone
-tar -C timezone --files-from=file.list -xzvf ../tzcode$VERSION.tar.gz
-mv timezone timezone-orig
-
-cp -rf ./timezone-new ./timezone
-
-diff --unified -Nr timezone-orig timezone > tzcode-$VERSION-version.patch
-
-mv tzcode-$VERSION-version.patch ../patches
-
-rm -rf ./timezone
-rm -rf ./timezone-orig
Property changes on: radix-1.9/sources/iana/tz/create-2022f-version-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/iana/tz/create-2022f-version-patch
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-version-patch (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-version-patch (nonexistent)
Property changes on: radix-1.9/sources/iana/tz/create-2022f-version-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/file.list
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/file.list (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/file.list (nonexistent)
@@ -1,3 +0,0 @@
-private.h
-zdump.c
-zic.c
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/create.patch.sh (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/create.patch.sh (nonexistent)
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-VERSION=2022f
-GLIBC_VERSION=2.36
-
-mkdir -p glibc-$GLIBC_VERSION/timezone
-tar -C glibc-$GLIBC_VERSION/timezone --files-from=file.list -xzvf ../tzcode$VERSION.tar.gz
-mv glibc-$GLIBC_VERSION glibc-$GLIBC_VERSION-orig
-
-cp -rf ./glibc-$GLIBC_VERSION-new ./glibc-$GLIBC_VERSION
-
-diff --unified -Nr glibc-$GLIBC_VERSION-orig glibc-$GLIBC_VERSION > glibc-$GLIBC_VERSION-tzcode-$VERSION.patch
-
-mv glibc-$GLIBC_VERSION-tzcode-$VERSION.patch ../patches
-
-rm -rf ./glibc-$GLIBC_VERSION
-rm -rf ./glibc-$GLIBC_VERSION-orig
Property changes on: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/zdump.c
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/zdump.c (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/zdump.c (nonexistent)
@@ -1,1234 +0,0 @@
-/* Dump time zone data in a textual format. */
-
-/*
-** This file is in the public domain, so clarified as of
-** 2009-05-17 by Arthur David Olson.
-*/
-
-#include "version.h"
-
-#ifndef NETBSD_INSPIRED
-# define NETBSD_INSPIRED 1
-#endif
-
-#include "private.h"
-#include <stdio.h>
-
-#ifndef HAVE_SNPRINTF
-# define HAVE_SNPRINTF (199901 <= __STDC_VERSION__)
-#endif
-
-#ifndef HAVE_LOCALTIME_R
-# define HAVE_LOCALTIME_R 1
-#endif
-
-#ifndef HAVE_LOCALTIME_RZ
-# ifdef TM_ZONE
-# define HAVE_LOCALTIME_RZ (NETBSD_INSPIRED && USE_LTZ)
-# else
-# define HAVE_LOCALTIME_RZ 0
-# endif
-#endif
-
-#ifndef HAVE_TZSET
-# define HAVE_TZSET 1
-#endif
-
-#ifndef ZDUMP_LO_YEAR
-# define ZDUMP_LO_YEAR (-500)
-#endif /* !defined ZDUMP_LO_YEAR */
-
-#ifndef ZDUMP_HI_YEAR
-# define ZDUMP_HI_YEAR 2500
-#endif /* !defined ZDUMP_HI_YEAR */
-
-#define SECSPERNYEAR (SECSPERDAY * DAYSPERNYEAR)
-#define SECSPERLYEAR (SECSPERNYEAR + SECSPERDAY)
-#define SECSPER400YEARS (SECSPERNYEAR * (intmax_t) (300 + 3) \
- + SECSPERLYEAR * (intmax_t) (100 - 3))
-
-/*
-** True if SECSPER400YEARS is known to be representable as an
-** intmax_t. It's OK that SECSPER400YEARS_FITS can in theory be false
-** even if SECSPER400YEARS is representable, because when that happens
-** the code merely runs a bit more slowly, and this slowness doesn't
-** occur on any practical platform.
-*/
-enum { SECSPER400YEARS_FITS = SECSPERLYEAR <= INTMAX_MAX / 400 };
-
-#if HAVE_GETTEXT
-# include <locale.h> /* for setlocale */
-#endif /* HAVE_GETTEXT */
-
-#if ! HAVE_LOCALTIME_RZ
-# undef timezone_t
-# define timezone_t char **
-#endif
-
-#if !HAVE_POSIX_DECLS
-extern int getopt(int argc, char * const argv[],
- const char * options);
-extern char * optarg;
-extern int optind;
-#endif
-
-/* The minimum and maximum finite time values. */
-enum { atime_shift = CHAR_BIT * sizeof(time_t) - 2 };
-static time_t const absolute_min_time =
- ((time_t) -1 < 0
- ? (- ((time_t) ~ (time_t) 0 < 0)
- - (((time_t) 1 << atime_shift) - 1 + ((time_t) 1 << atime_shift)))
- : 0);
-static time_t const absolute_max_time =
- ((time_t) -1 < 0
- ? (((time_t) 1 << atime_shift) - 1 + ((time_t) 1 << atime_shift))
- : -1);
-static int longest;
-static char * progname;
-static bool warned;
-static bool errout;
-
-static char const *abbr(struct tm const *);
-static intmax_t delta(struct tm *, struct tm *) ATTRIBUTE_PURE;
-static void dumptime(struct tm const *);
-static time_t hunt(timezone_t, char *, time_t, time_t, bool);
-static void show(timezone_t, char *, time_t, bool);
-static void showextrema(timezone_t, char *, time_t, struct tm *, time_t);
-static void showtrans(char const *, struct tm const *, time_t, char const *,
- char const *);
-static const char *tformat(void);
-static time_t yeartot(intmax_t) ATTRIBUTE_PURE;
-
-/* Is C an ASCII digit? */
-static bool
-is_digit(char c)
-{
- return '0' <= c && c <= '9';
-}
-
-/* Is A an alphabetic character in the C locale? */
-static bool
-is_alpha(char a)
-{
- switch (a) {
- default:
- return false;
- case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
- case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
- case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
- case 'V': case 'W': case 'X': case 'Y': case 'Z':
- case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
- case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
- case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
- case 'v': case 'w': case 'x': case 'y': case 'z':
- return true;
- }
-}
-
-/* Return A + B, exiting if the result would overflow. */
-static size_t
-sumsize(size_t a, size_t b)
-{
- size_t sum = a + b;
- if (sum < a) {
- fprintf(stderr, _("%s: size overflow\n"), progname);
- exit(EXIT_FAILURE);
- }
- return sum;
-}
-
-/* Return a pointer to a newly allocated buffer of size SIZE, exiting
- on failure. SIZE should be nonzero. */
-static void * ATTRIBUTE_MALLOC
-xmalloc(size_t size)
-{
- void *p = malloc(size);
- if (!p) {
- fprintf(stderr, _("%s: Memory exhausted\n"), progname);
- exit(EXIT_FAILURE);
- }
- return p;
-}
-
-#if ! HAVE_TZSET
-# undef tzset
-# define tzset zdump_tzset
-static void tzset(void) { }
-#endif
-
-/* Assume gmtime_r works if localtime_r does.
- A replacement localtime_r is defined below if needed. */
-#if ! HAVE_LOCALTIME_R
-
-# undef gmtime_r
-# define gmtime_r zdump_gmtime_r
-
-static struct tm *
-gmtime_r(time_t *tp, struct tm *tmp)
-{
- struct tm *r = gmtime(tp);
- if (r) {
- *tmp = *r;
- r = tmp;
- }
- return r;
-}
-
-#endif
-
-/* Platforms with TM_ZONE don't need tzname, so they can use the
- faster localtime_rz or localtime_r if available. */
-
-#if defined TM_ZONE && HAVE_LOCALTIME_RZ
-# define USE_LOCALTIME_RZ true
-#else
-# define USE_LOCALTIME_RZ false
-#endif
-
-#if ! USE_LOCALTIME_RZ
-
-# if !defined TM_ZONE || ! HAVE_LOCALTIME_R || ! HAVE_TZSET
-# undef localtime_r
-# define localtime_r zdump_localtime_r
-static struct tm *
-localtime_r(time_t *tp, struct tm *tmp)
-{
- struct tm *r = localtime(tp);
- if (r) {
- *tmp = *r;
- r = tmp;
- }
- return r;
-}
-# endif
-
-# undef localtime_rz
-# define localtime_rz zdump_localtime_rz
-static struct tm *
-localtime_rz(timezone_t rz, time_t *tp, struct tm *tmp)
-{
- return localtime_r(tp, tmp);
-}
-
-# ifdef TYPECHECK
-# undef mktime_z
-# define mktime_z zdump_mktime_z
-static time_t
-mktime_z(timezone_t tz, struct tm *tmp)
-{
- return mktime(tmp);
-}
-# endif
-
-# undef tzalloc
-# undef tzfree
-# define tzalloc zdump_tzalloc
-# define tzfree zdump_tzfree
-
-static timezone_t
-tzalloc(char const *val)
-{
-# if HAVE_SETENV
- if (setenv("TZ", val, 1) != 0) {
- perror("setenv");
- exit(EXIT_FAILURE);
- }
- tzset();
- return NULL;
-# else
- enum { TZeqlen = 3 };
- static char const TZeq[TZeqlen] = "TZ=";
- static char **fakeenv;
- static size_t fakeenv0size;
- void *freeable = NULL;
- char **env = fakeenv, **initial_environ;
- size_t valsize = strlen(val) + 1;
- if (fakeenv0size < valsize) {
- char **e = environ, **to;
- ptrdiff_t initial_nenvptrs; /* Counting the trailing NULL pointer. */
-
- while (*e++)
- continue;
- initial_nenvptrs = e - environ;
- fakeenv0size = sumsize(valsize, valsize);
- fakeenv0size = max(fakeenv0size, 64);
- freeable = env;
- fakeenv = env =
- xmalloc(sumsize(sumsize(sizeof *environ,
- initial_nenvptrs * sizeof *environ),
- sumsize(TZeqlen, fakeenv0size)));
- to = env + 1;
- for (e = environ; (*to = *e); e++)
- to += strncmp(*e, TZeq, TZeqlen) != 0;
- env[0] = memcpy(to + 1, TZeq, TZeqlen);
- }
- memcpy(env[0] + TZeqlen, val, valsize);
- initial_environ = environ;
- environ = env;
- tzset();
- free(freeable);
- return initial_environ;
-# endif
-}
-
-static void
-tzfree(timezone_t initial_environ)
-{
-# if !HAVE_SETENV
- environ = initial_environ;
- tzset();
-# endif
-}
-#endif /* ! USE_LOCALTIME_RZ */
-
-/* A UT time zone, and its initializer. */
-static timezone_t gmtz;
-static void
-gmtzinit(void)
-{
- if (USE_LOCALTIME_RZ) {
- /* Try "GMT" first to find out whether this is one of the rare
- platforms where time_t counts leap seconds; this works due to
- the "Zone GMT 0 - GMT" line in the "etcetera" file. If "GMT"
- fails, fall back on "GMT0" which might be similar due to the
- "Link GMT GMT0" line in the "backward" file, and which
- should work on all POSIX platforms. The rest of zdump does not
- use the "GMT" abbreviation that comes from this setting, so it
- is OK to use "GMT" here rather than the more-modern "UTC" which
- would not work on platforms that omit the "backward" file. */
- gmtz = tzalloc("GMT");
- if (!gmtz) {
- static char const gmt0[] = "GMT0";
- gmtz = tzalloc(gmt0);
- if (!gmtz) {
- perror(gmt0);
- exit(EXIT_FAILURE);
- }
- }
- }
-}
-
-/* Convert *TP to UT, storing the broken-down time into *TMP.
- Return TMP if successful, NULL otherwise. This is like gmtime_r(TP, TMP),
- except typically faster if USE_LOCALTIME_RZ. */
-static struct tm *
-my_gmtime_r(time_t *tp, struct tm *tmp)
-{
- return USE_LOCALTIME_RZ ? localtime_rz(gmtz, tp, tmp) : gmtime_r(tp, tmp);
-}
-
-#ifndef TYPECHECK
-# define my_localtime_rz localtime_rz
-#else /* !defined TYPECHECK */
-
-static struct tm *
-my_localtime_rz(timezone_t tz, time_t *tp, struct tm *tmp)
-{
- tmp = localtime_rz(tz, tp, tmp);
- if (tmp) {
- struct tm tm;
- register time_t t;
-
- tm = *tmp;
- t = mktime_z(tz, &tm);
- if (t != *tp) {
- fflush(stdout);
- fprintf(stderr, "\n%s: ", progname);
- fprintf(stderr, tformat(), *tp);
- fprintf(stderr, " ->");
- fprintf(stderr, " year=%d", tmp->tm_year);
- fprintf(stderr, " mon=%d", tmp->tm_mon);
- fprintf(stderr, " mday=%d", tmp->tm_mday);
- fprintf(stderr, " hour=%d", tmp->tm_hour);
- fprintf(stderr, " min=%d", tmp->tm_min);
- fprintf(stderr, " sec=%d", tmp->tm_sec);
- fprintf(stderr, " isdst=%d", tmp->tm_isdst);
- fprintf(stderr, " -> ");
- fprintf(stderr, tformat(), t);
- fprintf(stderr, "\n");
- errout = true;
- }
- }
- return tmp;
-}
-#endif /* !defined TYPECHECK */
-
-static void
-abbrok(const char *const abbrp, const char *const zone)
-{
- register const char * cp;
- register const char * wp;
-
- if (warned)
- return;
- cp = abbrp;
- while (is_alpha(*cp) || is_digit(*cp) || *cp == '-' || *cp == '+')
- ++cp;
- if (*cp)
- wp = _("has characters other than ASCII alphanumerics, '-' or '+'");
- else if (cp - abbrp < 3)
- wp = _("has fewer than 3 characters");
- else if (cp - abbrp > 6)
- wp = _("has more than 6 characters");
- else
- return;
- fflush(stdout);
- fprintf(stderr,
- _("%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"),
- progname, zone, abbrp, wp);
- warned = errout = true;
-}
-
-/* Return a time zone abbreviation. If the abbreviation needs to be
- saved, use *BUF (of size *BUFALLOC) to save it, and return the
- abbreviation in the possibly-reallocated *BUF. Otherwise, just
- return the abbreviation. Get the abbreviation from TMP.
- Exit on memory allocation failure. */
-static char const *
-saveabbr(char **buf, size_t *bufalloc, struct tm const *tmp)
-{
- char const *ab = abbr(tmp);
- if (HAVE_LOCALTIME_RZ)
- return ab;
- else {
- size_t ablen = strlen(ab);
- if (*bufalloc <= ablen) {
- free(*buf);
-
- /* Make the new buffer at least twice as long as the old,
- to avoid O(N**2) behavior on repeated calls. */
- *bufalloc = sumsize(*bufalloc, ablen + 1);
-
- *buf = xmalloc(*bufalloc);
- }
- return strcpy(*buf, ab);
- }
-}
-
-static void
-close_file(FILE *stream)
-{
- char const *e = (ferror(stream) ? _("I/O error")
- : fclose(stream) != 0 ? strerror(errno) : NULL);
- if (e) {
- fprintf(stderr, "%s: %s\n", progname, e);
- exit(EXIT_FAILURE);
- }
-}
-
-static void
-usage(FILE * const stream, const int status)
-{
- fprintf(stream,
-_("%s: usage: %s OPTIONS TIMEZONE ...\n"
- "Options include:\n"
- " -c [L,]U Start at year L (default -500), end before year U (default 2500)\n"
- " -t [L,]U Start at time L, end before time U (in seconds since 1970)\n"
- " -i List transitions briefly (format is experimental)\n" \
- " -v List transitions verbosely\n"
- " -V List transitions a bit less verbosely\n"
- " --help Output this help\n"
- " --version Output version info\n"
- "\n"
- "Report bugs to %s.\n"),
- progname, progname, REPORT_BUGS_TO);
- if (status == EXIT_SUCCESS)
- close_file(stream);
- exit(status);
-}
-
-int
-main(int argc, char *argv[])
-{
- /* These are static so that they're initially zero. */
- static char * abbrev;
- static size_t abbrevsize;
-
- register int i;
- register bool vflag;
- register bool Vflag;
- register char * cutarg;
- register char * cuttimes;
- register time_t cutlotime;
- register time_t cuthitime;
- time_t now;
- bool iflag = false;
-
- cutlotime = absolute_min_time;
- cuthitime = absolute_max_time;
-#if HAVE_GETTEXT
- setlocale(LC_ALL, "");
-# ifdef TZ_DOMAINDIR
- bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
-# endif /* defined TEXTDOMAINDIR */
- textdomain(TZ_DOMAIN);
-#endif /* HAVE_GETTEXT */
- progname = argv[0];
- for (i = 1; i < argc; ++i)
- if (strcmp(argv[i], "--version") == 0) {
- printf("zdump %s%s\n", PKGVERSION, TZVERSION);
- return EXIT_SUCCESS;
- } else if (strcmp(argv[i], "--help") == 0) {
- usage(stdout, EXIT_SUCCESS);
- }
- vflag = Vflag = false;
- cutarg = cuttimes = NULL;
- for (;;)
- switch (getopt(argc, argv, "c:it:vV")) {
- case 'c': cutarg = optarg; break;
- case 't': cuttimes = optarg; break;
- case 'i': iflag = true; break;
- case 'v': vflag = true; break;
- case 'V': Vflag = true; break;
- case -1:
- if (! (optind == argc - 1 && strcmp(argv[optind], "=") == 0))
- goto arg_processing_done;
- /* Fall through. */
- default:
- usage(stderr, EXIT_FAILURE);
- }
- arg_processing_done:;
-
- if (iflag | vflag | Vflag) {
- intmax_t lo;
- intmax_t hi;
- char *loend, *hiend;
- register intmax_t cutloyear = ZDUMP_LO_YEAR;
- register intmax_t cuthiyear = ZDUMP_HI_YEAR;
- if (cutarg != NULL) {
- lo = strtoimax(cutarg, &loend, 10);
- if (cutarg != loend && !*loend) {
- hi = lo;
- cuthiyear = hi;
- } else if (cutarg != loend && *loend == ','
- && (hi = strtoimax(loend + 1, &hiend, 10),
- loend + 1 != hiend && !*hiend)) {
- cutloyear = lo;
- cuthiyear = hi;
- } else {
- fprintf(stderr, _("%s: wild -c argument %s\n"),
- progname, cutarg);
- return EXIT_FAILURE;
- }
- }
- if (cutarg != NULL || cuttimes == NULL) {
- cutlotime = yeartot(cutloyear);
- cuthitime = yeartot(cuthiyear);
- }
- if (cuttimes != NULL) {
- lo = strtoimax(cuttimes, &loend, 10);
- if (cuttimes != loend && !*loend) {
- hi = lo;
- if (hi < cuthitime) {
- if (hi < absolute_min_time + 1)
- hi = absolute_min_time + 1;
- cuthitime = hi;
- }
- } else if (cuttimes != loend && *loend == ','
- && (hi = strtoimax(loend + 1, &hiend, 10),
- loend + 1 != hiend && !*hiend)) {
- if (cutlotime < lo) {
- if (absolute_max_time < lo)
- lo = absolute_max_time;
- cutlotime = lo;
- }
- if (hi < cuthitime) {
- if (hi < absolute_min_time + 1)
- hi = absolute_min_time + 1;
- cuthitime = hi;
- }
- } else {
- fprintf(stderr,
- _("%s: wild -t argument %s\n"),
- progname, cuttimes);
- return EXIT_FAILURE;
- }
- }
- }
- gmtzinit();
- if (iflag | vflag | Vflag)
- now = 0;
- else {
- now = time(NULL);
- now |= !now;
- }
- longest = 0;
- for (i = optind; i < argc; i++) {
- size_t arglen = strlen(argv[i]);
- if (longest < arglen)
- longest = min(arglen, INT_MAX);
- }
-
- for (i = optind; i < argc; ++i) {
- timezone_t tz = tzalloc(argv[i]);
- char const *ab = (char const *)0;
- time_t t;
- struct tm tm, newtm;
- bool tm_ok;
- if (!tz) {
- perror(argv[i]);
- return EXIT_FAILURE;
- }
- if (now) {
- show(tz, argv[i], now, false);
- tzfree(tz);
- continue;
- }
- warned = false;
- t = absolute_min_time;
- if (! (iflag | Vflag)) {
- show(tz, argv[i], t, true);
- if (my_localtime_rz(tz, &t, &tm) == NULL
- && t < cutlotime) {
- time_t newt = cutlotime;
- if (my_localtime_rz(tz, &newt, &newtm) != NULL)
- showextrema(tz, argv[i], t, NULL, newt);
- }
- }
- if (t + 1 < cutlotime)
- t = cutlotime - 1;
- tm_ok = my_localtime_rz(tz, &t, &tm) != NULL;
- if (tm_ok) {
- ab = saveabbr(&abbrev, &abbrevsize, &tm);
- if (iflag) {
- showtrans("\nTZ=%f", &tm, t, ab, argv[i]);
- showtrans("-\t-\t%Q", &tm, t, ab, argv[i]);
- }
- } else
- ab = NULL;
- while (t < cuthitime - 1) {
- time_t newt = ((t < absolute_max_time - SECSPERDAY / 2
- && t + SECSPERDAY / 2 < cuthitime - 1)
- ? t + SECSPERDAY / 2
- : cuthitime - 1);
- struct tm *newtmp = localtime_rz(tz, &newt, &newtm);
- bool newtm_ok = newtmp != NULL;
- if (tm_ok != newtm_ok
- || (ab && (delta(&newtm, &tm) != newt - t
- || newtm.tm_isdst != tm.tm_isdst
- || strcmp(abbr(&newtm), ab) != 0))) {
- newt = hunt(tz, argv[i], t, newt, false);
- newtmp = localtime_rz(tz, &newt, &newtm);
- newtm_ok = newtmp != NULL;
- if (iflag)
- showtrans("%Y-%m-%d\t%L\t%Q", newtmp, newt,
- newtm_ok ? abbr(&newtm) : NULL, argv[i]);
- else {
- show(tz, argv[i], newt - 1, true);
- show(tz, argv[i], newt, true);
- }
- }
- t = newt;
- tm_ok = newtm_ok;
- if (newtm_ok) {
- ab = saveabbr(&abbrev, &abbrevsize, &newtm);
- tm = newtm;
- }
- }
- if (! (iflag | Vflag)) {
- time_t newt = absolute_max_time;
- t = cuthitime;
- if (t < newt) {
- struct tm *tmp = my_localtime_rz(tz, &t, &tm);
- if (tmp != NULL
- && my_localtime_rz(tz, &newt, &newtm) == NULL)
- showextrema(tz, argv[i], t, tmp, newt);
- }
- show(tz, argv[i], absolute_max_time, true);
- }
- tzfree(tz);
- }
- close_file(stdout);
- if (errout && (ferror(stderr) || fclose(stderr) != 0))
- return EXIT_FAILURE;
- return EXIT_SUCCESS;
-}
-
-static time_t
-yeartot(intmax_t y)
-{
- register intmax_t myy, seconds, years;
- register time_t t;
-
- myy = EPOCH_YEAR;
- t = 0;
- while (myy < y) {
- if (SECSPER400YEARS_FITS && 400 <= y - myy) {
- intmax_t diff400 = (y - myy) / 400;
- if (INTMAX_MAX / SECSPER400YEARS < diff400)
- return absolute_max_time;
- seconds = diff400 * SECSPER400YEARS;
- years = diff400 * 400;
- } else {
- seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
- years = 1;
- }
- myy += years;
- if (t > absolute_max_time - seconds)
- return absolute_max_time;
- t += seconds;
- }
- while (y < myy) {
- if (SECSPER400YEARS_FITS && y + 400 <= myy && myy < 0) {
- intmax_t diff400 = (myy - y) / 400;
- if (INTMAX_MAX / SECSPER400YEARS < diff400)
- return absolute_min_time;
- seconds = diff400 * SECSPER400YEARS;
- years = diff400 * 400;
- } else {
- seconds = isleap(myy - 1) ? SECSPERLYEAR : SECSPERNYEAR;
- years = 1;
- }
- myy -= years;
- if (t < absolute_min_time + seconds)
- return absolute_min_time;
- t -= seconds;
- }
- return t;
-}
-
-/* Search for a discontinuity in timezone TZ with name NAME, in the
- timestamps ranging from LOT through HIT. LOT and HIT disagree
- about some aspect of timezone. If ONLY_OK, search only for
- definedness changes, i.e., localtime succeeds on one side of the
- transition but fails on the other side. Return the timestamp just
- before the transition from LOT's settings. */
-
-static time_t
-hunt(timezone_t tz, char *name, time_t lot, time_t hit, bool only_ok)
-{
- static char * loab;
- static size_t loabsize;
- struct tm lotm;
- struct tm tm;
-
- /* Convert LOT into a broken-down time here, even though our
- caller already did that. On platforms without TM_ZONE,
- tzname may have been altered since our caller broke down
- LOT, and tzname needs to be changed back. */
- bool lotm_ok = my_localtime_rz(tz, &lot, &lotm) != NULL;
- bool tm_ok;
- char const *ab = lotm_ok ? saveabbr(&loab, &loabsize, &lotm) : NULL;
-
- for ( ; ; ) {
- /* T = average of LOT and HIT, rounding down.
- Avoid overflow, even on oddball C89 platforms
- where / rounds down and TIME_T_MIN == -TIME_T_MAX
- so lot / 2 + hit / 2 might overflow. */
- time_t t = (lot / 2
- - ((lot % 2 + hit % 2) < 0)
- + ((lot % 2 + hit % 2) == 2)
- + hit / 2);
- if (t == lot)
- break;
- tm_ok = my_localtime_rz(tz, &t, &tm) != NULL;
- if (lotm_ok == tm_ok
- && (only_ok
- || (ab && tm.tm_isdst == lotm.tm_isdst
- && delta(&tm, &lotm) == t - lot
- && strcmp(abbr(&tm), ab) == 0))) {
- lot = t;
- if (tm_ok)
- lotm = tm;
- } else hit = t;
- }
- return hit;
-}
-
-/*
-** Thanks to Paul Eggert for logic used in delta_nonneg.
-*/
-
-static intmax_t
-delta_nonneg(struct tm *newp, struct tm *oldp)
-{
- intmax_t oldy = oldp->tm_year;
- int cycles = (newp->tm_year - oldy) / YEARSPERREPEAT;
- intmax_t sec = SECSPERREPEAT, result = cycles * sec;
- int tmy = oldp->tm_year + cycles * YEARSPERREPEAT;
- for ( ; tmy < newp->tm_year; ++tmy)
- result += DAYSPERNYEAR + isleap_sum(tmy, TM_YEAR_BASE);
- result += newp->tm_yday - oldp->tm_yday;
- result *= HOURSPERDAY;
- result += newp->tm_hour - oldp->tm_hour;
- result *= MINSPERHOUR;
- result += newp->tm_min - oldp->tm_min;
- result *= SECSPERMIN;
- result += newp->tm_sec - oldp->tm_sec;
- return result;
-}
-
-static intmax_t
-delta(struct tm *newp, struct tm *oldp)
-{
- return (newp->tm_year < oldp->tm_year
- ? -delta_nonneg(oldp, newp)
- : delta_nonneg(newp, oldp));
-}
-
-#ifndef TM_GMTOFF
-/* Return A->tm_yday, adjusted to compare it fairly to B->tm_yday.
- Assume A and B differ by at most one year. */
-static int
-adjusted_yday(struct tm const *a, struct tm const *b)
-{
- int yday = a->tm_yday;
- if (b->tm_year < a->tm_year)
- yday += 365 + isleap_sum(b->tm_year, TM_YEAR_BASE);
- return yday;
-}
-#endif
-
-/* If A is the broken-down local time and B the broken-down UT for
- the same instant, return A's UT offset in seconds, where positive
- offsets are east of Greenwich. On failure, return LONG_MIN.
-
- If T is nonnull, *T is the timestamp that corresponds to A; call
- my_gmtime_r and use its result instead of B. Otherwise, B is the
- possibly nonnull result of an earlier call to my_gmtime_r. */
-static long
-gmtoff(struct tm const *a, time_t *t, struct tm const *b)
-{
-#ifdef TM_GMTOFF
- return a->TM_GMTOFF;
-#else
- struct tm tm;
- if (t)
- b = my_gmtime_r(t, &tm);
- if (! b)
- return LONG_MIN;
- else {
- int ayday = adjusted_yday(a, b);
- int byday = adjusted_yday(b, a);
- int days = ayday - byday;
- long hours = a->tm_hour - b->tm_hour + 24 * days;
- long minutes = a->tm_min - b->tm_min + 60 * hours;
- long seconds = a->tm_sec - b->tm_sec + 60 * minutes;
- return seconds;
- }
-#endif
-}
-
-static void
-show(timezone_t tz, char *zone, time_t t, bool v)
-{
- register struct tm * tmp;
- register struct tm * gmtmp;
- struct tm tm, gmtm;
-
- printf("%-*s ", longest, zone);
- if (v) {
- gmtmp = my_gmtime_r(&t, &gmtm);
- if (gmtmp == NULL) {
- printf(tformat(), t);
- printf(_(" (gmtime failed)"));
- } else {
- dumptime(gmtmp);
- printf(" UT");
- }
- printf(" = ");
- }
- tmp = my_localtime_rz(tz, &t, &tm);
- if (tmp == NULL) {
- printf(tformat(), t);
- printf(_(" (localtime failed)"));
- } else {
- dumptime(tmp);
- if (*abbr(tmp) != '\0')
- printf(" %s", abbr(tmp));
- if (v) {
- long off = gmtoff(tmp, NULL, gmtmp);
- printf(" isdst=%d", tmp->tm_isdst);
- if (off != LONG_MIN)
- printf(" gmtoff=%ld", off);
- }
- }
- printf("\n");
- if (tmp != NULL && *abbr(tmp) != '\0')
- abbrok(abbr(tmp), zone);
-}
-
-/* Show timestamps just before and just after a transition between
- defined and undefined (or vice versa) in either localtime or
- gmtime. These transitions are for timezone TZ with name ZONE, in
- the range from LO (with broken-down time LOTMP if that is nonnull)
- through HI. LO and HI disagree on definedness. */
-
-static void
-showextrema(timezone_t tz, char *zone, time_t lo, struct tm *lotmp, time_t hi)
-{
- struct tm localtm[2], gmtm[2];
- time_t t, boundary = hunt(tz, zone, lo, hi, true);
- bool old = false;
- hi = (SECSPERDAY < hi - boundary
- ? boundary + SECSPERDAY
- : hi + (hi < TIME_T_MAX));
- if (SECSPERDAY < boundary - lo) {
- lo = boundary - SECSPERDAY;
- lotmp = my_localtime_rz(tz, &lo, &localtm[old]);
- }
- if (lotmp)
- localtm[old] = *lotmp;
- else
- localtm[old].tm_sec = -1;
- if (! my_gmtime_r(&lo, &gmtm[old]))
- gmtm[old].tm_sec = -1;
-
- /* Search sequentially for definedness transitions. Although this
- could be sped up by refining 'hunt' to search for either
- localtime or gmtime definedness transitions, it hardly seems
- worth the trouble. */
- for (t = lo + 1; t < hi; t++) {
- bool new = !old;
- if (! my_localtime_rz(tz, &t, &localtm[new]))
- localtm[new].tm_sec = -1;
- if (! my_gmtime_r(&t, &gmtm[new]))
- gmtm[new].tm_sec = -1;
- if (((localtm[old].tm_sec < 0) != (localtm[new].tm_sec < 0))
- | ((gmtm[old].tm_sec < 0) != (gmtm[new].tm_sec < 0))) {
- show(tz, zone, t - 1, true);
- show(tz, zone, t, true);
- }
- old = new;
- }
-}
-
-#if HAVE_SNPRINTF
-# define my_snprintf snprintf
-#else
-# include <stdarg.h>
-
-/* A substitute for snprintf that is good enough for zdump. */
-static int ATTRIBUTE_FORMAT((printf, 3, 4))
-my_snprintf(char *s, size_t size, char const *format, ...)
-{
- int n;
- va_list args;
- char const *arg;
- size_t arglen, slen;
- char buf[1024];
- va_start(args, format);
- if (strcmp(format, "%s") == 0) {
- arg = va_arg(args, char const *);
- arglen = strlen(arg);
- } else {
- n = vsprintf(buf, format, args);
- if (n < 0) {
- va_end(args);
- return n;
- }
- arg = buf;
- arglen = n;
- }
- slen = arglen < size ? arglen : size - 1;
- memcpy(s, arg, slen);
- s[slen] = '\0';
- n = arglen <= INT_MAX ? arglen : -1;
- va_end(args);
- return n;
-}
-#endif
-
-/* Store into BUF, of size SIZE, a formatted local time taken from *TM.
- Use ISO 8601 format +HH:MM:SS. Omit :SS if SS is zero, and omit
- :MM too if MM is also zero.
-
- Return the length of the resulting string. If the string does not
- fit, return the length that the string would have been if it had
- fit; do not overrun the output buffer. */
-static int
-format_local_time(char *buf, size_t size, struct tm const *tm)
-{
- int ss = tm->tm_sec, mm = tm->tm_min, hh = tm->tm_hour;
- return (ss
- ? my_snprintf(buf, size, "%02d:%02d:%02d", hh, mm, ss)
- : mm
- ? my_snprintf(buf, size, "%02d:%02d", hh, mm)
- : my_snprintf(buf, size, "%02d", hh));
-}
-
-/* Store into BUF, of size SIZE, a formatted UT offset for the
- localtime *TM corresponding to time T. Use ISO 8601 format
- +HHMMSS, or -HHMMSS for timestamps west of Greenwich; use the
- format -00 for unknown UT offsets. If the hour needs more than
- two digits to represent, extend the length of HH as needed.
- Otherwise, omit SS if SS is zero, and omit MM too if MM is also
- zero.
-
- Return the length of the resulting string, or -1 if the result is
- not representable as a string. If the string does not fit, return
- the length that the string would have been if it had fit; do not
- overrun the output buffer. */
-static int
-format_utc_offset(char *buf, size_t size, struct tm const *tm, time_t t)
-{
- long off = gmtoff(tm, &t, NULL);
- char sign = ((off < 0
- || (off == 0
- && (*abbr(tm) == '-' || strcmp(abbr(tm), "zzz") == 0)))
- ? '-' : '+');
- long hh;
- int mm, ss;
- if (off < 0)
- {
- if (off == LONG_MIN)
- return -1;
- off = -off;
- }
- ss = off % 60;
- mm = off / 60 % 60;
- hh = off / 60 / 60;
- return (ss || 100 <= hh
- ? my_snprintf(buf, size, "%c%02ld%02d%02d", sign, hh, mm, ss)
- : mm
- ? my_snprintf(buf, size, "%c%02ld%02d", sign, hh, mm)
- : my_snprintf(buf, size, "%c%02ld", sign, hh));
-}
-
-/* Store into BUF (of size SIZE) a quoted string representation of P.
- If the representation's length is less than SIZE, return the
- length; the representation is not null terminated. Otherwise
- return SIZE, to indicate that BUF is too small. */
-static size_t
-format_quoted_string(char *buf, size_t size, char const *p)
-{
- char *b = buf;
- size_t s = size;
- if (!s)
- return size;
- *b++ = '"', s--;
- for (;;) {
- char c = *p++;
- if (s <= 1)
- return size;
- switch (c) {
- default: *b++ = c, s--; continue;
- case '\0': *b++ = '"', s--; return size - s;
- case '"': case '\\': break;
- case ' ': c = 's'; break;
- case '\f': c = 'f'; break;
- case '\n': c = 'n'; break;
- case '\r': c = 'r'; break;
- case '\t': c = 't'; break;
- case '\v': c = 'v'; break;
- }
- *b++ = '\\', *b++ = c, s -= 2;
- }
-}
-
-/* Store into BUF (of size SIZE) a timestamp formatted by TIME_FMT.
- TM is the broken-down time, T the seconds count, AB the time zone
- abbreviation, and ZONE_NAME the zone name. Return true if
- successful, false if the output would require more than SIZE bytes.
- TIME_FMT uses the same format that strftime uses, with these
- additions:
-
- %f zone name
- %L local time as per format_local_time
- %Q like "U\t%Z\tD" where U is the UT offset as for format_utc_offset
- and D is the isdst flag; except omit D if it is zero, omit %Z if
- it equals U, quote and escape %Z if it contains nonalphabetics,
- and omit any trailing tabs. */
-
-static bool
-istrftime(char *buf, size_t size, char const *time_fmt,
- struct tm const *tm, time_t t, char const *ab, char const *zone_name)
-{
- char *b = buf;
- size_t s = size;
- char const *f = time_fmt, *p;
-
- for (p = f; ; p++)
- if (*p == '%' && p[1] == '%')
- p++;
- else if (!*p
- || (*p == '%'
- && (p[1] == 'f' || p[1] == 'L' || p[1] == 'Q'))) {
- size_t formatted_len;
- size_t f_prefix_len = p - f;
- size_t f_prefix_copy_size = p - f + 2;
- char fbuf[100];
- bool oversized = sizeof fbuf <= f_prefix_copy_size;
- char *f_prefix_copy = oversized ? xmalloc(f_prefix_copy_size) : fbuf;
- memcpy(f_prefix_copy, f, f_prefix_len);
- strcpy(f_prefix_copy + f_prefix_len, "X");
- formatted_len = strftime(b, s, f_prefix_copy, tm);
- if (oversized)
- free(f_prefix_copy);
- if (formatted_len == 0)
- return false;
- formatted_len--;
- b += formatted_len, s -= formatted_len;
- if (!*p++)
- break;
- switch (*p) {
- case 'f':
- formatted_len = format_quoted_string(b, s, zone_name);
- break;
- case 'L':
- formatted_len = format_local_time(b, s, tm);
- break;
- case 'Q':
- {
- bool show_abbr;
- int offlen = format_utc_offset(b, s, tm, t);
- if (! (0 <= offlen && offlen < s))
- return false;
- show_abbr = strcmp(b, ab) != 0;
- b += offlen, s -= offlen;
- if (show_abbr) {
- char const *abp;
- size_t len;
- if (s <= 1)
- return false;
- *b++ = '\t', s--;
- for (abp = ab; is_alpha(*abp); abp++)
- continue;
- len = (!*abp && *ab
- ? my_snprintf(b, s, "%s", ab)
- : format_quoted_string(b, s, ab));
- if (s <= len)
- return false;
- b += len, s -= len;
- }
- formatted_len
- = (tm->tm_isdst
- ? my_snprintf(b, s, &"\t\t%d"[show_abbr], tm->tm_isdst)
- : 0);
- }
- break;
- }
- if (s <= formatted_len)
- return false;
- b += formatted_len, s -= formatted_len;
- f = p + 1;
- }
- *b = '\0';
- return true;
-}
-
-/* Show a time transition. */
-static void
-showtrans(char const *time_fmt, struct tm const *tm, time_t t, char const *ab,
- char const *zone_name)
-{
- if (!tm) {
- printf(tformat(), t);
- putchar('\n');
- } else {
- char stackbuf[1000];
- size_t size = sizeof stackbuf;
- char *buf = stackbuf;
- char *bufalloc = NULL;
- while (! istrftime(buf, size, time_fmt, tm, t, ab, zone_name)) {
- size = sumsize(size, size);
- free(bufalloc);
- buf = bufalloc = xmalloc(size);
- }
- puts(buf);
- free(bufalloc);
- }
-}
-
-static char const *
-abbr(struct tm const *tmp)
-{
-#ifdef TM_ZONE
- return tmp->TM_ZONE;
-#else
-# if HAVE_TZNAME
- if (0 <= tmp->tm_isdst && tzname[0 < tmp->tm_isdst])
- return tzname[0 < tmp->tm_isdst];
-# endif
- return "";
-#endif
-}
-
-/*
-** The code below can fail on certain theoretical systems;
-** it works on all known real-world systems as of 2022-01-25.
-*/
-
-static const char *
-tformat(void)
-{
-#if HAVE_GENERIC
- /* C11-style _Generic is more likely to return the correct
- format when distinct types have the same size. */
- char const *fmt =
- _Generic(+ (time_t) 0,
- int: "%d", long: "%ld", long long: "%lld",
- unsigned: "%u", unsigned long: "%lu",
- unsigned long long: "%llu",
- default: NULL);
- if (fmt)
- return fmt;
- fmt = _Generic((time_t) 0,
- intmax_t: "%"PRIdMAX, uintmax_t: "%"PRIuMAX,
- default: NULL);
- if (fmt)
- return fmt;
-#endif
- if (0 > (time_t) -1) { /* signed */
- if (sizeof(time_t) == sizeof(intmax_t))
- return "%"PRIdMAX;
- if (sizeof(time_t) > sizeof(long))
- return "%lld";
- if (sizeof(time_t) > sizeof(int))
- return "%ld";
- return "%d";
- }
-#ifdef PRIuMAX
- if (sizeof(time_t) == sizeof(uintmax_t))
- return "%"PRIuMAX;
-#endif
- if (sizeof(time_t) > sizeof(unsigned long))
- return "%llu";
- if (sizeof(time_t) > sizeof(unsigned int))
- return "%lu";
- return "%u";
-}
-
-static void
-dumptime(register const struct tm *timeptr)
-{
- static const char wday_name[][4] = {
- "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
- };
- static const char mon_name[][4] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
- };
- register int lead;
- register int trail;
- int DIVISOR = 10;
-
- /*
- ** The packaged localtime_rz and gmtime_r never put out-of-range
- ** values in tm_wday or tm_mon, but since this code might be compiled
- ** with other (perhaps experimental) versions, paranoia is in order.
- */
- printf("%s %s%3d %.2d:%.2d:%.2d ",
- ((0 <= timeptr->tm_wday
- && timeptr->tm_wday < sizeof wday_name / sizeof wday_name[0])
- ? wday_name[timeptr->tm_wday] : "???"),
- ((0 <= timeptr->tm_mon
- && timeptr->tm_mon < sizeof mon_name / sizeof mon_name[0])
- ? mon_name[timeptr->tm_mon] : "???"),
- timeptr->tm_mday, timeptr->tm_hour,
- timeptr->tm_min, timeptr->tm_sec);
- trail = timeptr->tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR;
- lead = timeptr->tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR +
- trail / DIVISOR;
- trail %= DIVISOR;
- if (trail < 0 && lead > 0) {
- trail += DIVISOR;
- --lead;
- } else if (lead < 0 && trail > 0) {
- trail -= DIVISOR;
- ++lead;
- }
- if (lead == 0)
- printf("%d", trail);
- else printf("%d%d", lead, ((trail < 0) ? -trail : trail));
-}
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/zic.c
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/zic.c (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/zic.c (nonexistent)
@@ -1,3881 +0,0 @@
-/* Compile .zi time zone data into TZif binary files. */
-
-/*
-** This file is in the public domain, so clarified as of
-** 2006-07-17 by Arthur David Olson.
-*/
-
-/* Use the system 'time' function, instead of any private replacement.
- This avoids creating an unnecessary dependency on localtime.c. */
-#undef EPOCH_LOCAL
-#undef EPOCH_OFFSET
-#undef RESERVE_STD_EXT_IDS
-#undef time_tz
-
-#include "version.h"
-#include "private.h"
-#include "tzfile.h"
-
-#include <fcntl.h>
-#include <locale.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdio.h>
-
-typedef int_fast64_t zic_t;
-static zic_t const
- ZIC_MIN = INT_FAST64_MIN,
- ZIC_MAX = INT_FAST64_MAX,
- ZIC32_MIN = -1 - (zic_t) 0x7fffffff,
- ZIC32_MAX = 0x7fffffff;
-#define SCNdZIC SCNdFAST64
-
-#ifndef ZIC_MAX_ABBR_LEN_WO_WARN
-# define ZIC_MAX_ABBR_LEN_WO_WARN 6
-#endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */
-
-#ifdef HAVE_DIRECT_H
-# include <direct.h>
-# include <io.h>
-# undef mkdir
-# define mkdir(name, mode) _mkdir(name)
-#endif
-
-#if HAVE_GETRANDOM
-# include <sys/random.h>
-#endif
-
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef S_IRUSR
-# define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
-#else
-# define MKDIR_UMASK 0755
-#endif
-
-/* The maximum ptrdiff_t value, for pre-C99 platforms. */
-#ifndef PTRDIFF_MAX
-static ptrdiff_t const PTRDIFF_MAX = MAXVAL(ptrdiff_t, TYPE_BIT(ptrdiff_t));
-#endif
-
-/* The minimum alignment of a type, for pre-C23 platforms. */
-#if __STDC_VERSION__ < 201112
-# define alignof(type) offsetof(struct { char a; type b; }, b)
-#elif __STDC_VERSION__ < 202311
-# include <stdalign.h>
-#endif
-
-/* The maximum length of a text line, including the trailing newline. */
-#ifndef _POSIX2_LINE_MAX
-# define _POSIX2_LINE_MAX 2048
-#endif
-
-/* The type for line numbers. Use PRIdMAX to format them; formerly
- there was also "#define PRIdLINENO PRIdMAX" and formats used
- PRIdLINENO, but xgettext cannot grok that. */
-typedef intmax_t lineno;
-
-struct rule {
- int r_filenum;
- lineno r_linenum;
- const char * r_name;
-
- zic_t r_loyear; /* for example, 1986 */
- zic_t r_hiyear; /* for example, 1986 */
- bool r_lowasnum;
- bool r_hiwasnum;
-
- int r_month; /* 0..11 */
-
- int r_dycode; /* see below */
- int r_dayofmonth;
- int r_wday;
-
- zic_t r_tod; /* time from midnight */
- bool r_todisstd; /* is r_tod standard time? */
- bool r_todisut; /* is r_tod UT? */
- bool r_isdst; /* is this daylight saving time? */
- zic_t r_save; /* offset from standard time */
- const char * r_abbrvar; /* variable part of abbreviation */
-
- bool r_todo; /* a rule to do (used in outzone) */
- zic_t r_temp; /* used in outzone */
-};
-
-/*
-** r_dycode r_dayofmonth r_wday
-*/
-enum {
- DC_DOM, /* 1..31 */ /* unused */
- DC_DOWGEQ, /* 1..31 */ /* 0..6 (Sun..Sat) */
- DC_DOWLEQ /* 1..31 */ /* 0..6 (Sun..Sat) */
-};
-
-struct zone {
- int z_filenum;
- lineno z_linenum;
-
- const char * z_name;
- zic_t z_stdoff;
- char * z_rule;
- const char * z_format;
- char z_format_specifier;
-
- bool z_isdst;
- zic_t z_save;
-
- struct rule * z_rules;
- ptrdiff_t z_nrules;
-
- struct rule z_untilrule;
- zic_t z_untiltime;
-};
-
-#if !HAVE_POSIX_DECLS
-extern int getopt(int argc, char * const argv[],
- const char * options);
-extern int link(const char * target, const char * linkname);
-extern char * optarg;
-extern int optind;
-#endif
-
-#if ! HAVE_SYMLINK
-static ssize_t
-readlink(char const *restrict file, char *restrict buf, size_t size)
-{
- errno = ENOTSUP;
- return -1;
-}
-static int
-symlink(char const *target, char const *linkname)
-{
- errno = ENOTSUP;
- return -1;
-}
-#endif
-#ifndef AT_SYMLINK_FOLLOW
-# if HAVE_LINK
-# define linkat(targetdir, target, linknamedir, linkname, flag) \
- (itssymlink(target) ? (errno = ENOTSUP, -1) : link(target, linkname))
-# else
-# define linkat(targetdir, target, linknamedir, linkname, flag) \
- (errno = ENOTSUP, -1)
-# endif
-#endif
-
-static void addtt(zic_t starttime, int type);
-static int addtype(zic_t, char const *, bool, bool, bool);
-static void leapadd(zic_t, int, int);
-static void adjleap(void);
-static void associate(void);
-static void dolink(const char *, const char *, bool);
-static int getfields(char *, char **, int);
-static zic_t gethms(const char * string, const char * errstring);
-static zic_t getsave(char *, bool *);
-static void inexpires(char **, int);
-static void infile(int, char const *);
-static void inleap(char ** fields, int nfields);
-static void inlink(char ** fields, int nfields);
-static void inrule(char ** fields, int nfields);
-static bool inzcont(char ** fields, int nfields);
-static bool inzone(char ** fields, int nfields);
-static bool inzsub(char **, int, bool);
-static bool itssymlink(char const *);
-static bool is_alpha(char a);
-static char lowerit(char);
-static void mkdirs(char const *, bool);
-static void newabbr(const char * abbr);
-static zic_t oadd(zic_t t1, zic_t t2);
-static void outzone(const struct zone * zp, ptrdiff_t ntzones);
-static zic_t rpytime(const struct rule * rp, zic_t wantedy);
-static bool rulesub(struct rule * rp,
- const char * loyearp, const char * hiyearp,
- const char * typep, const char * monthp,
- const char * dayp, const char * timep);
-static zic_t tadd(zic_t t1, zic_t t2);
-
-/* Bound on length of what %z can expand to. */
-enum { PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1 };
-
-static int charcnt;
-static bool errors;
-static bool warnings;
-static int filenum;
-static int leapcnt;
-static bool leapseen;
-static zic_t leapminyear;
-static zic_t leapmaxyear;
-static lineno linenum;
-static int max_abbrvar_len = PERCENT_Z_LEN_BOUND;
-static int max_format_len;
-static zic_t max_year;
-static zic_t min_year;
-static bool noise;
-static int rfilenum;
-static lineno rlinenum;
-static const char * progname;
-static char const * leapsec;
-static char *const * main_argv;
-static ptrdiff_t timecnt;
-static ptrdiff_t timecnt_alloc;
-static int typecnt;
-static int unspecifiedtype;
-
-/*
-** Line codes.
-*/
-
-enum {
- LC_RULE,
- LC_ZONE,
- LC_LINK,
- LC_LEAP,
- LC_EXPIRES
-};
-
-/*
-** Which fields are which on a Zone line.
-*/
-
-enum {
- ZF_NAME = 1,
- ZF_STDOFF,
- ZF_RULE,
- ZF_FORMAT,
- ZF_TILYEAR,
- ZF_TILMONTH,
- ZF_TILDAY,
- ZF_TILTIME,
- ZONE_MAXFIELDS,
- ZONE_MINFIELDS = ZF_TILYEAR
-};
-
-/*
-** Which fields are which on a Zone continuation line.
-*/
-
-enum {
- ZFC_STDOFF,
- ZFC_RULE,
- ZFC_FORMAT,
- ZFC_TILYEAR,
- ZFC_TILMONTH,
- ZFC_TILDAY,
- ZFC_TILTIME,
- ZONEC_MAXFIELDS,
- ZONEC_MINFIELDS = ZFC_TILYEAR
-};
-
-/*
-** Which files are which on a Rule line.
-*/
-
-enum {
- RF_NAME = 1,
- RF_LOYEAR,
- RF_HIYEAR,
- RF_COMMAND,
- RF_MONTH,
- RF_DAY,
- RF_TOD,
- RF_SAVE,
- RF_ABBRVAR,
- RULE_FIELDS
-};
-
-/*
-** Which fields are which on a Link line.
-*/
-
-enum {
- LF_TARGET = 1,
- LF_LINKNAME,
- LINK_FIELDS
-};
-
-/*
-** Which fields are which on a Leap line.
-*/
-
-enum {
- LP_YEAR = 1,
- LP_MONTH,
- LP_DAY,
- LP_TIME,
- LP_CORR,
- LP_ROLL,
- LEAP_FIELDS,
-
- /* Expires lines are like Leap lines, except without CORR and ROLL fields. */
- EXPIRES_FIELDS = LP_TIME + 1
-};
-
-/* The maximum number of fields on any of the above lines.
- (The "+"s pacify gcc -Wenum-compare.) */
-enum {
- MAX_FIELDS = max(max(+RULE_FIELDS, +LINK_FIELDS),
- max(+LEAP_FIELDS, +EXPIRES_FIELDS))
-};
-
-/*
-** Year synonyms.
-*/
-
-enum {
- YR_MINIMUM,
- YR_MAXIMUM,
- YR_ONLY
-};
-
-static struct rule * rules;
-static ptrdiff_t nrules; /* number of rules */
-static ptrdiff_t nrules_alloc;
-
-static struct zone * zones;
-static ptrdiff_t nzones; /* number of zones */
-static ptrdiff_t nzones_alloc;
-
-struct link {
- int l_filenum;
- lineno l_linenum;
- const char * l_target;
- const char * l_linkname;
-};
-
-static struct link * links;
-static ptrdiff_t nlinks;
-static ptrdiff_t nlinks_alloc;
-
-struct lookup {
- const char * l_word;
- const int l_value;
-};
-
-static struct lookup const * byword(const char * string,
- const struct lookup * lp);
-
-static struct lookup const zi_line_codes[] = {
- { "Rule", LC_RULE },
- { "Zone", LC_ZONE },
- { "Link", LC_LINK },
- { NULL, 0 }
-};
-static struct lookup const leap_line_codes[] = {
- { "Leap", LC_LEAP },
- { "Expires", LC_EXPIRES },
- { NULL, 0}
-};
-
-static struct lookup const mon_names[] = {
- { "January", TM_JANUARY },
- { "February", TM_FEBRUARY },
- { "March", TM_MARCH },
- { "April", TM_APRIL },
- { "May", TM_MAY },
- { "June", TM_JUNE },
- { "July", TM_JULY },
- { "August", TM_AUGUST },
- { "September", TM_SEPTEMBER },
- { "October", TM_OCTOBER },
- { "November", TM_NOVEMBER },
- { "December", TM_DECEMBER },
- { NULL, 0 }
-};
-
-static struct lookup const wday_names[] = {
- { "Sunday", TM_SUNDAY },
- { "Monday", TM_MONDAY },
- { "Tuesday", TM_TUESDAY },
- { "Wednesday", TM_WEDNESDAY },
- { "Thursday", TM_THURSDAY },
- { "Friday", TM_FRIDAY },
- { "Saturday", TM_SATURDAY },
- { NULL, 0 }
-};
-
-static struct lookup const lasts[] = {
- { "last-Sunday", TM_SUNDAY },
- { "last-Monday", TM_MONDAY },
- { "last-Tuesday", TM_TUESDAY },
- { "last-Wednesday", TM_WEDNESDAY },
- { "last-Thursday", TM_THURSDAY },
- { "last-Friday", TM_FRIDAY },
- { "last-Saturday", TM_SATURDAY },
- { NULL, 0 }
-};
-
-static struct lookup const begin_years[] = {
- { "minimum", YR_MINIMUM },
- { "maximum", YR_MAXIMUM },
- { NULL, 0 }
-};
-
-static struct lookup const end_years[] = {
- { "minimum", YR_MINIMUM },
- { "maximum", YR_MAXIMUM },
- { "only", YR_ONLY },
- { NULL, 0 }
-};
-
-static struct lookup const leap_types[] = {
- { "Rolling", true },
- { "Stationary", false },
- { NULL, 0 }
-};
-
-static const int len_months[2][MONSPERYEAR] = {
- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
- { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
-};
-
-static const int len_years[2] = {
- DAYSPERNYEAR, DAYSPERLYEAR
-};
-
-static struct attype {
- zic_t at;
- bool dontmerge;
- unsigned char type;
-} * attypes;
-static zic_t utoffs[TZ_MAX_TYPES];
-static char isdsts[TZ_MAX_TYPES];
-static unsigned char desigidx[TZ_MAX_TYPES];
-static bool ttisstds[TZ_MAX_TYPES];
-static bool ttisuts[TZ_MAX_TYPES];
-static char chars[TZ_MAX_CHARS];
-static zic_t trans[TZ_MAX_LEAPS];
-static zic_t corr[TZ_MAX_LEAPS];
-static char roll[TZ_MAX_LEAPS];
-
-/*
-** Memory allocation.
-*/
-
-static _Noreturn void
-memory_exhausted(const char *msg)
-{
- fprintf(stderr, _("%s: Memory exhausted: %s\n"), progname, msg);
- exit(EXIT_FAILURE);
-}
-
-static ATTRIBUTE_PURE size_t
-size_product(size_t nitems, size_t itemsize)
-{
- if (SIZE_MAX / itemsize < nitems)
- memory_exhausted(_("size overflow"));
- return nitems * itemsize;
-}
-
-static ATTRIBUTE_PURE size_t
-align_to(size_t size, size_t alignment)
-{
- size_t aligned_size = size + alignment - 1;
- aligned_size -= aligned_size % alignment;
- if (aligned_size < size)
- memory_exhausted(_("alignment overflow"));
- return aligned_size;
-}
-
-#if !HAVE_STRDUP
-static char *
-strdup(char const *str)
-{
- char *result = malloc(strlen(str) + 1);
- return result ? strcpy(result, str) : result;
-}
-#endif
-
-static void *
-memcheck(void *ptr)
-{
- if (ptr == NULL)
- memory_exhausted(strerror(HAVE_MALLOC_ERRNO ? errno : ENOMEM));
- return ptr;
-}
-
-static void * ATTRIBUTE_MALLOC
-emalloc(size_t size)
-{
- return memcheck(malloc(size));
-}
-
-static void *
-erealloc(void *ptr, size_t size)
-{
- return memcheck(realloc(ptr, size));
-}
-
-static char * ATTRIBUTE_MALLOC
-ecpyalloc(char const *str)
-{
- return memcheck(strdup(str));
-}
-
-static void *
-growalloc(void *ptr, size_t itemsize, ptrdiff_t nitems, ptrdiff_t *nitems_alloc)
-{
- if (nitems < *nitems_alloc)
- return ptr;
- else {
- ptrdiff_t amax = min(PTRDIFF_MAX, SIZE_MAX);
- if ((amax - 1) / 3 * 2 < *nitems_alloc)
- memory_exhausted(_("integer overflow"));
- *nitems_alloc += (*nitems_alloc >> 1) + 1;
- return erealloc(ptr, size_product(*nitems_alloc, itemsize));
- }
-}
-
-/*
-** Error handling.
-*/
-
-/* In most of the code, an input file name is represented by its index
- into the main argument vector, except that LEAPSEC_FILENUM stands
- for leapsec and COMMAND_LINE_FILENUM stands for the command line. */
-enum { LEAPSEC_FILENUM = -2, COMMAND_LINE_FILENUM = -1 };
-
-/* Return the name of the Ith input file, for diagnostics. */
-static char const *
-filename(int i)
-{
- if (i == COMMAND_LINE_FILENUM)
- return _("command line");
- else {
- char const *fname = i == LEAPSEC_FILENUM ? leapsec : main_argv[i];
- return strcmp(fname, "-") == 0 ? _("standard input") : fname;
- }
-}
-
-static void
-eats(int fnum, lineno num, int rfnum, lineno rnum)
-{
- filenum = fnum;
- linenum = num;
- rfilenum = rfnum;
- rlinenum = rnum;
-}
-
-static void
-eat(int fnum, lineno num)
-{
- eats(fnum, num, 0, -1);
-}
-
-static void ATTRIBUTE_FORMAT((printf, 1, 0))
-verror(const char *const string, va_list args)
-{
- /*
- ** Match the format of "cc" to allow sh users to
- ** zic ... 2>&1 | error -t "*" -v
- ** on BSD systems.
- */
- if (filenum)
- fprintf(stderr, _("\"%s\", line %"PRIdMAX": "),
- filename(filenum), linenum);
- vfprintf(stderr, string, args);
- if (rfilenum)
- fprintf(stderr, _(" (rule from \"%s\", line %"PRIdMAX")"),
- filename(rfilenum), rlinenum);
- fprintf(stderr, "\n");
-}
-
-static void ATTRIBUTE_FORMAT((printf, 1, 2))
-error(const char *const string, ...)
-{
- va_list args;
- va_start(args, string);
- verror(string, args);
- va_end(args);
- errors = true;
-}
-
-static void ATTRIBUTE_FORMAT((printf, 1, 2))
-warning(const char *const string, ...)
-{
- va_list args;
- fprintf(stderr, _("warning: "));
- va_start(args, string);
- verror(string, args);
- va_end(args);
- warnings = true;
-}
-
-/* Close STREAM. If it had an I/O error, report it against DIR/NAME,
- remove TEMPNAME if nonnull, and then exit. */
-static void
-close_file(FILE *stream, char const *dir, char const *name,
- char const *tempname)
-{
- char const *e = (ferror(stream) ? _("I/O error")
- : fclose(stream) != 0 ? strerror(errno) : NULL);
- if (e) {
- fprintf(stderr, "%s: %s%s%s%s%s\n", progname,
- dir ? dir : "", dir ? "/" : "",
- name ? name : "", name ? ": " : "",
- e);
- if (tempname)
- remove(tempname);
- exit(EXIT_FAILURE);
- }
-}
-
-static _Noreturn void
-usage(FILE *stream, int status)
-{
- fprintf(stream,
- _("%s: usage is %s [ --version ] [ --help ] [ -v ] \\\n"
- "\t[ -b {slim|fat} ] [ -d directory ] [ -l localtime ]"
- " [ -L leapseconds ] \\\n"
- "\t[ -p posixrules ] [ -r '[@lo][/@hi]' ] [ -R '@hi' ] \\\n"
- "\t[ -t localtime-link ] \\\n"
- "\t[ filename ... ]\n\n"
- "Report bugs to %s.\n"),
- progname, progname, REPORT_BUGS_TO);
- if (status == EXIT_SUCCESS)
- close_file(stream, NULL, NULL, NULL);
- exit(status);
-}
-
-/* Change the working directory to DIR, possibly creating DIR and its
- ancestors. After this is done, all files are accessed with names
- relative to DIR. */
-static void
-change_directory(char const *dir)
-{
- if (chdir(dir) != 0) {
- int chdir_errno = errno;
- if (chdir_errno == ENOENT) {
- mkdirs(dir, false);
- chdir_errno = chdir(dir) == 0 ? 0 : errno;
- }
- if (chdir_errno != 0) {
- fprintf(stderr, _("%s: Can't chdir to %s: %s\n"),
- progname, dir, strerror(chdir_errno));
- exit(EXIT_FAILURE);
- }
- }
-}
-
-/* Compare the two links A and B, for a stable sort by link name. */
-static int
-qsort_linkcmp(void const *a, void const *b)
-{
- struct link const *l = a;
- struct link const *m = b;
- int cmp = strcmp(l->l_linkname, m->l_linkname);
- if (cmp)
- return cmp;
-
- /* The link names are the same. Make the sort stable by comparing
- file numbers (where subtraction cannot overflow) and possibly
- line numbers (where it can). */
- cmp = l->l_filenum - m->l_filenum;
- if (cmp)
- return cmp;
- return (l->l_linenum > m->l_linenum) - (l->l_linenum < m->l_linenum);
-}
-
-/* Compare the string KEY to the link B, for bsearch. */
-static int
-bsearch_linkcmp(void const *key, void const *b)
-{
- struct link const *m = b;
- return strcmp(key, m->l_linkname);
-}
-
-/* Make the links specified by the Link lines. */
-static void
-make_links(void)
-{
- ptrdiff_t i, j, nalinks, pass_size;
- if (1 < nlinks)
- qsort(links, nlinks, sizeof *links, qsort_linkcmp);
-
- /* Ignore each link superseded by a later link with the same name. */
- j = 0;
- for (i = 0; i < nlinks; i++) {
- while (i + 1 < nlinks
- && strcmp(links[i].l_linkname, links[i + 1].l_linkname) == 0)
- i++;
- links[j++] = links[i];
- }
- nlinks = pass_size = j;
-
- /* Walk through the link array making links. However,
- if a link's target has not been made yet, append a copy to the
- end of the array. The end of the array will gradually fill
- up with a small sorted subsequence of not-yet-made links.
- nalinks counts all the links in the array, including copies.
- When we reach the copied subsequence, it may still contain
- a link to a not-yet-made link, so the process repeats.
- At any given point in time, the link array consists of the
- following subregions, where 0 <= i <= j <= nalinks and
- 0 <= nlinks <= nalinks:
-
- 0 .. (i - 1):
- links that either have been made, or have been copied to a
- later point point in the array (this later point can be in
- any of the three subregions)
- i .. (j - 1):
- not-yet-made links for this pass
- j .. (nalinks - 1):
- not-yet-made links that this pass has skipped because
- they were links to not-yet-made links
-
- The first subregion might not be sorted if nlinks < i;
- the other two subregions are sorted. This algorithm does
- not alter entries 0 .. (nlinks - 1), which remain sorted.
-
- If there are L links, this algorithm is O(C*L*log(L)) where
- C is the length of the longest link chain. Usually C is
- short (e.g., 3) though its worst-case value is L. */
-
- j = nalinks = nlinks;
-
- for (i = 0; i < nalinks; i++) {
- struct link *l;
-
- eat(links[i].l_filenum, links[i].l_linenum);
-
- /* If this pass examined all its links, start the next pass. */
- if (i == j) {
- if (nalinks - i == pass_size) {
- error(_("\"Link %s %s\" is part of a link cycle"),
- links[i].l_target, links[i].l_linkname);
- break;
- }
- j = nalinks;
- pass_size = nalinks - i;
- }
-
- /* Diagnose self links, which the cycle detection algorithm would not
- otherwise catch. */
- if (strcmp(links[i].l_target, links[i].l_linkname) == 0) {
- error(_("link %s targets itself"), links[i].l_target);
- continue;
- }
-
- /* Make this link unless its target has not been made yet. */
- l = bsearch(links[i].l_target, &links[i + 1], j - (i + 1),
- sizeof *links, bsearch_linkcmp);
- if (!l)
- l = bsearch(links[i].l_target, &links[j], nalinks - j,
- sizeof *links, bsearch_linkcmp);
- if (!l)
- dolink(links[i].l_target, links[i].l_linkname, false);
- else {
- /* The link target has not been made yet; copy the link to the end. */
- links = growalloc(links, sizeof *links, nalinks, &nlinks_alloc);
- links[nalinks++] = links[i];
- }
-
- if (noise && i < nlinks) {
- if (l)
- warning(_("link %s targeting link %s mishandled by pre-2023 zic"),
- links[i].l_linkname, links[i].l_target);
- else if (bsearch(links[i].l_target, links, nlinks, sizeof *links,
- bsearch_linkcmp))
- warning(_("link %s targeting link %s"),
- links[i].l_linkname, links[i].l_target);
- }
- }
-}
-
-/* Simple signal handling: just set a flag that is checked
- periodically outside critical sections. To set up the handler,
- prefer sigaction if available to close a signal race. */
-
-static sig_atomic_t got_signal;
-
-static void
-signal_handler(int sig)
-{
-#ifndef SA_SIGINFO
- signal(sig, signal_handler);
-#endif
- got_signal = sig;
-}
-
-/* Arrange for SIGINT etc. to be caught by the handler. */
-static void
-catch_signals(void)
-{
- static int const signals[] = {
-#ifdef SIGHUP
- SIGHUP,
-#endif
- SIGINT,
-#ifdef SIGPIPE
- SIGPIPE,
-#endif
- SIGTERM
- };
- int i;
- for (i = 0; i < sizeof signals / sizeof signals[0]; i++) {
-#ifdef SA_SIGINFO
- struct sigaction act0, act;
- act.sa_handler = signal_handler;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
- if (sigaction(signals[i], &act, &act0) == 0
- && ! (act0.sa_flags & SA_SIGINFO) && act0.sa_handler == SIG_IGN) {
- sigaction(signals[i], &act0, NULL);
- got_signal = 0;
- }
-#else
- if (signal(signals[i], signal_handler) == SIG_IGN) {
- signal(signals[i], SIG_IGN);
- got_signal = 0;
- }
-#endif
- }
-}
-
-/* If a signal has arrived, terminate zic with appropriate status. */
-static void
-check_for_signal(void)
-{
- int sig = got_signal;
- if (sig) {
- signal(sig, SIG_DFL);
- raise(sig);
- abort(); /* A bug in 'raise'. */
- }
-}
-
-enum { TIME_T_BITS_IN_FILE = 64 };
-
-/* The minimum and maximum values representable in a TZif file. */
-static zic_t const min_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
-static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
-
-/* The minimum, and one less than the maximum, values specified by
- the -r option. These default to MIN_TIME and MAX_TIME. */
-static zic_t lo_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
-static zic_t hi_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
-
-/* The time specified by the -R option, defaulting to MIN_TIME. */
-static zic_t redundant_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
-
-/* The time specified by an Expires line, or negative if no such line. */
-static zic_t leapexpires = -1;
-
-/* Set the time range of the output to TIMERANGE.
- Return true if successful. */
-static bool
-timerange_option(char *timerange)
-{
- intmax_t lo = min_time, hi = max_time;
- char *lo_end = timerange, *hi_end;
- if (*timerange == '@') {
- errno = 0;
- lo = strtoimax(timerange + 1, &lo_end, 10);
- if (lo_end == timerange + 1 || (lo == INTMAX_MAX && errno == ERANGE))
- return false;
- }
- hi_end = lo_end;
- if (lo_end[0] == '/' && lo_end[1] == '@') {
- errno = 0;
- hi = strtoimax(lo_end + 2, &hi_end, 10);
- if (hi_end == lo_end + 2 || hi == INTMAX_MIN)
- return false;
- hi -= ! (hi == INTMAX_MAX && errno == ERANGE);
- }
- if (*hi_end || hi < lo || max_time < lo || hi < min_time)
- return false;
- lo_time = max(lo, min_time);
- hi_time = min(hi, max_time);
- return true;
-}
-
-/* Generate redundant time stamps up to OPT. Return true if successful. */
-static bool
-redundant_time_option(char *opt)
-{
- if (*opt == '@') {
- intmax_t redundant;
- char *opt_end;
- redundant = strtoimax(opt + 1, &opt_end, 10);
- if (opt_end != opt + 1 && !*opt_end) {
- redundant_time = max(redundant_time, redundant);
- return true;
- }
- }
- return false;
-}
-
-static const char * psxrules;
-static const char * lcltime;
-static const char * directory;
-static const char * tzdefault;
-
-/* -1 if the TZif output file should be slim, 0 if default, 1 if the
- output should be fat for backward compatibility. ZIC_BLOAT_DEFAULT
- determines the default. */
-static int bloat;
-
-static bool
-want_bloat(void)
-{
- return 0 <= bloat;
-}
-
-#ifndef ZIC_BLOAT_DEFAULT
-# define ZIC_BLOAT_DEFAULT "slim"
-#endif
-
-int
-main(int argc, char **argv)
-{
- register int c, k;
- register ptrdiff_t i, j;
- bool timerange_given = false;
-
-#ifdef S_IWGRP
- umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
-#endif
-#if HAVE_GETTEXT
- setlocale(LC_ALL, "");
-# ifdef TZ_DOMAINDIR
- bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
-# endif /* defined TEXTDOMAINDIR */
- textdomain(TZ_DOMAIN);
-#endif /* HAVE_GETTEXT */
- main_argv = argv;
- progname = argv[0];
- if (TYPE_BIT(zic_t) < 64) {
- fprintf(stderr, "%s: %s\n", progname,
- _("wild compilation-time specification of zic_t"));
- return EXIT_FAILURE;
- }
- for (k = 1; k < argc; k++)
- if (strcmp(argv[k], "--version") == 0) {
- printf("zic %s%s\n", PKGVERSION, TZVERSION);
- close_file(stdout, NULL, NULL, NULL);
- return EXIT_SUCCESS;
- } else if (strcmp(argv[k], "--help") == 0) {
- usage(stdout, EXIT_SUCCESS);
- }
- while ((c = getopt(argc, argv, "b:d:l:L:p:r:R:st:vy:")) != EOF
- && c != -1)
- switch (c) {
- default:
- usage(stderr, EXIT_FAILURE);
- case 'b':
- if (strcmp(optarg, "slim") == 0) {
- if (0 < bloat)
- error(_("incompatible -b options"));
- bloat = -1;
- } else if (strcmp(optarg, "fat") == 0) {
- if (bloat < 0)
- error(_("incompatible -b options"));
- bloat = 1;
- } else
- error(_("invalid option: -b '%s'"), optarg);
- break;
- case 'd':
- if (directory == NULL)
- directory = optarg;
- else {
- fprintf(stderr,
-_("%s: More than one -d option specified\n"),
- progname);
- return EXIT_FAILURE;
- }
- break;
- case 'l':
- if (lcltime == NULL)
- lcltime = optarg;
- else {
- fprintf(stderr,
-_("%s: More than one -l option specified\n"),
- progname);
- return EXIT_FAILURE;
- }
- break;
- case 'p':
- if (psxrules == NULL)
- psxrules = optarg;
- else {
- fprintf(stderr,
-_("%s: More than one -p option specified\n"),
- progname);
- return EXIT_FAILURE;
- }
- break;
- case 't':
- if (tzdefault != NULL) {
- fprintf(stderr,
- _("%s: More than one -t option"
- " specified\n"),
- progname);
- return EXIT_FAILURE;
- }
- tzdefault = optarg;
- break;
- case 'y':
- warning(_("-y ignored"));
- break;
- case 'L':
- if (leapsec == NULL)
- leapsec = optarg;
- else {
- fprintf(stderr,
-_("%s: More than one -L option specified\n"),
- progname);
- return EXIT_FAILURE;
- }
- break;
- case 'v':
- noise = true;
- break;
- case 'r':
- if (timerange_given) {
- fprintf(stderr,
-_("%s: More than one -r option specified\n"),
- progname);
- return EXIT_FAILURE;
- }
- if (! timerange_option(optarg)) {
- fprintf(stderr,
-_("%s: invalid time range: %s\n"),
- progname, optarg);
- return EXIT_FAILURE;
- }
- timerange_given = true;
- break;
- case 'R':
- if (! redundant_time_option(optarg)) {
- fprintf(stderr, _("%s: invalid time: %s\n"),
- progname, optarg);
- return EXIT_FAILURE;
- }
- break;
- case 's':
- warning(_("-s ignored"));
- break;
- }
- if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
- usage(stderr, EXIT_FAILURE); /* usage message by request */
- if (hi_time + (hi_time < ZIC_MAX) < redundant_time) {
- fprintf(stderr, _("%s: -R time exceeds -r cutoff\n"), progname);
- return EXIT_FAILURE;
- }
- if (bloat == 0) {
- static char const bloat_default[] = ZIC_BLOAT_DEFAULT;
- if (strcmp(bloat_default, "slim") == 0)
- bloat = -1;
- else if (strcmp(bloat_default, "fat") == 0)
- bloat = 1;
- else
- abort(); /* Configuration error. */
- }
- if (directory == NULL)
- directory = TZDIR;
- if (tzdefault == NULL)
- tzdefault = TZDEFAULT;
-
- if (optind < argc && leapsec != NULL) {
- infile(LEAPSEC_FILENUM, leapsec);
- adjleap();
- }
-
- for (k = optind; k < argc; k++)
- infile(k, argv[k]);
- if (errors)
- return EXIT_FAILURE;
- associate();
- change_directory(directory);
- catch_signals();
- for (i = 0; i < nzones; i = j) {
- /*
- ** Find the next non-continuation zone entry.
- */
- for (j = i + 1; j < nzones && zones[j].z_name == NULL; ++j)
- continue;
- outzone(&zones[i], j - i);
- }
- make_links();
- if (lcltime != NULL) {
- eat(COMMAND_LINE_FILENUM, 1);
- dolink(lcltime, tzdefault, true);
- }
- if (psxrules != NULL) {
- eat(COMMAND_LINE_FILENUM, 1);
- dolink(psxrules, TZDEFRULES, true);
- }
- if (warnings && (ferror(stderr) || fclose(stderr) != 0))
- return EXIT_FAILURE;
- return errors ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-static bool
-componentcheck(char const *name, char const *component,
- char const *component_end)
-{
- enum { component_len_max = 14 };
- ptrdiff_t component_len = component_end - component;
- if (component_len == 0) {
- if (!*name)
- error(_("empty file name"));
- else
- error(_(component == name
- ? "file name '%s' begins with '/'"
- : *component_end
- ? "file name '%s' contains '//'"
- : "file name '%s' ends with '/'"),
- name);
- return false;
- }
- if (0 < component_len && component_len <= 2
- && component[0] == '.' && component_end[-1] == '.') {
- int len = component_len;
- error(_("file name '%s' contains '%.*s' component"),
- name, len, component);
- return false;
- }
- if (noise) {
- if (0 < component_len && component[0] == '-')
- warning(_("file name '%s' component contains leading '-'"),
- name);
- if (component_len_max < component_len)
- warning(_("file name '%s' contains overlength component"
- " '%.*s...'"),
- name, component_len_max, component);
- }
- return true;
-}
-
-static bool
-namecheck(const char *name)
-{
- register char const *cp;
-
- /* Benign characters in a portable file name. */
- static char const benign[] =
- "-/_"
- "abcdefghijklmnopqrstuvwxyz"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
- /* Non-control chars in the POSIX portable character set,
- excluding the benign characters. */
- static char const printable_and_not_benign[] =
- " !\"#$%&'()*+,.0123456789:;<=>?@[\\]^`{|}~";
-
- register char const *component = name;
- for (cp = name; *cp; cp++) {
- unsigned char c = *cp;
- if (noise && !strchr(benign, c)) {
- warning((strchr(printable_and_not_benign, c)
- ? _("file name '%s' contains byte '%c'")
- : _("file name '%s' contains byte '\\%o'")),
- name, c);
- }
- if (c == '/') {
- if (!componentcheck(name, component, cp))
- return false;
- component = cp + 1;
- }
- }
- return componentcheck(name, component, cp);
-}
-
-/* Return a random uint_fast64_t. */
-static uint_fast64_t
-get_rand_u64(void)
-{
-#if HAVE_GETRANDOM
- static uint_fast64_t entropy_buffer[max(1, 256 / sizeof(uint_fast64_t))];
- static int nwords;
- if (!nwords) {
- ssize_t s;
- do
- s = getrandom(entropy_buffer, sizeof entropy_buffer, 0);
- while (s < 0 && errno == EINTR);
-
- nwords = s < 0 ? -1 : s / sizeof *entropy_buffer;
- }
- if (0 < nwords)
- return entropy_buffer[--nwords];
-#endif
-
- /* getrandom didn't work, so fall back on portable code that is
- not the best because the seed doesn't necessarily have enough bits,
- the seed isn't cryptographically random on platforms lacking
- getrandom, and 'rand' might not be cryptographically secure. */
- {
- static bool initialized;
- if (!initialized) {
- unsigned seed;
-#ifdef CLOCK_REALTIME
- struct timespec now;
- clock_gettime (CLOCK_REALTIME, &now);
- seed = now.tv_sec ^ now.tv_nsec;
-#else
- seed = time(NULL);
-#endif
- srand(seed);
- initialized = true;
- }
- }
-
- /* Return a random number if rand() yields a random number and in
- the typical case where RAND_MAX is one less than a power of two.
- In other cases this code yields a sort-of-random number. */
- {
- uint_fast64_t
- rand_max = RAND_MAX,
- multiplier = rand_max + 1, /* It's OK if this overflows to 0. */
- r = 0, rmax = 0;
- do {
- uint_fast64_t rmax1 = rmax * multiplier + rand_max;
- r = r * multiplier + rand();
- rmax = rmax < rmax1 ? rmax1 : UINT_FAST64_MAX;
- } while (rmax < UINT_FAST64_MAX);
-
- return r;
- }
-}
-
-/* Generate a randomish name in the same directory as *NAME. If
- *NAMEALLOC, put the name into *NAMEALLOC which is assumed to be
- that returned by a previous call and is thus already almost set up
- and equal to *NAME; otherwise, allocate a new name and put its
- address into both *NAMEALLOC and *NAME. */
-static void
-random_dirent(char const **name, char **namealloc)
-{
- char const *src = *name;
- char *dst = *namealloc;
- static char const prefix[] = ".zic";
- static char const alphabet[] =
- "abcdefghijklmnopqrstuvwxyz"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "0123456789";
- enum { prefixlen = sizeof prefix - 1, alphabetlen = sizeof alphabet - 1 };
- int suffixlen = 6;
- char const *lastslash = strrchr(src, '/');
- ptrdiff_t dirlen = lastslash ? lastslash + 1 - src : 0;
- int i;
- uint_fast64_t r;
- uint_fast64_t base = alphabetlen;
-
- /* BASE**6 */
- uint_fast64_t base__6 = base * base * base * base * base * base;
-
- /* The largest uintmax_t that is a multiple of BASE**6. Any random
- uintmax_t value that is this value or greater, yields a biased
- remainder when divided by BASE**6. UNFAIR_MIN equals the
- mathematical value of ((UINTMAX_MAX + 1) - (UINTMAX_MAX + 1) % BASE**6)
- computed without overflow. */
- uint_fast64_t unfair_min = - ((UINTMAX_MAX % base__6 + 1) % base__6);
-
- if (!dst) {
- dst = emalloc(dirlen + prefixlen + suffixlen + 1);
- memcpy(dst, src, dirlen);
- memcpy(dst + dirlen, prefix, prefixlen);
- dst[dirlen + prefixlen + suffixlen] = '\0';
- *name = *namealloc = dst;
- }
-
- do
- r = get_rand_u64();
- while (unfair_min <= r);
-
- for (i = 0; i < suffixlen; i++) {
- dst[dirlen + prefixlen + i] = alphabet[r % alphabetlen];
- r /= alphabetlen;
- }
-}
-
-/* Prepare to write to the file *OUTNAME, using *TEMPNAME to store the
- name of the temporary file that will eventually be renamed to
- *OUTNAME. Assign the temporary file's name to both *OUTNAME and
- *TEMPNAME. If *TEMPNAME is null, allocate the name of any such
- temporary file; otherwise, reuse *TEMPNAME's storage, which is
- already set up and only needs its trailing suffix updated. */
-static FILE *
-open_outfile(char const **outname, char **tempname)
-{
-#if __STDC_VERSION__ < 201112
- static char const fopen_mode[] = "wb";
-#else
- static char const fopen_mode[] = "wbx";
-#endif
-
- FILE *fp;
- bool dirs_made = false;
- if (!*tempname)
- random_dirent(outname, tempname);
-
- while (! (fp = fopen(*outname, fopen_mode))) {
- int fopen_errno = errno;
- if (fopen_errno == ENOENT && !dirs_made) {
- mkdirs(*outname, true);
- dirs_made = true;
- } else if (fopen_errno == EEXIST)
- random_dirent(outname, tempname);
- else {
- fprintf(stderr, _("%s: Can't create %s/%s: %s\n"),
- progname, directory, *outname, strerror(fopen_errno));
- exit(EXIT_FAILURE);
- }
- }
-
- return fp;
-}
-
-/* If TEMPNAME, the result is in the temporary file TEMPNAME even
- though the user wanted it in NAME, so rename TEMPNAME to NAME.
- Report an error and exit if there is trouble. Also, free TEMPNAME. */
-static void
-rename_dest(char *tempname, char const *name)
-{
- if (tempname) {
- if (rename(tempname, name) != 0) {
- int rename_errno = errno;
- remove(tempname);
- fprintf(stderr, _("%s: rename to %s/%s: %s\n"),
- progname, directory, name, strerror(rename_errno));
- exit(EXIT_FAILURE);
- }
- free(tempname);
- }
-}
-
-/* Create symlink contents suitable for symlinking FROM to TO, as a
- freshly allocated string. FROM should be a relative file name, and
- is relative to the global variable DIRECTORY. TO can be either
- relative or absolute. */
-static char *
-relname(char const *target, char const *linkname)
-{
- size_t i, taillen, dotdotetcsize;
- size_t dir_len = 0, dotdots = 0, linksize = SIZE_MAX;
- char const *f = target;
- char *result = NULL;
- if (*linkname == '/') {
- /* Make F absolute too. */
- size_t len = strlen(directory);
- bool needslash = len && directory[len - 1] != '/';
- linksize = len + needslash + strlen(target) + 1;
- f = result = emalloc(linksize);
- strcpy(result, directory);
- result[len] = '/';
- strcpy(result + len + needslash, target);
- }
- for (i = 0; f[i] && f[i] == linkname[i]; i++)
- if (f[i] == '/')
- dir_len = i + 1;
- for (; linkname[i]; i++)
- dotdots += linkname[i] == '/' && linkname[i - 1] != '/';
- taillen = strlen(f + dir_len);
- dotdotetcsize = 3 * dotdots + taillen + 1;
- if (dotdotetcsize <= linksize) {
- if (!result)
- result = emalloc(dotdotetcsize);
- for (i = 0; i < dotdots; i++)
- memcpy(result + 3 * i, "../", 3);
- memmove(result + 3 * dotdots, f + dir_len, taillen + 1);
- }
- return result;
-}
-
-static void
-dolink(char const *target, char const *linkname, bool staysymlink)
-{
- bool linkdirs_made = false;
- int link_errno;
- char *tempname = NULL;
- char const *outname = linkname;
-
- check_for_signal();
-
- if (strcmp(target, "-") == 0) {
- if (remove(linkname) == 0 || errno == ENOENT || errno == ENOTDIR)
- return;
- else {
- char const *e = strerror(errno);
- fprintf(stderr, _("%s: Can't remove %s/%s: %s\n"),
- progname, directory, linkname, e);
- exit(EXIT_FAILURE);
- }
- }
-
- while (true) {
- if (linkat(AT_FDCWD, target, AT_FDCWD, outname, AT_SYMLINK_FOLLOW)
- == 0) {
- link_errno = 0;
- break;
- }
- link_errno = errno;
- if (link_errno == EXDEV || link_errno == ENOTSUP)
- break;
-
- if (link_errno == EEXIST) {
- staysymlink &= !tempname;
- random_dirent(&outname, &tempname);
- if (staysymlink && itssymlink(linkname))
- break;
- } else if (link_errno == ENOENT && !linkdirs_made) {
- mkdirs(linkname, true);
- linkdirs_made = true;
- } else {
- fprintf(stderr, _("%s: Can't link %s/%s to %s/%s: %s\n"),
- progname, directory, target, directory, outname,
- strerror(link_errno));
- exit(EXIT_FAILURE);
- }
- }
- if (link_errno != 0) {
- bool absolute = *target == '/';
- char *linkalloc = absolute ? NULL : relname(target, linkname);
- char const *contents = absolute ? target : linkalloc;
- int symlink_errno;
-
- while (true) {
- if (symlink(contents, outname) == 0) {
- symlink_errno = 0;
- break;
- }
- symlink_errno = errno;
- if (symlink_errno == EEXIST)
- random_dirent(&outname, &tempname);
- else if (symlink_errno == ENOENT && !linkdirs_made) {
- mkdirs(linkname, true);
- linkdirs_made = true;
- } else
- break;
- }
- free(linkalloc);
- if (symlink_errno == 0) {
- if (link_errno != ENOTSUP && link_errno != EEXIST)
- warning(_("symbolic link used because hard link failed: %s"),
- strerror(link_errno));
- } else {
- FILE *fp, *tp;
- int c;
- fp = fopen(target, "rb");
- if (!fp) {
- char const *e = strerror(errno);
- fprintf(stderr, _("%s: Can't read %s/%s: %s\n"),
- progname, directory, target, e);
- exit(EXIT_FAILURE);
- }
- tp = open_outfile(&outname, &tempname);
- while ((c = getc(fp)) != EOF)
- putc(c, tp);
- close_file(tp, directory, linkname, tempname);
- close_file(fp, directory, target, NULL);
- if (link_errno != ENOTSUP)
- warning(_("copy used because hard link failed: %s"),
- strerror(link_errno));
- else if (symlink_errno != ENOTSUP)
- warning(_("copy used because symbolic link failed: %s"),
- strerror(symlink_errno));
- }
- }
- rename_dest(tempname, linkname);
-}
-
-/* Return true if NAME is a symbolic link. */
-static bool
-itssymlink(char const *name)
-{
- char c;
- return 0 <= readlink(name, &c, 1);
-}
-
-/*
-** Associate sets of rules with zones.
-*/
-
-/*
-** Sort by rule name.
-*/
-
-static int
-rcomp(const void *cp1, const void *cp2)
-{
- struct rule const *r1 = cp1, *r2 = cp2;
- return strcmp(r1->r_name, r2->r_name);
-}
-
-static void
-associate(void)
-{
- register struct zone * zp;
- register struct rule * rp;
- register ptrdiff_t i, j, base, out;
-
- if (1 < nrules) {
- qsort(rules, nrules, sizeof *rules, rcomp);
- for (i = 0; i < nrules - 1; ++i) {
- if (strcmp(rules[i].r_name,
- rules[i + 1].r_name) != 0)
- continue;
- if (rules[i].r_filenum == rules[i + 1].r_filenum)
- continue;
- eat(rules[i].r_filenum, rules[i].r_linenum);
- warning(_("same rule name in multiple files"));
- eat(rules[i + 1].r_filenum, rules[i + 1].r_linenum);
- warning(_("same rule name in multiple files"));
- for (j = i + 2; j < nrules; ++j) {
- if (strcmp(rules[i].r_name,
- rules[j].r_name) != 0)
- break;
- if (rules[i].r_filenum == rules[j].r_filenum)
- continue;
- if (rules[i + 1].r_filenum
- == rules[j].r_filenum)
- continue;
- break;
- }
- i = j - 1;
- }
- }
- for (i = 0; i < nzones; ++i) {
- zp = &zones[i];
- zp->z_rules = NULL;
- zp->z_nrules = 0;
- }
- for (base = 0; base < nrules; base = out) {
- rp = &rules[base];
- for (out = base + 1; out < nrules; ++out)
- if (strcmp(rp->r_name, rules[out].r_name) != 0)
- break;
- for (i = 0; i < nzones; ++i) {
- zp = &zones[i];
- if (strcmp(zp->z_rule, rp->r_name) != 0)
- continue;
- zp->z_rules = rp;
- zp->z_nrules = out - base;
- }
- }
- for (i = 0; i < nzones; ++i) {
- zp = &zones[i];
- if (zp->z_nrules == 0) {
- /*
- ** Maybe we have a local standard time offset.
- */
- eat(zp->z_filenum, zp->z_linenum);
- zp->z_save = getsave(zp->z_rule, &zp->z_isdst);
- /*
- ** Note, though, that if there's no rule,
- ** a '%s' in the format is a bad thing.
- */
- if (zp->z_format_specifier == 's')
- error("%s", _("%s in ruleless zone"));
- }
- }
- if (errors)
- exit(EXIT_FAILURE);
-}
-
-/* Read a text line from FP into BUF, which is of size BUFSIZE.
- Terminate it with a NUL byte instead of a newline.
- Return the line's length, not counting the NUL byte.
- On EOF, return a negative number.
- On error, report the error and exit. */
-static ptrdiff_t
-inputline(FILE *fp, char *buf, ptrdiff_t bufsize)
-{
- ptrdiff_t linelen = 0, ch;
- while ((ch = getc(fp)) != '\n') {
- if (ch < 0) {
- if (ferror(fp)) {
- error(_("input error"));
- exit(EXIT_FAILURE);
- }
- if (linelen == 0)
- return -1;
- error(_("unterminated line"));
- exit(EXIT_FAILURE);
- }
- if (!ch) {
- error(_("NUL input byte"));
- exit(EXIT_FAILURE);
- }
- buf[linelen++] = ch;
- if (linelen == bufsize) {
- error(_("line too long"));
- exit(EXIT_FAILURE);
- }
- }
- buf[linelen] = '\0';
- return linelen;
-}
-
-static void
-infile(int fnum, char const *name)
-{
- register FILE * fp;
- register const struct lookup * lp;
- register bool wantcont;
- register lineno num;
-
- if (strcmp(name, "-") == 0) {
- fp = stdin;
- } else if ((fp = fopen(name, "r")) == NULL) {
- const char *e = strerror(errno);
-
- fprintf(stderr, _("%s: Can't open %s: %s\n"),
- progname, name, e);
- exit(EXIT_FAILURE);
- }
- wantcont = false;
- for (num = 1; ; ++num) {
- ptrdiff_t linelen;
- char buf[_POSIX2_LINE_MAX];
- int nfields;
- char *fields[MAX_FIELDS];
- eat(fnum, num);
- linelen = inputline(fp, buf, sizeof buf);
- if (linelen < 0)
- break;
- nfields = getfields(buf, fields,
- sizeof fields / sizeof *fields);
- if (nfields == 0) {
- /* nothing to do */
- } else if (wantcont) {
- wantcont = inzcont(fields, nfields);
- } else {
- struct lookup const *line_codes
- = fnum < 0 ? leap_line_codes : zi_line_codes;
- lp = byword(fields[0], line_codes);
- if (lp == NULL)
- error(_("input line of unknown type"));
- else switch (lp->l_value) {
- case LC_RULE:
- inrule(fields, nfields);
- wantcont = false;
- break;
- case LC_ZONE:
- wantcont = inzone(fields, nfields);
- break;
- case LC_LINK:
- inlink(fields, nfields);
- wantcont = false;
- break;
- case LC_LEAP:
- inleap(fields, nfields);
- wantcont = false;
- break;
- case LC_EXPIRES:
- inexpires(fields, nfields);
- wantcont = false;
- break;
- default: unreachable();
- }
- }
- }
- close_file(fp, NULL, filename(fnum), NULL);
- if (wantcont)
- error(_("expected continuation line not found"));
-}
-
-/*
-** Convert a string of one of the forms
-** h -h hh:mm -hh:mm hh:mm:ss -hh:mm:ss
-** into a number of seconds.
-** A null string maps to zero.
-** Call error with errstring and return zero on errors.
-*/
-
-static zic_t
-gethms(char const *string, char const *errstring)
-{
- zic_t hh;
- int sign, mm = 0, ss = 0;
- char hhx, mmx, ssx, xr = '0', xs;
- int tenths = 0;
- bool ok = true;
-
- if (string == NULL || *string == '\0')
- return 0;
- if (*string == '-') {
- sign = -1;
- ++string;
- } else sign = 1;
- switch (sscanf(string,
- "%"SCNdZIC"%c%d%c%d%c%1d%*[0]%c%*[0123456789]%c",
- &hh, &hhx, &mm, &mmx, &ss, &ssx, &tenths, &xr, &xs)) {
- default: ok = false; break;
- case 8:
- ok = '0' <= xr && xr <= '9';
- /* fallthrough */
- case 7:
- ok &= ssx == '.';
- if (ok && noise)
- warning(_("fractional seconds rejected by"
- " pre-2018 versions of zic"));
- /* fallthrough */
- case 5: ok &= mmx == ':'; /* fallthrough */
- case 3: ok &= hhx == ':'; /* fallthrough */
- case 1: break;
- }
- if (!ok) {
- error("%s", errstring);
- return 0;
- }
- if (hh < 0 ||
- mm < 0 || mm >= MINSPERHOUR ||
- ss < 0 || ss > SECSPERMIN) {
- error("%s", errstring);
- return 0;
- }
- if (ZIC_MAX / SECSPERHOUR < hh) {
- error(_("time overflow"));
- return 0;
- }
- ss += 5 + ((ss ^ 1) & (xr == '0')) <= tenths; /* Round to even. */
- if (noise && (hh > HOURSPERDAY ||
- (hh == HOURSPERDAY && (mm != 0 || ss != 0))))
-warning(_("values over 24 hours not handled by pre-2007 versions of zic"));
- return oadd(sign * hh * SECSPERHOUR,
- sign * (mm * SECSPERMIN + ss));
-}
-
-static zic_t
-getsave(char *field, bool *isdst)
-{
- int dst = -1;
- zic_t save;
- size_t fieldlen = strlen(field);
- if (fieldlen != 0) {
- char *ep = field + fieldlen - 1;
- switch (*ep) {
- case 'd': dst = 1; *ep = '\0'; break;
- case 's': dst = 0; *ep = '\0'; break;
- }
- }
- save = gethms(field, _("invalid saved time"));
- *isdst = dst < 0 ? save != 0 : dst;
- return save;
-}
-
-static void
-inrule(char **fields, int nfields)
-{
- struct rule r;
-
- if (nfields != RULE_FIELDS) {
- error(_("wrong number of fields on Rule line"));
- return;
- }
- switch (*fields[RF_NAME]) {
- case '\0':
- case ' ': case '\f': case '\n': case '\r': case '\t': case '\v':
- case '+': case '-':
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- error(_("Invalid rule name \"%s\""), fields[RF_NAME]);
- return;
- }
- r.r_filenum = filenum;
- r.r_linenum = linenum;
- r.r_save = getsave(fields[RF_SAVE], &r.r_isdst);
- if (!rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR],
- fields[RF_COMMAND], fields[RF_MONTH], fields[RF_DAY],
- fields[RF_TOD]))
- return;
- r.r_name = ecpyalloc(fields[RF_NAME]);
- r.r_abbrvar = ecpyalloc(fields[RF_ABBRVAR]);
- if (max_abbrvar_len < strlen(r.r_abbrvar))
- max_abbrvar_len = strlen(r.r_abbrvar);
- rules = growalloc(rules, sizeof *rules, nrules, &nrules_alloc);
- rules[nrules++] = r;
-}
-
-static bool
-inzone(char **fields, int nfields)
-{
- register ptrdiff_t i;
-
- if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) {
- error(_("wrong number of fields on Zone line"));
- return false;
- }
- if (lcltime != NULL && strcmp(fields[ZF_NAME], tzdefault) == 0) {
- error(
-_("\"Zone %s\" line and -l option are mutually exclusive"),
- tzdefault);
- return false;
- }
- if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) {
- error(
-_("\"Zone %s\" line and -p option are mutually exclusive"),
- TZDEFRULES);
- return false;
- }
- for (i = 0; i < nzones; ++i)
- if (zones[i].z_name != NULL &&
- strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) {
- error(_("duplicate zone name %s"
- " (file \"%s\", line %"PRIdMAX")"),
- fields[ZF_NAME],
- filename(zones[i].z_filenum),
- zones[i].z_linenum);
- return false;
- }
- return inzsub(fields, nfields, false);
-}
-
-static bool
-inzcont(char **fields, int nfields)
-{
- if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) {
- error(_("wrong number of fields on Zone continuation line"));
- return false;
- }
- return inzsub(fields, nfields, true);
-}
-
-static bool
-inzsub(char **fields, int nfields, bool iscont)
-{
- register char * cp;
- char * cp1;
- struct zone z;
- size_t format_len;
- register int i_stdoff, i_rule, i_format;
- register int i_untilyear, i_untilmonth;
- register int i_untilday, i_untiltime;
- register bool hasuntil;
-
- if (iscont) {
- i_stdoff = ZFC_STDOFF;
- i_rule = ZFC_RULE;
- i_format = ZFC_FORMAT;
- i_untilyear = ZFC_TILYEAR;
- i_untilmonth = ZFC_TILMONTH;
- i_untilday = ZFC_TILDAY;
- i_untiltime = ZFC_TILTIME;
- } else if (!namecheck(fields[ZF_NAME]))
- return false;
- else {
- i_stdoff = ZF_STDOFF;
- i_rule = ZF_RULE;
- i_format = ZF_FORMAT;
- i_untilyear = ZF_TILYEAR;
- i_untilmonth = ZF_TILMONTH;
- i_untilday = ZF_TILDAY;
- i_untiltime = ZF_TILTIME;
- }
- z.z_filenum = filenum;
- z.z_linenum = linenum;
- z.z_stdoff = gethms(fields[i_stdoff], _("invalid UT offset"));
- if ((cp = strchr(fields[i_format], '%')) != 0) {
- if ((*++cp != 's' && *cp != 'z') || strchr(cp, '%')
- || strchr(fields[i_format], '/')) {
- error(_("invalid abbreviation format"));
- return false;
- }
- }
- z.z_format_specifier = cp ? *cp : '\0';
- format_len = strlen(fields[i_format]);
- if (max_format_len < format_len)
- max_format_len = format_len;
- hasuntil = nfields > i_untilyear;
- if (hasuntil) {
- z.z_untilrule.r_filenum = filenum;
- z.z_untilrule.r_linenum = linenum;
- if (!rulesub(
- &z.z_untilrule,
- fields[i_untilyear],
- "only",
- "",
- (nfields > i_untilmonth) ?
- fields[i_untilmonth] : "Jan",
- (nfields > i_untilday) ? fields[i_untilday] : "1",
- (nfields > i_untiltime) ? fields[i_untiltime] : "0"))
- return false;
- z.z_untiltime = rpytime(&z.z_untilrule,
- z.z_untilrule.r_loyear);
- if (iscont && nzones > 0 &&
- z.z_untiltime > min_time &&
- z.z_untiltime < max_time &&
- zones[nzones - 1].z_untiltime > min_time &&
- zones[nzones - 1].z_untiltime < max_time &&
- zones[nzones - 1].z_untiltime >= z.z_untiltime) {
- error(_(
-"Zone continuation line end time is not after end time of previous line"
- ));
- return false;
- }
- }
- z.z_name = iscont ? NULL : ecpyalloc(fields[ZF_NAME]);
- z.z_rule = ecpyalloc(fields[i_rule]);
- z.z_format = cp1 = ecpyalloc(fields[i_format]);
- if (z.z_format_specifier == 'z') {
- cp1[cp - fields[i_format]] = 's';
- if (noise)
- warning(_("format '%s' not handled by pre-2015 versions of zic"),
- fields[i_format]);
- }
- zones = growalloc(zones, sizeof *zones, nzones, &nzones_alloc);
- zones[nzones++] = z;
- /*
- ** If there was an UNTIL field on this line,
- ** there's more information about the zone on the next line.
- */
- return hasuntil;
-}
-
-static zic_t
-getleapdatetime(char **fields, int nfields, bool expire_line)
-{
- register const char * cp;
- register const struct lookup * lp;
- register zic_t i, j;
- zic_t year;
- int month, day;
- zic_t dayoff, tod;
- zic_t t;
- char xs;
-
- dayoff = 0;
- cp = fields[LP_YEAR];
- if (sscanf(cp, "%"SCNdZIC"%c", &year, &xs) != 1) {
- /*
- ** Leapin' Lizards!
- */
- error(_("invalid leaping year"));
- return -1;
- }
- if (!expire_line) {
- if (!leapseen || leapmaxyear < year)
- leapmaxyear = year;
- if (!leapseen || leapminyear > year)
- leapminyear = year;
- leapseen = true;
- }
- j = EPOCH_YEAR;
- while (j != year) {
- if (year > j) {
- i = len_years[isleap(j)];
- ++j;
- } else {
- --j;
- i = -len_years[isleap(j)];
- }
- dayoff = oadd(dayoff, i);
- }
- if ((lp = byword(fields[LP_MONTH], mon_names)) == NULL) {
- error(_("invalid month name"));
- return -1;
- }
- month = lp->l_value;
- j = TM_JANUARY;
- while (j != month) {
- i = len_months[isleap(year)][j];
- dayoff = oadd(dayoff, i);
- ++j;
- }
- cp = fields[LP_DAY];
- if (sscanf(cp, "%d%c", &day, &xs) != 1 ||
- day <= 0 || day > len_months[isleap(year)][month]) {
- error(_("invalid day of month"));
- return -1;
- }
- dayoff = oadd(dayoff, day - 1);
- if (dayoff < min_time / SECSPERDAY) {
- error(_("time too small"));
- return -1;
- }
- if (dayoff > max_time / SECSPERDAY) {
- error(_("time too large"));
- return -1;
- }
- t = dayoff * SECSPERDAY;
- tod = gethms(fields[LP_TIME], _("invalid time of day"));
- t = tadd(t, tod);
- if (t < 0)
- error(_("leap second precedes Epoch"));
- return t;
-}
-
-static void
-inleap(char **fields, int nfields)
-{
- if (nfields != LEAP_FIELDS)
- error(_("wrong number of fields on Leap line"));
- else {
- zic_t t = getleapdatetime(fields, nfields, false);
- if (0 <= t) {
- struct lookup const *lp = byword(fields[LP_ROLL], leap_types);
- if (!lp)
- error(_("invalid Rolling/Stationary field on Leap line"));
- else {
- int correction = 0;
- if (!fields[LP_CORR][0]) /* infile() turns "-" into "". */
- correction = -1;
- else if (strcmp(fields[LP_CORR], "+") == 0)
- correction = 1;
- else
- error(_("invalid CORRECTION field on Leap line"));
- if (correction)
- leapadd(t, correction, lp->l_value);
- }
- }
- }
-}
-
-static void
-inexpires(char **fields, int nfields)
-{
- if (nfields != EXPIRES_FIELDS)
- error(_("wrong number of fields on Expires line"));
- else if (0 <= leapexpires)
- error(_("multiple Expires lines"));
- else
- leapexpires = getleapdatetime(fields, nfields, true);
-}
-
-static void
-inlink(char **fields, int nfields)
-{
- struct link l;
-
- if (nfields != LINK_FIELDS) {
- error(_("wrong number of fields on Link line"));
- return;
- }
- if (*fields[LF_TARGET] == '\0') {
- error(_("blank TARGET field on Link line"));
- return;
- }
- if (! namecheck(fields[LF_LINKNAME]))
- return;
- l.l_filenum = filenum;
- l.l_linenum = linenum;
- l.l_target = ecpyalloc(fields[LF_TARGET]);
- l.l_linkname = ecpyalloc(fields[LF_LINKNAME]);
- links = growalloc(links, sizeof *links, nlinks, &nlinks_alloc);
- links[nlinks++] = l;
-}
-
-static bool
-rulesub(struct rule *rp, const char *loyearp, const char *hiyearp,
- const char *typep, const char *monthp, const char *dayp,
- const char *timep)
-{
- register const struct lookup * lp;
- register const char * cp;
- register char * dp;
- register char * ep;
- char xs;
-
- if ((lp = byword(monthp, mon_names)) == NULL) {
- error(_("invalid month name"));
- return false;
- }
- rp->r_month = lp->l_value;
- rp->r_todisstd = false;
- rp->r_todisut = false;
- dp = ecpyalloc(timep);
- if (*dp != '\0') {
- ep = dp + strlen(dp) - 1;
- switch (lowerit(*ep)) {
- case 's': /* Standard */
- rp->r_todisstd = true;
- rp->r_todisut = false;
- *ep = '\0';
- break;
- case 'w': /* Wall */
- rp->r_todisstd = false;
- rp->r_todisut = false;
- *ep = '\0';
- break;
- case 'g': /* Greenwich */
- case 'u': /* Universal */
- case 'z': /* Zulu */
- rp->r_todisstd = true;
- rp->r_todisut = true;
- *ep = '\0';
- break;
- }
- }
- rp->r_tod = gethms(dp, _("invalid time of day"));
- free(dp);
- /*
- ** Year work.
- */
- cp = loyearp;
- lp = byword(cp, begin_years);
- rp->r_lowasnum = lp == NULL;
- if (!rp->r_lowasnum) switch (lp->l_value) {
- case YR_MINIMUM:
- rp->r_loyear = ZIC_MIN;
- break;
- case YR_MAXIMUM:
- rp->r_loyear = ZIC_MAX;
- break;
- default: unreachable();
- } else if (sscanf(cp, "%"SCNdZIC"%c", &rp->r_loyear, &xs) != 1) {
- error(_("invalid starting year"));
- return false;
- }
- cp = hiyearp;
- lp = byword(cp, end_years);
- rp->r_hiwasnum = lp == NULL;
- if (!rp->r_hiwasnum) switch (lp->l_value) {
- case YR_MINIMUM:
- rp->r_hiyear = ZIC_MIN;
- break;
- case YR_MAXIMUM:
- rp->r_hiyear = ZIC_MAX;
- break;
- case YR_ONLY:
- rp->r_hiyear = rp->r_loyear;
- break;
- default: unreachable();
- } else if (sscanf(cp, "%"SCNdZIC"%c", &rp->r_hiyear, &xs) != 1) {
- error(_("invalid ending year"));
- return false;
- }
- if (rp->r_loyear > rp->r_hiyear) {
- error(_("starting year greater than ending year"));
- return false;
- }
- if (*typep != '\0') {
- error(_("year type \"%s\" is unsupported; use \"-\" instead"),
- typep);
- return false;
- }
- /*
- ** Day work.
- ** Accept things such as:
- ** 1
- ** lastSunday
- ** last-Sunday (undocumented; warn about this)
- ** Sun<=20
- ** Sun>=7
- */
- dp = ecpyalloc(dayp);
- if ((lp = byword(dp, lasts)) != NULL) {
- rp->r_dycode = DC_DOWLEQ;
- rp->r_wday = lp->l_value;
- rp->r_dayofmonth = len_months[1][rp->r_month];
- } else {
- if ((ep = strchr(dp, '<')) != 0)
- rp->r_dycode = DC_DOWLEQ;
- else if ((ep = strchr(dp, '>')) != 0)
- rp->r_dycode = DC_DOWGEQ;
- else {
- ep = dp;
- rp->r_dycode = DC_DOM;
- }
- if (rp->r_dycode != DC_DOM) {
- *ep++ = 0;
- if (*ep++ != '=') {
- error(_("invalid day of month"));
- free(dp);
- return false;
- }
- if ((lp = byword(dp, wday_names)) == NULL) {
- error(_("invalid weekday name"));
- free(dp);
- return false;
- }
- rp->r_wday = lp->l_value;
- }
- if (sscanf(ep, "%d%c", &rp->r_dayofmonth, &xs) != 1 ||
- rp->r_dayofmonth <= 0 ||
- (rp->r_dayofmonth > len_months[1][rp->r_month])) {
- error(_("invalid day of month"));
- free(dp);
- return false;
- }
- }
- free(dp);
- return true;
-}
-
-static void
-convert(uint_fast32_t val, char *buf)
-{
- register int i;
- register int shift;
- unsigned char *const b = (unsigned char *) buf;
-
- for (i = 0, shift = 24; i < 4; ++i, shift -= 8)
- b[i] = (val >> shift) & 0xff;
-}
-
-static void
-convert64(uint_fast64_t val, char *buf)
-{
- register int i;
- register int shift;
- unsigned char *const b = (unsigned char *) buf;
-
- for (i = 0, shift = 56; i < 8; ++i, shift -= 8)
- b[i] = (val >> shift) & 0xff;
-}
-
-static void
-puttzcode(const int_fast32_t val, FILE *const fp)
-{
- char buf[4];
-
- convert(val, buf);
- fwrite(buf, sizeof buf, 1, fp);
-}
-
-static void
-puttzcodepass(zic_t val, FILE *fp, int pass)
-{
- if (pass == 1)
- puttzcode(val, fp);
- else {
- char buf[8];
-
- convert64(val, buf);
- fwrite(buf, sizeof buf, 1, fp);
- }
-}
-
-static int
-atcomp(const void *avp, const void *bvp)
-{
- struct attype const *ap = avp, *bp = bvp;
- zic_t a = ap->at, b = bp->at;
- return a < b ? -1 : a > b;
-}
-
-struct timerange {
- int defaulttype;
- ptrdiff_t base, count;
- int leapbase, leapcount;
- bool leapexpiry;
-};
-
-static struct timerange
-limitrange(struct timerange r, zic_t lo, zic_t hi,
- zic_t const *ats, unsigned char const *types)
-{
- /* Omit ordinary transitions < LO. */
- while (0 < r.count && ats[r.base] < lo) {
- r.defaulttype = types[r.base];
- r.count--;
- r.base++;
- }
-
- /* Omit as many initial leap seconds as possible, such that the
- first leap second in the truncated list is <= LO, and is a
- positive leap second if and only if it has a positive correction.
- This supports common TZif readers that assume that the first leap
- second is positive if and only if its correction is positive. */
- while (1 < r.leapcount && trans[r.leapbase + 1] <= lo) {
- r.leapcount--;
- r.leapbase++;
- }
- while (0 < r.leapbase
- && ((corr[r.leapbase - 1] < corr[r.leapbase])
- != (0 < corr[r.leapbase]))) {
- r.leapcount++;
- r.leapbase--;
- }
-
-
- /* Omit ordinary and leap second transitions greater than HI + 1. */
- if (hi < max_time) {
- while (0 < r.count && hi + 1 < ats[r.base + r.count - 1])
- r.count--;
- while (0 < r.leapcount && hi + 1 < trans[r.leapbase + r.leapcount - 1])
- r.leapcount--;
- }
-
- /* Determine whether to append an expiration to the leap second table. */
- r.leapexpiry = 0 <= leapexpires && leapexpires - 1 <= hi;
-
- return r;
-}
-
-static void
-writezone(const char *const name, const char *const string, char version,
- int defaulttype)
-{
- register FILE * fp;
- register ptrdiff_t i, j;
- register int pass;
- char *tempname = NULL;
- char const *outname = name;
-
- /* Allocate the ATS and TYPES arrays via a single malloc,
- as this is a bit faster. */
- zic_t *ats = emalloc(align_to(size_product(timecnt, sizeof *ats + 1),
- alignof(zic_t)));
- void *typesptr = ats + timecnt;
- unsigned char *types = typesptr;
- struct timerange rangeall = {0}, range32, range64;
-
- /*
- ** Sort.
- */
- if (timecnt > 1)
- qsort(attypes, timecnt, sizeof *attypes, atcomp);
- /*
- ** Optimize.
- */
- {
- ptrdiff_t fromi, toi;
-
- toi = 0;
- fromi = 0;
- for ( ; fromi < timecnt; ++fromi) {
- if (toi != 0
- && ((attypes[fromi].at
- + utoffs[attypes[toi - 1].type])
- <= (attypes[toi - 1].at
- + utoffs[toi == 1 ? 0
- : attypes[toi - 2].type]))) {
- attypes[toi - 1].type =
- attypes[fromi].type;
- continue;
- }
- if (toi == 0
- || attypes[fromi].dontmerge
- || (utoffs[attypes[toi - 1].type]
- != utoffs[attypes[fromi].type])
- || (isdsts[attypes[toi - 1].type]
- != isdsts[attypes[fromi].type])
- || (desigidx[attypes[toi - 1].type]
- != desigidx[attypes[fromi].type]))
- attypes[toi++] = attypes[fromi];
- }
- timecnt = toi;
- }
-
- if (noise && timecnt > 1200) {
- if (timecnt > TZ_MAX_TIMES)
- warning(_("reference clients mishandle"
- " more than %d transition times"),
- TZ_MAX_TIMES);
- else
- warning(_("pre-2014 clients may mishandle"
- " more than 1200 transition times"));
- }
- /*
- ** Transfer.
- */
- for (i = 0; i < timecnt; ++i) {
- ats[i] = attypes[i].at;
- types[i] = attypes[i].type;
- }
-
- /*
- ** Correct for leap seconds.
- */
- for (i = 0; i < timecnt; ++i) {
- j = leapcnt;
- while (--j >= 0)
- if (ats[i] > trans[j] - corr[j]) {
- ats[i] = tadd(ats[i], corr[j]);
- break;
- }
- }
-
- rangeall.defaulttype = defaulttype;
- rangeall.count = timecnt;
- rangeall.leapcount = leapcnt;
- range64 = limitrange(rangeall, lo_time,
- max(hi_time,
- redundant_time - (ZIC_MIN < redundant_time)),
- ats, types);
- range32 = limitrange(range64, ZIC32_MIN, ZIC32_MAX, ats, types);
-
- /* TZif version 4 is needed if a no-op transition is appended to
- indicate the expiration of the leap second table, or if the first
- leap second transition is not to a +1 or -1 correction. */
- for (pass = 1; pass <= 2; pass++) {
- struct timerange const *r = pass == 1 ? &range32 : &range64;
- if (pass == 1 && !want_bloat())
- continue;
- if (r->leapexpiry) {
- if (noise)
- warning(_("%s: pre-2021b clients may mishandle"
- " leap second expiry"),
- name);
- version = '4';
- }
- if (0 < r->leapcount
- && corr[r->leapbase] != 1 && corr[r->leapbase] != -1) {
- if (noise)
- warning(_("%s: pre-2021b clients may mishandle"
- " leap second table truncation"),
- name);
- version = '4';
- }
- if (version == '4')
- break;
- }
-
- fp = open_outfile(&outname, &tempname);
-
- for (pass = 1; pass <= 2; ++pass) {
- register ptrdiff_t thistimei, thistimecnt, thistimelim;
- register int thisleapi, thisleapcnt, thisleaplim;
- struct tzhead tzh;
- int pretranstype = -1, thisdefaulttype;
- bool locut, hicut, thisleapexpiry;
- zic_t lo, thismin, thismax;
- int old0;
- char omittype[TZ_MAX_TYPES];
- int typemap[TZ_MAX_TYPES];
- int thistypecnt, stdcnt, utcnt;
- char thischars[TZ_MAX_CHARS];
- int thischarcnt;
- bool toomanytimes;
- int indmap[TZ_MAX_CHARS];
-
- if (pass == 1) {
- thisdefaulttype = range32.defaulttype;
- thistimei = range32.base;
- thistimecnt = range32.count;
- toomanytimes = thistimecnt >> 31 >> 1 != 0;
- thisleapi = range32.leapbase;
- thisleapcnt = range32.leapcount;
- thisleapexpiry = range32.leapexpiry;
- thismin = ZIC32_MIN;
- thismax = ZIC32_MAX;
- } else {
- thisdefaulttype = range64.defaulttype;
- thistimei = range64.base;
- thistimecnt = range64.count;
- toomanytimes = thistimecnt >> 31 >> 31 >> 2 != 0;
- thisleapi = range64.leapbase;
- thisleapcnt = range64.leapcount;
- thisleapexpiry = range64.leapexpiry;
- thismin = min_time;
- thismax = max_time;
- }
- if (toomanytimes)
- error(_("too many transition times"));
-
- locut = thismin < lo_time && lo_time <= thismax;
- hicut = thismin <= hi_time && hi_time < thismax;
- thistimelim = thistimei + thistimecnt;
- memset(omittype, true, typecnt);
-
- /* Determine whether to output a transition before the first
- transition in range. This is needed when the output is
- truncated at the start, and is also useful when catering to
- buggy 32-bit clients that do not use time type 0 for
- timestamps before the first transition. */
- if ((locut || (pass == 1 && thistimei))
- && ! (thistimecnt && ats[thistimei] == lo_time)) {
- pretranstype = thisdefaulttype;
- omittype[pretranstype] = false;
- }
-
- /* Arguably the default time type in the 32-bit data
- should be range32.defaulttype, which is suited for
- timestamps just before ZIC32_MIN. However, zic
- traditionally used the time type of the indefinite
- past instead. Internet RFC 8532 says readers should
- ignore 32-bit data, so this discrepancy matters only
- to obsolete readers where the traditional type might
- be more appropriate even if it's "wrong". So, use
- the historical zic value, unless -r specifies a low
- cutoff that excludes some 32-bit timestamps. */
- if (pass == 1 && lo_time <= thismin)
- thisdefaulttype = range64.defaulttype;
-
- if (locut)
- thisdefaulttype = unspecifiedtype;
- omittype[thisdefaulttype] = false;
- for (i = thistimei; i < thistimelim; i++)
- omittype[types[i]] = false;
- if (hicut)
- omittype[unspecifiedtype] = false;
-
- /* Reorder types to make THISDEFAULTTYPE type 0.
- Use TYPEMAP to swap OLD0 and THISDEFAULTTYPE so that
- THISDEFAULTTYPE appears as type 0 in the output instead
- of OLD0. TYPEMAP also omits unused types. */
- old0 = strlen(omittype);
-
-#ifndef LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH
- /*
- ** For some pre-2011 systems: if the last-to-be-written
- ** standard (or daylight) type has an offset different from the
- ** most recently used offset,
- ** append an (unused) copy of the most recently used type
- ** (to help get global "altzone" and "timezone" variables
- ** set correctly).
- */
- if (want_bloat()) {
- register int mrudst, mrustd, hidst, histd, type;
-
- hidst = histd = mrudst = mrustd = -1;
- if (0 <= pretranstype) {
- if (isdsts[pretranstype])
- mrudst = pretranstype;
- else
- mrustd = pretranstype;
- }
- for (i = thistimei; i < thistimelim; i++)
- if (isdsts[types[i]])
- mrudst = types[i];
- else mrustd = types[i];
- for (i = old0; i < typecnt; i++) {
- int h = (i == old0 ? thisdefaulttype
- : i == thisdefaulttype ? old0 : i);
- if (!omittype[h]) {
- if (isdsts[h])
- hidst = i;
- else
- histd = i;
- }
- }
- if (hidst >= 0 && mrudst >= 0 && hidst != mrudst &&
- utoffs[hidst] != utoffs[mrudst]) {
- isdsts[mrudst] = -1;
- type = addtype(utoffs[mrudst],
- &chars[desigidx[mrudst]],
- true,
- ttisstds[mrudst],
- ttisuts[mrudst]);
- isdsts[mrudst] = 1;
- omittype[type] = false;
- }
- if (histd >= 0 && mrustd >= 0 && histd != mrustd &&
- utoffs[histd] != utoffs[mrustd]) {
- isdsts[mrustd] = -1;
- type = addtype(utoffs[mrustd],
- &chars[desigidx[mrustd]],
- false,
- ttisstds[mrustd],
- ttisuts[mrustd]);
- isdsts[mrustd] = 0;
- omittype[type] = false;
- }
- }
-#endif /* !defined LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */
- thistypecnt = 0;
- for (i = old0; i < typecnt; i++)
- if (!omittype[i])
- typemap[i == old0 ? thisdefaulttype
- : i == thisdefaulttype ? old0 : i]
- = thistypecnt++;
-
- for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i)
- indmap[i] = -1;
- thischarcnt = stdcnt = utcnt = 0;
- for (i = old0; i < typecnt; i++) {
- register char * thisabbr;
-
- if (omittype[i])
- continue;
- if (ttisstds[i])
- stdcnt = thistypecnt;
- if (ttisuts[i])
- utcnt = thistypecnt;
- if (indmap[desigidx[i]] >= 0)
- continue;
- thisabbr = &chars[desigidx[i]];
- for (j = 0; j < thischarcnt; ++j)
- if (strcmp(&thischars[j], thisabbr) == 0)
- break;
- if (j == thischarcnt) {
- strcpy(&thischars[thischarcnt], thisabbr);
- thischarcnt += strlen(thisabbr) + 1;
- }
- indmap[desigidx[i]] = j;
- }
- if (pass == 1 && !want_bloat()) {
- hicut = thisleapexpiry = false;
- pretranstype = -1;
- thistimecnt = thisleapcnt = 0;
- thistypecnt = thischarcnt = 1;
- }
-#define DO(field) fwrite(tzh.field, sizeof tzh.field, 1, fp)
- memset(&tzh, 0, sizeof tzh);
- memcpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
- tzh.tzh_version[0] = version;
- convert(utcnt, tzh.tzh_ttisutcnt);
- convert(stdcnt, tzh.tzh_ttisstdcnt);
- convert(thisleapcnt + thisleapexpiry, tzh.tzh_leapcnt);
- convert((0 <= pretranstype) + thistimecnt + hicut,
- tzh.tzh_timecnt);
- convert(thistypecnt, tzh.tzh_typecnt);
- convert(thischarcnt, tzh.tzh_charcnt);
- DO(tzh_magic);
- DO(tzh_version);
- DO(tzh_reserved);
- DO(tzh_ttisutcnt);
- DO(tzh_ttisstdcnt);
- DO(tzh_leapcnt);
- DO(tzh_timecnt);
- DO(tzh_typecnt);
- DO(tzh_charcnt);
-#undef DO
- if (pass == 1 && !want_bloat()) {
- /* Output a minimal data block with just one time type. */
- puttzcode(0, fp); /* utoff */
- putc(0, fp); /* dst */
- putc(0, fp); /* index of abbreviation */
- putc(0, fp); /* empty-string abbreviation */
- continue;
- }
-
- /* Output a LO_TIME transition if needed; see limitrange.
- But do not go below the minimum representable value
- for this pass. */
- lo = pass == 1 && lo_time < ZIC32_MIN ? ZIC32_MIN : lo_time;
-
- if (0 <= pretranstype)
- puttzcodepass(lo, fp, pass);
- for (i = thistimei; i < thistimelim; ++i) {
- puttzcodepass(ats[i], fp, pass);
- }
- if (hicut)
- puttzcodepass(hi_time + 1, fp, pass);
- if (0 <= pretranstype)
- putc(typemap[pretranstype], fp);
- for (i = thistimei; i < thistimelim; i++)
- putc(typemap[types[i]], fp);
- if (hicut)
- putc(typemap[unspecifiedtype], fp);
-
- for (i = old0; i < typecnt; i++) {
- int h = (i == old0 ? thisdefaulttype
- : i == thisdefaulttype ? old0 : i);
- if (!omittype[h]) {
- puttzcode(utoffs[h], fp);
- putc(isdsts[h], fp);
- putc(indmap[desigidx[h]], fp);
- }
- }
- if (thischarcnt != 0)
- fwrite(thischars, sizeof thischars[0],
- thischarcnt, fp);
- thisleaplim = thisleapi + thisleapcnt;
- for (i = thisleapi; i < thisleaplim; ++i) {
- register zic_t todo;
-
- if (roll[i]) {
- if (timecnt == 0 || trans[i] < ats[0]) {
- j = 0;
- while (isdsts[j])
- if (++j >= typecnt) {
- j = 0;
- break;
- }
- } else {
- j = 1;
- while (j < timecnt &&
- trans[i] >= ats[j])
- ++j;
- j = types[j - 1];
- }
- todo = tadd(trans[i], -utoffs[j]);
- } else todo = trans[i];
- puttzcodepass(todo, fp, pass);
- puttzcode(corr[i], fp);
- }
- if (thisleapexpiry) {
- /* Append a no-op leap correction indicating when the leap
- second table expires. Although this does not conform to
- Internet RFC 8536, most clients seem to accept this and
- the plan is to amend the RFC to allow this in version 4
- TZif files. */
- puttzcodepass(leapexpires, fp, pass);
- puttzcode(thisleaplim ? corr[thisleaplim - 1] : 0, fp);
- }
- if (stdcnt != 0)
- for (i = old0; i < typecnt; i++)
- if (!omittype[i])
- putc(ttisstds[i], fp);
- if (utcnt != 0)
- for (i = old0; i < typecnt; i++)
- if (!omittype[i])
- putc(ttisuts[i], fp);
- }
- fprintf(fp, "\n%s\n", string);
- close_file(fp, directory, name, tempname);
- rename_dest(tempname, name);
- free(ats);
-}
-
-static char const *
-abbroffset(char *buf, zic_t offset)
-{
- char sign = '+';
- int seconds, minutes;
-
- if (offset < 0) {
- offset = -offset;
- sign = '-';
- }
-
- seconds = offset % SECSPERMIN;
- offset /= SECSPERMIN;
- minutes = offset % MINSPERHOUR;
- offset /= MINSPERHOUR;
- if (100 <= offset) {
- error(_("%%z UT offset magnitude exceeds 99:59:59"));
- return "%z";
- } else {
- char *p = buf;
- *p++ = sign;
- *p++ = '0' + offset / 10;
- *p++ = '0' + offset % 10;
- if (minutes | seconds) {
- *p++ = '0' + minutes / 10;
- *p++ = '0' + minutes % 10;
- if (seconds) {
- *p++ = '0' + seconds / 10;
- *p++ = '0' + seconds % 10;
- }
- }
- *p = '\0';
- return buf;
- }
-}
-
-static char const disable_percent_s[] = "";
-
-static size_t
-doabbr(char *abbr, struct zone const *zp, char const *letters,
- bool isdst, zic_t save, bool doquotes)
-{
- register char * cp;
- register char * slashp;
- register size_t len;
- char const *format = zp->z_format;
-
- slashp = strchr(format, '/');
- if (slashp == NULL) {
- char letterbuf[PERCENT_Z_LEN_BOUND + 1];
- if (zp->z_format_specifier == 'z')
- letters = abbroffset(letterbuf, zp->z_stdoff + save);
- else if (!letters)
- letters = "%s";
- else if (letters == disable_percent_s)
- return 0;
- sprintf(abbr, format, letters);
- } else if (isdst) {
- strcpy(abbr, slashp + 1);
- } else {
- memcpy(abbr, format, slashp - format);
- abbr[slashp - format] = '\0';
- }
- len = strlen(abbr);
- if (!doquotes)
- return len;
- for (cp = abbr; is_alpha(*cp); cp++)
- continue;
- if (len > 0 && *cp == '\0')
- return len;
- abbr[len + 2] = '\0';
- abbr[len + 1] = '>';
- memmove(abbr + 1, abbr, len);
- abbr[0] = '<';
- return len + 2;
-}
-
-static void
-updateminmax(const zic_t x)
-{
- if (min_year > x)
- min_year = x;
- if (max_year < x)
- max_year = x;
-}
-
-static int
-stringoffset(char *result, zic_t offset)
-{
- register int hours;
- register int minutes;
- register int seconds;
- bool negative = offset < 0;
- int len = negative;
-
- if (negative) {
- offset = -offset;
- result[0] = '-';
- }
- seconds = offset % SECSPERMIN;
- offset /= SECSPERMIN;
- minutes = offset % MINSPERHOUR;
- offset /= MINSPERHOUR;
- hours = offset;
- if (hours >= HOURSPERDAY * DAYSPERWEEK) {
- result[0] = '\0';
- return 0;
- }
- len += sprintf(result + len, "%d", hours);
- if (minutes != 0 || seconds != 0) {
- len += sprintf(result + len, ":%02d", minutes);
- if (seconds != 0)
- len += sprintf(result + len, ":%02d", seconds);
- }
- return len;
-}
-
-static int
-stringrule(char *result, struct rule *const rp, zic_t save, zic_t stdoff)
-{
- register zic_t tod = rp->r_tod;
- register int compat = 0;
-
- if (rp->r_dycode == DC_DOM) {
- register int month, total;
-
- if (rp->r_dayofmonth == 29 && rp->r_month == TM_FEBRUARY)
- return -1;
- total = 0;
- for (month = 0; month < rp->r_month; ++month)
- total += len_months[0][month];
- /* Omit the "J" in Jan and Feb, as that's shorter. */
- if (rp->r_month <= 1)
- result += sprintf(result, "%d", total + rp->r_dayofmonth - 1);
- else
- result += sprintf(result, "J%d", total + rp->r_dayofmonth);
- } else {
- register int week;
- register int wday = rp->r_wday;
- register int wdayoff;
-
- if (rp->r_dycode == DC_DOWGEQ) {
- wdayoff = (rp->r_dayofmonth - 1) % DAYSPERWEEK;
- if (wdayoff)
- compat = 2013;
- wday -= wdayoff;
- tod += wdayoff * SECSPERDAY;
- week = 1 + (rp->r_dayofmonth - 1) / DAYSPERWEEK;
- } else if (rp->r_dycode == DC_DOWLEQ) {
- if (rp->r_dayofmonth == len_months[1][rp->r_month])
- week = 5;
- else {
- wdayoff = rp->r_dayofmonth % DAYSPERWEEK;
- if (wdayoff)
- compat = 2013;
- wday -= wdayoff;
- tod += wdayoff * SECSPERDAY;
- week = rp->r_dayofmonth / DAYSPERWEEK;
- }
- } else return -1; /* "cannot happen" */
- if (wday < 0)
- wday += DAYSPERWEEK;
- result += sprintf(result, "M%d.%d.%d",
- rp->r_month + 1, week, wday);
- }
- if (rp->r_todisut)
- tod += stdoff;
- if (rp->r_todisstd && !rp->r_isdst)
- tod += save;
- if (tod != 2 * SECSPERMIN * MINSPERHOUR) {
- *result++ = '/';
- if (! stringoffset(result, tod))
- return -1;
- if (tod < 0) {
- if (compat < 2013)
- compat = 2013;
- } else if (SECSPERDAY <= tod) {
- if (compat < 1994)
- compat = 1994;
- }
- }
- return compat;
-}
-
-static int
-rule_cmp(struct rule const *a, struct rule const *b)
-{
- if (!a)
- return -!!b;
- if (!b)
- return 1;
- if (a->r_hiyear != b->r_hiyear)
- return a->r_hiyear < b->r_hiyear ? -1 : 1;
- if (a->r_hiyear == ZIC_MAX)
- return 0;
- if (a->r_month - b->r_month != 0)
- return a->r_month - b->r_month;
- return a->r_dayofmonth - b->r_dayofmonth;
-}
-
-static int
-stringzone(char *result, struct zone const *zpfirst, ptrdiff_t zonecount)
-{
- register const struct zone * zp;
- register struct rule * rp;
- register struct rule * stdrp;
- register struct rule * dstrp;
- register ptrdiff_t i;
- register int compat = 0;
- register int c;
- size_t len;
- int offsetlen;
- struct rule stdr, dstr;
- int dstcmp;
- struct rule *lastrp[2] = { NULL, NULL };
- struct zone zstr[2];
- struct zone const *stdzp;
- struct zone const *dstzp;
-
- result[0] = '\0';
-
- /* Internet RFC 8536 section 5.1 says to use an empty TZ string if
- future timestamps are truncated. */
- if (hi_time < max_time)
- return -1;
-
- zp = zpfirst + zonecount - 1;
- for (i = 0; i < zp->z_nrules; ++i) {
- struct rule **last;
- int cmp;
- rp = &zp->z_rules[i];
- last = &lastrp[rp->r_isdst];
- cmp = rule_cmp(*last, rp);
- if (cmp < 0)
- *last = rp;
- else if (cmp == 0)
- return -1;
- }
- stdrp = lastrp[false];
- dstrp = lastrp[true];
- dstcmp = zp->z_nrules ? rule_cmp(dstrp, stdrp) : zp->z_isdst ? 1 : -1;
- stdzp = dstzp = zp;
-
- if (dstcmp < 0) {
- /* Standard time all year. */
- dstrp = NULL;
- } else if (0 < dstcmp) {
- /* DST all year. Use an abbreviation like
- "XXX3EDT4,0/0,J365/23" for EDT (-04) all year. */
- zic_t save = dstrp ? dstrp->r_save : zp->z_save;
- if (0 <= save)
- {
- /* Positive DST, the typical case for all-year DST.
- Fake a timezone with negative DST. */
- stdzp = &zstr[0];
- dstzp = &zstr[1];
- zstr[0].z_stdoff = zp->z_stdoff + 2 * save;
- zstr[0].z_format = "XXX"; /* Any 3 letters will do. */
- zstr[0].z_format_specifier = 0;
- zstr[1].z_stdoff = zstr[0].z_stdoff;
- zstr[1].z_format = zp->z_format;
- zstr[1].z_format_specifier = zp->z_format_specifier;
- }
- dstr.r_month = TM_JANUARY;
- dstr.r_dycode = DC_DOM;
- dstr.r_dayofmonth = 1;
- dstr.r_tod = 0;
- dstr.r_todisstd = dstr.r_todisut = false;
- dstr.r_isdst = true;
- dstr.r_save = save < 0 ? save : -save;
- dstr.r_abbrvar = dstrp ? dstrp->r_abbrvar : NULL;
- stdr.r_month = TM_DECEMBER;
- stdr.r_dycode = DC_DOM;
- stdr.r_dayofmonth = 31;
- stdr.r_tod = SECSPERDAY + dstr.r_save;
- stdr.r_todisstd = stdr.r_todisut = false;
- stdr.r_isdst = false;
- stdr.r_save = 0;
- stdr.r_abbrvar = save < 0 && stdrp ? stdrp->r_abbrvar : NULL;
- dstrp = &dstr;
- stdrp = &stdr;
- }
- len = doabbr(result, stdzp, stdrp ? stdrp->r_abbrvar : NULL,
- false, 0, true);
- offsetlen = stringoffset(result + len, - stdzp->z_stdoff);
- if (! offsetlen) {
- result[0] = '\0';
- return -1;
- }
- len += offsetlen;
- if (dstrp == NULL)
- return compat;
- len += doabbr(result + len, dstzp, dstrp->r_abbrvar,
- dstrp->r_isdst, dstrp->r_save, true);
- if (dstrp->r_save != SECSPERMIN * MINSPERHOUR) {
- offsetlen = stringoffset(result + len,
- - (dstzp->z_stdoff + dstrp->r_save));
- if (! offsetlen) {
- result[0] = '\0';
- return -1;
- }
- len += offsetlen;
- }
- result[len++] = ',';
- c = stringrule(result + len, dstrp, dstrp->r_save, stdzp->z_stdoff);
- if (c < 0) {
- result[0] = '\0';
- return -1;
- }
- if (compat < c)
- compat = c;
- len += strlen(result + len);
- result[len++] = ',';
- c = stringrule(result + len, stdrp, dstrp->r_save, stdzp->z_stdoff);
- if (c < 0) {
- result[0] = '\0';
- return -1;
- }
- if (compat < c)
- compat = c;
- return compat;
-}
-
-static void
-outzone(const struct zone *zpfirst, ptrdiff_t zonecount)
-{
- register ptrdiff_t i, j;
- register zic_t starttime = 0, untiltime = 0;
- register bool startttisstd;
- register bool startttisut;
- register char * startbuf;
- register char * ab;
- register char * envvar;
- register int max_abbr_len;
- register int max_envvar_len;
- register bool prodstic; /* all rules are min to max */
- register int compat;
- register bool do_extend;
- register char version;
- ptrdiff_t lastatmax = -1;
- zic_t max_year0;
- int defaulttype = -1;
-
- check_for_signal();
-
- max_abbr_len = 2 + max_format_len + max_abbrvar_len;
- max_envvar_len = 2 * max_abbr_len + 5 * 9;
- startbuf = emalloc(max_abbr_len + 1);
- ab = emalloc(max_abbr_len + 1);
- envvar = emalloc(max_envvar_len + 1);
- INITIALIZE(untiltime);
- INITIALIZE(starttime);
- /*
- ** Now. . .finally. . .generate some useful data!
- */
- timecnt = 0;
- typecnt = 0;
- charcnt = 0;
- prodstic = zonecount == 1;
- /*
- ** Thanks to Earl Chew
- ** for noting the need to unconditionally initialize startttisstd.
- */
- startttisstd = false;
- startttisut = false;
- min_year = max_year = EPOCH_YEAR;
- if (leapseen) {
- updateminmax(leapminyear);
- updateminmax(leapmaxyear + (leapmaxyear < ZIC_MAX));
- }
- for (i = 0; i < zonecount; ++i) {
- struct zone const *zp = &zpfirst[i];
- if (i < zonecount - 1)
- updateminmax(zp->z_untilrule.r_loyear);
- for (j = 0; j < zp->z_nrules; ++j) {
- struct rule *rp = &zp->z_rules[j];
- if (rp->r_lowasnum)
- updateminmax(rp->r_loyear);
- if (rp->r_hiwasnum)
- updateminmax(rp->r_hiyear);
- if (rp->r_lowasnum || rp->r_hiwasnum)
- prodstic = false;
- }
- }
- /*
- ** Generate lots of data if a rule can't cover all future times.
- */
- compat = stringzone(envvar, zpfirst, zonecount);
- version = compat < 2013 ? '2' : '3';
- do_extend = compat < 0;
- if (noise) {
- if (!*envvar)
- warning("%s %s",
- _("no POSIX environment variable for zone"),
- zpfirst->z_name);
- else if (compat != 0) {
- /* Circa-COMPAT clients, and earlier clients, might
- not work for this zone when given dates before
- 1970 or after 2038. */
- warning(_("%s: pre-%d clients may mishandle"
- " distant timestamps"),
- zpfirst->z_name, compat);
- }
- }
- if (do_extend) {
- /*
- ** Search through a couple of extra years past the obvious
- ** 400, to avoid edge cases. For example, suppose a non-POSIX
- ** rule applies from 2012 onwards and has transitions in March
- ** and September, plus some one-off transitions in November
- ** 2013. If zic looked only at the last 400 years, it would
- ** set max_year=2413, with the intent that the 400 years 2014
- ** through 2413 will be repeated. The last transition listed
- ** in the tzfile would be in 2413-09, less than 400 years
- ** after the last one-off transition in 2013-11. Two years
- ** might be overkill, but with the kind of edge cases
- ** available we're not sure that one year would suffice.
- */
- enum { years_of_observations = YEARSPERREPEAT + 2 };
-
- if (min_year >= ZIC_MIN + years_of_observations)
- min_year -= years_of_observations;
- else min_year = ZIC_MIN;
- if (max_year <= ZIC_MAX - years_of_observations)
- max_year += years_of_observations;
- else max_year = ZIC_MAX;
- /*
- ** Regardless of any of the above,
- ** for a "proDSTic" zone which specifies that its rules
- ** always have and always will be in effect,
- ** we only need one cycle to define the zone.
- */
- if (prodstic) {
- min_year = 1900;
- max_year = min_year + years_of_observations;
- }
- }
- max_year = max(max_year, (redundant_time / (SECSPERDAY * DAYSPERNYEAR)
- + EPOCH_YEAR + 1));
- max_year0 = max_year;
- if (want_bloat()) {
- /* For the benefit of older systems,
- generate data from 1900 through 2038. */
- if (min_year > 1900)
- min_year = 1900;
- if (max_year < 2038)
- max_year = 2038;
- }
-
- if (min_time < lo_time || hi_time < max_time)
- unspecifiedtype = addtype(0, "-00", false, false, false);
-
- for (i = 0; i < zonecount; ++i) {
- struct rule *prevrp = NULL;
- /*
- ** A guess that may well be corrected later.
- */
- zic_t save = 0;
- struct zone const *zp = &zpfirst[i];
- bool usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
- bool useuntil = i < (zonecount - 1);
- zic_t stdoff = zp->z_stdoff;
- zic_t startoff = stdoff;
- zic_t prevktime;
- INITIALIZE(prevktime);
- if (useuntil && zp->z_untiltime <= min_time)
- continue;
- eat(zp->z_filenum, zp->z_linenum);
- *startbuf = '\0';
- if (zp->z_nrules == 0) {
- int type;
- save = zp->z_save;
- doabbr(startbuf, zp, NULL, zp->z_isdst, save, false);
- type = addtype(oadd(zp->z_stdoff, save),
- startbuf, zp->z_isdst, startttisstd,
- startttisut);
- if (usestart) {
- addtt(starttime, type);
- usestart = false;
- } else
- defaulttype = type;
- } else {
- zic_t year;
- for (year = min_year; year <= max_year; ++year) {
- if (useuntil && year > zp->z_untilrule.r_hiyear)
- break;
- /*
- ** Mark which rules to do in the current year.
- ** For those to do, calculate rpytime(rp, year);
- ** The former TYPE field was also considered here.
- */
- for (j = 0; j < zp->z_nrules; ++j) {
- zic_t one = 1;
- zic_t y2038_boundary = one << 31;
- struct rule *rp = &zp->z_rules[j];
- eats(zp->z_filenum, zp->z_linenum,
- rp->r_filenum, rp->r_linenum);
- rp->r_todo = year >= rp->r_loyear &&
- year <= rp->r_hiyear;
- if (rp->r_todo) {
- rp->r_temp = rpytime(rp, year);
- rp->r_todo
- = (rp->r_temp < y2038_boundary
- || year <= max_year0);
- }
- }
- for ( ; ; ) {
- register ptrdiff_t k;
- register zic_t jtime = 0, ktime = 0;
- register zic_t offset;
- struct rule *rp;
- int type;
-
- INITIALIZE(ktime);
- if (useuntil) {
- /*
- ** Turn untiltime into UT
- ** assuming the current stdoff and
- ** save values.
- */
- untiltime = zp->z_untiltime;
- if (!zp->z_untilrule.r_todisut)
- untiltime = tadd(untiltime,
- -stdoff);
- if (!zp->z_untilrule.r_todisstd)
- untiltime = tadd(untiltime,
- -save);
- }
- /*
- ** Find the rule (of those to do, if any)
- ** that takes effect earliest in the year.
- */
- k = -1;
- for (j = 0; j < zp->z_nrules; ++j) {
- struct rule *r = &zp->z_rules[j];
- if (!r->r_todo)
- continue;
- eats(zp->z_filenum, zp->z_linenum,
- r->r_filenum, r->r_linenum);
- offset = r->r_todisut ? 0 : stdoff;
- if (!r->r_todisstd)
- offset = oadd(offset, save);
- jtime = r->r_temp;
- if (jtime == min_time ||
- jtime == max_time)
- continue;
- jtime = tadd(jtime, -offset);
- if (k < 0 || jtime < ktime) {
- k = j;
- ktime = jtime;
- } else if (jtime == ktime) {
- char const *dup_rules_msg =
- _("two rules for same instant");
- eats(zp->z_filenum, zp->z_linenum,
- r->r_filenum, r->r_linenum);
- warning("%s", dup_rules_msg);
- r = &zp->z_rules[k];
- eats(zp->z_filenum, zp->z_linenum,
- r->r_filenum, r->r_linenum);
- error("%s", dup_rules_msg);
- }
- }
- if (k < 0)
- break; /* go on to next year */
- rp = &zp->z_rules[k];
- rp->r_todo = false;
- if (useuntil && ktime >= untiltime) {
- if (!*startbuf
- && (oadd(zp->z_stdoff, rp->r_save)
- == startoff))
- doabbr(startbuf, zp, rp->r_abbrvar,
- rp->r_isdst, rp->r_save,
- false);
- break;
- }
- save = rp->r_save;
- if (usestart && ktime == starttime)
- usestart = false;
- if (usestart) {
- if (ktime < starttime) {
- startoff = oadd(zp->z_stdoff,
- save);
- doabbr(startbuf, zp,
- rp->r_abbrvar,
- rp->r_isdst,
- rp->r_save,
- false);
- continue;
- }
- if (*startbuf == '\0'
- && startoff == oadd(zp->z_stdoff,
- save)) {
- doabbr(startbuf,
- zp,
- rp->r_abbrvar,
- rp->r_isdst,
- rp->r_save,
- false);
- }
- }
- eats(zp->z_filenum, zp->z_linenum,
- rp->r_filenum, rp->r_linenum);
- doabbr(ab, zp, rp->r_abbrvar,
- rp->r_isdst, rp->r_save, false);
- offset = oadd(zp->z_stdoff, rp->r_save);
- if (!want_bloat() && !useuntil && !do_extend
- && prevrp && lo_time <= prevktime
- && redundant_time <= ktime
- && rp->r_hiyear == ZIC_MAX
- && prevrp->r_hiyear == ZIC_MAX)
- break;
- type = addtype(offset, ab, rp->r_isdst,
- rp->r_todisstd, rp->r_todisut);
- if (defaulttype < 0 && !rp->r_isdst)
- defaulttype = type;
- if (rp->r_hiyear == ZIC_MAX
- && ! (0 <= lastatmax
- && ktime < attypes[lastatmax].at))
- lastatmax = timecnt;
- addtt(ktime, type);
- prevrp = rp;
- prevktime = ktime;
- }
- }
- }
- if (usestart) {
- bool isdst = startoff != zp->z_stdoff;
- if (*startbuf == '\0' && zp->z_format)
- doabbr(startbuf, zp, disable_percent_s,
- isdst, save, false);
- eat(zp->z_filenum, zp->z_linenum);
- if (*startbuf == '\0')
-error(_("can't determine time zone abbreviation to use just after until time"));
- else {
- int type = addtype(startoff, startbuf, isdst,
- startttisstd, startttisut);
- if (defaulttype < 0 && !isdst)
- defaulttype = type;
- addtt(starttime, type);
- }
- }
- /*
- ** Now we may get to set starttime for the next zone line.
- */
- if (useuntil) {
- startttisstd = zp->z_untilrule.r_todisstd;
- startttisut = zp->z_untilrule.r_todisut;
- starttime = zp->z_untiltime;
- if (!startttisstd)
- starttime = tadd(starttime, -save);
- if (!startttisut)
- starttime = tadd(starttime, -stdoff);
- }
- }
- if (defaulttype < 0)
- defaulttype = 0;
- if (0 <= lastatmax)
- attypes[lastatmax].dontmerge = true;
- if (do_extend) {
- /*
- ** If we're extending the explicitly listed observations
- ** for 400 years because we can't fill the POSIX-TZ field,
- ** check whether we actually ended up explicitly listing
- ** observations through that period. If there aren't any
- ** near the end of the 400-year period, add a redundant
- ** one at the end of the final year, to make it clear
- ** that we are claiming to have definite knowledge of
- ** the lack of transitions up to that point.
- */
- struct rule xr;
- struct attype *lastat;
- xr.r_month = TM_JANUARY;
- xr.r_dycode = DC_DOM;
- xr.r_dayofmonth = 1;
- xr.r_tod = 0;
- for (lastat = attypes, i = 1; i < timecnt; i++)
- if (attypes[i].at > lastat->at)
- lastat = &attypes[i];
- if (!lastat || lastat->at < rpytime(&xr, max_year - 1)) {
- addtt(rpytime(&xr, max_year + 1),
- lastat ? lastat->type : defaulttype);
- attypes[timecnt - 1].dontmerge = true;
- }
- }
- writezone(zpfirst->z_name, envvar, version, defaulttype);
- free(startbuf);
- free(ab);
- free(envvar);
-}
-
-static void
-addtt(zic_t starttime, int type)
-{
- attypes = growalloc(attypes, sizeof *attypes, timecnt, &timecnt_alloc);
- attypes[timecnt].at = starttime;
- attypes[timecnt].dontmerge = false;
- attypes[timecnt].type = type;
- ++timecnt;
-}
-
-static int
-addtype(zic_t utoff, char const *abbr, bool isdst, bool ttisstd, bool ttisut)
-{
- register int i, j;
-
- if (! (-1L - 2147483647L <= utoff && utoff <= 2147483647L)) {
- error(_("UT offset out of range"));
- exit(EXIT_FAILURE);
- }
- if (!want_bloat())
- ttisstd = ttisut = false;
-
- for (j = 0; j < charcnt; ++j)
- if (strcmp(&chars[j], abbr) == 0)
- break;
- if (j == charcnt)
- newabbr(abbr);
- else {
- /* If there's already an entry, return its index. */
- for (i = 0; i < typecnt; i++)
- if (utoff == utoffs[i] && isdst == isdsts[i] && j == desigidx[i]
- && ttisstd == ttisstds[i] && ttisut == ttisuts[i])
- return i;
- }
- /*
- ** There isn't one; add a new one, unless there are already too
- ** many.
- */
- if (typecnt >= TZ_MAX_TYPES) {
- error(_("too many local time types"));
- exit(EXIT_FAILURE);
- }
- i = typecnt++;
- utoffs[i] = utoff;
- isdsts[i] = isdst;
- ttisstds[i] = ttisstd;
- ttisuts[i] = ttisut;
- desigidx[i] = j;
- return i;
-}
-
-static void
-leapadd(zic_t t, int correction, int rolling)
-{
- register int i;
-
- if (TZ_MAX_LEAPS <= leapcnt) {
- error(_("too many leap seconds"));
- exit(EXIT_FAILURE);
- }
- if (rolling && (lo_time != min_time || hi_time != max_time)) {
- error(_("Rolling leap seconds not supported with -r"));
- exit(EXIT_FAILURE);
- }
- for (i = 0; i < leapcnt; ++i)
- if (t <= trans[i])
- break;
- memmove(&trans[i + 1], &trans[i], (leapcnt - i) * sizeof *trans);
- memmove(&corr[i + 1], &corr[i], (leapcnt - i) * sizeof *corr);
- memmove(&roll[i + 1], &roll[i], (leapcnt - i) * sizeof *roll);
- trans[i] = t;
- corr[i] = correction;
- roll[i] = rolling;
- ++leapcnt;
-}
-
-static void
-adjleap(void)
-{
- register int i;
- register zic_t last = 0;
- register zic_t prevtrans = 0;
-
- /*
- ** propagate leap seconds forward
- */
- for (i = 0; i < leapcnt; ++i) {
- if (trans[i] - prevtrans < 28 * SECSPERDAY) {
- error(_("Leap seconds too close together"));
- exit(EXIT_FAILURE);
- }
- prevtrans = trans[i];
- trans[i] = tadd(trans[i], last);
- last = corr[i] += last;
- }
-
- if (0 <= leapexpires) {
- leapexpires = oadd(leapexpires, last);
- if (! (leapcnt == 0 || (trans[leapcnt - 1] < leapexpires))) {
- error(_("last Leap time does not precede Expires time"));
- exit(EXIT_FAILURE);
- }
- }
-}
-
-/* Is A a space character in the C locale? */
-static bool
-is_space(char a)
-{
- switch (a) {
- default:
- return false;
- case ' ': case '\f': case '\n': case '\r': case '\t': case '\v':
- return true;
- }
-}
-
-/* Is A an alphabetic character in the C locale? */
-static bool
-is_alpha(char a)
-{
- switch (a) {
- default:
- return false;
- case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
- case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
- case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
- case 'V': case 'W': case 'X': case 'Y': case 'Z':
- case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
- case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
- case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
- case 'v': case 'w': case 'x': case 'y': case 'z':
- return true;
- }
-}
-
-/* If A is an uppercase character in the C locale, return its lowercase
- counterpart. Otherwise, return A. */
-static char
-lowerit(char a)
-{
- switch (a) {
- default: return a;
- case 'A': return 'a'; case 'B': return 'b'; case 'C': return 'c';
- case 'D': return 'd'; case 'E': return 'e'; case 'F': return 'f';
- case 'G': return 'g'; case 'H': return 'h'; case 'I': return 'i';
- case 'J': return 'j'; case 'K': return 'k'; case 'L': return 'l';
- case 'M': return 'm'; case 'N': return 'n'; case 'O': return 'o';
- case 'P': return 'p'; case 'Q': return 'q'; case 'R': return 'r';
- case 'S': return 's'; case 'T': return 't'; case 'U': return 'u';
- case 'V': return 'v'; case 'W': return 'w'; case 'X': return 'x';
- case 'Y': return 'y'; case 'Z': return 'z';
- }
-}
-
-/* case-insensitive equality */
-static ATTRIBUTE_PURE bool
-ciequal(register const char *ap, register const char *bp)
-{
- while (lowerit(*ap) == lowerit(*bp++))
- if (*ap++ == '\0')
- return true;
- return false;
-}
-
-static ATTRIBUTE_PURE bool
-itsabbr(register const char *abbr, register const char *word)
-{
- if (lowerit(*abbr) != lowerit(*word))
- return false;
- ++word;
- while (*++abbr != '\0')
- do {
- if (*word == '\0')
- return false;
- } while (lowerit(*word++) != lowerit(*abbr));
- return true;
-}
-
-/* Return true if ABBR is an initial prefix of WORD, ignoring ASCII case. */
-
-static ATTRIBUTE_PURE bool
-ciprefix(char const *abbr, char const *word)
-{
- do
- if (!*abbr)
- return true;
- while (lowerit(*abbr++) == lowerit(*word++));
-
- return false;
-}
-
-static const struct lookup *
-byword(const char *word, const struct lookup *table)
-{
- register const struct lookup * foundlp;
- register const struct lookup * lp;
-
- if (word == NULL || table == NULL)
- return NULL;
-
- /* If TABLE is LASTS and the word starts with "last" followed
- by a non-'-', skip the "last" and look in WDAY_NAMES instead.
- Warn about any usage of the undocumented prefix "last-". */
- if (table == lasts && ciprefix("last", word) && word[4]) {
- if (word[4] == '-')
- warning(_("\"%s\" is undocumented; use \"last%s\" instead"),
- word, word + 5);
- else {
- word += 4;
- table = wday_names;
- }
- }
-
- /*
- ** Look for exact match.
- */
- for (lp = table; lp->l_word != NULL; ++lp)
- if (ciequal(word, lp->l_word))
- return lp;
- /*
- ** Look for inexact match.
- */
- foundlp = NULL;
- for (lp = table; lp->l_word != NULL; ++lp)
- if (ciprefix(word, lp->l_word)) {
- if (foundlp == NULL)
- foundlp = lp;
- else return NULL; /* multiple inexact matches */
- }
-
- if (foundlp && noise) {
- /* Warn about any backward-compatibility issue with pre-2017c zic. */
- bool pre_2017c_match = false;
- for (lp = table; lp->l_word; lp++)
- if (itsabbr(word, lp->l_word)) {
- if (pre_2017c_match) {
- warning(_("\"%s\" is ambiguous in pre-2017c zic"), word);
- break;
- }
- pre_2017c_match = true;
- }
- }
-
- return foundlp;
-}
-
-static int
-getfields(char *cp, char **array, int arrayelts)
-{
- register char * dp;
- register int nsubs;
-
- nsubs = 0;
- for ( ; ; ) {
- char *dstart;
- while (is_space(*cp))
- ++cp;
- if (*cp == '\0' || *cp == '#')
- break;
- dstart = dp = cp;
- do {
- if ((*dp = *cp++) != '"')
- ++dp;
- else while ((*dp = *cp++) != '"')
- if (*dp != '\0')
- ++dp;
- else {
- error(_("Odd number of quotation marks"));
- exit(EXIT_FAILURE);
- }
- } while (*cp && *cp != '#' && !is_space(*cp));
- if (is_space(*cp))
- ++cp;
- *dp = '\0';
- if (nsubs == arrayelts) {
- error(_("Too many input fields"));
- exit(EXIT_FAILURE);
- }
- array[nsubs++] = dstart + (*dstart == '-' && dp == dstart + 1);
- }
- return nsubs;
-}
-
-static _Noreturn void
-time_overflow(void)
-{
- error(_("time overflow"));
- exit(EXIT_FAILURE);
-}
-
-static ATTRIBUTE_PURE zic_t
-oadd(zic_t t1, zic_t t2)
-{
- if (t1 < 0 ? t2 < ZIC_MIN - t1 : ZIC_MAX - t1 < t2)
- time_overflow();
- return t1 + t2;
-}
-
-static ATTRIBUTE_PURE zic_t
-tadd(zic_t t1, zic_t t2)
-{
- if (t1 < 0) {
- if (t2 < min_time - t1) {
- if (t1 != min_time)
- time_overflow();
- return min_time;
- }
- } else {
- if (max_time - t1 < t2) {
- if (t1 != max_time)
- time_overflow();
- return max_time;
- }
- }
- return t1 + t2;
-}
-
-/*
-** Given a rule, and a year, compute the date (in seconds since January 1,
-** 1970, 00:00 LOCAL time) in that year that the rule refers to.
-*/
-
-static zic_t
-rpytime(const struct rule *rp, zic_t wantedy)
-{
- register int m, i;
- register zic_t dayoff; /* with a nod to Margaret O. */
- register zic_t t, y;
- int yrem;
-
- if (wantedy == ZIC_MIN)
- return min_time;
- if (wantedy == ZIC_MAX)
- return max_time;
- m = TM_JANUARY;
- y = EPOCH_YEAR;
-
- /* dayoff = floor((wantedy - y) / YEARSPERREPEAT) * DAYSPERREPEAT,
- sans overflow. */
- yrem = wantedy % YEARSPERREPEAT - y % YEARSPERREPEAT;
- dayoff = ((wantedy / YEARSPERREPEAT - y / YEARSPERREPEAT
- + yrem / YEARSPERREPEAT - (yrem % YEARSPERREPEAT < 0))
- * DAYSPERREPEAT);
- /* wantedy = y + ((wantedy - y) mod YEARSPERREPEAT), sans overflow. */
- wantedy = y + (yrem + 2 * YEARSPERREPEAT) % YEARSPERREPEAT;
-
- while (wantedy != y) {
- i = len_years[isleap(y)];
- dayoff = oadd(dayoff, i);
- y++;
- }
- while (m != rp->r_month) {
- i = len_months[isleap(y)][m];
- dayoff = oadd(dayoff, i);
- ++m;
- }
- i = rp->r_dayofmonth;
- if (m == TM_FEBRUARY && i == 29 && !isleap(y)) {
- if (rp->r_dycode == DC_DOWLEQ)
- --i;
- else {
- error(_("use of 2/29 in non leap-year"));
- exit(EXIT_FAILURE);
- }
- }
- --i;
- dayoff = oadd(dayoff, i);
- if (rp->r_dycode == DC_DOWGEQ || rp->r_dycode == DC_DOWLEQ) {
- /*
- ** Don't trust mod of negative numbers.
- */
- zic_t wday = ((EPOCH_WDAY + dayoff % DAYSPERWEEK + DAYSPERWEEK)
- % DAYSPERWEEK);
- while (wday != rp->r_wday)
- if (rp->r_dycode == DC_DOWGEQ) {
- dayoff = oadd(dayoff, 1);
- if (++wday >= DAYSPERWEEK)
- wday = 0;
- ++i;
- } else {
- dayoff = oadd(dayoff, -1);
- if (--wday < 0)
- wday = DAYSPERWEEK - 1;
- --i;
- }
- if (i < 0 || i >= len_months[isleap(y)][m]) {
- if (noise)
- warning(_("rule goes past start/end of month; \
-will not work with pre-2004 versions of zic"));
- }
- }
- if (dayoff < min_time / SECSPERDAY)
- return min_time;
- if (dayoff > max_time / SECSPERDAY)
- return max_time;
- t = (zic_t) dayoff * SECSPERDAY;
- return tadd(t, rp->r_tod);
-}
-
-static void
-newabbr(const char *string)
-{
- register int i;
-
- if (strcmp(string, GRANDPARENTED) != 0) {
- register const char * cp;
- const char * mp;
-
- cp = string;
- mp = NULL;
- while (is_alpha(*cp) || ('0' <= *cp && *cp <= '9')
- || *cp == '-' || *cp == '+')
- ++cp;
- if (noise && cp - string < 3)
- mp = _("time zone abbreviation has fewer than 3 characters");
- if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN)
- mp = _("time zone abbreviation has too many characters");
- if (*cp != '\0')
-mp = _("time zone abbreviation differs from POSIX standard");
- if (mp != NULL)
- warning("%s (%s)", mp, string);
- }
- i = strlen(string) + 1;
- if (charcnt + i > TZ_MAX_CHARS) {
- error(_("too many, or too long, time zone abbreviations"));
- exit(EXIT_FAILURE);
- }
- strcpy(&chars[charcnt], string);
- charcnt += i;
-}
-
-/* Ensure that the directories of ARGNAME exist, by making any missing
- ones. If ANCESTORS, do this only for ARGNAME's ancestors; otherwise,
- do it for ARGNAME too. Exit with failure if there is trouble.
- Do not consider an existing file to be trouble. */
-static void
-mkdirs(char const *argname, bool ancestors)
-{
- register char * name;
- register char * cp;
-
- cp = name = ecpyalloc(argname);
-
- /* On MS-Windows systems, do not worry about drive letters or
- backslashes, as this should suffice in practice. Time zone
- names do not use drive letters and backslashes. If the -d
- option of zic does not name an already-existing directory,
- it can use slashes to separate the already-existing
- ancestor prefix from the to-be-created subdirectories. */
-
- /* Do not mkdir a root directory, as it must exist. */
- while (*cp == '/')
- cp++;
-
- while (cp && ((cp = strchr(cp, '/')) || !ancestors)) {
- if (cp)
- *cp = '\0';
- /*
- ** Try to create it. It's OK if creation fails because
- ** the directory already exists, perhaps because some
- ** other process just created it. For simplicity do
- ** not check first whether it already exists, as that
- ** is checked anyway if the mkdir fails.
- */
- if (mkdir(name, MKDIR_UMASK) != 0) {
- /* Do not report an error if err == EEXIST, because
- some other process might have made the directory
- in the meantime. Likewise for ENOSYS, because
- Solaris 10 mkdir fails with ENOSYS if the
- directory is an automounted mount point.
- Likewise for EACCES, since mkdir can fail
- with EACCES merely because the parent directory
- is unwritable. Likewise for most other error
- numbers. */
- int err = errno;
- if (err == ELOOP || err == ENAMETOOLONG
- || err == ENOENT || err == ENOTDIR) {
- error(_("%s: Can't create directory %s: %s"),
- progname, name, strerror(err));
- exit(EXIT_FAILURE);
- }
- }
- if (cp)
- *cp++ = '/';
- }
- free(name);
-}
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/private.h
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/private.h (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone/private.h (nonexistent)
@@ -1,840 +0,0 @@
-/* Private header for tzdb code. */
-
-#ifndef PRIVATE_H
-
-#define PRIVATE_H
-
-/*
-** This file is in the public domain, so clarified as of
-** 1996-06-05 by Arthur David Olson.
-*/
-
-/*
-** This header is for use ONLY with the time conversion code.
-** There is no guarantee that it will remain unchanged,
-** or that it will remain at all.
-** Do NOT copy it to any system include directory.
-** Thank you!
-*/
-
-/* Define true, false and bool if they don't work out of the box. */
-#if __STDC_VERSION__ < 199901
-# define true 1
-# define false 0
-# define bool int
-#elif __STDC_VERSION__ < 202311
-# include <stdbool.h>
-#endif
-
-/*
-** zdump has been made independent of the rest of the time
-** conversion package to increase confidence in the verification it provides.
-** You can use zdump to help in verifying other implementations.
-** To do this, compile with -DUSE_LTZ=0 and link without the tz library.
-*/
-#ifndef USE_LTZ
-# define USE_LTZ 1
-#endif
-
-/* This string was in the Factory zone through version 2016f. */
-#define GRANDPARENTED "Local time zone must be set--see zic manual page"
-
-/*
-** Defaults for preprocessor symbols.
-** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'.
-*/
-
-#ifndef HAVE_DECL_ASCTIME_R
-# define HAVE_DECL_ASCTIME_R 1
-#endif
-
-#if !defined HAVE_GENERIC && defined __has_extension
-# if __has_extension(c_generic_selections)
-# define HAVE_GENERIC 1
-# else
-# define HAVE_GENERIC 0
-# endif
-#endif
-/* _Generic is buggy in pre-4.9 GCC. */
-#if !defined HAVE_GENERIC && defined __GNUC__
-# define HAVE_GENERIC (4 < __GNUC__ + (9 <= __GNUC_MINOR__))
-#endif
-#ifndef HAVE_GENERIC
-# define HAVE_GENERIC (201112 <= __STDC_VERSION__)
-#endif
-
-#if !defined HAVE_GETRANDOM && defined __has_include
-# if __has_include(<sys/random.h>)
-# define HAVE_GETRANDOM true
-# else
-# define HAVE_GETRANDOM false
-# endif
-#endif
-#ifndef HAVE_GETRANDOM
-# define HAVE_GETRANDOM (2 < __GLIBC__ + (25 <= __GLIBC_MINOR__))
-#endif
-
-#if !defined HAVE_GETTEXT && defined __has_include
-# if __has_include(<libintl.h>)
-# define HAVE_GETTEXT true
-# endif
-#endif
-#ifndef HAVE_GETTEXT
-# define HAVE_GETTEXT false
-#endif
-
-#ifndef HAVE_INCOMPATIBLE_CTIME_R
-# define HAVE_INCOMPATIBLE_CTIME_R 0
-#endif
-
-#ifndef HAVE_LINK
-# define HAVE_LINK 1
-#endif /* !defined HAVE_LINK */
-
-#ifndef HAVE_MALLOC_ERRNO
-# define HAVE_MALLOC_ERRNO 1
-#endif
-
-#ifndef HAVE_POSIX_DECLS
-# define HAVE_POSIX_DECLS 1
-#endif
-
-#ifndef HAVE_SETENV
-# define HAVE_SETENV 1
-#endif
-
-#ifndef HAVE_STRDUP
-# define HAVE_STRDUP 1
-#endif
-
-#ifndef HAVE_STRTOLL
-# define HAVE_STRTOLL 1
-#endif
-
-#ifndef HAVE_SYMLINK
-# define HAVE_SYMLINK 1
-#endif /* !defined HAVE_SYMLINK */
-
-#if !defined HAVE_SYS_STAT_H && defined __has_include
-# if !__has_include(<sys/stat.h>)
-# define HAVE_SYS_STAT_H false
-# endif
-#endif
-#ifndef HAVE_SYS_STAT_H
-# define HAVE_SYS_STAT_H true
-#endif
-
-#if !defined HAVE_UNISTD_H && defined __has_include
-# if !__has_include(<unistd.h>)
-# define HAVE_UNISTD_H false
-# endif
-#endif
-#ifndef HAVE_UNISTD_H
-# define HAVE_UNISTD_H true
-#endif
-
-#ifndef NETBSD_INSPIRED
-# define NETBSD_INSPIRED 1
-#endif
-
-#if HAVE_INCOMPATIBLE_CTIME_R
-# define asctime_r _incompatible_asctime_r
-# define ctime_r _incompatible_ctime_r
-#endif /* HAVE_INCOMPATIBLE_CTIME_R */
-
-/* Enable tm_gmtoff, tm_zone, and environ on GNUish systems. */
-#define _GNU_SOURCE 1
-/* Fix asctime_r on Solaris 11. */
-#define _POSIX_PTHREAD_SEMANTICS 1
-/* Enable strtoimax on pre-C99 Solaris 11. */
-#define __EXTENSIONS__ 1
-
-/* On GNUish systems where time_t might be 32 or 64 bits, use 64.
- On these platforms _FILE_OFFSET_BITS must also be 64; otherwise
- setting _TIME_BITS to 64 does not work. The code does not
- otherwise rely on _FILE_OFFSET_BITS being 64, since it does not
- use off_t or functions like 'stat' that depend on off_t. */
-#ifndef _FILE_OFFSET_BITS
-# define _FILE_OFFSET_BITS 64
-#endif
-#if !defined _TIME_BITS && _FILE_OFFSET_BITS == 64
-# define _TIME_BITS 64
-#endif
-
-/*
-** Nested includes
-*/
-
-/* Avoid clashes with NetBSD by renaming NetBSD's declarations.
- If defining the 'timezone' variable, avoid a clash with FreeBSD's
- 'timezone' function by renaming its declaration. */
-#define localtime_rz sys_localtime_rz
-#define mktime_z sys_mktime_z
-#define posix2time_z sys_posix2time_z
-#define time2posix_z sys_time2posix_z
-#if defined USG_COMPAT && USG_COMPAT == 2
-# define timezone sys_timezone
-#endif
-#define timezone_t sys_timezone_t
-#define tzalloc sys_tzalloc
-#define tzfree sys_tzfree
-#include <time.h>
-#undef localtime_rz
-#undef mktime_z
-#undef posix2time_z
-#undef time2posix_z
-#if defined USG_COMPAT && USG_COMPAT == 2
-# undef timezone
-#endif
-#undef timezone_t
-#undef tzalloc
-#undef tzfree
-
-#include <stddef.h>
-#include <string.h>
-#include <limits.h> /* for CHAR_BIT et al. */
-#include <stdlib.h>
-
-#include <errno.h>
-
-#ifndef EINVAL
-# define EINVAL ERANGE
-#endif
-
-#ifndef ELOOP
-# define ELOOP EINVAL
-#endif
-#ifndef ENAMETOOLONG
-# define ENAMETOOLONG EINVAL
-#endif
-#ifndef ENOMEM
-# define ENOMEM EINVAL
-#endif
-#ifndef ENOTSUP
-# define ENOTSUP EINVAL
-#endif
-#ifndef EOVERFLOW
-# define EOVERFLOW EINVAL
-#endif
-
-#if HAVE_GETTEXT
-# include <libintl.h>
-#endif /* HAVE_GETTEXT */
-
-#if HAVE_UNISTD_H
-# include <unistd.h> /* for R_OK, and other POSIX goodness */
-#endif /* HAVE_UNISTD_H */
-
-#ifndef HAVE_STRFTIME_L
-# if _POSIX_VERSION < 200809
-# define HAVE_STRFTIME_L 0
-# else
-# define HAVE_STRFTIME_L 1
-# endif
-#endif
-
-#ifndef USG_COMPAT
-# ifndef _XOPEN_VERSION
-# define USG_COMPAT 0
-# else
-# define USG_COMPAT 1
-# endif
-#endif
-
-#ifndef HAVE_TZNAME
-# if _POSIX_VERSION < 198808 && !USG_COMPAT
-# define HAVE_TZNAME 0
-# else
-# define HAVE_TZNAME 1
-# endif
-#endif
-
-#ifndef ALTZONE
-# if defined __sun || defined _M_XENIX
-# define ALTZONE 1
-# else
-# define ALTZONE 0
-# endif
-#endif
-
-#ifndef R_OK
-# define R_OK 4
-#endif /* !defined R_OK */
-
-/*
-** Define HAVE_STDINT_H's default value here, rather than at the
-** start, since __GLIBC__ and INTMAX_MAX's values depend on
-** previously-included files. glibc 2.1 and Solaris 10 and later have
-** stdint.h, even with pre-C99 compilers.
-*/
-#if !defined HAVE_STDINT_H && defined __has_include
-# define HAVE_STDINT_H true /* C23 __has_include implies C99 stdint.h. */
-#endif
-#ifndef HAVE_STDINT_H
-# define HAVE_STDINT_H \
- (199901 <= __STDC_VERSION__ \
- || 2 < __GLIBC__ + (1 <= __GLIBC_MINOR__) \
- || __CYGWIN__ || INTMAX_MAX)
-#endif /* !defined HAVE_STDINT_H */
-
-#if HAVE_STDINT_H
-# include <stdint.h>
-#endif /* !HAVE_STDINT_H */
-
-#ifndef HAVE_INTTYPES_H
-# define HAVE_INTTYPES_H HAVE_STDINT_H
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-/* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX. */
-#ifdef __LONG_LONG_MAX__
-# ifndef LLONG_MAX
-# define LLONG_MAX __LONG_LONG_MAX__
-# endif
-# ifndef LLONG_MIN
-# define LLONG_MIN (-1 - LLONG_MAX)
-# endif
-#endif
-
-#ifndef INT_FAST64_MAX
-# ifdef LLONG_MAX
-typedef long long int_fast64_t;
-# define INT_FAST64_MIN LLONG_MIN
-# define INT_FAST64_MAX LLONG_MAX
-# else
-# if LONG_MAX >> 31 < 0xffffffff
-Please use a compiler that supports a 64-bit integer type (or wider);
-you may need to compile with "-DHAVE_STDINT_H".
-# endif
-typedef long int_fast64_t;
-# define INT_FAST64_MIN LONG_MIN
-# define INT_FAST64_MAX LONG_MAX
-# endif
-#endif
-
-#ifndef PRIdFAST64
-# if INT_FAST64_MAX == LLONG_MAX
-# define PRIdFAST64 "lld"
-# else
-# define PRIdFAST64 "ld"
-# endif
-#endif
-
-#ifndef SCNdFAST64
-# define SCNdFAST64 PRIdFAST64
-#endif
-
-#ifndef INT_FAST32_MAX
-# if INT_MAX >> 31 == 0
-typedef long int_fast32_t;
-# define INT_FAST32_MAX LONG_MAX
-# define INT_FAST32_MIN LONG_MIN
-# else
-typedef int int_fast32_t;
-# define INT_FAST32_MAX INT_MAX
-# define INT_FAST32_MIN INT_MIN
-# endif
-#endif
-
-#ifndef INTMAX_MAX
-# ifdef LLONG_MAX
-typedef long long intmax_t;
-# if HAVE_STRTOLL
-# define strtoimax strtoll
-# endif
-# define INTMAX_MAX LLONG_MAX
-# define INTMAX_MIN LLONG_MIN
-# else
-typedef long intmax_t;
-# define INTMAX_MAX LONG_MAX
-# define INTMAX_MIN LONG_MIN
-# endif
-# ifndef strtoimax
-# define strtoimax strtol
-# endif
-#endif
-
-#ifndef PRIdMAX
-# if INTMAX_MAX == LLONG_MAX
-# define PRIdMAX "lld"
-# else
-# define PRIdMAX "ld"
-# endif
-#endif
-
-#ifndef UINT_FAST32_MAX
-typedef unsigned long uint_fast32_t;
-#endif
-
-#ifndef UINT_FAST64_MAX
-# if defined ULLONG_MAX || defined __LONG_LONG_MAX__
-typedef unsigned long long uint_fast64_t;
-# else
-# if ULONG_MAX >> 31 >> 1 < 0xffffffff
-Please use a compiler that supports a 64-bit integer type (or wider);
-you may need to compile with "-DHAVE_STDINT_H".
-# endif
-typedef unsigned long uint_fast64_t;
-# endif
-#endif
-
-#ifndef UINTMAX_MAX
-# if defined ULLONG_MAX || defined __LONG_LONG_MAX__
-typedef unsigned long long uintmax_t;
-# else
-typedef unsigned long uintmax_t;
-# endif
-#endif
-
-#ifndef PRIuMAX
-# if defined ULLONG_MAX || defined __LONG_LONG_MAX__
-# define PRIuMAX "llu"
-# else
-# define PRIuMAX "lu"
-# endif
-#endif
-
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
-
-#if 3 <= __GNUC__
-# define ATTRIBUTE_CONST __attribute__((const))
-# define ATTRIBUTE_MALLOC __attribute__((__malloc__))
-# define ATTRIBUTE_PURE __attribute__((__pure__))
-# define ATTRIBUTE_FORMAT(spec) __attribute__((__format__ spec))
-#else
-# define ATTRIBUTE_CONST /* empty */
-# define ATTRIBUTE_MALLOC /* empty */
-# define ATTRIBUTE_PURE /* empty */
-# define ATTRIBUTE_FORMAT(spec) /* empty */
-#endif
-
-#if !defined _Noreturn && __STDC_VERSION__ < 201112
-# if 2 < __GNUC__ + (8 <= __GNUC_MINOR__)
-# define _Noreturn __attribute__((__noreturn__))
-# else
-# define _Noreturn
-# endif
-#endif
-
-#if __STDC_VERSION__ < 199901 && !defined restrict
-# define restrict /* empty */
-#endif
-
-/*
-** Workarounds for compilers/systems.
-*/
-
-#ifndef EPOCH_LOCAL
-# define EPOCH_LOCAL 0
-#endif
-#ifndef EPOCH_OFFSET
-# define EPOCH_OFFSET 0
-#endif
-#ifndef RESERVE_STD_EXT_IDS
-# define RESERVE_STD_EXT_IDS 0
-#endif
-
-/* If standard C identifiers with external linkage (e.g., localtime)
- are reserved and are not already being renamed anyway, rename them
- as if compiling with '-Dtime_tz=time_t'. */
-#if !defined time_tz && RESERVE_STD_EXT_IDS && USE_LTZ
-# define time_tz time_t
-#endif
-
-/*
-** Compile with -Dtime_tz=T to build the tz package with a private
-** time_t type equivalent to T rather than the system-supplied time_t.
-** This debugging feature can test unusual design decisions
-** (e.g., time_t wider than 'long', or unsigned time_t) even on
-** typical platforms.
-*/
-#if defined time_tz || EPOCH_LOCAL || EPOCH_OFFSET != 0
-# define TZ_TIME_T 1
-#else
-# define TZ_TIME_T 0
-#endif
-
-#if defined LOCALTIME_IMPLEMENTATION && TZ_TIME_T
-static time_t sys_time(time_t *x) { return time(x); }
-#endif
-
-#if TZ_TIME_T
-
-typedef time_tz tz_time_t;
-
-# undef asctime
-# define asctime tz_asctime
-# undef asctime_r
-# define asctime_r tz_asctime_r
-# undef ctime
-# define ctime tz_ctime
-# undef ctime_r
-# define ctime_r tz_ctime_r
-# undef difftime
-# define difftime tz_difftime
-# undef gmtime
-# define gmtime tz_gmtime
-# undef gmtime_r
-# define gmtime_r tz_gmtime_r
-# undef localtime
-# define localtime tz_localtime
-# undef localtime_r
-# define localtime_r tz_localtime_r
-# undef localtime_rz
-# define localtime_rz tz_localtime_rz
-# undef mktime
-# define mktime tz_mktime
-# undef mktime_z
-# define mktime_z tz_mktime_z
-# undef offtime
-# define offtime tz_offtime
-# undef posix2time
-# define posix2time tz_posix2time
-# undef posix2time_z
-# define posix2time_z tz_posix2time_z
-# undef strftime
-# define strftime tz_strftime
-# undef time
-# define time tz_time
-# undef time2posix
-# define time2posix tz_time2posix
-# undef time2posix_z
-# define time2posix_z tz_time2posix_z
-# undef time_t
-# define time_t tz_time_t
-# undef timegm
-# define timegm tz_timegm
-# undef timelocal
-# define timelocal tz_timelocal
-# undef timeoff
-# define timeoff tz_timeoff
-# undef tzalloc
-# define tzalloc tz_tzalloc
-# undef tzfree
-# define tzfree tz_tzfree
-# undef tzset
-# define tzset tz_tzset
-# if HAVE_STRFTIME_L
-# undef strftime_l
-# define strftime_l tz_strftime_l
-# endif
-# if HAVE_TZNAME
-# undef tzname
-# define tzname tz_tzname
-# endif
-# if USG_COMPAT
-# undef daylight
-# define daylight tz_daylight
-# undef timezone
-# define timezone tz_timezone
-# endif
-# if ALTZONE
-# undef altzone
-# define altzone tz_altzone
-# endif
-
-char *asctime(struct tm const *);
-char *asctime_r(struct tm const *restrict, char *restrict);
-char *ctime(time_t const *);
-char *ctime_r(time_t const *, char *);
-double difftime(time_t, time_t) ATTRIBUTE_CONST;
-size_t strftime(char *restrict, size_t, char const *restrict,
- struct tm const *restrict);
-# if HAVE_STRFTIME_L
-size_t strftime_l(char *restrict, size_t, char const *restrict,
- struct tm const *restrict, locale_t);
-# endif
-struct tm *gmtime(time_t const *);
-struct tm *gmtime_r(time_t const *restrict, struct tm *restrict);
-struct tm *localtime(time_t const *);
-struct tm *localtime_r(time_t const *restrict, struct tm *restrict);
-time_t mktime(struct tm *);
-time_t time(time_t *);
-void tzset(void);
-#endif
-
-#if !HAVE_DECL_ASCTIME_R && !defined asctime_r
-extern char *asctime_r(struct tm const *restrict, char *restrict);
-#endif
-
-#ifndef HAVE_DECL_ENVIRON
-# if defined environ || defined __USE_GNU
-# define HAVE_DECL_ENVIRON 1
-# else
-# define HAVE_DECL_ENVIRON 0
-# endif
-#endif
-
-#if !HAVE_DECL_ENVIRON
-extern char **environ;
-#endif
-
-#if 2 <= HAVE_TZNAME + (TZ_TIME_T || !HAVE_POSIX_DECLS)
-extern char *tzname[];
-#endif
-#if 2 <= USG_COMPAT + (TZ_TIME_T || !HAVE_POSIX_DECLS)
-extern long timezone;
-extern int daylight;
-#endif
-#if 2 <= ALTZONE + (TZ_TIME_T || !HAVE_POSIX_DECLS)
-extern long altzone;
-#endif
-
-/*
-** The STD_INSPIRED functions are similar, but most also need
-** declarations if time_tz is defined.
-*/
-
-#ifdef STD_INSPIRED
-# if TZ_TIME_T || !defined offtime
-struct tm *offtime(time_t const *, long);
-# endif
-# if TZ_TIME_T || !defined timegm
-time_t timegm(struct tm *);
-# endif
-# if TZ_TIME_T || !defined timelocal
-time_t timelocal(struct tm *);
-# endif
-# if TZ_TIME_T || !defined timeoff
-time_t timeoff(struct tm *, long);
-# endif
-# if TZ_TIME_T || !defined time2posix
-time_t time2posix(time_t);
-# endif
-# if TZ_TIME_T || !defined posix2time
-time_t posix2time(time_t);
-# endif
-#endif
-
-/* Infer TM_ZONE on systems where this information is known, but suppress
- guessing if NO_TM_ZONE is defined. Similarly for TM_GMTOFF. */
-#if (defined __GLIBC__ \
- || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \
- || (defined __APPLE__ && defined __MACH__))
-# if !defined TM_GMTOFF && !defined NO_TM_GMTOFF
-# define TM_GMTOFF tm_gmtoff
-# endif
-# if !defined TM_ZONE && !defined NO_TM_ZONE
-# define TM_ZONE tm_zone
-# endif
-#endif
-
-/*
-** Define functions that are ABI compatible with NetBSD but have
-** better prototypes. NetBSD 6.1.4 defines a pointer type timezone_t
-** and labors under the misconception that 'const timezone_t' is a
-** pointer to a constant. This use of 'const' is ineffective, so it
-** is not done here. What we call 'struct state' NetBSD calls
-** 'struct __state', but this is a private name so it doesn't matter.
-*/
-#if NETBSD_INSPIRED
-typedef struct state *timezone_t;
-struct tm *localtime_rz(timezone_t restrict, time_t const *restrict,
- struct tm *restrict);
-time_t mktime_z(timezone_t restrict, struct tm *restrict);
-timezone_t tzalloc(char const *);
-void tzfree(timezone_t);
-# ifdef STD_INSPIRED
-# if TZ_TIME_T || !defined posix2time_z
-time_t posix2time_z(timezone_t, time_t) ATTRIBUTE_PURE;
-# endif
-# if TZ_TIME_T || !defined time2posix_z
-time_t time2posix_z(timezone_t, time_t) ATTRIBUTE_PURE;
-# endif
-# endif
-#endif
-
-/*
-** Finally, some convenience items.
-*/
-
-#define TYPE_BIT(type) (sizeof(type) * CHAR_BIT)
-#define TYPE_SIGNED(type) (((type) -1) < 0)
-#define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0)
-
-/* Minimum and maximum of two values. Use lower case to avoid
- naming clashes with standard include files. */
-#define max(a, b) ((a) > (b) ? (a) : (b))
-#define min(a, b) ((a) < (b) ? (a) : (b))
-
-/* Max and min values of the integer type T, of which only the bottom
- B bits are used, and where the highest-order used bit is considered
- to be a sign bit if T is signed. */
-#define MAXVAL(t, b) \
- ((t) (((t) 1 << ((b) - 1 - TYPE_SIGNED(t))) \
- - 1 + ((t) 1 << ((b) - 1 - TYPE_SIGNED(t)))))
-#define MINVAL(t, b) \
- ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0))
-
-/* The extreme time values, assuming no padding. */
-#define TIME_T_MIN_NO_PADDING MINVAL(time_t, TYPE_BIT(time_t))
-#define TIME_T_MAX_NO_PADDING MAXVAL(time_t, TYPE_BIT(time_t))
-
-/* The extreme time values. These are macros, not constants, so that
- any portability problems occur only when compiling .c files that use
- the macros, which is safer for applications that need only zdump and zic.
- This implementation assumes no padding if time_t is signed and
- either the compiler lacks support for _Generic or time_t is not one
- of the standard signed integer types. */
-#if HAVE_GENERIC
-# define TIME_T_MIN \
- _Generic((time_t) 0, \
- signed char: SCHAR_MIN, short: SHRT_MIN, \
- int: INT_MIN, long: LONG_MIN, long long: LLONG_MIN, \
- default: TIME_T_MIN_NO_PADDING)
-# define TIME_T_MAX \
- (TYPE_SIGNED(time_t) \
- ? _Generic((time_t) 0, \
- signed char: SCHAR_MAX, short: SHRT_MAX, \
- int: INT_MAX, long: LONG_MAX, long long: LLONG_MAX, \
- default: TIME_T_MAX_NO_PADDING) \
- : (time_t) -1)
-#else
-# define TIME_T_MIN TIME_T_MIN_NO_PADDING
-# define TIME_T_MAX TIME_T_MAX_NO_PADDING
-#endif
-
-/*
-** 302 / 1000 is log10(2.0) rounded up.
-** Subtract one for the sign bit if the type is signed;
-** add one for integer division truncation;
-** add one more for a minus sign if the type is signed.
-*/
-#define INT_STRLEN_MAXIMUM(type) \
- ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
- 1 + TYPE_SIGNED(type))
-
-/*
-** INITIALIZE(x)
-*/
-
-#ifdef GCC_LINT
-# define INITIALIZE(x) ((x) = 0)
-#else
-# define INITIALIZE(x)
-#endif
-
-/* Whether memory access must strictly follow the C standard.
- If 0, it's OK to read uninitialized storage so long as the value is
- not relied upon. Defining it to 0 lets mktime access parts of
- struct tm that might be uninitialized, as a heuristic when the
- standard doesn't say what to return and when tm_gmtoff can help
- mktime likely infer a better value. */
-#ifndef UNINIT_TRAP
-# define UNINIT_TRAP 0
-#endif
-
-#ifdef DEBUG
-# undef unreachable
-# define unreachable() abort()
-#elif !defined unreachable
-# ifdef __has_builtin
-# if __has_builtin(__builtin_unreachable)
-# define unreachable() __builtin_unreachable()
-# endif
-# elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
-# define unreachable() __builtin_unreachable()
-# endif
-# ifndef unreachable
-# define unreachable() ((void) 0)
-# endif
-#endif
-
-/*
-** For the benefit of GNU folk...
-** '_(MSGID)' uses the current locale's message library string for MSGID.
-** The default is to use gettext if available, and use MSGID otherwise.
-*/
-
-#ifndef _
-#if HAVE_GETTEXT
-#define _(msgid) gettext(msgid)
-#else /* !HAVE_GETTEXT */
-#define _(msgid) msgid
-#endif /* !HAVE_GETTEXT */
-#endif /* !defined _ */
-
-#if !defined TZ_DOMAIN && defined HAVE_GETTEXT
-# define TZ_DOMAIN "tz"
-#endif
-
-#if HAVE_INCOMPATIBLE_CTIME_R
-#undef asctime_r
-#undef ctime_r
-char *asctime_r(struct tm const *, char *);
-char *ctime_r(time_t const *, char *);
-#endif /* HAVE_INCOMPATIBLE_CTIME_R */
-
-/* Handy macros that are independent of tzfile implementation. */
-
-enum {
- SECSPERMIN = 60,
- MINSPERHOUR = 60,
- SECSPERHOUR = SECSPERMIN * MINSPERHOUR,
- HOURSPERDAY = 24,
- DAYSPERWEEK = 7,
- DAYSPERNYEAR = 365,
- DAYSPERLYEAR = DAYSPERNYEAR + 1,
- MONSPERYEAR = 12,
- YEARSPERREPEAT = 400 /* years before a Gregorian repeat */
-};
-
-#define SECSPERDAY ((int_fast32_t) SECSPERHOUR * HOURSPERDAY)
-
-#define DAYSPERREPEAT ((int_fast32_t) 400 * 365 + 100 - 4 + 1)
-#define SECSPERREPEAT ((int_fast64_t) DAYSPERREPEAT * SECSPERDAY)
-#define AVGSECSPERYEAR (SECSPERREPEAT / YEARSPERREPEAT)
-
-enum {
- TM_SUNDAY,
- TM_MONDAY,
- TM_TUESDAY,
- TM_WEDNESDAY,
- TM_THURSDAY,
- TM_FRIDAY,
- TM_SATURDAY
-};
-
-enum {
- TM_JANUARY,
- TM_FEBRUARY,
- TM_MARCH,
- TM_APRIL,
- TM_MAY,
- TM_JUNE,
- TM_JULY,
- TM_AUGUST,
- TM_SEPTEMBER,
- TM_OCTOBER,
- TM_NOVEMBER,
- TM_DECEMBER
-};
-
-enum {
- TM_YEAR_BASE = 1900,
- TM_WDAY_BASE = TM_MONDAY,
- EPOCH_YEAR = 1970,
- EPOCH_WDAY = TM_THURSDAY
-};
-
-#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
-
-/*
-** Since everything in isleap is modulo 400 (or a factor of 400), we know that
-** isleap(y) == isleap(y % 400)
-** and so
-** isleap(a + b) == isleap((a + b) % 400)
-** or
-** isleap(a + b) == isleap(a % 400 + b % 400)
-** This is true even if % means modulo rather than Fortran remainder
-** (which is allowed by C89 but not by C99 or later).
-** We use this to avoid addition overflow problems.
-*/
-
-#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
-
-#endif /* !defined PRIVATE_H */
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone (nonexistent)
Property changes on: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new/timezone
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new (nonexistent)
Property changes on: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch/glibc-2.36-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch
===================================================================
--- radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch (revision 34)
+++ radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch (nonexistent)
Property changes on: radix-1.9/sources/iana/tz/create-2022f-glibc-2.36-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/iana/tz/Makefile
===================================================================
--- radix-1.9/sources/iana/tz/Makefile (revision 34)
+++ radix-1.9/sources/iana/tz/Makefile (revision 35)
@@ -7,7 +7,7 @@
url = $(DOWNLOAD_SERVER)/sources/iana/tz
-versions = 2022f
+versions = 2023c
tarballs = $(sort \
$(shell \
@@ -18,8 +18,8 @@
)
sha1s = $(addsuffix .sha1sum, $(tarballs))
-patches = $(CURDIR)/patches/glibc-2.36-tzcode-2022f.patch
-patches += $(CURDIR)/patches/tzcode-2022f-version.patch
+patches = $(CURDIR)/patches/glibc-2.37-tzcode-2023c.patch
+patches += $(CURDIR)/patches/tzcode-2023c-version.patch
.NOTPARALLEL: $(patches)
@@ -54,8 +54,8 @@
$(patches): $(sha1s)
@echo -e "\n======= Create Patches =======\n" ; \
- ( cd create-2022f-glibc-2.36-patch ; ./create.patch.sh ) ; \
- ( cd create-2022f-version-patch ; ./create.patch.sh ) ; \
+ ( cd create-2023c-glibc-2.37-patch ; ./create.patch.sh ) ; \
+ ( cd create-2023c-version-patch ; ./create.patch.sh ) ; \
echo -e "\n"
download_clean:
Index: radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/create.patch.sh (revision 35)
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+VERSION=2023c
+GLIBC_VERSION=2.37
+
+mkdir -p glibc-$GLIBC_VERSION/timezone
+tar -C glibc-$GLIBC_VERSION/timezone --files-from=file.list -xzvf ../tzcode$VERSION.tar.gz
+mv glibc-$GLIBC_VERSION glibc-$GLIBC_VERSION-orig
+
+cp -rf ./glibc-$GLIBC_VERSION-new ./glibc-$GLIBC_VERSION
+
+diff --unified -Nr glibc-$GLIBC_VERSION-orig glibc-$GLIBC_VERSION > glibc-$GLIBC_VERSION-tzcode-$VERSION.patch
+
+mv glibc-$GLIBC_VERSION-tzcode-$VERSION.patch ../patches
+
+rm -rf ./glibc-$GLIBC_VERSION
+rm -rf ./glibc-$GLIBC_VERSION-orig
Property changes on: radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/file.list
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/file.list (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/file.list (revision 35)
@@ -0,0 +1,3 @@
+private.h
+zdump.c
+zic.c
Index: radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/private.h
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/private.h (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/private.h (revision 35)
@@ -0,0 +1,1008 @@
+/* Private header for tzdb code. */
+
+#ifndef PRIVATE_H
+
+#define PRIVATE_H
+
+/*
+** This file is in the public domain, so clarified as of
+** 1996-06-05 by Arthur David Olson.
+*/
+
+/*
+** This header is for use ONLY with the time conversion code.
+** There is no guarantee that it will remain unchanged,
+** or that it will remain at all.
+** Do NOT copy it to any system include directory.
+** Thank you!
+*/
+
+/* PORT_TO_C89 means the code should work even if the underlying
+ compiler and library support only C89. SUPPORT_C89 means the
+ tzcode library should support C89 callers in addition to the usual
+ support for C99-and-later callers. These macros are obsolescent,
+ and the plan is to remove them along with any code needed only when
+ they are nonzero. */
+#ifndef PORT_TO_C89
+# define PORT_TO_C89 0
+#endif
+#ifndef SUPPORT_C89
+# define SUPPORT_C89 0
+#endif
+
+#ifndef __STDC_VERSION__
+# define __STDC_VERSION__ 0
+#endif
+
+/* Define true, false and bool if they don't work out of the box. */
+#if PORT_TO_C89 && __STDC_VERSION__ < 199901
+# define true 1
+# define false 0
+# define bool int
+#elif __STDC_VERSION__ < 202311
+# include <stdbool.h>
+#endif
+
+#if __STDC_VERSION__ < 202311
+# define static_assert(cond) extern int static_assert_check[(cond) ? 1 : -1]
+#endif
+
+/*
+** zdump has been made independent of the rest of the time
+** conversion package to increase confidence in the verification it provides.
+** You can use zdump to help in verifying other implementations.
+** To do this, compile with -DUSE_LTZ=0 and link without the tz library.
+*/
+#ifndef USE_LTZ
+# define USE_LTZ 1
+#endif
+
+/* This string was in the Factory zone through version 2016f. */
+#define GRANDPARENTED "Local time zone must be set--see zic manual page"
+
+/*
+** Defaults for preprocessor symbols.
+** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'.
+*/
+
+#ifndef HAVE_DECL_ASCTIME_R
+# define HAVE_DECL_ASCTIME_R 1
+#endif
+
+#if !defined HAVE__GENERIC && defined __has_extension
+# if __has_extension(c_generic_selections)
+# define HAVE__GENERIC 1
+# else
+# define HAVE__GENERIC 0
+# endif
+#endif
+/* _Generic is buggy in pre-4.9 GCC. */
+#if !defined HAVE__GENERIC && defined __GNUC__ && !defined __STRICT_ANSI__
+# define HAVE__GENERIC (4 < __GNUC__ + (9 <= __GNUC_MINOR__))
+#endif
+#ifndef HAVE__GENERIC
+# define HAVE__GENERIC (201112 <= __STDC_VERSION__)
+#endif
+
+#if !defined HAVE_GETTEXT && defined __has_include
+# if __has_include(<libintl.h>)
+# define HAVE_GETTEXT true
+# endif
+#endif
+#ifndef HAVE_GETTEXT
+# define HAVE_GETTEXT false
+#endif
+
+#ifndef HAVE_INCOMPATIBLE_CTIME_R
+# define HAVE_INCOMPATIBLE_CTIME_R 0
+#endif
+
+#ifndef HAVE_LINK
+# define HAVE_LINK 1
+#endif /* !defined HAVE_LINK */
+
+#ifndef HAVE_MALLOC_ERRNO
+# define HAVE_MALLOC_ERRNO 1
+#endif
+
+#ifndef HAVE_POSIX_DECLS
+# define HAVE_POSIX_DECLS 1
+#endif
+
+#ifndef HAVE_SETENV
+# define HAVE_SETENV 1
+#endif
+
+#ifndef HAVE_STRDUP
+# define HAVE_STRDUP 1
+#endif
+
+#ifndef HAVE_SYMLINK
+# define HAVE_SYMLINK 1
+#endif /* !defined HAVE_SYMLINK */
+
+#if !defined HAVE_SYS_STAT_H && defined __has_include
+# if !__has_include(<sys/stat.h>)
+# define HAVE_SYS_STAT_H false
+# endif
+#endif
+#ifndef HAVE_SYS_STAT_H
+# define HAVE_SYS_STAT_H true
+#endif
+
+#if !defined HAVE_UNISTD_H && defined __has_include
+# if !__has_include(<unistd.h>)
+# define HAVE_UNISTD_H false
+# endif
+#endif
+#ifndef HAVE_UNISTD_H
+# define HAVE_UNISTD_H true
+#endif
+
+#ifndef NETBSD_INSPIRED
+# define NETBSD_INSPIRED 1
+#endif
+
+#if HAVE_INCOMPATIBLE_CTIME_R
+# define asctime_r _incompatible_asctime_r
+# define ctime_r _incompatible_ctime_r
+#endif /* HAVE_INCOMPATIBLE_CTIME_R */
+
+/* Enable tm_gmtoff, tm_zone, and environ on GNUish systems. */
+#define _GNU_SOURCE 1
+/* Fix asctime_r on Solaris 11. */
+#define _POSIX_PTHREAD_SEMANTICS 1
+/* Enable strtoimax on pre-C99 Solaris 11. */
+#define __EXTENSIONS__ 1
+
+/* On GNUish systems where time_t might be 32 or 64 bits, use 64.
+ On these platforms _FILE_OFFSET_BITS must also be 64; otherwise
+ setting _TIME_BITS to 64 does not work. The code does not
+ otherwise rely on _FILE_OFFSET_BITS being 64, since it does not
+ use off_t or functions like 'stat' that depend on off_t. */
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+#endif
+#if !defined _TIME_BITS && _FILE_OFFSET_BITS == 64
+# define _TIME_BITS 64
+#endif
+
+/*
+** Nested includes
+*/
+
+/* Avoid clashes with NetBSD by renaming NetBSD's declarations.
+ If defining the 'timezone' variable, avoid a clash with FreeBSD's
+ 'timezone' function by renaming its declaration. */
+#define localtime_rz sys_localtime_rz
+#define mktime_z sys_mktime_z
+#define posix2time_z sys_posix2time_z
+#define time2posix_z sys_time2posix_z
+#if defined USG_COMPAT && USG_COMPAT == 2
+# define timezone sys_timezone
+#endif
+#define timezone_t sys_timezone_t
+#define tzalloc sys_tzalloc
+#define tzfree sys_tzfree
+#include <time.h>
+#undef localtime_rz
+#undef mktime_z
+#undef posix2time_z
+#undef time2posix_z
+#if defined USG_COMPAT && USG_COMPAT == 2
+# undef timezone
+#endif
+#undef timezone_t
+#undef tzalloc
+#undef tzfree
+
+#include <stddef.h>
+#include <string.h>
+#if !PORT_TO_C89
+# include <inttypes.h>
+#endif
+#include <limits.h> /* for CHAR_BIT et al. */
+#include <stdlib.h>
+
+#include <errno.h>
+
+#ifndef EINVAL
+# define EINVAL ERANGE
+#endif
+
+#ifndef ELOOP
+# define ELOOP EINVAL
+#endif
+#ifndef ENAMETOOLONG
+# define ENAMETOOLONG EINVAL
+#endif
+#ifndef ENOMEM
+# define ENOMEM EINVAL
+#endif
+#ifndef ENOTSUP
+# define ENOTSUP EINVAL
+#endif
+#ifndef EOVERFLOW
+# define EOVERFLOW EINVAL
+#endif
+
+#if HAVE_GETTEXT
+# include <libintl.h>
+#endif /* HAVE_GETTEXT */
+
+#if HAVE_UNISTD_H
+# include <unistd.h> /* for R_OK, and other POSIX goodness */
+#endif /* HAVE_UNISTD_H */
+
+#ifndef HAVE_STRFTIME_L
+# if _POSIX_VERSION < 200809
+# define HAVE_STRFTIME_L 0
+# else
+# define HAVE_STRFTIME_L 1
+# endif
+#endif
+
+#ifndef USG_COMPAT
+# ifndef _XOPEN_VERSION
+# define USG_COMPAT 0
+# else
+# define USG_COMPAT 1
+# endif
+#endif
+
+#ifndef HAVE_TZNAME
+# if _POSIX_VERSION < 198808 && !USG_COMPAT
+# define HAVE_TZNAME 0
+# else
+# define HAVE_TZNAME 1
+# endif
+#endif
+
+#ifndef ALTZONE
+# if defined __sun || defined _M_XENIX
+# define ALTZONE 1
+# else
+# define ALTZONE 0
+# endif
+#endif
+
+#ifndef R_OK
+# define R_OK 4
+#endif /* !defined R_OK */
+
+#if PORT_TO_C89
+
+/*
+** Define HAVE_STDINT_H's default value here, rather than at the
+** start, since __GLIBC__ and INTMAX_MAX's values depend on
+** previously included files. glibc 2.1 and Solaris 10 and later have
+** stdint.h, even with pre-C99 compilers.
+*/
+#if !defined HAVE_STDINT_H && defined __has_include
+# define HAVE_STDINT_H true /* C23 __has_include implies C99 stdint.h. */
+#endif
+#ifndef HAVE_STDINT_H
+# define HAVE_STDINT_H \
+ (199901 <= __STDC_VERSION__ \
+ || 2 < __GLIBC__ + (1 <= __GLIBC_MINOR__) \
+ || __CYGWIN__ || INTMAX_MAX)
+#endif /* !defined HAVE_STDINT_H */
+
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif /* !HAVE_STDINT_H */
+
+#ifndef HAVE_INTTYPES_H
+# define HAVE_INTTYPES_H HAVE_STDINT_H
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+/* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX. */
+#if defined __LONG_LONG_MAX__ && !defined __STRICT_ANSI__
+# ifndef LLONG_MAX
+# define LLONG_MAX __LONG_LONG_MAX__
+# endif
+# ifndef LLONG_MIN
+# define LLONG_MIN (-1 - LLONG_MAX)
+# endif
+# ifndef ULLONG_MAX
+# define ULLONG_MAX (LLONG_MAX * 2ull + 1)
+# endif
+#endif
+
+#ifndef INT_FAST64_MAX
+# if 1 <= LONG_MAX >> 31 >> 31
+typedef long int_fast64_t;
+# define INT_FAST64_MIN LONG_MIN
+# define INT_FAST64_MAX LONG_MAX
+# else
+/* If this fails, compile with -DHAVE_STDINT_H or with a better compiler. */
+typedef long long int_fast64_t;
+# define INT_FAST64_MIN LLONG_MIN
+# define INT_FAST64_MAX LLONG_MAX
+# endif
+#endif
+
+#ifndef PRIdFAST64
+# if INT_FAST64_MAX == LONG_MAX
+# define PRIdFAST64 "ld"
+# else
+# define PRIdFAST64 "lld"
+# endif
+#endif
+
+#ifndef SCNdFAST64
+# define SCNdFAST64 PRIdFAST64
+#endif
+
+#ifndef INT_FAST32_MAX
+# if INT_MAX >> 31 == 0
+typedef long int_fast32_t;
+# define INT_FAST32_MAX LONG_MAX
+# define INT_FAST32_MIN LONG_MIN
+# else
+typedef int int_fast32_t;
+# define INT_FAST32_MAX INT_MAX
+# define INT_FAST32_MIN INT_MIN
+# endif
+#endif
+
+#ifndef INTMAX_MAX
+# ifdef LLONG_MAX
+typedef long long intmax_t;
+# ifndef HAVE_STRTOLL
+# define HAVE_STRTOLL true
+# endif
+# if HAVE_STRTOLL
+# define strtoimax strtoll
+# endif
+# define INTMAX_MAX LLONG_MAX
+# define INTMAX_MIN LLONG_MIN
+# else
+typedef long intmax_t;
+# define INTMAX_MAX LONG_MAX
+# define INTMAX_MIN LONG_MIN
+# endif
+# ifndef strtoimax
+# define strtoimax strtol
+# endif
+#endif
+
+#ifndef PRIdMAX
+# if INTMAX_MAX == LLONG_MAX
+# define PRIdMAX "lld"
+# else
+# define PRIdMAX "ld"
+# endif
+#endif
+
+#ifndef PTRDIFF_MAX
+# define PTRDIFF_MAX MAXVAL(ptrdiff_t, TYPE_BIT(ptrdiff_t))
+#endif
+
+#ifndef UINT_FAST32_MAX
+typedef unsigned long uint_fast32_t;
+#endif
+
+#ifndef UINT_FAST64_MAX
+# if 3 <= ULONG_MAX >> 31 >> 31
+typedef unsigned long uint_fast64_t;
+# define UINT_FAST64_MAX ULONG_MAX
+# else
+/* If this fails, compile with -DHAVE_STDINT_H or with a better compiler. */
+typedef unsigned long long uint_fast64_t;
+# define UINT_FAST64_MAX ULLONG_MAX
+# endif
+#endif
+
+#ifndef UINTMAX_MAX
+# ifdef ULLONG_MAX
+typedef unsigned long long uintmax_t;
+# define UINTMAX_MAX ULLONG_MAX
+# else
+typedef unsigned long uintmax_t;
+# define UINTMAX_MAX ULONG_MAX
+# endif
+#endif
+
+#ifndef PRIuMAX
+# ifdef ULLONG_MAX
+# define PRIuMAX "llu"
+# else
+# define PRIuMAX "lu"
+# endif
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#endif /* PORT_TO_C89 */
+
+/* The maximum size of any created object, as a signed integer.
+ Although the C standard does not outright prohibit larger objects,
+ behavior is undefined if the result of pointer subtraction does not
+ fit into ptrdiff_t, and the code assumes in several places that
+ pointer subtraction works. As a practical matter it's OK to not
+ support objects larger than this. */
+#define INDEX_MAX ((ptrdiff_t) min(PTRDIFF_MAX, SIZE_MAX))
+
+/* Support ckd_add, ckd_sub, ckd_mul on C23 or recent-enough GCC-like
+ hosts, unless compiled with -DHAVE_STDCKDINT_H=0 or with pre-C23 EDG. */
+#if !defined HAVE_STDCKDINT_H && defined __has_include
+# if __has_include(<stdckdint.h>)
+# define HAVE_STDCKDINT_H true
+# endif
+#endif
+#ifdef HAVE_STDCKDINT_H
+# if HAVE_STDCKDINT_H
+# include <stdckdint.h>
+# endif
+#elif defined __EDG__
+/* Do nothing, to work around EDG bug <https://bugs.gnu.org/53256>. */
+#elif defined __has_builtin
+# if __has_builtin(__builtin_add_overflow)
+# define ckd_add(r, a, b) __builtin_add_overflow(a, b, r)
+# endif
+# if __has_builtin(__builtin_sub_overflow)
+# define ckd_sub(r, a, b) __builtin_sub_overflow(a, b, r)
+# endif
+# if __has_builtin(__builtin_mul_overflow)
+# define ckd_mul(r, a, b) __builtin_mul_overflow(a, b, r)
+# endif
+#elif 7 <= __GNUC__
+# define ckd_add(r, a, b) __builtin_add_overflow(a, b, r)
+# define ckd_sub(r, a, b) __builtin_sub_overflow(a, b, r)
+# define ckd_mul(r, a, b) __builtin_mul_overflow(a, b, r)
+#endif
+
+#if 3 <= __GNUC__
+# define ATTRIBUTE_MALLOC __attribute__((malloc))
+# define ATTRIBUTE_FORMAT(spec) __attribute__((format spec))
+#else
+# define ATTRIBUTE_MALLOC /* empty */
+# define ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+#if (defined __has_c_attribute \
+ && (202311 <= __STDC_VERSION__ || !defined __STRICT_ANSI__))
+# define HAVE___HAS_C_ATTRIBUTE true
+#else
+# define HAVE___HAS_C_ATTRIBUTE false
+#endif
+
+#if HAVE___HAS_C_ATTRIBUTE
+# if __has_c_attribute(deprecated)
+# define ATTRIBUTE_DEPRECATED [[deprecated]]
+# endif
+#endif
+#ifndef ATTRIBUTE_DEPRECATED
+# if 3 < __GNUC__ + (2 <= __GNUC_MINOR__)
+# define ATTRIBUTE_DEPRECATED __attribute__((deprecated))
+# else
+# define ATTRIBUTE_DEPRECATED /* empty */
+# endif
+#endif
+
+#if HAVE___HAS_C_ATTRIBUTE
+# if __has_c_attribute(fallthrough)
+# define ATTRIBUTE_FALLTHROUGH [[fallthrough]]
+# endif
+#endif
+#ifndef ATTRIBUTE_FALLTHROUGH
+# if 7 <= __GNUC__
+# define ATTRIBUTE_FALLTHROUGH __attribute__((fallthrough))
+# else
+# define ATTRIBUTE_FALLTHROUGH ((void) 0)
+# endif
+#endif
+
+#if HAVE___HAS_C_ATTRIBUTE
+# if __has_c_attribute(maybe_unused)
+# define ATTRIBUTE_MAYBE_UNUSED [[maybe_unused]]
+# endif
+#endif
+#ifndef ATTRIBUTE_MAYBE_UNUSED
+# if 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define ATTRIBUTE_MAYBE_UNUSED __attribute__((unused))
+# else
+# define ATTRIBUTE_MAYBE_UNUSED /* empty */
+# endif
+#endif
+
+#if HAVE___HAS_C_ATTRIBUTE
+# if __has_c_attribute(noreturn)
+# define ATTRIBUTE_NORETURN [[noreturn]]
+# endif
+#endif
+#ifndef ATTRIBUTE_NORETURN
+# if 201112 <= __STDC_VERSION__
+# define ATTRIBUTE_NORETURN _Noreturn
+# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__)
+# define ATTRIBUTE_NORETURN __attribute__((noreturn))
+# else
+# define ATTRIBUTE_NORETURN /* empty */
+# endif
+#endif
+
+#if HAVE___HAS_C_ATTRIBUTE
+# if __has_c_attribute(reproducible)
+# define ATTRIBUTE_REPRODUCIBLE [[reproducible]]
+# endif
+#endif
+#ifndef ATTRIBUTE_REPRODUCIBLE
+# if 3 <= __GNUC__
+# define ATTRIBUTE_REPRODUCIBLE __attribute__((pure))
+# else
+# define ATTRIBUTE_REPRODUCIBLE /* empty */
+# endif
+#endif
+
+#if HAVE___HAS_C_ATTRIBUTE
+# if __has_c_attribute(unsequenced)
+# define ATTRIBUTE_UNSEQUENCED [[unsequenced]]
+# endif
+#endif
+#ifndef ATTRIBUTE_UNSEQUENCED
+# if 3 <= __GNUC__
+# define ATTRIBUTE_UNSEQUENCED __attribute__((const))
+# else
+# define ATTRIBUTE_UNSEQUENCED /* empty */
+# endif
+#endif
+
+#if (__STDC_VERSION__ < 199901 && !defined restrict \
+ && (PORT_TO_C89 || defined _MSC_VER))
+# define restrict /* empty */
+#endif
+
+/*
+** Workarounds for compilers/systems.
+*/
+
+#ifndef EPOCH_LOCAL
+# define EPOCH_LOCAL 0
+#endif
+#ifndef EPOCH_OFFSET
+# define EPOCH_OFFSET 0
+#endif
+#ifndef RESERVE_STD_EXT_IDS
+# define RESERVE_STD_EXT_IDS 0
+#endif
+
+/* If standard C identifiers with external linkage (e.g., localtime)
+ are reserved and are not already being renamed anyway, rename them
+ as if compiling with '-Dtime_tz=time_t'. */
+#if !defined time_tz && RESERVE_STD_EXT_IDS && USE_LTZ
+# define time_tz time_t
+#endif
+
+/*
+** Compile with -Dtime_tz=T to build the tz package with a private
+** time_t type equivalent to T rather than the system-supplied time_t.
+** This debugging feature can test unusual design decisions
+** (e.g., time_t wider than 'long', or unsigned time_t) even on
+** typical platforms.
+*/
+#if defined time_tz || EPOCH_LOCAL || EPOCH_OFFSET != 0
+# define TZ_TIME_T 1
+#else
+# define TZ_TIME_T 0
+#endif
+
+#if defined LOCALTIME_IMPLEMENTATION && TZ_TIME_T
+static time_t sys_time(time_t *x) { return time(x); }
+#endif
+
+#if TZ_TIME_T
+
+typedef time_tz tz_time_t;
+
+# undef asctime
+# define asctime tz_asctime
+# undef asctime_r
+# define asctime_r tz_asctime_r
+# undef ctime
+# define ctime tz_ctime
+# undef ctime_r
+# define ctime_r tz_ctime_r
+# undef difftime
+# define difftime tz_difftime
+# undef gmtime
+# define gmtime tz_gmtime
+# undef gmtime_r
+# define gmtime_r tz_gmtime_r
+# undef localtime
+# define localtime tz_localtime
+# undef localtime_r
+# define localtime_r tz_localtime_r
+# undef localtime_rz
+# define localtime_rz tz_localtime_rz
+# undef mktime
+# define mktime tz_mktime
+# undef mktime_z
+# define mktime_z tz_mktime_z
+# undef offtime
+# define offtime tz_offtime
+# undef posix2time
+# define posix2time tz_posix2time
+# undef posix2time_z
+# define posix2time_z tz_posix2time_z
+# undef strftime
+# define strftime tz_strftime
+# undef time
+# define time tz_time
+# undef time2posix
+# define time2posix tz_time2posix
+# undef time2posix_z
+# define time2posix_z tz_time2posix_z
+# undef time_t
+# define time_t tz_time_t
+# undef timegm
+# define timegm tz_timegm
+# undef timelocal
+# define timelocal tz_timelocal
+# undef timeoff
+# define timeoff tz_timeoff
+# undef tzalloc
+# define tzalloc tz_tzalloc
+# undef tzfree
+# define tzfree tz_tzfree
+# undef tzset
+# define tzset tz_tzset
+# if HAVE_STRFTIME_L
+# undef strftime_l
+# define strftime_l tz_strftime_l
+# endif
+# if HAVE_TZNAME
+# undef tzname
+# define tzname tz_tzname
+# endif
+# if USG_COMPAT
+# undef daylight
+# define daylight tz_daylight
+# undef timezone
+# define timezone tz_timezone
+# endif
+# if ALTZONE
+# undef altzone
+# define altzone tz_altzone
+# endif
+
+# if __STDC_VERSION__ < 202311
+# define DEPRECATED_IN_C23 /* empty */
+# else
+# define DEPRECATED_IN_C23 ATTRIBUTE_DEPRECATED
+# endif
+DEPRECATED_IN_C23 char *asctime(struct tm const *);
+char *asctime_r(struct tm const *restrict, char *restrict);
+DEPRECATED_IN_C23 char *ctime(time_t const *);
+char *ctime_r(time_t const *, char *);
+ATTRIBUTE_UNSEQUENCED double difftime(time_t, time_t);
+size_t strftime(char *restrict, size_t, char const *restrict,
+ struct tm const *restrict);
+# if HAVE_STRFTIME_L
+size_t strftime_l(char *restrict, size_t, char const *restrict,
+ struct tm const *restrict, locale_t);
+# endif
+struct tm *gmtime(time_t const *);
+struct tm *gmtime_r(time_t const *restrict, struct tm *restrict);
+struct tm *localtime(time_t const *);
+struct tm *localtime_r(time_t const *restrict, struct tm *restrict);
+time_t mktime(struct tm *);
+time_t time(time_t *);
+time_t timegm(struct tm *);
+void tzset(void);
+#endif
+
+#ifndef HAVE_DECL_TIMEGM
+# if (202311 <= __STDC_VERSION__ \
+ || defined __GLIBC__ || defined __tm_zone /* musl */ \
+ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \
+ || (defined __APPLE__ && defined __MACH__))
+# define HAVE_DECL_TIMEGM true
+# else
+# define HAVE_DECL_TIMEGM false
+# endif
+#endif
+#if !HAVE_DECL_TIMEGM && !defined timegm
+time_t timegm(struct tm *);
+#endif
+
+#if !HAVE_DECL_ASCTIME_R && !defined asctime_r
+extern char *asctime_r(struct tm const *restrict, char *restrict);
+#endif
+
+#ifndef HAVE_DECL_ENVIRON
+# if defined environ || defined __USE_GNU
+# define HAVE_DECL_ENVIRON 1
+# else
+# define HAVE_DECL_ENVIRON 0
+# endif
+#endif
+
+#if !HAVE_DECL_ENVIRON
+extern char **environ;
+#endif
+
+#if 2 <= HAVE_TZNAME + (TZ_TIME_T || !HAVE_POSIX_DECLS)
+extern char *tzname[];
+#endif
+#if 2 <= USG_COMPAT + (TZ_TIME_T || !HAVE_POSIX_DECLS)
+extern long timezone;
+extern int daylight;
+#endif
+#if 2 <= ALTZONE + (TZ_TIME_T || !HAVE_POSIX_DECLS)
+extern long altzone;
+#endif
+
+/*
+** The STD_INSPIRED functions are similar, but most also need
+** declarations if time_tz is defined.
+*/
+
+#ifndef STD_INSPIRED
+# define STD_INSPIRED 0
+#endif
+#if STD_INSPIRED
+# if TZ_TIME_T || !defined offtime
+struct tm *offtime(time_t const *, long);
+# endif
+# if TZ_TIME_T || !defined timelocal
+time_t timelocal(struct tm *);
+# endif
+# if TZ_TIME_T || !defined timeoff
+time_t timeoff(struct tm *, long);
+# endif
+# if TZ_TIME_T || !defined time2posix
+time_t time2posix(time_t);
+# endif
+# if TZ_TIME_T || !defined posix2time
+time_t posix2time(time_t);
+# endif
+#endif
+
+/* Infer TM_ZONE on systems where this information is known, but suppress
+ guessing if NO_TM_ZONE is defined. Similarly for TM_GMTOFF. */
+#if (defined __GLIBC__ \
+ || defined __tm_zone /* musl */ \
+ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \
+ || (defined __APPLE__ && defined __MACH__))
+# if !defined TM_GMTOFF && !defined NO_TM_GMTOFF
+# define TM_GMTOFF tm_gmtoff
+# endif
+# if !defined TM_ZONE && !defined NO_TM_ZONE
+# define TM_ZONE tm_zone
+# endif
+#endif
+
+/*
+** Define functions that are ABI compatible with NetBSD but have
+** better prototypes. NetBSD 6.1.4 defines a pointer type timezone_t
+** and labors under the misconception that 'const timezone_t' is a
+** pointer to a constant. This use of 'const' is ineffective, so it
+** is not done here. What we call 'struct state' NetBSD calls
+** 'struct __state', but this is a private name so it doesn't matter.
+*/
+#if NETBSD_INSPIRED
+typedef struct state *timezone_t;
+struct tm *localtime_rz(timezone_t restrict, time_t const *restrict,
+ struct tm *restrict);
+time_t mktime_z(timezone_t restrict, struct tm *restrict);
+timezone_t tzalloc(char const *);
+void tzfree(timezone_t);
+# if STD_INSPIRED
+# if TZ_TIME_T || !defined posix2time_z
+ATTRIBUTE_REPRODUCIBLE time_t posix2time_z(timezone_t, time_t);
+# endif
+# if TZ_TIME_T || !defined time2posix_z
+ATTRIBUTE_REPRODUCIBLE time_t time2posix_z(timezone_t, time_t);
+# endif
+# endif
+#endif
+
+/*
+** Finally, some convenience items.
+*/
+
+#define TYPE_BIT(type) (CHAR_BIT * (ptrdiff_t) sizeof(type))
+#define TYPE_SIGNED(type) (((type) -1) < 0)
+#define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0)
+
+/* Minimum and maximum of two values. Use lower case to avoid
+ naming clashes with standard include files. */
+#define max(a, b) ((a) > (b) ? (a) : (b))
+#define min(a, b) ((a) < (b) ? (a) : (b))
+
+/* Max and min values of the integer type T, of which only the bottom
+ B bits are used, and where the highest-order used bit is considered
+ to be a sign bit if T is signed. */
+#define MAXVAL(t, b) \
+ ((t) (((t) 1 << ((b) - 1 - TYPE_SIGNED(t))) \
+ - 1 + ((t) 1 << ((b) - 1 - TYPE_SIGNED(t)))))
+#define MINVAL(t, b) \
+ ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0))
+
+/* The extreme time values, assuming no padding. */
+#define TIME_T_MIN_NO_PADDING MINVAL(time_t, TYPE_BIT(time_t))
+#define TIME_T_MAX_NO_PADDING MAXVAL(time_t, TYPE_BIT(time_t))
+
+/* The extreme time values. These are macros, not constants, so that
+ any portability problems occur only when compiling .c files that use
+ the macros, which is safer for applications that need only zdump and zic.
+ This implementation assumes no padding if time_t is signed and
+ either the compiler lacks support for _Generic or time_t is not one
+ of the standard signed integer types. */
+#if HAVE__GENERIC
+# define TIME_T_MIN \
+ _Generic((time_t) 0, \
+ signed char: SCHAR_MIN, short: SHRT_MIN, \
+ int: INT_MIN, long: LONG_MIN, long long: LLONG_MIN, \
+ default: TIME_T_MIN_NO_PADDING)
+# define TIME_T_MAX \
+ (TYPE_SIGNED(time_t) \
+ ? _Generic((time_t) 0, \
+ signed char: SCHAR_MAX, short: SHRT_MAX, \
+ int: INT_MAX, long: LONG_MAX, long long: LLONG_MAX, \
+ default: TIME_T_MAX_NO_PADDING) \
+ : (time_t) -1)
+enum { SIGNED_PADDING_CHECK_NEEDED
+ = _Generic((time_t) 0,
+ signed char: false, short: false,
+ int: false, long: false, long long: false,
+ default: true) };
+#else
+# define TIME_T_MIN TIME_T_MIN_NO_PADDING
+# define TIME_T_MAX TIME_T_MAX_NO_PADDING
+enum { SIGNED_PADDING_CHECK_NEEDED = true };
+#endif
+/* Try to check the padding assumptions. Although TIME_T_MAX and the
+ following check can both have undefined behavior on oddball
+ platforms due to shifts exceeding widths of signed integers, these
+ platforms' compilers are likely to diagnose these issues in integer
+ constant expressions, so it shouldn't hurt to check statically. */
+static_assert(! TYPE_SIGNED(time_t) || ! SIGNED_PADDING_CHECK_NEEDED
+ || TIME_T_MAX >> (TYPE_BIT(time_t) - 2) == 1);
+
+/*
+** 302 / 1000 is log10(2.0) rounded up.
+** Subtract one for the sign bit if the type is signed;
+** add one for integer division truncation;
+** add one more for a minus sign if the type is signed.
+*/
+#define INT_STRLEN_MAXIMUM(type) \
+ ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
+ 1 + TYPE_SIGNED(type))
+
+/*
+** INITIALIZE(x)
+*/
+
+#ifdef GCC_LINT
+# define INITIALIZE(x) ((x) = 0)
+#else
+# define INITIALIZE(x)
+#endif
+
+/* Whether memory access must strictly follow the C standard.
+ If 0, it's OK to read uninitialized storage so long as the value is
+ not relied upon. Defining it to 0 lets mktime access parts of
+ struct tm that might be uninitialized, as a heuristic when the
+ standard doesn't say what to return and when tm_gmtoff can help
+ mktime likely infer a better value. */
+#ifndef UNINIT_TRAP
+# define UNINIT_TRAP 0
+#endif
+
+#ifdef DEBUG
+# undef unreachable
+# define unreachable() abort()
+#elif !defined unreachable
+# ifdef __has_builtin
+# if __has_builtin(__builtin_unreachable)
+# define unreachable() __builtin_unreachable()
+# endif
+# elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+# define unreachable() __builtin_unreachable()
+# endif
+# ifndef unreachable
+# define unreachable() ((void) 0)
+# endif
+#endif
+
+/*
+** For the benefit of GNU folk...
+** '_(MSGID)' uses the current locale's message library string for MSGID.
+** The default is to use gettext if available, and use MSGID otherwise.
+*/
+
+#ifndef _
+#if HAVE_GETTEXT
+#define _(msgid) gettext(msgid)
+#else /* !HAVE_GETTEXT */
+#define _(msgid) msgid
+#endif /* !HAVE_GETTEXT */
+#endif /* !defined _ */
+
+#if !defined TZ_DOMAIN && defined HAVE_GETTEXT
+# define TZ_DOMAIN "tz"
+#endif
+
+#if HAVE_INCOMPATIBLE_CTIME_R
+#undef asctime_r
+#undef ctime_r
+char *asctime_r(struct tm const *restrict, char *restrict);
+char *ctime_r(time_t const *, char *);
+#endif /* HAVE_INCOMPATIBLE_CTIME_R */
+
+/* Handy macros that are independent of tzfile implementation. */
+
+enum {
+ SECSPERMIN = 60,
+ MINSPERHOUR = 60,
+ SECSPERHOUR = SECSPERMIN * MINSPERHOUR,
+ HOURSPERDAY = 24,
+ DAYSPERWEEK = 7,
+ DAYSPERNYEAR = 365,
+ DAYSPERLYEAR = DAYSPERNYEAR + 1,
+ MONSPERYEAR = 12,
+ YEARSPERREPEAT = 400 /* years before a Gregorian repeat */
+};
+
+#define SECSPERDAY ((int_fast32_t) SECSPERHOUR * HOURSPERDAY)
+
+#define DAYSPERREPEAT ((int_fast32_t) 400 * 365 + 100 - 4 + 1)
+#define SECSPERREPEAT ((int_fast64_t) DAYSPERREPEAT * SECSPERDAY)
+#define AVGSECSPERYEAR (SECSPERREPEAT / YEARSPERREPEAT)
+
+enum {
+ TM_SUNDAY,
+ TM_MONDAY,
+ TM_TUESDAY,
+ TM_WEDNESDAY,
+ TM_THURSDAY,
+ TM_FRIDAY,
+ TM_SATURDAY
+};
+
+enum {
+ TM_JANUARY,
+ TM_FEBRUARY,
+ TM_MARCH,
+ TM_APRIL,
+ TM_MAY,
+ TM_JUNE,
+ TM_JULY,
+ TM_AUGUST,
+ TM_SEPTEMBER,
+ TM_OCTOBER,
+ TM_NOVEMBER,
+ TM_DECEMBER
+};
+
+enum {
+ TM_YEAR_BASE = 1900,
+ TM_WDAY_BASE = TM_MONDAY,
+ EPOCH_YEAR = 1970,
+ EPOCH_WDAY = TM_THURSDAY
+};
+
+#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
+
+/*
+** Since everything in isleap is modulo 400 (or a factor of 400), we know that
+** isleap(y) == isleap(y % 400)
+** and so
+** isleap(a + b) == isleap((a + b) % 400)
+** or
+** isleap(a + b) == isleap(a % 400 + b % 400)
+** This is true even if % means modulo rather than Fortran remainder
+** (which is allowed by C89 but not by C99 or later).
+** We use this to avoid addition overflow problems.
+*/
+
+#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)
+
+#endif /* !defined PRIVATE_H */
Index: radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/zdump.c
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/zdump.c (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/zdump.c (revision 35)
@@ -0,0 +1,1267 @@
+/* Dump time zone data in a textual format. */
+
+/*
+** This file is in the public domain, so clarified as of
+** 2009-05-17 by Arthur David Olson.
+*/
+
+#include "version.h"
+
+#ifndef NETBSD_INSPIRED
+# define NETBSD_INSPIRED 1
+#endif
+
+#include "private.h"
+#include <stdio.h>
+
+#ifndef HAVE_SNPRINTF
+# define HAVE_SNPRINTF (!PORT_TO_C89 || 199901 <= __STDC_VERSION__)
+#endif
+
+#ifndef HAVE_LOCALTIME_R
+# define HAVE_LOCALTIME_R 1
+#endif
+
+#ifndef HAVE_LOCALTIME_RZ
+# ifdef TM_ZONE
+# define HAVE_LOCALTIME_RZ (NETBSD_INSPIRED && USE_LTZ)
+# else
+# define HAVE_LOCALTIME_RZ 0
+# endif
+#endif
+
+#ifndef HAVE_TZSET
+# define HAVE_TZSET 1
+#endif
+
+#ifndef ZDUMP_LO_YEAR
+# define ZDUMP_LO_YEAR (-500)
+#endif /* !defined ZDUMP_LO_YEAR */
+
+#ifndef ZDUMP_HI_YEAR
+# define ZDUMP_HI_YEAR 2500
+#endif /* !defined ZDUMP_HI_YEAR */
+
+#define SECSPERNYEAR (SECSPERDAY * DAYSPERNYEAR)
+#define SECSPERLYEAR (SECSPERNYEAR + SECSPERDAY)
+#define SECSPER400YEARS (SECSPERNYEAR * (intmax_t) (300 + 3) \
+ + SECSPERLYEAR * (intmax_t) (100 - 3))
+
+/*
+** True if SECSPER400YEARS is known to be representable as an
+** intmax_t. It's OK that SECSPER400YEARS_FITS can in theory be false
+** even if SECSPER400YEARS is representable, because when that happens
+** the code merely runs a bit more slowly, and this slowness doesn't
+** occur on any practical platform.
+*/
+enum { SECSPER400YEARS_FITS = SECSPERLYEAR <= INTMAX_MAX / 400 };
+
+#if HAVE_GETTEXT
+# include <locale.h> /* for setlocale */
+#endif /* HAVE_GETTEXT */
+
+#if ! HAVE_LOCALTIME_RZ
+# undef timezone_t
+# define timezone_t char **
+#endif
+
+#if !HAVE_POSIX_DECLS
+extern int getopt(int argc, char * const argv[],
+ const char * options);
+extern char * optarg;
+extern int optind;
+#endif
+
+/* The minimum and maximum finite time values. */
+enum { atime_shift = CHAR_BIT * sizeof(time_t) - 2 };
+static time_t const absolute_min_time =
+ ((time_t) -1 < 0
+ ? (- ((time_t) ~ (time_t) 0 < 0)
+ - (((time_t) 1 << atime_shift) - 1 + ((time_t) 1 << atime_shift)))
+ : 0);
+static time_t const absolute_max_time =
+ ((time_t) -1 < 0
+ ? (((time_t) 1 << atime_shift) - 1 + ((time_t) 1 << atime_shift))
+ : -1);
+static int longest;
+static char const *progname;
+static bool warned;
+static bool errout;
+
+static char const *abbr(struct tm const *);
+ATTRIBUTE_REPRODUCIBLE static intmax_t delta(struct tm *, struct tm *);
+static void dumptime(struct tm const *);
+static time_t hunt(timezone_t, time_t, time_t, bool);
+static void show(timezone_t, char *, time_t, bool);
+static void showextrema(timezone_t, char *, time_t, struct tm *, time_t);
+static void showtrans(char const *, struct tm const *, time_t, char const *,
+ char const *);
+static const char *tformat(void);
+ATTRIBUTE_REPRODUCIBLE static time_t yeartot(intmax_t);
+
+/* Is C an ASCII digit? */
+static bool
+is_digit(char c)
+{
+ return '0' <= c && c <= '9';
+}
+
+/* Is A an alphabetic character in the C locale? */
+static bool
+is_alpha(char a)
+{
+ switch (a) {
+ default:
+ return false;
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
+ case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
+ case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
+ case 'V': case 'W': case 'X': case 'Y': case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
+ case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
+ case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
+ case 'v': case 'w': case 'x': case 'y': case 'z':
+ return true;
+ }
+}
+
+ATTRIBUTE_NORETURN static void
+size_overflow(void)
+{
+ fprintf(stderr, _("%s: size overflow\n"), progname);
+ exit(EXIT_FAILURE);
+}
+
+/* Return A + B, exiting if the result would overflow either ptrdiff_t
+ or size_t. A and B are both nonnegative. */
+ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+sumsize(ptrdiff_t a, ptrdiff_t b)
+{
+#ifdef ckd_add
+ ptrdiff_t sum;
+ if (!ckd_add(&sum, a, b) && sum <= INDEX_MAX)
+ return sum;
+#else
+ if (a <= INDEX_MAX && b <= INDEX_MAX - a)
+ return a + b;
+#endif
+ size_overflow();
+}
+
+/* Return the size of of the string STR, including its trailing NUL.
+ Report an error and exit if this would exceed INDEX_MAX which means
+ pointer subtraction wouldn't work. */
+static ptrdiff_t
+xstrsize(char const *str)
+{
+ size_t len = strlen(str);
+ if (len < INDEX_MAX)
+ return len + 1;
+ size_overflow();
+}
+
+/* Return a pointer to a newly allocated buffer of size SIZE, exiting
+ on failure. SIZE should be positive. */
+ATTRIBUTE_MALLOC static void *
+xmalloc(ptrdiff_t size)
+{
+ void *p = malloc(size);
+ if (!p) {
+ fprintf(stderr, _("%s: Memory exhausted\n"), progname);
+ exit(EXIT_FAILURE);
+ }
+ return p;
+}
+
+#if ! HAVE_TZSET
+# undef tzset
+# define tzset zdump_tzset
+static void tzset(void) { }
+#endif
+
+/* Assume gmtime_r works if localtime_r does.
+ A replacement localtime_r is defined below if needed. */
+#if ! HAVE_LOCALTIME_R
+
+# undef gmtime_r
+# define gmtime_r zdump_gmtime_r
+
+static struct tm *
+gmtime_r(time_t *tp, struct tm *tmp)
+{
+ struct tm *r = gmtime(tp);
+ if (r) {
+ *tmp = *r;
+ r = tmp;
+ }
+ return r;
+}
+
+#endif
+
+/* Platforms with TM_ZONE don't need tzname, so they can use the
+ faster localtime_rz or localtime_r if available. */
+
+#if defined TM_ZONE && HAVE_LOCALTIME_RZ
+# define USE_LOCALTIME_RZ true
+#else
+# define USE_LOCALTIME_RZ false
+#endif
+
+#if ! USE_LOCALTIME_RZ
+
+# if !defined TM_ZONE || ! HAVE_LOCALTIME_R || ! HAVE_TZSET
+# undef localtime_r
+# define localtime_r zdump_localtime_r
+static struct tm *
+localtime_r(time_t *tp, struct tm *tmp)
+{
+ struct tm *r = localtime(tp);
+ if (r) {
+ *tmp = *r;
+ r = tmp;
+ }
+ return r;
+}
+# endif
+
+# undef localtime_rz
+# define localtime_rz zdump_localtime_rz
+static struct tm *
+localtime_rz(ATTRIBUTE_MAYBE_UNUSED timezone_t rz, time_t *tp, struct tm *tmp)
+{
+ return localtime_r(tp, tmp);
+}
+
+# ifdef TYPECHECK
+# undef mktime_z
+# define mktime_z zdump_mktime_z
+static time_t
+mktime_z(timezone_t tz, struct tm *tmp)
+{
+ return mktime(tmp);
+}
+# endif
+
+# undef tzalloc
+# undef tzfree
+# define tzalloc zdump_tzalloc
+# define tzfree zdump_tzfree
+
+static timezone_t
+tzalloc(char const *val)
+{
+# if HAVE_SETENV
+ if (setenv("TZ", val, 1) != 0) {
+ char const *e = strerror(errno);
+ fprintf(stderr, _("%s: setenv: %s\n"), progname, e);
+ exit(EXIT_FAILURE);
+ }
+ tzset();
+ return &optarg; /* Any valid non-null char ** will do. */
+# else
+ enum { TZeqlen = 3 };
+ static char const TZeq[TZeqlen] = "TZ=";
+ static char **fakeenv;
+ static ptrdiff_t fakeenv0size;
+ void *freeable = NULL;
+ char **env = fakeenv, **initial_environ;
+ ptrdiff_t valsize = xstrsize(val);
+ if (fakeenv0size < valsize) {
+ char **e = environ, **to;
+ ptrdiff_t initial_nenvptrs = 1; /* Counting the trailing NULL pointer. */
+
+ while (*e++) {
+# ifdef ckd_add
+ if (ckd_add(&initial_nenvptrs, initial_nenvptrs, 1)
+ || INDEX_MAX < initial_nenvptrs)
+ size_overflow();
+# else
+ if (initial_nenvptrs == INDEX_MAX / sizeof *environ)
+ size_overflow();
+ initial_nenvptrs++;
+# endif
+ }
+ fakeenv0size = sumsize(valsize, valsize);
+ fakeenv0size = max(fakeenv0size, 64);
+ freeable = env;
+ fakeenv = env =
+ xmalloc(sumsize(sumsize(sizeof *environ,
+ initial_nenvptrs * sizeof *environ),
+ sumsize(TZeqlen, fakeenv0size)));
+ to = env + 1;
+ for (e = environ; (*to = *e); e++)
+ to += strncmp(*e, TZeq, TZeqlen) != 0;
+ env[0] = memcpy(to + 1, TZeq, TZeqlen);
+ }
+ memcpy(env[0] + TZeqlen, val, valsize);
+ initial_environ = environ;
+ environ = env;
+ tzset();
+ free(freeable);
+ return initial_environ;
+# endif
+}
+
+static void
+tzfree(ATTRIBUTE_MAYBE_UNUSED timezone_t initial_environ)
+{
+# if !HAVE_SETENV
+ environ = initial_environ;
+ tzset();
+# endif
+}
+#endif /* ! USE_LOCALTIME_RZ */
+
+/* A UT time zone, and its initializer. */
+static timezone_t gmtz;
+static void
+gmtzinit(void)
+{
+ if (USE_LOCALTIME_RZ) {
+ /* Try "GMT" first to find out whether this is one of the rare
+ platforms where time_t counts leap seconds; this works due to
+ the "Zone GMT 0 - GMT" line in the "etcetera" file. If "GMT"
+ fails, fall back on "GMT0" which might be similar due to the
+ "Link GMT GMT0" line in the "backward" file, and which
+ should work on all POSIX platforms. The rest of zdump does not
+ use the "GMT" abbreviation that comes from this setting, so it
+ is OK to use "GMT" here rather than the modern "UTC" which
+ would not work on platforms that omit the "backward" file. */
+ gmtz = tzalloc("GMT");
+ if (!gmtz) {
+ static char const gmt0[] = "GMT0";
+ gmtz = tzalloc(gmt0);
+ if (!gmtz) {
+ char const *e = strerror(errno);
+ fprintf(stderr, _("%s: unknown timezone '%s': %s\n"),
+ progname, gmt0, e);
+ exit(EXIT_FAILURE);
+ }
+ }
+ }
+}
+
+/* Convert *TP to UT, storing the broken-down time into *TMP.
+ Return TMP if successful, NULL otherwise. This is like gmtime_r(TP, TMP),
+ except typically faster if USE_LOCALTIME_RZ. */
+static struct tm *
+my_gmtime_r(time_t *tp, struct tm *tmp)
+{
+ return USE_LOCALTIME_RZ ? localtime_rz(gmtz, tp, tmp) : gmtime_r(tp, tmp);
+}
+
+#ifndef TYPECHECK
+# define my_localtime_rz localtime_rz
+#else /* !defined TYPECHECK */
+
+static struct tm *
+my_localtime_rz(timezone_t tz, time_t *tp, struct tm *tmp)
+{
+ tmp = localtime_rz(tz, tp, tmp);
+ if (tmp) {
+ struct tm tm;
+ register time_t t;
+
+ tm = *tmp;
+ t = mktime_z(tz, &tm);
+ if (t != *tp) {
+ fflush(stdout);
+ fprintf(stderr, "\n%s: ", progname);
+ fprintf(stderr, tformat(), *tp);
+ fprintf(stderr, " ->");
+ fprintf(stderr, " year=%d", tmp->tm_year);
+ fprintf(stderr, " mon=%d", tmp->tm_mon);
+ fprintf(stderr, " mday=%d", tmp->tm_mday);
+ fprintf(stderr, " hour=%d", tmp->tm_hour);
+ fprintf(stderr, " min=%d", tmp->tm_min);
+ fprintf(stderr, " sec=%d", tmp->tm_sec);
+ fprintf(stderr, " isdst=%d", tmp->tm_isdst);
+ fprintf(stderr, " -> ");
+ fprintf(stderr, tformat(), t);
+ fprintf(stderr, "\n");
+ errout = true;
+ }
+ }
+ return tmp;
+}
+#endif /* !defined TYPECHECK */
+
+static void
+abbrok(const char *const abbrp, const char *const zone)
+{
+ register const char * cp;
+ register const char * wp;
+
+ if (warned)
+ return;
+ cp = abbrp;
+ while (is_alpha(*cp) || is_digit(*cp) || *cp == '-' || *cp == '+')
+ ++cp;
+ if (*cp)
+ wp = _("has characters other than ASCII alphanumerics, '-' or '+'");
+ else if (cp - abbrp < 3)
+ wp = _("has fewer than 3 characters");
+ else if (cp - abbrp > 6)
+ wp = _("has more than 6 characters");
+ else
+ return;
+ fflush(stdout);
+ fprintf(stderr,
+ _("%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"),
+ progname, zone, abbrp, wp);
+ warned = errout = true;
+}
+
+/* Return a time zone abbreviation. If the abbreviation needs to be
+ saved, use *BUF (of size *BUFALLOC) to save it, and return the
+ abbreviation in the possibly reallocated *BUF. Otherwise, just
+ return the abbreviation. Get the abbreviation from TMP.
+ Exit on memory allocation failure. */
+static char const *
+saveabbr(char **buf, ptrdiff_t *bufalloc, struct tm const *tmp)
+{
+ char const *ab = abbr(tmp);
+ if (HAVE_LOCALTIME_RZ)
+ return ab;
+ else {
+ ptrdiff_t absize = xstrsize(ab);
+ if (*bufalloc < absize) {
+ free(*buf);
+
+ /* Make the new buffer at least twice as long as the old,
+ to avoid O(N**2) behavior on repeated calls. */
+ *bufalloc = sumsize(*bufalloc, absize);
+
+ *buf = xmalloc(*bufalloc);
+ }
+ return strcpy(*buf, ab);
+ }
+}
+
+static void
+close_file(FILE *stream)
+{
+ char const *e = (ferror(stream) ? _("I/O error")
+ : fclose(stream) != 0 ? strerror(errno) : NULL);
+ if (e) {
+ fprintf(stderr, "%s: %s\n", progname, e);
+ exit(EXIT_FAILURE);
+ }
+}
+
+static void
+usage(FILE * const stream, const int status)
+{
+ fprintf(stream,
+_("%s: usage: %s OPTIONS TIMEZONE ...\n"
+ "Options include:\n"
+ " -c [L,]U Start at year L (default -500), end before year U (default 2500)\n"
+ " -t [L,]U Start at time L, end before time U (in seconds since 1970)\n"
+ " -i List transitions briefly (format is experimental)\n" \
+ " -v List transitions verbosely\n"
+ " -V List transitions a bit less verbosely\n"
+ " --help Output this help\n"
+ " --version Output version info\n"
+ "\n"
+ "Report bugs to %s.\n"),
+ progname, progname, REPORT_BUGS_TO);
+ if (status == EXIT_SUCCESS)
+ close_file(stream);
+ exit(status);
+}
+
+int
+main(int argc, char *argv[])
+{
+ /* These are static so that they're initially zero. */
+ static char * abbrev;
+ static ptrdiff_t abbrevsize;
+
+ register int i;
+ register bool vflag;
+ register bool Vflag;
+ register char * cutarg;
+ register char * cuttimes;
+ register time_t cutlotime;
+ register time_t cuthitime;
+ time_t now;
+ bool iflag = false;
+
+ cutlotime = absolute_min_time;
+ cuthitime = absolute_max_time;
+#if HAVE_GETTEXT
+ setlocale(LC_ALL, "");
+# ifdef TZ_DOMAINDIR
+ bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
+# endif /* defined TEXTDOMAINDIR */
+ textdomain(TZ_DOMAIN);
+#endif /* HAVE_GETTEXT */
+ progname = argv[0] ? argv[0] : "zdump";
+ for (i = 1; i < argc; ++i)
+ if (strcmp(argv[i], "--version") == 0) {
+ printf("zdump %s%s\n", PKGVERSION, TZVERSION);
+ return EXIT_SUCCESS;
+ } else if (strcmp(argv[i], "--help") == 0) {
+ usage(stdout, EXIT_SUCCESS);
+ }
+ vflag = Vflag = false;
+ cutarg = cuttimes = NULL;
+ for (;;)
+ switch (getopt(argc, argv, "c:it:vV")) {
+ case 'c': cutarg = optarg; break;
+ case 't': cuttimes = optarg; break;
+ case 'i': iflag = true; break;
+ case 'v': vflag = true; break;
+ case 'V': Vflag = true; break;
+ case -1:
+ if (! (optind == argc - 1 && strcmp(argv[optind], "=") == 0))
+ goto arg_processing_done;
+ ATTRIBUTE_FALLTHROUGH;
+ default:
+ usage(stderr, EXIT_FAILURE);
+ }
+ arg_processing_done:;
+
+ if (iflag | vflag | Vflag) {
+ intmax_t lo;
+ intmax_t hi;
+ char *loend, *hiend;
+ register intmax_t cutloyear = ZDUMP_LO_YEAR;
+ register intmax_t cuthiyear = ZDUMP_HI_YEAR;
+ if (cutarg != NULL) {
+ lo = strtoimax(cutarg, &loend, 10);
+ if (cutarg != loend && !*loend) {
+ hi = lo;
+ cuthiyear = hi;
+ } else if (cutarg != loend && *loend == ','
+ && (hi = strtoimax(loend + 1, &hiend, 10),
+ loend + 1 != hiend && !*hiend)) {
+ cutloyear = lo;
+ cuthiyear = hi;
+ } else {
+ fprintf(stderr, _("%s: wild -c argument %s\n"),
+ progname, cutarg);
+ return EXIT_FAILURE;
+ }
+ }
+ if (cutarg != NULL || cuttimes == NULL) {
+ cutlotime = yeartot(cutloyear);
+ cuthitime = yeartot(cuthiyear);
+ }
+ if (cuttimes != NULL) {
+ lo = strtoimax(cuttimes, &loend, 10);
+ if (cuttimes != loend && !*loend) {
+ hi = lo;
+ if (hi < cuthitime) {
+ if (hi < absolute_min_time + 1)
+ hi = absolute_min_time + 1;
+ cuthitime = hi;
+ }
+ } else if (cuttimes != loend && *loend == ','
+ && (hi = strtoimax(loend + 1, &hiend, 10),
+ loend + 1 != hiend && !*hiend)) {
+ if (cutlotime < lo) {
+ if (absolute_max_time < lo)
+ lo = absolute_max_time;
+ cutlotime = lo;
+ }
+ if (hi < cuthitime) {
+ if (hi < absolute_min_time + 1)
+ hi = absolute_min_time + 1;
+ cuthitime = hi;
+ }
+ } else {
+ fprintf(stderr,
+ _("%s: wild -t argument %s\n"),
+ progname, cuttimes);
+ return EXIT_FAILURE;
+ }
+ }
+ }
+ gmtzinit();
+ if (iflag | vflag | Vflag)
+ now = 0;
+ else {
+ now = time(NULL);
+ now |= !now;
+ }
+ longest = 0;
+ for (i = optind; i < argc; i++) {
+ size_t arglen = strlen(argv[i]);
+ if (longest < arglen)
+ longest = min(arglen, INT_MAX);
+ }
+
+ for (i = optind; i < argc; ++i) {
+ timezone_t tz = tzalloc(argv[i]);
+ char const *ab = (char const *)0;
+ time_t t;
+ struct tm tm, newtm;
+ bool tm_ok;
+ if (!tz) {
+ char const *e = strerror(errno);
+ fprintf(stderr, _("%s: unknown timezone '%s': %s\n"),
+ progname, argv[1], e);
+ return EXIT_FAILURE;
+ }
+ if (now) {
+ show(tz, argv[i], now, false);
+ tzfree(tz);
+ continue;
+ }
+ warned = false;
+ t = absolute_min_time;
+ if (! (iflag | Vflag)) {
+ show(tz, argv[i], t, true);
+ if (my_localtime_rz(tz, &t, &tm) == NULL
+ && t < cutlotime) {
+ time_t newt = cutlotime;
+ if (my_localtime_rz(tz, &newt, &newtm) != NULL)
+ showextrema(tz, argv[i], t, NULL, newt);
+ }
+ }
+ if (t + 1 < cutlotime)
+ t = cutlotime - 1;
+ tm_ok = my_localtime_rz(tz, &t, &tm) != NULL;
+ if (tm_ok) {
+ ab = saveabbr(&abbrev, &abbrevsize, &tm);
+ if (iflag) {
+ showtrans("\nTZ=%f", &tm, t, ab, argv[i]);
+ showtrans("-\t-\t%Q", &tm, t, ab, argv[i]);
+ }
+ } else
+ ab = NULL;
+ while (t < cuthitime - 1) {
+ time_t newt = ((t < absolute_max_time - SECSPERDAY / 2
+ && t + SECSPERDAY / 2 < cuthitime - 1)
+ ? t + SECSPERDAY / 2
+ : cuthitime - 1);
+ struct tm *newtmp = localtime_rz(tz, &newt, &newtm);
+ bool newtm_ok = newtmp != NULL;
+ if (tm_ok != newtm_ok
+ || (ab && (delta(&newtm, &tm) != newt - t
+ || newtm.tm_isdst != tm.tm_isdst
+ || strcmp(abbr(&newtm), ab) != 0))) {
+ newt = hunt(tz, t, newt, false);
+ newtmp = localtime_rz(tz, &newt, &newtm);
+ newtm_ok = newtmp != NULL;
+ if (iflag)
+ showtrans("%Y-%m-%d\t%L\t%Q", newtmp, newt,
+ newtm_ok ? abbr(&newtm) : NULL, argv[i]);
+ else {
+ show(tz, argv[i], newt - 1, true);
+ show(tz, argv[i], newt, true);
+ }
+ }
+ t = newt;
+ tm_ok = newtm_ok;
+ if (newtm_ok) {
+ ab = saveabbr(&abbrev, &abbrevsize, &newtm);
+ tm = newtm;
+ }
+ }
+ if (! (iflag | Vflag)) {
+ time_t newt = absolute_max_time;
+ t = cuthitime;
+ if (t < newt) {
+ struct tm *tmp = my_localtime_rz(tz, &t, &tm);
+ if (tmp != NULL
+ && my_localtime_rz(tz, &newt, &newtm) == NULL)
+ showextrema(tz, argv[i], t, tmp, newt);
+ }
+ show(tz, argv[i], absolute_max_time, true);
+ }
+ tzfree(tz);
+ }
+ close_file(stdout);
+ if (errout && (ferror(stderr) || fclose(stderr) != 0))
+ return EXIT_FAILURE;
+ return EXIT_SUCCESS;
+}
+
+static time_t
+yeartot(intmax_t y)
+{
+ register intmax_t myy, seconds, years;
+ register time_t t;
+
+ myy = EPOCH_YEAR;
+ t = 0;
+ while (myy < y) {
+ if (SECSPER400YEARS_FITS && 400 <= y - myy) {
+ intmax_t diff400 = (y - myy) / 400;
+ if (INTMAX_MAX / SECSPER400YEARS < diff400)
+ return absolute_max_time;
+ seconds = diff400 * SECSPER400YEARS;
+ years = diff400 * 400;
+ } else {
+ seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
+ years = 1;
+ }
+ myy += years;
+ if (t > absolute_max_time - seconds)
+ return absolute_max_time;
+ t += seconds;
+ }
+ while (y < myy) {
+ if (SECSPER400YEARS_FITS && y + 400 <= myy && myy < 0) {
+ intmax_t diff400 = (myy - y) / 400;
+ if (INTMAX_MAX / SECSPER400YEARS < diff400)
+ return absolute_min_time;
+ seconds = diff400 * SECSPER400YEARS;
+ years = diff400 * 400;
+ } else {
+ seconds = isleap(myy - 1) ? SECSPERLYEAR : SECSPERNYEAR;
+ years = 1;
+ }
+ myy -= years;
+ if (t < absolute_min_time + seconds)
+ return absolute_min_time;
+ t -= seconds;
+ }
+ return t;
+}
+
+/* Search for a discontinuity in timezone TZ, in the
+ timestamps ranging from LOT through HIT. LOT and HIT disagree
+ about some aspect of timezone. If ONLY_OK, search only for
+ definedness changes, i.e., localtime succeeds on one side of the
+ transition but fails on the other side. Return the timestamp just
+ before the transition from LOT's settings. */
+
+static time_t
+hunt(timezone_t tz, time_t lot, time_t hit, bool only_ok)
+{
+ static char * loab;
+ static ptrdiff_t loabsize;
+ struct tm lotm;
+ struct tm tm;
+
+ /* Convert LOT into a broken-down time here, even though our
+ caller already did that. On platforms without TM_ZONE,
+ tzname may have been altered since our caller broke down
+ LOT, and tzname needs to be changed back. */
+ bool lotm_ok = my_localtime_rz(tz, &lot, &lotm) != NULL;
+ bool tm_ok;
+ char const *ab = lotm_ok ? saveabbr(&loab, &loabsize, &lotm) : NULL;
+
+ for ( ; ; ) {
+ /* T = average of LOT and HIT, rounding down.
+ Avoid overflow. */
+ int rem_sum = lot % 2 + hit % 2;
+ time_t t = (rem_sum == 2) - (rem_sum < 0) + lot / 2 + hit / 2;
+ if (t == lot)
+ break;
+ tm_ok = my_localtime_rz(tz, &t, &tm) != NULL;
+ if (lotm_ok == tm_ok
+ && (only_ok
+ || (ab && tm.tm_isdst == lotm.tm_isdst
+ && delta(&tm, &lotm) == t - lot
+ && strcmp(abbr(&tm), ab) == 0))) {
+ lot = t;
+ if (tm_ok)
+ lotm = tm;
+ } else hit = t;
+ }
+ return hit;
+}
+
+/*
+** Thanks to Paul Eggert for logic used in delta_nonneg.
+*/
+
+static intmax_t
+delta_nonneg(struct tm *newp, struct tm *oldp)
+{
+ intmax_t oldy = oldp->tm_year;
+ int cycles = (newp->tm_year - oldy) / YEARSPERREPEAT;
+ intmax_t sec = SECSPERREPEAT, result = cycles * sec;
+ int tmy = oldp->tm_year + cycles * YEARSPERREPEAT;
+ for ( ; tmy < newp->tm_year; ++tmy)
+ result += DAYSPERNYEAR + isleap_sum(tmy, TM_YEAR_BASE);
+ result += newp->tm_yday - oldp->tm_yday;
+ result *= HOURSPERDAY;
+ result += newp->tm_hour - oldp->tm_hour;
+ result *= MINSPERHOUR;
+ result += newp->tm_min - oldp->tm_min;
+ result *= SECSPERMIN;
+ result += newp->tm_sec - oldp->tm_sec;
+ return result;
+}
+
+static intmax_t
+delta(struct tm *newp, struct tm *oldp)
+{
+ return (newp->tm_year < oldp->tm_year
+ ? -delta_nonneg(oldp, newp)
+ : delta_nonneg(newp, oldp));
+}
+
+#ifndef TM_GMTOFF
+/* Return A->tm_yday, adjusted to compare it fairly to B->tm_yday.
+ Assume A and B differ by at most one year. */
+static int
+adjusted_yday(struct tm const *a, struct tm const *b)
+{
+ int yday = a->tm_yday;
+ if (b->tm_year < a->tm_year)
+ yday += 365 + isleap_sum(b->tm_year, TM_YEAR_BASE);
+ return yday;
+}
+#endif
+
+/* If A is the broken-down local time and B the broken-down UT for
+ the same instant, return A's UT offset in seconds, where positive
+ offsets are east of Greenwich. On failure, return LONG_MIN.
+
+ If T is nonnull, *T is the timestamp that corresponds to A; call
+ my_gmtime_r and use its result instead of B. Otherwise, B is the
+ possibly nonnull result of an earlier call to my_gmtime_r. */
+static long
+gmtoff(struct tm const *a, ATTRIBUTE_MAYBE_UNUSED time_t *t,
+ ATTRIBUTE_MAYBE_UNUSED struct tm const *b)
+{
+#ifdef TM_GMTOFF
+ return a->TM_GMTOFF;
+#else
+ struct tm tm;
+ if (t)
+ b = my_gmtime_r(t, &tm);
+ if (! b)
+ return LONG_MIN;
+ else {
+ int ayday = adjusted_yday(a, b);
+ int byday = adjusted_yday(b, a);
+ int days = ayday - byday;
+ long hours = a->tm_hour - b->tm_hour + 24 * days;
+ long minutes = a->tm_min - b->tm_min + 60 * hours;
+ long seconds = a->tm_sec - b->tm_sec + 60 * minutes;
+ return seconds;
+ }
+#endif
+}
+
+static void
+show(timezone_t tz, char *zone, time_t t, bool v)
+{
+ register struct tm * tmp;
+ register struct tm * gmtmp;
+ struct tm tm, gmtm;
+
+ printf("%-*s ", longest, zone);
+ if (v) {
+ gmtmp = my_gmtime_r(&t, &gmtm);
+ if (gmtmp == NULL) {
+ printf(tformat(), t);
+ printf(_(" (gmtime failed)"));
+ } else {
+ dumptime(gmtmp);
+ printf(" UT");
+ }
+ printf(" = ");
+ }
+ tmp = my_localtime_rz(tz, &t, &tm);
+ if (tmp == NULL) {
+ printf(tformat(), t);
+ printf(_(" (localtime failed)"));
+ } else {
+ dumptime(tmp);
+ if (*abbr(tmp) != '\0')
+ printf(" %s", abbr(tmp));
+ if (v) {
+ long off = gmtoff(tmp, NULL, gmtmp);
+ printf(" isdst=%d", tmp->tm_isdst);
+ if (off != LONG_MIN)
+ printf(" gmtoff=%ld", off);
+ }
+ }
+ printf("\n");
+ if (tmp != NULL && *abbr(tmp) != '\0')
+ abbrok(abbr(tmp), zone);
+}
+
+/* Show timestamps just before and just after a transition between
+ defined and undefined (or vice versa) in either localtime or
+ gmtime. These transitions are for timezone TZ with name ZONE, in
+ the range from LO (with broken-down time LOTMP if that is nonnull)
+ through HI. LO and HI disagree on definedness. */
+
+static void
+showextrema(timezone_t tz, char *zone, time_t lo, struct tm *lotmp, time_t hi)
+{
+ struct tm localtm[2], gmtm[2];
+ time_t t, boundary = hunt(tz, lo, hi, true);
+ bool old = false;
+ hi = (SECSPERDAY < hi - boundary
+ ? boundary + SECSPERDAY
+ : hi + (hi < TIME_T_MAX));
+ if (SECSPERDAY < boundary - lo) {
+ lo = boundary - SECSPERDAY;
+ lotmp = my_localtime_rz(tz, &lo, &localtm[old]);
+ }
+ if (lotmp)
+ localtm[old] = *lotmp;
+ else
+ localtm[old].tm_sec = -1;
+ if (! my_gmtime_r(&lo, &gmtm[old]))
+ gmtm[old].tm_sec = -1;
+
+ /* Search sequentially for definedness transitions. Although this
+ could be sped up by refining 'hunt' to search for either
+ localtime or gmtime definedness transitions, it hardly seems
+ worth the trouble. */
+ for (t = lo + 1; t < hi; t++) {
+ bool new = !old;
+ if (! my_localtime_rz(tz, &t, &localtm[new]))
+ localtm[new].tm_sec = -1;
+ if (! my_gmtime_r(&t, &gmtm[new]))
+ gmtm[new].tm_sec = -1;
+ if (((localtm[old].tm_sec < 0) != (localtm[new].tm_sec < 0))
+ | ((gmtm[old].tm_sec < 0) != (gmtm[new].tm_sec < 0))) {
+ show(tz, zone, t - 1, true);
+ show(tz, zone, t, true);
+ }
+ old = new;
+ }
+}
+
+#if HAVE_SNPRINTF
+# define my_snprintf snprintf
+#else
+# include <stdarg.h>
+
+/* A substitute for snprintf that is good enough for zdump. */
+ATTRIBUTE_FORMAT((printf, 3, 4)) static int
+my_snprintf(char *s, size_t size, char const *format, ...)
+{
+ int n;
+ va_list args;
+ char const *arg;
+ size_t arglen, slen;
+ char buf[1024];
+ va_start(args, format);
+ if (strcmp(format, "%s") == 0) {
+ arg = va_arg(args, char const *);
+ arglen = strlen(arg);
+ } else {
+ n = vsprintf(buf, format, args);
+ if (n < 0) {
+ va_end(args);
+ return n;
+ }
+ arg = buf;
+ arglen = n;
+ }
+ slen = arglen < size ? arglen : size - 1;
+ memcpy(s, arg, slen);
+ s[slen] = '\0';
+ n = arglen <= INT_MAX ? arglen : -1;
+ va_end(args);
+ return n;
+}
+#endif
+
+/* Store into BUF, of size SIZE, a formatted local time taken from *TM.
+ Use ISO 8601 format +HH:MM:SS. Omit :SS if SS is zero, and omit
+ :MM too if MM is also zero.
+
+ Return the length of the resulting string. If the string does not
+ fit, return the length that the string would have been if it had
+ fit; do not overrun the output buffer. */
+static int
+format_local_time(char *buf, ptrdiff_t size, struct tm const *tm)
+{
+ int ss = tm->tm_sec, mm = tm->tm_min, hh = tm->tm_hour;
+ return (ss
+ ? my_snprintf(buf, size, "%02d:%02d:%02d", hh, mm, ss)
+ : mm
+ ? my_snprintf(buf, size, "%02d:%02d", hh, mm)
+ : my_snprintf(buf, size, "%02d", hh));
+}
+
+/* Store into BUF, of size SIZE, a formatted UT offset for the
+ localtime *TM corresponding to time T. Use ISO 8601 format
+ +HHMMSS, or -HHMMSS for timestamps west of Greenwich; use the
+ format -00 for unknown UT offsets. If the hour needs more than
+ two digits to represent, extend the length of HH as needed.
+ Otherwise, omit SS if SS is zero, and omit MM too if MM is also
+ zero.
+
+ Return the length of the resulting string, or -1 if the result is
+ not representable as a string. If the string does not fit, return
+ the length that the string would have been if it had fit; do not
+ overrun the output buffer. */
+static int
+format_utc_offset(char *buf, ptrdiff_t size, struct tm const *tm, time_t t)
+{
+ long off = gmtoff(tm, &t, NULL);
+ char sign = ((off < 0
+ || (off == 0
+ && (*abbr(tm) == '-' || strcmp(abbr(tm), "zzz") == 0)))
+ ? '-' : '+');
+ long hh;
+ int mm, ss;
+ if (off < 0)
+ {
+ if (off == LONG_MIN)
+ return -1;
+ off = -off;
+ }
+ ss = off % 60;
+ mm = off / 60 % 60;
+ hh = off / 60 / 60;
+ return (ss || 100 <= hh
+ ? my_snprintf(buf, size, "%c%02ld%02d%02d", sign, hh, mm, ss)
+ : mm
+ ? my_snprintf(buf, size, "%c%02ld%02d", sign, hh, mm)
+ : my_snprintf(buf, size, "%c%02ld", sign, hh));
+}
+
+/* Store into BUF (of size SIZE) a quoted string representation of P.
+ If the representation's length is less than SIZE, return the
+ length; the representation is not null terminated. Otherwise
+ return SIZE, to indicate that BUF is too small. */
+static ptrdiff_t
+format_quoted_string(char *buf, ptrdiff_t size, char const *p)
+{
+ char *b = buf;
+ ptrdiff_t s = size;
+ if (!s)
+ return size;
+ *b++ = '"', s--;
+ for (;;) {
+ char c = *p++;
+ if (s <= 1)
+ return size;
+ switch (c) {
+ default: *b++ = c, s--; continue;
+ case '\0': *b++ = '"', s--; return size - s;
+ case '"': case '\\': break;
+ case ' ': c = 's'; break;
+ case '\f': c = 'f'; break;
+ case '\n': c = 'n'; break;
+ case '\r': c = 'r'; break;
+ case '\t': c = 't'; break;
+ case '\v': c = 'v'; break;
+ }
+ *b++ = '\\', *b++ = c, s -= 2;
+ }
+}
+
+/* Store into BUF (of size SIZE) a timestamp formatted by TIME_FMT.
+ TM is the broken-down time, T the seconds count, AB the time zone
+ abbreviation, and ZONE_NAME the zone name. Return true if
+ successful, false if the output would require more than SIZE bytes.
+ TIME_FMT uses the same format that strftime uses, with these
+ additions:
+
+ %f zone name
+ %L local time as per format_local_time
+ %Q like "U\t%Z\tD" where U is the UT offset as for format_utc_offset
+ and D is the isdst flag; except omit D if it is zero, omit %Z if
+ it equals U, quote and escape %Z if it contains nonalphabetics,
+ and omit any trailing tabs. */
+
+static bool
+istrftime(char *buf, ptrdiff_t size, char const *time_fmt,
+ struct tm const *tm, time_t t, char const *ab, char const *zone_name)
+{
+ char *b = buf;
+ ptrdiff_t s = size;
+ char const *f = time_fmt, *p;
+
+ for (p = f; ; p++)
+ if (*p == '%' && p[1] == '%')
+ p++;
+ else if (!*p
+ || (*p == '%'
+ && (p[1] == 'f' || p[1] == 'L' || p[1] == 'Q'))) {
+ ptrdiff_t formatted_len;
+ ptrdiff_t f_prefix_len = p - f;
+ ptrdiff_t f_prefix_copy_size = sumsize(f_prefix_len, 2);
+ char fbuf[100];
+ bool oversized = sizeof fbuf <= f_prefix_copy_size;
+ char *f_prefix_copy = oversized ? xmalloc(f_prefix_copy_size) : fbuf;
+ memcpy(f_prefix_copy, f, f_prefix_len);
+ strcpy(f_prefix_copy + f_prefix_len, "X");
+ formatted_len = strftime(b, s, f_prefix_copy, tm);
+ if (oversized)
+ free(f_prefix_copy);
+ if (formatted_len == 0)
+ return false;
+ formatted_len--;
+ b += formatted_len, s -= formatted_len;
+ if (!*p++)
+ break;
+ switch (*p) {
+ case 'f':
+ formatted_len = format_quoted_string(b, s, zone_name);
+ break;
+ case 'L':
+ formatted_len = format_local_time(b, s, tm);
+ break;
+ case 'Q':
+ {
+ bool show_abbr;
+ int offlen = format_utc_offset(b, s, tm, t);
+ if (! (0 <= offlen && offlen < s))
+ return false;
+ show_abbr = strcmp(b, ab) != 0;
+ b += offlen, s -= offlen;
+ if (show_abbr) {
+ char const *abp;
+ ptrdiff_t len;
+ if (s <= 1)
+ return false;
+ *b++ = '\t', s--;
+ for (abp = ab; is_alpha(*abp); abp++)
+ continue;
+ len = (!*abp && *ab
+ ? my_snprintf(b, s, "%s", ab)
+ : format_quoted_string(b, s, ab));
+ if (s <= len)
+ return false;
+ b += len, s -= len;
+ }
+ formatted_len
+ = (tm->tm_isdst
+ ? my_snprintf(b, s, &"\t\t%d"[show_abbr], tm->tm_isdst)
+ : 0);
+ }
+ break;
+ }
+ if (s <= formatted_len)
+ return false;
+ b += formatted_len, s -= formatted_len;
+ f = p + 1;
+ }
+ *b = '\0';
+ return true;
+}
+
+/* Show a time transition. */
+static void
+showtrans(char const *time_fmt, struct tm const *tm, time_t t, char const *ab,
+ char const *zone_name)
+{
+ if (!tm) {
+ printf(tformat(), t);
+ putchar('\n');
+ } else {
+ char stackbuf[1000];
+ ptrdiff_t size = sizeof stackbuf;
+ char *buf = stackbuf;
+ char *bufalloc = NULL;
+ while (! istrftime(buf, size, time_fmt, tm, t, ab, zone_name)) {
+ size = sumsize(size, size);
+ free(bufalloc);
+ buf = bufalloc = xmalloc(size);
+ }
+ puts(buf);
+ free(bufalloc);
+ }
+}
+
+static char const *
+abbr(struct tm const *tmp)
+{
+#ifdef TM_ZONE
+ return tmp->TM_ZONE;
+#else
+# if HAVE_TZNAME
+ if (0 <= tmp->tm_isdst && tzname[0 < tmp->tm_isdst])
+ return tzname[0 < tmp->tm_isdst];
+# endif
+ return "";
+#endif
+}
+
+/*
+** The code below can fail on certain theoretical systems;
+** it works on all known real-world systems as of 2022-01-25.
+*/
+
+static const char *
+tformat(void)
+{
+#if HAVE__GENERIC
+ /* C11-style _Generic is more likely to return the correct
+ format when distinct types have the same size. */
+ char const *fmt =
+ _Generic(+ (time_t) 0,
+ int: "%d", long: "%ld", long long: "%lld",
+ unsigned: "%u", unsigned long: "%lu",
+ unsigned long long: "%llu",
+ default: NULL);
+ if (fmt)
+ return fmt;
+ fmt = _Generic((time_t) 0,
+ intmax_t: "%"PRIdMAX, uintmax_t: "%"PRIuMAX,
+ default: NULL);
+ if (fmt)
+ return fmt;
+#endif
+ if (0 > (time_t) -1) { /* signed */
+ if (sizeof(time_t) == sizeof(intmax_t))
+ return "%"PRIdMAX;
+ if (sizeof(time_t) > sizeof(long))
+ return "%lld";
+ if (sizeof(time_t) > sizeof(int))
+ return "%ld";
+ return "%d";
+ }
+#ifdef PRIuMAX
+ if (sizeof(time_t) == sizeof(uintmax_t))
+ return "%"PRIuMAX;
+#endif
+ if (sizeof(time_t) > sizeof(unsigned long))
+ return "%llu";
+ if (sizeof(time_t) > sizeof(unsigned int))
+ return "%lu";
+ return "%u";
+}
+
+static void
+dumptime(register const struct tm *timeptr)
+{
+ static const char wday_name[][4] = {
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+ };
+ static const char mon_name[][4] = {
+ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+ };
+ register int lead;
+ register int trail;
+ int DIVISOR = 10;
+
+ /*
+ ** The packaged localtime_rz and gmtime_r never put out-of-range
+ ** values in tm_wday or tm_mon, but since this code might be compiled
+ ** with other (perhaps experimental) versions, paranoia is in order.
+ */
+ printf("%s %s%3d %.2d:%.2d:%.2d ",
+ ((0 <= timeptr->tm_wday
+ && timeptr->tm_wday < sizeof wday_name / sizeof wday_name[0])
+ ? wday_name[timeptr->tm_wday] : "???"),
+ ((0 <= timeptr->tm_mon
+ && timeptr->tm_mon < sizeof mon_name / sizeof mon_name[0])
+ ? mon_name[timeptr->tm_mon] : "???"),
+ timeptr->tm_mday, timeptr->tm_hour,
+ timeptr->tm_min, timeptr->tm_sec);
+ trail = timeptr->tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR;
+ lead = timeptr->tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR +
+ trail / DIVISOR;
+ trail %= DIVISOR;
+ if (trail < 0 && lead > 0) {
+ trail += DIVISOR;
+ --lead;
+ } else if (lead < 0 && trail > 0) {
+ trail -= DIVISOR;
+ ++lead;
+ }
+ if (lead == 0)
+ printf("%d", trail);
+ else printf("%d%d", lead, ((trail < 0) ? -trail : trail));
+}
Index: radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/zic.c
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/zic.c (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-glibc-2.37-patch/glibc-2.37-new/timezone/zic.c (revision 35)
@@ -0,0 +1,3931 @@
+/* Compile .zi time zone data into TZif binary files. */
+
+/*
+** This file is in the public domain, so clarified as of
+** 2006-07-17 by Arthur David Olson.
+*/
+
+/* Use the system 'time' function, instead of any private replacement.
+ This avoids creating an unnecessary dependency on localtime.c. */
+#undef EPOCH_LOCAL
+#undef EPOCH_OFFSET
+#undef RESERVE_STD_EXT_IDS
+#undef time_tz
+
+#include "version.h"
+#include "private.h"
+#include "tzfile.h"
+
+#include <fcntl.h>
+#include <locale.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+typedef int_fast64_t zic_t;
+static zic_t const
+ ZIC_MIN = INT_FAST64_MIN,
+ ZIC_MAX = INT_FAST64_MAX,
+ ZIC32_MIN = -1 - (zic_t) 0x7fffffff,
+ ZIC32_MAX = 0x7fffffff;
+#define SCNdZIC SCNdFAST64
+
+#ifndef ZIC_MAX_ABBR_LEN_WO_WARN
+# define ZIC_MAX_ABBR_LEN_WO_WARN 6
+#endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */
+
+/* An upper bound on how much a format might grow due to concatenation. */
+enum { FORMAT_LEN_GROWTH_BOUND = 5 };
+
+#ifdef HAVE_DIRECT_H
+# include <direct.h>
+# include <io.h>
+# undef mkdir
+# define mkdir(name, mode) _mkdir(name)
+#endif
+
+#ifndef HAVE_GETRANDOM
+# ifdef __has_include
+# if __has_include(<sys/random.h>)
+# include <sys/random.h>
+# endif
+# elif 2 < __GLIBC__ + (25 <= __GLIBC_MINOR__)
+# include <sys/random.h>
+# endif
+# define HAVE_GETRANDOM GRND_RANDOM
+#elif HAVE_GETRANDOM
+# include <sys/random.h>
+#endif
+
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef S_IRUSR
+# define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
+#else
+# define MKDIR_UMASK 0755
+#endif
+
+/* The minimum alignment of a type, for pre-C23 platforms.
+ The __SUNPRO_C test is because Oracle Developer Studio 12.6 lacks
+ <stdalign.h> even though __STDC_VERSION__ == 201112. */
+#if __STDC_VERSION__ < 201112 || defined __SUNPRO_C
+# define alignof(type) offsetof(struct { char a; type b; }, b)
+#elif __STDC_VERSION__ < 202311
+# include <stdalign.h>
+#endif
+
+/* The maximum length of a text line, including the trailing newline. */
+#ifndef _POSIX2_LINE_MAX
+# define _POSIX2_LINE_MAX 2048
+#endif
+
+/* The type for line numbers. Use PRIdMAX to format them; formerly
+ there was also "#define PRIdLINENO PRIdMAX" and formats used
+ PRIdLINENO, but xgettext cannot grok that. */
+typedef intmax_t lineno;
+
+struct rule {
+ int r_filenum;
+ lineno r_linenum;
+ const char * r_name;
+
+ zic_t r_loyear; /* for example, 1986 */
+ zic_t r_hiyear; /* for example, 1986 */
+ bool r_lowasnum;
+ bool r_hiwasnum;
+
+ int r_month; /* 0..11 */
+
+ int r_dycode; /* see below */
+ int r_dayofmonth;
+ int r_wday;
+
+ zic_t r_tod; /* time from midnight */
+ bool r_todisstd; /* is r_tod standard time? */
+ bool r_todisut; /* is r_tod UT? */
+ bool r_isdst; /* is this daylight saving time? */
+ zic_t r_save; /* offset from standard time */
+ const char * r_abbrvar; /* variable part of abbreviation */
+
+ bool r_todo; /* a rule to do (used in outzone) */
+ zic_t r_temp; /* used in outzone */
+};
+
+/*
+** r_dycode r_dayofmonth r_wday
+*/
+enum {
+ DC_DOM, /* 1..31 */ /* unused */
+ DC_DOWGEQ, /* 1..31 */ /* 0..6 (Sun..Sat) */
+ DC_DOWLEQ /* 1..31 */ /* 0..6 (Sun..Sat) */
+};
+
+struct zone {
+ int z_filenum;
+ lineno z_linenum;
+
+ const char * z_name;
+ zic_t z_stdoff;
+ char * z_rule;
+ const char * z_format;
+ char z_format_specifier;
+
+ bool z_isdst;
+ zic_t z_save;
+
+ struct rule * z_rules;
+ ptrdiff_t z_nrules;
+
+ struct rule z_untilrule;
+ zic_t z_untiltime;
+};
+
+#if !HAVE_POSIX_DECLS
+extern int getopt(int argc, char * const argv[],
+ const char * options);
+extern int link(const char * target, const char * linkname);
+extern char * optarg;
+extern int optind;
+#endif
+
+#if ! HAVE_SYMLINK
+static ssize_t
+readlink(char const *restrict file, char *restrict buf, size_t size)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+static int
+symlink(char const *target, char const *linkname)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+#endif
+#ifndef AT_SYMLINK_FOLLOW
+# if HAVE_LINK
+# define linkat(targetdir, target, linknamedir, linkname, flag) \
+ (itssymlink(target) ? (errno = ENOTSUP, -1) : link(target, linkname))
+# else
+# define linkat(targetdir, target, linknamedir, linkname, flag) \
+ (errno = ENOTSUP, -1)
+# endif
+#endif
+
+static void addtt(zic_t starttime, int type);
+static int addtype(zic_t, char const *, bool, bool, bool);
+static void leapadd(zic_t, int, int);
+static void adjleap(void);
+static void associate(void);
+static void dolink(const char *, const char *, bool);
+static int getfields(char *, char **, int);
+static zic_t gethms(const char * string, const char * errstring);
+static zic_t getsave(char *, bool *);
+static void inexpires(char **, int);
+static void infile(int, char const *);
+static void inleap(char ** fields, int nfields);
+static void inlink(char ** fields, int nfields);
+static void inrule(char ** fields, int nfields);
+static bool inzcont(char ** fields, int nfields);
+static bool inzone(char ** fields, int nfields);
+static bool inzsub(char **, int, bool);
+static bool itssymlink(char const *);
+static bool is_alpha(char a);
+static char lowerit(char);
+static void mkdirs(char const *, bool);
+static void newabbr(const char * abbr);
+static zic_t oadd(zic_t t1, zic_t t2);
+static void outzone(const struct zone * zp, ptrdiff_t ntzones);
+static zic_t rpytime(const struct rule * rp, zic_t wantedy);
+static bool rulesub(struct rule * rp,
+ const char * loyearp, const char * hiyearp,
+ const char * typep, const char * monthp,
+ const char * dayp, const char * timep);
+static zic_t tadd(zic_t t1, zic_t t2);
+
+/* Bound on length of what %z can expand to. */
+enum { PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1 };
+
+static int charcnt;
+static bool errors;
+static bool warnings;
+static int filenum;
+static int leapcnt;
+static bool leapseen;
+static zic_t leapminyear;
+static zic_t leapmaxyear;
+static lineno linenum;
+static int max_abbrvar_len = PERCENT_Z_LEN_BOUND;
+static int max_format_len;
+static zic_t max_year;
+static zic_t min_year;
+static bool noise;
+static int rfilenum;
+static lineno rlinenum;
+static const char * progname;
+static char const * leapsec;
+static char *const * main_argv;
+static ptrdiff_t timecnt;
+static ptrdiff_t timecnt_alloc;
+static int typecnt;
+static int unspecifiedtype;
+
+/*
+** Line codes.
+*/
+
+enum {
+ LC_RULE,
+ LC_ZONE,
+ LC_LINK,
+ LC_LEAP,
+ LC_EXPIRES
+};
+
+/*
+** Which fields are which on a Zone line.
+*/
+
+enum {
+ ZF_NAME = 1,
+ ZF_STDOFF,
+ ZF_RULE,
+ ZF_FORMAT,
+ ZF_TILYEAR,
+ ZF_TILMONTH,
+ ZF_TILDAY,
+ ZF_TILTIME,
+ ZONE_MAXFIELDS,
+ ZONE_MINFIELDS = ZF_TILYEAR
+};
+
+/*
+** Which fields are which on a Zone continuation line.
+*/
+
+enum {
+ ZFC_STDOFF,
+ ZFC_RULE,
+ ZFC_FORMAT,
+ ZFC_TILYEAR,
+ ZFC_TILMONTH,
+ ZFC_TILDAY,
+ ZFC_TILTIME,
+ ZONEC_MAXFIELDS,
+ ZONEC_MINFIELDS = ZFC_TILYEAR
+};
+
+/*
+** Which files are which on a Rule line.
+*/
+
+enum {
+ RF_NAME = 1,
+ RF_LOYEAR,
+ RF_HIYEAR,
+ RF_COMMAND,
+ RF_MONTH,
+ RF_DAY,
+ RF_TOD,
+ RF_SAVE,
+ RF_ABBRVAR,
+ RULE_FIELDS
+};
+
+/*
+** Which fields are which on a Link line.
+*/
+
+enum {
+ LF_TARGET = 1,
+ LF_LINKNAME,
+ LINK_FIELDS
+};
+
+/*
+** Which fields are which on a Leap line.
+*/
+
+enum {
+ LP_YEAR = 1,
+ LP_MONTH,
+ LP_DAY,
+ LP_TIME,
+ LP_CORR,
+ LP_ROLL,
+ LEAP_FIELDS,
+
+ /* Expires lines are like Leap lines, except without CORR and ROLL fields. */
+ EXPIRES_FIELDS = LP_TIME + 1
+};
+
+/* The maximum number of fields on any of the above lines.
+ (The "+"s pacify gcc -Wenum-compare.) */
+enum {
+ MAX_FIELDS = max(max(+RULE_FIELDS, +LINK_FIELDS),
+ max(+LEAP_FIELDS, +EXPIRES_FIELDS))
+};
+
+/*
+** Year synonyms.
+*/
+
+enum {
+ YR_MINIMUM,
+ YR_MAXIMUM,
+ YR_ONLY
+};
+
+static struct rule * rules;
+static ptrdiff_t nrules; /* number of rules */
+static ptrdiff_t nrules_alloc;
+
+static struct zone * zones;
+static ptrdiff_t nzones; /* number of zones */
+static ptrdiff_t nzones_alloc;
+
+struct link {
+ int l_filenum;
+ lineno l_linenum;
+ const char * l_target;
+ const char * l_linkname;
+};
+
+static struct link * links;
+static ptrdiff_t nlinks;
+static ptrdiff_t nlinks_alloc;
+
+struct lookup {
+ const char * l_word;
+ const int l_value;
+};
+
+static struct lookup const * byword(const char * string,
+ const struct lookup * lp);
+
+static struct lookup const zi_line_codes[] = {
+ { "Rule", LC_RULE },
+ { "Zone", LC_ZONE },
+ { "Link", LC_LINK },
+ { NULL, 0 }
+};
+static struct lookup const leap_line_codes[] = {
+ { "Leap", LC_LEAP },
+ { "Expires", LC_EXPIRES },
+ { NULL, 0}
+};
+
+static struct lookup const mon_names[] = {
+ { "January", TM_JANUARY },
+ { "February", TM_FEBRUARY },
+ { "March", TM_MARCH },
+ { "April", TM_APRIL },
+ { "May", TM_MAY },
+ { "June", TM_JUNE },
+ { "July", TM_JULY },
+ { "August", TM_AUGUST },
+ { "September", TM_SEPTEMBER },
+ { "October", TM_OCTOBER },
+ { "November", TM_NOVEMBER },
+ { "December", TM_DECEMBER },
+ { NULL, 0 }
+};
+
+static struct lookup const wday_names[] = {
+ { "Sunday", TM_SUNDAY },
+ { "Monday", TM_MONDAY },
+ { "Tuesday", TM_TUESDAY },
+ { "Wednesday", TM_WEDNESDAY },
+ { "Thursday", TM_THURSDAY },
+ { "Friday", TM_FRIDAY },
+ { "Saturday", TM_SATURDAY },
+ { NULL, 0 }
+};
+
+static struct lookup const lasts[] = {
+ { "last-Sunday", TM_SUNDAY },
+ { "last-Monday", TM_MONDAY },
+ { "last-Tuesday", TM_TUESDAY },
+ { "last-Wednesday", TM_WEDNESDAY },
+ { "last-Thursday", TM_THURSDAY },
+ { "last-Friday", TM_FRIDAY },
+ { "last-Saturday", TM_SATURDAY },
+ { NULL, 0 }
+};
+
+static struct lookup const begin_years[] = {
+ { "minimum", YR_MINIMUM },
+ { "maximum", YR_MAXIMUM },
+ { NULL, 0 }
+};
+
+static struct lookup const end_years[] = {
+ { "minimum", YR_MINIMUM },
+ { "maximum", YR_MAXIMUM },
+ { "only", YR_ONLY },
+ { NULL, 0 }
+};
+
+static struct lookup const leap_types[] = {
+ { "Rolling", true },
+ { "Stationary", false },
+ { NULL, 0 }
+};
+
+static const int len_months[2][MONSPERYEAR] = {
+ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
+ { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+};
+
+static const int len_years[2] = {
+ DAYSPERNYEAR, DAYSPERLYEAR
+};
+
+static struct attype {
+ zic_t at;
+ bool dontmerge;
+ unsigned char type;
+} * attypes;
+static zic_t utoffs[TZ_MAX_TYPES];
+static char isdsts[TZ_MAX_TYPES];
+static unsigned char desigidx[TZ_MAX_TYPES];
+static bool ttisstds[TZ_MAX_TYPES];
+static bool ttisuts[TZ_MAX_TYPES];
+static char chars[TZ_MAX_CHARS];
+static zic_t trans[TZ_MAX_LEAPS];
+static zic_t corr[TZ_MAX_LEAPS];
+static char roll[TZ_MAX_LEAPS];
+
+/*
+** Memory allocation.
+*/
+
+ATTRIBUTE_NORETURN static void
+memory_exhausted(const char *msg)
+{
+ fprintf(stderr, _("%s: Memory exhausted: %s\n"), progname, msg);
+ exit(EXIT_FAILURE);
+}
+
+ATTRIBUTE_NORETURN static void
+size_overflow(void)
+{
+ memory_exhausted(_("size overflow"));
+}
+
+ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+size_sum(size_t a, size_t b)
+{
+#ifdef ckd_add
+ ptrdiff_t sum;
+ if (!ckd_add(&sum, a, b) && sum <= INDEX_MAX)
+ return sum;
+#else
+ if (a <= INDEX_MAX && b <= INDEX_MAX - a)
+ return a + b;
+#endif
+ size_overflow();
+}
+
+ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+size_product(ptrdiff_t nitems, ptrdiff_t itemsize)
+{
+#ifdef ckd_mul
+ ptrdiff_t product;
+ if (!ckd_mul(&product, nitems, itemsize) && product <= INDEX_MAX)
+ return product;
+#else
+ ptrdiff_t nitems_max = INDEX_MAX / itemsize;
+ if (nitems <= nitems_max)
+ return nitems * itemsize;
+#endif
+ size_overflow();
+}
+
+ATTRIBUTE_REPRODUCIBLE static ptrdiff_t
+align_to(ptrdiff_t size, ptrdiff_t alignment)
+{
+ ptrdiff_t lo_bits = alignment - 1, sum = size_sum(size, lo_bits);
+ return sum & ~lo_bits;
+}
+
+#if !HAVE_STRDUP
+static char *
+strdup(char const *str)
+{
+ char *result = malloc(strlen(str) + 1);
+ return result ? strcpy(result, str) : result;
+}
+#endif
+
+static void *
+memcheck(void *ptr)
+{
+ if (ptr == NULL)
+ memory_exhausted(strerror(HAVE_MALLOC_ERRNO ? errno : ENOMEM));
+ return ptr;
+}
+
+ATTRIBUTE_MALLOC static void *
+emalloc(size_t size)
+{
+ return memcheck(malloc(size));
+}
+
+static void *
+erealloc(void *ptr, size_t size)
+{
+ return memcheck(realloc(ptr, size));
+}
+
+ATTRIBUTE_MALLOC static char *
+estrdup(char const *str)
+{
+ return memcheck(strdup(str));
+}
+
+static ptrdiff_t
+grow_nitems_alloc(ptrdiff_t *nitems_alloc, ptrdiff_t itemsize)
+{
+ ptrdiff_t addend = (*nitems_alloc >> 1) + 1;
+#if defined ckd_add && defined ckd_mul
+ ptrdiff_t product;
+ if (!ckd_add(nitems_alloc, *nitems_alloc, addend)
+ && !ckd_mul(&product, *nitems_alloc, itemsize) && product <= INDEX_MAX)
+ return product;
+#else
+ if (*nitems_alloc <= ((INDEX_MAX - 1) / 3 * 2) / itemsize) {
+ *nitems_alloc += addend;
+ return *nitems_alloc * itemsize;
+ }
+#endif
+ memory_exhausted(_("integer overflow"));
+}
+
+static void *
+growalloc(void *ptr, ptrdiff_t itemsize, ptrdiff_t nitems,
+ ptrdiff_t *nitems_alloc)
+{
+ return (nitems < *nitems_alloc
+ ? ptr
+ : erealloc(ptr, grow_nitems_alloc(nitems_alloc, itemsize)));
+}
+
+/*
+** Error handling.
+*/
+
+/* In most of the code, an input file name is represented by its index
+ into the main argument vector, except that LEAPSEC_FILENUM stands
+ for leapsec and COMMAND_LINE_FILENUM stands for the command line. */
+enum { LEAPSEC_FILENUM = -2, COMMAND_LINE_FILENUM = -1 };
+
+/* Return the name of the Ith input file, for diagnostics. */
+static char const *
+filename(int i)
+{
+ if (i == COMMAND_LINE_FILENUM)
+ return _("command line");
+ else {
+ char const *fname = i == LEAPSEC_FILENUM ? leapsec : main_argv[i];
+ return strcmp(fname, "-") == 0 ? _("standard input") : fname;
+ }
+}
+
+static void
+eats(int fnum, lineno num, int rfnum, lineno rnum)
+{
+ filenum = fnum;
+ linenum = num;
+ rfilenum = rfnum;
+ rlinenum = rnum;
+}
+
+static void
+eat(int fnum, lineno num)
+{
+ eats(fnum, num, 0, -1);
+}
+
+ATTRIBUTE_FORMAT((printf, 1, 0)) static void
+verror(const char *const string, va_list args)
+{
+ /*
+ ** Match the format of "cc" to allow sh users to
+ ** zic ... 2>&1 | error -t "*" -v
+ ** on BSD systems.
+ */
+ if (filenum)
+ fprintf(stderr, _("\"%s\", line %"PRIdMAX": "),
+ filename(filenum), linenum);
+ vfprintf(stderr, string, args);
+ if (rfilenum)
+ fprintf(stderr, _(" (rule from \"%s\", line %"PRIdMAX")"),
+ filename(rfilenum), rlinenum);
+ fprintf(stderr, "\n");
+}
+
+ATTRIBUTE_FORMAT((printf, 1, 2)) static void
+error(const char *const string, ...)
+{
+ va_list args;
+ va_start(args, string);
+ verror(string, args);
+ va_end(args);
+ errors = true;
+}
+
+ATTRIBUTE_FORMAT((printf, 1, 2)) static void
+warning(const char *const string, ...)
+{
+ va_list args;
+ fprintf(stderr, _("warning: "));
+ va_start(args, string);
+ verror(string, args);
+ va_end(args);
+ warnings = true;
+}
+
+/* Close STREAM. If it had an I/O error, report it against DIR/NAME,
+ remove TEMPNAME if nonnull, and then exit. */
+static void
+close_file(FILE *stream, char const *dir, char const *name,
+ char const *tempname)
+{
+ char const *e = (ferror(stream) ? _("I/O error")
+ : fclose(stream) != 0 ? strerror(errno) : NULL);
+ if (e) {
+ fprintf(stderr, "%s: %s%s%s%s%s\n", progname,
+ dir ? dir : "", dir ? "/" : "",
+ name ? name : "", name ? ": " : "",
+ e);
+ if (tempname)
+ remove(tempname);
+ exit(EXIT_FAILURE);
+ }
+}
+
+ATTRIBUTE_NORETURN static void
+usage(FILE *stream, int status)
+{
+ fprintf(stream,
+ _("%s: usage is %s [ --version ] [ --help ] [ -v ] \\\n"
+ "\t[ -b {slim|fat} ] [ -d directory ] [ -l localtime ]"
+ " [ -L leapseconds ] \\\n"
+ "\t[ -p posixrules ] [ -r '[@lo][/@hi]' ] [ -R '@hi' ] \\\n"
+ "\t[ -t localtime-link ] \\\n"
+ "\t[ filename ... ]\n\n"
+ "Report bugs to %s.\n"),
+ progname, progname, REPORT_BUGS_TO);
+ if (status == EXIT_SUCCESS)
+ close_file(stream, NULL, NULL, NULL);
+ exit(status);
+}
+
+/* Change the working directory to DIR, possibly creating DIR and its
+ ancestors. After this is done, all files are accessed with names
+ relative to DIR. */
+static void
+change_directory(char const *dir)
+{
+ if (chdir(dir) != 0) {
+ int chdir_errno = errno;
+ if (chdir_errno == ENOENT) {
+ mkdirs(dir, false);
+ chdir_errno = chdir(dir) == 0 ? 0 : errno;
+ }
+ if (chdir_errno != 0) {
+ fprintf(stderr, _("%s: Can't chdir to %s: %s\n"),
+ progname, dir, strerror(chdir_errno));
+ exit(EXIT_FAILURE);
+ }
+ }
+}
+
+/* Compare the two links A and B, for a stable sort by link name. */
+static int
+qsort_linkcmp(void const *a, void const *b)
+{
+ struct link const *l = a;
+ struct link const *m = b;
+ int cmp = strcmp(l->l_linkname, m->l_linkname);
+ if (cmp)
+ return cmp;
+
+ /* The link names are the same. Make the sort stable by comparing
+ file numbers (where subtraction cannot overflow) and possibly
+ line numbers (where it can). */
+ cmp = l->l_filenum - m->l_filenum;
+ if (cmp)
+ return cmp;
+ return (l->l_linenum > m->l_linenum) - (l->l_linenum < m->l_linenum);
+}
+
+/* Compare the string KEY to the link B, for bsearch. */
+static int
+bsearch_linkcmp(void const *key, void const *b)
+{
+ struct link const *m = b;
+ return strcmp(key, m->l_linkname);
+}
+
+/* Make the links specified by the Link lines. */
+static void
+make_links(void)
+{
+ ptrdiff_t i, j, nalinks, pass_size;
+ if (1 < nlinks)
+ qsort(links, nlinks, sizeof *links, qsort_linkcmp);
+
+ /* Ignore each link superseded by a later link with the same name. */
+ j = 0;
+ for (i = 0; i < nlinks; i++) {
+ while (i + 1 < nlinks
+ && strcmp(links[i].l_linkname, links[i + 1].l_linkname) == 0)
+ i++;
+ links[j++] = links[i];
+ }
+ nlinks = pass_size = j;
+
+ /* Walk through the link array making links. However,
+ if a link's target has not been made yet, append a copy to the
+ end of the array. The end of the array will gradually fill
+ up with a small sorted subsequence of not-yet-made links.
+ nalinks counts all the links in the array, including copies.
+ When we reach the copied subsequence, it may still contain
+ a link to a not-yet-made link, so the process repeats.
+ At any given point in time, the link array consists of the
+ following subregions, where 0 <= i <= j <= nalinks and
+ 0 <= nlinks <= nalinks:
+
+ 0 .. (i - 1):
+ links that either have been made, or have been copied to a
+ later point point in the array (this later point can be in
+ any of the three subregions)
+ i .. (j - 1):
+ not-yet-made links for this pass
+ j .. (nalinks - 1):
+ not-yet-made links that this pass has skipped because
+ they were links to not-yet-made links
+
+ The first subregion might not be sorted if nlinks < i;
+ the other two subregions are sorted. This algorithm does
+ not alter entries 0 .. (nlinks - 1), which remain sorted.
+
+ If there are L links, this algorithm is O(C*L*log(L)) where
+ C is the length of the longest link chain. Usually C is
+ short (e.g., 3) though its worst-case value is L. */
+
+ j = nalinks = nlinks;
+
+ for (i = 0; i < nalinks; i++) {
+ struct link *l;
+
+ eat(links[i].l_filenum, links[i].l_linenum);
+
+ /* If this pass examined all its links, start the next pass. */
+ if (i == j) {
+ if (nalinks - i == pass_size) {
+ error(_("\"Link %s %s\" is part of a link cycle"),
+ links[i].l_target, links[i].l_linkname);
+ break;
+ }
+ j = nalinks;
+ pass_size = nalinks - i;
+ }
+
+ /* Diagnose self links, which the cycle detection algorithm would not
+ otherwise catch. */
+ if (strcmp(links[i].l_target, links[i].l_linkname) == 0) {
+ error(_("link %s targets itself"), links[i].l_target);
+ continue;
+ }
+
+ /* Make this link unless its target has not been made yet. */
+ l = bsearch(links[i].l_target, &links[i + 1], j - (i + 1),
+ sizeof *links, bsearch_linkcmp);
+ if (!l)
+ l = bsearch(links[i].l_target, &links[j], nalinks - j,
+ sizeof *links, bsearch_linkcmp);
+ if (!l)
+ dolink(links[i].l_target, links[i].l_linkname, false);
+ else {
+ /* The link target has not been made yet; copy the link to the end. */
+ links = growalloc(links, sizeof *links, nalinks, &nlinks_alloc);
+ links[nalinks++] = links[i];
+ }
+
+ if (noise && i < nlinks) {
+ if (l)
+ warning(_("link %s targeting link %s mishandled by pre-2023 zic"),
+ links[i].l_linkname, links[i].l_target);
+ else if (bsearch(links[i].l_target, links, nlinks, sizeof *links,
+ bsearch_linkcmp))
+ warning(_("link %s targeting link %s"),
+ links[i].l_linkname, links[i].l_target);
+ }
+ }
+}
+
+/* Simple signal handling: just set a flag that is checked
+ periodically outside critical sections. To set up the handler,
+ prefer sigaction if available to close a signal race. */
+
+static sig_atomic_t got_signal;
+
+static void
+signal_handler(int sig)
+{
+#ifndef SA_SIGINFO
+ signal(sig, signal_handler);
+#endif
+ got_signal = sig;
+}
+
+/* Arrange for SIGINT etc. to be caught by the handler. */
+static void
+catch_signals(void)
+{
+ static int const signals[] = {
+#ifdef SIGHUP
+ SIGHUP,
+#endif
+ SIGINT,
+#ifdef SIGPIPE
+ SIGPIPE,
+#endif
+ SIGTERM
+ };
+ int i;
+ for (i = 0; i < sizeof signals / sizeof signals[0]; i++) {
+#ifdef SA_SIGINFO
+ struct sigaction act0, act;
+ act.sa_handler = signal_handler;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
+ if (sigaction(signals[i], &act, &act0) == 0
+ && ! (act0.sa_flags & SA_SIGINFO) && act0.sa_handler == SIG_IGN) {
+ sigaction(signals[i], &act0, NULL);
+ got_signal = 0;
+ }
+#else
+ if (signal(signals[i], signal_handler) == SIG_IGN) {
+ signal(signals[i], SIG_IGN);
+ got_signal = 0;
+ }
+#endif
+ }
+}
+
+/* If a signal has arrived, terminate zic with appropriate status. */
+static void
+check_for_signal(void)
+{
+ int sig = got_signal;
+ if (sig) {
+ signal(sig, SIG_DFL);
+ raise(sig);
+ abort(); /* A bug in 'raise'. */
+ }
+}
+
+enum { TIME_T_BITS_IN_FILE = 64 };
+
+/* The minimum and maximum values representable in a TZif file. */
+static zic_t const min_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
+static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
+
+/* The minimum, and one less than the maximum, values specified by
+ the -r option. These default to MIN_TIME and MAX_TIME. */
+static zic_t lo_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
+static zic_t hi_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
+
+/* The time specified by the -R option, defaulting to MIN_TIME. */
+static zic_t redundant_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
+
+/* The time specified by an Expires line, or negative if no such line. */
+static zic_t leapexpires = -1;
+
+/* Set the time range of the output to TIMERANGE.
+ Return true if successful. */
+static bool
+timerange_option(char *timerange)
+{
+ intmax_t lo = min_time, hi = max_time;
+ char *lo_end = timerange, *hi_end;
+ if (*timerange == '@') {
+ errno = 0;
+ lo = strtoimax(timerange + 1, &lo_end, 10);
+ if (lo_end == timerange + 1 || (lo == INTMAX_MAX && errno == ERANGE))
+ return false;
+ }
+ hi_end = lo_end;
+ if (lo_end[0] == '/' && lo_end[1] == '@') {
+ errno = 0;
+ hi = strtoimax(lo_end + 2, &hi_end, 10);
+ if (hi_end == lo_end + 2 || hi == INTMAX_MIN)
+ return false;
+ hi -= ! (hi == INTMAX_MAX && errno == ERANGE);
+ }
+ if (*hi_end || hi < lo || max_time < lo || hi < min_time)
+ return false;
+ lo_time = max(lo, min_time);
+ hi_time = min(hi, max_time);
+ return true;
+}
+
+/* Generate redundant time stamps up to OPT. Return true if successful. */
+static bool
+redundant_time_option(char *opt)
+{
+ if (*opt == '@') {
+ intmax_t redundant;
+ char *opt_end;
+ redundant = strtoimax(opt + 1, &opt_end, 10);
+ if (opt_end != opt + 1 && !*opt_end) {
+ redundant_time = max(redundant_time, redundant);
+ return true;
+ }
+ }
+ return false;
+}
+
+static const char * psxrules;
+static const char * lcltime;
+static const char * directory;
+static const char * tzdefault;
+
+/* -1 if the TZif output file should be slim, 0 if default, 1 if the
+ output should be fat for backward compatibility. ZIC_BLOAT_DEFAULT
+ determines the default. */
+static int bloat;
+
+static bool
+want_bloat(void)
+{
+ return 0 <= bloat;
+}
+
+#ifndef ZIC_BLOAT_DEFAULT
+# define ZIC_BLOAT_DEFAULT "slim"
+#endif
+
+int
+main(int argc, char **argv)
+{
+ register int c, k;
+ register ptrdiff_t i, j;
+ bool timerange_given = false;
+
+#ifdef S_IWGRP
+ umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
+#endif
+#if HAVE_GETTEXT
+ setlocale(LC_ALL, "");
+# ifdef TZ_DOMAINDIR
+ bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
+# endif /* defined TEXTDOMAINDIR */
+ textdomain(TZ_DOMAIN);
+#endif /* HAVE_GETTEXT */
+ main_argv = argv;
+ progname = argv[0] ? argv[0] : "zic";
+ if (TYPE_BIT(zic_t) < 64) {
+ fprintf(stderr, "%s: %s\n", progname,
+ _("wild compilation-time specification of zic_t"));
+ return EXIT_FAILURE;
+ }
+ for (k = 1; k < argc; k++)
+ if (strcmp(argv[k], "--version") == 0) {
+ printf("zic %s%s\n", PKGVERSION, TZVERSION);
+ close_file(stdout, NULL, NULL, NULL);
+ return EXIT_SUCCESS;
+ } else if (strcmp(argv[k], "--help") == 0) {
+ usage(stdout, EXIT_SUCCESS);
+ }
+ while ((c = getopt(argc, argv, "b:d:l:L:p:r:R:st:vy:")) != EOF
+ && c != -1)
+ switch (c) {
+ default:
+ usage(stderr, EXIT_FAILURE);
+ case 'b':
+ if (strcmp(optarg, "slim") == 0) {
+ if (0 < bloat)
+ error(_("incompatible -b options"));
+ bloat = -1;
+ } else if (strcmp(optarg, "fat") == 0) {
+ if (bloat < 0)
+ error(_("incompatible -b options"));
+ bloat = 1;
+ } else
+ error(_("invalid option: -b '%s'"), optarg);
+ break;
+ case 'd':
+ if (directory == NULL)
+ directory = optarg;
+ else {
+ fprintf(stderr,
+_("%s: More than one -d option specified\n"),
+ progname);
+ return EXIT_FAILURE;
+ }
+ break;
+ case 'l':
+ if (lcltime == NULL)
+ lcltime = optarg;
+ else {
+ fprintf(stderr,
+_("%s: More than one -l option specified\n"),
+ progname);
+ return EXIT_FAILURE;
+ }
+ break;
+ case 'p':
+ if (psxrules == NULL)
+ psxrules = optarg;
+ else {
+ fprintf(stderr,
+_("%s: More than one -p option specified\n"),
+ progname);
+ return EXIT_FAILURE;
+ }
+ break;
+ case 't':
+ if (tzdefault != NULL) {
+ fprintf(stderr,
+ _("%s: More than one -t option"
+ " specified\n"),
+ progname);
+ return EXIT_FAILURE;
+ }
+ tzdefault = optarg;
+ break;
+ case 'y':
+ warning(_("-y ignored"));
+ break;
+ case 'L':
+ if (leapsec == NULL)
+ leapsec = optarg;
+ else {
+ fprintf(stderr,
+_("%s: More than one -L option specified\n"),
+ progname);
+ return EXIT_FAILURE;
+ }
+ break;
+ case 'v':
+ noise = true;
+ break;
+ case 'r':
+ if (timerange_given) {
+ fprintf(stderr,
+_("%s: More than one -r option specified\n"),
+ progname);
+ return EXIT_FAILURE;
+ }
+ if (! timerange_option(optarg)) {
+ fprintf(stderr,
+_("%s: invalid time range: %s\n"),
+ progname, optarg);
+ return EXIT_FAILURE;
+ }
+ timerange_given = true;
+ break;
+ case 'R':
+ if (! redundant_time_option(optarg)) {
+ fprintf(stderr, _("%s: invalid time: %s\n"),
+ progname, optarg);
+ return EXIT_FAILURE;
+ }
+ break;
+ case 's':
+ warning(_("-s ignored"));
+ break;
+ }
+ if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
+ usage(stderr, EXIT_FAILURE); /* usage message by request */
+ if (hi_time + (hi_time < ZIC_MAX) < redundant_time) {
+ fprintf(stderr, _("%s: -R time exceeds -r cutoff\n"), progname);
+ return EXIT_FAILURE;
+ }
+ if (bloat == 0) {
+ static char const bloat_default[] = ZIC_BLOAT_DEFAULT;
+ if (strcmp(bloat_default, "slim") == 0)
+ bloat = -1;
+ else if (strcmp(bloat_default, "fat") == 0)
+ bloat = 1;
+ else
+ abort(); /* Configuration error. */
+ }
+ if (directory == NULL)
+ directory = TZDIR;
+ if (tzdefault == NULL)
+ tzdefault = TZDEFAULT;
+
+ if (optind < argc && leapsec != NULL) {
+ infile(LEAPSEC_FILENUM, leapsec);
+ adjleap();
+ }
+
+ for (k = optind; k < argc; k++)
+ infile(k, argv[k]);
+ if (errors)
+ return EXIT_FAILURE;
+ associate();
+ change_directory(directory);
+ catch_signals();
+ for (i = 0; i < nzones; i = j) {
+ /*
+ ** Find the next non-continuation zone entry.
+ */
+ for (j = i + 1; j < nzones && zones[j].z_name == NULL; ++j)
+ continue;
+ outzone(&zones[i], j - i);
+ }
+ make_links();
+ if (lcltime != NULL) {
+ eat(COMMAND_LINE_FILENUM, 1);
+ dolink(lcltime, tzdefault, true);
+ }
+ if (psxrules != NULL) {
+ eat(COMMAND_LINE_FILENUM, 1);
+ dolink(psxrules, TZDEFRULES, true);
+ }
+ if (warnings && (ferror(stderr) || fclose(stderr) != 0))
+ return EXIT_FAILURE;
+ return errors ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+
+static bool
+componentcheck(char const *name, char const *component,
+ char const *component_end)
+{
+ enum { component_len_max = 14 };
+ ptrdiff_t component_len = component_end - component;
+ if (component_len == 0) {
+ if (!*name)
+ error(_("empty file name"));
+ else
+ error(_(component == name
+ ? "file name '%s' begins with '/'"
+ : *component_end
+ ? "file name '%s' contains '//'"
+ : "file name '%s' ends with '/'"),
+ name);
+ return false;
+ }
+ if (0 < component_len && component_len <= 2
+ && component[0] == '.' && component_end[-1] == '.') {
+ int len = component_len;
+ error(_("file name '%s' contains '%.*s' component"),
+ name, len, component);
+ return false;
+ }
+ if (noise) {
+ if (0 < component_len && component[0] == '-')
+ warning(_("file name '%s' component contains leading '-'"),
+ name);
+ if (component_len_max < component_len)
+ warning(_("file name '%s' contains overlength component"
+ " '%.*s...'"),
+ name, component_len_max, component);
+ }
+ return true;
+}
+
+static bool
+namecheck(const char *name)
+{
+ register char const *cp;
+
+ /* Benign characters in a portable file name. */
+ static char const benign[] =
+ "-/_"
+ "abcdefghijklmnopqrstuvwxyz"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ /* Non-control chars in the POSIX portable character set,
+ excluding the benign characters. */
+ static char const printable_and_not_benign[] =
+ " !\"#$%&'()*+,.0123456789:;<=>?@[\\]^`{|}~";
+
+ register char const *component = name;
+ for (cp = name; *cp; cp++) {
+ unsigned char c = *cp;
+ if (noise && !strchr(benign, c)) {
+ warning((strchr(printable_and_not_benign, c)
+ ? _("file name '%s' contains byte '%c'")
+ : _("file name '%s' contains byte '\\%o'")),
+ name, c);
+ }
+ if (c == '/') {
+ if (!componentcheck(name, component, cp))
+ return false;
+ component = cp + 1;
+ }
+ }
+ return componentcheck(name, component, cp);
+}
+
+/* Return a random uint_fast64_t. */
+static uint_fast64_t
+get_rand_u64(void)
+{
+#if HAVE_GETRANDOM
+ static uint_fast64_t entropy_buffer[max(1, 256 / sizeof(uint_fast64_t))];
+ static int nwords;
+ if (!nwords) {
+ ssize_t s;
+ do
+ s = getrandom(entropy_buffer, sizeof entropy_buffer, 0);
+ while (s < 0 && errno == EINTR);
+
+ nwords = s < 0 ? -1 : s / sizeof *entropy_buffer;
+ }
+ if (0 < nwords)
+ return entropy_buffer[--nwords];
+#endif
+
+ /* getrandom didn't work, so fall back on portable code that is
+ not the best because the seed isn't cryptographically random and
+ 'rand' might not be cryptographically secure. */
+ {
+ static bool initialized;
+ if (!initialized) {
+ srand(time(NULL));
+ initialized = true;
+ }
+ }
+
+ /* Return a random number if rand() yields a random number and in
+ the typical case where RAND_MAX is one less than a power of two.
+ In other cases this code yields a sort-of-random number. */
+ {
+ uint_fast64_t rand_max = RAND_MAX,
+ nrand = rand_max < UINT_FAST64_MAX ? rand_max + 1 : 0,
+ rmod = INT_MAX < UINT_FAST64_MAX ? 0 : UINT_FAST64_MAX / nrand + 1,
+ r = 0, rmax = 0;
+
+ do {
+ uint_fast64_t rmax1 = rmax;
+ if (rmod) {
+ /* Avoid signed integer overflow on theoretical platforms
+ where uint_fast64_t promotes to int. */
+ rmax1 %= rmod;
+ r %= rmod;
+ }
+ rmax1 = nrand * rmax1 + rand_max;
+ r = nrand * r + rand();
+ rmax = rmax < rmax1 ? rmax1 : UINT_FAST64_MAX;
+ } while (rmax < UINT_FAST64_MAX);
+
+ return r;
+ }
+}
+
+/* Generate a randomish name in the same directory as *NAME. If
+ *NAMEALLOC, put the name into *NAMEALLOC which is assumed to be
+ that returned by a previous call and is thus already almost set up
+ and equal to *NAME; otherwise, allocate a new name and put its
+ address into both *NAMEALLOC and *NAME. */
+static void
+random_dirent(char const **name, char **namealloc)
+{
+ char const *src = *name;
+ char *dst = *namealloc;
+ static char const prefix[] = ".zic";
+ static char const alphabet[] =
+ "abcdefghijklmnopqrstuvwxyz"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "0123456789";
+ enum { prefixlen = sizeof prefix - 1, alphabetlen = sizeof alphabet - 1 };
+ int suffixlen = 6;
+ char const *lastslash = strrchr(src, '/');
+ ptrdiff_t dirlen = lastslash ? lastslash + 1 - src : 0;
+ int i;
+ uint_fast64_t r;
+ uint_fast64_t base = alphabetlen;
+
+ /* BASE**6 */
+ uint_fast64_t base__6 = base * base * base * base * base * base;
+
+ /* The largest uintmax_t that is a multiple of BASE**6. Any random
+ uintmax_t value that is this value or greater, yields a biased
+ remainder when divided by BASE**6. UNFAIR_MIN equals the
+ mathematical value of ((UINTMAX_MAX + 1) - (UINTMAX_MAX + 1) % BASE**6)
+ computed without overflow. */
+ uint_fast64_t unfair_min = - ((UINTMAX_MAX % base__6 + 1) % base__6);
+
+ if (!dst) {
+ dst = emalloc(size_sum(dirlen, prefixlen + suffixlen + 1));
+ memcpy(dst, src, dirlen);
+ memcpy(dst + dirlen, prefix, prefixlen);
+ dst[dirlen + prefixlen + suffixlen] = '\0';
+ *name = *namealloc = dst;
+ }
+
+ do
+ r = get_rand_u64();
+ while (unfair_min <= r);
+
+ for (i = 0; i < suffixlen; i++) {
+ dst[dirlen + prefixlen + i] = alphabet[r % alphabetlen];
+ r /= alphabetlen;
+ }
+}
+
+/* Prepare to write to the file *OUTNAME, using *TEMPNAME to store the
+ name of the temporary file that will eventually be renamed to
+ *OUTNAME. Assign the temporary file's name to both *OUTNAME and
+ *TEMPNAME. If *TEMPNAME is null, allocate the name of any such
+ temporary file; otherwise, reuse *TEMPNAME's storage, which is
+ already set up and only needs its trailing suffix updated. */
+static FILE *
+open_outfile(char const **outname, char **tempname)
+{
+#if __STDC_VERSION__ < 201112
+ static char const fopen_mode[] = "wb";
+#else
+ static char const fopen_mode[] = "wbx";
+#endif
+
+ FILE *fp;
+ bool dirs_made = false;
+ if (!*tempname)
+ random_dirent(outname, tempname);
+
+ while (! (fp = fopen(*outname, fopen_mode))) {
+ int fopen_errno = errno;
+ if (fopen_errno == ENOENT && !dirs_made) {
+ mkdirs(*outname, true);
+ dirs_made = true;
+ } else if (fopen_errno == EEXIST)
+ random_dirent(outname, tempname);
+ else {
+ fprintf(stderr, _("%s: Can't create %s/%s: %s\n"),
+ progname, directory, *outname, strerror(fopen_errno));
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ return fp;
+}
+
+/* If TEMPNAME, the result is in the temporary file TEMPNAME even
+ though the user wanted it in NAME, so rename TEMPNAME to NAME.
+ Report an error and exit if there is trouble. Also, free TEMPNAME. */
+static void
+rename_dest(char *tempname, char const *name)
+{
+ if (tempname) {
+ if (rename(tempname, name) != 0) {
+ int rename_errno = errno;
+ remove(tempname);
+ fprintf(stderr, _("%s: rename to %s/%s: %s\n"),
+ progname, directory, name, strerror(rename_errno));
+ exit(EXIT_FAILURE);
+ }
+ free(tempname);
+ }
+}
+
+/* Create symlink contents suitable for symlinking FROM to TO, as a
+ freshly allocated string. FROM should be a relative file name, and
+ is relative to the global variable DIRECTORY. TO can be either
+ relative or absolute. */
+static char *
+relname(char const *target, char const *linkname)
+{
+ size_t i, taillen, dir_len = 0, dotdots = 0;
+ ptrdiff_t dotdotetcsize, linksize = INDEX_MAX;
+ char const *f = target;
+ char *result = NULL;
+ if (*linkname == '/') {
+ /* Make F absolute too. */
+ size_t len = strlen(directory);
+ size_t lenslash = len + (len && directory[len - 1] != '/');
+ size_t targetsize = strlen(target) + 1;
+ linksize = size_sum(lenslash, targetsize);
+ f = result = emalloc(linksize);
+ memcpy(result, directory, len);
+ result[len] = '/';
+ memcpy(result + lenslash, target, targetsize);
+ }
+ for (i = 0; f[i] && f[i] == linkname[i]; i++)
+ if (f[i] == '/')
+ dir_len = i + 1;
+ for (; linkname[i]; i++)
+ dotdots += linkname[i] == '/' && linkname[i - 1] != '/';
+ taillen = strlen(f + dir_len);
+ dotdotetcsize = size_sum(size_product(dotdots, 3), taillen + 1);
+ if (dotdotetcsize <= linksize) {
+ if (!result)
+ result = emalloc(dotdotetcsize);
+ for (i = 0; i < dotdots; i++)
+ memcpy(result + 3 * i, "../", 3);
+ memmove(result + 3 * dotdots, f + dir_len, taillen + 1);
+ }
+ return result;
+}
+
+static void
+dolink(char const *target, char const *linkname, bool staysymlink)
+{
+ bool linkdirs_made = false;
+ int link_errno;
+ char *tempname = NULL;
+ char const *outname = linkname;
+
+ check_for_signal();
+
+ if (strcmp(target, "-") == 0) {
+ if (remove(linkname) == 0 || errno == ENOENT || errno == ENOTDIR)
+ return;
+ else {
+ char const *e = strerror(errno);
+ fprintf(stderr, _("%s: Can't remove %s/%s: %s\n"),
+ progname, directory, linkname, e);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ while (true) {
+ if (linkat(AT_FDCWD, target, AT_FDCWD, outname, AT_SYMLINK_FOLLOW)
+ == 0) {
+ link_errno = 0;
+ break;
+ }
+ link_errno = errno;
+ if (link_errno == EXDEV || link_errno == ENOTSUP)
+ break;
+
+ if (link_errno == EEXIST) {
+ staysymlink &= !tempname;
+ random_dirent(&outname, &tempname);
+ if (staysymlink && itssymlink(linkname))
+ break;
+ } else if (link_errno == ENOENT && !linkdirs_made) {
+ mkdirs(linkname, true);
+ linkdirs_made = true;
+ } else {
+ fprintf(stderr, _("%s: Can't link %s/%s to %s/%s: %s\n"),
+ progname, directory, target, directory, outname,
+ strerror(link_errno));
+ exit(EXIT_FAILURE);
+ }
+ }
+ if (link_errno != 0) {
+ bool absolute = *target == '/';
+ char *linkalloc = absolute ? NULL : relname(target, linkname);
+ char const *contents = absolute ? target : linkalloc;
+ int symlink_errno;
+
+ while (true) {
+ if (symlink(contents, outname) == 0) {
+ symlink_errno = 0;
+ break;
+ }
+ symlink_errno = errno;
+ if (symlink_errno == EEXIST)
+ random_dirent(&outname, &tempname);
+ else if (symlink_errno == ENOENT && !linkdirs_made) {
+ mkdirs(linkname, true);
+ linkdirs_made = true;
+ } else
+ break;
+ }
+ free(linkalloc);
+ if (symlink_errno == 0) {
+ if (link_errno != ENOTSUP && link_errno != EEXIST)
+ warning(_("symbolic link used because hard link failed: %s"),
+ strerror(link_errno));
+ } else {
+ FILE *fp, *tp;
+ int c;
+ fp = fopen(target, "rb");
+ if (!fp) {
+ char const *e = strerror(errno);
+ fprintf(stderr, _("%s: Can't read %s/%s: %s\n"),
+ progname, directory, target, e);
+ exit(EXIT_FAILURE);
+ }
+ tp = open_outfile(&outname, &tempname);
+ while ((c = getc(fp)) != EOF)
+ putc(c, tp);
+ close_file(tp, directory, linkname, tempname);
+ close_file(fp, directory, target, NULL);
+ if (link_errno != ENOTSUP)
+ warning(_("copy used because hard link failed: %s"),
+ strerror(link_errno));
+ else if (symlink_errno != ENOTSUP)
+ warning(_("copy used because symbolic link failed: %s"),
+ strerror(symlink_errno));
+ }
+ }
+ rename_dest(tempname, linkname);
+}
+
+/* Return true if NAME is a symbolic link. */
+static bool
+itssymlink(char const *name)
+{
+ char c;
+ return 0 <= readlink(name, &c, 1);
+}
+
+/*
+** Associate sets of rules with zones.
+*/
+
+/*
+** Sort by rule name.
+*/
+
+static int
+rcomp(const void *cp1, const void *cp2)
+{
+ struct rule const *r1 = cp1, *r2 = cp2;
+ return strcmp(r1->r_name, r2->r_name);
+}
+
+static void
+associate(void)
+{
+ register struct zone * zp;
+ register struct rule * rp;
+ register ptrdiff_t i, j, base, out;
+
+ if (1 < nrules) {
+ qsort(rules, nrules, sizeof *rules, rcomp);
+ for (i = 0; i < nrules - 1; ++i) {
+ if (strcmp(rules[i].r_name,
+ rules[i + 1].r_name) != 0)
+ continue;
+ if (rules[i].r_filenum == rules[i + 1].r_filenum)
+ continue;
+ eat(rules[i].r_filenum, rules[i].r_linenum);
+ warning(_("same rule name in multiple files"));
+ eat(rules[i + 1].r_filenum, rules[i + 1].r_linenum);
+ warning(_("same rule name in multiple files"));
+ for (j = i + 2; j < nrules; ++j) {
+ if (strcmp(rules[i].r_name,
+ rules[j].r_name) != 0)
+ break;
+ if (rules[i].r_filenum == rules[j].r_filenum)
+ continue;
+ if (rules[i + 1].r_filenum
+ == rules[j].r_filenum)
+ continue;
+ break;
+ }
+ i = j - 1;
+ }
+ }
+ for (i = 0; i < nzones; ++i) {
+ zp = &zones[i];
+ zp->z_rules = NULL;
+ zp->z_nrules = 0;
+ }
+ for (base = 0; base < nrules; base = out) {
+ rp = &rules[base];
+ for (out = base + 1; out < nrules; ++out)
+ if (strcmp(rp->r_name, rules[out].r_name) != 0)
+ break;
+ for (i = 0; i < nzones; ++i) {
+ zp = &zones[i];
+ if (strcmp(zp->z_rule, rp->r_name) != 0)
+ continue;
+ zp->z_rules = rp;
+ zp->z_nrules = out - base;
+ }
+ }
+ for (i = 0; i < nzones; ++i) {
+ zp = &zones[i];
+ if (zp->z_nrules == 0) {
+ /*
+ ** Maybe we have a local standard time offset.
+ */
+ eat(zp->z_filenum, zp->z_linenum);
+ zp->z_save = getsave(zp->z_rule, &zp->z_isdst);
+ /*
+ ** Note, though, that if there's no rule,
+ ** a '%s' in the format is a bad thing.
+ */
+ if (zp->z_format_specifier == 's')
+ error("%s", _("%s in ruleless zone"));
+ }
+ }
+ if (errors)
+ exit(EXIT_FAILURE);
+}
+
+/* Read a text line from FP into BUF, which is of size BUFSIZE.
+ Terminate it with a NUL byte instead of a newline.
+ Return true if successful, false if EOF.
+ On error, report the error and exit. */
+static bool
+inputline(FILE *fp, char *buf, ptrdiff_t bufsize)
+{
+ ptrdiff_t linelen = 0, ch;
+ while ((ch = getc(fp)) != '\n') {
+ if (ch < 0) {
+ if (ferror(fp)) {
+ error(_("input error"));
+ exit(EXIT_FAILURE);
+ }
+ if (linelen == 0)
+ return false;
+ error(_("unterminated line"));
+ exit(EXIT_FAILURE);
+ }
+ if (!ch) {
+ error(_("NUL input byte"));
+ exit(EXIT_FAILURE);
+ }
+ buf[linelen++] = ch;
+ if (linelen == bufsize) {
+ error(_("line too long"));
+ exit(EXIT_FAILURE);
+ }
+ }
+ buf[linelen] = '\0';
+ return true;
+}
+
+static void
+infile(int fnum, char const *name)
+{
+ register FILE * fp;
+ register const struct lookup * lp;
+ register bool wantcont;
+ register lineno num;
+
+ if (strcmp(name, "-") == 0) {
+ fp = stdin;
+ } else if ((fp = fopen(name, "r")) == NULL) {
+ const char *e = strerror(errno);
+
+ fprintf(stderr, _("%s: Can't open %s: %s\n"),
+ progname, name, e);
+ exit(EXIT_FAILURE);
+ }
+ wantcont = false;
+ for (num = 1; ; ++num) {
+ enum { bufsize_bound
+ = (min(INT_MAX, INDEX_MAX) / FORMAT_LEN_GROWTH_BOUND) };
+ char buf[min(_POSIX2_LINE_MAX, bufsize_bound)];
+ int nfields;
+ char *fields[MAX_FIELDS];
+ eat(fnum, num);
+ if (!inputline(fp, buf, sizeof buf))
+ break;
+ nfields = getfields(buf, fields,
+ sizeof fields / sizeof *fields);
+ if (nfields == 0) {
+ /* nothing to do */
+ } else if (wantcont) {
+ wantcont = inzcont(fields, nfields);
+ } else {
+ struct lookup const *line_codes
+ = fnum < 0 ? leap_line_codes : zi_line_codes;
+ lp = byword(fields[0], line_codes);
+ if (lp == NULL)
+ error(_("input line of unknown type"));
+ else switch (lp->l_value) {
+ case LC_RULE:
+ inrule(fields, nfields);
+ wantcont = false;
+ break;
+ case LC_ZONE:
+ wantcont = inzone(fields, nfields);
+ break;
+ case LC_LINK:
+ inlink(fields, nfields);
+ wantcont = false;
+ break;
+ case LC_LEAP:
+ inleap(fields, nfields);
+ wantcont = false;
+ break;
+ case LC_EXPIRES:
+ inexpires(fields, nfields);
+ wantcont = false;
+ break;
+ default: unreachable();
+ }
+ }
+ }
+ close_file(fp, NULL, filename(fnum), NULL);
+ if (wantcont)
+ error(_("expected continuation line not found"));
+}
+
+/*
+** Convert a string of one of the forms
+** h -h hh:mm -hh:mm hh:mm:ss -hh:mm:ss
+** into a number of seconds.
+** A null string maps to zero.
+** Call error with errstring and return zero on errors.
+*/
+
+static zic_t
+gethms(char const *string, char const *errstring)
+{
+ zic_t hh;
+ int sign, mm = 0, ss = 0;
+ char hhx, mmx, ssx, xr = '0', xs;
+ int tenths = 0;
+ bool ok = true;
+
+ if (string == NULL || *string == '\0')
+ return 0;
+ if (*string == '-') {
+ sign = -1;
+ ++string;
+ } else sign = 1;
+ switch (sscanf(string,
+ "%"SCNdZIC"%c%d%c%d%c%1d%*[0]%c%*[0123456789]%c",
+ &hh, &hhx, &mm, &mmx, &ss, &ssx, &tenths, &xr, &xs)) {
+ default: ok = false; break;
+ case 8:
+ ok = '0' <= xr && xr <= '9';
+ ATTRIBUTE_FALLTHROUGH;
+ case 7:
+ ok &= ssx == '.';
+ if (ok && noise)
+ warning(_("fractional seconds rejected by"
+ " pre-2018 versions of zic"));
+ ATTRIBUTE_FALLTHROUGH;
+ case 5: ok &= mmx == ':'; ATTRIBUTE_FALLTHROUGH;
+ case 3: ok &= hhx == ':'; ATTRIBUTE_FALLTHROUGH;
+ case 1: break;
+ }
+ if (!ok) {
+ error("%s", errstring);
+ return 0;
+ }
+ if (hh < 0 ||
+ mm < 0 || mm >= MINSPERHOUR ||
+ ss < 0 || ss > SECSPERMIN) {
+ error("%s", errstring);
+ return 0;
+ }
+ if (ZIC_MAX / SECSPERHOUR < hh) {
+ error(_("time overflow"));
+ return 0;
+ }
+ ss += 5 + ((ss ^ 1) & (xr == '0')) <= tenths; /* Round to even. */
+ if (noise && (hh > HOURSPERDAY ||
+ (hh == HOURSPERDAY && (mm != 0 || ss != 0))))
+warning(_("values over 24 hours not handled by pre-2007 versions of zic"));
+ return oadd(sign * hh * SECSPERHOUR,
+ sign * (mm * SECSPERMIN + ss));
+}
+
+static zic_t
+getsave(char *field, bool *isdst)
+{
+ int dst = -1;
+ zic_t save;
+ ptrdiff_t fieldlen = strlen(field);
+ if (fieldlen != 0) {
+ char *ep = field + fieldlen - 1;
+ switch (*ep) {
+ case 'd': dst = 1; *ep = '\0'; break;
+ case 's': dst = 0; *ep = '\0'; break;
+ }
+ }
+ save = gethms(field, _("invalid saved time"));
+ *isdst = dst < 0 ? save != 0 : dst;
+ return save;
+}
+
+static void
+inrule(char **fields, int nfields)
+{
+ struct rule r;
+
+ if (nfields != RULE_FIELDS) {
+ error(_("wrong number of fields on Rule line"));
+ return;
+ }
+ switch (*fields[RF_NAME]) {
+ case '\0':
+ case ' ': case '\f': case '\n': case '\r': case '\t': case '\v':
+ case '+': case '-':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ error(_("Invalid rule name \"%s\""), fields[RF_NAME]);
+ return;
+ }
+ r.r_filenum = filenum;
+ r.r_linenum = linenum;
+ r.r_save = getsave(fields[RF_SAVE], &r.r_isdst);
+ if (!rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR],
+ fields[RF_COMMAND], fields[RF_MONTH], fields[RF_DAY],
+ fields[RF_TOD]))
+ return;
+ r.r_name = estrdup(fields[RF_NAME]);
+ r.r_abbrvar = estrdup(fields[RF_ABBRVAR]);
+ if (max_abbrvar_len < strlen(r.r_abbrvar))
+ max_abbrvar_len = strlen(r.r_abbrvar);
+ rules = growalloc(rules, sizeof *rules, nrules, &nrules_alloc);
+ rules[nrules++] = r;
+}
+
+static bool
+inzone(char **fields, int nfields)
+{
+ register ptrdiff_t i;
+
+ if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) {
+ error(_("wrong number of fields on Zone line"));
+ return false;
+ }
+ if (lcltime != NULL && strcmp(fields[ZF_NAME], tzdefault) == 0) {
+ error(
+_("\"Zone %s\" line and -l option are mutually exclusive"),
+ tzdefault);
+ return false;
+ }
+ if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) {
+ error(
+_("\"Zone %s\" line and -p option are mutually exclusive"),
+ TZDEFRULES);
+ return false;
+ }
+ for (i = 0; i < nzones; ++i)
+ if (zones[i].z_name != NULL &&
+ strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) {
+ error(_("duplicate zone name %s"
+ " (file \"%s\", line %"PRIdMAX")"),
+ fields[ZF_NAME],
+ filename(zones[i].z_filenum),
+ zones[i].z_linenum);
+ return false;
+ }
+ return inzsub(fields, nfields, false);
+}
+
+static bool
+inzcont(char **fields, int nfields)
+{
+ if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) {
+ error(_("wrong number of fields on Zone continuation line"));
+ return false;
+ }
+ return inzsub(fields, nfields, true);
+}
+
+static bool
+inzsub(char **fields, int nfields, bool iscont)
+{
+ register char * cp;
+ char * cp1;
+ struct zone z;
+ int format_len;
+ register int i_stdoff, i_rule, i_format;
+ register int i_untilyear, i_untilmonth;
+ register int i_untilday, i_untiltime;
+ register bool hasuntil;
+
+ if (iscont) {
+ i_stdoff = ZFC_STDOFF;
+ i_rule = ZFC_RULE;
+ i_format = ZFC_FORMAT;
+ i_untilyear = ZFC_TILYEAR;
+ i_untilmonth = ZFC_TILMONTH;
+ i_untilday = ZFC_TILDAY;
+ i_untiltime = ZFC_TILTIME;
+ } else if (!namecheck(fields[ZF_NAME]))
+ return false;
+ else {
+ i_stdoff = ZF_STDOFF;
+ i_rule = ZF_RULE;
+ i_format = ZF_FORMAT;
+ i_untilyear = ZF_TILYEAR;
+ i_untilmonth = ZF_TILMONTH;
+ i_untilday = ZF_TILDAY;
+ i_untiltime = ZF_TILTIME;
+ }
+ z.z_filenum = filenum;
+ z.z_linenum = linenum;
+ z.z_stdoff = gethms(fields[i_stdoff], _("invalid UT offset"));
+ if ((cp = strchr(fields[i_format], '%')) != 0) {
+ if ((*++cp != 's' && *cp != 'z') || strchr(cp, '%')
+ || strchr(fields[i_format], '/')) {
+ error(_("invalid abbreviation format"));
+ return false;
+ }
+ }
+ z.z_format_specifier = cp ? *cp : '\0';
+ format_len = strlen(fields[i_format]);
+ if (max_format_len < format_len)
+ max_format_len = format_len;
+ hasuntil = nfields > i_untilyear;
+ if (hasuntil) {
+ z.z_untilrule.r_filenum = filenum;
+ z.z_untilrule.r_linenum = linenum;
+ if (!rulesub(
+ &z.z_untilrule,
+ fields[i_untilyear],
+ "only",
+ "",
+ (nfields > i_untilmonth) ?
+ fields[i_untilmonth] : "Jan",
+ (nfields > i_untilday) ? fields[i_untilday] : "1",
+ (nfields > i_untiltime) ? fields[i_untiltime] : "0"))
+ return false;
+ z.z_untiltime = rpytime(&z.z_untilrule,
+ z.z_untilrule.r_loyear);
+ if (iscont && nzones > 0 &&
+ z.z_untiltime > min_time &&
+ z.z_untiltime < max_time &&
+ zones[nzones - 1].z_untiltime > min_time &&
+ zones[nzones - 1].z_untiltime < max_time &&
+ zones[nzones - 1].z_untiltime >= z.z_untiltime) {
+ error(_(
+"Zone continuation line end time is not after end time of previous line"
+ ));
+ return false;
+ }
+ }
+ z.z_name = iscont ? NULL : estrdup(fields[ZF_NAME]);
+ z.z_rule = estrdup(fields[i_rule]);
+ z.z_format = cp1 = estrdup(fields[i_format]);
+ if (z.z_format_specifier == 'z') {
+ cp1[cp - fields[i_format]] = 's';
+ if (noise)
+ warning(_("format '%s' not handled by pre-2015 versions of zic"),
+ fields[i_format]);
+ }
+ zones = growalloc(zones, sizeof *zones, nzones, &nzones_alloc);
+ zones[nzones++] = z;
+ /*
+ ** If there was an UNTIL field on this line,
+ ** there's more information about the zone on the next line.
+ */
+ return hasuntil;
+}
+
+static zic_t
+getleapdatetime(char **fields, bool expire_line)
+{
+ register const char * cp;
+ register const struct lookup * lp;
+ register zic_t i, j;
+ zic_t year;
+ int month, day;
+ zic_t dayoff, tod;
+ zic_t t;
+ char xs;
+
+ dayoff = 0;
+ cp = fields[LP_YEAR];
+ if (sscanf(cp, "%"SCNdZIC"%c", &year, &xs) != 1) {
+ /*
+ ** Leapin' Lizards!
+ */
+ error(_("invalid leaping year"));
+ return -1;
+ }
+ if (!expire_line) {
+ if (!leapseen || leapmaxyear < year)
+ leapmaxyear = year;
+ if (!leapseen || leapminyear > year)
+ leapminyear = year;
+ leapseen = true;
+ }
+ j = EPOCH_YEAR;
+ while (j != year) {
+ if (year > j) {
+ i = len_years[isleap(j)];
+ ++j;
+ } else {
+ --j;
+ i = -len_years[isleap(j)];
+ }
+ dayoff = oadd(dayoff, i);
+ }
+ if ((lp = byword(fields[LP_MONTH], mon_names)) == NULL) {
+ error(_("invalid month name"));
+ return -1;
+ }
+ month = lp->l_value;
+ j = TM_JANUARY;
+ while (j != month) {
+ i = len_months[isleap(year)][j];
+ dayoff = oadd(dayoff, i);
+ ++j;
+ }
+ cp = fields[LP_DAY];
+ if (sscanf(cp, "%d%c", &day, &xs) != 1 ||
+ day <= 0 || day > len_months[isleap(year)][month]) {
+ error(_("invalid day of month"));
+ return -1;
+ }
+ dayoff = oadd(dayoff, day - 1);
+ if (dayoff < min_time / SECSPERDAY) {
+ error(_("time too small"));
+ return -1;
+ }
+ if (dayoff > max_time / SECSPERDAY) {
+ error(_("time too large"));
+ return -1;
+ }
+ t = dayoff * SECSPERDAY;
+ tod = gethms(fields[LP_TIME], _("invalid time of day"));
+ t = tadd(t, tod);
+ if (t < 0)
+ error(_("leap second precedes Epoch"));
+ return t;
+}
+
+static void
+inleap(char **fields, int nfields)
+{
+ if (nfields != LEAP_FIELDS)
+ error(_("wrong number of fields on Leap line"));
+ else {
+ zic_t t = getleapdatetime(fields, false);
+ if (0 <= t) {
+ struct lookup const *lp = byword(fields[LP_ROLL], leap_types);
+ if (!lp)
+ error(_("invalid Rolling/Stationary field on Leap line"));
+ else {
+ int correction = 0;
+ if (!fields[LP_CORR][0]) /* infile() turns "-" into "". */
+ correction = -1;
+ else if (strcmp(fields[LP_CORR], "+") == 0)
+ correction = 1;
+ else
+ error(_("invalid CORRECTION field on Leap line"));
+ if (correction)
+ leapadd(t, correction, lp->l_value);
+ }
+ }
+ }
+}
+
+static void
+inexpires(char **fields, int nfields)
+{
+ if (nfields != EXPIRES_FIELDS)
+ error(_("wrong number of fields on Expires line"));
+ else if (0 <= leapexpires)
+ error(_("multiple Expires lines"));
+ else
+ leapexpires = getleapdatetime(fields, true);
+}
+
+static void
+inlink(char **fields, int nfields)
+{
+ struct link l;
+
+ if (nfields != LINK_FIELDS) {
+ error(_("wrong number of fields on Link line"));
+ return;
+ }
+ if (*fields[LF_TARGET] == '\0') {
+ error(_("blank TARGET field on Link line"));
+ return;
+ }
+ if (! namecheck(fields[LF_LINKNAME]))
+ return;
+ l.l_filenum = filenum;
+ l.l_linenum = linenum;
+ l.l_target = estrdup(fields[LF_TARGET]);
+ l.l_linkname = estrdup(fields[LF_LINKNAME]);
+ links = growalloc(links, sizeof *links, nlinks, &nlinks_alloc);
+ links[nlinks++] = l;
+}
+
+static bool
+rulesub(struct rule *rp, const char *loyearp, const char *hiyearp,
+ const char *typep, const char *monthp, const char *dayp,
+ const char *timep)
+{
+ register const struct lookup * lp;
+ register const char * cp;
+ register char * dp;
+ register char * ep;
+ char xs;
+
+ if ((lp = byword(monthp, mon_names)) == NULL) {
+ error(_("invalid month name"));
+ return false;
+ }
+ rp->r_month = lp->l_value;
+ rp->r_todisstd = false;
+ rp->r_todisut = false;
+ dp = estrdup(timep);
+ if (*dp != '\0') {
+ ep = dp + strlen(dp) - 1;
+ switch (lowerit(*ep)) {
+ case 's': /* Standard */
+ rp->r_todisstd = true;
+ rp->r_todisut = false;
+ *ep = '\0';
+ break;
+ case 'w': /* Wall */
+ rp->r_todisstd = false;
+ rp->r_todisut = false;
+ *ep = '\0';
+ break;
+ case 'g': /* Greenwich */
+ case 'u': /* Universal */
+ case 'z': /* Zulu */
+ rp->r_todisstd = true;
+ rp->r_todisut = true;
+ *ep = '\0';
+ break;
+ }
+ }
+ rp->r_tod = gethms(dp, _("invalid time of day"));
+ free(dp);
+ /*
+ ** Year work.
+ */
+ cp = loyearp;
+ lp = byword(cp, begin_years);
+ rp->r_lowasnum = lp == NULL;
+ if (!rp->r_lowasnum) switch (lp->l_value) {
+ case YR_MINIMUM:
+ rp->r_loyear = ZIC_MIN;
+ break;
+ case YR_MAXIMUM:
+ rp->r_loyear = ZIC_MAX;
+ break;
+ default: unreachable();
+ } else if (sscanf(cp, "%"SCNdZIC"%c", &rp->r_loyear, &xs) != 1) {
+ error(_("invalid starting year"));
+ return false;
+ }
+ cp = hiyearp;
+ lp = byword(cp, end_years);
+ rp->r_hiwasnum = lp == NULL;
+ if (!rp->r_hiwasnum) switch (lp->l_value) {
+ case YR_MINIMUM:
+ rp->r_hiyear = ZIC_MIN;
+ break;
+ case YR_MAXIMUM:
+ rp->r_hiyear = ZIC_MAX;
+ break;
+ case YR_ONLY:
+ rp->r_hiyear = rp->r_loyear;
+ break;
+ default: unreachable();
+ } else if (sscanf(cp, "%"SCNdZIC"%c", &rp->r_hiyear, &xs) != 1) {
+ error(_("invalid ending year"));
+ return false;
+ }
+ if (rp->r_loyear > rp->r_hiyear) {
+ error(_("starting year greater than ending year"));
+ return false;
+ }
+ if (*typep != '\0') {
+ error(_("year type \"%s\" is unsupported; use \"-\" instead"),
+ typep);
+ return false;
+ }
+ /*
+ ** Day work.
+ ** Accept things such as:
+ ** 1
+ ** lastSunday
+ ** last-Sunday (undocumented; warn about this)
+ ** Sun<=20
+ ** Sun>=7
+ */
+ dp = estrdup(dayp);
+ if ((lp = byword(dp, lasts)) != NULL) {
+ rp->r_dycode = DC_DOWLEQ;
+ rp->r_wday = lp->l_value;
+ rp->r_dayofmonth = len_months[1][rp->r_month];
+ } else {
+ if ((ep = strchr(dp, '<')) != 0)
+ rp->r_dycode = DC_DOWLEQ;
+ else if ((ep = strchr(dp, '>')) != 0)
+ rp->r_dycode = DC_DOWGEQ;
+ else {
+ ep = dp;
+ rp->r_dycode = DC_DOM;
+ }
+ if (rp->r_dycode != DC_DOM) {
+ *ep++ = 0;
+ if (*ep++ != '=') {
+ error(_("invalid day of month"));
+ free(dp);
+ return false;
+ }
+ if ((lp = byword(dp, wday_names)) == NULL) {
+ error(_("invalid weekday name"));
+ free(dp);
+ return false;
+ }
+ rp->r_wday = lp->l_value;
+ }
+ if (sscanf(ep, "%d%c", &rp->r_dayofmonth, &xs) != 1 ||
+ rp->r_dayofmonth <= 0 ||
+ (rp->r_dayofmonth > len_months[1][rp->r_month])) {
+ error(_("invalid day of month"));
+ free(dp);
+ return false;
+ }
+ }
+ free(dp);
+ return true;
+}
+
+static void
+convert(uint_fast32_t val, char *buf)
+{
+ register int i;
+ register int shift;
+ unsigned char *const b = (unsigned char *) buf;
+
+ for (i = 0, shift = 24; i < 4; ++i, shift -= 8)
+ b[i] = (val >> shift) & 0xff;
+}
+
+static void
+convert64(uint_fast64_t val, char *buf)
+{
+ register int i;
+ register int shift;
+ unsigned char *const b = (unsigned char *) buf;
+
+ for (i = 0, shift = 56; i < 8; ++i, shift -= 8)
+ b[i] = (val >> shift) & 0xff;
+}
+
+static void
+puttzcode(zic_t val, FILE *fp)
+{
+ char buf[4];
+
+ convert(val, buf);
+ fwrite(buf, sizeof buf, 1, fp);
+}
+
+static void
+puttzcodepass(zic_t val, FILE *fp, int pass)
+{
+ if (pass == 1)
+ puttzcode(val, fp);
+ else {
+ char buf[8];
+
+ convert64(val, buf);
+ fwrite(buf, sizeof buf, 1, fp);
+ }
+}
+
+static int
+atcomp(const void *avp, const void *bvp)
+{
+ struct attype const *ap = avp, *bp = bvp;
+ zic_t a = ap->at, b = bp->at;
+ return a < b ? -1 : a > b;
+}
+
+struct timerange {
+ int defaulttype;
+ ptrdiff_t base, count;
+ int leapbase, leapcount;
+ bool leapexpiry;
+};
+
+static struct timerange
+limitrange(struct timerange r, zic_t lo, zic_t hi,
+ zic_t const *ats, unsigned char const *types)
+{
+ /* Omit ordinary transitions < LO. */
+ while (0 < r.count && ats[r.base] < lo) {
+ r.defaulttype = types[r.base];
+ r.count--;
+ r.base++;
+ }
+
+ /* Omit as many initial leap seconds as possible, such that the
+ first leap second in the truncated list is <= LO, and is a
+ positive leap second if and only if it has a positive correction.
+ This supports common TZif readers that assume that the first leap
+ second is positive if and only if its correction is positive. */
+ while (1 < r.leapcount && trans[r.leapbase + 1] <= lo) {
+ r.leapcount--;
+ r.leapbase++;
+ }
+ while (0 < r.leapbase
+ && ((corr[r.leapbase - 1] < corr[r.leapbase])
+ != (0 < corr[r.leapbase]))) {
+ r.leapcount++;
+ r.leapbase--;
+ }
+
+
+ /* Omit ordinary and leap second transitions greater than HI + 1. */
+ if (hi < max_time) {
+ while (0 < r.count && hi + 1 < ats[r.base + r.count - 1])
+ r.count--;
+ while (0 < r.leapcount && hi + 1 < trans[r.leapbase + r.leapcount - 1])
+ r.leapcount--;
+ }
+
+ /* Determine whether to append an expiration to the leap second table. */
+ r.leapexpiry = 0 <= leapexpires && leapexpires - 1 <= hi;
+
+ return r;
+}
+
+static void
+writezone(const char *const name, const char *const string, char version,
+ int defaulttype)
+{
+ register FILE * fp;
+ register ptrdiff_t i, j;
+ register int pass;
+ char *tempname = NULL;
+ char const *outname = name;
+
+ /* Allocate the ATS and TYPES arrays via a single malloc,
+ as this is a bit faster. Do not malloc(0) if !timecnt,
+ as that might return NULL even on success. */
+ zic_t *ats = emalloc(align_to(size_product(timecnt + !timecnt,
+ sizeof *ats + 1),
+ alignof(zic_t)));
+ void *typesptr = ats + timecnt;
+ unsigned char *types = typesptr;
+ struct timerange rangeall = {0}, range32, range64;
+
+ /*
+ ** Sort.
+ */
+ if (timecnt > 1)
+ qsort(attypes, timecnt, sizeof *attypes, atcomp);
+ /*
+ ** Optimize.
+ */
+ {
+ ptrdiff_t fromi, toi;
+
+ toi = 0;
+ fromi = 0;
+ for ( ; fromi < timecnt; ++fromi) {
+ if (toi != 0
+ && ((attypes[fromi].at
+ + utoffs[attypes[toi - 1].type])
+ <= (attypes[toi - 1].at
+ + utoffs[toi == 1 ? 0
+ : attypes[toi - 2].type]))) {
+ attypes[toi - 1].type =
+ attypes[fromi].type;
+ continue;
+ }
+ if (toi == 0
+ || attypes[fromi].dontmerge
+ || (utoffs[attypes[toi - 1].type]
+ != utoffs[attypes[fromi].type])
+ || (isdsts[attypes[toi - 1].type]
+ != isdsts[attypes[fromi].type])
+ || (desigidx[attypes[toi - 1].type]
+ != desigidx[attypes[fromi].type]))
+ attypes[toi++] = attypes[fromi];
+ }
+ timecnt = toi;
+ }
+
+ if (noise && timecnt > 1200) {
+ if (timecnt > TZ_MAX_TIMES)
+ warning(_("reference clients mishandle"
+ " more than %d transition times"),
+ TZ_MAX_TIMES);
+ else
+ warning(_("pre-2014 clients may mishandle"
+ " more than 1200 transition times"));
+ }
+ /*
+ ** Transfer.
+ */
+ for (i = 0; i < timecnt; ++i) {
+ ats[i] = attypes[i].at;
+ types[i] = attypes[i].type;
+ }
+
+ /*
+ ** Correct for leap seconds.
+ */
+ for (i = 0; i < timecnt; ++i) {
+ j = leapcnt;
+ while (--j >= 0)
+ if (ats[i] > trans[j] - corr[j]) {
+ ats[i] = tadd(ats[i], corr[j]);
+ break;
+ }
+ }
+
+ rangeall.defaulttype = defaulttype;
+ rangeall.count = timecnt;
+ rangeall.leapcount = leapcnt;
+ range64 = limitrange(rangeall, lo_time,
+ max(hi_time,
+ redundant_time - (ZIC_MIN < redundant_time)),
+ ats, types);
+ range32 = limitrange(range64, ZIC32_MIN, ZIC32_MAX, ats, types);
+
+ /* TZif version 4 is needed if a no-op transition is appended to
+ indicate the expiration of the leap second table, or if the first
+ leap second transition is not to a +1 or -1 correction. */
+ for (pass = 1; pass <= 2; pass++) {
+ struct timerange const *r = pass == 1 ? &range32 : &range64;
+ if (pass == 1 && !want_bloat())
+ continue;
+ if (r->leapexpiry) {
+ if (noise)
+ warning(_("%s: pre-2021b clients may mishandle"
+ " leap second expiry"),
+ name);
+ version = '4';
+ }
+ if (0 < r->leapcount
+ && corr[r->leapbase] != 1 && corr[r->leapbase] != -1) {
+ if (noise)
+ warning(_("%s: pre-2021b clients may mishandle"
+ " leap second table truncation"),
+ name);
+ version = '4';
+ }
+ if (version == '4')
+ break;
+ }
+
+ fp = open_outfile(&outname, &tempname);
+
+ for (pass = 1; pass <= 2; ++pass) {
+ register ptrdiff_t thistimei, thistimecnt, thistimelim;
+ register int thisleapi, thisleapcnt, thisleaplim;
+ struct tzhead tzh;
+ int pretranstype = -1, thisdefaulttype;
+ bool locut, hicut, thisleapexpiry;
+ zic_t lo, thismin, thismax;
+ int old0;
+ char omittype[TZ_MAX_TYPES];
+ int typemap[TZ_MAX_TYPES];
+ int thistypecnt, stdcnt, utcnt;
+ char thischars[TZ_MAX_CHARS];
+ int thischarcnt;
+ bool toomanytimes;
+ int indmap[TZ_MAX_CHARS];
+
+ if (pass == 1) {
+ thisdefaulttype = range32.defaulttype;
+ thistimei = range32.base;
+ thistimecnt = range32.count;
+ toomanytimes = thistimecnt >> 31 >> 1 != 0;
+ thisleapi = range32.leapbase;
+ thisleapcnt = range32.leapcount;
+ thisleapexpiry = range32.leapexpiry;
+ thismin = ZIC32_MIN;
+ thismax = ZIC32_MAX;
+ } else {
+ thisdefaulttype = range64.defaulttype;
+ thistimei = range64.base;
+ thistimecnt = range64.count;
+ toomanytimes = thistimecnt >> 31 >> 31 >> 2 != 0;
+ thisleapi = range64.leapbase;
+ thisleapcnt = range64.leapcount;
+ thisleapexpiry = range64.leapexpiry;
+ thismin = min_time;
+ thismax = max_time;
+ }
+ if (toomanytimes)
+ error(_("too many transition times"));
+
+ locut = thismin < lo_time && lo_time <= thismax;
+ hicut = thismin <= hi_time && hi_time < thismax;
+ thistimelim = thistimei + thistimecnt;
+ memset(omittype, true, typecnt);
+
+ /* Determine whether to output a transition before the first
+ transition in range. This is needed when the output is
+ truncated at the start, and is also useful when catering to
+ buggy 32-bit clients that do not use time type 0 for
+ timestamps before the first transition. */
+ if ((locut || (pass == 1 && thistimei))
+ && ! (thistimecnt && ats[thistimei] == lo_time)) {
+ pretranstype = thisdefaulttype;
+ omittype[pretranstype] = false;
+ }
+
+ /* Arguably the default time type in the 32-bit data
+ should be range32.defaulttype, which is suited for
+ timestamps just before ZIC32_MIN. However, zic
+ traditionally used the time type of the indefinite
+ past instead. Internet RFC 8532 says readers should
+ ignore 32-bit data, so this discrepancy matters only
+ to obsolete readers where the traditional type might
+ be more appropriate even if it's "wrong". So, use
+ the historical zic value, unless -r specifies a low
+ cutoff that excludes some 32-bit timestamps. */
+ if (pass == 1 && lo_time <= thismin)
+ thisdefaulttype = range64.defaulttype;
+
+ if (locut)
+ thisdefaulttype = unspecifiedtype;
+ omittype[thisdefaulttype] = false;
+ for (i = thistimei; i < thistimelim; i++)
+ omittype[types[i]] = false;
+ if (hicut)
+ omittype[unspecifiedtype] = false;
+
+ /* Reorder types to make THISDEFAULTTYPE type 0.
+ Use TYPEMAP to swap OLD0 and THISDEFAULTTYPE so that
+ THISDEFAULTTYPE appears as type 0 in the output instead
+ of OLD0. TYPEMAP also omits unused types. */
+ old0 = strlen(omittype);
+
+#ifndef LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH
+ /*
+ ** For some pre-2011 systems: if the last-to-be-written
+ ** standard (or daylight) type has an offset different from the
+ ** most recently used offset,
+ ** append an (unused) copy of the most recently used type
+ ** (to help get global "altzone" and "timezone" variables
+ ** set correctly).
+ */
+ if (want_bloat()) {
+ register int mrudst, mrustd, hidst, histd, type;
+
+ hidst = histd = mrudst = mrustd = -1;
+ if (0 <= pretranstype) {
+ if (isdsts[pretranstype])
+ mrudst = pretranstype;
+ else
+ mrustd = pretranstype;
+ }
+ for (i = thistimei; i < thistimelim; i++)
+ if (isdsts[types[i]])
+ mrudst = types[i];
+ else mrustd = types[i];
+ for (i = old0; i < typecnt; i++) {
+ int h = (i == old0 ? thisdefaulttype
+ : i == thisdefaulttype ? old0 : i);
+ if (!omittype[h]) {
+ if (isdsts[h])
+ hidst = i;
+ else
+ histd = i;
+ }
+ }
+ if (hidst >= 0 && mrudst >= 0 && hidst != mrudst &&
+ utoffs[hidst] != utoffs[mrudst]) {
+ isdsts[mrudst] = -1;
+ type = addtype(utoffs[mrudst],
+ &chars[desigidx[mrudst]],
+ true,
+ ttisstds[mrudst],
+ ttisuts[mrudst]);
+ isdsts[mrudst] = 1;
+ omittype[type] = false;
+ }
+ if (histd >= 0 && mrustd >= 0 && histd != mrustd &&
+ utoffs[histd] != utoffs[mrustd]) {
+ isdsts[mrustd] = -1;
+ type = addtype(utoffs[mrustd],
+ &chars[desigidx[mrustd]],
+ false,
+ ttisstds[mrustd],
+ ttisuts[mrustd]);
+ isdsts[mrustd] = 0;
+ omittype[type] = false;
+ }
+ }
+#endif /* !defined LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */
+ thistypecnt = 0;
+ for (i = old0; i < typecnt; i++)
+ if (!omittype[i])
+ typemap[i == old0 ? thisdefaulttype
+ : i == thisdefaulttype ? old0 : i]
+ = thistypecnt++;
+
+ for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i)
+ indmap[i] = -1;
+ thischarcnt = stdcnt = utcnt = 0;
+ for (i = old0; i < typecnt; i++) {
+ register char * thisabbr;
+
+ if (omittype[i])
+ continue;
+ if (ttisstds[i])
+ stdcnt = thistypecnt;
+ if (ttisuts[i])
+ utcnt = thistypecnt;
+ if (indmap[desigidx[i]] >= 0)
+ continue;
+ thisabbr = &chars[desigidx[i]];
+ for (j = 0; j < thischarcnt; ++j)
+ if (strcmp(&thischars[j], thisabbr) == 0)
+ break;
+ if (j == thischarcnt) {
+ strcpy(&thischars[thischarcnt], thisabbr);
+ thischarcnt += strlen(thisabbr) + 1;
+ }
+ indmap[desigidx[i]] = j;
+ }
+ if (pass == 1 && !want_bloat()) {
+ hicut = thisleapexpiry = false;
+ pretranstype = -1;
+ thistimecnt = thisleapcnt = 0;
+ thistypecnt = thischarcnt = 1;
+ }
+#define DO(field) fwrite(tzh.field, sizeof tzh.field, 1, fp)
+ memset(&tzh, 0, sizeof tzh);
+ memcpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
+ tzh.tzh_version[0] = version;
+ convert(utcnt, tzh.tzh_ttisutcnt);
+ convert(stdcnt, tzh.tzh_ttisstdcnt);
+ convert(thisleapcnt + thisleapexpiry, tzh.tzh_leapcnt);
+ convert((0 <= pretranstype) + thistimecnt + hicut,
+ tzh.tzh_timecnt);
+ convert(thistypecnt, tzh.tzh_typecnt);
+ convert(thischarcnt, tzh.tzh_charcnt);
+ DO(tzh_magic);
+ DO(tzh_version);
+ DO(tzh_reserved);
+ DO(tzh_ttisutcnt);
+ DO(tzh_ttisstdcnt);
+ DO(tzh_leapcnt);
+ DO(tzh_timecnt);
+ DO(tzh_typecnt);
+ DO(tzh_charcnt);
+#undef DO
+ if (pass == 1 && !want_bloat()) {
+ /* Output a minimal data block with just one time type. */
+ puttzcode(0, fp); /* utoff */
+ putc(0, fp); /* dst */
+ putc(0, fp); /* index of abbreviation */
+ putc(0, fp); /* empty-string abbreviation */
+ continue;
+ }
+
+ /* Output a LO_TIME transition if needed; see limitrange.
+ But do not go below the minimum representable value
+ for this pass. */
+ lo = pass == 1 && lo_time < ZIC32_MIN ? ZIC32_MIN : lo_time;
+
+ if (0 <= pretranstype)
+ puttzcodepass(lo, fp, pass);
+ for (i = thistimei; i < thistimelim; ++i) {
+ puttzcodepass(ats[i], fp, pass);
+ }
+ if (hicut)
+ puttzcodepass(hi_time + 1, fp, pass);
+ if (0 <= pretranstype)
+ putc(typemap[pretranstype], fp);
+ for (i = thistimei; i < thistimelim; i++)
+ putc(typemap[types[i]], fp);
+ if (hicut)
+ putc(typemap[unspecifiedtype], fp);
+
+ for (i = old0; i < typecnt; i++) {
+ int h = (i == old0 ? thisdefaulttype
+ : i == thisdefaulttype ? old0 : i);
+ if (!omittype[h]) {
+ puttzcode(utoffs[h], fp);
+ putc(isdsts[h], fp);
+ putc(indmap[desigidx[h]], fp);
+ }
+ }
+ if (thischarcnt != 0)
+ fwrite(thischars, sizeof thischars[0],
+ thischarcnt, fp);
+ thisleaplim = thisleapi + thisleapcnt;
+ for (i = thisleapi; i < thisleaplim; ++i) {
+ register zic_t todo;
+
+ if (roll[i]) {
+ if (timecnt == 0 || trans[i] < ats[0]) {
+ j = 0;
+ while (isdsts[j])
+ if (++j >= typecnt) {
+ j = 0;
+ break;
+ }
+ } else {
+ j = 1;
+ while (j < timecnt &&
+ trans[i] >= ats[j])
+ ++j;
+ j = types[j - 1];
+ }
+ todo = tadd(trans[i], -utoffs[j]);
+ } else todo = trans[i];
+ puttzcodepass(todo, fp, pass);
+ puttzcode(corr[i], fp);
+ }
+ if (thisleapexpiry) {
+ /* Append a no-op leap correction indicating when the leap
+ second table expires. Although this does not conform to
+ Internet RFC 8536, most clients seem to accept this and
+ the plan is to amend the RFC to allow this in version 4
+ TZif files. */
+ puttzcodepass(leapexpires, fp, pass);
+ puttzcode(thisleaplim ? corr[thisleaplim - 1] : 0, fp);
+ }
+ if (stdcnt != 0)
+ for (i = old0; i < typecnt; i++)
+ if (!omittype[i])
+ putc(ttisstds[i], fp);
+ if (utcnt != 0)
+ for (i = old0; i < typecnt; i++)
+ if (!omittype[i])
+ putc(ttisuts[i], fp);
+ }
+ fprintf(fp, "\n%s\n", string);
+ close_file(fp, directory, name, tempname);
+ rename_dest(tempname, name);
+ free(ats);
+}
+
+static char const *
+abbroffset(char *buf, zic_t offset)
+{
+ char sign = '+';
+ int seconds, minutes;
+
+ if (offset < 0) {
+ offset = -offset;
+ sign = '-';
+ }
+
+ seconds = offset % SECSPERMIN;
+ offset /= SECSPERMIN;
+ minutes = offset % MINSPERHOUR;
+ offset /= MINSPERHOUR;
+ if (100 <= offset) {
+ error(_("%%z UT offset magnitude exceeds 99:59:59"));
+ return "%z";
+ } else {
+ char *p = buf;
+ *p++ = sign;
+ *p++ = '0' + offset / 10;
+ *p++ = '0' + offset % 10;
+ if (minutes | seconds) {
+ *p++ = '0' + minutes / 10;
+ *p++ = '0' + minutes % 10;
+ if (seconds) {
+ *p++ = '0' + seconds / 10;
+ *p++ = '0' + seconds % 10;
+ }
+ }
+ *p = '\0';
+ return buf;
+ }
+}
+
+static char const disable_percent_s[] = "";
+
+static ptrdiff_t
+doabbr(char *abbr, struct zone const *zp, char const *letters,
+ bool isdst, zic_t save, bool doquotes)
+{
+ register char * cp;
+ register char * slashp;
+ ptrdiff_t len;
+ char const *format = zp->z_format;
+
+ slashp = strchr(format, '/');
+ if (slashp == NULL) {
+ char letterbuf[PERCENT_Z_LEN_BOUND + 1];
+ if (zp->z_format_specifier == 'z')
+ letters = abbroffset(letterbuf, zp->z_stdoff + save);
+ else if (!letters)
+ letters = "%s";
+ else if (letters == disable_percent_s)
+ return 0;
+ sprintf(abbr, format, letters);
+ } else if (isdst) {
+ strcpy(abbr, slashp + 1);
+ } else {
+ memcpy(abbr, format, slashp - format);
+ abbr[slashp - format] = '\0';
+ }
+ len = strlen(abbr);
+ if (!doquotes)
+ return len;
+ for (cp = abbr; is_alpha(*cp); cp++)
+ continue;
+ if (len > 0 && *cp == '\0')
+ return len;
+ abbr[len + 2] = '\0';
+ abbr[len + 1] = '>';
+ memmove(abbr + 1, abbr, len);
+ abbr[0] = '<';
+ return len + 2;
+}
+
+static void
+updateminmax(const zic_t x)
+{
+ if (min_year > x)
+ min_year = x;
+ if (max_year < x)
+ max_year = x;
+}
+
+static int
+stringoffset(char *result, zic_t offset)
+{
+ register int hours;
+ register int minutes;
+ register int seconds;
+ bool negative = offset < 0;
+ int len = negative;
+
+ if (negative) {
+ offset = -offset;
+ result[0] = '-';
+ }
+ seconds = offset % SECSPERMIN;
+ offset /= SECSPERMIN;
+ minutes = offset % MINSPERHOUR;
+ offset /= MINSPERHOUR;
+ hours = offset;
+ if (hours >= HOURSPERDAY * DAYSPERWEEK) {
+ result[0] = '\0';
+ return 0;
+ }
+ len += sprintf(result + len, "%d", hours);
+ if (minutes != 0 || seconds != 0) {
+ len += sprintf(result + len, ":%02d", minutes);
+ if (seconds != 0)
+ len += sprintf(result + len, ":%02d", seconds);
+ }
+ return len;
+}
+
+static int
+stringrule(char *result, struct rule *const rp, zic_t save, zic_t stdoff)
+{
+ register zic_t tod = rp->r_tod;
+ register int compat = 0;
+
+ if (rp->r_dycode == DC_DOM) {
+ register int month, total;
+
+ if (rp->r_dayofmonth == 29 && rp->r_month == TM_FEBRUARY)
+ return -1;
+ total = 0;
+ for (month = 0; month < rp->r_month; ++month)
+ total += len_months[0][month];
+ /* Omit the "J" in Jan and Feb, as that's shorter. */
+ if (rp->r_month <= 1)
+ result += sprintf(result, "%d", total + rp->r_dayofmonth - 1);
+ else
+ result += sprintf(result, "J%d", total + rp->r_dayofmonth);
+ } else {
+ register int week;
+ register int wday = rp->r_wday;
+ register int wdayoff;
+
+ if (rp->r_dycode == DC_DOWGEQ) {
+ wdayoff = (rp->r_dayofmonth - 1) % DAYSPERWEEK;
+ if (wdayoff)
+ compat = 2013;
+ wday -= wdayoff;
+ tod += wdayoff * SECSPERDAY;
+ week = 1 + (rp->r_dayofmonth - 1) / DAYSPERWEEK;
+ } else if (rp->r_dycode == DC_DOWLEQ) {
+ if (rp->r_dayofmonth == len_months[1][rp->r_month])
+ week = 5;
+ else {
+ wdayoff = rp->r_dayofmonth % DAYSPERWEEK;
+ if (wdayoff)
+ compat = 2013;
+ wday -= wdayoff;
+ tod += wdayoff * SECSPERDAY;
+ week = rp->r_dayofmonth / DAYSPERWEEK;
+ }
+ } else return -1; /* "cannot happen" */
+ if (wday < 0)
+ wday += DAYSPERWEEK;
+ result += sprintf(result, "M%d.%d.%d",
+ rp->r_month + 1, week, wday);
+ }
+ if (rp->r_todisut)
+ tod += stdoff;
+ if (rp->r_todisstd && !rp->r_isdst)
+ tod += save;
+ if (tod != 2 * SECSPERMIN * MINSPERHOUR) {
+ *result++ = '/';
+ if (! stringoffset(result, tod))
+ return -1;
+ if (tod < 0) {
+ if (compat < 2013)
+ compat = 2013;
+ } else if (SECSPERDAY <= tod) {
+ if (compat < 1994)
+ compat = 1994;
+ }
+ }
+ return compat;
+}
+
+static int
+rule_cmp(struct rule const *a, struct rule const *b)
+{
+ if (!a)
+ return -!!b;
+ if (!b)
+ return 1;
+ if (a->r_hiyear != b->r_hiyear)
+ return a->r_hiyear < b->r_hiyear ? -1 : 1;
+ if (a->r_hiyear == ZIC_MAX)
+ return 0;
+ if (a->r_month - b->r_month != 0)
+ return a->r_month - b->r_month;
+ return a->r_dayofmonth - b->r_dayofmonth;
+}
+
+static int
+stringzone(char *result, struct zone const *zpfirst, ptrdiff_t zonecount)
+{
+ register const struct zone * zp;
+ register struct rule * rp;
+ register struct rule * stdrp;
+ register struct rule * dstrp;
+ register ptrdiff_t i;
+ register int compat = 0;
+ register int c;
+ int offsetlen;
+ struct rule stdr, dstr;
+ ptrdiff_t len;
+ int dstcmp;
+ struct rule *lastrp[2] = { NULL, NULL };
+ struct zone zstr[2];
+ struct zone const *stdzp;
+ struct zone const *dstzp;
+
+ result[0] = '\0';
+
+ /* Internet RFC 8536 section 5.1 says to use an empty TZ string if
+ future timestamps are truncated. */
+ if (hi_time < max_time)
+ return -1;
+
+ zp = zpfirst + zonecount - 1;
+ for (i = 0; i < zp->z_nrules; ++i) {
+ struct rule **last;
+ int cmp;
+ rp = &zp->z_rules[i];
+ last = &lastrp[rp->r_isdst];
+ cmp = rule_cmp(*last, rp);
+ if (cmp < 0)
+ *last = rp;
+ else if (cmp == 0)
+ return -1;
+ }
+ stdrp = lastrp[false];
+ dstrp = lastrp[true];
+ dstcmp = zp->z_nrules ? rule_cmp(dstrp, stdrp) : zp->z_isdst ? 1 : -1;
+ stdzp = dstzp = zp;
+
+ if (dstcmp < 0) {
+ /* Standard time all year. */
+ dstrp = NULL;
+ } else if (0 < dstcmp) {
+ /* DST all year. Use an abbreviation like
+ "XXX3EDT4,0/0,J365/23" for EDT (-04) all year. */
+ zic_t save = dstrp ? dstrp->r_save : zp->z_save;
+ if (0 <= save)
+ {
+ /* Positive DST, the typical case for all-year DST.
+ Fake a timezone with negative DST. */
+ stdzp = &zstr[0];
+ dstzp = &zstr[1];
+ zstr[0].z_stdoff = zp->z_stdoff + 2 * save;
+ zstr[0].z_format = "XXX"; /* Any 3 letters will do. */
+ zstr[0].z_format_specifier = 0;
+ zstr[1].z_stdoff = zstr[0].z_stdoff;
+ zstr[1].z_format = zp->z_format;
+ zstr[1].z_format_specifier = zp->z_format_specifier;
+ }
+ dstr.r_month = TM_JANUARY;
+ dstr.r_dycode = DC_DOM;
+ dstr.r_dayofmonth = 1;
+ dstr.r_tod = 0;
+ dstr.r_todisstd = dstr.r_todisut = false;
+ dstr.r_isdst = true;
+ dstr.r_save = save < 0 ? save : -save;
+ dstr.r_abbrvar = dstrp ? dstrp->r_abbrvar : NULL;
+ stdr.r_month = TM_DECEMBER;
+ stdr.r_dycode = DC_DOM;
+ stdr.r_dayofmonth = 31;
+ stdr.r_tod = SECSPERDAY + dstr.r_save;
+ stdr.r_todisstd = stdr.r_todisut = false;
+ stdr.r_isdst = false;
+ stdr.r_save = 0;
+ stdr.r_abbrvar = save < 0 && stdrp ? stdrp->r_abbrvar : NULL;
+ dstrp = &dstr;
+ stdrp = &stdr;
+ }
+ len = doabbr(result, stdzp, stdrp ? stdrp->r_abbrvar : NULL,
+ false, 0, true);
+ offsetlen = stringoffset(result + len, - stdzp->z_stdoff);
+ if (! offsetlen) {
+ result[0] = '\0';
+ return -1;
+ }
+ len += offsetlen;
+ if (dstrp == NULL)
+ return compat;
+ len += doabbr(result + len, dstzp, dstrp->r_abbrvar,
+ dstrp->r_isdst, dstrp->r_save, true);
+ if (dstrp->r_save != SECSPERMIN * MINSPERHOUR) {
+ offsetlen = stringoffset(result + len,
+ - (dstzp->z_stdoff + dstrp->r_save));
+ if (! offsetlen) {
+ result[0] = '\0';
+ return -1;
+ }
+ len += offsetlen;
+ }
+ result[len++] = ',';
+ c = stringrule(result + len, dstrp, dstrp->r_save, stdzp->z_stdoff);
+ if (c < 0) {
+ result[0] = '\0';
+ return -1;
+ }
+ if (compat < c)
+ compat = c;
+ len += strlen(result + len);
+ result[len++] = ',';
+ c = stringrule(result + len, stdrp, dstrp->r_save, stdzp->z_stdoff);
+ if (c < 0) {
+ result[0] = '\0';
+ return -1;
+ }
+ if (compat < c)
+ compat = c;
+ return compat;
+}
+
+static void
+outzone(const struct zone *zpfirst, ptrdiff_t zonecount)
+{
+ register ptrdiff_t i, j;
+ register zic_t starttime = 0, untiltime = 0;
+ register bool startttisstd;
+ register bool startttisut;
+ register char * startbuf;
+ register char * ab;
+ register char * envvar;
+ register int max_abbr_len;
+ register int max_envvar_len;
+ register bool prodstic; /* all rules are min to max */
+ register int compat;
+ register bool do_extend;
+ register char version;
+ ptrdiff_t lastatmax = -1;
+ zic_t max_year0;
+ int defaulttype = -1;
+
+ check_for_signal();
+
+ /* This cannot overflow; see FORMAT_LEN_GROWTH_BOUND. */
+ max_abbr_len = 2 + max_format_len + max_abbrvar_len;
+ max_envvar_len = 2 * max_abbr_len + 5 * 9;
+
+ startbuf = emalloc(max_abbr_len + 1);
+ ab = emalloc(max_abbr_len + 1);
+ envvar = emalloc(max_envvar_len + 1);
+ INITIALIZE(untiltime);
+ INITIALIZE(starttime);
+ /*
+ ** Now. . .finally. . .generate some useful data!
+ */
+ timecnt = 0;
+ typecnt = 0;
+ charcnt = 0;
+ prodstic = zonecount == 1;
+ /*
+ ** Thanks to Earl Chew
+ ** for noting the need to unconditionally initialize startttisstd.
+ */
+ startttisstd = false;
+ startttisut = false;
+ min_year = max_year = EPOCH_YEAR;
+ if (leapseen) {
+ updateminmax(leapminyear);
+ updateminmax(leapmaxyear + (leapmaxyear < ZIC_MAX));
+ }
+ for (i = 0; i < zonecount; ++i) {
+ struct zone const *zp = &zpfirst[i];
+ if (i < zonecount - 1)
+ updateminmax(zp->z_untilrule.r_loyear);
+ for (j = 0; j < zp->z_nrules; ++j) {
+ struct rule *rp = &zp->z_rules[j];
+ if (rp->r_lowasnum)
+ updateminmax(rp->r_loyear);
+ if (rp->r_hiwasnum)
+ updateminmax(rp->r_hiyear);
+ if (rp->r_lowasnum || rp->r_hiwasnum)
+ prodstic = false;
+ }
+ }
+ /*
+ ** Generate lots of data if a rule can't cover all future times.
+ */
+ compat = stringzone(envvar, zpfirst, zonecount);
+ version = compat < 2013 ? '2' : '3';
+ do_extend = compat < 0;
+ if (noise) {
+ if (!*envvar)
+ warning("%s %s",
+ _("no POSIX environment variable for zone"),
+ zpfirst->z_name);
+ else if (compat != 0) {
+ /* Circa-COMPAT clients, and earlier clients, might
+ not work for this zone when given dates before
+ 1970 or after 2038. */
+ warning(_("%s: pre-%d clients may mishandle"
+ " distant timestamps"),
+ zpfirst->z_name, compat);
+ }
+ }
+ if (do_extend) {
+ /*
+ ** Search through a couple of extra years past the obvious
+ ** 400, to avoid edge cases. For example, suppose a non-POSIX
+ ** rule applies from 2012 onwards and has transitions in March
+ ** and September, plus some one-off transitions in November
+ ** 2013. If zic looked only at the last 400 years, it would
+ ** set max_year=2413, with the intent that the 400 years 2014
+ ** through 2413 will be repeated. The last transition listed
+ ** in the tzfile would be in 2413-09, less than 400 years
+ ** after the last one-off transition in 2013-11. Two years
+ ** might be overkill, but with the kind of edge cases
+ ** available we're not sure that one year would suffice.
+ */
+ enum { years_of_observations = YEARSPERREPEAT + 2 };
+
+ if (min_year >= ZIC_MIN + years_of_observations)
+ min_year -= years_of_observations;
+ else min_year = ZIC_MIN;
+ if (max_year <= ZIC_MAX - years_of_observations)
+ max_year += years_of_observations;
+ else max_year = ZIC_MAX;
+ /*
+ ** Regardless of any of the above,
+ ** for a "proDSTic" zone which specifies that its rules
+ ** always have and always will be in effect,
+ ** we only need one cycle to define the zone.
+ */
+ if (prodstic) {
+ min_year = 1900;
+ max_year = min_year + years_of_observations;
+ }
+ }
+ max_year = max(max_year, (redundant_time / (SECSPERDAY * DAYSPERNYEAR)
+ + EPOCH_YEAR + 1));
+ max_year0 = max_year;
+ if (want_bloat()) {
+ /* For the benefit of older systems,
+ generate data from 1900 through 2038. */
+ if (min_year > 1900)
+ min_year = 1900;
+ if (max_year < 2038)
+ max_year = 2038;
+ }
+
+ if (min_time < lo_time || hi_time < max_time)
+ unspecifiedtype = addtype(0, "-00", false, false, false);
+
+ for (i = 0; i < zonecount; ++i) {
+ struct rule *prevrp = NULL;
+ /*
+ ** A guess that may well be corrected later.
+ */
+ zic_t save = 0;
+ struct zone const *zp = &zpfirst[i];
+ bool usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
+ bool useuntil = i < (zonecount - 1);
+ zic_t stdoff = zp->z_stdoff;
+ zic_t startoff = stdoff;
+ zic_t prevktime;
+ INITIALIZE(prevktime);
+ if (useuntil && zp->z_untiltime <= min_time)
+ continue;
+ eat(zp->z_filenum, zp->z_linenum);
+ *startbuf = '\0';
+ if (zp->z_nrules == 0) {
+ int type;
+ save = zp->z_save;
+ doabbr(startbuf, zp, NULL, zp->z_isdst, save, false);
+ type = addtype(oadd(zp->z_stdoff, save),
+ startbuf, zp->z_isdst, startttisstd,
+ startttisut);
+ if (usestart) {
+ addtt(starttime, type);
+ usestart = false;
+ } else
+ defaulttype = type;
+ } else {
+ zic_t year;
+ for (year = min_year; year <= max_year; ++year) {
+ if (useuntil && year > zp->z_untilrule.r_hiyear)
+ break;
+ /*
+ ** Mark which rules to do in the current year.
+ ** For those to do, calculate rpytime(rp, year);
+ ** The former TYPE field was also considered here.
+ */
+ for (j = 0; j < zp->z_nrules; ++j) {
+ zic_t one = 1;
+ zic_t y2038_boundary = one << 31;
+ struct rule *rp = &zp->z_rules[j];
+ eats(zp->z_filenum, zp->z_linenum,
+ rp->r_filenum, rp->r_linenum);
+ rp->r_todo = year >= rp->r_loyear &&
+ year <= rp->r_hiyear;
+ if (rp->r_todo) {
+ rp->r_temp = rpytime(rp, year);
+ rp->r_todo
+ = (rp->r_temp < y2038_boundary
+ || year <= max_year0);
+ }
+ }
+ for ( ; ; ) {
+ register ptrdiff_t k;
+ register zic_t jtime = 0, ktime = 0;
+ register zic_t offset;
+ struct rule *rp;
+ int type;
+
+ INITIALIZE(ktime);
+ if (useuntil) {
+ /*
+ ** Turn untiltime into UT
+ ** assuming the current stdoff and
+ ** save values.
+ */
+ untiltime = zp->z_untiltime;
+ if (!zp->z_untilrule.r_todisut)
+ untiltime = tadd(untiltime,
+ -stdoff);
+ if (!zp->z_untilrule.r_todisstd)
+ untiltime = tadd(untiltime,
+ -save);
+ }
+ /*
+ ** Find the rule (of those to do, if any)
+ ** that takes effect earliest in the year.
+ */
+ k = -1;
+ for (j = 0; j < zp->z_nrules; ++j) {
+ struct rule *r = &zp->z_rules[j];
+ if (!r->r_todo)
+ continue;
+ eats(zp->z_filenum, zp->z_linenum,
+ r->r_filenum, r->r_linenum);
+ offset = r->r_todisut ? 0 : stdoff;
+ if (!r->r_todisstd)
+ offset = oadd(offset, save);
+ jtime = r->r_temp;
+ if (jtime == min_time ||
+ jtime == max_time)
+ continue;
+ jtime = tadd(jtime, -offset);
+ if (k < 0 || jtime < ktime) {
+ k = j;
+ ktime = jtime;
+ } else if (jtime == ktime) {
+ char const *dup_rules_msg =
+ _("two rules for same instant");
+ eats(zp->z_filenum, zp->z_linenum,
+ r->r_filenum, r->r_linenum);
+ warning("%s", dup_rules_msg);
+ r = &zp->z_rules[k];
+ eats(zp->z_filenum, zp->z_linenum,
+ r->r_filenum, r->r_linenum);
+ error("%s", dup_rules_msg);
+ }
+ }
+ if (k < 0)
+ break; /* go on to next year */
+ rp = &zp->z_rules[k];
+ rp->r_todo = false;
+ if (useuntil && ktime >= untiltime) {
+ if (!*startbuf
+ && (oadd(zp->z_stdoff, rp->r_save)
+ == startoff))
+ doabbr(startbuf, zp, rp->r_abbrvar,
+ rp->r_isdst, rp->r_save,
+ false);
+ break;
+ }
+ save = rp->r_save;
+ if (usestart && ktime == starttime)
+ usestart = false;
+ if (usestart) {
+ if (ktime < starttime) {
+ startoff = oadd(zp->z_stdoff,
+ save);
+ doabbr(startbuf, zp,
+ rp->r_abbrvar,
+ rp->r_isdst,
+ rp->r_save,
+ false);
+ continue;
+ }
+ if (*startbuf == '\0'
+ && startoff == oadd(zp->z_stdoff,
+ save)) {
+ doabbr(startbuf,
+ zp,
+ rp->r_abbrvar,
+ rp->r_isdst,
+ rp->r_save,
+ false);
+ }
+ }
+ eats(zp->z_filenum, zp->z_linenum,
+ rp->r_filenum, rp->r_linenum);
+ doabbr(ab, zp, rp->r_abbrvar,
+ rp->r_isdst, rp->r_save, false);
+ offset = oadd(zp->z_stdoff, rp->r_save);
+ if (!want_bloat() && !useuntil && !do_extend
+ && prevrp && lo_time <= prevktime
+ && redundant_time <= ktime
+ && rp->r_hiyear == ZIC_MAX
+ && prevrp->r_hiyear == ZIC_MAX)
+ break;
+ type = addtype(offset, ab, rp->r_isdst,
+ rp->r_todisstd, rp->r_todisut);
+ if (defaulttype < 0 && !rp->r_isdst)
+ defaulttype = type;
+ if (rp->r_hiyear == ZIC_MAX
+ && ! (0 <= lastatmax
+ && ktime < attypes[lastatmax].at))
+ lastatmax = timecnt;
+ addtt(ktime, type);
+ prevrp = rp;
+ prevktime = ktime;
+ }
+ }
+ }
+ if (usestart) {
+ bool isdst = startoff != zp->z_stdoff;
+ if (*startbuf == '\0' && zp->z_format)
+ doabbr(startbuf, zp, disable_percent_s,
+ isdst, save, false);
+ eat(zp->z_filenum, zp->z_linenum);
+ if (*startbuf == '\0')
+error(_("can't determine time zone abbreviation to use just after until time"));
+ else {
+ int type = addtype(startoff, startbuf, isdst,
+ startttisstd, startttisut);
+ if (defaulttype < 0 && !isdst)
+ defaulttype = type;
+ addtt(starttime, type);
+ }
+ }
+ /*
+ ** Now we may get to set starttime for the next zone line.
+ */
+ if (useuntil) {
+ startttisstd = zp->z_untilrule.r_todisstd;
+ startttisut = zp->z_untilrule.r_todisut;
+ starttime = zp->z_untiltime;
+ if (!startttisstd)
+ starttime = tadd(starttime, -save);
+ if (!startttisut)
+ starttime = tadd(starttime, -stdoff);
+ }
+ }
+ if (defaulttype < 0)
+ defaulttype = 0;
+ if (0 <= lastatmax)
+ attypes[lastatmax].dontmerge = true;
+ if (do_extend) {
+ /*
+ ** If we're extending the explicitly listed observations
+ ** for 400 years because we can't fill the POSIX-TZ field,
+ ** check whether we actually ended up explicitly listing
+ ** observations through that period. If there aren't any
+ ** near the end of the 400-year period, add a redundant
+ ** one at the end of the final year, to make it clear
+ ** that we are claiming to have definite knowledge of
+ ** the lack of transitions up to that point.
+ */
+ struct rule xr;
+ struct attype *lastat;
+ xr.r_month = TM_JANUARY;
+ xr.r_dycode = DC_DOM;
+ xr.r_dayofmonth = 1;
+ xr.r_tod = 0;
+ for (lastat = attypes, i = 1; i < timecnt; i++)
+ if (attypes[i].at > lastat->at)
+ lastat = &attypes[i];
+ if (!lastat || lastat->at < rpytime(&xr, max_year - 1)) {
+ addtt(rpytime(&xr, max_year + 1),
+ lastat ? lastat->type : defaulttype);
+ attypes[timecnt - 1].dontmerge = true;
+ }
+ }
+ writezone(zpfirst->z_name, envvar, version, defaulttype);
+ free(startbuf);
+ free(ab);
+ free(envvar);
+}
+
+static void
+addtt(zic_t starttime, int type)
+{
+ attypes = growalloc(attypes, sizeof *attypes, timecnt, &timecnt_alloc);
+ attypes[timecnt].at = starttime;
+ attypes[timecnt].dontmerge = false;
+ attypes[timecnt].type = type;
+ ++timecnt;
+}
+
+static int
+addtype(zic_t utoff, char const *abbr, bool isdst, bool ttisstd, bool ttisut)
+{
+ register int i, j;
+
+ if (! (-1L - 2147483647L <= utoff && utoff <= 2147483647L)) {
+ error(_("UT offset out of range"));
+ exit(EXIT_FAILURE);
+ }
+ if (!want_bloat())
+ ttisstd = ttisut = false;
+
+ for (j = 0; j < charcnt; ++j)
+ if (strcmp(&chars[j], abbr) == 0)
+ break;
+ if (j == charcnt)
+ newabbr(abbr);
+ else {
+ /* If there's already an entry, return its index. */
+ for (i = 0; i < typecnt; i++)
+ if (utoff == utoffs[i] && isdst == isdsts[i] && j == desigidx[i]
+ && ttisstd == ttisstds[i] && ttisut == ttisuts[i])
+ return i;
+ }
+ /*
+ ** There isn't one; add a new one, unless there are already too
+ ** many.
+ */
+ if (typecnt >= TZ_MAX_TYPES) {
+ error(_("too many local time types"));
+ exit(EXIT_FAILURE);
+ }
+ i = typecnt++;
+ utoffs[i] = utoff;
+ isdsts[i] = isdst;
+ ttisstds[i] = ttisstd;
+ ttisuts[i] = ttisut;
+ desigidx[i] = j;
+ return i;
+}
+
+static void
+leapadd(zic_t t, int correction, int rolling)
+{
+ register int i;
+
+ if (TZ_MAX_LEAPS <= leapcnt) {
+ error(_("too many leap seconds"));
+ exit(EXIT_FAILURE);
+ }
+ if (rolling && (lo_time != min_time || hi_time != max_time)) {
+ error(_("Rolling leap seconds not supported with -r"));
+ exit(EXIT_FAILURE);
+ }
+ for (i = 0; i < leapcnt; ++i)
+ if (t <= trans[i])
+ break;
+ memmove(&trans[i + 1], &trans[i], (leapcnt - i) * sizeof *trans);
+ memmove(&corr[i + 1], &corr[i], (leapcnt - i) * sizeof *corr);
+ memmove(&roll[i + 1], &roll[i], (leapcnt - i) * sizeof *roll);
+ trans[i] = t;
+ corr[i] = correction;
+ roll[i] = rolling;
+ ++leapcnt;
+}
+
+static void
+adjleap(void)
+{
+ register int i;
+ register zic_t last = 0;
+ register zic_t prevtrans = 0;
+
+ /*
+ ** propagate leap seconds forward
+ */
+ for (i = 0; i < leapcnt; ++i) {
+ if (trans[i] - prevtrans < 28 * SECSPERDAY) {
+ error(_("Leap seconds too close together"));
+ exit(EXIT_FAILURE);
+ }
+ prevtrans = trans[i];
+ trans[i] = tadd(trans[i], last);
+ last = corr[i] += last;
+ }
+
+ if (0 <= leapexpires) {
+ leapexpires = oadd(leapexpires, last);
+ if (! (leapcnt == 0 || (trans[leapcnt - 1] < leapexpires))) {
+ error(_("last Leap time does not precede Expires time"));
+ exit(EXIT_FAILURE);
+ }
+ }
+}
+
+/* Is A a space character in the C locale? */
+static bool
+is_space(char a)
+{
+ switch (a) {
+ default:
+ return false;
+ case ' ': case '\f': case '\n': case '\r': case '\t': case '\v':
+ return true;
+ }
+}
+
+/* Is A an alphabetic character in the C locale? */
+static bool
+is_alpha(char a)
+{
+ switch (a) {
+ default:
+ return false;
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
+ case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
+ case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
+ case 'V': case 'W': case 'X': case 'Y': case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
+ case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
+ case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
+ case 'v': case 'w': case 'x': case 'y': case 'z':
+ return true;
+ }
+}
+
+/* If A is an uppercase character in the C locale, return its lowercase
+ counterpart. Otherwise, return A. */
+static char
+lowerit(char a)
+{
+ switch (a) {
+ default: return a;
+ case 'A': return 'a'; case 'B': return 'b'; case 'C': return 'c';
+ case 'D': return 'd'; case 'E': return 'e'; case 'F': return 'f';
+ case 'G': return 'g'; case 'H': return 'h'; case 'I': return 'i';
+ case 'J': return 'j'; case 'K': return 'k'; case 'L': return 'l';
+ case 'M': return 'm'; case 'N': return 'n'; case 'O': return 'o';
+ case 'P': return 'p'; case 'Q': return 'q'; case 'R': return 'r';
+ case 'S': return 's'; case 'T': return 't'; case 'U': return 'u';
+ case 'V': return 'v'; case 'W': return 'w'; case 'X': return 'x';
+ case 'Y': return 'y'; case 'Z': return 'z';
+ }
+}
+
+/* case-insensitive equality */
+ATTRIBUTE_REPRODUCIBLE static bool
+ciequal(register const char *ap, register const char *bp)
+{
+ while (lowerit(*ap) == lowerit(*bp++))
+ if (*ap++ == '\0')
+ return true;
+ return false;
+}
+
+ATTRIBUTE_REPRODUCIBLE static bool
+itsabbr(register const char *abbr, register const char *word)
+{
+ if (lowerit(*abbr) != lowerit(*word))
+ return false;
+ ++word;
+ while (*++abbr != '\0')
+ do {
+ if (*word == '\0')
+ return false;
+ } while (lowerit(*word++) != lowerit(*abbr));
+ return true;
+}
+
+/* Return true if ABBR is an initial prefix of WORD, ignoring ASCII case. */
+
+ATTRIBUTE_REPRODUCIBLE static bool
+ciprefix(char const *abbr, char const *word)
+{
+ do
+ if (!*abbr)
+ return true;
+ while (lowerit(*abbr++) == lowerit(*word++));
+
+ return false;
+}
+
+static const struct lookup *
+byword(const char *word, const struct lookup *table)
+{
+ register const struct lookup * foundlp;
+ register const struct lookup * lp;
+
+ if (word == NULL || table == NULL)
+ return NULL;
+
+ /* If TABLE is LASTS and the word starts with "last" followed
+ by a non-'-', skip the "last" and look in WDAY_NAMES instead.
+ Warn about any usage of the undocumented prefix "last-". */
+ if (table == lasts && ciprefix("last", word) && word[4]) {
+ if (word[4] == '-')
+ warning(_("\"%s\" is undocumented; use \"last%s\" instead"),
+ word, word + 5);
+ else {
+ word += 4;
+ table = wday_names;
+ }
+ }
+
+ /*
+ ** Look for exact match.
+ */
+ for (lp = table; lp->l_word != NULL; ++lp)
+ if (ciequal(word, lp->l_word))
+ return lp;
+ /*
+ ** Look for inexact match.
+ */
+ foundlp = NULL;
+ for (lp = table; lp->l_word != NULL; ++lp)
+ if (ciprefix(word, lp->l_word)) {
+ if (foundlp == NULL)
+ foundlp = lp;
+ else return NULL; /* multiple inexact matches */
+ }
+
+ if (foundlp && noise) {
+ /* Warn about any backward-compatibility issue with pre-2017c zic. */
+ bool pre_2017c_match = false;
+ for (lp = table; lp->l_word; lp++)
+ if (itsabbr(word, lp->l_word)) {
+ if (pre_2017c_match) {
+ warning(_("\"%s\" is ambiguous in pre-2017c zic"), word);
+ break;
+ }
+ pre_2017c_match = true;
+ }
+ }
+
+ return foundlp;
+}
+
+static int
+getfields(char *cp, char **array, int arrayelts)
+{
+ register char * dp;
+ register int nsubs;
+
+ nsubs = 0;
+ for ( ; ; ) {
+ char *dstart;
+ while (is_space(*cp))
+ ++cp;
+ if (*cp == '\0' || *cp == '#')
+ break;
+ dstart = dp = cp;
+ do {
+ if ((*dp = *cp++) != '"')
+ ++dp;
+ else while ((*dp = *cp++) != '"')
+ if (*dp != '\0')
+ ++dp;
+ else {
+ error(_("Odd number of quotation marks"));
+ exit(EXIT_FAILURE);
+ }
+ } while (*cp && *cp != '#' && !is_space(*cp));
+ if (is_space(*cp))
+ ++cp;
+ *dp = '\0';
+ if (nsubs == arrayelts) {
+ error(_("Too many input fields"));
+ exit(EXIT_FAILURE);
+ }
+ array[nsubs++] = dstart + (*dstart == '-' && dp == dstart + 1);
+ }
+ return nsubs;
+}
+
+ATTRIBUTE_NORETURN static void
+time_overflow(void)
+{
+ error(_("time overflow"));
+ exit(EXIT_FAILURE);
+}
+
+ATTRIBUTE_REPRODUCIBLE static zic_t
+oadd(zic_t t1, zic_t t2)
+{
+#ifdef ckd_add
+ zic_t sum;
+ if (!ckd_add(&sum, t1, t2))
+ return sum;
+#else
+ if (t1 < 0 ? ZIC_MIN - t1 <= t2 : t2 <= ZIC_MAX - t1)
+ return t1 + t2;
+#endif
+ time_overflow();
+}
+
+ATTRIBUTE_REPRODUCIBLE static zic_t
+tadd(zic_t t1, zic_t t2)
+{
+#ifdef ckd_add
+ zic_t sum;
+ if (!ckd_add(&sum, t1, t2) && min_time <= sum && sum <= max_time)
+ return sum;
+#else
+ if (t1 < 0 ? min_time - t1 <= t2 : t2 <= max_time - t1)
+ return t1 + t2;
+#endif
+ if (t1 == min_time || t1 == max_time)
+ return t1;
+ time_overflow();
+}
+
+/*
+** Given a rule, and a year, compute the date (in seconds since January 1,
+** 1970, 00:00 LOCAL time) in that year that the rule refers to.
+*/
+
+static zic_t
+rpytime(const struct rule *rp, zic_t wantedy)
+{
+ register int m, i;
+ register zic_t dayoff; /* with a nod to Margaret O. */
+ register zic_t t, y;
+ int yrem;
+
+ if (wantedy == ZIC_MIN)
+ return min_time;
+ if (wantedy == ZIC_MAX)
+ return max_time;
+ m = TM_JANUARY;
+ y = EPOCH_YEAR;
+
+ /* dayoff = floor((wantedy - y) / YEARSPERREPEAT) * DAYSPERREPEAT,
+ sans overflow. */
+ yrem = wantedy % YEARSPERREPEAT - y % YEARSPERREPEAT;
+ dayoff = ((wantedy / YEARSPERREPEAT - y / YEARSPERREPEAT
+ + yrem / YEARSPERREPEAT - (yrem % YEARSPERREPEAT < 0))
+ * DAYSPERREPEAT);
+ /* wantedy = y + ((wantedy - y) mod YEARSPERREPEAT), sans overflow. */
+ wantedy = y + (yrem + 2 * YEARSPERREPEAT) % YEARSPERREPEAT;
+
+ while (wantedy != y) {
+ i = len_years[isleap(y)];
+ dayoff = oadd(dayoff, i);
+ y++;
+ }
+ while (m != rp->r_month) {
+ i = len_months[isleap(y)][m];
+ dayoff = oadd(dayoff, i);
+ ++m;
+ }
+ i = rp->r_dayofmonth;
+ if (m == TM_FEBRUARY && i == 29 && !isleap(y)) {
+ if (rp->r_dycode == DC_DOWLEQ)
+ --i;
+ else {
+ error(_("use of 2/29 in non leap-year"));
+ exit(EXIT_FAILURE);
+ }
+ }
+ --i;
+ dayoff = oadd(dayoff, i);
+ if (rp->r_dycode == DC_DOWGEQ || rp->r_dycode == DC_DOWLEQ) {
+ /*
+ ** Don't trust mod of negative numbers.
+ */
+ zic_t wday = ((EPOCH_WDAY + dayoff % DAYSPERWEEK + DAYSPERWEEK)
+ % DAYSPERWEEK);
+ while (wday != rp->r_wday)
+ if (rp->r_dycode == DC_DOWGEQ) {
+ dayoff = oadd(dayoff, 1);
+ if (++wday >= DAYSPERWEEK)
+ wday = 0;
+ ++i;
+ } else {
+ dayoff = oadd(dayoff, -1);
+ if (--wday < 0)
+ wday = DAYSPERWEEK - 1;
+ --i;
+ }
+ if (i < 0 || i >= len_months[isleap(y)][m]) {
+ if (noise)
+ warning(_("rule goes past start/end of month; \
+will not work with pre-2004 versions of zic"));
+ }
+ }
+ if (dayoff < min_time / SECSPERDAY)
+ return min_time;
+ if (dayoff > max_time / SECSPERDAY)
+ return max_time;
+ t = (zic_t) dayoff * SECSPERDAY;
+ return tadd(t, rp->r_tod);
+}
+
+static void
+newabbr(const char *string)
+{
+ register int i;
+
+ if (strcmp(string, GRANDPARENTED) != 0) {
+ register const char * cp;
+ const char * mp;
+
+ cp = string;
+ mp = NULL;
+ while (is_alpha(*cp) || ('0' <= *cp && *cp <= '9')
+ || *cp == '-' || *cp == '+')
+ ++cp;
+ if (noise && cp - string < 3)
+ mp = _("time zone abbreviation has fewer than 3 characters");
+ if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN)
+ mp = _("time zone abbreviation has too many characters");
+ if (*cp != '\0')
+mp = _("time zone abbreviation differs from POSIX standard");
+ if (mp != NULL)
+ warning("%s (%s)", mp, string);
+ }
+ i = strlen(string) + 1;
+ if (charcnt + i > TZ_MAX_CHARS) {
+ error(_("too many, or too long, time zone abbreviations"));
+ exit(EXIT_FAILURE);
+ }
+ strcpy(&chars[charcnt], string);
+ charcnt += i;
+}
+
+/* Ensure that the directories of ARGNAME exist, by making any missing
+ ones. If ANCESTORS, do this only for ARGNAME's ancestors; otherwise,
+ do it for ARGNAME too. Exit with failure if there is trouble.
+ Do not consider an existing file to be trouble. */
+static void
+mkdirs(char const *argname, bool ancestors)
+{
+ char *name = estrdup(argname);
+ char *cp = name;
+
+ /* On MS-Windows systems, do not worry about drive letters or
+ backslashes, as this should suffice in practice. Time zone
+ names do not use drive letters and backslashes. If the -d
+ option of zic does not name an already-existing directory,
+ it can use slashes to separate the already-existing
+ ancestor prefix from the to-be-created subdirectories. */
+
+ /* Do not mkdir a root directory, as it must exist. */
+ while (*cp == '/')
+ cp++;
+
+ while (cp && ((cp = strchr(cp, '/')) || !ancestors)) {
+ if (cp)
+ *cp = '\0';
+ /*
+ ** Try to create it. It's OK if creation fails because
+ ** the directory already exists, perhaps because some
+ ** other process just created it. For simplicity do
+ ** not check first whether it already exists, as that
+ ** is checked anyway if the mkdir fails.
+ */
+ if (mkdir(name, MKDIR_UMASK) != 0) {
+ /* Do not report an error if err == EEXIST, because
+ some other process might have made the directory
+ in the meantime. Likewise for ENOSYS, because
+ Solaris 10 mkdir fails with ENOSYS if the
+ directory is an automounted mount point.
+ Likewise for EACCES, since mkdir can fail
+ with EACCES merely because the parent directory
+ is unwritable. Likewise for most other error
+ numbers. */
+ int err = errno;
+ if (err == ELOOP || err == ENAMETOOLONG
+ || err == ENOENT || err == ENOTDIR) {
+ error(_("%s: Can't create directory %s: %s"),
+ progname, name, strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ }
+ if (cp)
+ *cp++ = '/';
+ }
+ free(name);
+}
Index: radix-1.9/sources/iana/tz/create-2023c-version-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-version-patch/create.patch.sh (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-version-patch/create.patch.sh (revision 35)
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+VERSION=2023c
+
+mkdir -p timezone
+tar -C timezone --files-from=file.list -xzvf ../tzcode$VERSION.tar.gz
+mv timezone timezone-orig
+
+cp -rf ./timezone-new ./timezone
+
+diff --unified -Nr timezone-orig timezone > tzcode-$VERSION-version.patch
+
+mv tzcode-$VERSION-version.patch ../patches
+
+rm -rf ./timezone
+rm -rf ./timezone-orig
Property changes on: radix-1.9/sources/iana/tz/create-2023c-version-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/iana/tz/create-2023c-version-patch/file.list
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-version-patch/file.list (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-version-patch/file.list (revision 35)
@@ -0,0 +1 @@
+Makefile
Index: radix-1.9/sources/iana/tz/create-2023c-version-patch/timezone-new/Makefile
===================================================================
--- radix-1.9/sources/iana/tz/create-2023c-version-patch/timezone-new/Makefile (nonexistent)
+++ radix-1.9/sources/iana/tz/create-2023c-version-patch/timezone-new/Makefile (revision 35)
@@ -0,0 +1,1249 @@
+# Make and install tzdb code and data.
+
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# Package name for the code distribution.
+PACKAGE= tzcode
+
+# Version number for the distribution, overridden in the 'tarballs' rule below.
+VERSION= 2023c
+
+# Email address for bug reports.
+BUGEMAIL= tz@iana.org
+
+# DATAFORM selects the data format.
+# Available formats represent essentially the same data, albeit
+# possibly with minor discrepancies that users are not likely to notice.
+# To get new features and the best data right away, use:
+# DATAFORM= vanguard
+# To wait a while before using new features, to give downstream users
+# time to upgrade zic (the default), use:
+# DATAFORM= main
+# To wait even longer for new features, use:
+# DATAFORM= rearguard
+# Rearguard users might also want "ZFLAGS = -b fat"; see below.
+DATAFORM= main
+
+# Change the line below for your timezone (after finding the one you want in
+# one of the $(TDATA) source files, or adding it to a source file).
+# Alternatively, if you discover you've got the wrong timezone, you can just
+# 'zic -l -' to remove it, or 'zic -l rightzone' to change it.
+# Use the command
+# make zonenames
+# to get a list of the values you can use for LOCALTIME.
+
+LOCALTIME= Factory
+
+# The POSIXRULES macro controls interpretation of POSIX-like TZ
+# settings like TZ='EET-2EEST' that lack DST transition rules.
+# If POSIXRULES is '-', no template is installed; this is the default.
+# Any other value for POSIXRULES is obsolete and should not be relied on, as:
+# * It does not work correctly in popular implementations such as GNU/Linux.
+# * It does not work even in tzcode, except for historical timestamps
+# that precede the last explicit transition in the POSIXRULES file.
+# Hence it typically does not work for current and future timestamps.
+# If, despite the above, you want a template for handling these settings,
+# you can change the line below (after finding the timezone you want in the
+# one of the $(TDATA) source files, or adding it to a source file).
+# Alternatively, if you discover you've got the wrong timezone, you can just
+# 'zic -p -' to remove it, or 'zic -p rightzone' to change it.
+# Use the command
+# make zonenames
+# to get a list of the values you can use for POSIXRULES.
+
+POSIXRULES= -
+
+# Also see TZDEFRULESTRING below, which takes effect only
+# if POSIXRULES is '-' or if the template file cannot be accessed.
+
+
+# Installation locations.
+#
+# The defaults are suitable for Debian, except that if REDO is
+# posix_right or right_posix then files that Debian puts under
+# /usr/share/zoneinfo/posix and /usr/share/zoneinfo/right are instead
+# put under /usr/share/zoneinfo-posix and /usr/share/zoneinfo-leaps,
+# respectively. Problems with the Debian approach are discussed in
+# the commentary for the right_posix rule (below).
+
+# Destination directory, which can be used for staging.
+# 'make DESTDIR=/stage install' installs under /stage (e.g., to
+# /stage/etc/localtime instead of to /etc/localtime). Files under
+# /stage are not intended to work as-is, but can be copied by hand to
+# the root directory later. If DESTDIR is empty, 'make install' does
+# not stage, but installs directly into production locations.
+DESTDIR =
+
+# Everything is installed into subdirectories of TOPDIR, and used there.
+# TOPDIR should be empty (meaning the root directory),
+# or a directory name that does not end in "/".
+# TOPDIR should be empty or an absolute name unless you're just testing.
+TOPDIR =
+
+# The default local timezone is taken from the file TZDEFAULT.
+TZDEFAULT = $(TOPDIR)/etc/localtime
+
+# The subdirectory containing installed program and data files, and
+# likewise for installed files that can be shared among architectures.
+# These should be relative file names.
+USRDIR = usr
+USRSHAREDIR = $(USRDIR)/share
+
+# "Compiled" timezone information is placed in the "TZDIR" directory
+# (and subdirectories).
+# TZDIR_BASENAME should not contain "/" and should not be ".", ".." or empty.
+TZDIR_BASENAME= zoneinfo
+TZDIR = $(TOPDIR)/$(USRSHAREDIR)/$(TZDIR_BASENAME)
+
+# The "tzselect" and (if you do "make INSTALL") "date" commands go in:
+BINDIR = $(TOPDIR)/$(USRDIR)/bin
+
+# The "zdump" command goes in:
+ZDUMPDIR = $(BINDIR)
+
+# The "zic" command goes in:
+ZICDIR = $(TOPDIR)/$(USRDIR)/sbin
+
+# Manual pages go in subdirectories of. . .
+MANDIR = $(TOPDIR)/$(USRSHAREDIR)/man
+
+# Library functions are put in an archive in LIBDIR.
+LIBDIR = $(TOPDIR)/$(USRDIR)/lib
+
+
+# Types to try, as an alternative to time_t.
+TIME_T_ALTERNATIVES = $(TIME_T_ALTERNATIVES_HEAD) $(TIME_T_ALTERNATIVES_TAIL)
+TIME_T_ALTERNATIVES_HEAD = int_least64_t
+TIME_T_ALTERNATIVES_TAIL = int_least32_t uint_least32_t uint_least64_t
+
+# What kind of TZif data files to generate. (TZif is the binary time
+# zone data format that zic generates; see Internet RFC 8536.)
+# If you want only POSIX time, with time values interpreted as
+# seconds since the epoch (not counting leap seconds), use
+# REDO= posix_only
+# below. If you want only "right" time, with values interpreted
+# as seconds since the epoch (counting leap seconds), use
+# REDO= right_only
+# below. If you want both sets of data available, with leap seconds not
+# counted normally, use
+# REDO= posix_right
+# below. If you want both sets of data available, with leap seconds counted
+# normally, use
+# REDO= right_posix
+# below. POSIX mandates that leap seconds not be counted; for compatibility
+# with it, use "posix_only" or "posix_right". Use POSIX time on systems with
+# leap smearing; this can work better than unsmeared "right" time with
+# applications that are not leap second aware, and is closer to unsmeared
+# "right" time than unsmeared POSIX time is (e.g., 0.5 vs 1.0 s max error).
+
+REDO= posix_right
+
+# Whether to put an "Expires" line in the leapseconds file.
+# Use EXPIRES_LINE=1 to put the line in, 0 to omit it.
+# The EXPIRES_LINE value matters only if REDO's value contains "right".
+# If you change EXPIRES_LINE, remove the leapseconds file before running "make".
+# zic's support for the Expires line was introduced in tzdb 2020a,
+# and was modified in tzdb 2021b to generate version 4 TZif files.
+# EXPIRES_LINE defaults to 0 for now so that the leapseconds file
+# can be given to pre-2020a zic implementations and so that TZif files
+# built by newer zic implementations can be read by pre-2021b libraries.
+EXPIRES_LINE= 0
+
+# To install data in text form that has all the information of the TZif data,
+# (optionally incorporating leap second information), use
+# TZDATA_TEXT= tzdata.zi leapseconds
+# To install text data without leap second information (e.g., because
+# REDO='posix_only'), use
+# TZDATA_TEXT= tzdata.zi
+# To avoid installing text data, use
+# TZDATA_TEXT=
+
+TZDATA_TEXT= leapseconds tzdata.zi
+
+# For backward-compatibility links for old zone names, use
+# BACKWARD= backward
+# To omit these links, use
+# BACKWARD=
+
+BACKWARD= backward
+
+# If you want out-of-scope and often-wrong data from the file 'backzone',
+# but only for entries listed in the backward-compatibility file zone.tab, use
+# PACKRATDATA= backzone
+# PACKRATLIST= zone.tab
+# If you want all the 'backzone' data, use
+# PACKRATDATA= backzone
+# PACKRATLIST=
+# To omit this data, use
+# PACKRATDATA=
+# PACKRATLIST=
+
+PACKRATDATA=
+PACKRATLIST=
+
+# The name of a locale using the UTF-8 encoding, used during self-tests.
+# The tests are skipped if the name does not appear to work on this system.
+
+UTF8_LOCALE= en_US.utf8
+
+# Non-default libraries needed to link.
+# On some hosts, this should have -lintl unless CFLAGS has -DHAVE_GETTEXT=0.
+LDLIBS=
+
+# Add the following to the end of the "CFLAGS=" line as needed to override
+# defaults specified in the source code. "-DFOO" is equivalent to "-DFOO=1".
+# -DDEPRECATE_TWO_DIGIT_YEARS for optional runtime warnings about strftime
+# formats that generate only the last two digits of year numbers
+# -DEPOCH_LOCAL if the 'time' function returns local time not UT
+# -DEPOCH_OFFSET=N if the 'time' function returns a value N greater
+# than what POSIX specifies, assuming local time is UT.
+# For example, N is 252460800 on AmigaOS.
+# -DHAVE_DECL_ASCTIME_R=0 if <time.h> does not declare asctime_r
+# -DHAVE_DECL_ENVIRON if <unistd.h> declares 'environ'
+# -DHAVE_DECL_TIMEGM=0 if <time.h> does not declare timegm
+# -DHAVE_DIRECT_H if mkdir needs <direct.h> (MS-Windows)
+# -DHAVE__GENERIC=0 if _Generic does not work*
+# -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux),
+# -DHAVE_GETRANDOM=0 to avoid using getrandom
+# -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris),
+# where LDLIBS also needs to contain -lintl on some hosts;
+# -DHAVE_GETTEXT=0 to avoid using gettext
+# -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares
+# ctime_r and asctime_r incompatibly with the POSIX standard
+# (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined).
+# -DHAVE_INTTYPES_H=0 if <inttypes.h> does not work*+
+# -DHAVE_LINK=0 if your system lacks a link function
+# -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function
+# -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz
+# localtime_rz can make zdump significantly faster, but is nonstandard.
+# -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure.
+# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare
+# functions like 'link' or variables like 'tzname' required by POSIX
+# -DHAVE_SETENV=0 if your system lacks the setenv function
+# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function+
+# -DHAVE_STDCKDINT_H=0 if neither <stdckdint.h> nor substitutes like
+# __builtin_add_overflow work*
+# -DHAVE_STDINT_H=0 if <stdint.h> does not work*+
+# -DHAVE_STRFTIME_L if <time.h> declares locale_t and strftime_l
+# -DHAVE_STRDUP=0 if your system lacks the strdup function
+# -DHAVE_STRTOLL=0 if your system lacks the strtoll function+
+# -DHAVE_SYMLINK=0 if your system lacks the symlink function
+# -DHAVE_SYS_STAT_H=0 if <sys/stat.h> does not work*
+# -DHAVE_TZSET=0 if your system lacks a tzset function
+# -DHAVE_UNISTD_H=0 if <unistd.h> does not work*
+# -DHAVE_UTMPX_H=0 if <utmpx.h> does not work*
+# -Dlocale_t=XXX if your system uses XXX instead of locale_t
+# -DPORT_TO_C89 if tzcode should also run on C89 platforms+
+# -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers
+# with external linkage, e.g., applications cannot define 'localtime'.
+# -Dssize_t=long on hosts like MS-Windows that lack ssize_t
+# -DSUPPORT_C89 if the tzcode library should support C89 callers+
+# -DSUPPRESS_TZDIR to not prepend TZDIR to file names; this has
+# security implications and is not recommended for general use
+# -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires;
+# not needed by the main-program tz code, which is single-threaded.
+# Append other compiler flags as needed, e.g., -pthread on GNU/Linux.
+# -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t
+# This is intended for internal use only; it mangles external names.
+# -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz"
+# -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
+# the default is system-supplied, typically "/usr/lib/locale"
+# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
+# DST transitions for POSIX-style TZ strings lacking them,
+# in the usual case where POSIXRULES is '-'. If not specified,
+# TZDEFRULESTRING defaults to US rules for future DST transitions.
+# This mishandles some past timestamps, as US DST rules have changed.
+# It also mishandles settings like TZ='EET-2EEST' for eastern Europe,
+# as Europe and US DST rules differ.
+# -DTZNAME_MAXIMUM=N to limit time zone abbreviations to N bytes (default 255)
+# -DUNINIT_TRAP if reading uninitialized storage can cause problems
+# other than simply getting garbage data
+# -DUSE_LTZ=0 to build zdump with the system time zone library
+# Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
+# -DZIC_BLOAT_DEFAULT=\"fat\" to default zic's -b option to "fat", and
+# similarly for "slim". Fat TZif files work around incompatibilities
+# and bugs in some TZif readers, notably older ones that
+# ignore or otherwise mishandle 64-bit data in TZif files;
+# however, fat TZif files may trigger bugs in newer TZif readers.
+# Slim TZif files are more efficient, and are the default.
+# -DZIC_MAX_ABBR_LEN_WO_WARN=3
+# (or some other number) to set the maximum time zone abbreviation length
+# that zic will accept without a warning (the default is 6)
+# $(GCC_DEBUG_FLAGS) if you are using recent GCC and want lots of checking
+#
+# * Options marked "*" can be omitted if your compiler is C23 compatible.
+# * Options marked "+" are obsolescent and are planned to be removed
+# once the code assumes C99 or later.
+#
+# Select instrumentation via "make GCC_INSTRUMENT='whatever'".
+GCC_INSTRUMENT = \
+ -fsanitize=undefined -fsanitize-address-use-after-scope \
+ -fsanitize-undefined-trap-on-error -fstack-protector
+# Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow.
+GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
+ $(GCC_INSTRUMENT) \
+ -Wall -Wextra \
+ -Walloc-size-larger-than=100000 -Warray-bounds=2 \
+ -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \
+ -Wdeclaration-after-statement -Wdouble-promotion \
+ -Wduplicated-branches -Wduplicated-cond \
+ -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
+ -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op \
+ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
+ -Wnull-dereference \
+ -Wold-style-definition -Woverlength-strings -Wpointer-arith \
+ -Wshadow -Wshift-overflow=2 -Wstrict-overflow \
+ -Wstrict-prototypes -Wstringop-overflow=4 \
+ -Wstringop-truncation -Wsuggest-attribute=cold \
+ -Wsuggest-attribute=const -Wsuggest-attribute=format \
+ -Wsuggest-attribute=malloc \
+ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
+ -Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
+ -Wvariadic-macros -Wvla -Wwrite-strings \
+ -Wno-address -Wno-format-nonliteral -Wno-sign-compare \
+ -Wno-type-limits
+#
+# If your system has a "GMT offset" field in its "struct tm"s
+# (or if you decide to add such a field in your system's "time.h" file),
+# add the name to a define such as
+# -DTM_GMTOFF=tm_gmtoff
+# to the end of the "CFLAGS=" line. If not defined, the code attempts to
+# guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
+# Similarly, if your system has a "zone abbreviation" field, define
+# -DTM_ZONE=tm_zone
+# and define NO_TM_ZONE to suppress any guessing. Although these two fields
+# not required by POSIX, a future version of POSIX is planned to require them
+# and they are widely available on GNU/Linux and BSD systems.
+#
+# The next batch of options control support for external variables
+# exported by tzcode. In practice these variables are less useful
+# than TM_GMTOFF and TM_ZONE. However, most of them are standardized.
+# #
+# # To omit or support the external variable "tzname", add one of:
+# # -DHAVE_TZNAME=0 # do not support "tzname"
+# # -DHAVE_TZNAME=1 # support "tzname", which is defined by system library
+# # -DHAVE_TZNAME=2 # support and define "tzname"
+# # to the "CFLAGS=" line. "tzname" is required by POSIX 1988 and later.
+# # If not defined, the code attempts to guess HAVE_TZNAME from other macros.
+# # Warning: unless time_tz is also defined, HAVE_TZNAME=1 can cause
+# # crashes when combined with some platforms' standard libraries,
+# # presumably due to memory allocation issues.
+# #
+# # To omit or support the external variables "timezone" and "daylight", add
+# # -DUSG_COMPAT=0 # do not support
+# # -DUSG_COMPAT=1 # support, and variables are defined by system library
+# # -DUSG_COMPAT=2 # support and define variables
+# # to the "CFLAGS=" line; "timezone" and "daylight" are inspired by
+# # Unix Systems Group code and are required by POSIX 2008 (with XSI) and later.
+# # If not defined, the code attempts to guess USG_COMPAT from other macros.
+# #
+# # To support the external variable "altzone", add
+# # -DALTZONE=0 # do not support
+# # -DALTZONE=1 # support "altzone", which is defined by system library
+# # -DALTZONE=2 # support and define "altzone"
+# # to the end of the "CFLAGS=" line; although "altzone" appeared in
+# # System V Release 3.1 it has not been standardized.
+# # If not defined, the code attempts to guess ALTZONE from other macros.
+#
+# If you want functions that were inspired by early versions of X3J11's work,
+# add
+# -DSTD_INSPIRED
+# to the end of the "CFLAGS=" line. This arranges for the following
+# functions to be added to the time conversion library.
+# "offtime" is like "gmtime" except that it accepts a second (long) argument
+# that gives an offset to add to the time_t when converting it.
+# "timelocal" is equivalent to "mktime".
+# "timeoff" is like "timegm" except that it accepts a second (long) argument
+# that gives an offset to use when converting to a time_t.
+# "posix2time" and "time2posix" are described in an included manual page.
+# X3J11's work does not describe any of these functions.
+# These functions may well disappear in future releases of the time
+# conversion package.
+#
+# If you don't want functions that were inspired by NetBSD, add
+# -DNETBSD_INSPIRED=0
+# to the end of the "CFLAGS=" line. Otherwise, the functions
+# "localtime_rz", "mktime_z", "tzalloc", and "tzfree" are added to the
+# time library, and if STD_INSPIRED is also defined to nonzero the functions
+# "posix2time_z" and "time2posix_z" are added as well.
+# The functions ending in "_z" (or "_rz") are like their unsuffixed
+# (or suffixed-by-"_r") counterparts, except with an extra first
+# argument of opaque type timezone_t that specifies the timezone.
+# "tzalloc" allocates a timezone_t value, and "tzfree" frees it.
+#
+# If you want to allocate state structures in localtime, add
+# -DALL_STATE
+# to the end of the "CFLAGS=" line. Storage is obtained by calling malloc.
+#
+# NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put
+# out by the National Institute of Standards and Technology
+# which claims to test C and Posix conformance. If you want to pass PCTS, add
+# -DPCTS
+# to the end of the "CFLAGS=" line.
+#
+# If you want strict compliance with XPG4 as of 1994-04-09, add
+# -DXPG4_1994_04_09
+# to the end of the "CFLAGS=" line. This causes "strftime" to always return
+# 53 as a week number (rather than 52 or 53) for January days before
+# January's first Monday when a "%V" format is used and January 1
+# falls on a Friday, Saturday, or Sunday.
+
+CFLAGS=
+
+# Linker flags. Default to $(LFLAGS) for backwards compatibility
+# to release 2012h and earlier.
+
+LDFLAGS= $(LFLAGS)
+
+# For leap seconds, this Makefile uses LEAPSECONDS='-L leapseconds' in
+# submake command lines. The default is no leap seconds.
+
+LEAPSECONDS=
+
+# The zic command and its arguments.
+
+zic= ./zic
+ZIC= $(zic) $(ZFLAGS)
+
+# To shrink the size of installed TZif files,
+# append "-r @N" to omit data before N-seconds-after-the-Epoch.
+# To grow the files and work around bugs in older applications,
+# possibly at the expense of introducing bugs in newer ones,
+# append "-b fat"; see ZIC_BLOAT_DEFAULT above.
+# See the zic man page for more about -b and -r.
+ZFLAGS=
+
+# How to use zic to install TZif files.
+
+ZIC_INSTALL= $(ZIC) -d '$(DESTDIR)$(TZDIR)' $(LEAPSECONDS)
+
+# The name of a Posix-compliant 'awk' on your system.
+# mawk 1.3.3 and Solaris 10 /usr/bin/awk do not work.
+# Also, it is better (though not essential) if 'awk' supports UTF-8,
+# and unfortunately mawk and busybox awk do not support UTF-8.
+# Try AWK=gawk or AWK=nawk if your awk has the abovementioned problems.
+AWK= awk
+
+# The full path name of a Posix-compliant shell, preferably one that supports
+# the Korn shell's 'select' statement as an extension.
+# These days, Bash is the most popular.
+# It should be OK to set this to /bin/sh, on platforms where /bin/sh
+# lacks 'select' or doesn't completely conform to Posix, but /bin/bash
+# is typically nicer if it works.
+KSHELL= /bin/bash
+
+# Name of curl <https://curl.haxx.se/>, used for HTML validation.
+CURL= curl
+
+# Name of GNU Privacy Guard <https://gnupg.org/>, used to sign distributions.
+GPG= gpg
+
+# This expensive test requires USE_LTZ.
+# To suppress it, define this macro to be empty.
+CHECK_TIME_T_ALTERNATIVES = check_time_t_alternatives
+
+# SAFE_CHAR is a regular expression that matches a safe character.
+# Some parts of this distribution are limited to safe characters;
+# others can use any UTF-8 character.
+# For now, the safe characters are a safe subset of ASCII.
+# The caller must set the shell variable 'sharp' to the character '#',
+# since Makefile macros cannot contain '#'.
+# TAB_CHAR is a single tab character, in single quotes.
+TAB_CHAR= ' '
+SAFE_CHARSET1= $(TAB_CHAR)' !\"'$$sharp'$$%&'\''()*+,./0123456789:;<=>?@'
+SAFE_CHARSET2= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`'
+SAFE_CHARSET3= 'abcdefghijklmnopqrstuvwxyz{|}~'
+SAFE_CHARSET= $(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3)
+SAFE_CHAR= '[]'$(SAFE_CHARSET)'-]'
+
+# These non-alphabetic, non-ASCII printable characters are Latin-1,
+# and so are likely displayable even in editors like XEmacs 21
+# that have limited display capabilities.
+UNUSUAL_OK_LATIN_1 = ¡¢£¤¥¦§¨©«¬®¯°±²³´¶·¸¹»¼½¾¿×÷
+# Non-ASCII non-letters that OK_CHAR allows, as these characters are
+# useful in commentary.
+UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)
+
+# Put this in a bracket expression to match spaces.
+s = [:space:]
+
+# OK_CHAR matches any character allowed in the distributed files.
+# This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and
+# multibyte letters are also allowed so that commentary can contain a
+# few safe symbols and people's names and can quote non-English sources.
+# Other non-letters are limited to ASCII renderings for the
+# convenience of maintainers using XEmacs 21.5.34, which by default
+# mishandles Unicode characters U+0100 and greater.
+OK_CHAR= '[][:alpha:]$(UNUSUAL_OK_CHARSET)'$(SAFE_CHARSET)'-]'
+
+# SAFE_LINE matches a line of safe characters.
+# SAFE_SHARP_LINE is similar, except any OK character can follow '#';
+# this is so that comments can contain non-ASCII characters.
+# OK_LINE matches a line of OK characters.
+SAFE_LINE= '^'$(SAFE_CHAR)'*$$'
+SAFE_SHARP_LINE='^'$(SAFE_CHAR)'*('$$sharp$(OK_CHAR)'*)?$$'
+OK_LINE= '^'$(OK_CHAR)'*$$'
+
+# Flags to give 'tar' when making a distribution.
+# Try to use flags appropriate for GNU tar.
+GNUTARFLAGS= --format=pax --pax-option='delete=atime,delete=ctime' \
+ --numeric-owner --owner=0 --group=0 \
+ --mode=go+u,go-w --sort=name
+TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \
+ then echo $(GNUTARFLAGS); \
+ else :; \
+ fi`
+
+# Flags to give 'gzip' when making a distribution.
+GZIPFLAGS= -9n
+
+# When comparing .tzs files, use GNU diff's -F'^TZ=' option if supported.
+# This makes it easier to see which Zone has been affected.
+DIFF_TZS= diff -u$$(! diff -u -F'^TZ=' - - <>/dev/null >&0 2>&1 \
+ || echo ' -F^TZ=')
+
+###############################################################################
+
+#MAKE= make
+
+cc= cc
+CC= $(cc) -DTZDIR='"$(TZDIR)"'
+
+AR= ar
+
+# ':' on typical hosts; 'ranlib' on the ancient hosts that still need ranlib.
+RANLIB= :
+
+TZCOBJS= zic.o
+TZDOBJS= zdump.o localtime.o asctime.o strftime.o
+DATEOBJS= date.o localtime.o strftime.o asctime.o
+LIBSRCS= localtime.c asctime.c difftime.c strftime.c
+LIBOBJS= localtime.o asctime.o difftime.o strftime.o
+HEADERS= tzfile.h private.h
+NONLIBSRCS= zic.c zdump.c
+NEWUCBSRCS= date.c
+SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) \
+ tzselect.ksh workman.sh
+MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
+ tzfile.5 tzselect.8 zic.8 zdump.8
+MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \
+ time2posix.3.txt \
+ tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \
+ date.1.txt
+COMMON= calendars CONTRIBUTING LICENSE Makefile \
+ NEWS README SECURITY theory.html version
+WEB_PAGES= tz-art.html tz-how-to.html tz-link.html
+CHECK_WEB_PAGES=check_theory.html check_tz-art.html \
+ check_tz-how-to.html check_tz-link.html
+DOCS= $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
+PRIMARY_YDATA= africa antarctica asia australasia \
+ europe northamerica southamerica
+YDATA= $(PRIMARY_YDATA) etcetera
+NDATA= factory
+TDATA_TO_CHECK= $(YDATA) $(NDATA) backward
+TDATA= $(YDATA) $(NDATA) $(BACKWARD)
+ZONETABLES= zone1970.tab zone.tab
+TABDATA= iso3166.tab $(TZDATA_TEXT) $(ZONETABLES)
+LEAP_DEPS= leapseconds.awk leap-seconds.list
+TZDATA_ZI_DEPS= ziguard.awk zishrink.awk version $(TDATA) \
+ $(PACKRATDATA) $(PACKRATLIST)
+DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA) $(PACKRATLIST)
+DATA= $(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \
+ leapseconds $(ZONETABLES)
+AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk \
+ ziguard.awk zishrink.awk
+MISC= $(AWK_SCRIPTS)
+TZS_YEAR= 2050
+TZS_CUTOFF_FLAG= -c $(TZS_YEAR)
+TZS= to$(TZS_YEAR).tzs
+TZS_NEW= to$(TZS_YEAR)new.tzs
+TZS_DEPS= $(YDATA) asctime.c localtime.c \
+ private.h tzfile.h zdump.c zic.c
+TZDATA_DIST = $(COMMON) $(DATA) $(MISC)
+# EIGHT_YARDS is just a yard short of the whole ENCHILADA.
+EIGHT_YARDS = $(TZDATA_DIST) $(DOCS) $(SOURCES) tzdata.zi
+ENCHILADA = $(EIGHT_YARDS) $(TZS)
+
+# Consult these files when deciding whether to rebuild the 'version' file.
+# This list is not the same as the output of 'git ls-files', since
+# .gitignore is not distributed.
+VERSION_DEPS= \
+ calendars CONTRIBUTING LICENSE Makefile NEWS README SECURITY \
+ africa antarctica asctime.c asia australasia \
+ backward backzone \
+ checklinks.awk checktab.awk \
+ date.1 date.c difftime.c \
+ etcetera europe factory iso3166.tab \
+ leap-seconds.list leapseconds.awk localtime.c \
+ newctime.3 newstrftime.3 newtzset.3 northamerica \
+ private.h southamerica strftime.c theory.html \
+ time2posix.3 tz-art.html tz-how-to.html tz-link.html \
+ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
+ workman.sh zdump.8 zdump.c zic.8 zic.c \
+ ziguard.awk zishrink.awk \
+ zone.tab zone1970.tab
+
+# And for the benefit of csh users on systems that assume the user
+# shell should be used to handle commands in Makefiles. . .
+
+SHELL= /bin/sh
+
+all: tzselect zic zdump libtz.a $(TABDATA) \
+ vanguard.zi main.zi rearguard.zi
+
+ALL: all date $(ENCHILADA)
+
+install: all $(DATA) $(REDO) $(MANS)
+ mkdir -p '$(DESTDIR)$(BINDIR)' \
+ '$(DESTDIR)$(ZDUMPDIR)' '$(DESTDIR)$(ZICDIR)' \
+ '$(DESTDIR)$(LIBDIR)' \
+ '$(DESTDIR)$(MANDIR)/man3' '$(DESTDIR)$(MANDIR)/man5' \
+ '$(DESTDIR)$(MANDIR)/man8'
+ $(ZIC_INSTALL) -l $(LOCALTIME) \
+ `case '$(POSIXRULES)' in ?*) echo '-p';; esac \
+ ` $(POSIXRULES) \
+ -t '$(DESTDIR)$(TZDEFAULT)'
+ cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.'
+ cp tzselect '$(DESTDIR)$(BINDIR)/.'
+ cp zdump '$(DESTDIR)$(ZDUMPDIR)/.'
+ cp zic '$(DESTDIR)$(ZICDIR)/.'
+ cp libtz.a '$(DESTDIR)$(LIBDIR)/.'
+ $(RANLIB) '$(DESTDIR)$(LIBDIR)/libtz.a'
+ cp -f newctime.3 newtzset.3 '$(DESTDIR)$(MANDIR)/man3/.'
+ cp -f tzfile.5 '$(DESTDIR)$(MANDIR)/man5/.'
+ cp -f tzselect.8 zdump.8 zic.8 '$(DESTDIR)$(MANDIR)/man8/.'
+
+INSTALL: ALL install date.1
+ mkdir -p '$(DESTDIR)$(BINDIR)' '$(DESTDIR)$(MANDIR)/man1'
+ cp date '$(DESTDIR)$(BINDIR)/.'
+ cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.'
+
+# Calculate version number from git, if available.
+# Otherwise, use $(VERSION) unless it is "unknown" and there is already
+# a 'version' file, in which case reuse the existing 'version' contents
+# and append "-dirty" if the contents do not already end in "-dirty".
+version: $(VERSION_DEPS)
+ { (type git) >/dev/null 2>&1 && \
+ V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \
+ --abbrev=7 --dirty` || \
+ if test '$(VERSION)' = unknown && V=`cat $@`; then \
+ case $$V in *-dirty);; *) V=$$V-dirty;; esac; \
+ else \
+ V='$(VERSION)'; \
+ fi; } && \
+ printf '%s\n' "$$V" >$@.out
+ mv $@.out $@
+
+# These files can be tailored by setting BACKWARD, PACKRATDATA, PACKRATLIST.
+vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS)
+ $(AWK) \
+ -v DATAFORM=`expr $@ : '\(.*\).zi'` \
+ -v PACKRATDATA='$(PACKRATDATA)' \
+ -v PACKRATLIST='$(PACKRATLIST)' \
+ -f ziguard.awk \
+ $(TDATA) $(PACKRATDATA) >$@.out
+ mv $@.out $@
+# This file has a version comment that attempts to capture any tailoring
+# via BACKWARD, DATAFORM, PACKRATDATA, PACKRATLIST, and REDO.
+tzdata.zi: $(DATAFORM).zi version zishrink.awk
+ version=`sed 1q version` && \
+ LC_ALL=C $(AWK) \
+ -v dataform='$(DATAFORM)' \
+ -v deps='$(DSTDATA_ZI_DEPS) zishrink.awk' \
+ -v redo='$(REDO)' \
+ -v version="$$version" \
+ -f zishrink.awk \
+ $(DATAFORM).zi >$@.out
+ mv $@.out $@
+
+version.h: version
+ VERSION=`cat version` && printf '%s\n' \
+ 'static char const PKGVERSION[]="($(PACKAGE)) ";' \
+ "static char const TZVERSION[]=\"$$VERSION\";" \
+ 'static char const REPORT_BUGS_TO[]="$(BUGEMAIL)";' \
+ >$@.out
+ mv $@.out $@
+
+zdump: $(TZDOBJS)
+ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZDOBJS) $(LDLIBS)
+
+zic: $(TZCOBJS)
+ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS)
+
+leapseconds: $(LEAP_DEPS)
+ $(AWK) -v EXPIRES_LINE=$(EXPIRES_LINE) \
+ -f leapseconds.awk leap-seconds.list >$@.out
+ mv $@.out $@
+
+# Arguments to pass to submakes of install_data.
+# They can be overridden by later submake arguments.
+INSTALLARGS = \
+ BACKWARD='$(BACKWARD)' \
+ DESTDIR='$(DESTDIR)' \
+ LEAPSECONDS='$(LEAPSECONDS)' \
+ PACKRATDATA='$(PACKRATDATA)' \
+ PACKRATLIST='$(PACKRATLIST)' \
+ TZDEFAULT='$(TZDEFAULT)' \
+ TZDIR='$(TZDIR)' \
+ ZIC='$(ZIC)'
+
+INSTALL_DATA_DEPS = zic leapseconds tzdata.zi
+
+# 'make install_data' installs one set of TZif files.
+install_data: $(INSTALL_DATA_DEPS)
+ $(ZIC_INSTALL) tzdata.zi
+
+posix_only: $(INSTALL_DATA_DEPS)
+ $(MAKE) $(INSTALLARGS) LEAPSECONDS= install_data
+
+right_only: $(INSTALL_DATA_DEPS)
+ $(MAKE) $(INSTALLARGS) LEAPSECONDS='-L leapseconds' \
+ install_data
+
+# In earlier versions of this makefile, the other two directories were
+# subdirectories of $(TZDIR). However, this led to configuration errors.
+# For example, with posix_right under the earlier scheme,
+# TZ='right/Australia/Adelaide' got you localtime with leap seconds,
+# but gmtime without leap seconds, which led to problems with applications
+# like sendmail that subtract gmtime from localtime.
+# Therefore, the other two directories are now siblings of $(TZDIR).
+# You must replace all of $(TZDIR) to switch from not using leap seconds
+# to using them, or vice versa.
+right_posix: right_only
+ rm -fr '$(DESTDIR)$(TZDIR)-leaps'
+ ln -s '$(TZDIR_BASENAME)' '$(DESTDIR)$(TZDIR)-leaps' || \
+ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only
+ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only
+
+posix_right: posix_only
+ rm -fr '$(DESTDIR)$(TZDIR)-posix'
+ ln -s '$(TZDIR_BASENAME)' '$(DESTDIR)$(TZDIR)-posix' || \
+ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only
+ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only
+
+zones: $(REDO)
+
+# dummy.zd is not a real file; it is mentioned here only so that the
+# top-level 'make' does not have a syntax error.
+ZDS = dummy.zd
+# Rule used only by submakes invoked by the $(TZS_NEW) rule.
+# It is separate so that GNU 'make -j' can run instances in parallel.
+$(ZDS): zdump
+ ./zdump -i $(TZS_CUTOFF_FLAG) '$(wd)/'$$(expr $@ : '\(.*\).zd') \
+ >$@
+
+TZS_NEW_DEPS = tzdata.zi zdump zic
+$(TZS_NEW): $(TZS_NEW_DEPS)
+ rm -fr tzs$(TZS_YEAR).dir
+ mkdir tzs$(TZS_YEAR).dir
+ $(zic) -d tzs$(TZS_YEAR).dir tzdata.zi
+ $(AWK) '/^L/{print "Link\t" $$2 "\t" $$3}' \
+ tzdata.zi | LC_ALL=C sort >$@.out
+ wd=`pwd` && \
+ x=`$(AWK) '/^Z/{print "tzs$(TZS_YEAR).dir/" $$2 ".zd"}' \
+ tzdata.zi \
+ | LC_ALL=C sort -t . -k 2,2` && \
+ set x $$x && \
+ shift && \
+ ZDS=$$* && \
+ $(MAKE) wd="$$wd" TZS_CUTOFF_FLAG="$(TZS_CUTOFF_FLAG)" \
+ ZDS="$$ZDS" $$ZDS && \
+ sed 's,^TZ=".*\.dir/,TZ=",' $$ZDS >>$@.out
+ rm -fr tzs$(TZS_YEAR).dir
+ mv $@.out $@
+
+# If $(TZS) exists but 'make check_tzs' fails, a maintainer should inspect the
+# failed output and fix the inconsistency, perhaps by running 'make force_tzs'.
+$(TZS):
+ touch $@
+
+force_tzs: $(TZS_NEW)
+ cp $(TZS_NEW) $(TZS)
+
+libtz.a: $(LIBOBJS)
+ rm -f $@
+ $(AR) -rc $@ $(LIBOBJS)
+ $(RANLIB) $@
+
+date: $(DATEOBJS)
+ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(DATEOBJS) $(LDLIBS)
+
+tzselect: tzselect.ksh version
+ VERSION=`cat version` && sed \
+ -e 's|#!/bin/bash|#!$(KSHELL)|g' \
+ -e 's|AWK=[^}]*|AWK='\''$(AWK)'\''|g' \
+ -e 's|\(PKGVERSION\)=.*|\1='\''($(PACKAGE)) '\''|' \
+ -e 's|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \
+ -e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
+ -e 's|\(TZVERSION\)=.*|\1='"$$VERSION"'|' \
+ <$@.ksh >$@.out
+ chmod +x $@.out
+ mv $@.out $@
+
+check: check_back check_mild
+check_mild: check_character_set check_white_space check_links \
+ check_name_lengths check_slashed_abbrs check_sorted \
+ check_tables check_web check_ziguard check_zishrink check_tzs
+
+check_character_set: $(ENCHILADA)
+ test ! '$(UTF8_LOCALE)' || \
+ ! printf 'A\304\200B\n' | \
+ LC_ALL='$(UTF8_LOCALE)' grep -q '^A.B$$' >/dev/null 2>&1 || { \
+ LC_ALL='$(UTF8_LOCALE)' && export LC_ALL && \
+ sharp='#' && \
+ ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \
+ $(MISC) $(SOURCES) $(WEB_PAGES) \
+ CONTRIBUTING LICENSE README SECURITY \
+ version tzdata.zi && \
+ ! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \
+ Makefile && \
+ ! grep -Env $(SAFE_SHARP_LINE) $(TDATA_TO_CHECK) backzone \
+ leapseconds zone.tab && \
+ ! grep -Env $(OK_LINE) $(ENCHILADA); \
+ }
+ touch $@
+
+check_white_space: $(ENCHILADA)
+ patfmt=' \t|[\f\r\v]' && pat=`printf "$$patfmt\\n"` && \
+ ! grep -En "$$pat" \
+ $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
+ ! grep -n '[$s]$$' \
+ $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
+ touch $@
+
+PRECEDES_FILE_NAME = ^(Zone|Link[$s]+[^$s]+)[$s]+
+FILE_NAME_COMPONENT_TOO_LONG = $(PRECEDES_FILE_NAME)[^$s]*[^/$s]{15}
+
+check_name_lengths: $(TDATA_TO_CHECK) backzone
+ ! grep -En '$(FILE_NAME_COMPONENT_TOO_LONG)' \
+ $(TDATA_TO_CHECK) backzone
+ touch $@
+
+PRECEDES_STDOFF = ^(Zone[$s]+[^$s]+)?[$s]+
+STDOFF = [-+]?[0-9:.]+
+RULELESS_SAVE = (-|$(STDOFF)[sd]?)
+RULELESS_SLASHED_ABBRS = \
+ $(PRECEDES_STDOFF)$(STDOFF)[$s]+$(RULELESS_SAVE)[$s]+[^$s]*/
+
+check_slashed_abbrs: $(TDATA_TO_CHECK)
+ ! grep -En '$(RULELESS_SLASHED_ABBRS)' $(TDATA_TO_CHECK)
+ touch $@
+
+CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
+
+check_sorted: backward backzone
+ $(AWK) '/^Link/ {printf "%.5d %s\n", g, $$3} !/./ {g++}' \
+ backward | LC_ALL=C sort -cu
+ $(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
+ touch $@
+
+check_back: checklinks.awk $(TDATA_TO_CHECK)
+ $(AWK) \
+ -v DATAFORM=$(DATAFORM) \
+ -v backcheck=backward \
+ -f checklinks.awk $(TDATA_TO_CHECK)
+ touch $@
+
+check_links: checklinks.awk tzdata.zi
+ $(AWK) \
+ -v DATAFORM=$(DATAFORM) \
+ -f checklinks.awk tzdata.zi
+ touch $@
+
+check_tables: checktab.awk $(YDATA) backward $(ZONETABLES)
+ for tab in $(ZONETABLES); do \
+ test "$$tab" = zone.tab && links='$(BACKWARD)' || links=''; \
+ $(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) $$links \
+ || exit; \
+ done
+ touch $@
+
+check_tzs: $(TZS) $(TZS_NEW)
+ if test -s $(TZS); then \
+ $(DIFF_TZS) $(TZS) $(TZS_NEW); \
+ else \
+ cp $(TZS_NEW) $(TZS); \
+ fi
+ touch $@
+
+check_web: $(CHECK_WEB_PAGES)
+check_theory.html: theory.html
+check_tz-art.html: tz-art.html
+check_tz-how-to.html: tz-how-to.html
+check_tz-link.html: tz-link.html
+check_theory.html check_tz-art.html check_tz-how-to.html check_tz-link.html:
+ $(CURL) -sS --url https://validator.w3.org/nu/ -F out=gnu \
+ -F file=@$$(expr $@ : 'check_\(.*\)') -o $@.out && \
+ test ! -s $@.out || { cat $@.out; exit 1; }
+ mv $@.out $@
+
+check_ziguard: rearguard.zi vanguard.zi ziguard.awk
+ $(AWK) -v DATAFORM=rearguard -f ziguard.awk vanguard.zi | \
+ diff -u rearguard.zi -
+ $(AWK) -v DATAFORM=vanguard -f ziguard.awk rearguard.zi | \
+ diff -u vanguard.zi -
+ touch $@
+
+# Check that zishrink.awk does not alter the data, and that ziguard.awk
+# preserves main-format data.
+check_zishrink: check_zishrink_posix check_zishrink_right
+check_zishrink_posix check_zishrink_right: \
+ zic leapseconds $(PACKRATDATA) $(PACKRATLIST) \
+ $(TDATA) $(DATAFORM).zi tzdata.zi
+ rm -fr $@.dir $@-t.dir $@-shrunk.dir
+ mkdir $@.dir $@-t.dir $@-shrunk.dir
+ case $@ in \
+ *_right) leap='-L leapseconds';; \
+ *) leap=;; \
+ esac && \
+ $(ZIC) $$leap -d $@.dir $(DATAFORM).zi && \
+ $(ZIC) $$leap -d $@-shrunk.dir tzdata.zi && \
+ case $(DATAFORM),$(PACKRATLIST) in \
+ main,) \
+ $(ZIC) $$leap -d $@-t.dir $(TDATA) && \
+ $(AWK) '/^Rule/' $(TDATA) | \
+ $(ZIC) $$leap -d $@-t.dir - $(PACKRATDATA) && \
+ diff -r $@.dir $@-t.dir;; \
+ esac
+ diff -r $@.dir $@-shrunk.dir
+ rm -fr $@.dir $@-t.dir $@-shrunk.dir
+ touch $@
+
+clean_misc:
+ rm -fr check_*.dir
+ rm -f *.o *.out $(TIME_T_ALTERNATIVES) \
+ check_* core typecheck_* \
+ date tzselect version.h zdump zic libtz.a
+clean: clean_misc
+ rm -fr *.dir tzdb-*/
+ rm -f *.zi $(TZS_NEW)
+
+maintainer-clean: clean
+ @echo 'This command is intended for maintainers to use; it'
+ @echo 'deletes files that may need special tools to rebuild.'
+ rm -f leapseconds version $(MANTXTS) $(TZS) *.asc *.tar.*
+
+names:
+ @echo $(ENCHILADA)
+
+public: check check_public $(CHECK_TIME_T_ALTERNATIVES) \
+ tarballs signatures
+
+date.1.txt: date.1
+newctime.3.txt: newctime.3
+newstrftime.3.txt: newstrftime.3
+newtzset.3.txt: newtzset.3
+time2posix.3.txt: time2posix.3
+tzfile.5.txt: tzfile.5
+tzselect.8.txt: tzselect.8
+zdump.8.txt: zdump.8
+zic.8.txt: zic.8
+
+$(MANTXTS): workman.sh
+ LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@.out
+ mv $@.out $@
+
+# Set file timestamps deterministically if possible,
+# so that tarballs containing the timestamps are reproducible.
+#
+# '$(SET_TIMESTAMP_N) N DEST A B C ...' sets the timestamp of the
+# file DEST to the maximum of the timestamps of the files A B C ...,
+# plus N if GNU ls and touch are available.
+SET_TIMESTAMP_N = sh -c '\
+ n=$$0 dest=$$1; shift; \
+ touch -cmr `ls -t "$$@" | sed 1q` "$$dest" && \
+ if test $$n != 0 && \
+ lsout=`ls -n --time-style="+%s" "$$dest" 2>/dev/null`; then \
+ set x $$lsout && \
+ touch -cmd @`expr $$7 + $$n` "$$dest"; \
+ else :; fi'
+# If DEST depends on A B C ... in this Makefile, callers should use
+# $(SET_TIMESTAMP_DEP) DEST A B C ..., for the benefit of any
+# downstream 'make' that considers equal timestamps to be out of date.
+# POSIX allows this 'make' behavior, and HP-UX 'make' does it.
+# If all that matters is that the timestamp be reproducible
+# and plausible, use $(SET_TIMESTAMP).
+SET_TIMESTAMP = $(SET_TIMESTAMP_N) 0
+SET_TIMESTAMP_DEP = $(SET_TIMESTAMP_N) 1
+
+# Set the timestamps to those of the git repository, if available,
+# and if the files have not changed since then.
+# This uses GNU 'ls --time-style=+%s', which outputs the seconds count,
+# and GNU 'touch -d@N FILE', where N is the number of seconds since 1970.
+# If git or GNU is absent, don't bother to sync with git timestamps.
+# Also, set the timestamp of each prebuilt file like 'leapseconds'
+# to be the maximum of the files it depends on.
+set-timestamps.out: $(EIGHT_YARDS)
+ rm -f $@
+ if (type git) >/dev/null 2>&1 && \
+ files=`git ls-files $(EIGHT_YARDS)` && \
+ touch -md @1 test.out; then \
+ rm -f test.out && \
+ for file in $$files; do \
+ if git diff --quiet $$file; then \
+ time=`git log -1 --format='tformat:%ct' $$file` && \
+ touch -cmd @$$time $$file; \
+ else \
+ echo >&2 "$$file: warning: does not match repository"; \
+ fi || exit; \
+ done; \
+ fi
+ $(SET_TIMESTAMP_DEP) leapseconds $(LEAP_DEPS)
+ for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \
+ $(SET_TIMESTAMP_DEP) $$file.txt $$file workman.sh || \
+ exit; \
+ done
+ $(SET_TIMESTAMP_DEP) version $(VERSION_DEPS)
+ $(SET_TIMESTAMP_DEP) tzdata.zi $(TZDATA_ZI_DEPS)
+ touch $@
+set-tzs-timestamp.out: $(TZS)
+ $(SET_TIMESTAMP_DEP) $(TZS) $(TZS_DEPS)
+ touch $@
+
+# The zics below ensure that each data file can stand on its own.
+# We also do an all-files run to catch links to links.
+
+check_public: $(VERSION_DEPS)
+ rm -fr public.dir
+ mkdir public.dir
+ ln $(VERSION_DEPS) public.dir
+ cd public.dir && $(MAKE) CFLAGS='$(GCC_DEBUG_FLAGS)' ALL
+ for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi \
+ public.dir/vanguard.zi public.dir/main.zi \
+ public.dir/rearguard.zi; \
+ do \
+ public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \
+ done
+ public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK)
+ :
+ : Also check 'backzone' syntax.
+ rm public.dir/main.zi
+ cd public.dir && $(MAKE) PACKRATDATA=backzone main.zi
+ public.dir/zic -d public.dir/zoneinfo main.zi
+ rm public.dir/main.zi
+ cd public.dir && \
+ $(MAKE) PACKRATDATA=backzone PACKRATLIST=zone.tab main.zi
+ public.dir/zic -d public.dir/zoneinfo main.zi
+ :
+ rm -fr public.dir
+ touch $@
+
+# Check that the code works under various alternative
+# implementations of time_t.
+check_time_t_alternatives: $(TIME_T_ALTERNATIVES)
+$(TIME_T_ALTERNATIVES_TAIL): $(TIME_T_ALTERNATIVES_HEAD)
+$(TIME_T_ALTERNATIVES): $(VERSION_DEPS)
+ rm -fr $@.dir
+ mkdir $@.dir
+ ln $(VERSION_DEPS) $@.dir
+ case $@ in \
+ int*32_t) range=-2147483648,2147483648;; \
+ u*) range=0,4294967296;; \
+ *) range=-4294967296,4294967296;; \
+ esac && \
+ wd=`pwd` && \
+ zones=`$(AWK) '/^[^#]/ { print $$3 }' <zone1970.tab` && \
+ if test $@ = $(TIME_T_ALTERNATIVES_HEAD); then \
+ range_target=; \
+ else \
+ range_target=to$$range.tzs; \
+ fi && \
+ (cd $@.dir && \
+ $(MAKE) TOPDIR="$$wd/$@.dir" \
+ CFLAGS='$(CFLAGS) -Dtime_tz='"'$@'" \
+ REDO='$(REDO)' \
+ D=$$wd/$@.dir \
+ TZS_YEAR="$$range" TZS_CUTOFF_FLAG="-t $$range" \
+ install $$range_target) && \
+ test $@ = $(TIME_T_ALTERNATIVES_HEAD) || { \
+ (cd $(TIME_T_ALTERNATIVES_HEAD).dir && \
+ $(MAKE) TOPDIR="$$wd/$@.dir" \
+ TZS_YEAR="$$range" TZS_CUTOFF_FLAG="-t $$range" \
+ D=$$wd/$@.dir \
+ to$$range.tzs) && \
+ $(DIFF_TZS) $(TIME_T_ALTERNATIVES_HEAD).dir/to$$range.tzs \
+ $@.dir/to$$range.tzs && \
+ if diff -q Makefile Makefile 2>/dev/null; then \
+ quiet_option='-q'; \
+ else \
+ quiet_option=''; \
+ fi && \
+ diff $$quiet_option -r $(TIME_T_ALTERNATIVES_HEAD).dir/etc \
+ $@.dir/etc && \
+ diff $$quiet_option -r \
+ $(TIME_T_ALTERNATIVES_HEAD).dir/usr/share \
+ $@.dir/usr/share; \
+ }
+ touch $@
+
+TRADITIONAL_ASC = \
+ tzcode$(VERSION).tar.gz.asc \
+ tzdata$(VERSION).tar.gz.asc
+REARGUARD_ASC = \
+ tzdata$(VERSION)-rearguard.tar.gz.asc
+ALL_ASC = $(TRADITIONAL_ASC) $(REARGUARD_ASC) \
+ tzdb-$(VERSION).tar.lz.asc
+
+tarballs rearguard_tarballs tailored_tarballs traditional_tarballs \
+signatures rearguard_signatures traditional_signatures: \
+ version set-timestamps.out rearguard.zi vanguard.zi
+ VERSION=`cat version` && \
+ $(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
+
+# These *_version rules are intended for use if VERSION is set by some
+# other means. Ordinarily these rules are used only by the above
+# non-_version rules, which set VERSION on the 'make' command line.
+tarballs_version: traditional_tarballs_version rearguard_tarballs_version \
+ tzdb-$(VERSION).tar.lz
+rearguard_tarballs_version: \
+ tzdata$(VERSION)-rearguard.tar.gz
+traditional_tarballs_version: \
+ tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
+tailored_tarballs_version: \
+ tzdata$(VERSION)-tailored.tar.gz
+signatures_version: $(ALL_ASC)
+rearguard_signatures_version: $(REARGUARD_ASC)
+traditional_signatures_version: $(TRADITIONAL_ASC)
+
+tzcode$(VERSION).tar.gz: set-timestamps.out
+ LC_ALL=C && export LC_ALL && \
+ tar $(TARFLAGS) -cf - \
+ $(COMMON) $(DOCS) $(SOURCES) | \
+ gzip $(GZIPFLAGS) >$@.out
+ mv $@.out $@
+
+tzdata$(VERSION).tar.gz: set-timestamps.out
+ LC_ALL=C && export LC_ALL && \
+ tar $(TARFLAGS) -cf - $(TZDATA_DIST) | \
+ gzip $(GZIPFLAGS) >$@.out
+ mv $@.out $@
+
+# Create empty files with a reproducible timestamp.
+CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00
+
+# The obsolescent *rearguard* targets and related macros are present
+# for backwards compatibility with tz releases 2018e through 2022a.
+# They should go away eventually. To build rearguard tarballs you
+# can instead use 'make DATAFORM=rearguard tailored_tarballs'.
+tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
+ rm -fr $@.dir
+ mkdir $@.dir
+ ln $(TZDATA_DIST) $@.dir
+ cd $@.dir && rm -f $(TDATA) $(PACKRATDATA) version
+ for f in $(TDATA) $(PACKRATDATA); do \
+ rearf=$@.dir/$$f; \
+ $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
+ $(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
+ done
+ sed '1s/$$/-rearguard/' <version >$@.dir/version
+ : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
+ $(CREATE_EMPTY) $@.dir/pacificnew
+ touch -cmr version $@.dir/version
+ LC_ALL=C && export LC_ALL && \
+ (cd $@.dir && \
+ tar $(TARFLAGS) -cf - \
+ $(TZDATA_DIST) pacificnew | \
+ gzip $(GZIPFLAGS)) >$@.out
+ mv $@.out $@
+
+# Create a tailored tarball suitable for TZUpdater and compatible tools.
+# For example, 'make DATAFORM=vanguard tailored_tarballs' makes a tarball
+# useful for testing whether TZUpdater supports vanguard form.
+# The generated tarball is not byte-for-byte equivalent to a hand-tailored
+# traditional tarball, as data entries are put into 'etcetera' even if they
+# came from some other source file. However, the effect should be the same
+# for ordinary use, which reads all the source files.
+tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out
+ rm -fr $@.dir
+ mkdir $@.dir
+ : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
+ cd $@.dir && \
+ $(CREATE_EMPTY) $(PRIMARY_YDATA) $(NDATA) backward \
+ `test $(DATAFORM) = vanguard || echo pacificnew`
+ (grep '^#' tzdata.zi && echo && cat $(DATAFORM).zi) \
+ >$@.dir/etcetera
+ touch -cmr tzdata.zi $@.dir/etcetera
+ sed -n \
+ -e '/^# *version *\(.*\)/h' \
+ -e '/^# *ddeps */H' \
+ -e '$$!d' \
+ -e 'g' \
+ -e 's/^# *version *//' \
+ -e 's/\n# *ddeps */-/' \
+ -e 's/ /-/g' \
+ -e 'p' \
+ <tzdata.zi >$@.dir/version
+ touch -cmr version $@.dir/version
+ links= && \
+ for file in $(TZDATA_DIST); do \
+ test -f $@.dir/$$file || links="$$links $$file"; \
+ done && \
+ ln $$links $@.dir
+ LC_ALL=C && export LC_ALL && \
+ (cd $@.dir && \
+ tar $(TARFLAGS) -cf - * | gzip $(GZIPFLAGS)) >$@.out
+ mv $@.out $@
+
+tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out
+ rm -fr tzdb-$(VERSION)
+ mkdir tzdb-$(VERSION)
+ ln $(ENCHILADA) tzdb-$(VERSION)
+ $(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/*
+ LC_ALL=C && export LC_ALL && \
+ tar $(TARFLAGS) -cf - tzdb-$(VERSION) | lzip -9 >$@.out
+ mv $@.out $@
+
+tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz
+tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz
+tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz
+tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz
+$(ALL_ASC):
+ $(GPG) --armor --detach-sign $?
+
+TYPECHECK_CFLAGS = $(CFLAGS) -DTYPECHECK -D__time_t_defined -D_TIME_T
+typecheck: typecheck_long_long typecheck_unsigned
+typecheck_long_long typecheck_unsigned: $(VERSION_DEPS)
+ rm -fr $@.dir
+ mkdir $@.dir
+ ln $(VERSION_DEPS) $@.dir
+ cd $@.dir && \
+ case $@ in \
+ *_long_long) i="long long";; \
+ *_unsigned ) i="unsigned" ;; \
+ esac && \
+ typecheck_cflags='' && \
+ $(MAKE) \
+ CFLAGS="$(TYPECHECK_CFLAGS) \"-Dtime_t=$$i\"" \
+ TOPDIR="`pwd`" \
+ install
+ $@.dir/zdump -i -c 1970,1971 Europe/Rome
+ touch $@
+
+zonenames: tzdata.zi
+ @$(AWK) '/^Z/ { print $$2 } /^L/ { print $$3 }' tzdata.zi
+
+asctime.o: private.h tzfile.h
+date.o: private.h
+difftime.o: private.h
+localtime.o: private.h tzfile.h
+strftime.o: private.h tzfile.h
+zdump.o: version.h
+zic.o: private.h tzfile.h version.h
+
+.PHONY: ALL INSTALL all
+.PHONY: check check_mild check_time_t_alternatives
+.PHONY: check_web check_zishrink
+.PHONY: clean clean_misc dummy.zd force_tzs
+.PHONY: install install_data maintainer-clean names
+.PHONY: posix_only posix_right public
+.PHONY: rearguard_signatures rearguard_signatures_version
+.PHONY: rearguard_tarballs rearguard_tarballs_version
+.PHONY: right_only right_posix signatures signatures_version
+.PHONY: tarballs tarballs_version
+.PHONY: traditional_signatures traditional_signatures_version
+.PHONY: traditional_tarballs traditional_tarballs_version
+.PHONY: tailored_tarballs tailored_tarballs_version
+.PHONY: typecheck
+.PHONY: zonenames zones
+.PHONY: $(ZDS)