patches/glibc/2.6.1/200-alpha-asm_elf.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Jul 14 20:43:21 2008 +0000 (2008-07-14)
changeset 665 313618c2c185
permissions -rw-r--r--
Add a new patch to glibc to build for Alpha on recent Linux kernels.

/trunk/patches/glibc/2.5.1/260-alpha-asm_elf.patch | 194 194 0 0 ++++++++++++++++++++++++++++
/trunk/patches/glibc/2.5/260-alpha-asm_elf.patch | 194 194 0 0 ++++++++++++++++++++++++++++
/trunk/patches/glibc/2.6.1/200-alpha-asm_elf.patch | 194 194 0 0 ++++++++++++++++++++++++++++
/trunk/patches/glibc/2.6/200-alpha-asm_elf.patch | 194 194 0 0 ++++++++++++++++++++++++++++
/trunk/patches/glibc/2.3.6/270-alpha-asm_elf.patch | 194 194 0 0 ++++++++++++++++++++++++++++
/trunk/patches/glibc/2.7/220-alpha-asm_elf.patch | 194 194 0 0 ++++++++++++++++++++++++++++
6 files changed, 1164 insertions(+)
yann@665
     1
since the kernel no longer provides asm/elf.h, the sys/procfs.h from the 
yann@665
     2
common code, alpha, and sh fail when used.  this should things up.
yann@665
     3
-mike
yann@665
     4
yann@665
     5
2008-06-07  Mike Frysinger  <vapier@gentoo.org>
yann@665
     6
yann@665
     7
	* sysdeps/unix/sysv/linux/sys/procfs.h: Replace with #error stub.
yann@665
     8
	* sysdeps/unix/sysv/linux/alpha/sys/procfs.h: Copy some asm/elf.h
yann@665
     9
	definitions from the kernel header to sys/procfs.h and remove the
yann@665
    10
	#include of asm/elf.h.
yann@665
    11
	* sysdeps/unix/sysv/linux/sh/sys/procfs.h: Likewise.
yann@665
    12
yann@665
    13
*Attachment: signature.asc <msg00012/signature.asc>*
yann@665
    14
/Description:/ This is a digitally signed message part.
yann@665
    15
yann@665
    16
2008-06-07  Mike Frysinger  <vapier@gentoo.org>
yann@665
    17
yann@665
    18
	* sysdeps/unix/sysv/linux/sys/procfs.h: Replace with #error stub.
yann@665
    19
	* sysdeps/unix/sysv/linux/alpha/sys/procfs.h: Copy some asm/elf.h
yann@665
    20
	definitions from the kernel header to sys/procfs.h and remove the
yann@665
    21
	#include of asm/elf.h.
yann@665
    22
	* sysdeps/unix/sysv/linux/sh/sys/procfs.h: Likewise.
yann@665
    23
yann@665
    24
--- a/sysdeps/unix/sysv/linux/alpha/sys/procfs.h
yann@665
    25
+++ b/sysdeps/unix/sysv/linux/alpha/sys/procfs.h
yann@665
    26
@@ -29,10 +29,23 @@
yann@665
    27
 #include <sys/types.h>
yann@665
    28
 #include <sys/ucontext.h>
yann@665
    29
 #include <sys/user.h>
yann@665
    30
-#include <asm/elf.h>
yann@665
    31
 
yann@665
    32
 __BEGIN_DECLS
yann@665
    33
 
yann@665
    34
+/*
yann@665
    35
+ * The OSF/1 version of <sys/procfs.h> makes gregset_t 46 entries long.
yann@665
    36
+ * I have no idea why that is so.  For now, we just leave it at 33
yann@665
    37
+ * (32 general regs + processor status word).
yann@665
    38
+ */
yann@665
    39
+#define ELF_NGREG  33
yann@665
    40
+#define ELF_NFPREG 32
yann@665
    41
+
yann@665
    42
+typedef unsigned long elf_greg_t;
yann@665
    43
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
yann@665
    44
+
yann@665
    45
+typedef double elf_fpreg_t;
yann@665
    46
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
yann@665
    47
+
yann@665
    48
 struct elf_siginfo
yann@665
    49
   {
yann@665
    50
     int si_signo;			/* Signal number.  */
yann@665
    51
--- a/sysdeps/unix/sysv/linux/sh/sys/procfs.h
yann@665
    52
+++ b/sysdeps/unix/sysv/linux/sh/sys/procfs.h
yann@665
    53
@@ -29,10 +29,19 @@
yann@665
    54
 #include <sys/types.h>
yann@665
    55
 #include <sys/ucontext.h>
yann@665
    56
 #include <sys/user.h>
yann@665
    57
-#include <asm/elf.h>
yann@665
    58
 
yann@665
    59
 __BEGIN_DECLS
yann@665
    60
 
yann@665
    61
+/*
yann@665
    62
+ * ELF register definitions...
yann@665
    63
+ */
yann@665
    64
+typedef unsigned long elf_greg_t;
yann@665
    65
+
yann@665
    66
+#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
yann@665
    67
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
yann@665
    68
+
yann@665
    69
+typedef struct user_fpu_struct elf_fpregset_t;
yann@665
    70
+
yann@665
    71
 struct elf_siginfo
yann@665
    72
   {
yann@665
    73
     int si_signo;			/* Signal number.  */
yann@665
    74
--- a/sysdeps/unix/sysv/linux/sys/procfs.h
yann@665
    75
+++ b/sysdeps/unix/sysv/linux/sys/procfs.h
yann@665
    76
@@ -1,115 +1,2 @@
yann@665
    77
-/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
yann@665
    78
-   This file is part of the GNU C Library.
yann@665
    79
-
yann@665
    80
-   The GNU C Library is free software; you can redistribute it and/or
yann@665
    81
-   modify it under the terms of the GNU Lesser General Public
yann@665
    82
-   License as published by the Free Software Foundation; either
yann@665
    83
-   version 2.1 of the License, or (at your option) any later version.
yann@665
    84
-
yann@665
    85
-   The GNU C Library is distributed in the hope that it will be useful,
yann@665
    86
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
yann@665
    87
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
yann@665
    88
-   Lesser General Public License for more details.
yann@665
    89
-
yann@665
    90
-   You should have received a copy of the GNU Lesser General Public
yann@665
    91
-   License along with the GNU C Library; if not, write to the Free
yann@665
    92
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@665
    93
-   02111-1307 USA.  */
yann@665
    94
-
yann@665
    95
-#ifndef _SYS_PROCFS_H
yann@665
    96
-#define _SYS_PROCFS_H	1
yann@665
    97
-
yann@665
    98
-/* This is somehow modelled after the file of the same name on SysVr4
yann@665
    99
-   systems.  It provides a definition of the core file format for ELF
yann@665
   100
-   used on Linux.  */
yann@665
   101
-
yann@665
   102
-#include <features.h>
yann@665
   103
-#include <signal.h>
yann@665
   104
-#include <sys/time.h>
yann@665
   105
-#include <sys/types.h>
yann@665
   106
-#include <sys/ucontext.h>
yann@665
   107
-#include <sys/user.h>
yann@665
   108
-#include <asm/elf.h>
yann@665
   109
-
yann@665
   110
-__BEGIN_DECLS
yann@665
   111
-
yann@665
   112
-struct elf_siginfo
yann@665
   113
-  {
yann@665
   114
-    int si_signo;			/* Signal number.  */
yann@665
   115
-    int si_code;			/* Extra code.  */
yann@665
   116
-    int si_errno;			/* Errno.  */
yann@665
   117
-  };
yann@665
   118
-
yann@665
   119
-/* Definitions to generate Intel SVR4-like core files.  These mostly
yann@665
   120
-   have the same names as the SVR4 types with "elf_" tacked on the
yann@665
   121
-   front to prevent clashes with linux definitions, and the typedef
yann@665
   122
-   forms have been avoided.  This is mostly like the SVR4 structure,
yann@665
   123
-   but more Linuxy, with things that Linux does not support and which
yann@665
   124
-   gdb doesn't really use excluded.  Fields present but not used are
yann@665
   125
-   marked with "XXX".  */
yann@665
   126
-struct elf_prstatus
yann@665
   127
-  {
yann@665
   128
-#if 0
yann@665
   129
-    long int pr_flags;			/* XXX Process flags.  */
yann@665
   130
-    short int pr_why;			/* XXX Reason for process halt.  */
yann@665
   131
-    short int pr_what;			/* XXX More detailed reason.  */
yann@665
   132
-#endif
yann@665
   133
-    struct elf_siginfo pr_info;		/* Info associated with signal.  */
yann@665
   134
-    short int pr_cursig;		/* Current signal.  */
yann@665
   135
-    unsigned long int pr_sigpend;	/* Set of pending signals.  */
yann@665
   136
-    unsigned long int pr_sighold;	/* Set of held signals.  */
yann@665
   137
-#if 0
yann@665
   138
-    struct sigaltstack pr_altstack;	/* Alternate stack info.  */
yann@665
   139
-    struct sigaction pr_action;		/* Signal action for current sig.  */
yann@665
   140
-#endif
yann@665
   141
-    __pid_t pr_pid;
yann@665
   142
-    __pid_t pr_ppid;
yann@665
   143
-    __pid_t pr_pgrp;
yann@665
   144
-    __pid_t pr_sid;
yann@665
   145
-    struct timeval pr_utime;		/* User time.  */
yann@665
   146
-    struct timeval pr_stime;		/* System time.  */
yann@665
   147
-    struct timeval pr_cutime;		/* Cumulative user time.  */
yann@665
   148
-    struct timeval pr_cstime;		/* Cumulative system time.  */
yann@665
   149
-#if 0
yann@665
   150
-    long int pr_instr;			/* Current instruction.  */
yann@665
   151
-#endif
yann@665
   152
-    elf_gregset_t pr_reg;		/* GP registers.  */
yann@665
   153
-    int pr_fpvalid;			/* True if math copro being used.  */
yann@665
   154
-  };
yann@665
   155
-
yann@665
   156
-
yann@665
   157
-#define ELF_PRARGSZ     (80)    /* Number of chars for args */
yann@665
   158
-
yann@665
   159
-struct elf_prpsinfo
yann@665
   160
-  {
yann@665
   161
-    char pr_state;			/* Numeric process state.  */
yann@665
   162
-    char pr_sname;			/* Char for pr_state.  */
yann@665
   163
-    char pr_zomb;			/* Zombie.  */
yann@665
   164
-    char pr_nice;			/* Nice val.  */
yann@665
   165
-    unsigned long int pr_flag;		/* Flags.  */
yann@665
   166
-    unsigned short int pr_uid;
yann@665
   167
-    unsigned short int pr_gid;
yann@665
   168
-    int pr_pid, pr_ppid, pr_pgrp, pr_sid;
yann@665
   169
-    /* Lots missing */
yann@665
   170
-    char pr_fname[16];			/* Filename of executable.  */
yann@665
   171
-    char pr_psargs[ELF_PRARGSZ];	/* Initial part of arg list.  */
yann@665
   172
-  };
yann@665
   173
-
yann@665
   174
-/* Addresses.  */
yann@665
   175
-typedef void *psaddr_t;
yann@665
   176
-
yann@665
   177
-/* Register sets.  Linux has different names.  */
yann@665
   178
-typedef gregset_t prgregset_t;
yann@665
   179
-typedef fpregset_t prfpregset_t;
yann@665
   180
-
yann@665
   181
-/* We don't have any differences between processes and threads,
yann@665
   182
-   therefore habe only ine PID type.  */
yann@665
   183
-typedef __pid_t lwpid_t;
yann@665
   184
-
yann@665
   185
-
yann@665
   186
-typedef struct elf_prstatus prstatus_t;
yann@665
   187
-typedef struct elf_prpsinfo prpsinfo_t;
yann@665
   188
-
yann@665
   189
-__END_DECLS
yann@665
   190
-
yann@665
   191
-#endif	/* sys/procfs.h */
yann@665
   192
+/* sys/procfs.h is architecture specific.  */
yann@665
   193
+#error "This file must be supplied by every Linux architecture."
yann@665
   194