public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* m68k moved to glibc ports repository
@ 2006-02-28 10:25 Roland McGrath
  2006-02-28 14:42 ` Jakub Jelinek
  0 siblings, 1 reply; 3+ messages in thread
From: Roland McGrath @ 2006-02-28 10:25 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: GNU libc hacker

The m68k port has not had very active maintenance, and does not have a
working NPTL or Hurd port.  I've moved it over to the ports repository.
The commit ACL for the its directories lists schwab.  Let me know if there
is anyone else who should be on the list.  It's been the precedent to post
to libc-ports when people (other than me ;-) commit changes to their ports.
But that is up to those who want to work on m68k.


Thanks,
Roland

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: m68k moved to glibc ports repository
  2006-02-28 10:25 m68k moved to glibc ports repository Roland McGrath
@ 2006-02-28 14:42 ` Jakub Jelinek
  2006-02-28 19:09   ` Roland McGrath
  0 siblings, 1 reply; 3+ messages in thread
From: Jakub Jelinek @ 2006-02-28 14:42 UTC (permalink / raw)
  To: Roland McGrath; +Cc: Andreas Schwab, GNU libc hacker

On Tue, Feb 28, 2006 at 02:25:05AM -0800, Roland McGrath wrote:
> The m68k port has not had very active maintenance, and does not have a
> working NPTL or Hurd port.  I've moved it over to the ports repository.
> The commit ACL for the its directories lists schwab.  Let me know if there
> is anyone else who should be on the list.  It's been the precedent to post
> to libc-ports when people (other than me ;-) commit changes to their ports.
> But that is up to those who want to work on m68k.

The move of m68k and hppa patch broke x86_64, ppc64, sparc32 and sh
arches that used a couple of files from the now moved ports.
This patch should fix that.

2006-02-28  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: Include x86_64
	umount.c rather than hppa umount.c.
	* sysdeps/unix/sysv/linux/sparc/sparc32/chown.c: Include sh chown.c
	rather than m68k chown.c.
	* sysdeps/unix/sysv/linux/sparc/sparc32/fchownat.c: Include sh
	fchownat.c rather than m68k fchownat.c.
	* sysdeps/unix/sysv/linux/sh/chown.c: Copy over from m68k chown.c.
	* sysdeps/unix/sysv/linux/sh/fchownat.c: Copy over from m68k
	fchownat.c.
	* sysdeps/unix/sysv/linux/x86_64/brk.c: Copy over from hppa brk.c.
	* sysdeps/unix/sysv/linux/x86_64/umount.c: Copy over from hppa
	umount.c.

--- libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c.jj	2004-04-09 20:21:54.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c	2006-02-28 15:34:43.000000000 +0100
@@ -1 +1 @@
-#include <sysdeps/unix/sysv/linux/hppa/umount.c>
+#include <sysdeps/unix/sysv/linux/x86_64/umount.c>
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/chown.c.jj	2000-01-17 06:20:58.000000000 +0100
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/chown.c	2006-02-28 15:36:39.000000000 +0100
@@ -1 +1 @@
-#include <sysdeps/unix/sysv/linux/m68k/chown.c>
+#include <sysdeps/unix/sysv/linux/sh/chown.c>
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/fchownat.c.jj	2005-11-11 20:54:45.000000000 +0100
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/fchownat.c	2006-02-28 15:36:50.000000000 +0100
@@ -1 +1 @@
-#include <sysdeps/unix/sysv/linux/m68k/fchownat.c>
+#include <sysdeps/unix/sysv/linux/sh/fchownat.c>
--- libc/sysdeps/unix/sysv/linux/sh/chown.c.jj	2000-06-12 22:35:14.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/sh/chown.c	2006-01-09 22:53:48.000000000 +0100
@@ -1 +1,69 @@
-#include <sysdeps/unix/sysv/linux/m68k/chown.c>
+/* Copyright (C) 1998,2000,2002,2003,2006 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+#include <linux/posix_types.h>
+#include <kernel-features.h>
+
+#ifdef __NR_chown32
+# if __ASSUME_32BITUIDS == 0
+/* This variable is shared with all files that need to check for 32bit
+   uids.  */
+extern int __libc_missing_32bit_uids;
+# endif
+#endif /* __NR_chown32 */
+
+int
+__chown (const char *file, uid_t owner, gid_t group)
+{
+#if __ASSUME_32BITUIDS > 0
+  return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
+#else
+# ifdef __NR_chown32
+  if (__libc_missing_32bit_uids <= 0)
+    {
+      int result;
+      int saved_errno = errno;
+
+      result = INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
+      if (result == 0 || errno != ENOSYS)
+	return result;
+
+      __set_errno (saved_errno);
+      __libc_missing_32bit_uids = 1;
+    }
+# endif /* __NR_chown32 */
+
+  if (((owner + 1) > (gid_t) ((__kernel_uid_t) -1U))
+      || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return INLINE_SYSCALL (chown, 3, CHECK_STRING (file), owner, group);
+#endif
+}
+libc_hidden_def (__chown)
+weak_alias (__chown, chown)
--- libc/sysdeps/unix/sysv/linux/sh/fchownat.c.jj	2005-11-11 20:50:39.000000000 +0100
+++ libc/sysdeps/unix/sysv/linux/sh/fchownat.c	2006-01-09 22:53:48.000000000 +0100
@@ -1 +1,122 @@
-#include <sysdeps/unix/sysv/linux/m68k/fchownat.c>
+/* Copyright (C) 2005, 2006 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+#include <linux/posix_types.h>
+#include <kernel-features.h>
+
+#ifdef __NR_chown32
+# if __ASSUME_32BITUIDS == 0
+/* This variable is shared with all files that need to check for 32bit
+   uids.  */
+extern int __libc_missing_32bit_uids;
+# endif
+#endif /* __NR_chown32 */
+
+int
+fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag)
+{
+  if (flag & ~AT_SYMLINK_NOFOLLOW)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  char *buf = NULL;
+
+  if (fd != AT_FDCWD && file[0] != '/')
+    {
+      size_t filelen = strlen (file);
+      static const char procfd[] = "/proc/self/fd/%d/%s";
+      /* Buffer for the path name we are going to use.  It consists of
+	 - the string /proc/self/fd/
+	 - the file descriptor number
+	 - the file name provided.
+	 The final NUL is included in the sizeof.   A bit of overhead
+	 due to the format elements compensates for possible negative
+	 numbers.  */
+      size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+      buf = alloca (buflen);
+
+      __snprintf (buf, buflen, procfd, fd, file);
+      file = buf;
+    }
+
+  int result;
+  INTERNAL_SYSCALL_DECL (err);
+
+#if __ASSUME_32BITUIDS > 0
+  if (flag & AT_SYMLINK_NOFOLLOW)
+    result = INTERNAL_SYSCALL (lchown32, err, 3, CHECK_STRING (file), owner,
+			       group);
+  else
+    result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
+			       group);
+#else
+# ifdef __NR_chown32
+  if (__libc_missing_32bit_uids <= 0)
+    {
+      if (flag & AT_SYMLINK_NOFOLLOW)
+	result = INTERNAL_SYSCALL (lchown32, err, 3, CHECK_STRING (file),
+				   owner, group);
+      else
+	result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
+				   group);
+
+      if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
+	return result;
+      if (INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
+	goto fail;
+
+      __libc_missing_32bit_uids = 1;
+    }
+# endif /* __NR_chown32 */
+
+  if (((owner + 1) > (gid_t) ((__kernel_uid_t) -1U))
+      || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  if (flag & AT_SYMLINK_NOFOLLOW)
+    result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner,
+			       group);
+  else
+    result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner,
+			       group);
+#endif
+
+  if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+    {
+    fail:
+      __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf);
+      result = -1;
+    }
+
+  return result;
+}
--- libc/sysdeps/unix/sysv/linux/x86_64/brk.c.jj	2001-09-19 12:31:31.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/x86_64/brk.c	2006-02-28 15:33:48.000000000 +0100
@@ -1 +1,42 @@
-#include <sysdeps/unix/sysv/linux/hppa/brk.c>
+/* brk system call for Linux/x86_64.
+   Copyright (C) 1995, 1996, 2000, 2001, 2006 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sysdep.h>
+
+/* This must be initialized data because commons can't have aliases.  */
+void *__curbrk = 0;
+
+int
+__brk (void *addr)
+{
+  void *newbrk;
+
+  __curbrk = newbrk = (void *) INLINE_SYSCALL (brk, 1, addr);
+
+  if (newbrk < addr)
+    {
+      __set_errno (ENOMEM);
+      return -1;
+    }
+
+  return 0;
+}
+weak_alias (__brk, brk)
--- libc/sysdeps/unix/sysv/linux/x86_64/umount.c.jj	2001-09-19 12:31:31.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/x86_64/umount.c	2006-02-28 15:34:18.000000000 +0100
@@ -1 +1,31 @@
-#include <sysdeps/unix/sysv/linux/hppa/umount.c>
+/* Copyright (C) 2000, 2001, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Huggins-Daines <dhd@debian.org>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* Since we don't have an oldumount system call, do what the kernel
+   does down here.  */
+
+extern long int __umount2 (const char *name, int flags);
+
+long int
+__umount (const char *name)
+{
+  return __umount2 (name, 0);
+}
+
+weak_alias (__umount, umount);


	Jakub

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: m68k moved to glibc ports repository
  2006-02-28 14:42 ` Jakub Jelinek
@ 2006-02-28 19:09   ` Roland McGrath
  0 siblings, 0 replies; 3+ messages in thread
From: Roland McGrath @ 2006-02-28 19:09 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Andreas Schwab, GNU libc hacker

Applied.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-02-28 19:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-28 10:25 m68k moved to glibc ports repository Roland McGrath
2006-02-28 14:42 ` Jakub Jelinek
2006-02-28 19:09   ` Roland McGrath

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).