aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r--sysdeps/unix/sysv/linux/connect.S1
-rw-r--r--sysdeps/unix/sysv/linux/i386/chown.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/fcntl.c5
-rw-r--r--sysdeps/unix/sysv/linux/m68k/chown.c3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/chown.c17
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/chown.c4
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list2
7 files changed, 23 insertions, 13 deletions
diff --git a/sysdeps/unix/sysv/linux/connect.S b/sysdeps/unix/sysv/linux/connect.S
index d1dd69a217..2de35180fc 100644
--- a/sysdeps/unix/sysv/linux/connect.S
+++ b/sysdeps/unix/sysv/linux/connect.S
@@ -2,4 +2,5 @@
#define __socket __libc_connect
#define NARGS 3
#include <socket.S>
+strong_alias (__libc_connect, __connect_internal)
weak_alias (__libc_connect, __connect)
diff --git a/sysdeps/unix/sysv/linux/i386/chown.c b/sysdeps/unix/sysv/linux/i386/chown.c
index 025e58df08..a54f2b5dd3 100644
--- a/sysdeps/unix/sysv/linux/i386/chown.c
+++ b/sysdeps/unix/sysv/linux/i386/chown.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2002 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
@@ -154,10 +154,12 @@ compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
#endif
#ifdef __NR_lchown
+INTDEF2(__real_chown, __chown)
strong_alias (__real_chown, _real_chown)
versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
#else
+INTDEF2(__chown_is_lchown, __chown)
strong_alias (__chown_is_lchown, __chown_is_lchown21)
strong_alias (__chown_is_lchown, _chown_is_lchown21)
versioned_symbol (libc, __chown_is_lchown21, __chown, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/i386/fcntl.c b/sysdeps/unix/sysv/linux/i386/fcntl.c
index 6e4d591c58..3c013cc962 100644
--- a/sysdeps/unix/sysv/linux/i386/fcntl.c
+++ b/sysdeps/unix/sysv/linux/i386/fcntl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002 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
@@ -25,6 +25,8 @@
#include <sys/syscall.h>
#include "../kernel-features.h"
+#undef __fcntl
+
extern int __syscall_fcntl (int __fd, int __cmd, ...);
#ifdef __NR_fcntl64
extern int __syscall_fcntl64 (int __fd, int __cmd, ...);
@@ -130,6 +132,7 @@ __libc_fcntl (int fd, int cmd, ...)
return -1;
#endif /* __ASSUME_FCNTL64 */
}
+INTDEF2(__libc_fcntl, __fcntl);
weak_alias (__libc_fcntl, __fcntl)
weak_alias (__libc_fcntl, fcntl)
diff --git a/sysdeps/unix/sysv/linux/m68k/chown.c b/sysdeps/unix/sysv/linux/m68k/chown.c
index 50e11c1aa9..f8f4b5c0af 100644
--- a/sysdeps/unix/sysv/linux/m68k/chown.c
+++ b/sysdeps/unix/sysv/linux/m68k/chown.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002 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
@@ -71,4 +71,5 @@ __chown (const char *file, uid_t owner, gid_t group)
return INLINE_SYSCALL (chown, 3, CHECK_STRING (file), owner, group);
#endif
}
+INTDEF(__chown)
weak_alias (__chown, chown)
diff --git a/sysdeps/unix/sysv/linux/powerpc/chown.c b/sysdeps/unix/sysv/linux/powerpc/chown.c
index a446277c96..23eaefa5e6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/chown.c
+++ b/sysdeps/unix/sysv/linux/powerpc/chown.c
@@ -1,5 +1,5 @@
/* chown() compatibility.
- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000, 2002 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
@@ -44,7 +44,7 @@ __chown (const char *file, uid_t owner, gid_t group)
int loopct;
int filelen;
static int libc_old_chown = 0 /* -1=old linux, 1=new linux, 0=unknown */;
-
+
if (libc_old_chown == 1)
return __syscall_chown (file, owner, group);
@@ -62,7 +62,7 @@ __chown (const char *file, uid_t owner, gid_t group)
libc_old_chown = -1;
}
#endif
-
+
err = __readlink (file, link, PATH_MAX+1);
if (err == -1)
{
@@ -83,7 +83,7 @@ __chown (const char *file, uid_t owner, gid_t group)
for (loopct = 0; loopct < 128; loopct++)
{
int linklen;
-
+
if (err >= PATH_MAX+1)
{
errno = ENAMETOOLONG;
@@ -93,13 +93,13 @@ __chown (const char *file, uid_t owner, gid_t group)
link[err] = 0; /* Null-terminate string, just-in-case. */
linklen = strlen (link) + 1;
-
+
if (link[0] == '/')
memcpy (path, link, linklen);
else
{
filelen = strlen (path);
-
+
while (filelen > 1 && path[filelen-1] == '/')
filelen--;
while (filelen > 0 && path[filelen-1] != '/')
@@ -113,9 +113,9 @@ __chown (const char *file, uid_t owner, gid_t group)
}
err = __readlink(path, link, PATH_MAX+1);
-
+
if (err == -1)
- {
+ {
errno = old_errno;
return __lchown(path, owner, group);
}
@@ -123,6 +123,7 @@ __chown (const char *file, uid_t owner, gid_t group)
errno = ELOOP;
return -1;
}
+INTDEF(__chown)
#include <shlib-compat.h>
versioned_symbol (libc, __chown, chown, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/chown.c b/sysdeps/unix/sysv/linux/s390/s390-32/chown.c
index 1ccf578766..64d7285f13 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/chown.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/chown.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002 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
@@ -109,10 +109,12 @@ strong_alias (__chown_is_lchown, _chown_is_lchown)
compat_symbol (libc, __chown_is_lchown, __chown, GLIBC_2_0);
compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
+INTDEF2(__real_chown, __chown)
strong_alias (__real_chown, _real_chown)
versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
#else
+INTDEF2(__real_chown, __chown)
strong_alias (__real_chown, __chown)
weak_alias (__real_chown, chown)
#endif
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 7ca6e48c8c..e443ca60c1 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -8,7 +8,7 @@ create_module EXTRA create_module 3 create_module
delete_module EXTRA delete_module 3 delete_module
fdatasync - fdatasync i:i fdatasync
flock - flock i:ii __flock flock
-fork - fork i: __libc_fork __fork fork
+fork - fork i: __libc_fork __fork fork __fork_internal
get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
getegid - getegid i: __getegid getegid
geteuid - geteuid i: __geteuid geteuid