From d72d7ed0480722727350c29b2dcd5a202d532c19 Mon Sep 17 00:00:00 2001
From: Stefan Liebler <stli@linux.vnet.ibm.com>
Date: Thu, 21 Apr 2016 12:42:48 +0200
Subject: [PATCH 02/14] S390: Mention s390-specific gconv-modues before common
ones.
This patch changes the order in gconv-modules. Now the s390-specific
modules are mentioned before the common ones, because these modules
aren't used in all possible conversions. E.g. the converting-step from
INTERNAL to UTF-16 used the common UTF-16.so module instead of
UTF16_UTF32_Z9.so.
The awk script is parsing the source gconv-modules file and copies it
line by line. The s390 modules are emitted between the header-comments
and the first common-code-module.
ChangeLog:
* sysdeps/s390/s390-64/Makefile ($(objpfx)gconv-modules-s390):
Mention s390-specific gconv-modules before common ones.
* sysdeps/s390/gconv-modules-s390.awk: New file.
---
sysdeps/s390/gconv-modules-s390.awk | 81 +++++++++++++++++++++++++++++++++++++
sysdeps/s390/s390-64/Makefile | 36 +----------------
2 files changed, 83 insertions(+), 34 deletions(-)
create mode 100644 sysdeps/s390/gconv-modules-s390.awk
new file mode 100644
@@ -0,0 +1,81 @@
+# Emit s390 modules at top of gconv-modules file.
+# Copyright (C) 2016 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
+# <http://www.gnu.org/licenses/>.
+
+BEGIN {
+ emitted = 0
+}
+
+emitted || NF == 0 || $1 ~ /^#/ {
+ print;
+ next;
+}
+
+!emitted {
+ emit_s390_modules();
+ emitted = 1;
+ print;
+}
+
+function emit_s390_modules() {
+ # Emit header line.
+ print "# S/390 hardware accelerated modules";
+ print_val("#", 8);
+ print_val("from", 24);
+ print_val("to", 24);
+ print_val("module", 24);
+ printf "cost\n";
+ # Emit s390-specific modules.
+ modul("ISO-8859-1//", "IBM037//", "ISO-8859-1_CP037_Z900");
+ modul("IBM037//", "ISO-8859-1//", "ISO-8859-1_CP037_Z900");
+ modul("ISO-10646/UTF8/", "UTF-32//", "UTF8_UTF32_Z9");
+ modul("UTF-32BE//", "ISO-10646/UTF8/", "UTF8_UTF32_Z9");
+ modul("ISO-10646/UTF8/", "UTF-32BE//", "UTF8_UTF32_Z9");
+ modul("UTF-16BE//", "UTF-32//", "UTF16_UTF32_Z9");
+ modul("UTF-32BE//", "UTF-16//", "UTF16_UTF32_Z9");
+ modul("INTERNAL", "UTF-16//", "UTF16_UTF32_Z9");
+ modul("UTF-32BE//", "UTF-16BE//", "UTF16_UTF32_Z9");
+ modul("INTERNAL", "UTF-16BE//", "UTF16_UTF32_Z9");
+ modul("UTF-16BE//", "UTF-32BE//", "UTF16_UTF32_Z9");
+ modul("UTF-16BE//", "INTERNAL", "UTF16_UTF32_Z9");
+ modul("UTF-16BE//", "ISO-10646/UTF8/", "UTF8_UTF16_Z9");
+ modul("ISO-10646/UTF8/", "UTF-16//", "UTF8_UTF16_Z9");
+ modul("ISO-10646/UTF8/", "UTF-16BE//", "UTF8_UTF16_Z9");
+ printf "\n# Default glibc modules\n";
+}
+
+function modul(from, to, file, cost) {
+ print_val("module", 8);
+ print_val(from, 24);
+ print_val(to, 24);
+ print_val(file, 24);
+ if (cost == 0) cost = 1;
+ printf "%d\n", cost;
+}
+
+function print_val(val, width) {
+ # Emit value followed by tabs.
+ printf "%s", val;
+ len = length(val);
+ if (len < width) {
+ len = width - len;
+ nr_tabs = len / 8;
+ if (len % 8 != 0) nr_tabs++;
+ }
+ else nr_tabs = 1;
+ for (i = 1; i <= nr_tabs; i++) printf "\t";
+}
@@ -39,40 +39,8 @@ $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules)) : \
$(inst_gconvdir)/%.so: $(objpfx)%.so $(+force)
$(do-install-program)
-$(objpfx)gconv-modules-s390: gconv-modules
- cp $< $@
- echo >> $@
- echo "# S/390 hardware accelerated modules" >> $@
- echo -n "module ISO-8859-1// IBM037// " >> $@
- echo " ISO-8859-1_CP037_Z900 1" >> $@
- echo -n "module IBM037// ISO-8859-1// " >> $@
- echo " ISO-8859-1_CP037_Z900 1" >> $@
- echo -n "module ISO-10646/UTF8/ UTF-32// " >> $@
- echo " UTF8_UTF32_Z9 1" >> $@
- echo -n "module UTF-32BE// ISO-10646/UTF8/ " >> $@
- echo " UTF8_UTF32_Z9 1" >> $@
- echo -n "module ISO-10646/UTF8/ UTF-32BE// " >> $@
- echo " UTF8_UTF32_Z9 1" >> $@
- echo -n "module UTF-16BE// UTF-32// " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module UTF-32BE// UTF-16// " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module INTERNAL UTF-16// " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module UTF-32BE// UTF-16BE// " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module INTERNAL UTF-16BE// " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module UTF-16BE// UTF-32BE// " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module UTF-16BE// INTERNAL " >> $@
- echo " UTF16_UTF32_Z9 1" >> $@
- echo -n "module UTF-16BE// ISO-10646/UTF8/ " >> $@
- echo " UTF8_UTF16_Z9 1" >> $@
- echo -n "module ISO-10646/UTF8/ UTF-16// " >> $@
- echo " UTF8_UTF16_Z9 1" >> $@
- echo -n "module ISO-10646/UTF8/ UTF-16BE// " >> $@
- echo " UTF8_UTF16_Z9 1" >> $@
+$(objpfx)gconv-modules-s390: ../sysdeps/s390/gconv-modules-s390.awk gconv-modules
+ ${AWK} -f $^ > $@
GCONV_MODULES = gconv-modules-s390
--
2.5.5