summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2010-02-08 14:36:40 +0100
committerAndreas Schwab <schwab@redhat.com>2010-02-08 14:36:40 +0100
commit299f2f92c8a7955ff09b34b27508cb5c8cf2185e (patch)
tree212e51f400a1ee01ec5b3ac081aee425934209ae /sysdeps
parent8565786828afe379e4ee646787a1f0baa9b4e04b (diff)
parent0cbcca89bad6656bfda8c60e143295e0f00054b6 (diff)
Merge remote branch 'origin/master' into fedora/master
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ia64/memchr.S26
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c20
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c18
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h14
-rw-r--r--sysdeps/unix/sysv/linux/sparc/Versions4
-rw-r--r--sysdeps/unix/sysv/linux/sys/mount.h41
6 files changed, 83 insertions, 40 deletions
diff --git a/sysdeps/ia64/memchr.S b/sysdeps/ia64/memchr.S
index cdd71ca5a5..355effe94b 100644
--- a/sysdeps/ia64/memchr.S
+++ b/sysdeps/ia64/memchr.S
@@ -1,6 +1,6 @@
/* Optimized version of the standard memchr() function.
This file is part of the GNU C Library.
- Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2003, 2010 Free Software Foundation, Inc.
Contributed by Dan Pop <Dan.Pop@cern.ch>.
The GNU C Library is free software; you can redistribute it and/or
@@ -21,9 +21,9 @@
/* Return: the address of the first occurence of chr in str or NULL
Inputs:
- in0: str
- in1: chr
- in2: byte count
+ in0: str
+ in1: chr
+ in2: byte count
This implementation assumes little endian mode. For big endian mode,
the instruction czx1.r should be replaced by czx1.l.
@@ -47,7 +47,7 @@
#define saved_lc r16
#define chr r17
#define len r18
-#define pos0 r20
+#define last r20
#define val r21
#define tmp r24
#define chrx8 r25
@@ -62,12 +62,13 @@ ENTRY(__memchr)
.rotr value[MEMLAT+1], addr[MEMLAT+3], aux[2], poschr[2]
.rotp p[MEMLAT+3]
.save ar.lc, saved_lc
- mov saved_lc = ar.lc // save the loop counter
+ mov saved_lc = ar.lc // save the loop counter
.save pr, saved_pr
mov saved_pr = pr // save the predicates
.body
- mov ret0 = str
- and tmp = 7, str // tmp = str % 8
+ mov ret0 = str
+ add last = str, in2 // last byte
+ and tmp = 7, str // tmp = str % 8
cmp.ne p7, p0 = r0, r0 // clear p7
extr.u chr = in1, 0, 8 // chr = (unsigned char) in1
mov len = in2
@@ -88,7 +89,7 @@ ENTRY(__memchr)
.str_aligned:
cmp.ne p6, p0 = r0, r0 // clear p6
shr.u loopcnt = len, 3 // loopcnt = len / 8
- and len = 7, len ;; // remaining len = len & 7
+ and len = 7, len ;; // remaining len = len & 7
adds loopcnt = -1, loopcnt
mov ar.ec = MEMLAT + 3
mux1 chrx8 = chr, @brcst ;; // get a word full of chr
@@ -119,7 +120,7 @@ ENTRY(__memchr)
mov ret0 = r0 ;; // return NULL
.foundit:
.pred.rel "mutex" p6, p7
-(p6) adds ret0 = -1, ret0 // if we got here from l1 or l3
+(p6) adds ret0 = -1, ret0 // if we got here from l1 or l3
(p7) add ret0 = addr[MEMLAT+2], poschr[1] // if we got here from l2
mov pr = saved_pr, -1
mov ar.lc = saved_lc
@@ -143,7 +144,10 @@ ENTRY(__memchr)
ld8 tmp = [ret0];; // load the first unchecked 8byte
xor aux[1] = tmp, chrx8;;
czx1.r poschr[1] = aux[1];;
- cmp.ne p7, p0 = 8, poschr[1]
+ cmp.ne p7, p0 = 8, poschr[1];;
+(p7) add ret0 = addr[MEMLAT+2], poschr[1];;
+(p7) cmp.geu p6, p7 = ret0, last // don't go over the last byte
+(p6) br.cond.spnt .notfound;;
(p7) br.cond.spnt .foundit;;
adds ret0 = 8, ret0 // load the next unchecked 8byte
br.sptk .l4;;
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c b/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
index 32a5d71376..d5793b3905 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2010 Free Software Foundation, Inc.
Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
This file is part of the GNU C Library.
@@ -31,7 +31,7 @@
calls. */
#define ALLOCATE_UTMP32_OUT(OUT) \
static struct utmp32 *OUT = NULL; \
- \
+ \
if (OUT == NULL) \
{ \
OUT = malloc (sizeof (struct utmp32)); \
@@ -62,7 +62,7 @@
struct utmp32 *
getutid32 (const struct utmp32 *id)
{
- ACCESS_UTMP_ENTRY (getutid, id)
+ ACCESS_UTMP_ENTRY (__getutid, id)
}
symbol_version (getutid32, getutid, GLIBC_2.0);
@@ -71,7 +71,7 @@ symbol_version (getutid32, getutid, GLIBC_2.0);
struct utmp32 *
getutline32 (const struct utmp32 *line)
{
- ACCESS_UTMP_ENTRY (getutline, line)
+ ACCESS_UTMP_ENTRY (__getutline, line)
}
symbol_version (getutline32, getutline, GLIBC_2.0);
@@ -79,7 +79,7 @@ symbol_version (getutline32, getutline, GLIBC_2.0);
struct utmp32 *
pututline32 (const struct utmp32 *utmp_ptr)
{
- ACCESS_UTMP_ENTRY (pututline, utmp_ptr)
+ ACCESS_UTMP_ENTRY (__pututline, utmp_ptr)
}
symbol_version (pututline32, pututline, GLIBC_2.0);
@@ -90,7 +90,7 @@ getutent32 (void)
struct utmp *out64;
ALLOCATE_UTMP32_OUT (out32);
- out64 = getutent ();
+ out64 = __getutent ();
if (!out64)
return NULL;
@@ -108,7 +108,7 @@ getutent32_r (struct utmp32 *buffer, struct utmp32 **result)
struct utmp *out64p;
int ret;
- ret = getutent_r (&out64, &out64p);
+ ret = __getutent_r (&out64, &out64p);
if (ret == -1)
{
*result = NULL;
@@ -133,7 +133,7 @@ getutid32_r (const struct utmp32 *id, struct utmp32 *buffer,
utmp_convert32to64 (id, &in64);
- ret = getutid_r (&in64, &out64, &out64p);
+ ret = __getutid_r (&in64, &out64, &out64p);
if (ret == -1)
{
*result = NULL;
@@ -158,7 +158,7 @@ getutline32_r (const struct utmp32 *line,
utmp_convert32to64 (line, &in64);
- ret = getutline_r (&in64, &out64, &out64p);
+ ret = __getutline_r (&in64, &out64, &out64p);
if (ret == -1)
{
*result = NULL;
@@ -180,6 +180,6 @@ updwtmp32 (const char *wtmp_file, const struct utmp32 *utmp)
struct utmp in32;
utmp_convert32to64 (utmp, &in32);
- updwtmp (wtmp_file, &in32);
+ __updwtmp (wtmp_file, &in32);
}
symbol_version (updwtmp32, updwtmp, GLIBC_2.0);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
index 69a1384db6..790b46466e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2010 Free Software Foundation, Inc.
Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
This file is part of the GNU C Library.
@@ -34,7 +34,7 @@
calls. */
#define ALLOCATE_UTMPX32_OUT(OUT) \
static struct utmpx32 *OUT = NULL; \
- \
+ \
if (OUT == NULL) \
{ \
OUT = malloc (sizeof (struct utmpx32)); \
@@ -68,7 +68,7 @@ getutxent32 (void)
struct utmpx *out64;
ALLOCATE_UTMPX32_OUT (out32);
- out64 = getutxent ();
+ out64 = __getutxent ();
if (!out64)
return NULL;
@@ -82,7 +82,7 @@ symbol_version (getutxent32, getutxent, GLIBC_2.1);
struct utmpx32 *
getutxid32 (const struct utmpx32 *id)
{
- ACCESS_UTMPX_ENTRY (getutxid, id);
+ ACCESS_UTMPX_ENTRY (__getutxid, id);
}
symbol_version (getutxid32, getutxid, GLIBC_2.1);
@@ -90,7 +90,7 @@ symbol_version (getutxid32, getutxid, GLIBC_2.1);
struct utmpx32 *
getutxline32 (const struct utmpx32 *line)
{
- ACCESS_UTMPX_ENTRY (getutxline, line);
+ ACCESS_UTMPX_ENTRY (__getutxline, line);
}
symbol_version (getutxline32, getutxline, GLIBC_2.1);
@@ -98,7 +98,7 @@ symbol_version (getutxline32, getutxline, GLIBC_2.1);
struct utmpx32 *
pututxline32 (const struct utmpx32 *utmpx)
{
- ACCESS_UTMPX_ENTRY (pututxline, utmpx);
+ ACCESS_UTMPX_ENTRY (__pututxline, utmpx);
}
symbol_version (pututxline32, pututxline, GLIBC_2.1);
@@ -109,7 +109,7 @@ updwtmpx32 (const char *wtmpx_file, const struct utmpx32 *utmpx)
struct utmpx in64;
utmpx_convert32to64 (utmpx, &in64);
- updwtmpx (wtmpx_file, &in64);
+ __updwtmpx (wtmpx_file, &in64);
}
symbol_version (updwtmpx32, updwtmpx, GLIBC_2.1);
@@ -121,7 +121,7 @@ getutmp32 (const struct utmpx32 *utmpx, struct utmp32 *utmp)
struct utmp out64;
utmpx_convert32to64 (utmpx, &in64);
- getutmp (&in64, &out64);
+ __getutmp (&in64, &out64);
utmp_convert64to32 (&out64, utmp);
}
symbol_version (getutmp32, getutmp, GLIBC_2.1.1);
@@ -134,7 +134,7 @@ getutmpx32 (const struct utmp32 *utmp, struct utmpx32 *utmpx)
struct utmpx out64;
utmp_convert32to64 (utmp, &in64);
- getutmpx (&in64, &out64);
+ __getutmpx (&in64, &out64);
utmpx_convert64to32 (&out64, utmpx);
}
symbol_version (getutmpx32, getutmpx, GLIBC_2.1.1);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
index 5f468ed68d..dedc6c6be8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
@@ -1,5 +1,5 @@
/* The `struct utmp' type, describing entries in the utmp file. GNU version.
- Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2008
+ Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2008, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -49,4 +49,16 @@ struct utmpx32
char __unused[20]; /* Reserved for future use. */
};
+/* The internal interface needed by the compat wrapper functions. */
+extern struct utmpx *__getutxent (void);
+extern struct utmpx *__getutxid (__const struct utmpx *__id);
+extern struct utmpx *__getutxline (__const struct utmpx *__line);
+extern struct utmpx *__pututxline (__const struct utmpx *__utmpx);
+extern void __updwtmpx (__const char *__wtmpx_file,
+ __const struct utmpx *__utmpx);
+extern void __getutmp (__const struct utmpx *__utmpx,
+ struct utmp *__utmp);
+extern void __getutmpx (__const struct utmp *__utmp,
+ struct utmpx *__utmpx);
+
#endif /* utmpx32.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions
index be3d2b96c2..8fb638bb30 100644
--- a/sysdeps/unix/sysv/linux/sparc/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/Versions
@@ -19,6 +19,10 @@ libc {
#errlist-compat 134
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
}
+ GLIBC_2.12 {
+ #errlist-compat 135
+ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
+ }
}
librt {
GLIBC_2.3 {
diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h
index 57d440f273..a41220d14e 100644
--- a/sysdeps/unix/sysv/linux/sys/mount.h
+++ b/sysdeps/unix/sysv/linux/sys/mount.h
@@ -1,5 +1,5 @@
/* Header file for mounting/unmount Linux filesystems.
- Copyright (C) 1996,1997,1998,1999,2000,2004 Free Software Foundation, Inc.
+ Copyright (C) 1996-2000, 2004, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -47,23 +47,46 @@ enum
#define MS_REMOUNT MS_REMOUNT
MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
#define MS_MANDLOCK MS_MANDLOCK
- S_WRITE = 128, /* Write on file/directory/symlink. */
-#define S_WRITE S_WRITE
- S_APPEND = 256, /* Append-only file. */
-#define S_APPEND S_APPEND
- S_IMMUTABLE = 512, /* Immutable file. */
-#define S_IMMUTABLE S_IMMUTABLE
+ MS_DIRSYNC = 128, /* Directory modifications are synchronous. */
+#define MS_DIRSYNC MS_DIRSYNC
MS_NOATIME = 1024, /* Do not update access times. */
#define MS_NOATIME MS_NOATIME
MS_NODIRATIME = 2048, /* Do not update directory access times. */
#define MS_NODIRATIME MS_NODIRATIME
MS_BIND = 4096, /* Bind directory at different place. */
#define MS_BIND MS_BIND
+ MS_MOVE = 8192,
+#define MS_MOVE MS_MOVE
+ MS_REC = 16384,
+#define MS_REC MS_REC
+ MS_SILENT = 32768,
+#define MS_SILENT MS_SILENT
+ MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */
+#define MS_POSIXACL MS_POSIXACL
+ MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */
+#define MS_UNBINDABLE MS_UNBINDABLE
+ MS_PRIVATE = 1 << 18, /* Change to private. */
+#define MS_PRIVATE MS_PRIVATE
+ MS_SLAVE = 1 << 19, /* Change to slave. */
+#define MS_SLAVE MS_SLAVE
+ MS_SHARED = 1 << 20, /* Change to shared. */
+#define MS_SHARED MS_SHARED
+ MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */
+#define MS_RELATIME MS_RELATIME
+ MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */
+#define MS_KERNMOUNT MS_KERNMOUNT
+ MS_I_VERSION = 1 << 23, /* Update inode I_version field. */
+#define MS_I_VERSION MS_I_VERSION
+ MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */
+#define MS_STRICTATIME MS_STRICTATIME
+ MS_ACTIVE = 1 << 30,
+#define MS_ACTIVE MS_ACTIVE
+ MS_NOUSER = 1 << 31
+#define MS_NOUSER MS_NOUSER
};
/* Flags that can be altered by MS_REMOUNT */
-#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME \
- |MS_NODIRATIME)
+#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
/* Magic mount flag number. Has to be or-ed to the flag values. */