1. 26 11月, 2012 2 次提交
  2. 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
  3. 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
  4. 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
  5. 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
  6. 16 10月, 2012 1 次提交
    • R
      add support for TLS variant I, presently needed for arm and mips · 9ec4283b
      Rich Felker 提交于
      despite documentation that makes it sound a lot different, the only
      ABI-constraint difference between TLS variants II and I seems to be
      that variant II stores the initial TLS segment immediately below the
      thread pointer (i.e. the thread pointer points to the end of it) and
      variant I stores the initial TLS segment above the thread pointer,
      requiring the thread descriptor to be stored below. the actual value
      stored in the thread pointer register also tends to have per-arch
      random offsets applied to it for silly micro-optimization purposes.
      
      with these changes applied, TLS should be basically working on all
      supported archs except microblaze. I'm still working on getting the
      necessary information and a working toolchain that can build TLS
      binaries for microblaze, but in theory, static-linked programs with
      TLS and dynamic-linked programs where only the main executable uses
      TLS should already work on microblaze.
      
      alignment constraints have not yet been heavily tested, so it's
      possible that this code does not always align TLS segments correctly
      on archs that need TLS variant I.
      9ec4283b
  7. 05 10月, 2012 2 次提交
  8. 22 9月, 2012 1 次提交
  9. 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
  10. 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
  11. 09 9月, 2012 1 次提交
    • 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
  12. 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
  13. 10 8月, 2012 1 次提交
  14. 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
  15. 10 7月, 2012 2 次提交
  16. 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
  17. 24 6月, 2012 1 次提交
  18. 21 6月, 2012 1 次提交
  19. 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
  20. 25 4月, 2012 1 次提交
  21. 16 4月, 2012 2 次提交
  22. 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
  23. 16 2月, 2012 1 次提交
  24. 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
  25. 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
  26. 23 9月, 2011 2 次提交
  27. 22 9月, 2011 1 次提交
  28. 20 9月, 2011 3 次提交
    • R
      fix the definition of struct statvfs to match lsb abi · 114c80f1
      Rich Felker 提交于
      at the same time, make struct statfs match the traditional definition
      and make it more useful, especially the fsid_t stuff.
      114c80f1
    • R
      cleanup redundancy in bits/signal.h versions · f780ac5b
      Rich Felker 提交于
      f780ac5b
    • R
      fix the type of wchar_t on arm; support wchar_t varying with arch · 224c7a37
      Rich Felker 提交于
      really wchar_t should never vary, but the ARM EABI defines it as an
      unsigned 32-bit int instead of a signed one, and gcc follows this
      nonsense. thus, to give a conformant environment, we have to follow
      (otherwise L""[0] and L'\0' would be 0U rather than 0, but the
      application would be unaware due to a mismatched definition for
      WCHAR_MIN and WCHAR_MAX, and Bad Things could happen with respect to
      signed/unsigned comparisons, promotions, etc.).
      
      fortunately no rules are imposed by the C standard on the relationship
      between wchar_t and wint_t, and WEOF has type wint_t, so we can still
      make wint_t always-signed and use -1 for WEOF.
      224c7a37
  29. 19 9月, 2011 3 次提交