1. 24 5月, 2012 2 次提交
    • R
      fix issue with longjmp out of signal handlers and cancellation · 4da268f7
      Rich Felker 提交于
      stale state information indicating that a thread was possibly blocked
      at a cancellation point could get left behind if longjmp was used to
      exit a signal handler that interrupted a cancellation point.
      
      to fix the issue, we throw away the state information entirely and
      simply compare the saved instruction pointer to a range of code
      addresses in the __syscall_cp_asm function. all the ugly PIC work
      (which becomes minimal anyway with this approach) is defered to
      cancellation time instead of happening at every syscall, which should
      improve performance too.
      
      this commit also fixes cancellation on arm, which was mildly broken
      (race condition, not checking cancellation flag once inside the
      cancellation point zone). apparently i forgot to implement that. the
      new arm code is untested, but appears correct; i'll test and fix it
      later if there are problems.
      4da268f7
    • R
      simplify cancellation push/pop slightly · cfd892fd
      Rich Felker 提交于
      no need to pass unnecessary extra arguments on to the core code in
      pthread_create.c. this just wastes cycles and code bloat.
      cfd892fd
  2. 23 5月, 2012 8 次提交
    • R
      debloat jmp_buf in _GNU_SOURCE mode · 25d575ed
      Rich Felker 提交于
      i originally made it the same size as the bloated GNU version, which
      contains space for saved signal mask, but this makes some structures
      containing jmp_buf become much larger for no benefit. we will never
      use the signal mask field with plain setjmp; sigsetjmp serves that
      purpose.
      25d575ed
    • R
      remove everything related to forkall · 0c29adfe
      Rich Felker 提交于
      i made a best attempt, but the intended semantics of this function are
      fundamentally contradictory. there is no consistent way to handle
      ownership of locks when forking a multi-threaded process. the code
      could have worked by accident for programs that only used normal
      mutexes and nothing else (since they don't actually store or care
      about their owner), but that's about it. broken-by-design interfaces
      that aren't even in glibc (only solaris) don't belong in musl.
      0c29adfe
    • R
      some feature test fixes for unistd.h · af3330d7
      Rich Felker 提交于
      af3330d7
    • R
      fix missing _BSD_SOURCE support in bits/*.h · 030b452b
      Rich Felker 提交于
      this is actually rather ugly, and would get even uglier if we ever
      want to support further feature test macros. at some point i may
      factor the bits headers into separate files for C base, POSIX base,
      and nonstandard extensions (the only distinctions that seem to matter
      now) and then the logic for which to include can go in the main header
      rather than being duplicated for each arch. the downside of this is
      that it would result in more files having to be opened during
      compilation, so as long as the ugliness does not grow, i'm inclined to
      leave it alone for now.
      030b452b
    • R
      96601e3c
    • R
      various header cleanups, some related to _BSD_SOURCE addition · 671ffab7
      Rich Felker 提交于
      there is no reason to avoid multiple identical macro definitions; this
      is perfectly legal C, and even with the maximal warning options
      enabled, gcc does not issue any warning for it.
      671ffab7
    • R
      bsd_signal is a legacy (removed) XSI function, not needed in _BSD_SOURCE · 9f370fa9
      Rich Felker 提交于
      its only purpose was for use on non-BSD systems that implement sysv
      semantics for signal() by default.
      9f370fa9
    • R
      support _BSD_SOURCE feature test macro · 419ae6d5
      Rich Felker 提交于
      patch by Isaac Dunham. matched closely (maybe not exact) to glibc's
      idea of what _BSD_SOURCE should make visible.
      419ae6d5
  3. 22 5月, 2012 2 次提交
  4. 21 5月, 2012 1 次提交
  5. 17 5月, 2012 1 次提交
  6. 15 5月, 2012 1 次提交
  7. 14 5月, 2012 6 次提交
  8. 13 5月, 2012 8 次提交
  9. 11 5月, 2012 7 次提交
  10. 10 5月, 2012 2 次提交
  11. 09 5月, 2012 1 次提交
    • R
      omit declaration of basename wrongly interpreted as prototype in C++ · 37bb3cce
      Rich Felker 提交于
      the non-prototype declaration of basename in string.h is an ugly
      compromise to avoid breaking 2 types of broken software:
      
      1. programs which assume basename is declared in string.h and thus
      would suffer from dangerous pointer-truncation if an implicit
      declaration were used.
      
      2. programs which include string.h with _GNU_SOURCE defined but then
      declare their own prototype for basename using the incorrect GNU
      signature for the function (which would clash with a correct
      prototype).
      
      however, since C++ does not have non-prototype declarations and
      interprets them as prototypes for a function with no arguments, we
      must omit it when compiling C++ code. thankfully, all known broken
      apps that suffer from the above issues are written in C, not C++.
      37bb3cce
  12. 08 5月, 2012 1 次提交