summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2013-06-21 08:15:50 (EDT)
committer P. J. McDermott <pjm@nac.net>2013-06-21 08:15:50 (EDT)
commit9e2ff2bf7c6ceb2aa90d05dc45b3a4354e48707a (patch)
tree1e5edd3bcad75cae6005601493ae2394e0841e34
parent8775dbba3c6c8d3018c76df3549f93e75979f88f (diff)
Add patches to configure the libc with any awk.
-rw-r--r--patches/03_accept-any-awk.patch57
-rw-r--r--patches/04_add-strtonum-to-conftest.patch127
2 files changed, 184 insertions, 0 deletions
diff --git a/patches/03_accept-any-awk.patch b/patches/03_accept-any-awk.patch
new file mode 100644
index 0000000..3b96b5c
--- /dev/null
+++ b/patches/03_accept-any-awk.patch
@@ -0,0 +1,57 @@
+From: "P. J. McDermott" <pjm@nac.net>
+Description: Accept any awk implementation
+ Use "AC_PROG_GREP" instead of "AC_CHECK_PROG_VER(AWK, gawk, ...)".
+
+diff -Naur src.orig/libc/configure src/libc/configure
+--- src.orig/libc/configure 2012-12-02 16:11:45.000000000 -0500
++++ src/libc/configure 2013-06-20 21:07:27.741343950 -0400
+@@ -5207,7 +5207,7 @@
+ SED=: aux_missing="$aux_missing sed"
+ fi
+
+-for ac_prog in gawk
++for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+@@ -5250,23 +5250,6 @@
+ 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-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
+
+diff -Naur src.orig/libc/configure.in src/libc/configure.in
+--- src.orig/libc/configure.in 2012-12-02 16:11:45.000000000 -0500
++++ src/libc/configure.in 2013-06-20 21:00:07.913300996 -0400
+@@ -982,9 +982,10 @@
+ [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-9].*], critic_missing="$critic_missing gawk")
++AC_PROG_AWK
++if test -z "$AWK"; then
++ critic_missing="$critic_missing gawk"
++fi
+
+ AC_CHECK_TOOL(NM, nm, false)
+
diff --git a/patches/04_add-strtonum-to-conftest.patch b/patches/04_add-strtonum-to-conftest.patch
new file mode 100644
index 0000000..fcdcd58
--- /dev/null
+++ b/patches/04_add-strtonum-to-conftest.patch
@@ -0,0 +1,127 @@
+From: "P. J. McDermott" <pjm@nac.net>
+Description: Add strtonum() to generated conftest.awk
+ conftest.awk uses the strtonum() function of GNU Awk to check for a linker that
+ supports the "-z relro" option.
+ .
+ This patch adds the pure awk implementation of strtonum() found in
+ awklib/eg/lib/strtonum.awk in GNU Awk to enable conftest.awk to run on other
+ awk implementations.
+
+diff -Naur src.orig/libc/configure src/libc/configure
+--- src.orig/libc/configure 2012-12-02 16:11:45.000000000 -0500
++++ src/libc/configure 2013-06-20 20:13:34.122952650 -0400
+@@ -6373,14 +6373,52 @@
+
+ _ACEOF
+ cat > conftest.awk <<\EOF
++# mystrtonum --- convert string to number
++# Arnold Robbins, arnold@skeeve.com, Public Domain
++# February, 2004
++function mystrtonum(str, ret, chars, n, i, k, c)
++{
++ if (str ~ /^0[0-7]*$/) {
++ # octal
++ n = length(str)
++ ret = 0
++ for (i = 1; i <= n; i++) {
++ c = substr(str, i, 1)
++ if ((k = index("01234567", c)) > 0)
++ k-- # adjust for 1-basing in awk
++ ret = ret * 8 + k
++ }
++ } else if (str ~ /^0[xX][[:xdigit:]]+/) {
++ # hexadecimal
++ str = substr(str, 3) # lop off leading 0x
++ n = length(str)
++ ret = 0
++ for (i = 1; i <= n; i++) {
++ c = substr(str, i, 1)
++ c = tolower(c)
++ if ((k = index("0123456789", c)) > 0)
++ k-- # adjust for 1-basing in awk
++ else if ((k = index("abcdef", c)) > 0)
++ k += 9
++ ret = ret * 16 + k
++ }
++ } else if (str ~ \
++ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/) {
++ # decimal number, possibly floating point
++ ret = str + 0
++ } else
++ ret = "NOT-A-NUMBER"
++
++ return ret
++}
+ BEGIN {
+ result = "no"
+- commonpagesize = strtonum(commonpagesize)
++ commonpagesize = mystrtonum(commonpagesize)
+ }
+ { print "LINE:", $0 > "/dev/stderr" }
+ $1 == "GNU_RELRO" {
+- vaddr = strtonum($3)
+- memsz = strtonum($6)
++ vaddr = mystrtonum($3)
++ memsz = mystrtonum($6)
+ end = vaddr + memsz
+ printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
+ vaddr, memsz, end, commonpagesize > "/dev/stderr"
+diff -Naur src.orig/libc/configure.in src/libc/configure.in
+--- src.orig/libc/configure.in 2012-12-02 16:11:45.000000000 -0500
++++ src/libc/configure.in 2013-06-20 20:13:42.351194464 -0400
+@@ -1474,14 +1474,52 @@
+ int data[0x10000] = { 1, };
+ ]])])
+ cat > conftest.awk <<\EOF
++# mystrtonum --- convert string to number
++# Arnold Robbins, arnold@skeeve.com, Public Domain
++# February, 2004
++function mystrtonum(str, ret, chars, n, i, k, c)
++{
++ if (str ~ /^0[0-7]*$/) {
++ # octal
++ n = length(str)
++ ret = 0
++ for (i = 1; i <= n; i++) {
++ c = substr(str, i, 1)
++ if ((k = index("01234567", c)) > 0)
++ k-- # adjust for 1-basing in awk
++ ret = ret * 8 + k
++ }
++ } else if (str ~ /^0[xX][[:xdigit:]]+/) {
++ # hexadecimal
++ str = substr(str, 3) # lop off leading 0x
++ n = length(str)
++ ret = 0
++ for (i = 1; i <= n; i++) {
++ c = substr(str, i, 1)
++ c = tolower(c)
++ if ((k = index("0123456789", c)) > 0)
++ k-- # adjust for 1-basing in awk
++ else if ((k = index("abcdef", c)) > 0)
++ k += 9
++ ret = ret * 16 + k
++ }
++ } else if (str ~ \
++ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/) {
++ # decimal number, possibly floating point
++ ret = str + 0
++ } else
++ ret = "NOT-A-NUMBER"
++
++ return ret
++}
+ BEGIN {
+ result = "no"
+- commonpagesize = strtonum(commonpagesize)
++ commonpagesize = mystrtonum(commonpagesize)
+ }
+ { print "LINE:", $0 > "/dev/stderr" }
+ $1 == "GNU_RELRO" {
+- vaddr = strtonum($3)
+- memsz = strtonum($6)
++ vaddr = mystrtonum($3)
++ memsz = mystrtonum($6)
+ end = vaddr + memsz
+ printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
+ vaddr, memsz, end, commonpagesize > "/dev/stderr"