patches/glibc/2.7/270-sh-fix-procfs.patch
author Johannes Stezenbach <js@sig21.net>
Thu Jul 29 19:47:16 2010 +0200 (2010-07-29)
changeset 2045 fdaa6c7f6dea
parent 962 2ba4393e0441
permissions -rw-r--r--
cc/gcc: add option to compile against static libstdc++, for gcc-4.4 and newer

Idea and know-how taken from CodeSourcery build script.

Normal build:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb77f3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76e8000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75a1000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb757a000)
/lib/ld-linux.so.2 (0xb77f4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb755c000)

CC_STATIC_LIBSTDCXX=y:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb7843000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb76e6000)
/lib/ld-linux.so.2 (0xb7844000)

I made CC_STATIC_LIBSTDCXX default=y since I think
it is always desirable.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
yann@969
     1
diff -durN glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/procfs.h
yann@969
     2
--- glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h	2004-11-20 18:56:16.000000000 +0100
yann@969
     3
+++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/procfs.h	2008-10-24 11:21:15.000000000 +0200
yann@969
     4
@@ -29,10 +29,32 @@
yann@962
     5
 #include <sys/types.h>
yann@962
     6
 #include <sys/ucontext.h>
yann@962
     7
 #include <sys/user.h>
yann@962
     8
-#include <asm/elf.h>
yann@969
     9
 
yann@962
    10
 __BEGIN_DECLS
yann@969
    11
 
yann@969
    12
+/* BEGIN - UGLY HACK - YEM
yann@969
    13
+ * These definitions are copied from the Alpha file,
yann@969
    14
+ * and the register numbers are set accordingly to
yann@969
    15
+ * what I could find in the Linux kernel sources
yann@969
    16
+ * Highly dubious !!!!
yann@969
    17
+ * BIG FAT WARNING !!!
yann@969
    18
+ */
yann@969
    19
+
yann@969
    20
+/* Linux kernel says 16 (standards?) registers */
yann@969
    21
+#define ELF_NGREG  16
yann@969
    22
+/* Linux kernel says 16 floating point registers */
yann@969
    23
+#define ELF_NFPREG 16
yann@969
    24
+
yann@969
    25
+/* Copied from Alpha as is */
yann@969
    26
+typedef unsigned long elf_greg_t;
yann@969
    27
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
yann@969
    28
+
yann@969
    29
+/* Ditto */
yann@969
    30
+typedef double elf_fpreg_t;
yann@969
    31
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
yann@969
    32
+
yann@969
    33
+/* END - UGLY HACK - YEM */
yann@969
    34
+
yann@969
    35
 struct elf_siginfo
yann@969
    36
   {
yann@969
    37
     int si_signo;			/* Signal number.  */