patches/glibc/2.5.1/170-alpha-asm_elf.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
parent 665 313618c2c185
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@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