This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: crosstool 0.26 for arm fail?


Dan Kegel wrote:
In file included from ../sysdeps/unix/sysv/linux/sys/sysctl.h:29,
from ../include/sys/sysctl.h:2,
from ../sysdeps/unix/sysv/linux/arm/ioperm.c:49:
/opt/crosstool/arm-unknown-linux-gnu/gcc-3.3.1-glibc-2.3.2/arm-unknown-linux-gnu/include/linux/sysctl.h:72: error: parse error before numeric constant
...
i remembered that i can get a workable arm chain by using
crosstool-0.24.

the patch patches/glibc-2.3.2/arm-ioperm.patch is said to be bogus. Try removing it.

(Also, the kernel headers for 2.4.21 (which you used)
and the kernel headers for 2.4.24 and later differ in that they
renamed BUS_ISA to CTL_BUS_ISA; who knows, maybe glibc
will need adjusting to match.  See e.g.
http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html)

Here's a possibly more correct replacement for the broken arm-ioperm.patch It's at http://kegel.com/crosstool/crosstool-0.27/patches/glibc-2.3.2/arm-ctl_bus_isa.patch Comments welcome. - Dan

--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old	2003-02-20 14:22:24.000000000 -0800
+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c	2004-01-31 16:01:50.000000000 -0800
@@ -47,6 +47,12 @@
 #include <asm/page.h>
 #include <sys/sysctl.h>

+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */
+#include <linux/version.h>
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23))
+#define CTL_BUS_ISA BUS_ISA	/* and hope it's not the one from linux/input.h */
+#endif
+
 #define PATH_ARM_SYSTYPE	"/etc/arm_systype"
 #define PATH_CPUINFO		"/proc/cpuinfo"

@@ -80,7 +86,7 @@
  * Initialize I/O system.  There are several ways to get the information
  * we need.  Each is tried in turn until one succeeds.
  *
- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*).  This is the preferred method
+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*).  This is the preferred method
  *    but not all kernels support it.
  *
  * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE.
@@ -100,8 +106,8 @@
 {
   char systype[256];
   int i, n;
-  static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
-  static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
+  static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
+  static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
   size_t len = sizeof(io.base);

if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]