1. 31 1月, 2015 1 次提交
    • T
      move MREMAP_MAYMOVE and MREMAP_FIXED out of bits · 2d67ae92
      Trutz Behn 提交于
      the definitions are generic for all kernel archs. exposure of these
      macros now only occurs on the same feature test as for the function
      accepting them, which is believed to be more correct.
      2d67ae92
  2. 23 12月, 2014 1 次提交
    • S
      add new prctl command PR_SET_MM_MAP to sys/prctl.h · 11ac2a6e
      Szabolcs Nagy 提交于
      PR_SET_MM_MAP was introduced as a subcommand for PR_SET_MM in
      linux v3.18 commit f606b77f1a9e362451aca8f81d8f36a3a112139e
      
      the associated struct type is replicated in sys/prctl.h using
      libc types.
      
      example usage:
      
       struct prctl_mm_map *p;
       ...
       prctl(PR_SET_MM, PR_SET_MM_MAP, p, sizeof *p);
      
      the kernel side supported struct size may be queried with
      the PR_SET_MM_MAP_SIZE subcommand.
      11ac2a6e
  3. 21 12月, 2014 3 次提交
  4. 18 12月, 2014 5 次提交
    • R
      fix signedness of WINT_MIN expression · aee9b152
      Rich Felker 提交于
      since wint_t is unsigned, WINT_MIN needs to expand to an unsigned zero.
      aee9b152
    • R
      make the definition of _Complex_I explicitly complex · a9c2294e
      Rich Felker 提交于
      it's unclear whether compilers which provide pure imaginary types
      might produce a pure imaginary expression for 1.0fi. using 0.0f+1.0fi
      ensures that the result is explicitly complex and makes this obvious
      to human readers too.
      a9c2294e
    • R
      make the result of the cimag macro a non-lvalue · 4075af43
      Rich Felker 提交于
      this change is not necessary but helps diagnose invalid code. based on
      patch by Jens Gustedt.
      4075af43
    • R
      fix definition of CMPLX macros in complex.h to work in constant expressions · 5ff2a118
      Rich Felker 提交于
      based on patches by Jens Gustedt. these macros need to be usable in
      static initializers, and the old definitions were not.
      
      there is no portable way to provide correct definitions for these
      macros unless the compiler supports pure imaginary types. a portable
      definition is provided for this case even though there are presently
      no compilers that can use it. gcc and compatible compilers provide a
      builtin function that can be used, but clang fails to support this and
      instead requires a construct which is a constraint violation and which
      is only a constant expression as a clang-specific extension.
      
      since these macros are a namespace violation in pre-C11 profiles, and
      since no known pre-C11 compilers provide any way to define them
      correctly anyway, the definitions have been made conditional on C11.
      5ff2a118
    • R
      add basic dns record parsing functions · aac59c11
      Rich Felker 提交于
      based on patch by Timo Teräs, with some corrections to bounds checking
      code and other minor changes.
      
      while they are borderline scope creep, the functions added are fairly
      small and are roughly the minimum code needed to use the results of
      the res_query API without re-implementing error-prone DNS packet
      parsing, and they are used in practice by some kerberos related
      software and possibly other things. at this time there is no intent to
      implement further nameser.h API functions.
      aac59c11
  5. 10 12月, 2014 1 次提交
    • B
      don't shadow functions with macros in C++ · f164875a
      Bobby Bingham 提交于
      C++ programmers typically expect something like "::function(x,y)" to work
      and may be surprised to find that "(::function)(x,y)" is actually required
      due to the headers declaring a macro version of some standard functions.
      
      We already omit function-like macros for C++ in most cases where there is
      a real function available. This commit extends this to the remaining
      function-like macros which have a real function version.
      f164875a
  6. 15 10月, 2014 1 次提交
  7. 14 10月, 2014 1 次提交
  8. 08 10月, 2014 2 次提交
    • S
      add new linux file sealing api to fcntl.h · a3763d64
      Szabolcs Nagy 提交于
      new in linux v3.17 commit 40e041a2c858b3caefc757e26cb85bfceae5062b
      sealing allows some operations to be blocked on a file which makes
      file access safer when fds are shared between processes (only
      supported for shared mem fds currently)
      
      flags:
      F_SEAL_SEAL prevents further sealing
      F_SEAL_SHRINK prevents file from shrinking
      F_SEAL_GROW prevents file from growing
      F_SEAL_WRITE prevents writes
      
      fcntl commands:
      F_GET_SEALS get the current seal flags
      F_ADD_SEALS add new seal flags
      a3763d64
    • S
      add new IPV6_AUTOFLOWLABEL socket option in netinet/in.h · a0c90b97
      Szabolcs Nagy 提交于
      added in linux v3.17 commit 753a2ad54ef45e3417a9d49537c2b42b04a2e1be
      enables automatic flow label generation on transmit
      a0c90b97
  9. 11 9月, 2014 3 次提交
    • R
      add _DEFAULT_SOURCE feature profile as an alias for _BSD_SOURCE · 5edbc6fe
      Rich Felker 提交于
      as a result of commit ab8f6a6e, this
      definition is now equivalent to the actual "default profile" which
      appears immediately below in features.h, and which defines both
      _BSD_SOURCE and _XOPEN_SOURCE.
      
      the intent of providing a _DEFAULT_SOURCE, which glibc also now
      provides, is to give applications a way to "get back" the default
      feature profile when it was lost either by compiler flags that inhibit
      it (such as -std=c99) or by library-provided predefined macros (such
      as -D_POSIX_C_SOURCE=200809L) which may inhibit exposure of features
      that were otherwise visible by default and which the application may
      need. without _DEFAULT_SOURCE, the application had encode knowledge of
      a particular libc's defaults, and such knowledge was fragile and
      subject to bitrot.
      
      eventually the names _GNU_SOURCE and _BSD_SOURCE should be phased out
      in favor of the more-descriptive and more-accurate _ALL_SOURCE and
      _DEFAULT_SOURCE, leaving the old names as aliases but using the new
      ones internally. however this is a more invasive change that would
      require extensive regression testing, so it is deferred.
      5edbc6fe
    • R
      fix _ALL_SOURCE logic to avoid possible redefinition of _GNU_SOURCE · f929493c
      Rich Felker 提交于
      this could be an error if _GNU_SOURCE was already defined differently
      by the application.
      f929493c
    • R
      fix places where _BSD_SOURCE failed to yield a superset of _XOPEN_SOURCE · ab8f6a6e
      Rich Felker 提交于
      the vast majority of these failures seem to have been oversights at
      the time _BSD_SOURCE was added, or perhaps shortly afterward. the one
      which may have had some reason behind it is omission of setpgrp from
      the _BSD_SOURCE feature profile, since the standard setpgrp interface
      conflicts with a legacy (pre-POSIX) BSD interface by the same name.
      however, such omission is not aligned with our general policy in this
      area (for example, handling of similar _GNU_SOURCE cases) and should
      not be preserved.
      ab8f6a6e
  10. 08 9月, 2014 1 次提交
    • S
      add new F_OFD_* macros to fcntl.h (open file description locks) · 976bb28f
      Szabolcs Nagy 提交于
      open file description locks are inherited across fork and only auto
      dropped after the last fd of the file description is closed, they can be
      used to synchronize between threads that open separate file descriptions
      for the same file.
      
      new in linux 3.15 commit 0d3f7a2dd2f5cf9642982515e020c1aee2cf7af6
      976bb28f
  11. 07 9月, 2014 2 次提交
    • R
      add threads.h and needed per-arch types for mtx_t and cnd_t · b7cf71a1
      Rich Felker 提交于
      based on patch by Jens Gustedt.
      
      mtx_t and cnd_t are defined in such a way that they are formally
      "compatible types" with pthread_mutex_t and pthread_cond_t,
      respectively, when accessed from a different translation unit. this
      makes it possible to implement the C11 functions using the pthread
      functions (which will dereference them with the pthread types) without
      having to use the same types, which would necessitate either namespace
      violations (exposing pthread type names in threads.h) or incompatible
      changes to the C++ name mangling ABI for the pthread types.
      
      for the rest of the types, things are much simpler; using identical
      types is possible without any namespace considerations.
      b7cf71a1
    • R
      add C11 timespec_get function, with associated time.h changes for C11 · 6eb19505
      Rich Felker 提交于
      based on patch by Jens Gustedt for inclusion with C11 threads
      implementation, but committed separately since it's independent of
      threads.
      6eb19505
  12. 06 9月, 2014 1 次提交
  13. 27 8月, 2014 2 次提交
  14. 26 8月, 2014 1 次提交
    • R
      add malloc_usable_size function and non-stub malloc.h · 8d998a7b
      Rich Felker 提交于
      this function is needed for some important practical applications of
      ABI compatibility, and may be useful for supporting some non-portable
      software at the source level too.
      
      I was hesitant to add a function which imposes any constraints on
      malloc internals; however, it turns out that any malloc implementation
      which has realloc must already have an efficient way to determine the
      size of existing allocations, so no additional constraint is imposed.
      
      for now, some internal malloc definitions are duplicated in the new
      source file. if/when malloc is refactored to put them in a shared
      internal header file, these could be removed.
      
      since malloc_usable_size is conventionally declared in malloc.h, the
      empty stub version of this file was no longer suitable. it's updated
      to provide the standard allocator functions, nonstandard ones (even if
      stdlib.h would not expose them based on the feature test macros in
      effect), and any malloc-extension functions provided (currently, only
      malloc_usable_size).
      8d998a7b
  15. 21 8月, 2014 1 次提交
    • R
      add max_align_t definition for C11 and C++11 · 321f4fa9
      Rich Felker 提交于
      unfortunately this needs to be able to vary by arch, because of a huge
      mess GCC made: the GCC definition, which became the ABI, depends on
      quirks in GCC's definition of __alignof__, which does not match the
      formal alignment of the type.
      
      GCC's __alignof__ unexpectedly exposes the an implementation detail,
      its "preferred alignment" for the type, rather than the formal/ABI
      alignment of the type, which it only actually uses in structures. on
      most archs the two values are the same, but on some (at least i386)
      the preferred alignment is greater than the ABI alignment.
      
      I considered using _Alignas(8) unconditionally, but on at least one
      arch (or1k), the alignment of max_align_t with GCC's definition is
      only 4 (even the "preferred alignment" for these types is only 4).
      321f4fa9
  16. 13 8月, 2014 2 次提交
    • S
      fix CPU_EQUAL macro in sched.h · d146d4dc
      Szabolcs Nagy 提交于
      d146d4dc
    • S
      add inline isspace in ctype.h as an optimization · b04971d9
      Szabolcs Nagy 提交于
      isspace can be a bottleneck in a simple parser, inlining it
      gives slightly smaller and faster code
      
      src/locale/pleval.o already had this optimization, the size
      change for other libc functions for i386 is
      
      src/internal/intscan.o     2134    2118   -16
      src/locale/dcngettext.o    1562    1552   -10
      src/network/res_msend.o    1961    1940   -21
      src/network/lookup_name.o  2627    2608   -19
      src/network/getnameinfo.o  1814    1811    -3
      src/network/lookup_serv.o   643     624   -19
      src/stdio/vfscanf.o        2675    2663   -12
      src/stdlib/atoll.o          117     107   -10
      src/stdlib/atoi.o            95      91    -4
      src/stdlib/atol.o            95      91    -4
      src/time/strptime.o        1515    1503   -12
      (TOTALS)                 432451  432321  -130
      b04971d9
  17. 08 8月, 2014 1 次提交
  18. 31 7月, 2014 2 次提交
  19. 21 7月, 2014 3 次提交
  20. 20 7月, 2014 1 次提交
    • B
      add issetugid function to check for elevated privilege · ddddec10
      Brent Cook 提交于
      this function provides a way for third-party library code to use the
      same logic that's used internally in libc for suppressing untrusted
      input/state (e.g. the environment) when the application is running
      with privleges elevated by the setuid or setgid bit or some other
      mechanism. its semantics are intended to match the openbsd function by
      the same name.
      
      there was some question as to whether this function is necessary:
      getauxval(AT_SECURE) was proposed as an alternative. however, this has
      several drawbacks. the most obvious is that it asks programmers to be
      aware of an implementation detail of ELF-based systems (the aux
      vector) rather than simply the semantic predicate to be checked. and
      trying to write a safe, reliable version of issetugid in terms of
      getauxval is difficult. for example, early versions of the glibc
      getauxval did not report ENOENT, which could lead to false negatives
      if AT_SECURE was not present in the aux vector (this could probably
      only happen when running on non-linux kernels under linux emulation,
      since glibc does not support linux versions old enough to lack
      AT_SECURE). as for musl, getauxval has always properly reported
      errors, but prior to commit 7bece9c2,
      the musl implementation did not emulate AT_SECURE if missing, which
      would result in a false positive. since musl actually does partially
      support kernels that lack AT_SECURE, this was problematic.
      
      the intent is that library authors will use issetugid if its
      availability is detected at build time, and only fall back to the
      unreliable alternatives on systems that lack it.
      
      patch by Brent Cook. commit message/rationale by Rich Felker.
      ddddec10
  21. 19 7月, 2014 1 次提交
    • S
      add or1k (OpenRISC 1000) architecture port · 200d1547
      Stefan Kristiansson 提交于
      With the exception of a fenv implementation, the port is fully featured.
      The port has been tested in or1ksim, the golden reference functional
      simulator for OpenRISC 1000.
      It passes all libc-test tests (except the math tests that
      requires a fenv implementation).
      
      The port assumes an or1k implementation that has support for
      atomic instructions (l.lwa/l.swa).
      
      Although it passes all the libc-test tests, the port is still
      in an experimental state, and has yet experienced very little
      'real-world' use.
      200d1547
  22. 22 6月, 2014 1 次提交
    • R
      implement fmtmsg function · 5474a346
      Rich Felker 提交于
      contributed by Isaac Dunham. this seems to be the last interface that
      was missing for complete POSIX 2008 base + XSI coverage.
      5474a346
  23. 21 6月, 2014 1 次提交
    • R
      remove hack in syslog.h that resulted in aliasing violations · 70d9c303
      Rich Felker 提交于
      this issue affected the prioritynames and facilitynames arrays which
      are only provided when requested (usually by syslogd implementations)
      and which are presently defined as compound literals. the aliasing
      violation seems to have been introduced as a workaround for bad
      behavior by gcc's -Wwrite-strings option, but it caused compilers to
      completely optimize out the contents of prioritynames and
      facilitynames since, under many usage cases, the aliasing rules prove
      that the contents are never accessed.
      70d9c303
  24. 20 6月, 2014 1 次提交
    • R
      implement sendmmsg and recvmmsg · acb7e049
      Rich Felker 提交于
      these are not pure syscall wrappers because they have to work around
      kernel API bugs on 64-bit archs. the workarounds could probably be
      made somewhat more efficient, but at the cost of more complexity. this
      may be revisited later.
      acb7e049
  25. 04 6月, 2014 1 次提交
    • R
      add support for ipv6 scope_id to getaddrinfo and getnameinfo · bdad2fef
      Rich Felker 提交于
      for all address types, a scope_id specified as a decimal value is
      accepted. for addresses with link-local scope, a string containing the
      interface name is also accepted.
      
      some changes are made to error handling to avoid unwanted fallbacks in
      the case where the scope_id is invalid: if an earlier name lookup
      backend fails with an error rather than simply "0 results", this
      failure now suppresses any later attempts with other backends.
      
      in getnameinfo, a light "itoa" type function is added for generating
      decimal scope_id results, and decimal port strings for services are
      also generated using this function now so as not to pull in the
      dependency on snprintf.
      
      in netdb.h, a definition for the NI_NUMERICSCOPE flag is added. this
      is required by POSIX (it was previously missing) and needed to allow
      callers to suppress interface-name lookups.
      bdad2fef