public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/6469: 3.1 ICE no register to spill in glibc 2.2.5 >-fschedule-insns
@ 2002-04-25 22:16 tmwg-gcc
0 siblings, 0 replies; only message in thread
From: tmwg-gcc @ 2002-04-25 22:16 UTC (permalink / raw)
To: gcc-gnats
>Number: 6469
>Category: c
>Synopsis: 3.1 ICE no register to spill in glibc 2.2.5 >-fschedule-insns
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-illegal-code
>Submitter-Id: net
>Arrival-Date: Thu Apr 25 22:16:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Phil Blecker
>Release: 3.0.99.11 20020425 (prerelease) (3.1 CVS, version renamed)
>Organization:
inX Services
>Environment:
System: Linux mwg 2.4.19-pre5ac1N #1 Mon Apr 22 08:44:58 PDT 2002 i686 unknown
Architecture: i686
host: i686-inX-linux
build: i686-inX-linux
target: i686-inX-linux
configured with: ../configure --prefix=/usr --exec-prefix=/usr --datadir=/usr/lib --includedir=/usr/local/include --with-gnu-ld --with-gnu-as --with-local-prefix=/usr/local --with-gxx-include-dir=/usr/include/c++3.1 --with-cpp-install-dir=/lib --disable-c-mbchar --enable-threads=posix --with-dwarf2 --enable-shared --disable-nls --with-system-zlib --enable-version-specific-runtime-libs --with-slibdir=/lib --enable-fast-character --enable-interpreter --with-x --enable-clocale=gnu --disable-c-mbchar --enable-c99 --enable-long-long --enable-cheaders=c_std --enable-cxx-flags="-march=i686 -pipe -O2 -fomit-frame-pointer -momit-leaf-frame-pointer -frename-registers -fexpensive-optimizations -fschedule-insns -fschedule-insns2 -malign-stringops -fno-keep-static-consts -fno-keep-inline-functions -fdata-sections -ffunction-sections" --enable-languages=c,c++,gcov,proto --verbose --host=i686-inX-linux --build=i686-inX-linux --target=i686-inX-linux
>Description:
gcc des_impl.c -c -O2 -Wall -Winline -Wstrict-prototypes -Wwrite-strings -fexpensive-optimizations -frename-registers -fschedule-insns -fschedule-insns2 -fstrict-aliasing -g -march=i586 -pipe -fPIC -I../include -I. -I/usr/src/devel/glibc/linux5/sunrpc -I.. -I../libio -I/usr/src/devel/glibc/linux5 -I../sysdeps/i386/elf -I../linuxthreads/sysdeps/unix/sysv/linux/i386 -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/i386/i586 -I../linuxthreads/sysdeps/i386 -I../sysdeps/unix/sysv/linux/i386 -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv/i386 -I../sysdeps/unix/sysv -I../sysdeps/unix/i386 -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/i386/i586 -I../sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /usr/lib/gcc/i686-inX-linux/3.0.99.11/include -isystem /usr/src/linux/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DSHARED -D_RPC_THREAD_SAFE_ -o /usr/src/devel/glibc/linux5/sunrpc/des_impl.os
des_impl.c: In function `_des_crypt':
des_impl.c:615: unable to find a register to spill in class `Q_REGS'
des_impl.c:615: this is the insn:
(insn 176 285 181 (parallel[
(set (reg:SI 111)
(zero_extend:SI (mem:QI (reg/v/f:SI 5 edi [68]) [0 S1 A8])))
(clobber (reg:CC 17 flags))
] ) 112 {*zero_extendqisi2_and} (insn_list 170 (nil))
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))
des_impl.c:615: confused by earlier errors, bailing out
>How-To-Repeat:
# 1 "des_impl.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../include/libc-symbols.h" 1
# 54 "../include/libc-symbols.h"
# 1 "/usr/src/devel/glibc/linux5/config.h" 1
# 55 "../include/libc-symbols.h" 2
# 2 "<command line>" 2
# 1 "des_impl.c"
# 1 "../include/string.h" 1
# 1 "../include/sys/types.h" 1
# 1 "../posix/sys/types.h" 1
# 26 "../posix/sys/types.h"
# 1 "../include/features.h" 1
# 283 "../include/features.h"
# 1 "../include/sys/cdefs.h" 1
# 1 "../misc/sys/cdefs.h" 1
# 2 "../include/sys/cdefs.h" 2
# 284 "../include/features.h" 2
# 27 "../posix/sys/types.h" 2
# 1 "../sysdeps/unix/sysv/linux/bits/types.h" 1
# 29 "../sysdeps/unix/sysv/linux/bits/types.h"
# 1 "/usr/lib/gcc/i686-inX-linux/3.0.99.11/include/stddef.h" 1 3
# 201 "/usr/lib/gcc/i686-inX-linux/3.0.99.11/include/stddef.h" 3
typedef unsigned int size_t;
# 30 "../sysdeps/unix/sysv/linux/bits/types.h" 2
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "../sysdeps/unix/sysv/linux/bits/types.h"
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
typedef __quad_t *__qaddr_t;
typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;
typedef struct
{
int __val[2];
} __fsid_t;
typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;
typedef long int __clock_t;
typedef int __clockid_t;
typedef int __timer_t;
typedef int __key_t;
typedef unsigned short int __ipc_pid_t;
typedef long int __blksize_t;
typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;
typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;
typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;
typedef __u_quad_t __ino64_t;
typedef __loff_t __off64_t;
typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;
typedef int __intptr_t;
typedef unsigned int __socklen_t;
# 1 "../linuxthreads/sysdeps/pthread/bits/pthreadtypes.h" 1
# 23 "../linuxthreads/sysdeps/pthread/bits/pthreadtypes.h"
# 1 "../sysdeps/unix/sysv/linux/bits/sched.h" 1
# 68 "../sysdeps/unix/sysv/linux/bits/sched.h"
struct __sched_param
{
int __sched_priority;
};
# 24 "../linuxthreads/sysdeps/pthread/bits/pthreadtypes.h" 2
struct _pthread_fastlock
{
long int __status;
int __spinlock;
};
typedef struct _pthread_descr_struct *_pthread_descr;
typedef struct __pthread_attr_s
{
int __detachstate;
int __schedpolicy;
struct __sched_param __schedparam;
int __inheritsched;
int __scope;
size_t __guardsize;
int __stackaddr_set;
void *__stackaddr;
size_t __stacksize;
} pthread_attr_t;
typedef struct
{
struct _pthread_fastlock __c_lock;
_pthread_descr __c_waiting;
} pthread_cond_t;
typedef struct
{
int __dummy;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef struct
{
int __m_reserved;
int __m_count;
_pthread_descr __m_owner;
int __m_kind;
struct _pthread_fastlock __m_lock;
} pthread_mutex_t;
typedef struct
{
int __mutexkind;
} pthread_mutexattr_t;
typedef int pthread_once_t;
typedef struct _pthread_rwlock_t
{
struct _pthread_fastlock __rw_lock;
int __rw_readers;
_pthread_descr __rw_writer;
_pthread_descr __rw_read_waiting;
_pthread_descr __rw_write_waiting;
int __rw_kind;
int __rw_pshared;
} pthread_rwlock_t;
typedef struct
{
int __lockkind;
int __pshared;
} pthread_rwlockattr_t;
typedef volatile int pthread_spinlock_t;
typedef struct {
struct _pthread_fastlock __ba_lock;
int __ba_required;
int __ba_present;
_pthread_descr __ba_waiting;
} pthread_barrier_t;
typedef struct {
int __pshared;
} pthread_barrierattr_t;
typedef unsigned long int pthread_t;
# 144 "../sysdeps/unix/sysv/linux/bits/types.h" 2
# 31 "../posix/sys/types.h" 2
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
typedef __ino64_t ino64_t;
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off_t off_t;
typedef __off64_t off64_t;
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
# 132 "../posix/sys/types.h"
# 1 "../include/time.h" 1
# 1 "../time/time.h" 1
# 59 "../time/time.h"
typedef __clock_t clock_t;
# 70 "../time/time.h"
typedef __time_t time_t;
# 82 "../time/time.h"
typedef __clockid_t clockid_t;
# 94 "../time/time.h"
typedef __timer_t timer_t;
# 4 "../include/time.h" 2
# 133 "../posix/sys/types.h" 2
typedef __useconds_t useconds_t;
typedef __suseconds_t suseconds_t;
# 1 "/usr/lib/gcc/i686-inX-linux/3.0.99.11/include/stddef.h" 1 3
# 147 "../posix/sys/types.h" 2
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 190 "../posix/sys/types.h"
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
typedef int register_t __attribute__ ((__mode__ (__word__)));
# 212 "../posix/sys/types.h"
# 1 "../include/endian.h" 1
# 1 "../string/endian.h" 1
# 37 "../string/endian.h"
# 1 "../sysdeps/i386/bits/endian.h" 1
# 38 "../string/endian.h" 2
# 2 "../include/endian.h" 2
# 213 "../posix/sys/types.h" 2
# 1 "../include/sys/select.h" 1
# 1 "../misc/sys/select.h" 1
# 31 "../misc/sys/select.h"
# 1 "../sysdeps/i386/bits/select.h" 1
# 32 "../misc/sys/select.h" 2
# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
# 23 "../sysdeps/unix/sysv/linux/bits/sigset.h"
typedef int __sig_atomic_t;
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 35 "../misc/sys/select.h" 2
typedef __sigset_t sigset_t;
# 1 "../include/time.h" 1
# 1 "../time/time.h" 1
# 106 "../time/time.h"
struct timespec
{
__time_t tv_sec;
long int tv_nsec;
};
# 4 "../include/time.h" 2
# 45 "../misc/sys/select.h" 2
# 1 "../sysdeps/unix/sysv/linux/i386/bits/time.h" 1
# 67 "../sysdeps/unix/sysv/linux/i386/bits/time.h"
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
# 47 "../misc/sys/select.h" 2
# 55 "../misc/sys/select.h"
typedef long int __fd_mask;
typedef struct
{
__fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
} fd_set;
typedef __fd_mask fd_mask;
# 95 "../misc/sys/select.h"
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout) ;
extern int pselect (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
const struct timespec *__restrict __timeout,
const __sigset_t *__restrict __sigmask) ;
# 3 "../include/sys/select.h" 2
extern int __pselect (int __nfds, fd_set *__readfds,
fd_set *__writefds, fd_set *__exceptfds,
const struct timespec *__timeout,
const __sigset_t *__sigmask);
extern int __select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout);
# 216 "../posix/sys/types.h" 2
# 1 "../sysdeps/unix/sysv/linux/sys/sysmacros.h" 1
# 219 "../posix/sys/types.h" 2
typedef __blksize_t blksize_t;
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 257 "../posix/sys/types.h"
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;
# 2 "../include/sys/types.h" 2
# 4 "../include/string.h" 2
extern void *__memccpy (void *__dest, __const void *__src,
int __c, size_t __n);
extern size_t __strnlen (__const char *__string, size_t __maxlen)
__attribute__ ((__pure__));
extern char *__strsep (char **__stringp, __const char *__delim);
extern int __strverscmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int __strncasecmp (__const char *__s1, __const char *__s2,
size_t __n)
__attribute__ ((__pure__));
extern int __strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern char *__strcasestr (__const char *__haystack, __const char *__needle)
__attribute__ ((__pure__));
extern char *__strdup (__const char *__string)
__attribute__ ((__malloc__));
extern char *__strndup (__const char *__string, size_t __n)
__attribute__ ((__malloc__));
extern void *__rawmemchr (__const void *__s, int __c)
__attribute__ ((__pure__));
extern char *__strchrnul (__const char *__s, int __c)
__attribute__ ((__pure__));
extern void *__memrchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
extern void *__memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
extern int __ffs (int __i) __attribute__ ((const));
extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
# 1 "../string/string.h" 1
# 28 "../string/string.h"
# 1 "/usr/lib/gcc/i686-inX-linux/3.0.99.11/include/stddef.h" 1 3
# 34 "../string/string.h" 2
extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern void *memmove (void *__dest, __const void *__src, size_t __n)
;
extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
int __c, size_t __n)
;
extern void *memset (void *__s, int __c, size_t __n) ;
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__pure__));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
extern void *rawmemchr (__const void *__s, int __c) __attribute__ ((__pure__));
extern void *memrchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
;
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern size_t strlcpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
;
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) ;
extern size_t strlcat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) ;
extern int strcmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__pure__));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
# 1 "../include/xlocale.h" 1
# 1 "../locale/xlocale.h" 1
# 28 "../locale/xlocale.h"
typedef struct __locale_struct
{
struct locale_data *__locales[13];
const unsigned short int *__ctype_b;
const int *__ctype_tolower;
const int *__ctype_toupper;
} *__locale_t;
# 2 "../include/xlocale.h" 2
# 115 "../string/string.h" 2
extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
__attribute__ ((__pure__));
extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n,
__locale_t __l) ;
extern char *strdup (__const char *__s) __attribute__ ((__malloc__));
extern char *strndup (__const char *__string, size_t __n)
__attribute__ ((__malloc__));
# 161 "../string/string.h"
extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *strchrnul (__const char *__s, int __c) __attribute__ ((__pure__));
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__pure__));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__pure__));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__pure__));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__pure__));
extern char *strcasestr (__const char *__haystack, __const char *__needle)
__attribute__ ((__pure__));
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
;
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr) ;
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr) ;
extern void *memmem (__const void *__haystack, size_t __haystacklen,
__const void *__needle, size_t __needlelen)
__attribute__ ((__pure__));
extern void *__mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern void *mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern size_t strlen (__const char *__s) __attribute__ ((__pure__));
extern size_t strnlen (__const char *__string, size_t __maxlen)
__attribute__ ((__pure__));
extern char *strerror (int __errnum) ;
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern void __bzero (void *__s, size_t __n) ;
extern void bcopy (__const void *__src, void *__dest, size_t __n) ;
extern void bzero (void *__s, size_t __n) ;
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__pure__));
extern char *index (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__));
extern int ffs (int __i) __attribute__ ((__const__));
extern int ffsl (long int __l) __attribute__ ((__const__));
__extension__ extern int ffsll (long long int __ll)
__attribute__ ((__const__));
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__pure__));
extern int __strcasecmp_l (__const char *__s1, __const char *__s2,
__locale_t __loc) __attribute__ ((__pure__));
extern int __strncasecmp_l (__const char *__s1, __const char *__s2,
size_t __n, __locale_t __loc)
__attribute__ ((__pure__));
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim) ;
extern int strverscmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern char *strsignal (int __sig) ;
extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
;
extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
;
extern char *__stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *strfry (char *__string) ;
extern void *memfrob (void *__s, size_t __n) ;
extern char *basename (__const char *__filename) ;
# 363 "../string/string.h"
# 1 "../sysdeps/i386/i486/bits/string.h" 1
# 364 "../string/string.h" 2
# 1 "../include/bits/string2.h" 1
# 1 "../string/bits/string2.h" 1
# 52 "../string/bits/string2.h"
# 1 "../include/endian.h" 1
# 53 "../string/bits/string2.h" 2
# 221 "../string/bits/string2.h"
extern __inline void *__mempcpy_small (void *, char, char, char, char,
__uint16_t, __uint16_t, __uint32_t,
__uint32_t, size_t);
extern __inline void *
__mempcpy_small (void *__dest1,
char __src0_1, char __src2_1, char __src4_1, char __src6_1,
__uint16_t __src0_2, __uint16_t __src4_2,
__uint32_t __src0_4, __uint32_t __src4_4,
size_t __srclen)
{
union {
__uint32_t __ui;
__uint16_t __usi;
unsigned char __uc;
unsigned char __c;
} *__u = __dest1;
switch ((unsigned int) __srclen)
{
case 1:
__u->__c = __src0_1;
__u = __extension__ ((void *) __u + 1);
break;
case 2:
__u->__usi = __src0_2;
__u = __extension__ ((void *) __u + 2);
break;
case 3:
__u->__usi = __src0_2;
__u = __extension__ ((void *) __u + 2);
__u->__c = __src2_1;
__u = __extension__ ((void *) __u + 1);
break;
case 4:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
break;
case 5:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__c = __src4_1;
__u = __extension__ ((void *) __u + 1);
break;
case 6:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
__u = __extension__ ((void *) __u + 2);
break;
case 7:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
__u = __extension__ ((void *) __u + 2);
__u->__c = __src6_1;
__u = __extension__ ((void *) __u + 1);
break;
case 8:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__ui = __src4_4;
__u = __extension__ ((void *) __u + 4);
break;
}
return (void *) __u;
}
# 377 "../string/bits/string2.h"
extern void *__rawmemchr (const void *__s, int __c);
# 405 "../string/bits/string2.h"
extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t,
__uint32_t, __uint32_t, size_t);
extern __inline char *
__strcpy_small (char *__dest,
__uint16_t __src0_2, __uint16_t __src4_2,
__uint32_t __src0_4, __uint32_t __src4_4,
size_t __srclen)
{
union {
__uint32_t __ui;
__uint16_t __usi;
unsigned char __uc;
} *__u = (void *) __dest;
switch ((unsigned int) __srclen)
{
case 1:
__u->__uc = '\0';
break;
case 2:
__u->__usi = __src0_2;
break;
case 3:
__u->__usi = __src0_2;
__u = __extension__ ((void *) __u + 2);
__u->__uc = '\0';
break;
case 4:
__u->__ui = __src0_4;
break;
case 5:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__uc = '\0';
break;
case 6:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
break;
case 7:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
__u = __extension__ ((void *) __u + 2);
__u->__uc = '\0';
break;
case 8:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__ui = __src4_4;
break;
}
return __dest;
}
# 570 "../string/bits/string2.h"
extern __inline char *__stpcpy_small (char *, __uint16_t, __uint16_t,
__uint32_t, __uint32_t, size_t);
extern __inline char *
__stpcpy_small (char *__dest,
__uint16_t __src0_2, __uint16_t __src4_2,
__uint32_t __src0_4, __uint32_t __src4_4,
size_t __srclen)
{
union {
unsigned int __ui;
unsigned short int __usi;
unsigned char __uc;
char __c;
} *__u = (void *) __dest;
switch ((unsigned int) __srclen)
{
case 1:
__u->__uc = '\0';
break;
case 2:
__u->__usi = __src0_2;
__u = __extension__ ((void *) __u + 1);
break;
case 3:
__u->__usi = __src0_2;
__u = __extension__ ((void *) __u + 2);
__u->__uc = '\0';
break;
case 4:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 3);
break;
case 5:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__uc = '\0';
break;
case 6:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
__u = __extension__ ((void *) __u + 1);
break;
case 7:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
__u = __extension__ ((void *) __u + 2);
__u->__uc = '\0';
break;
case 8:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__ui = __src4_4;
__u = __extension__ ((void *) __u + 3);
break;
}
return &__u->__c;
}
# 893 "../string/bits/string2.h"
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject)
++__result;
return __result;
}
extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2)
++__result;
return __result;
}
extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
int __reject3)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2 && __s[__result] != __reject3)
++__result;
return __result;
}
# 950 "../string/bits/string2.h"
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
register size_t __result = 0;
while (__s[__result] == __accept)
++__result;
return __result;
}
extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2)
++__result;
return __result;
}
extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2
|| __s[__result] == __accept3)
++__result;
return __result;
}
# 1007 "../string/bits/string2.h"
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
int __accept3)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
&& *__s != __accept3)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1059 "../string/bits/string2.h"
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
char *__result;
if (__s == ((void *)0))
__s = *__nextp;
while (*__s == __sep)
++__s;
__result = ((void *)0);
if (*__s != '\0')
{
__result = __s++;
while (*__s != '\0')
if (*__s++ == __sep)
{
__s[-1] = '\0';
break;
}
*__nextp = __s;
}
return __result;
}
# 1091 "../string/bits/string2.h"
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1109 "../string/bits/string2.h"
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
register char *__retval = *__s;
if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
*(*__s)++ = '\0';
return __retval;
}
extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
# 1185 "../string/bits/string2.h"
# 1 "../include/stdlib.h" 1
# 1 "../stdlib/stdlib.h" 1
# 33 "../stdlib/stdlib.h"
# 1 "/usr/lib/gcc/i686-inX-linux/3.0.99.11/include/stddef.h" 1 3
# 34 "../stdlib/stdlib.h" 2
# 527 "../stdlib/stdlib.h"
extern void *malloc (size_t __size) __attribute__ ((__malloc__));
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__malloc__));
# 864 "../stdlib/stdlib.h"
# 8 "../include/stdlib.h" 2
# 1186 "../string/bits/string2.h" 2
extern char *__strdup (__const char *__string) __attribute__ ((__malloc__));
# 1209 "../string/bits/string2.h"
extern char *__strndup (__const char *__string, size_t __n)
__attribute__ ((__malloc__));
# 2 "../include/bits/string2.h" 2
# 367 "../string/string.h" 2
# 50 "../include/string.h" 2
# 4 "des_impl.c" 2
# 1 "../include/des.h" 1
# 1 "../sunrpc/rpc/rpc_des.h" 1
# 38 "../sunrpc/rpc/rpc_des.h"
# 1 "../include/sys/types.h" 1
# 39 "../sunrpc/rpc/rpc_des.h" 2
enum desdir
{
ENCRYPT, DECRYPT
};
enum desmode
{
CBC, ECB
};
struct desparams
{
u_char des_key[8];
enum desdir des_dir;
enum desmode des_mode;
u_char des_ivec[8];
unsigned des_len;
union
{
u_char UDES_data[16];
u_char *UDES_buf;
}
UDES;
};
# 2 "../include/des.h" 2
# 5 "des_impl.c" 2
static const unsigned long des_SPtrans[8][64] =
{
{
0x00820200, 0x00020000, 0x80800000, 0x80820200,
0x00800000, 0x80020200, 0x80020000, 0x80800000,
0x80020200, 0x00820200, 0x00820000, 0x80000200,
0x80800200, 0x00800000, 0x00000000, 0x80020000,
0x00020000, 0x80000000, 0x00800200, 0x00020200,
0x80820200, 0x00820000, 0x80000200, 0x00800200,
0x80000000, 0x00000200, 0x00020200, 0x80820000,
0x00000200, 0x80800200, 0x80820000, 0x00000000,
0x00000000, 0x80820200, 0x00800200, 0x80020000,
0x00820200, 0x00020000, 0x80000200, 0x00800200,
0x80820000, 0x00000200, 0x00020200, 0x80800000,
0x80020200, 0x80000000, 0x80800000, 0x00820000,
0x80820200, 0x00020200, 0x00820000, 0x80800200,
0x00800000, 0x80000200, 0x80020000, 0x00000000,
0x00020000, 0x00800000, 0x80800200, 0x00820200,
0x80000000, 0x80820000, 0x00000200, 0x80020200},
{
0x10042004, 0x00000000, 0x00042000, 0x10040000,
0x10000004, 0x00002004, 0x10002000, 0x00042000,
0x00002000, 0x10040004, 0x00000004, 0x10002000,
0x00040004, 0x10042000, 0x10040000, 0x00000004,
0x00040000, 0x10002004, 0x10040004, 0x00002000,
0x00042004, 0x10000000, 0x00000000, 0x00040004,
0x10002004, 0x00042004, 0x10042000, 0x10000004,
0x10000000, 0x00040000, 0x00002004, 0x10042004,
0x00040004, 0x10042000, 0x10002000, 0x00042004,
0x10042004, 0x00040004, 0x10000004, 0x00000000,
0x10000000, 0x00002004, 0x00040000, 0x10040004,
0x00002000, 0x10000000, 0x00042004, 0x10002004,
0x10042000, 0x00002000, 0x00000000, 0x10000004,
0x00000004, 0x10042004, 0x00042000, 0x10040000,
0x10040004, 0x00040000, 0x00002004, 0x10002000,
0x10002004, 0x00000004, 0x10040000, 0x00042000},
{
0x41000000, 0x01010040, 0x00000040, 0x41000040,
0x40010000, 0x01000000, 0x41000040, 0x00010040,
0x01000040, 0x00010000, 0x01010000, 0x40000000,
0x41010040, 0x40000040, 0x40000000, 0x41010000,
0x00000000, 0x40010000, 0x01010040, 0x00000040,
0x40000040, 0x41010040, 0x00010000, 0x41000000,
0x41010000, 0x01000040, 0x40010040, 0x01010000,
0x00010040, 0x00000000, 0x01000000, 0x40010040,
0x01010040, 0x00000040, 0x40000000, 0x00010000,
0x40000040, 0x40010000, 0x01010000, 0x41000040,
0x00000000, 0x01010040, 0x00010040, 0x41010000,
0x40010000, 0x01000000, 0x41010040, 0x40000000,
0x40010040, 0x41000000, 0x01000000, 0x41010040,
0x00010000, 0x01000040, 0x41000040, 0x00010040,
0x01000040, 0x00000000, 0x41010000, 0x40000040,
0x41000000, 0x40010040, 0x00000040, 0x01010000},
{
0x00100402, 0x04000400, 0x00000002, 0x04100402,
0x00000000, 0x04100000, 0x04000402, 0x00100002,
0x04100400, 0x04000002, 0x04000000, 0x00000402,
0x04000002, 0x00100402, 0x00100000, 0x04000000,
0x04100002, 0x00100400, 0x00000400, 0x00000002,
0x00100400, 0x04000402, 0x04100000, 0x00000400,
0x00000402, 0x00000000, 0x00100002, 0x04100400,
0x04000400, 0x04100002, 0x04100402, 0x00100000,
0x04100002, 0x00000402, 0x00100000, 0x04000002,
0x00100400, 0x04000400, 0x00000002, 0x04100000,
0x04000402, 0x00000000, 0x00000400, 0x00100002,
0x00000000, 0x04100002, 0x04100400, 0x00000400,
0x04000000, 0x04100402, 0x00100402, 0x00100000,
0x04100402, 0x00000002, 0x04000400, 0x00100402,
0x00100002, 0x00100400, 0x04100000, 0x04000402,
0x00000402, 0x04000000, 0x04000002, 0x04100400},
{
0x02000000, 0x00004000, 0x00000100, 0x02004108,
0x02004008, 0x02000100, 0x00004108, 0x02004000,
0x00004000, 0x00000008, 0x02000008, 0x00004100,
0x02000108, 0x02004008, 0x02004100, 0x00000000,
0x00004100, 0x02000000, 0x00004008, 0x00000108,
0x02000100, 0x00004108, 0x00000000, 0x02000008,
0x00000008, 0x02000108, 0x02004108, 0x00004008,
0x02004000, 0x00000100, 0x00000108, 0x02004100,
0x02004100, 0x02000108, 0x00004008, 0x02004000,
0x00004000, 0x00000008, 0x02000008, 0x02000100,
0x02000000, 0x00004100, 0x02004108, 0x00000000,
0x00004108, 0x02000000, 0x00000100, 0x00004008,
0x02000108, 0x00000100, 0x00000000, 0x02004108,
0x02004008, 0x02004100, 0x00000108, 0x00004000,
0x00004100, 0x02004008, 0x02000100, 0x00000108,
0x00000008, 0x00004108, 0x02004000, 0x02000008},
{
0x20000010, 0x00080010, 0x00000000, 0x20080800,
0x00080010, 0x00000800, 0x20000810, 0x00080000,
0x00000810, 0x20080810, 0x00080800, 0x20000000,
0x20000800, 0x20000010, 0x20080000, 0x00080810,
0x00080000, 0x20000810, 0x20080010, 0x00000000,
0x00000800, 0x00000010, 0x20080800, 0x20080010,
0x20080810, 0x20080000, 0x20000000, 0x00000810,
0x00000010, 0x00080800, 0x00080810, 0x20000800,
0x00000810, 0x20000000, 0x20000800, 0x00080810,
0x20080800, 0x00080010, 0x00000000, 0x20000800,
0x20000000, 0x00000800, 0x20080010, 0x00080000,
0x00080010, 0x20080810, 0x00080800, 0x00000010,
0x20080810, 0x00080800, 0x00080000, 0x20000810,
0x20000010, 0x20080000, 0x00080810, 0x00000000,
0x00000800, 0x20000010, 0x20000810, 0x20080800,
0x20080000, 0x00000810, 0x00000010, 0x20080010},
{
0x00001000, 0x00000080, 0x00400080, 0x00400001,
0x00401081, 0x00001001, 0x00001080, 0x00000000,
0x00400000, 0x00400081, 0x00000081, 0x00401000,
0x00000001, 0x00401080, 0x00401000, 0x00000081,
0x00400081, 0x00001000, 0x00001001, 0x00401081,
0x00000000, 0x00400080, 0x00400001, 0x00001080,
0x00401001, 0x00001081, 0x00401080, 0x00000001,
0x00001081, 0x00401001, 0x00000080, 0x00400000,
0x00001081, 0x00401000, 0x00401001, 0x00000081,
0x00001000, 0x00000080, 0x00400000, 0x00401001,
0x00400081, 0x00001081, 0x00001080, 0x00000000,
0x00000080, 0x00400001, 0x00000001, 0x00400080,
0x00000000, 0x00400081, 0x00400080, 0x00001080,
0x00000081, 0x00001000, 0x00401081, 0x00400000,
0x00401080, 0x00000001, 0x00001001, 0x00401081,
0x00400001, 0x00401080, 0x00401000, 0x00001001},
{
0x08200020, 0x08208000, 0x00008020, 0x00000000,
0x08008000, 0x00200020, 0x08200000, 0x08208020,
0x00000020, 0x08000000, 0x00208000, 0x00008020,
0x00208020, 0x08008020, 0x08000020, 0x08200000,
0x00008000, 0x00208020, 0x00200020, 0x08008000,
0x08208020, 0x08000020, 0x00000000, 0x00208000,
0x08000000, 0x00200000, 0x08008020, 0x08200020,
0x00200000, 0x00008000, 0x08208000, 0x00000020,
0x00200000, 0x00008000, 0x08000020, 0x08208020,
0x00008020, 0x08000000, 0x00000000, 0x00208000,
0x08200020, 0x08008020, 0x08008000, 0x00200020,
0x08208000, 0x00000020, 0x00200020, 0x08008000,
0x08208020, 0x00200000, 0x08200000, 0x08000020,
0x00208000, 0x00008020, 0x08008020, 0x08200000,
0x00000020, 0x08208000, 0x00208020, 0x00000000,
0x08000000, 0x08200020, 0x00008000, 0x00208020}};
static const unsigned long des_skb[8][64] =
{
{
0x00000000, 0x00000010, 0x20000000, 0x20000010,
0x00010000, 0x00010010, 0x20010000, 0x20010010,
0x00000800, 0x00000810, 0x20000800, 0x20000810,
0x00010800, 0x00010810, 0x20010800, 0x20010810,
0x00000020, 0x00000030, 0x20000020, 0x20000030,
0x00010020, 0x00010030, 0x20010020, 0x20010030,
0x00000820, 0x00000830, 0x20000820, 0x20000830,
0x00010820, 0x00010830, 0x20010820, 0x20010830,
0x00080000, 0x00080010, 0x20080000, 0x20080010,
0x00090000, 0x00090010, 0x20090000, 0x20090010,
0x00080800, 0x00080810, 0x20080800, 0x20080810,
0x00090800, 0x00090810, 0x20090800, 0x20090810,
0x00080020, 0x00080030, 0x20080020, 0x20080030,
0x00090020, 0x00090030, 0x20090020, 0x20090030,
0x00080820, 0x00080830, 0x20080820, 0x20080830,
0x00090820, 0x00090830, 0x20090820, 0x20090830},
{
0x00000000, 0x02000000, 0x00002000, 0x02002000,
0x00200000, 0x02200000, 0x00202000, 0x02202000,
0x00000004, 0x02000004, 0x00002004, 0x02002004,
0x00200004, 0x02200004, 0x00202004, 0x02202004,
0x00000400, 0x02000400, 0x00002400, 0x02002400,
0x00200400, 0x02200400, 0x00202400, 0x02202400,
0x00000404, 0x02000404, 0x00002404, 0x02002404,
0x00200404, 0x02200404, 0x00202404, 0x02202404,
0x10000000, 0x12000000, 0x10002000, 0x12002000,
0x10200000, 0x12200000, 0x10202000, 0x12202000,
0x10000004, 0x12000004, 0x10002004, 0x12002004,
0x10200004, 0x12200004, 0x10202004, 0x12202004,
0x10000400, 0x12000400, 0x10002400, 0x12002400,
0x10200400, 0x12200400, 0x10202400, 0x12202400,
0x10000404, 0x12000404, 0x10002404, 0x12002404,
0x10200404, 0x12200404, 0x10202404, 0x12202404},
{
0x00000000, 0x00000001, 0x00040000, 0x00040001,
0x01000000, 0x01000001, 0x01040000, 0x01040001,
0x00000002, 0x00000003, 0x00040002, 0x00040003,
0x01000002, 0x01000003, 0x01040002, 0x01040003,
0x00000200, 0x00000201, 0x00040200, 0x00040201,
0x01000200, 0x01000201, 0x01040200, 0x01040201,
0x00000202, 0x00000203, 0x00040202, 0x00040203,
0x01000202, 0x01000203, 0x01040202, 0x01040203,
0x08000000, 0x08000001, 0x08040000, 0x08040001,
0x09000000, 0x09000001, 0x09040000, 0x09040001,
0x08000002, 0x08000003, 0x08040002, 0x08040003,
0x09000002, 0x09000003, 0x09040002, 0x09040003,
0x08000200, 0x08000201, 0x08040200, 0x08040201,
0x09000200, 0x09000201, 0x09040200, 0x09040201,
0x08000202, 0x08000203, 0x08040202, 0x08040203,
0x09000202, 0x09000203, 0x09040202, 0x09040203},
{
0x00000000, 0x00100000, 0x00000100, 0x00100100,
0x00000008, 0x00100008, 0x00000108, 0x00100108,
0x00001000, 0x00101000, 0x00001100, 0x00101100,
0x00001008, 0x00101008, 0x00001108, 0x00101108,
0x04000000, 0x04100000, 0x04000100, 0x04100100,
0x04000008, 0x04100008, 0x04000108, 0x04100108,
0x04001000, 0x04101000, 0x04001100, 0x04101100,
0x04001008, 0x04101008, 0x04001108, 0x04101108,
0x00020000, 0x00120000, 0x00020100, 0x00120100,
0x00020008, 0x00120008, 0x00020108, 0x00120108,
0x00021000, 0x00121000, 0x00021100, 0x00121100,
0x00021008, 0x00121008, 0x00021108, 0x00121108,
0x04020000, 0x04120000, 0x04020100, 0x04120100,
0x04020008, 0x04120008, 0x04020108, 0x04120108,
0x04021000, 0x04121000, 0x04021100, 0x04121100,
0x04021008, 0x04121008, 0x04021108, 0x04121108},
{
0x00000000, 0x10000000, 0x00010000, 0x10010000,
0x00000004, 0x10000004, 0x00010004, 0x10010004,
0x20000000, 0x30000000, 0x20010000, 0x30010000,
0x20000004, 0x30000004, 0x20010004, 0x30010004,
0x00100000, 0x10100000, 0x00110000, 0x10110000,
0x00100004, 0x10100004, 0x00110004, 0x10110004,
0x20100000, 0x30100000, 0x20110000, 0x30110000,
0x20100004, 0x30100004, 0x20110004, 0x30110004,
0x00001000, 0x10001000, 0x00011000, 0x10011000,
0x00001004, 0x10001004, 0x00011004, 0x10011004,
0x20001000, 0x30001000, 0x20011000, 0x30011000,
0x20001004, 0x30001004, 0x20011004, 0x30011004,
0x00101000, 0x10101000, 0x00111000, 0x10111000,
0x00101004, 0x10101004, 0x00111004, 0x10111004,
0x20101000, 0x30101000, 0x20111000, 0x30111000,
0x20101004, 0x30101004, 0x20111004, 0x30111004},
{
0x00000000, 0x08000000, 0x00000008, 0x08000008,
0x00000400, 0x08000400, 0x00000408, 0x08000408,
0x00020000, 0x08020000, 0x00020008, 0x08020008,
0x00020400, 0x08020400, 0x00020408, 0x08020408,
0x00000001, 0x08000001, 0x00000009, 0x08000009,
0x00000401, 0x08000401, 0x00000409, 0x08000409,
0x00020001, 0x08020001, 0x00020009, 0x08020009,
0x00020401, 0x08020401, 0x00020409, 0x08020409,
0x02000000, 0x0A000000, 0x02000008, 0x0A000008,
0x02000400, 0x0A000400, 0x02000408, 0x0A000408,
0x02020000, 0x0A020000, 0x02020008, 0x0A020008,
0x02020400, 0x0A020400, 0x02020408, 0x0A020408,
0x02000001, 0x0A000001, 0x02000009, 0x0A000009,
0x02000401, 0x0A000401, 0x02000409, 0x0A000409,
0x02020001, 0x0A020001, 0x02020009, 0x0A020009,
0x02020401, 0x0A020401, 0x02020409, 0x0A020409},
{
0x00000000, 0x00000100, 0x00080000, 0x00080100,
0x01000000, 0x01000100, 0x01080000, 0x01080100,
0x00000010, 0x00000110, 0x00080010, 0x00080110,
0x01000010, 0x01000110, 0x01080010, 0x01080110,
0x00200000, 0x00200100, 0x00280000, 0x00280100,
0x01200000, 0x01200100, 0x01280000, 0x01280100,
0x00200010, 0x00200110, 0x00280010, 0x00280110,
0x01200010, 0x01200110, 0x01280010, 0x01280110,
0x00000200, 0x00000300, 0x00080200, 0x00080300,
0x01000200, 0x01000300, 0x01080200, 0x01080300,
0x00000210, 0x00000310, 0x00080210, 0x00080310,
0x01000210, 0x01000310, 0x01080210, 0x01080310,
0x00200200, 0x00200300, 0x00280200, 0x00280300,
0x01200200, 0x01200300, 0x01280200, 0x01280300,
0x00200210, 0x00200310, 0x00280210, 0x00280310,
0x01200210, 0x01200310, 0x01280210, 0x01280310},
{
0x00000000, 0x04000000, 0x00040000, 0x04040000,
0x00000002, 0x04000002, 0x00040002, 0x04040002,
0x00002000, 0x04002000, 0x00042000, 0x04042000,
0x00002002, 0x04002002, 0x00042002, 0x04042002,
0x00000020, 0x04000020, 0x00040020, 0x04040020,
0x00000022, 0x04000022, 0x00040022, 0x04040022,
0x00002020, 0x04002020, 0x00042020, 0x04042020,
0x00002022, 0x04002022, 0x00042022, 0x04042022,
0x00000800, 0x04000800, 0x00040800, 0x04040800,
0x00000802, 0x04000802, 0x00040802, 0x04040802,
0x00002800, 0x04002800, 0x00042800, 0x04042800,
0x00002802, 0x04002802, 0x00042802, 0x04042802,
0x00000820, 0x04000820, 0x00040820, 0x04040820,
0x00000822, 0x04000822, 0x00040822, 0x04040822,
0x00002820, 0x04002820, 0x00042820, 0x04042820,
0x00002822, 0x04002822, 0x00042822, 0x04042822},
};
# 386 "des_impl.c"
static const char shifts2[16] =
{0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0};
static void des_set_key (char *, unsigned long *) __attribute__ ((regparm (3), stdcall));
static void des_encrypt (unsigned long *, unsigned long *, int)
__attribute__ ((regparm (3), stdcall));
int _des_crypt (char *, unsigned, struct desparams *);
static void
__attribute__ ((regparm (3), stdcall))
des_set_key (char *key, unsigned long *schedule)
{
register unsigned long c, d, t, s;
register unsigned char *in;
register unsigned long *k;
register int i;
k = (unsigned long *) schedule;
in = (unsigned char *) key;
(c =((unsigned long)(*((in)++))) , c|=((unsigned long)(*((in)++)))<< 8, c|=((unsigned long)(*((in)++)))<<16, c|=((unsigned long)(*((in)++)))<<24);
(d =((unsigned long)(*((in)++))) , d|=((unsigned long)(*((in)++)))<< 8, d|=((unsigned long)(*((in)++)))<<16, d|=((unsigned long)(*((in)++)))<<24);
((t)=((((d)>>(4))^(c))&(0x0f0f0f0f)), (c)^=(t), (d)^=((t)<<(4)));
((t)=((((c)<<(16-(-2)))^(c))&(0xcccc0000)), (c)=(c)^(t)^(t>>(16-(-2))));
((t)=((((d)<<(16-(-2)))^(d))&(0xcccc0000)), (d)=(d)^(t)^(t>>(16-(-2))));
((t)=((((d)>>(1))^(c))&(0x55555555)), (c)^=(t), (d)^=((t)<<(1)));
((t)=((((c)>>(8))^(d))&(0x00ff00ff)), (d)^=(t), (c)^=((t)<<(8)));
((t)=((((d)>>(1))^(c))&(0x55555555)), (c)^=(t), (d)^=((t)<<(1)));
d = (((d & 0x000000ff) << 16) | (d & 0x0000ff00) |
((d & 0x00ff0000) >> 16) | ((c & 0xf0000000) >> 4));
c &= 0x0fffffff;
for (i = 0; i < 16; i++)
{
if (shifts2[i])
{
c = ((c >> 2) | (c << 26));
d = ((d >> 2) | (d << 26));
}
else
{
c = ((c >> 1) | (c << 27));
d = ((d >> 1) | (d << 27));
}
c &= 0x0fffffff;
d &= 0x0fffffff;
s = des_skb[0][(c) & 0x3f] |
des_skb[1][((c >> 6) & 0x03) | ((c >> 7) & 0x3c)] |
des_skb[2][((c >> 13) & 0x0f) | ((c >> 14) & 0x30)] |
des_skb[3][((c >> 20) & 0x01) | ((c >> 21) & 0x06) | ((c >> 22) & 0x38)];
t = des_skb[4][(d) & 0x3f] |
des_skb[5][((d >> 7) & 0x03) | ((d >> 8) & 0x3c)] |
des_skb[6][(d >> 15) & 0x3f] |
des_skb[7][((d >> 21) & 0x0f) | ((d >> 22) & 0x30)];
*(k++) = ((t << 16) | (s & 0x0000ffff)) & 0xffffffff;
s = ((s >> 16) | (t & 0xffff0000));
s = (s << 4) | (s >> 28);
*(k++) = s & 0xffffffff;
}
}
static void
__attribute__ ((regparm (3), stdcall))
des_encrypt (unsigned long *buf, unsigned long *schedule, int encrypt)
{
register unsigned long l, r, t, u;
register int i;
register unsigned long *s;
l = buf[0];
r = buf[1];
((t)=((((r)>>(4))^(l))&(0x0f0f0f0f)), (l)^=(t), (r)^=((t)<<(4)));
((t)=((((l)>>(16))^(r))&(0x0000ffff)), (r)^=(t), (l)^=((t)<<(16)));
((t)=((((r)>>(2))^(l))&(0x33333333)), (l)^=(t), (r)^=((t)<<(2)));
((t)=((((l)>>(8))^(r))&(0x00ff00ff)), (r)^=(t), (l)^=((t)<<(8)));
((t)=((((r)>>(1))^(l))&(0x55555555)), (l)^=(t), (r)^=((t)<<(1)));
# 486 "des_impl.c"
t = (r << 1) | (r >> 31);
r = (l << 1) | (l >> 31);
l = t;
l &= 0xffffffff;
r &= 0xffffffff;
s = (unsigned long *) schedule;
if (encrypt)
{
for (i = 0; i < 32; i += 4)
{
u=(r^s[i + 0 ]); t=r^s[i + 0 +1]; t=((t>>4)+(t<<28)); l^= des_SPtrans[1][(t )&0x3f]| des_SPtrans[3][(t>> 8)&0x3f]| des_SPtrans[5][(t>>16)&0x3f]| des_SPtrans[7][(t>>24)&0x3f]| des_SPtrans[0][(u )&0x3f]| des_SPtrans[2][(u>> 8)&0x3f]| des_SPtrans[4][(u>>16)&0x3f]| des_SPtrans[6][(u>>24)&0x3f];;
u=(l^s[i + 2 ]); t=l^s[i + 2 +1]; t=((t>>4)+(t<<28)); r^= des_SPtrans[1][(t )&0x3f]| des_SPtrans[3][(t>> 8)&0x3f]| des_SPtrans[5][(t>>16)&0x3f]| des_SPtrans[7][(t>>24)&0x3f]| des_SPtrans[0][(u )&0x3f]| des_SPtrans[2][(u>> 8)&0x3f]| des_SPtrans[4][(u>>16)&0x3f]| des_SPtrans[6][(u>>24)&0x3f];;
}
}
else
{
for (i = 30; i > 0; i -= 4)
{
u=(r^s[i - 0 ]); t=r^s[i - 0 +1]; t=((t>>4)+(t<<28)); l^= des_SPtrans[1][(t )&0x3f]| des_SPtrans[3][(t>> 8)&0x3f]| des_SPtrans[5][(t>>16)&0x3f]| des_SPtrans[7][(t>>24)&0x3f]| des_SPtrans[0][(u )&0x3f]| des_SPtrans[2][(u>> 8)&0x3f]| des_SPtrans[4][(u>>16)&0x3f]| des_SPtrans[6][(u>>24)&0x3f];;
u=(l^s[i - 2 ]); t=l^s[i - 2 +1]; t=((t>>4)+(t<<28)); r^= des_SPtrans[1][(t )&0x3f]| des_SPtrans[3][(t>> 8)&0x3f]| des_SPtrans[5][(t>>16)&0x3f]| des_SPtrans[7][(t>>24)&0x3f]| des_SPtrans[0][(u )&0x3f]| des_SPtrans[2][(u>> 8)&0x3f]| des_SPtrans[4][(u>>16)&0x3f]| des_SPtrans[6][(u>>24)&0x3f];;
}
}
l = (l >> 1) | (l << 31);
r = (r >> 1) | (r << 31);
l &= 0xffffffff;
r &= 0xffffffff;
((t)=((((r)>>(1))^(l))&(0x55555555)), (l)^=(t), (r)^=((t)<<(1)));
((t)=((((l)>>(8))^(r))&(0x00ff00ff)), (r)^=(t), (l)^=((t)<<(8)));
((t)=((((r)>>(2))^(l))&(0x33333333)), (l)^=(t), (r)^=((t)<<(2)));
((t)=((((l)>>(16))^(r))&(0x0000ffff)), (r)^=(t), (l)^=((t)<<(16)));
((t)=((((r)>>(4))^(l))&(0x0f0f0f0f)), (l)^=(t), (r)^=((t)<<(4)));
buf[0] = l;
buf[1] = r;
l = r = t = u = 0;
}
int
_des_crypt (char *buf, unsigned len, struct desparams *desp)
{
unsigned long schedule[32];
register unsigned long tin0, tin1;
register unsigned long tout0, tout1, xor0, xor1;
register unsigned char *in, *out;
unsigned long tbuf[2];
unsigned char *iv, *oiv;
int cbc_mode;
cbc_mode = (desp->des_mode == CBC) ? 1 : 0;
in = (unsigned char *) buf;
out = (unsigned char *) buf;
oiv = iv = (unsigned char *) desp->des_ivec;
des_set_key (desp->des_key, schedule);
tin0 = tin1 = 0;
if (desp->des_dir == ENCRYPT)
{
(tout0 =((unsigned long)(*((iv)++))) , tout0|=((unsigned long)(*((iv)++)))<< 8, tout0|=((unsigned long)(*((iv)++)))<<16, tout0|=((unsigned long)(*((iv)++)))<<24);
(tout1 =((unsigned long)(*((iv)++))) , tout1|=((unsigned long)(*((iv)++)))<< 8, tout1|=((unsigned long)(*((iv)++)))<<16, tout1|=((unsigned long)(*((iv)++)))<<24);
for (; len > 0; len -= 8)
{
(tin0 =((unsigned long)(*((in)++))) , tin0|=((unsigned long)(*((in)++)))<< 8, tin0|=((unsigned long)(*((in)++)))<<16, tin0|=((unsigned long)(*((in)++)))<<24);
(tin1 =((unsigned long)(*((in)++))) , tin1|=((unsigned long)(*((in)++)))<< 8, tin1|=((unsigned long)(*((in)++)))<<16, tin1|=((unsigned long)(*((in)++)))<<24);
if (cbc_mode)
{
tin0 ^= tout0;
tin1 ^= tout1;
}
tbuf[0] = tin0;
tbuf[1] = tin1;
des_encrypt (tbuf, schedule, 1);
tout0 = tbuf[0];
tout1 = tbuf[1];
(*((out)++)=(unsigned char)(((tout0) )&0xff), *((out)++)=(unsigned char)(((tout0)>> 8)&0xff), *((out)++)=(unsigned char)(((tout0)>>16)&0xff), *((out)++)=(unsigned char)(((tout0)>>24)&0xff));
(*((out)++)=(unsigned char)(((tout1) )&0xff), *((out)++)=(unsigned char)(((tout1)>> 8)&0xff), *((out)++)=(unsigned char)(((tout1)>>16)&0xff), *((out)++)=(unsigned char)(((tout1)>>24)&0xff));
}
(*((oiv)++)=(unsigned char)(((tout0) )&0xff), *((oiv)++)=(unsigned char)(((tout0)>> 8)&0xff), *((oiv)++)=(unsigned char)(((tout0)>>16)&0xff), *((oiv)++)=(unsigned char)(((tout0)>>24)&0xff));
(*((oiv)++)=(unsigned char)(((tout1) )&0xff), *((oiv)++)=(unsigned char)(((tout1)>> 8)&0xff), *((oiv)++)=(unsigned char)(((tout1)>>16)&0xff), *((oiv)++)=(unsigned char)(((tout1)>>24)&0xff));
}
else
{
(xor0 =((unsigned long)(*((iv)++))) , xor0|=((unsigned long)(*((iv)++)))<< 8, xor0|=((unsigned long)(*((iv)++)))<<16, xor0|=((unsigned long)(*((iv)++)))<<24);
(xor1 =((unsigned long)(*((iv)++))) , xor1|=((unsigned long)(*((iv)++)))<< 8, xor1|=((unsigned long)(*((iv)++)))<<16, xor1|=((unsigned long)(*((iv)++)))<<24);
for (; len > 0; len -= 8)
{
(tin0 =((unsigned long)(*((in)++))) , tin0|=((unsigned long)(*((in)++)))<< 8, tin0|=((unsigned long)(*((in)++)))<<16, tin0|=((unsigned long)(*((in)++)))<<24);
(tin1 =((unsigned long)(*((in)++))) , tin1|=((unsigned long)(*((in)++)))<< 8, tin1|=((unsigned long)(*((in)++)))<<16, tin1|=((unsigned long)(*((in)++)))<<24);
tbuf[0] = tin0;
tbuf[1] = tin1;
des_encrypt (tbuf, schedule, 0);
if (cbc_mode)
{
tout0 = tbuf[0] ^ xor0;
tout1 = tbuf[1] ^ xor1;
xor0 = tin0;
xor1 = tin1;
}
else
{
tout0 = tbuf[0];
tout1 = tbuf[1];
}
(*((out)++)=(unsigned char)(((tout0) )&0xff), *((out)++)=(unsigned char)(((tout0)>> 8)&0xff), *((out)++)=(unsigned char)(((tout0)>>16)&0xff), *((out)++)=(unsigned char)(((tout0)>>24)&0xff));
(*((out)++)=(unsigned char)(((tout1) )&0xff), *((out)++)=(unsigned char)(((tout1)>> 8)&0xff), *((out)++)=(unsigned char)(((tout1)>>16)&0xff), *((out)++)=(unsigned char)(((tout1)>>24)&0xff));
}
(*((oiv)++)=(unsigned char)(((tin0) )&0xff), *((oiv)++)=(unsigned char)(((tin0)>> 8)&0xff), *((oiv)++)=(unsigned char)(((tin0)>>16)&0xff), *((oiv)++)=(unsigned char)(((tin0)>>24)&0xff));
(*((oiv)++)=(unsigned char)(((tin1) )&0xff), *((oiv)++)=(unsigned char)(((tin1)>> 8)&0xff), *((oiv)++)=(unsigned char)(((tin1)>>16)&0xff), *((oiv)++)=(unsigned char)(((tin1)>>24)&0xff));
}
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
tbuf[0] = tbuf[1] = 0;
__builtin_memset (schedule, '\0', sizeof (schedule));
return (1);
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-04-26 5:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-25 22:16 c/6469: 3.1 ICE no register to spill in glibc 2.2.5 >-fschedule-insns tmwg-gcc
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).