1. 09 9月, 2020 1 次提交
  2. 17 8月, 2020 1 次提交
  3. 08 8月, 2019 1 次提交
  4. 21 10月, 2016 1 次提交
  5. 16 6月, 2015 1 次提交
    • R
      byte-based C locale, phase 3: make MB_CUR_MAX variable to activate code · f22a9eda
      Rich Felker 提交于
      this patch activates the new byte-based C locale (high bytes treated
      as abstract code unit "characters" rather than decoded as multibyte
      characters) by making the value of MB_CUR_MAX depend on the active
      locale. for the C locale, the LC_CTYPE category pointer is null,
      yielding a value of 1. all other locales yield a value of 4.
      f22a9eda
  6. 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
  7. 08 8月, 2014 1 次提交
  8. 11 2月, 2014 1 次提交
  9. 25 11月, 2013 1 次提交
    • R
      restore type of NULL to void * except when used in C++ programs · c8a9c221
      Rich Felker 提交于
      unfortunately this eliminates the ability of the compiler to diagnose
      some dangerous/incorrect usage, but POSIX requires (as an extension to
      the C language, i.e. CX shaded) that NULL have type void *. plain C
      allows it to be defined as any null pointer constant.
      
      the definition 0L is preserved for C++ rather than reverting to plain
      0 to avoid dangerous behavior in non-conforming programs which use
      NULL as a variadic sentinel. (it's impossible to use (void *)0 for C++
      since C++ lacks the proper implicit pointer conversions, and other
      popular alternatives like the GCC __null extension seem non-conforming
      to the standard's requirements.)
      c8a9c221
  10. 21 11月, 2013 1 次提交
  11. 14 8月, 2013 1 次提交
    • R
      provide declarations for strtod_l and family · 35eb1a1a
      Rich Felker 提交于
      these aliases were originally intended to be for ABI compatibility
      only, but their presence caused regressions in broken gnulib-based
      software whose configure scripts detect the existing of these
      functions then use them without declarations, resulting in bogus
      return values.
      35eb1a1a
  12. 11 8月, 2013 1 次提交
    • R
      fix definitions of WIFSTOPPED and WIFSIGNALED to support up to signal 127 · 41c63282
      Rich Felker 提交于
      mips has signal numbers up to 127 (formerly, up to 128, but the last
      one never worked right and caused kernel panic when used), so 127 in
      the "signal number" field of the wait status is insufficient for
      determining that the process was stopped. in addition, a nonzero value
      in the upper bits must be present, indicating the signal number which
      caused the process to be stopped.
      
      details on this issue can be seen in the email with message id
      CAAG0J9-d4BfEhbQovFqUAJ3QoOuXScrpsY1y95PrEPxA5DWedQ@mail.gmail.com on
      the linux-mips mailing list, archived at:
      http://www.linux-mips.org/archives/linux-mips/2013-06/msg00552.html
      and in the associated thread about fixing the mips kernel bug.
      
      commit 4a96b948687166da26a6c327e6c6733ad2336c5c fixed the
      corresponding issue in uClibc, but introduced a multiple-evaluation
      issue for the WIFSTOPPED macro.
      
      for the most part, none of these issues affected pure musl systems,
      since musl has up until now (incorrectly) defined SIGRTMAX as 64 on
      all archs, even mips. however, interpreting status of non-musl
      programs on mips may have caused problems. with this change, the full
      range of signal numbers can be made available on mips.
      41c63282
  13. 21 2月, 2013 1 次提交
  14. 19 1月, 2013 1 次提交
    • R
      use a common definition of NULL as 0L for C and C++ · 41d7c77d
      Rich Felker 提交于
      the historical mess of having different definitions for C and C++
      comes from the historical C definition as (void *)0 and the fact that
      (void *)0 can't be used in C++ because it does not convert to other
      pointer types implicitly. however, using plain 0 in C++ exposed bugs
      in C++ programs that call variadic functions with NULL as an argument
      and (wrongly; this is UB) expect it to arrive as a null pointer. on
      64-bit machines, the high bits end up containing junk. glibc dodges
      the issue by using a GCC extension __null to define NULL; this is
      observably non-conforming because a conforming application could
      observe the definition of NULL via stringizing and see that it is
      neither an integer constant expression with value zero nor such an
      expression cast to void.
      
      switching to 0L eliminates the issue and provides compatibility with
      broken applications, since on all musl targets, long and pointers have
      the same size, representation, and argument-passing convention. we
      could maintain separate C and C++ definitions of NULL (i.e. just use
      0L on C++ and use (void *)0 on C) but after careful analysis, it seems
      extremely difficult for a C program to even determine whether NULL has
      integer or pointer type, much less depend in subtle, unintentional
      ways, on whether it does. C89 seems to have no way to make the
      distinction. on C99, the fact that (int)(void *)0 is not an integer
      constant expression, along with subtle VLA/sizeof semantics, can be
      used to make the distinction, but many compilers are non-conforming
      and give the wrong result to this test anyway. on C11, _Generic can
      trivially make the distinction, but it seems unlikely that code
      targetting C11 would be so backwards in caring which definition of
      NULL an implementation uses.
      
      as such, the simplest path of using the same definition for NULL in
      both C and C++ was chosen. the #undef directive was also removed so
      that the compiler can catch and give a warning or error on
      redefinition if buggy programs have defined their own versions of
      NULL prior to inclusion of standard headers.
      41d7c77d
  15. 22 10月, 2012 1 次提交
  16. 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
  17. 07 9月, 2012 2 次提交
  18. 26 8月, 2012 2 次提交
  19. 04 6月, 2012 1 次提交
    • R
      _GNU_SOURCE is supposed to imply _LARGEFILE64_SOURCE · 3b94daba
      Rich Felker 提交于
      this is ugly and stupid, but now that the *64 symbol names exist, a
      lot of broken GNU software detects them in configure, then either
      breaks during build due to missing off64_t definition, or attempts to
      compile without function declarations/prototypes. "fixing" it here is
      easier than telling everyone to add yet another feature test macro to
      their builds.
      3b94daba
  20. 23 5月, 2012 1 次提交
  21. 04 5月, 2012 1 次提交
    • R
      add support for ugly *64 functions with _LARGEFILE64_SOURCE · 2dd8d5e1
      Rich Felker 提交于
      musl does not support legacy 32-bit-off_t whatsoever. off_t is always
      64 bit, and correct programs that use off_t and the standard functions
      will just work out of the box. (on glibc, they would require
      -D_FILE_OFFSET_BITS=64 to work.) however, some programs instead define
      _LARGEFILE64_SOURCE and use alternate versions of all the standard
      types and functions with "64" appended to their names.
      
      we do not want code to actually get linked against these functions
      (it's ugly and inconsistent), so macros are used instead of prototypes
      with weak aliases in the library itself. eventually the weak aliases
      may be added at the library level for the sake of using code that was
      originally built against glibc, but the macros will still be the
      desired solution in the headers.
      2dd8d5e1
  22. 10 4月, 2012 1 次提交
  23. 06 2月, 2012 1 次提交
  24. 12 9月, 2011 1 次提交
  25. 22 4月, 2011 1 次提交
  26. 13 4月, 2011 1 次提交
  27. 31 3月, 2011 1 次提交
  28. 16 2月, 2011 2 次提交
  29. 14 2月, 2011 1 次提交
  30. 12 2月, 2011 1 次提交