1. 09 9月, 2020 1 次提交
  2. 31 12月, 2019 2 次提交
    • S
      add clone3 syscall number from linux v5.3 · fa765ca5
      Szabolcs Nagy 提交于
      the syscall number is reserved on all targets, but it is not wired up
      on all targets, see
      
        linux commit 8f6ccf6159aed1f04c6d179f61f6fb2691261e84
        Merge tag 'clone3-v5.3' of ... brauner/linux
      
        linux commit 8f3220a806545442f6f26195bc491520f5276e7c
        arch: wire-up clone3() syscall
      
        linux commit 7f192e3cd316ba58c88dfa26796cf77789dd9872
        fork: add clone3
      fa765ca5
    • S
      add pidfd_open syscall number from linux v5.3 · a4528911
      Szabolcs Nagy 提交于
      see
      
        linux commit 7615d9e1780e26e0178c93c55b73309a5dc093d7
        arch: wire-up pidfd_open()
      
        linux commit 32fcb426ec001cb6d5a4a195091a8486ea77e2df
        pid: add pidfd_open()
      a4528911
  3. 03 11月, 2019 4 次提交
    • R
      move time_t and suseconds_t definitions to common alltypes.h.in · d6dcfe4d
      Rich Felker 提交于
      now that all 32-bit archs have 64-bit time_t (and suseconds_t), the
      arch-provided _Int64 macro (long or long long, as appropriate) can be
      used to define them, and arch-specific definitions are no longer
      needed.
      d6dcfe4d
    • R
      add x32 bits/ioctl_fix.h defining time-related sockios macros · 5127927f
      Rich Felker 提交于
      these definitions are copied from generic bits/ioctl.h, so that x32
      keeps the "_OLD" versions (which are already time64 on x32) when
      32-bit archs switch to 64-bit time_t.
      5127927f
    • R
      add back x32 bits/socket.h defining time-related socket options · aad3e0c5
      Rich Felker 提交于
      these definitions are merely copied from the top-level sys/socket.h,
      so there is no functional change at this time. however, the top-level
      definitions will change to use the time64 "_NEW" versions on 32-bit
      archs when time_t is switched over to 64-bit. this commit ensures that
      change will be suppressed on x32.
      aad3e0c5
    • R
      fix x32 msghdr struct by removing x32 bits/socket.h · 573a4d2d
      Rich Felker 提交于
      being that it contains pointers and (from the kernel perspective,
      which is wrong) size_t members, x32 uses the 32-bit version of the
      structure, not a half-32-bit, half-64-bit layout like we had here. the
      x86_64 definition was inadvertently copied when x32 was first added.
      
      unlike errors in the opposite direction (missing padding), this error
      was not easily detected breakage, because the layout of the commonly
      used initial subset of members still matched. breakage could only be
      observed in the presence of control messages or flags.
      573a4d2d
  4. 18 10月, 2019 4 次提交
    • R
      move pthread types out of per-arch alltypes.h · 2d3083e7
      Rich Felker 提交于
      policy has long been that these definitions are purely a function of
      whether long/pointer is 32- or 64-bit, and that they are not allowed
      to vary per-arch. move the definition to the shared alltypes.h.in
      fragment, using integer constant expressions in terms of sizeof to
      vary the array dimensions appropriately. I'm not sure whether this is
      more or less ugly than using preprocessor conditionals and two sets of
      definitions here, but either way is a lot less ugly than repeating the
      same thing for every arch.
      2d3083e7
    • R
      define LONG_MAX via arch alltypes.h, strip down bits/limits.h · 7cc79d10
      Rich Felker 提交于
      LLONG_MAX is uniform for all archs we support and plenty of header and
      code level logic assumes it is, so it does not make sense for limits.h
      bits mechanism to pretend it's variable.
      
      LONG_BIT can be defined in terms of LONG_MAX; there's no reason to put
      it in bits.
      
      by moving LONG_MAX definition to __LONG_MAX in alltypes.h and moving
      LLONG_MAX out of bits, there are now no plain-C limits that are
      defined in the bits header, so the bits header only needs to be
      included in the POSIX or extended profiles. this allows the feature
      test macro logic to be removed from the bits header, facilitating a
      long-term goal of getting such logic out of bits.
      
      having __LONG_MAX in alltypes.h will allow further generalization of
      headers.
      
      archs without a constant PAGESIZE no longer need bits/limits.h at all.
      7cc79d10
    • R
      move __BYTE_ORDER definition to alltypes.h · 97d35a55
      Rich Felker 提交于
      this change is motivated by the intersection of several factors.
      presently, despite being a nonstandard header, endian.h is exposing
      the unprefixed byte order macros and functions only if _BSD_SOURCE or
      _GNU_SOURCE is defined. this is to accommodate use of endian.h from
      other headers, including bits headers, which need to define structure
      layout in terms of endianness. with time64 switch-over, even more
      headers will need to do this.
      
      at the same time, the resolution of Austin Group issue 162 makes
      endian.h a standard header for POSIX-future, requiring that it expose
      the unprefixed macros and the functions even in standards-conforming
      profiles. changes to meet this new requirement would break existing
      internal usage of endian.h by causing it to violate namespace where
      it's used.
      
      instead, have the arch's alltypes.h define __BYTE_ORDER, either as a
      fixed constant or depending on the right arch-specific predefined
      macros for determining endianness. explicit literals 1234 and 4321 are
      used instead of __LITTLE_ENDIAN and __BIG_ENDIAN so that there's no
      danger of getting the wrong result if a macro is undefined and
      implicitly evaluates to 0 at the preprocessor level.
      
      the powerpc (32-bit) bits/endian.h being removed had logic for varying
      endianness, but our powerpc arch has never supported that and has
      always been big-endian-only. this logic is not carried over to the new
      __BYTE_ORDER definition in alltypes.h.
      97d35a55
    • R
      remove per-arch definitions for va_list · 00ec11d1
      Rich Felker 提交于
      now that commit f7f10797 removed the
      legacy i386 conditional definition, va_list is in no way
      arch-specific, and has no reason to be in the future. move it to the
      shared part of alltypes.h.in
      00ec11d1
  5. 11 9月, 2019 1 次提交
    • S
      add new syscall numbers from linux v5.2 · b6076309
      Szabolcs Nagy 提交于
      new mount api syscalls were added, same numers on all targets, see
      
        linux commit a07b20004793d8926f78d63eb5980559f7813404
        vfs: syscall: Add open_tree(2) to reference or clone a mount
      
        linux commit 2db154b3ea8e14b04fee23e3fdfd5e9d17fbc6ae
        vfs: syscall: Add move_mount(2) to move mounts around
      
        linux commit 24dcb3d90a1f67fe08c68a004af37df059d74005
        vfs: syscall: Add fsopen() to prepare for superblock creation
      
        linux commit ecdab150fddb42fe6a739335257949220033b782
        vfs: syscall: Add fsconfig() for configuring and managing a context
      
        linux commit 93766fbd2696c2c4453dd8e1070977e9cd4e6b6d
        vfs: syscall: Add fsmount() to create a mount for a superblock
      
        linux commit cf3cba4a429be43e5527a3f78859b1bfd9ebc5fb
        vfs: syscall: Add fspick() to select a superblock for reconfiguration
      
        linux commit 9c8ad7a2ff0bfe58f019ec0abc1fb965114dde7d
        uapi, x86: Fix the syscall numbering of the mount API syscalls [ver #2]
      
        linux commit d8076bdb56af5e5918376cd1573a6b0007fc1a89
        uapi: Wire up the mount API syscalls on non-x86 arches [ver #2]
      b6076309
  6. 09 9月, 2019 1 次提交
    • R
      honor __WCHAR_TYPE__ on archs with legacy long definition of wchar_t · 1f0e9f9c
      Rich Felker 提交于
      historically, a number of 32-bit archs used long rather than int for
      wchar_t, for no good reason. GCC still uses the historical types, but
      clang replaced them all with int, and it seems PCC uses int too.
      mismatching the compiler's type for wchar_t is not an option due to
      wide string literals.
      
      note that the mismatch does not affect C++ ABI since wchar_t is its
      own builtin type/keyword in C++, distinct from both int and long, not
      a typedef.
      
      i386 already worked around this by honoring __WCHAR_TYPE__ if defined
      by the compiler, and only using the official legacy ABI type if not.
      add the same to the other affected archs.
      
      it might make sense at some point to switch to using int as the
      default if __WCHAR_TYPE__ is not defined, if the expectations is that
      new compilers will treat int as the correct choice, but it's unlikely
      that the case where __WCHAR_TYPE__ is undefined will ever be used
      anyway. I actually wanted to move the definition of wchar_t to the
      top-level shared alltypes.h.in, using __WCHAR_TYPE__ and falling back
      to int if not defined, but that can't be done without assuming all
      compilers define __WCHAR_TYPE__ thanks to some pathological archs
      where the ABI has wchar_t as an unsigned type.
      1f0e9f9c
  7. 31 7月, 2019 1 次提交
    • R
      move IPC_64 from public bits/ipc.h to syscall_arch.h · f56d57f8
      Rich Felker 提交于
      the definition of the IPC_64 macro controls the interface between libc
      and the kernel through syscalls; it's not a public API. the meaning is
      rather obscure. long ago, Linux's sysvipc *id_ds structures used
      16-bit uids/gids and wrong types for a few other fields. this was in
      the libc5 era, before glibc. the IPC_64 flag (64 is a misnomer; it's
      more like 32) tells the kernel to use the modern[-ish] versions of the
      structures.
      
      the definition of IPC_64 has nothing to do with whether the arch is
      32- or 64-bit. rather, due to either historical accident or
      intentional obnoxiousness, the kernel only accepts and masks off the
      0x100 IPC_64 flag conditional on CONFIG_ARCH_WANT_IPC_PARSE_VERSION,
      i.e. for archs that want to provide, or that accidentally provided,
      both. for archs which don't define this option, no masking is
      performed and commands with the 0x100 bit set will fail as invalid. so
      ultimately, the definition is just a matter of matching an arbitrary
      switch defined per-arch in the kernel.
      f56d57f8
  8. 30 7月, 2019 1 次提交
    • R
      extricate bits/sem.h from x32 time_t hack · 1afe5f3e
      Rich Felker 提交于
      various padding fields in the generic bits/sem.h were defined in terms
      of time_t as a cheap hack standing in for "kernel long", to allow x32
      to use the generic version of the file. this was a really bad idea, as
      it ended up getting copied into lots of arch-specific versions of the
      bits file, and is a blocker to changing time_t to 64-bit on 32-bit
      archs.
      
      this commit adds an x32-specific version of the header, and changes
      padding type back from time_t to long (currently the same type on all
      archs but x32) in the generic header and all the others the hack got
      copied into.
      1afe5f3e
  9. 02 7月, 2019 1 次提交
    • S
      add new syscall numbers from linux v5.1 · f3f96f2d
      Szabolcs Nagy 提交于
      syscall numbers are now synced up across targets (starting from 403 the
      numbers are the same on all targets other than an arch specific offset)
      
      IPC syscalls sem*, shm*, msg* got added where they were missing (except
      for semop: only semtimedop got added), the new semctl, shmctl, msgctl
      imply IPC_64, see
      
        linux commit 0d6040d4681735dfc47565de288525de405a5c99
        arch: add split IPC system calls where needed
      
      new 64bit time_t syscall variants got added on 32bit targets, see
      
        linux commit 48166e6ea47d23984f0b481ca199250e1ce0730a
        y2038: add 64-bit time_t syscalls to all 32-bit architectures
      
      new async io syscalls got added, see
      
        linux commit 2b188cc1bb857a9d4701ae59aa7768b5124e262e
        Add io_uring IO interface
      
        linux commit edafccee56ff31678a091ddb7219aba9b28bc3cb
        io_uring: add support for pre-mapped user IO buffers
      
      a new syscall got added that uses the fd of /proc/<pid> as a stable
      handle for processes: allows sending signals without pid reuse issues,
      intended to eventually replace rt_sigqueueinfo, kill, tgkill and
      rt_tgsigqueueinfo, see
      
        linux commit 3eb39f47934f9d5a3027fe00d906a45fe3a15fad
        signal: add pidfd_send_signal() syscall
      
      on some targets (arm, m68k, s390x, sh) some previously missing syscall
      numbers got added as well.
      f3f96f2d
  10. 10 12月, 2018 1 次提交
  11. 18 7月, 2018 1 次提交
    • S
      add support for arch-specific ptrace command macros · df6d9450
      Szabolcs Nagy 提交于
      sys/ptrace.h is target specific, use bits/ptrace.h to add target
      specific macro definitions.
      
      these macros are kept in the generic sys/ptrace.h even though some
      targets don't support them:
      
      PTRACE_GETREGS
      PTRACE_SETREGS
      PTRACE_GETFPREGS
      PTRACE_SETFPREGS
      PTRACE_GETFPXREGS
      PTRACE_SETFPXREGS
      
      so no macro definition got removed in this patch on any target. only
      s390x has a numerically conflicting macro definition (PTRACE_SINGLEBLOCK).
      
      the PT_ aliases follow glibc headers, otherwise the definitions come
      from linux uapi headers except ones that are skipped in glibc and
      there is no real kernel support (s390x PTRACE_*_AREA) or need special
      type definitions (mips PTRACE_*_WATCH_*) or only relevant for linux
      2.4 compatibility (PTRACE_OLDSETOPTIONS).
      df6d9450
  12. 11 3月, 2018 2 次提交
  13. 15 12月, 2017 1 次提交
  14. 06 11月, 2017 1 次提交
  15. 05 1月, 2017 1 次提交
    • R
      reduce impact of REG_* namespace pollution in x86[_64] signal.h · 150747b4
      Rich Felker 提交于
      when _GNU_SOURCE is defined, which is always the case when compiling
      c++ with gcc, these macros for the the indices in gregset_t are
      exposed and likely to clash with applications. by using enum constants
      rather than macros defined with integer literals, we can make the
      clash slightly less likely to break software. the macros are still
      defined in case anything checks for them with #ifdef, but they're
      defined to expand to themselves so that non-file-scope (e.g.
      namespaced) identifiers by the same names still work.
      
      for the sake of avoiding mistakes, the changes were generated with sed
      via the command:
      
      sed -i -e 's/#define  *\(REG_[A-Z_0-9]\{1,\}\)  *\([0-9]\{1,\}\)'\
      '/enum { \1 = \2 };\n#define \1 \1/' \
      arch/i386/bits/signal.h arch/x86_64/bits/signal.h arch/x32/bits/signal.h
      150747b4
  16. 30 12月, 2016 1 次提交
  17. 20 10月, 2016 1 次提交
  18. 04 7月, 2016 3 次提交
  19. 10 6月, 2016 1 次提交
    • S
      add preadv2 and pwritev2 syscall numbers for linux v4.6 · 78b1f3cb
      Szabolcs Nagy 提交于
      the syscalls take an additional flag argument, they were added in commit
      f17d8b35452cab31a70d224964cd583fb2845449 and a RWF_HIPRI priority hint
      flag was added to linux/fs.h in 97be7ebe53915af504fb491fb99f064c7cf3cb09.
      
      the syscall is not allocated for microblaze and sh yet.
      78b1f3cb
  20. 12 5月, 2016 3 次提交
  21. 19 3月, 2016 2 次提交
    • S
      add copy_file_range syscall numbers from linux v4.5 · 84d4f5ee
      Szabolcs Nagy 提交于
      it was introduced for offloading copying between regular files
      in linux commit 29732938a6289a15e907da234d6692a2ead71855
      
      (microblaze and sh does not yet have the syscall number.)
      84d4f5ee
    • S
      deduplicate bits/mman.h · e9f1c798
      Szabolcs Nagy 提交于
      currently five targets use the same mman.h constants and the rest
      share most constants too, so move them to sys/mman.h before the
      bits/mman.h include where the differences can be corrected by
      redefinition of the macros.
      
      this fixes two minor bugs: POSIX_MADV_DONTNEED was wrong on most
      targets (it should be the same as MADV_DONTNEED), and sh defined
      the x86-only MAP_32BIT mmap flag.
      e9f1c798
  22. 28 1月, 2016 1 次提交
    • R
      deduplicate the bulk of the arch bits headers · 4dfac115
      Rich Felker 提交于
      all bits headers that were identical for a number of 'clean' archs are
      moved to the new arch/generic tree. in addition, a few headers that
      differed only cosmetically from the new generic version are removed.
      
      additional deduplication may be possible in mman.h and in several
      headers (limits.h, posix.h, stdint.h) that mostly depend on whether
      the arch is 32- or 64-bit, but they are left alone for now because
      greater gains are likely possible with more invasive changes to header
      logic, which is beyond the scope of this commit.
      4dfac115
  23. 27 1月, 2016 3 次提交
    • S
      add MCL_ONFAULT and MLOCK_ONFAULT mlockall and mlock2 flags · 789ff6a9
      Szabolcs Nagy 提交于
      they lock faulted pages into memory (useful when a small part of a
      large mapped file needs efficient access), new in linux v4.4, commit
      b0f205c2a3082dd9081f9a94e50658c5fa906ff1
      
      MLOCK_* is not in the POSIX reserved namespace for sys/mman.h
      789ff6a9
    • S
      add mlock2 syscall number from linux v4.4 · 51d5f139
      Szabolcs Nagy 提交于
      this is mlock with a flags argument, new in linux commit
      a8ca5d0ecbdde5cc3d7accacbd69968b0c98764e
      
      as usual microblaze and sh don't have allocated syscall number yet.
      51d5f139
    • S
      add new membarrier, userfaultfd and switch_endian syscalls · 09001a8f
      Szabolcs Nagy 提交于
      new in linux v4.3 added for aarch64, arm, i386, mips, or1k, powerpc,
      x32 and x86_64.
      
      membarrier is a system wide memory barrier, moves most of the
      synchronization cost to one side, new in kernel commit
      5b25b13ab08f616efd566347d809b4ece54570d1
      
      userfaultfd is useful for qemu and is new in kernel commit
      8d2afd96c20316d112e04d935d9e09150e988397
      
      switch_endian is powerpc only for switching endianness, new in commit
      529d235a0e190ded1d21ccc80a73e625ebcad09b
      09001a8f
  24. 02 4月, 2015 1 次提交
    • R
      move O_PATH definition back to arch bits · fd427c4e
      Rich Felker 提交于
      while it's the same for all presently supported archs, it differs at
      least on sparc, and conceptually it's no less arch-specific than the
      other O_* macros. O_SEARCH and O_EXEC are still defined in terms of
      O_PATH in the main fcntl.h.
      fd427c4e
  25. 18 3月, 2015 1 次提交
    • R
      fix MINSIGSTKSZ values for archs with large signal contexts · d5a50453
      Rich Felker 提交于
      the previous values (2k min and 8k default) were too small for some
      archs. aarch64 reserves 4k in the signal context for future extensions
      and requires about 4.5k total, and powerpc reportedly uses over 2k.
      the new minimums are chosen to fit the saved context and also allow a
      minimal signal handler to run.
      
      since the default (SIGSTKSZ) has always been 6k larger than the
      minimum, it is also increased to maintain the 6k usable by the signal
      handler. this happens to be able to store one pathname buffer and
      should be sufficient for calling any function in libc that doesn't
      involve conversion between floating point and decimal representations.
      
      x86 (both 32-bit and 64-bit variants) may also need a larger minimum
      (around 2.5k) in the future to support avx-512, but the values on
      these archs are left alone for now pending further analysis.
      
      the value for PTHREAD_STACK_MIN is not increased to match MINSIGSTKSZ
      at this time. this is so as not to preclude applications from using
      extremely small thread stacks when they know they will not be handling
      signals. unfortunately cancellation and multi-threaded set*id() use
      signals as an implementation detail and therefore require a stack
      large enough for a signal context, so applications which use extremely
      small thread stacks may still need to avoid using these features.
      d5a50453