1. 17 8月, 2020 1 次提交
  2. 29 10月, 2019 1 次提交
    • R
      add time64 symbol name redirects to public headers, under arch control · 1febd21d
      Rich Felker 提交于
      a _REDIR_TIME64 macro is introduced, which the arch's alltypes.h is
      expected to define, to control redirection of symbol names for
      interfaces that involve time_t and derived types. this ensures that
      object files will only be linked to libc interfaces matching the ABI
      whose headers they were compiled against.
      
      along with time32 compat shims, which will be introduced separately,
      the redirection also makes it possible for a single libc (static or
      shared) to be used with object files produced with either the old
      (32-bit time_t) headers or the new ones after 64-bit time_t switchover
      takes place. mixing of such object files (or shared libraries) in the
      same program will also be possible, but must be done with care; ABI
      between libc and a consumer of the libc interfaces is guaranteed to
      match by the the symbol name redirection, but pairwise ABI between
      consumers of libc that define interfaces between each other in terms
      of time_t is not guaranteed to match.
      
      this change adds a dependency on an additional "GNU C" feature to the
      public headers for existing 32-bit archs, which is generally
      undesirable; however, the feature is one which glibc has depended on
      for a long time, and thus which any viable alternative compiler is
      going to need to provide. 64-bit archs are not affected, nor will
      future 32-bit archs be, regardless of whether they are "new" on the
      kernel side (e.g. riscv32) or just newly-added (e.g. a new sparc or
      xtensa port). the same applies to newly-added ABIs for existing
      machine-level archs.
      1febd21d
  3. 10 12月, 2018 1 次提交
  4. 11 3月, 2018 1 次提交
  5. 23 2月, 2018 1 次提交
  6. 31 8月, 2016 1 次提交
  7. 10 6月, 2016 1 次提交
  8. 27 1月, 2016 2 次提交
    • S
      fix siginfo_t for mips · 9a3b8f97
      Szabolcs Nagy 提交于
      si_errno and si_code are swapped in mips siginfo_t compared to other
      archs and some si_code values are different.  This fix is required
      for POSIX timers to work.
      
      based on patch by Dmitry Ivanov.
      9a3b8f97
    • S
      move bits/signal.h include close to the top of signal.h · 22f84829
      Szabolcs Nagy 提交于
      only have code above the bits/signal.h include that is necessary.
      (some types are used for the ucontext struct and mips has to
      override a few macro definitions)
      
      this way mips bits/signal.h will be able to affect siginfo_t.
      22f84829
  9. 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
  10. 05 3月, 2015 1 次提交
  11. 11 9月, 2014 1 次提交
    • 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
  12. 25 5月, 2014 1 次提交
    • R
      overhaul siginfo_t definition in signal.h · 44d28e55
      Rich Felker 提交于
      the main motivation for this change is that, with the previous
      definition, it was arguably illegal, in standard C, to initialize both
      si_value and si_pid/si_uid with designated initializers, due to the
      rule that only one member of a union can have an initializer. whether
      or not this affected real-world application code, it affected some
      internal code, and clang was producing warnings (and possibly
      generating incorrect code).
      
      the new definition uses a more complex hierarchy of structs and unions
      to avoid the need to initialize more than one member of a single union
      in usage cases that make sense. further work would be needed to
      eliminate even the ones with no practical applications.
      
      at the same time, some fixes are made to the exposed names for
      nonstandard fields, to match what software using them expects.
      44d28e55
  13. 19 3月, 2014 2 次提交
  14. 07 1月, 2014 1 次提交
  15. 21 10月, 2013 1 次提交
    • R
      fix multiple minor namespace issues in headers · 8f035960
      Rich Felker 提交于
      fcntl.h: AT_* is not a reserved namespace so extensions cannot be
      exposed by default.
      
      langinfo.h: YESSTR and NOSTR were removed from the standard.
      
      limits.h: NL_NMAX was removed from the standard.
      
      signal.h: the conditional for NSIG was wrongly checking _XOPEN_SOURCE
      rather than _BSD_SOURCE. this was purely a mistake; it doesn't even
      match the commit message from the commit that added it.
      8f035960
  16. 25 7月, 2013 2 次提交
    • R
      fix incorrect type for new si_call_addr in siginfo_t · a926fe26
      Rich Felker 提交于
      apparently the original kernel commit's i386 version of siginfo.h
      defined this field as unsigned int, but the asm-generic file always
      had void *. unsigned int is obviously not a suitable type for an
      address, in a non-arch-specific file, and glibc also has void * here,
      so I think void * is the right type for it.
      
      also fix redundant type specifiers.
      a926fe26
    • S
      update siginfo according to linux headers · b54f169b
      Szabolcs Nagy 提交于
      linux commit a0727e8ce513fe6890416da960181ceb10fbfae6 (2012-04-12)
      added siginfo fields for SIGSYS (seccomp uses it)
      
      linux commit ad5fa913991e9e0f122b021e882b0d50051fbdbc (2009-09-16)
      added siginfo field and si_code values for SIGBUS (hwpoison signal)
      b54f169b
  17. 22 7月, 2013 1 次提交
    • R
      refactor headers, especially alltypes.h, and improve C++ ABI compat · 9448b051
      Rich Felker 提交于
      the arch-specific bits/alltypes.h.sh has been replaced with a generic
      alltypes.h.in and minimal arch-specific bits/alltypes.h.in.
      
      this commit is intended to have no functional changes except:
      - exposing additional symbols that POSIX allows but does not require
      - changing the C++ name mangling for some types
      - fixing the signedness of blksize_t on powerpc (POSIX requires signed)
      - fixing the limit macros for sig_atomic_t on x86_64
      - making dev_t an unsigned type (ABI matching goal, and more logical)
      
      in addition, some types that were wrongly defined with long on 32-bit
      archs were changed to int, and vice versa; this change is
      non-functional except for the possibility of making pointer types
      mismatch, and only affects programs that were using them incorrectly,
      and only at build-time, not runtime.
      
      the following changes were made in the interest of moving
      non-arch-specific types out of the alltypes system and into the
      headers they're associated with, and also will tend to improve
      application compatibility:
      - netdb.h now includes netinet/in.h (for socklen_t and uint32_t)
      - netinet/in.h now includes sys/socket.h and inttypes.h
      - sys/resource.h now includes sys/time.h (for struct timeval)
      - sys/wait.h now includes signal.h (for siginfo_t)
      - langinfo.h now includes nl_types.h (for nl_item)
      
      for the types in stdint.h:
      - types which are of no interest to other headers were moved out of
        the alltypes system.
      - fast types for 8- and 64-bit are hard-coded (at least for now); only
        the 16- and 32-bit ones have reason to vary by arch.
      
      and the following types have been changed for C++ ABI purposes;
      - mbstate_t now has a struct tag, __mbstate_t
      - FILE's struct tag has been changed to _IO_FILE
      - DIR's struct tag has been changed to __dirstream
      - locale_t's struct tag has been changed to __locale_struct
      - pthread_t is defined as unsigned long in C++ mode only
      - fpos_t now has a struct tag, _G_fpos64_t
      - fsid_t's struct tag has been changed to __fsid_t
      - idtype_t has been made an enum type (also required by POSIX)
      - nl_catd has been changed from long to void *
      - siginfo_t's struct tag has been removed
      - sigset_t's has been given a struct tag, __sigset_t
      - stack_t has been given a struct tag, sigaltstack
      - suseconds_t has been changed to long on 32-bit archs
      - [u]intptr_t have been changed from long to int rank on 32-bit archs
      - dev_t has been made unsigned
      
      summary of tests that have been performed against these changes:
      - nsz's libc-test (diff -u before and after)
      - C++ ABI check symbol dump (diff -u before, after, glibc)
      - grepped for __NEED, made sure types needed are still in alltypes
      - built gcc 3.4.6
      9448b051
  18. 05 3月, 2013 1 次提交
  19. 07 12月, 2012 1 次提交
  20. 04 12月, 2012 1 次提交
    • R
      feature test macros: make _GNU_SOURCE enable everything · 769fd4ce
      Rich Felker 提交于
      previously, a few BSD features were enabled only by _BSD_SOURCE, not
      by _GNU_SOURCE. since _BSD_SOURCE is default in the absence of other
      feature test macros, this made adding _GNU_SOURCE to a project not a
      purely additive feature test macro; it actually caused some features
      to be suppressed.
      
      most of the changes made by this patch actually bring musl in closer
      alignment with the glibc behavior for _GNU_SOURCE. the only exceptions
      are the added visibility of functions like strlcpy which were BSD-only
      due to being disliked/rejected by glibc maintainers. here, I feel the
      consistency of having _GNU_SOURCE mean "everything", and especially
      the property of it being purely additive, are more valuable than
      hiding functions which glibc does not have.
      769fd4ce
  21. 01 12月, 2012 1 次提交
  22. 26 11月, 2012 1 次提交
  23. 22 11月, 2012 1 次提交
    • R
      add back NSIG, removed from powerpc in last commit, but for all archs · 65b98213
      Rich Felker 提交于
      unlike the previous definition, NSIG/_NSIG is supposed to be one more
      than the highest signal number. adding this will allow simplifying
      libc-internal code that makes signal-related syscalls, which can be
      done as a later step. some apps might use it too; while this usage is
      questionable, it's at least not insane.
      65b98213
  24. 08 9月, 2012 1 次提交
    • R
      default features: make musl usable without feature test macros · c1a9658b
      Rich Felker 提交于
      the old behavior of exposing nothing except plain ISO C can be
      obtained by defining __STRICT_ANSI__ or using a compiler option (such
      as -std=c99) that predefines it. the new default featureset is POSIX
      with XSI plus _BSD_SOURCE. any explicit feature test macros will
      inhibit the default.
      
      installation docs have also been updated to reflect this change.
      c1a9658b
  25. 07 9月, 2012 1 次提交
    • R
      use restrict everywhere it's required by c99 and/or posix 2008 · 400c5e5c
      Rich Felker 提交于
      to deal with the fact that the public headers may be used with pre-c99
      compilers, __restrict is used in place of restrict, and defined
      appropriately for any supported compiler. we also avoid the form
      [restrict] since older versions of gcc rejected it due to a bug in the
      original c99 standard, and instead use the form *restrict.
      400c5e5c
  26. 13 7月, 2012 2 次提交
  27. 23 5月, 2012 2 次提交
  28. 14 4月, 2012 1 次提交
    • R
      rename __sa_restorer to sa_restorer in struct sigaction · 0115a6ed
      Rich Felker 提交于
      this is legal since sa_* is in the reserved namespace for signal.h,
      per posix. note that the sa_restorer field is not used anywhere, so
      programs that are trying to use it may still break, but at least
      they'll compile. if it turns out such programs actually need to be
      able to set their own sa_restorer to function properly, i'll add the
      necessary code to sigaction.c later.
      0115a6ed
  29. 26 1月, 2012 1 次提交
  30. 22 9月, 2011 1 次提交
  31. 20 9月, 2011 3 次提交
  32. 12 9月, 2011 1 次提交
  33. 03 9月, 2011 1 次提交