[PATCH v3 00/48] Support for cut-down Linux syscalls

Markos Chandras markos.chandras at gmail.com
Wed Jan 23 11:41:24 UTC 2013


From: Markos Chandras <markos.chandras at imgtec.com>

Hi,

This is the v3 of the patchset I sent on the 26th of November 2012[1].

Changes since v2:

- Base patches on the uClibc master branch
- Fix libc_hidden_def for faccessat when implementing the access syscall[2]
- Make vfork act as fork using the clone syscall[3]
- Fix #ifdef clause for the stat syscall[4]
- c6x is a new arch, so it does not need ARCH_HAS_DEPRECATED_SYSCALLS[5]
- Fix non-LFS compilation problems[6]
- Add new struct stat and struct statfs for new architectures so we can
pass them directly to syscalls and avoid conversion code[7]

All patches are based on the uClibc master branch and are available in the
following git repository:

https://github.com/hwoarang/uClibc
git://github.com/hwoarang/uClibc.git master-syscalls-for-upstream

[1]: http://lists.uclibc.org/pipermail/uclibc/2012-November/047209.html
[2]: http://lists.uclibc.org/pipermail/uclibc/2012-November/047269.html
[3]: http://lists.uclibc.org/pipermail/uclibc/2012-November/047277.html
[4]: http://lists.uclibc.org/pipermail/uclibc/2012-November/047290.html
[5]: http://lists.uclibc.org/pipermail/uclibc/2012-November/047253.html
[6]: http://lists.uclibc.org/pipermail/uclibc/2012-December/047314.html
[7]: http://lists.uclibc.org/pipermail/uclibc/2012-November/047255.html

Markos Chandras (48):
  libc/sysdeps: Add new interfaces for new architectures
  Config.in: Introduce symbol for arches with deprecated syscalls
  Makefile.in: Use non-legacy interfaces for new architectures
  dup2: Use dup3 if arch does not have the dup2 syscall
  chmod: Use fchmodat if arch does not have the chmod syscall
  access: Use faccessat if arch does not have the access syscall
  link: Use linkat if arch does not have the link syscall
  unlink: Use unlinkat if arch does not have the unlink syscall
  mknod: Use mknodat if arch does not have the mknod syscall
  chown: Use fchownat if arch does not have the chown syscall
  rmdir: Use unlinkat if arch does not have the rmdir syscall
  lchown: Use fchownat if arch does not have the lchown syscall
  mkdir: Use mkdirat if arch does not have the mkdir syscall
  rename: Use renameat if arch does not have the rename syscall
  readlink: Use readlinkat if arch does not have the readlink syscall
  symlink: Use symlinkat if arch does not have the symlink syscall
  utimes: Use utimensat if arch does not have the utimes syscall
  pipe: Use pipe2 if arch does not have the pipe syscall
  epoll: Use epoll_create1 if arch does not have the epoll_create
    syscall
  epoll: Use epoll_pwait if arch does not have the epoll_wait syscall
  inotify_init: Use inotify_init1 if inotify_init syscall is not defined
  utime: Use utimensat if arch does not have the utime syscall
  vfork: Use clone if arch does not have the vfork syscall
  fork: Use clone if arch does not have the fork syscall
  ftruncate: Use ftruncate64 if arch does not have the ftruncate syscall
  truncate: Use truncate64 if arch does not have the truncate syscall
  sendfile: Use sendfile64 if arch does not have the sendfile syscall
  lseek: Use lseek64 is arch does not have the lseek syscall
  getdents: Use getdents64 if arch does not have the getdents syscall
  statfs: Use statfs64 if arch does not have the statfs syscall
  libc/statfs64: Skip conversion code for new architectures
  fstat: Use fstat64 if arch does not have the fstat syscall
  fstatat: Use newfstatat only for 64-bit operations
  fstatat64: Use newfstatat only for 64-bit operations
  fstatat{64}: No conversion code is needed for new architectures
  stat64: Use fstatat64 if arch does not have the stat64 syscall
  lstat: Use fstatat64 if arch does not have the lstat syscall
  lstat64: Use fstatat64 if arch does not have the lstat64 syscall
  ustat: Add ustat stub for arches that don't have the ustat system call
  stat: Use fstatat64 if arch does not have the stat syscall
  fstatfs: Add __libc_fstatfs wrapper
  fstatfs64: Prefer fstatfs64 system call instead of __libc_fstatfs
  fcntl: Use fcntl64 is arch does not have the fcntl syscall
  open64: Use openat if arch does not have the open syscall
  not-cancel.h: Use openat if arch does not have the open syscall
  open: Use openat if arch does not have the open syscall
  ldso: Use newer syscalls if arch does not have the deprecated syscalls
  libc/ipc: Allow architectures to define their own __IPC_64 macro

 Makefile.in                                        |  15 ++
 extra/Configs/Config.alpha                         |   1 +
 extra/Configs/Config.arm                           |   1 +
 extra/Configs/Config.avr32                         |   1 +
 extra/Configs/Config.bfin                          |   1 +
 extra/Configs/Config.cris                          |   1 +
 extra/Configs/Config.e1                            |   1 +
 extra/Configs/Config.frv                           |   1 +
 extra/Configs/Config.h8300                         |   1 +
 extra/Configs/Config.hppa                          |   1 +
 extra/Configs/Config.i386                          |   1 +
 extra/Configs/Config.i960                          |   1 +
 extra/Configs/Config.ia64                          |   1 +
 extra/Configs/Config.in                            |   2 +
 extra/Configs/Config.in.arch                       |   8 +
 extra/Configs/Config.m68k                          |   1 +
 extra/Configs/Config.microblaze                    |   5 +
 extra/Configs/Config.mips                          |   1 +
 extra/Configs/Config.nios                          |   1 +
 extra/Configs/Config.nios2                         |   1 +
 extra/Configs/Config.powerpc                       |   1 +
 extra/Configs/Config.sh                            |   1 +
 extra/Configs/Config.sh64                          |   1 +
 extra/Configs/Config.sparc                         |   1 +
 extra/Configs/Config.v850                          |   1 +
 extra/Configs/Config.vax                           |   1 +
 extra/Configs/Config.x86_64                        |   1 +
 extra/Configs/Config.xtensa                        |   5 +
 include/stdio.h                                    |   1 +
 include/sys/sendfile.h                             |   1 +
 include/sys/stat.h                                 |   4 +
 include/sys/statfs.h                               |   1 +
 include/unistd.h                                   |   8 +
 ldso/include/dl-syscall.h                          |  33 +++-
 ldso/include/ldso.h                                |   4 +
 libc/misc/statfs/fstatfs64.c                       |  14 ++
 libc/misc/statfs/statfs64.c                        |   9 +
 libc/misc/sysvipc/ipc.h                            |   2 +
 .../linux/common-no-legacy/bits/align64bit.h       |  17 ++
 libc/sysdeps/linux/common-no-legacy/bits/dirent.h  |  55 ++++++
 .../linux/common-no-legacy/bits/kernel_stat.h      |  20 +++
 libc/sysdeps/linux/common-no-legacy/bits/stat.h    | 195 +++++++++++++++++++++
 libc/sysdeps/linux/common-no-legacy/bits/statfs.h  |  78 +++++++++
 libc/sysdeps/linux/common/Makefile.in              |   4 +
 libc/sysdeps/linux/common/__syscall_fcntl.c        |  18 +-
 libc/sysdeps/linux/common/__syscall_fcntl64.c      |   1 +
 libc/sysdeps/linux/common/access.c                 |  10 ++
 libc/sysdeps/linux/common/chmod.c                  |   9 +
 libc/sysdeps/linux/common/chown.c                  |   9 +
 libc/sysdeps/linux/common/dup2.c                   |  17 ++
 libc/sysdeps/linux/common/dup3.c                   |   1 +
 libc/sysdeps/linux/common/epoll.c                  |  18 ++
 libc/sysdeps/linux/common/faccessat.c              |   1 +
 libc/sysdeps/linux/common/fchmodat.c               |   1 +
 libc/sysdeps/linux/common/fchownat.c               |   1 +
 libc/sysdeps/linux/common/fork.c                   |  19 ++
 libc/sysdeps/linux/common/fstat.c                  |  20 +++
 libc/sysdeps/linux/common/fstat64.c                |   4 +
 libc/sysdeps/linux/common/fstatat.c                |  18 +-
 libc/sysdeps/linux/common/fstatat64.c              |   8 +-
 libc/sysdeps/linux/common/fstatfs.c                |  21 ++-
 libc/sysdeps/linux/common/ftruncate.c              |  18 ++
 libc/sysdeps/linux/common/getdents.c               |  26 ++-
 libc/sysdeps/linux/common/getdents64.c             |   2 +-
 libc/sysdeps/linux/common/inotify.c                |   7 +
 libc/sysdeps/linux/common/lchown.c                 |  11 ++
 libc/sysdeps/linux/common/link.c                   |   9 +
 libc/sysdeps/linux/common/linkat.c                 |   1 +
 libc/sysdeps/linux/common/lseek.c                  |   7 +
 libc/sysdeps/linux/common/lstat.c                  |  17 +-
 libc/sysdeps/linux/common/lstat64.c                |  11 +-
 libc/sysdeps/linux/common/mkdir.c                  |   8 +
 libc/sysdeps/linux/common/mkdirat.c                |   1 +
 libc/sysdeps/linux/common/mknod.c                  |   8 +
 libc/sysdeps/linux/common/not-cancel.h             |   7 +
 libc/sysdeps/linux/common/open.c                   |  18 ++
 libc/sysdeps/linux/common/open64.c                 |   5 +-
 libc/sysdeps/linux/common/pipe.c                   |   8 +
 libc/sysdeps/linux/common/readlink.c               |   8 +
 libc/sysdeps/linux/common/readlinkat.c             |   1 +
 libc/sysdeps/linux/common/rename.c                 |   9 +
 libc/sysdeps/linux/common/renameat.c               |   1 +
 libc/sysdeps/linux/common/rmdir.c                  |   8 +
 libc/sysdeps/linux/common/sendfile.c               |  48 ++++-
 libc/sysdeps/linux/common/sendfile64.c             |   1 +
 libc/sysdeps/linux/common/stat.c                   |  17 +-
 libc/sysdeps/linux/common/stat64.c                 |  20 ++-
 libc/sysdeps/linux/common/statfs.c                 |  31 +++-
 libc/sysdeps/linux/common/stubs.c                  |  31 +++-
 libc/sysdeps/linux/common/symlink.c                |  16 +-
 libc/sysdeps/linux/common/symlinkat.c              |   1 +
 libc/sysdeps/linux/common/truncate.c               |  22 +++
 libc/sysdeps/linux/common/truncate64.c             |   4 +-
 libc/sysdeps/linux/common/unlink.c                 |   8 +
 libc/sysdeps/linux/common/unlinkat.c               |   1 +
 libc/sysdeps/linux/common/ustat.c                  |   2 +
 libc/sysdeps/linux/common/utime.c                  |  25 ++-
 libc/sysdeps/linux/common/utimes.c                 |  22 ++-
 libc/sysdeps/linux/common/vfork.c                  |  21 +++
 .../linuxthreads.old/sysdeps/pthread/not-cancel.h  |   9 +
 .../linuxthreads/sysdeps/pthread/not-cancel.h      |   9 +
 .../nptl/sysdeps/unix/sysv/linux/not-cancel.h      |   9 +
 102 files changed, 1129 insertions(+), 39 deletions(-)
 create mode 100644 libc/sysdeps/linux/common-no-legacy/bits/align64bit.h
 create mode 100644 libc/sysdeps/linux/common-no-legacy/bits/dirent.h
 create mode 100644 libc/sysdeps/linux/common-no-legacy/bits/kernel_stat.h
 create mode 100644 libc/sysdeps/linux/common-no-legacy/bits/stat.h
 create mode 100644 libc/sysdeps/linux/common-no-legacy/bits/statfs.h

-- 
1.8.1.1




More information about the uClibc mailing list