patches/glibc/2.3.6/100-arm-ctl_bus_isa.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
yann@402
     1
Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004.
yann@402
     2
Needed to build glibc with linux kernels 2.4.23 or higher on ARM, 
yann@402
     3
Fixes following error:
yann@402
     4
yann@402
     5
../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys':
yann@402
     6
../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function)
yann@402
     7
../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once
yann@402
     8
../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.)
yann@402
     9
../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant
yann@402
    10
../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]')
yann@402
    11
../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant
yann@402
    12
../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]')
yann@402
    13
make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1
yann@402
    14
yann@402
    15
cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA",  http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html
yann@402
    16
yann@402
    17
--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old	2003-02-20 14:22:24.000000000 -0800
yann@402
    18
+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c	2004-01-31 16:01:50.000000000 -0800
yann@402
    19
@@ -47,6 +47,12 @@
yann@402
    20
 #include <asm/page.h>
yann@402
    21
 #include <sys/sysctl.h>
yann@402
    22
 
yann@402
    23
+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */
yann@402
    24
+#include <linux/version.h>
yann@402
    25
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23))
yann@402
    26
+#define CTL_BUS_ISA BUS_ISA	/* and hope it's not the one from linux/input.h */
yann@402
    27
+#endif
yann@402
    28
+
yann@402
    29
 #define PATH_ARM_SYSTYPE	"/etc/arm_systype"
yann@402
    30
 #define PATH_CPUINFO		"/proc/cpuinfo"
yann@402
    31
 
yann@402
    32
@@ -80,7 +86,7 @@
yann@402
    33
  * Initialize I/O system.  There are several ways to get the information
yann@402
    34
  * we need.  Each is tried in turn until one succeeds.
yann@402
    35
  *
yann@402
    36
- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*).  This is the preferred method
yann@402
    37
+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*).  This is the preferred method
yann@402
    38
  *    but not all kernels support it.
yann@402
    39
  *
yann@402
    40
  * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE.
yann@402
    41
@@ -100,8 +106,8 @@
yann@402
    42
 {
yann@402
    43
   char systype[256];
yann@402
    44
   int i, n;
yann@402
    45
-  static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
yann@402
    46
-  static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
yann@402
    47
+  static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
yann@402
    48
+  static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
yann@402
    49
   size_t len = sizeof(io.base);
yann@402
    50
 
yann@402
    51
   if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
yann@402
    52
yann@402
    53
Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>