1. 13 1月, 2013 4 次提交
  2. 07 12月, 2012 2 次提交
    • R
      move signal.h REG_* macros under _GNU_SOURCE protection · 5c5e45e5
      Rich Felker 提交于
      they were accidentally exposed under just baseline POSIX, which is a
      big namespace pollution issue. thankfully glibc only exposes them
      under _GNU_SOURCE, not under any of its other options, so omitting
      the pollution in the default _BSD_SOURCE profile does not hurt
      application compatibility at all.
      5c5e45e5
    • R
      bits/signal.h: add register names for x86(_64) · a631c5df
      rofl0r 提交于
      glibc exposes them from ucontext.h.
      since that header includes signal.h, it is safe to put them
      into bits/signal.h, if _GNU_SOURCE is defined.
      a631c5df
  3. 06 12月, 2012 2 次提交
  4. 26 11月, 2012 2 次提交
  5. 24 11月, 2012 2 次提交
    • R
      sigcontext/mcontext cleanup for arch-specific bits · c72fc238
      Rich Felker 提交于
      with these changes, the members/types of mcontext_t and related stuff
      should closely match the glibc definitions. unlike glibc, however, the
      definitions here avoid using typedefs as much as possible and work
      directly with the underlying types, to minimize namespace pollution
      from signal.h in the default (_BSD_SOURCE) profile.
      
      this is a first step in improving compatibility with applications
      which poke at context/register information -- mainly debuggers, trace
      utilities, etc. additional definitions in ucontext.h and other headers
      may be needed later.
      
      if feature test macros are used to request a conforming namespace,
      mcontext_t is replaced with an opaque structure of the equivalent size
      and alignment; conforming programs cannot examine its contents anyway.
      c72fc238
    • R
  6. 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
  7. 19 11月, 2012 2 次提交
    • R
      fix breakage from introducing bits header for sys/io.h · 0004ea61
      Rich Felker 提交于
      apparently some other archs have sys/io.h and should not break just
      because they don't have the x86 port io functions. provide a blank
      bits/io.h everywhere for now.
      0004ea61
    • R
      add port io functions to sys/io.h · 61aa6324
      Rich Felker 提交于
      based on proposal by Isaac Dunham. nonexistance of bits/io.h will
      cause inclusion of sys/io.h to produce an error on archs that are not
      supposed to have it. this is probably the desired behavior, but the
      error message may be a bit unusual.
      61aa6324
  8. 18 11月, 2012 1 次提交
    • R
      fcntl.h: O_SEARCH was missing for powerpc · 8d2887f8
      rofl0r 提交于
      put some macros that do not differ between architectures in the
      main header and remove from bits.
      restructure mips header so it has the same structure as the others.
      8d2887f8
  9. 22 9月, 2012 1 次提交
  10. 16 9月, 2012 1 次提交
    • R
      add O_EXEC open mode · 6d05d862
      Rich Felker 提交于
      the linux O_PATH mode provides the necessary semantics for both the
      O_SEARCH and O_EXEC modes defined and required by POSIX 2008.
      6d05d862
  11. 14 9月, 2012 1 次提交
    • R
      add O_PATH/O_SEARCH support to fcntl.h · b238b37a
      Rich Felker 提交于
      I'm not 100% sure that Linux's O_PATH meets the POSIX requirements for
      O_SEARCH, but it seems very close if not perfect. and old kernels
      ignore it, so O_SEARCH will still work as desired as long as the
      caller has read permissions to the directory.
      b238b37a
  12. 09 9月, 2012 2 次提交
    • R
      syscall organization overhaul · 208eb584
      Rich Felker 提交于
      now public syscall.h only exposes __NR_* and SYS_* constants and the
      variadic syscall function. no macros or inline functions, no
      __syscall_ret or other internal details, no 16-/32-bit legacy syscall
      renaming, etc. this logic has all been moved to src/internal/syscall.h
      with the arch-specific parts in arch/$(ARCH)/syscall_arch.h, and the
      amount of arch-specific stuff has been reduced to a minimum.
      
      changes still need to be reviewed/double-checked. minimal testing on
      i386 and mips has already been performed.
      208eb584
    • R
      add acct, accept4, setns, and dup3 syscalls (linux extensions) · 6cf8bfdb
      Rich Felker 提交于
      based on patch by Justin Cormack
      6cf8bfdb
  13. 03 9月, 2012 1 次提交
    • R
      avoid "inline" in public headers for strict c89 compatibility · fb247faf
      Rich Felker 提交于
      while musl itself requires a c99 compiler, some applications insist on
      being compiled with c89 compilers, and use of "inline" in the headers
      was breaking them. much of this had been avoided already by just
      skipping the inline keyword in pre-c99 compilers or modes, but this
      new unified solution is cleaner and may/should result in better code
      generation in the default gcc configuration.
      fb247faf
  14. 11 8月, 2012 1 次提交
    • R
      use int instead of long for ptrdiff_t on all 32-bit archs · e3ebe7db
      Rich Felker 提交于
      this is needed to match the underlying "ABI" standards. it's not
      really an ABI issue since the binary representations are the same, but
      having the wrong type can lead to errors when the type arising from a
      difference-of-pointers expression does not match the defined type of
      ptrdiff_t. most of the problems affect C++, not C.
      e3ebe7db
  15. 10 8月, 2012 1 次提交
  16. 13 7月, 2012 1 次提交
    • R
      workaround another sendmsg kernel bug on 64-bit machines · 96107564
      Rich Felker 提交于
      the kernel wrongly expects the cmsg length field to be size_t instead
      of socklen_t. in order to work around the issue, we have to impose a
      length limit and copy to a local buffer. the length limit should be
      more than sufficient for any real-world use; these headers are only
      used for passing file descriptors and permissions between processes
      over unix sockets.
      96107564
  17. 04 7月, 2012 1 次提交
    • R
      jmp_buf overhaul fixing several issues · d6c0efe1
      Rich Felker 提交于
      on arm, the location of the saved-signal-mask flag and mask were off
      by one between sigsetjmp and siglongjmp, causing incorrect behavior
      restoring the signal mask. this is because the siglongjmp code assumed
      an extra slot was in the non-sig jmp_buf for the flag, but arm did not
      have this. now, the extra slot is removed for all archs since it was
      useless.
      
      also, arm eabi requires jmp_buf to have 8-byte alignment. we achieve
      that using long long as the type rather than with non-portable gcc
      attribute tags.
      d6c0efe1
  18. 24 6月, 2012 1 次提交
  19. 21 6月, 2012 1 次提交
  20. 23 5月, 2012 1 次提交
    • 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
  21. 30 4月, 2012 1 次提交
  22. 27 4月, 2012 1 次提交
  23. 25 4月, 2012 1 次提交
  24. 16 4月, 2012 2 次提交
  25. 04 4月, 2012 1 次提交
    • R
      work around nasty gcc bug in the i386 syscall asm · 5bd0ab8a
      Rich Felker 提交于
      when the "r" (register) constraint is used to let gcc choose a
      register, gcc will sometimes assign the same register that was used
      for one of the other fixed-register operands, if it knows the values
      are the same. one common case is multiple zero arguments to a syscall.
      this horribly breaks the intended usage, which is swapping the GOT
      pointer from ebx into the temp register and back to perform the
      syscall.
      
      presumably there is a way to fix this with advanced usage of register
      constaints on the inline asm, but having bad memories about hellish
      compatibility issues with different gcc versions, for the time being
      i'm just going to hard-code specific registers to be used. this may
      hurt the compiler's ability to optimize, but it will fix serious
      miscompilation issues.
      
      so far the only function i know what compiled incorrectly is
      getrlimit.c, and naturally the bug only applies to shared (PIC)
      builds, but it may be more extensive and may have gone undetected..
      5bd0ab8a
  26. 22 3月, 2012 1 次提交
    • R
      fix DECIMAL_DIG definitions · 47db8903
      Rich Felker 提交于
      DECIMAL_DIG is not the same as LDBL_DIG
      
      type_DIG is the maximimum number of decimal digits that can survive a
      round trip from decimal to type and back to decimal.
      
      DECIMAL_DIG is the minimum number of decimal digits required in order
      for any floating point type to survive the round trip to decimal and
      back, and it is generally larger than LDBL_DIG. since the exact
      formula is non-trivial, and defining it larger than necessary may be
      legal but wasteful, just define the right value in bits/float.h.
      47db8903
  27. 16 2月, 2012 1 次提交
  28. 09 2月, 2012 1 次提交
    • R
      replace bad cancellation cleanup abi with a sane one · afc35d5e
      Rich Felker 提交于
      the old abi was intended to duplicate glibc's abi at the expense of
      being ugly and slow, but it turns out glib was not even using that abi
      except on non-gcc-compatible compilers (which it doesn't even support)
      and was instead using an exceptions-in-c/unwind-based approach whose
      abi we could not duplicate anyway without nasty dwarf2/unwind
      integration.
      
      the new abi is copied from a very old glibc abi, which seems to still
      be supported/present in current glibc. it avoids all unwinding,
      whether by sjlj or exceptions, and merely maintains a linked list of
      cleanup functions to be called from the context of pthread_exit. i've
      made some care to ensure that longjmp out of a cleanup function should
      work, even though it is not required to.
      
      this change breaks abi compatibility with programs which were using
      pthread cancellation, which is unfortunate, but that's why i'm making
      the change now rather than later. considering that most pthread
      features have not been usable until recently anyway, i don't see it as
      a major issue at this point.
      afc35d5e
  29. 21 1月, 2012 1 次提交
  30. 15 10月, 2011 1 次提交
    • R
      don't define wchar_t on c++ · 1d3c2768
      Rich Felker 提交于
      it's a keyword in c++ (wtf). i'm not sure this is the cleanest
      solution; it might be better to avoid ever defining __NEED_wchar_t on
      c++. but in any case, this works for now.
      1d3c2768